From 55284dd803ee0678af9946c2c8986e27bb070c14 Mon Sep 17 00:00:00 2001 From: Cameron Kaiser Date: Thu, 31 Aug 2023 00:28:53 -0700 Subject: [PATCH] update ESR base to 115; update EV roots, certs, HSTS, pins, TLDs, TZs; update usrsctp; security pullup; more comprehensive nuisance script blocking; fixes for #488, #566 --- ...ad.pl => 104fx_import_esr115_stspreload.pl | 2 +- 104fx_import_shavar_cryptominers.pl | 16 +- 104fx_upcerts.sh | 2 +- CLOBBER | 2 +- caps/nsScriptSecurityManager.cpp | 2 + caps/shavar-blocklist.h | 463 + dom/security/nsCSPContext.cpp | 40 +- gfx/thebes/gfxPlatformMac.cpp | 2 + image/imgLoader.h | 32 +- intl/icu/source/data/misc/metaZones.txt | 58 +- intl/icu/source/data/misc/timezoneTypes.txt | 57 +- intl/icu/source/data/misc/windowsZones.txt | 10 +- intl/icu/source/data/misc/zoneinfo64.txt | 2943 +- js/src/jit-test/tests/errors/bug1810711.js | 13 + js/src/jit-test/tests/ion/bug1814899.js | 23 + js/src/jit/shared/CodeGenerator-shared.cpp | 1 + js/src/vm/ErrorObject.cpp | 47 +- js/src/vm/Interpreter.cpp | 13 + netwerk/dns/effective_tld_names.dat | 4626 +- netwerk/sctp/sctp_update.log | 3 + netwerk/sctp/src/netinet/sctp.h | 54 +- netwerk/sctp/src/netinet/sctp_asconf.c | 561 +- netwerk/sctp/src/netinet/sctp_asconf.h | 17 +- netwerk/sctp/src/netinet/sctp_auth.c | 263 +- netwerk/sctp/src/netinet/sctp_auth.h | 11 +- netwerk/sctp/src/netinet/sctp_bsd_addr.c | 334 +- netwerk/sctp/src/netinet/sctp_bsd_addr.h | 11 +- netwerk/sctp/src/netinet/sctp_callout.c | 89 +- netwerk/sctp/src/netinet/sctp_callout.h | 34 +- netwerk/sctp/src/netinet/sctp_cc_functions.c | 318 +- netwerk/sctp/src/netinet/sctp_constants.h | 232 +- netwerk/sctp/src/netinet/sctp_crc32.c | 187 +- netwerk/sctp/src/netinet/sctp_crc32.h | 20 +- netwerk/sctp/src/netinet/sctp_header.h | 169 +- netwerk/sctp/src/netinet/sctp_indata.c | 4359 +- netwerk/sctp/src/netinet/sctp_indata.h | 58 +- netwerk/sctp/src/netinet/sctp_input.c | 3370 +- netwerk/sctp/src/netinet/sctp_input.h | 18 +- .../sctp/src/netinet/sctp_lock_userspace.h | 30 +- netwerk/sctp/src/netinet/sctp_os.h | 19 +- netwerk/sctp/src/netinet/sctp_os_userspace.h | 258 +- netwerk/sctp/src/netinet/sctp_output.c | 5191 +- netwerk/sctp/src/netinet/sctp_output.h | 134 +- netwerk/sctp/src/netinet/sctp_pcb.c | 2398 +- netwerk/sctp/src/netinet/sctp_pcb.h | 247 +- netwerk/sctp/src/netinet/sctp_peeloff.c | 58 +- netwerk/sctp/src/netinet/sctp_peeloff.h | 10 +- netwerk/sctp/src/netinet/sctp_process_lock.h | 625 +- netwerk/sctp/src/netinet/sctp_sha1.c | 24 +- netwerk/sctp/src/netinet/sctp_sha1.h | 19 +- netwerk/sctp/src/netinet/sctp_ss_functions.c | 773 +- netwerk/sctp/src/netinet/sctp_structs.h | 262 +- netwerk/sctp/src/netinet/sctp_sysctl.c | 493 +- netwerk/sctp/src/netinet/sctp_sysctl.h | 122 +- netwerk/sctp/src/netinet/sctp_timer.c | 396 +- netwerk/sctp/src/netinet/sctp_timer.h | 28 +- netwerk/sctp/src/netinet/sctp_uio.h | 233 +- netwerk/sctp/src/netinet/sctp_userspace.c | 268 +- netwerk/sctp/src/netinet/sctp_usrreq.c | 3286 +- netwerk/sctp/src/netinet/sctp_var.h | 151 +- netwerk/sctp/src/netinet/sctputil.c | 4212 +- netwerk/sctp/src/netinet/sctputil.h | 158 +- netwerk/sctp/src/netinet6/sctp6_usrreq.c | 1191 +- netwerk/sctp/src/netinet6/sctp6_var.h | 41 +- netwerk/sctp/src/user_atomic.h | 35 +- netwerk/sctp/src/user_environment.c | 336 +- netwerk/sctp/src/user_environment.h | 54 +- netwerk/sctp/src/user_inpcb.h | 23 +- netwerk/sctp/src/user_ip6_var.h | 22 +- netwerk/sctp/src/user_ip_icmp.h | 26 +- netwerk/sctp/src/user_malloc.h | 71 +- netwerk/sctp/src/user_mbuf.c | 326 +- netwerk/sctp/src/user_mbuf.h | 76 +- netwerk/sctp/src/user_queue.h | 6 +- netwerk/sctp/src/user_recv_thread.c | 572 +- netwerk/sctp/src/user_route.h | 2 +- netwerk/sctp/src/user_socket.c | 1240 +- netwerk/sctp/src/user_socketvar.h | 411 +- netwerk/sctp/src/user_uma.h | 12 +- netwerk/sctp/src/usrsctp.h | 166 +- parser/html/nsHtml5OwningUTF16Buffer.cpp | 26 - parser/html/nsHtml5OwningUTF16Buffer.h | 8 +- security/certverifier/ExtendedValidation.cpp | 100 +- security/manager/ssl/StaticHPKPins.h | 324 +- security/manager/ssl/nsSTSPreloadList.inc | 46850 +++++++++++----- security/nss/lib/ckfw/builtins/certdata.txt | 3085 +- security/nss/lib/pkcs12/p12d.c | 23 +- security/nss/lib/pkcs12/p12t.h | 1 + security/nss/lib/pkcs12/p12tmpl.c | 4 +- 89 files changed, 58725 insertions(+), 34161 deletions(-) rename 104fx_import_esr91_stspreload.pl => 104fx_import_esr115_stspreload.pl (95%) create mode 100644 js/src/jit-test/tests/errors/bug1810711.js create mode 100644 js/src/jit-test/tests/ion/bug1814899.js diff --git a/104fx_import_esr91_stspreload.pl b/104fx_import_esr115_stspreload.pl similarity index 95% rename from 104fx_import_esr91_stspreload.pl rename to 104fx_import_esr115_stspreload.pl index a59ad08960..6b48cca3be 100755 --- a/104fx_import_esr91_stspreload.pl +++ b/104fx_import_esr115_stspreload.pl @@ -10,7 +10,7 @@ /* nsSiteSecurityService.cpp, you shouldn't be #including it. */ /*****************************************************************************/ -/* imported from ESR91 by TenFourFox conversion script */ +/* imported from ESR115 by TenFourFox conversion script */ #include EOF diff --git a/104fx_import_shavar_cryptominers.pl b/104fx_import_shavar_cryptominers.pl index 1677e2560a..3714f3acd4 100755 --- a/104fx_import_shavar_cryptominers.pl +++ b/104fx_import_shavar_cryptominers.pl @@ -390,7 +390,14 @@ sub genericnetworkjson { select(STDOUT); $|++; %dupedupe = (); -foreach $a (@{ $json_ref->{'categories'}->{'Cryptomining'} }) { +&emit('Cryptomining'); +&emit('FingerprintingInvasive'); +# considering +#&emit('Analytics'); + +sub emit { +my $cat = shift(@_); +foreach $a (@{ $json_ref->{'categories'}->{$cat} }) { foreach $b (keys(%{ $a })) { die("illegal newline: $b\n") if ($b =~ /[\r\n]/s); print "// $b\n"; @@ -404,8 +411,15 @@ sub genericnetworkjson { die("illegal quote: $d\n") if ($d =~ /"/); next if ($dupedupe{$d}++); + # whitelist (with regrets) + next if (0 || + $d eq 'ibm.com' || + $d eq 'godaddy.com' || + 0); print " BLOK(\"$d\") ||\n"; + print " BLOKD(\".$d\") ||\n"; } } } } +} diff --git a/104fx_upcerts.sh b/104fx_upcerts.sh index 4faca67dcd..3aa9dc4e3c 100755 --- a/104fx_upcerts.sh +++ b/104fx_upcerts.sh @@ -10,7 +10,7 @@ endif # if we update NSS, we need to remove that patch (TenFourFox issue 512). set verbose -set release_url=https://hg.mozilla.org/releases/mozilla-esr102/raw-file/tip/ +set release_url=https://hg.mozilla.org/releases/mozilla-esr115/raw-file/tip/ # self test to ensure certificates and encryption methods are correct curl ${release_url}/config/milestone.txt || exit diff --git a/CLOBBER b/CLOBBER index 713425d999..abeb6f0da7 100644 --- a/CLOBBER +++ b/CLOBBER @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Rebuild for 102ESR base +Rebuild for 115ESR base diff --git a/caps/nsScriptSecurityManager.cpp b/caps/nsScriptSecurityManager.cpp index 51cf055f1e..4b802d6a24 100644 --- a/caps/nsScriptSecurityManager.cpp +++ b/caps/nsScriptSecurityManager.cpp @@ -738,6 +738,7 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, if (MOZ_LIKELY(NS_SUCCEEDED(targetBaseURI->GetHost(hostname)))) { ToLowerCase(hostname); #define BLOK(q) hostname.EqualsLiteral(q) +#define BLOKD(q) (StringEndsWith(hostname, NS_LITERAL_CSTRING(q))) if (0 || // This is used as a data source by a lot of UIs, // so we shouldn't block it (e.g., nytimes). @@ -1273,6 +1274,7 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal, #include "shavar-blocklist.h" 0) { +#undef BLOKD #undef BLOK // Yup. #ifndef DEBUG diff --git a/caps/shavar-blocklist.h b/caps/shavar-blocklist.h index dea66276ec..214fd19248 100644 --- a/caps/shavar-blocklist.h +++ b/caps/shavar-blocklist.h @@ -1,105 +1,568 @@ // a.js // http://zymerget.bid BLOK("alflying.date") || + BLOKD(".alflying.date") || BLOK("alflying.win") || + BLOKD(".alflying.win") || BLOK("anybest.site") || + BLOKD(".anybest.site") || BLOK("flightsy.bid") || + BLOKD(".flightsy.bid") || BLOK("flightsy.win") || + BLOKD(".flightsy.win") || BLOK("flightzy.bid") || + BLOKD(".flightzy.bid") || BLOK("flightzy.date") || + BLOKD(".flightzy.date") || BLOK("flightzy.win") || + BLOKD(".flightzy.win") || BLOK("zymerget.bid") || + BLOKD(".zymerget.bid") || BLOK("zymerget.faith") || + BLOKD(".zymerget.faith") || // CashBeet // http://cashbeet.com BLOK("cashbeet.com") || + BLOKD(".cashbeet.com") || BLOK("serv1swork.com") || + BLOKD(".serv1swork.com") || // CoinHive // https://coinhive.com BLOK("ad-miner.com") || + BLOKD(".ad-miner.com") || BLOK("authedmine.com") || + BLOKD(".authedmine.com") || BLOK("bmst.pw") || + BLOKD(".bmst.pw") || BLOK("cnhv.co") || + BLOKD(".cnhv.co") || BLOK("coin-hive.com") || + BLOKD(".coin-hive.com") || BLOK("coinhive.com") || + BLOKD(".coinhive.com") || BLOK("wsservices.org") || + BLOKD(".wsservices.org") || // CoinPot // http://coinpot.co BLOK("coinpot.co") || + BLOKD(".coinpot.co") || // CryptoLoot // https://crypto-loot.com BLOK("cryptaloot.pro") || + BLOKD(".cryptaloot.pro") || BLOK("crypto-loot.com") || + BLOKD(".crypto-loot.com") || BLOK("cryptolootminer.com") || + BLOKD(".cryptolootminer.com") || BLOK("flashx.pw") || + BLOKD(".flashx.pw") || BLOK("gitgrub.pro") || + BLOKD(".gitgrub.pro") || BLOK("reauthenticator.com") || + BLOKD(".reauthenticator.com") || BLOK("statdynamic.com") || + BLOKD(".statdynamic.com") || BLOK("webmine.pro") || + BLOKD(".webmine.pro") || // CryptoWebMiner // https://www.crypto-webminer.com BLOK("bitcoin-pay.eu") || + BLOKD(".bitcoin-pay.eu") || BLOK("crypto-webminer.com") || + BLOKD(".crypto-webminer.com") || BLOK("ethpocket.de") || + BLOKD(".ethpocket.de") || BLOK("ethtrader.de") || + BLOKD(".ethtrader.de") || // Gridcash // https://www.gridcash.net/ BLOK("adless.io") || + BLOKD(".adless.io") || BLOK("gridcash.net") || + BLOKD(".gridcash.net") || // JSE // http://jsecoin.com BLOK("freecontent.bid") || + BLOKD(".freecontent.bid") || BLOK("freecontent.date") || + BLOKD(".freecontent.date") || BLOK("freecontent.stream") || + BLOKD(".freecontent.stream") || BLOK("hashing.win") || + BLOKD(".hashing.win") || BLOK("hostingcloud.racing") || + BLOKD(".hostingcloud.racing") || BLOK("hostingcloud.science") || + BLOKD(".hostingcloud.science") || BLOK("jsecoin.com") || + BLOKD(".jsecoin.com") || // MinerAlt // http://mineralt.io BLOK("1q2w3.website") || + BLOKD(".1q2w3.website") || BLOK("analytics.blue") || + BLOKD(".analytics.blue") || BLOK("aster18cdn.nl") || + BLOKD(".aster18cdn.nl") || BLOK("belicimo.pw") || + BLOKD(".belicimo.pw") || BLOK("besstahete.info") || + BLOKD(".besstahete.info") || BLOK("dinorslick.icu") || + BLOKD(".dinorslick.icu") || BLOK("feesocrald.com") || + BLOKD(".feesocrald.com") || BLOK("gramombird.com") || + BLOKD(".gramombird.com") || BLOK("istlandoll.com") || + BLOKD(".istlandoll.com") || BLOK("mepirtedic.com") || + BLOKD(".mepirtedic.com") || BLOK("mineralt.io") || + BLOKD(".mineralt.io") || BLOK("pampopholf.com") || + BLOKD(".pampopholf.com") || BLOK("tercabilis.info") || + BLOKD(".tercabilis.info") || BLOK("tulip18.com") || + BLOKD(".tulip18.com") || BLOK("vidzi.tv") || + BLOKD(".vidzi.tv") || BLOK("yololike.space") || + BLOKD(".yololike.space") || // Minescripts // http://minescripts.info BLOK("minescripts.info") || + BLOKD(".minescripts.info") || BLOK("sslverify.info") || + BLOKD(".sslverify.info") || // MineXMR // http://minexmr.stream BLOK("minexmr.stream") || + BLOKD(".minexmr.stream") || // NeroHut // https://nerohut.com BLOK("nerohut.com") || + BLOKD(".nerohut.com") || BLOK("nhsrv.cf") || + BLOKD(".nhsrv.cf") || // Service4refresh // https://service4refresh.info BLOK("service4refresh.info") || + BLOKD(".service4refresh.info") || // SpareChange // http://sparechange.io BLOK("sparechange.io") || + BLOKD(".sparechange.io") || // SwiftMining // https://swiftmining.win/ BLOK("swiftmining.win") || + BLOKD(".swiftmining.win") || // Webmine // https://webmine.cz/ BLOK("authedwebmine.cz") || + BLOKD(".authedwebmine.cz") || BLOK("webmine.cz") || + BLOKD(".webmine.cz") || // WebminePool // http://webminepool.com BLOK("webminepool.com") || + BLOKD(".webminepool.com") || // Webmining // https://webmining.co/ BLOK("webmining.co") || + BLOKD(".webmining.co") || +// Adbot +// https://adbot.tw/ + BLOK("adbot.tw") || + BLOKD(".adbot.tw") || +// AdCash +// https://adcash.com + BLOK("ufpcdn.com") || + BLOKD(".ufpcdn.com") || +// AdMaven +// https://ad-maven.com/ + BLOK("ad-maven.com") || + BLOKD(".ad-maven.com") || + BLOK("wrethicap.info") || + BLOKD(".wrethicap.info") || +// Admicro +// http://www.admicro.vn/ + BLOK("admicro.vn") || + BLOKD(".admicro.vn") || + BLOK("vcmedia.vn") || + BLOKD(".vcmedia.vn") || +// Adnium +// https://adnium.com + BLOK("adnium.com") || + BLOKD(".adnium.com") || + BLOK("montwam.top") || + BLOKD(".montwam.top") || +// AdScore +// http://www.adscoremarketing.com/ + BLOK("adsco.re") || + BLOKD(".adsco.re") || +// AdxSpace +// https://adx.space + BLOK("00px.net") || + BLOKD(".00px.net") || +// AivaLabs +// https://aivalabs.com + BLOK("aivalabs.com") || + BLOKD(".aivalabs.com") || +// AuditedMedia +// https://auditedmedia.com/ + BLOK("aamapi.com") || + BLOKD(".aamapi.com") || + BLOK("aamsitecertifier.com") || + BLOKD(".aamsitecertifier.com") || + BLOK("auditedmedia.com") || + BLOKD(".auditedmedia.com") || +// Azet +// http://mediaimpact.sk/ + BLOK("rsz.sk") || + BLOKD(".rsz.sk") || +// BetssonPalantir +// https://betssonpalantir.com/ + BLOK("betssonpalantir.com") || + BLOKD(".betssonpalantir.com") || +// BitMedia +// https://bitmedia.io/ + BLOK("bitmedia.io") || + BLOKD(".bitmedia.io") || +// BlueCava +// http://www.bluecava.com/ + BLOK("bluecava.com") || + BLOKD(".bluecava.com") || +// BoostBox +// https://www.boostbox.com.br/ + BLOK("boostbox.com.br") || + BLOKD(".boostbox.com.br") || +// Bouncex +// https://www.bouncex.com/ + BLOK("bounceexchange.com") || + BLOKD(".bounceexchange.com") || + BLOK("bouncex.com") || + BLOKD(".bouncex.com") || + BLOK("bouncex.net") || + BLOKD(".bouncex.net") || +// Brandcrumb +// http://www.brandcrumb.com + BLOK("brandcrumb.com") || + BLOKD(".brandcrumb.com") || +// BreakTime +// https://www.breaktime.com.tw/ + BLOK("breaktime.com.tw") || + BLOKD(".breaktime.com.tw") || +// BrightEdge +// http://www.brightedge.com/ + BLOK("b0e8.com") || + BLOKD(".b0e8.com") || +// C3 Metrics +// http://c3metrics.com/ + BLOK("c3metrics.com") || + BLOKD(".c3metrics.com") || + BLOK("c3tag.com") || + BLOKD(".c3tag.com") || +// CallSource +// https://www.callsource.com/ + BLOK("leadtrackingdata.com") || + BLOKD(".leadtrackingdata.com") || +// CartsGuru +// https://carts.guru/ + BLOK("carts.guru") || + BLOKD(".carts.guru") || +// ClearLink +// https://www.clearlink.com/ + BLOK("clearlink.com") || + BLOKD(".clearlink.com") || +// Clickayab +// http://www.clickyab.com + BLOK("clickyab.com") || + BLOKD(".clickyab.com") || +// ClickFrog +// https://clickfrog.ru/ + BLOK("bashirian.biz") || + BLOKD(".bashirian.biz") || + BLOK("buckridge.link") || + BLOKD(".buckridge.link") || + BLOK("franecki.net") || + BLOKD(".franecki.net") || + BLOK("quitzon.net") || + BLOKD(".quitzon.net") || + BLOK("reichelcormier.bid") || + BLOKD(".reichelcormier.bid") || + BLOK("wisokykulas.bid") || + BLOKD(".wisokykulas.bid") || +// ClickGuard +// https://www.clickguard.com/ + BLOK("clickguard.com") || + BLOKD(".clickguard.com") || +// Clixtell +// https://www.clixtell.com/ + BLOK("clixtell.com") || + BLOKD(".clixtell.com") || +// Cloudflare +// https://cloudflare.com + BLOK("hcaptcha.com") || + BLOKD(".hcaptcha.com") || +// dmpxs +// http://bob.dmpxs.com + BLOK("dmpxs.com") || + BLOKD(".dmpxs.com") || +// EroAdvertising +// http://www.ero-advertising.com/ + BLOK("ero-advertising.com") || + BLOKD(".ero-advertising.com") || +// Foresee +// https://www.foresee.com + BLOK("answerscloud.com") || + BLOKD(".answerscloud.com") || + BLOK("foresee.com") || + BLOKD(".foresee.com") || +// Friends2Follow +// https://friends2follow.com/ + BLOK("antifraudjs.friends2follow.com") || + BLOKD(".antifraudjs.friends2follow.com") || +// Gleam +// https://gleam.io/ + BLOK("fraudjs.io") || + BLOKD(".fraudjs.io") || +// GrapheneMedia +// http://graphenemedia.in/ + BLOK("graphenedigitalanalytics.in") || + BLOKD(".graphenedigitalanalytics.in") || +// HilltopAds +// https://hilltopads.com/ + BLOK("hilltopads.net") || + BLOKD(".hilltopads.net") || +// HotelChamp +// https://www.hotelchamp.com + BLOK("hotelchamp.com") || + BLOKD(".hotelchamp.com") || +// HumanSecurity +// https://www.humansecurity.com/ + BLOK("perimeterx.net") || + BLOKD(".perimeterx.net") || +// iMedia +// http://www.imedia.cz + BLOK("imedia.cz") || + BLOKD(".imedia.cz") || +// Impact +// https://impact.com/ + BLOK("fqtag.com") || + BLOKD(".fqtag.com") || +// Integral Ad Science +// https://integralads.com/ + BLOK("adsafeprotected.com") || + BLOKD(".adsafeprotected.com") || +// iShumei +// https://www.ishumei.com/ + BLOK("fengkongcloud.com") || + BLOKD(".fengkongcloud.com") || +// IslayTech +// http://islay.tech + BLOK("islay.tech") || + BLOKD(".islay.tech") || +// ismatlab.com +// http://ismatlab.com + BLOK("ismatlab.com") || + BLOKD(".ismatlab.com") || +// Itch +// https://itch.io/ + BLOK("itch.io") || + BLOKD(".itch.io") || +// Kitewheel +// https://kitewheel.com/ + BLOK("kitewheel.com") || + BLOKD(".kitewheel.com") || +// Konduto +// http://konduto.com + BLOK("k-analytix.com") || + BLOKD(".k-analytix.com") || + BLOK("konduto.com") || + BLOKD(".konduto.com") || +// LeadsHub +// https://ztsrv.com/ + BLOK("ztsrv.com") || + BLOKD(".ztsrv.com") || +// lptracker +// https://lptracker.io/ + BLOK("lptracker.io") || + BLOKD(".lptracker.io") || +// MaxMind +// https://www.maxmind.com/en/home + BLOK("maxmind.com") || + BLOKD(".maxmind.com") || + BLOK("mmapiws.com") || + BLOKD(".mmapiws.com") || +// Mercadopago +// https://www.mercadopago.com/ + BLOK("mercadopago.com") || + BLOKD(".mercadopago.com") || +// Mobials +// http://mobials.com + BLOK("mobials.com") || + BLOKD(".mobials.com") || +// Negishim +// http://www.negishim.org + BLOK("negishim.org") || + BLOKD(".negishim.org") || +// OneAd +// https://www.onead.com.tw/ + BLOK("guoshipartners.com") || + BLOKD(".guoshipartners.com") || + BLOK("onevision.com.tw") || + BLOKD(".onevision.com.tw") || +// OnlineMetrix +// http://h.online-metrix.net + BLOK("online-metrix.net") || + BLOKD(".online-metrix.net") || +// Outbrain +// http://www.outbrain.com/ + BLOK("ligatus.com") || + BLOKD(".ligatus.com") || +// PartyPoker +// https://www.partypoker.com/ + BLOK("iivt.com") || + BLOKD(".iivt.com") || +// Paypal +// https://www.paypal.com + BLOK("simility.com") || + BLOKD(".simility.com") || +// PixAnalytics +// https://pixanalytics.com/ + BLOK("pixanalytics.com") || + BLOKD(".pixanalytics.com") || +// Pixlee +// https://www.pixlee.com/ + BLOK("pixlee.com") || + BLOKD(".pixlee.com") || +// PPCProtect +// https://ppcprotect.com + BLOK("ppcprotect.com") || + BLOKD(".ppcprotect.com") || +// PrometheusIntelligenceTechnology +// https://prometheusintelligencetechnology.com/ + BLOK("prometheusintelligencetechnology.com") || + BLOKD(".prometheusintelligencetechnology.com") || +// Protected Media +// http://www.protected.media/ + BLOK("ad-score.com") || + BLOKD(".ad-score.com") || +// Radware +// https://www.radware.com/ + BLOK("perfdrive.com") || + BLOKD(".perfdrive.com") || +// RazorPay +// https://razorpay.com + BLOK("thirdwatch.ai") || + BLOKD(".thirdwatch.ai") || +// Rollick +// https://gorollick.com + BLOK("rollick.io") || + BLOKD(".rollick.io") || +// Selectable Media +// http://selectablemedia.com/ + BLOK("selectablemedia.com") || + BLOKD(".selectablemedia.com") || +// Semantiqo +// http://semantiqo.com/ + BLOK("semantiqo.com") || + BLOKD(".semantiqo.com") || +// SendPulse +// https://sendpulse.com/ + BLOK("sendpulse.com") || + BLOKD(".sendpulse.com") || +// ShaftTraffic +// https://shafttraffic.com + BLOK("libertystmedia.com") || + BLOKD(".libertystmedia.com") || +// Shixiseng +// https://www.shixiseng.com/ + BLOK("xiaoyuanzhao.com") || + BLOKD(".xiaoyuanzhao.com") || +// Shortest +// http://shorte.st/ + BLOK("shorte.st") || + BLOKD(".shorte.st") || +// SiftScience +// https://sift.com/ + BLOK("siftscience.com") || + BLOKD(".siftscience.com") || +// Signifyd +// https://www.signifyd.com/ + BLOK("signifyd.com") || + BLOKD(".signifyd.com") || +// SmarterClick +// https://smarterclick.com/privacy-policy/ + BLOK("smct.io") || + BLOKD(".smct.io") || +// Smi +// http://24smi.net + BLOK("24smi.net") || + BLOKD(".24smi.net") || +// Storeland +// https://storeland.ru/ + BLOK("storeland.ru") || + BLOKD(".storeland.ru") || +// Stripchat +// https://stripchat.com/ + BLOK("stripst.com") || + BLOKD(".stripst.com") || +// Stripe +// https://stripe.com + BLOK("stripe.network") || + BLOKD(".stripe.network") || +// TechSolutions +// https://www.techsolutions.com.tw/ + BLOK("techsolutions.com.tw") || + BLOKD(".techsolutions.com.tw") || +// tongdun.cn +// https://www.tongdun.cn/?lan=EN + BLOK("fraudmetrix.cn") || + BLOKD(".fraudmetrix.cn") || + BLOK("tongdun.net") || + BLOKD(".tongdun.net") || +// Trendemon +// https://trendemon.com/ + BLOK("trendemon.com") || + BLOKD(".trendemon.com") || +// Upland +// https://uplandsoftware.com/ + BLOK("leadlander.com") || + BLOKD(".leadlander.com") || + BLOK("sf14g.com") || + BLOKD(".sf14g.com") || +// VerticalHealth +// https://www.verticalhealth.com/ + BLOK("verticalhealth.net") || + BLOKD(".verticalhealth.net") || +// Warumbistdusoarm +// https://warumbistdusoarm.space + BLOK("warumbistdusoarm.space") || + BLOKD(".warumbistdusoarm.space") || +// Webmecanik +// https://www.webmecanik.com/ + BLOK("webmecanik.com") || + BLOKD(".webmecanik.com") || +// WideOrbit +// https://www.wideorbit.com/ + BLOK("dep-x.com") || + BLOKD(".dep-x.com") || +// Yandex +// http://www.yandex.com/ + BLOK("mc.yandex.ru") || + BLOKD(".mc.yandex.ru") || +// ZafulAffiliate +// https://affiliate.zaful.com/ + BLOK("affasi.com") || + BLOKD(".affasi.com") || + BLOK("gw-ec.com") || + BLOKD(".gw-ec.com") || + BLOK("zaful.com") || + BLOKD(".zaful.com") || +// Zip +// https://zip.co + BLOK("zipmoney.com.au") || + BLOKD(".zipmoney.com.au") || diff --git a/dom/security/nsCSPContext.cpp b/dom/security/nsCSPContext.cpp index bed50c9f37..ceafad6484 100644 --- a/dom/security/nsCSPContext.cpp +++ b/dom/security/nsCSPContext.cpp @@ -673,32 +673,52 @@ nsCSPContext::logToConsole(const char16_t* aName, * Strip URI for reporting according to: * http://www.w3.org/TR/CSP/#violation-reports * + * @param aSelfURI + * The URI of the CSP policy. Used for cross-origin checks. * @param aURI * The uri to be stripped for reporting * @param aProtectedResourcePrincipal * The loadingPrincipal of the protected resource * which is needed to enforce the SOP. + * @param aEffectiveDirective + * The effective directive that triggered this report * @return ASCII serialization of the uri to be reported. */ void -StripURIForReporting(nsIURI* aURI, +StripURIForReporting(nsIURI* aSelfURI, nsIURI* aURI, nsIPrincipal* aProtectedResourcePrincipal, + const nsAString& aEffectiveDirective, nsACString& outStrippedURI) { // 1) If the origin of uri is a globally unique identifier (for example, // aURI has a scheme of data, blob, or filesystem), then return the // ASCII serialization of uri’s scheme. - bool isHttp = - (NS_SUCCEEDED(aURI->SchemeIs("http", &isHttp)) && isHttp) || - (NS_SUCCEEDED(aURI->SchemeIs("https", &isHttp)) && isHttp); - if (!isHttp) { + bool isHttpFtpOrWs = + (NS_SUCCEEDED(aURI->SchemeIs("https", &isHttpFtpOrWs)) && isHttpFtpOrWs) || + (NS_SUCCEEDED(aURI->SchemeIs("http", &isHttpFtpOrWs)) && isHttpFtpOrWs) || + (NS_SUCCEEDED(aURI->SchemeIs("wss", &isHttpFtpOrWs)) && isHttpFtpOrWs) || + (NS_SUCCEEDED(aURI->SchemeIs("ws", &isHttpFtpOrWs)) && isHttpFtpOrWs) || + (NS_SUCCEEDED(aURI->SchemeIs("ftp", &isHttpFtpOrWs)) && isHttpFtpOrWs); + if (!isHttpFtpOrWs) { // not strictly spec compliant, but what we really care about is - // http/https. If it's not http/https, then treat aURI as if - // it's a globally unique identifier and just return the scheme. + // http/https and also ftp. If it's not http/https or ftp, then treat aURI + // as if it's a globally unique identifier and just return the scheme. aURI->GetScheme(outStrippedURI); return; } + // For cross-origin URIs in frame-src also strip the path. + // This prevents detailed tracking of pages loaded into an iframe + // by the embedding page using a report-only policy. + if (aEffectiveDirective.EqualsLiteral("frame-src") || + aEffectiveDirective.EqualsLiteral("object-src")) { + nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager(); + if (NS_FAILED(ssm->CheckSameOriginURI(aSelfURI, aURI, false))) { + aURI->GetPrePath(outStrippedURI); + return; + } + } + // 2) If the origin of uri is not the same as the origin of the protected // resource, then return the ASCII serialization of uri’s origin. bool sameOrigin = @@ -765,7 +785,8 @@ nsCSPContext::SendReports(nsISupports* aBlockedContentSource, nsCOMPtr uri = do_QueryInterface(aBlockedContentSource); // could be a string or URI if (uri) { - StripURIForReporting(uri, mLoadingPrincipal, reportBlockedURI); + StripURIForReporting(mSelfURI, uri, mLoadingPrincipal, aViolatedDirective, + reportBlockedURI); } else { nsCOMPtr cstr = do_QueryInterface(aBlockedContentSource); if (cstr) { @@ -782,7 +803,8 @@ nsCSPContext::SendReports(nsISupports* aBlockedContentSource, // document-uri nsAutoCString reportDocumentURI; - StripURIForReporting(mSelfURI, mLoadingPrincipal, reportDocumentURI); + StripURIForReporting(mSelfURI, mSelfURI, mLoadingPrincipal, + aViolatedDirective, reportDocumentURI); report.mCsp_report.mDocument_uri = NS_ConvertUTF8toUTF16(reportDocumentURI); // original-policy diff --git a/gfx/thebes/gfxPlatformMac.cpp b/gfx/thebes/gfxPlatformMac.cpp index a0e0be4c31..aebd41c487 100644 --- a/gfx/thebes/gfxPlatformMac.cpp +++ b/gfx/thebes/gfxPlatformMac.cpp @@ -297,6 +297,8 @@ gfxPlatformMac::IsFontFormatSupported(nsIURI *aFontURI, uint32_t aFormatFlags) // Start with leftmost, using hostname as a screen (TenFourFox issue 492). + HTTP_OR_HTTPS_SUBDIR("www.tagesschau.de", "/resources/assets/fonts/TheSansC5s"); + HTTP_OR_HTTPS_SUBDIR("assets.tagesspiegel.de", "/fonts/Abril_Text_"); HTTP_OR_HTTPS_SUBDIR("assets.tagesspiegel.de", "/fonts/franklingothic-"); diff --git a/image/imgLoader.h b/image/imgLoader.h index 479ee722fd..66d2b1d2a6 100644 --- a/image/imgLoader.h +++ b/image/imgLoader.h @@ -41,34 +41,10 @@ class ImageURL; class imgCacheEntry { public: + NS_INLINE_DECL_REFCOUNTING(imgCacheEntry) + imgCacheEntry(imgLoader* loader, imgRequest* request, bool aForcePrincipalCheck); - ~imgCacheEntry(); - - nsrefcnt AddRef() - { - NS_PRECONDITION(int32_t(mRefCnt) >= 0, "illegal refcnt"); - MOZ_ASSERT(_mOwningThread.GetThread() == PR_GetCurrentThread(), - "imgCacheEntry addref isn't thread-safe!"); - ++mRefCnt; - NS_LOG_ADDREF(this, mRefCnt, "imgCacheEntry", sizeof(*this)); - return mRefCnt; - } - - nsrefcnt Release() - { - NS_PRECONDITION(0 != mRefCnt, "dup release"); - MOZ_ASSERT(_mOwningThread.GetThread() == PR_GetCurrentThread(), - "imgCacheEntry release isn't thread-safe!"); - --mRefCnt; - NS_LOG_RELEASE(this, mRefCnt, "imgCacheEntry"); - if (mRefCnt == 0) { - mRefCnt = 1; /* stabilize */ - delete this; - return 0; - } - return mRefCnt; - } uint32_t GetDataSize() const { @@ -162,11 +138,9 @@ class imgCacheEntry // Private, unimplemented copy constructor. imgCacheEntry(const imgCacheEntry&); + ~imgCacheEntry(); private: // data - nsAutoRefCnt mRefCnt; - NS_DECL_OWNINGTHREAD - imgLoader* mLoader; RefPtr mRequest; uint32_t mDataSize; diff --git a/intl/icu/source/data/misc/metaZones.txt b/intl/icu/source/data/misc/metaZones.txt index afb588845c..7e648a7358 100644 --- a/intl/icu/source/data/misc/metaZones.txt +++ b/intl/icu/source/data/misc/metaZones.txt @@ -305,9 +305,7 @@ metaZones:table(nofallback){ EG{"Africa/Cairo"} FI{"Europe/Helsinki"} GR{"Europe/Athens"} - JO{"Asia/Amman"} LB{"Asia/Beirut"} - SY{"Asia/Damascus"} } Europe_Further_Eastern{ 001{"Europe/Minsk"} @@ -1655,6 +1653,33 @@ metaZones:table(nofallback){ { "Mexico_Pacific", "1998-04-05 09:00", + "2022-10-30 08:00", + } + { + "America_Central", + "2022-10-30 08:00", + "9999-12-31 23:59", + } + } + "America:Ciudad_Juarez"{ + { + "America_Central", + "1970-01-01 00:00", + "1998-04-05 09:00", + } + { + "Mexico_Pacific", + "1998-04-05 09:00", + "2022-10-30 08:00", + } + { + "America_Central", + "2022-10-30 08:00", + "2022-11-30 06:00", + } + { + "America_Mountain", + "2022-11-30 06:00", "9999-12-31 23:59", } } @@ -2366,6 +2391,11 @@ metaZones:table(nofallback){ { "America_Mountain", "1998-04-05 09:00", + "2022-10-30 08:00", + } + { + "America_Central", + "2022-10-30 08:00", "9999-12-31 23:59", } } @@ -2375,14 +2405,9 @@ metaZones:table(nofallback){ } } "America:Pangnirtung"{ - { - "Atlantic", - "1970-01-01 00:00", - "1995-04-02 06:00", - } { "America_Eastern", - "1995-04-02 06:00", + "1970-01-01 00:00", "1999-10-31 06:00", } { @@ -2839,6 +2864,8 @@ metaZones:table(nofallback){ "Asia:Amman"{ { "Europe_Eastern", + "1970-01-01 00:00", + "2022-10-27 22:00", } } "Asia:Anadyr"{ @@ -3026,6 +3053,8 @@ metaZones:table(nofallback){ "Asia:Damascus"{ { "Europe_Eastern", + "1970-01-01 00:00", + "2022-10-27 21:00", } } "Asia:Dhaka"{ @@ -4133,16 +4162,11 @@ metaZones:table(nofallback){ { "Moscow", "1970-01-01 00:00", - "1990-06-30 23:00", - } - { - "Europe_Central", - "1990-06-30 23:00", - "1991-03-31 02:00", + "1990-06-30 22:00", } { "Europe_Eastern", - "1991-03-31 02:00", + "1990-06-30 22:00", "9999-12-31 23:59", } } @@ -4202,11 +4226,11 @@ metaZones:table(nofallback){ { "Moscow", "1970-01-01 00:00", - "1991-03-30 23:00", + "1990-06-30 22:00", } { "Europe_Eastern", - "1991-03-30 23:00", + "1990-06-30 22:00", "9999-12-31 23:59", } } diff --git a/intl/icu/source/data/misc/timezoneTypes.txt b/intl/icu/source/data/misc/timezoneTypes.txt index d4957cb67b..9c9e1e1b10 100644 --- a/intl/icu/source/data/misc/timezoneTypes.txt +++ b/intl/icu/source/data/misc/timezoneTypes.txt @@ -5,13 +5,47 @@ timezoneTypes:table(nofallback){ bcpTypeAlias{ tz{ aqams{"nzakl"} + aukns{"auhba"} + caffs{"cawnp"} + camtr{"cator"} + canpg{"cator"} + capnt{"caiql"} + cathu{"cator"} + cayzf{"caedm"} cnckg{"cnsha"} cnhrb{"cnsha"} cnkhg{"cnurc"} gaza{"gazastrp"} + mxstis{"mxtij"} + uaozh{"uaiev"} + uauzh{"uaiev"} + umjon{"ushnl"} usnavajo{"usden"} } } + ianaMap{ + timezone{ + "Africa:Asmera"{"Africa/Asmara"} + "America:Buenos_Aires"{"America/Argentina/Buenos_Aires"} + "America:Catamarca"{"America/Argentina/Catamarca"} + "America:Coral_Harbour"{"America/Atikokan"} + "America:Cordoba"{"America/Argentina/Cordoba"} + "America:Godthab"{"America/Nuuk"} + "America:Indianapolis"{"America/Indiana/Indianapolis"} + "America:Jujuy"{"America/Argentina/Jujuy"} + "America:Louisville"{"America/Kentucky/Louisville"} + "America:Mendoza"{"America/Argentina/Mendoza"} + "Asia:Calcutta"{"Asia/Kolkata"} + "Asia:Katmandu"{"Asia/Kathmandu"} + "Asia:Rangoon"{"Asia/Yangon"} + "Asia:Saigon"{"Asia/Ho_Chi_Minh"} + "Atlantic:Faeroe"{"Atlantic/Faroe"} + "Europe:Kiev"{"Europe/Kyiv"} + "Pacific:Enderbury"{"Pacific/Kanton"} + "Pacific:Ponape"{"Pacific/Pohnpei"} + "Pacific:Truk"{"Pacific/Chuuk"} + } + } typeAlias{ timezone{ "Africa:Asmara"{"Africa/Asmera"} @@ -29,11 +63,18 @@ timezoneTypes:table(nofallback){ "America:Indiana:Indianapolis"{"America/Indianapolis"} "America:Kentucky:Louisville"{"America/Louisville"} "America:Knox_IN"{"America/Indiana/Knox"} + "America:Montreal"{"America/Toronto"} + "America:Nipigon"{"America/Toronto"} "America:Nuuk"{"America/Godthab"} + "America:Pangnirtung"{"America/Iqaluit"} "America:Porto_Acre"{"America/Rio_Branco"} + "America:Rainy_River"{"America/Winnipeg"} "America:Rosario"{"America/Cordoba"} + "America:Santa_Isabel"{"America/Tijuana"} "America:Shiprock"{"America/Denver"} + "America:Thunder_Bay"{"America/Toronto"} "America:Virgin"{"America/St_Thomas"} + "America:Yellowknife"{"America/Edmonton"} "Antarctica:South_Pole"{"Pacific/Auckland"} "Asia:Ashkhabad"{"Asia/Ashgabat"} "Asia:Chongqing"{"Asia/Shanghai"} @@ -55,6 +96,7 @@ timezoneTypes:table(nofallback){ "Atlantic:Jan_Mayen"{"Arctic/Longyearbyen"} "Australia:ACT"{"Australia/Sydney"} "Australia:Canberra"{"Australia/Sydney"} + "Australia:Currie"{"Australia/Hobart"} "Australia:LHI"{"Australia/Lord_Howe"} "Australia:NSW"{"Australia/Sydney"} "Australia:North"{"Australia/Darwin"} @@ -90,10 +132,13 @@ timezoneTypes:table(nofallback){ "Europe:Kyiv"{"Europe/Kiev"} "Europe:Nicosia"{"Asia/Nicosia"} "Europe:Tiraspol"{"Europe/Chisinau"} + "Europe:Uzhgorod"{"Europe/Kiev"} + "Europe:Zaporozhye"{"Europe/Kiev"} "Mexico:BajaNorte"{"America/Tijuana"} "Mexico:BajaSur"{"America/Mazatlan"} "Mexico:General"{"America/Mexico_City"} "Pacific:Chuuk"{"Pacific/Truk"} + "Pacific:Johnston"{"Pacific/Honolulu"} "Pacific:Kanton"{"Pacific/Enderbury"} "Pacific:Pohnpei"{"Pacific/Ponape"} "Pacific:Samoa"{"Pacific/Pago_Pago"} @@ -236,6 +281,7 @@ timezoneTypes:table(nofallback){ "America:Cayman"{"kygec"} "America:Chicago"{"uschi"} "America:Chihuahua"{"mxchi"} + "America:Ciudad_Juarez"{"mxcjs"} "America:Coral_Harbour"{"cayzs"} "America:Cordoba"{"arcor"} "America:Costa_Rica"{"crsjo"} @@ -301,11 +347,9 @@ timezoneTypes:table(nofallback){ "America:Moncton"{"camon"} "America:Monterrey"{"mxmty"} "America:Montevideo"{"uymvd"} - "America:Montreal"{"camtr"} "America:Montserrat"{"msmni"} "America:Nassau"{"bsnas"} "America:New_York"{"usnyc"} - "America:Nipigon"{"canpg"} "America:Nome"{"usome"} "America:Noronha"{"brfen"} "America:North_Dakota:Beulah"{"usxul"} @@ -313,7 +357,6 @@ timezoneTypes:table(nofallback){ "America:North_Dakota:New_Salem"{"usndnsl"} "America:Ojinaga"{"mxoji"} "America:Panama"{"papty"} - "America:Pangnirtung"{"capnt"} "America:Paramaribo"{"srpbm"} "America:Phoenix"{"usphx"} "America:Port-au-Prince"{"htpap"} @@ -321,13 +364,11 @@ timezoneTypes:table(nofallback){ "America:Porto_Velho"{"brpvh"} "America:Puerto_Rico"{"prsju"} "America:Punta_Arenas"{"clpuq"} - "America:Rainy_River"{"caffs"} "America:Rankin_Inlet"{"cayek"} "America:Recife"{"brrec"} "America:Regina"{"careg"} "America:Resolute"{"careb"} "America:Rio_Branco"{"brrbr"} - "America:Santa_Isabel"{"mxstis"} "America:Santarem"{"brstm"} "America:Santiago"{"clscl"} "America:Santo_Domingo"{"dosdq"} @@ -343,7 +384,6 @@ timezoneTypes:table(nofallback){ "America:Swift_Current"{"cayyn"} "America:Tegucigalpa"{"hntgu"} "America:Thule"{"glthu"} - "America:Thunder_Bay"{"cathu"} "America:Tijuana"{"mxtij"} "America:Toronto"{"cator"} "America:Tortola"{"vgtov"} @@ -351,7 +391,6 @@ timezoneTypes:table(nofallback){ "America:Whitehorse"{"cayxy"} "America:Winnipeg"{"cawnp"} "America:Yakutat"{"usyak"} - "America:Yellowknife"{"cayzf"} "Antarctica:Casey"{"aqcas"} "Antarctica:Davis"{"aqdav"} "Antarctica:DumontDUrville"{"aqddu"} @@ -460,7 +499,6 @@ timezoneTypes:table(nofallback){ "Australia:Adelaide"{"auadl"} "Australia:Brisbane"{"aubne"} "Australia:Broken_Hill"{"aubhq"} - "Australia:Currie"{"aukns"} "Australia:Darwin"{"audrw"} "Australia:Eucla"{"aueuc"} "Australia:Hobart"{"auhba"} @@ -548,7 +586,6 @@ timezoneTypes:table(nofallback){ "Europe:Tallinn"{"eetll"} "Europe:Tirane"{"altia"} "Europe:Ulyanovsk"{"ruuly"} - "Europe:Uzhgorod"{"uauzh"} "Europe:Vaduz"{"livdz"} "Europe:Vatican"{"vavat"} "Europe:Vienna"{"atvie"} @@ -556,7 +593,6 @@ timezoneTypes:table(nofallback){ "Europe:Volgograd"{"ruvog"} "Europe:Warsaw"{"plwaw"} "Europe:Zagreb"{"hrzag"} - "Europe:Zaporozhye"{"uaozh"} "Europe:Zurich"{"chzrh"} "Indian:Antananarivo"{"mgtnr"} "Indian:Chagos"{"iodga"} @@ -584,7 +620,6 @@ timezoneTypes:table(nofallback){ "Pacific:Guadalcanal"{"sbhir"} "Pacific:Guam"{"gugum"} "Pacific:Honolulu"{"ushnl"} - "Pacific:Johnston"{"umjon"} "Pacific:Kiritimati"{"kicxi"} "Pacific:Kosrae"{"fmksa"} "Pacific:Kwajalein"{"mhkwa"} diff --git a/intl/icu/source/data/misc/windowsZones.txt b/intl/icu/source/data/misc/windowsZones.txt index 1535e88559..092e700f71 100644 --- a/intl/icu/source/data/misc/windowsZones.txt +++ b/intl/icu/source/data/misc/windowsZones.txt @@ -168,7 +168,7 @@ windowsZones:table(nofallback){ 001{"America/Mexico_City"} MX{ "America/Mexico_City America/Bahia_Banderas America/Merida America/Mo" - "nterrey" + "nterrey America/Chihuahua " } } "Central Standard Time"{ @@ -177,7 +177,7 @@ windowsZones:table(nofallback){ "America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Re" "solute" } - MX{"America/Matamoros"} + MX{"America/Matamoros America/Ojinaga"} US{ "America/Chicago America/Indiana/Knox America/Indiana/Tell_City Ameri" "ca/Menominee America/North_Dakota/Beulah America/North_Dakota/Center" @@ -398,8 +398,8 @@ windowsZones:table(nofallback){ MA{"Africa/Casablanca"} } "Mountain Standard Time (Mexico)"{ - 001{"America/Chihuahua"} - MX{"America/Chihuahua America/Mazatlan"} + 001{"America/Mazatlan"} + MX{"America/Mazatlan"} } "Mountain Standard Time"{ 001{"America/Denver"} @@ -407,7 +407,7 @@ windowsZones:table(nofallback){ "America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellow" "knife" } - MX{"America/Ojinaga"} + MX{"America/Ciudad_Juarez"} US{"America/Denver America/Boise"} ZZ{"MST7MDT"} } diff --git a/intl/icu/source/data/misc/zoneinfo64.txt b/intl/icu/source/data/misc/zoneinfo64.txt index bb7acc0012..4d49612577 100644 --- a/intl/icu/source/data/misc/zoneinfo64.txt +++ b/intl/icu/source/data/misc/zoneinfo64.txt @@ -3,20 +3,20 @@ // License & terms of use: http://www.unicode.org/copyright.html //--------------------------------------------------------- // Build tool: tz2icu -// Build date: Thu Aug 18 04:47:36 2022 +// Build date: Tue Mar 28 17:28:32 2023 // tz database: ftp://ftp.iana.org/tz/ -// tz version: 2022b -// ICU version: 72.0.1 +// tz version: 2023c +// ICU version: 73.1 //--------------------------------------------------------- // >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! << // >> !!! >>> DO NOT EDIT <<< !!! << //--------------------------------------------------------- zoneinfo64:table(nofallback) { - TZVersion { "2022b" } + TZVersion { "2023c" } Zones:array { - /* ACT */ :int { 356 } //Z#0 - /* AET */ :int { 368 } //Z#1 + /* ACT */ :int { 357 } //Z#0 + /* AET */ :int { 369 } //Z#1 /* AGT */ :int { 64 } //Z#2 /* ART */ :int { 18 } //Z#3 /* AST */ :int { 60 } //Z#4 @@ -24,7 +24,7 @@ zoneinfo64:table(nofallback) { trans:intvector { -1830383032 } typeOffsets:intvector { -968, 0, 0, 0 } typeMap:bin { "01" } - links:intvector { 5, 6, 11, 13, 21, 22, 27, 38, 51, 52, 55, 346, 348, 516 } + links:intvector { 5, 6, 11, 13, 21, 22, 27, 38, 51, 52, 55, 347, 349, 517 } } //Z#5 /* Africa/Accra */ :int { 5 } //Z#6 /* Africa/Addis_Ababa */ :int { 48 } //Z#7 @@ -49,14 +49,17 @@ zoneinfo64:table(nofallback) { /* Africa/Bujumbura */ :int { 43 } //Z#17 /* Africa/Cairo */ :table { transPre32:intvector { -1, 2109558187 } - trans:intvector { -929844000, -923108400, -906170400, -892868400, -875844000, -857790000, -844308000, -825822000, -812685600, -794199600, -779853600, -762663600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -71107200, -52707600, -39484800, -21171600, -7948800, 10364400, 23587200, 41900400, 55123200, 73522800, 86745600, 105058800, 118281600, 136594800, 149817600, 168130800, 181353600, 199753200, 212976000, 231289200, 244512000, 262825200, 276048000, 294361200, 307584000, 325983600, 339206400, 357519600, 370742400, 396399600, 402278400, 426812400, 433814400, 452214000, 465436800, 483750000, 496972800, 515286000, 528508800, 546822000, 560044800, 578444400, 591667200, 610412400, 623203200, 641516400, 654739200, 673052400, 686275200, 704674800, 717897600, 736210800, 749433600, 767746800, 780969600, 799020000, 812322000, 830469600, 843771600, 861919200, 875221200, 893368800, 906670800, 925423200, 938725200, 956872800, 970174800, 988322400, 1001624400, 1019772000, 1033074000, 1051221600, 1064523600, 1083276000, 1096578000, 1114725600, 1128027600, 1146175200, 1158872400, 1177624800, 1189112400, 1209074400, 1219957200, 1240524000, 1250802000, 1272578400, 1281474000, 1284069600, 1285880400, 1400191200, 1403816400, 1406844000, 1411678800 } + trans:intvector { -929844000, -923108400, -906170400, -892868400, -875844000, -857790000, -844308000, -825822000, -812685600, -794199600, -779853600, -762663600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -71107200, -52707600, -39484800, -21171600, -7948800, 10364400, 23587200, 41900400, 55123200, 73522800, 86745600, 105058800, 118281600, 136594800, 149817600, 168130800, 181353600, 199753200, 212976000, 231289200, 244512000, 262825200, 276048000, 294361200, 307584000, 325983600, 339206400, 357519600, 370742400, 396399600, 402278400, 426812400, 433814400, 452214000, 465436800, 483750000, 496972800, 515286000, 528508800, 546822000, 560044800, 578444400, 591667200, 610412400, 623203200, 641516400, 654739200, 673052400, 686275200, 704674800, 717897600, 736210800, 749433600, 767746800, 780969600, 799020000, 812322000, 830469600, 843771600, 861919200, 875221200, 893368800, 906670800, 925423200, 938725200, 956872800, 970174800, 988322400, 1001624400, 1019772000, 1033074000, 1051221600, 1064523600, 1083276000, 1096578000, 1114725600, 1128027600, 1146175200, 1158872400, 1177624800, 1189112400, 1209074400, 1219957200, 1240524000, 1250802000, 1272578400, 1281474000, 1284069600, 1285880400, 1400191200, 1403816400, 1406844000, 1411678800, 1682632800, 1698354000 } typeOffsets:intvector { 7509, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 3, 18, 402 } + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + finalRule { "Egypt" } + finalRaw:int { 7200 } + finalYear:int { 2024 } + links:intvector { 3, 18, 403 } } //Z#18 /* Africa/Casablanca */ :table { - trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682820000, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927764000, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 } - transPost32:intvector { 0, -2125888096, 0, -2122259296, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877315296, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632371296, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1387427296, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1142483296, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -897539296, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -744524896, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -652595296, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 } + trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 } + transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 } typeOffsets:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 } typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" } } //Z#19 @@ -75,8 +78,8 @@ zoneinfo64:table(nofallback) { /* Africa/Djibouti */ :int { 48 } //Z#24 /* Africa/Douala */ :int { 36 } //Z#25 /* Africa/El_Aaiun */ :table { - trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682820000, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927764000, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 } - transPost32:intvector { 0, -2125888096, 0, -2122259296, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877315296, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632371296, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1387427296, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1142483296, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -897539296, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -744524896, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -652595296, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 } + trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 } + transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 } typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600 } typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" } } //Z#26 @@ -119,7 +122,7 @@ zoneinfo64:table(nofallback) { trans:intvector { -2109291020 } typeOffsets:intvector { 7820, 0, 7200, 0 } typeMap:bin { "01" } - links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 379 } + links:intvector { 15, 17, 28, 29, 34, 40, 41, 43, 380 } } //Z#43 /* Africa/Maseru */ :int { 30 } //Z#44 /* Africa/Mbabane */ :int { 30 } //Z#45 @@ -133,7 +136,7 @@ zoneinfo64:table(nofallback) { trans:intvector { -1946168836, -1309746600, -1261969200, -1041388200, -865305900 } typeOffsets:intvector { 8836, 0, 9000, 0, 9900, 0, 10800, 0 } typeMap:bin { "0103010203" } - links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 397, 517, 521, 526 } + links:intvector { 7, 9, 10, 23, 24, 32, 46, 48, 398, 518, 522, 527 } } //Z#48 /* Africa/Ndjamena */ :table { trans:intvector { -1830387612, 308703600, 321314400 } @@ -155,7 +158,7 @@ zoneinfo64:table(nofallback) { trans:intvector { -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000, 1352505600, 1364515200, 1382659200 } typeOffsets:intvector { 3164, 0, 3600, 0, 3600, 3600, 7200, 0 } typeMap:bin { "0102010201020103010201020102010201020102010201020103010203010203" } - links:intvector { 56, 534 } + links:intvector { 56, 535 } } //Z#56 /* Africa/Tunis */ :table { transPre32:intvector { -1, 1497764852 } @@ -177,7 +180,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -36000 } finalYear:int { 2008 } - links:intvector { 59, 80, 619 } + links:intvector { 59, 80, 620 } } //Z#59 /* America/Anchorage */ :table { transPre32:intvector { -1, 1069743569, -1, 2106016072 } @@ -187,10 +190,10 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2008 } - links:intvector { 4, 60, 618 } + links:intvector { 4, 60, 619 } } //Z#60 - /* America/Anguilla */ :int { 190 } //Z#61 - /* America/Antigua */ :int { 190 } //Z#62 + /* America/Anguilla */ :int { 191 } //Z#61 + /* America/Antigua */ :int { 191 } //Z#62 /* America/Araguaina */ :table { trans:intvector { -1767214032, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1350788400, 1361066400 } typeOffsets:intvector { -11568, 0, -10800, 0, -10800, 3600 } @@ -215,14 +218,14 @@ zoneinfo64:table(nofallback) { trans:intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1224385200, 1237082400 } typeOffsets:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040104030403020304030403" } - links:intvector { 67, 101, 198 } + links:intvector { 67, 102, 199 } } //Z#67 /* America/Argentina/Jujuy */ :table { transPre32:intvector { -1, 1922870968 } trans:intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 657086400, 669178800, 686721600, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800 } typeOffsets:intvector { -15672, 0, -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020405040504050203020504050403040504" } - links:intvector { 68, 143 } + links:intvector { 68, 144 } } //Z#68 /* America/Argentina/La_Rioja */ :table { transPre32:intvector { -1, 1922871340 } @@ -235,7 +238,7 @@ zoneinfo64:table(nofallback) { trans:intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 655963200, 667796400, 687499200, 699418800, 719380800, 731469600, 938919600, 952052400, 1085281200, 1096171200, 1198983600, 1205632800 } typeOffsets:intvector { -16516, 0, -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030204050405040502030203020504030402040504" } - links:intvector { 70, 161 } + links:intvector { 70, 162 } } //Z#70 /* America/Argentina/Rio_Gallegos */ :table { transPre32:intvector { -1, 1922871908 } @@ -273,7 +276,7 @@ zoneinfo64:table(nofallback) { typeOffsets:intvector { -16392, 0, -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030204050405040504050405040504030402040504" } } //Z#76 - /* America/Aruba */ :int { 190 } //Z#77 + /* America/Aruba */ :int { 191 } //Z#77 /* America/Asuncion */ :table { trans:intvector { -1206389360, 86760000, 134017200, 181368000, 194497200, 212990400, 226033200, 244526400, 257569200, 276062400, 291783600, 307598400, 323406000, 339220800, 354942000, 370756800, 386478000, 402292800, 418014000, 433828800, 449636400, 465451200, 481172400, 496987200, 512708400, 528523200, 544244400, 560059200, 575866800, 591681600, 607402800, 625032000, 638938800, 654753600, 670474800, 686721600, 699418800, 718257600, 733546800, 749448000, 762318000, 780984000, 793767600, 812520000, 825649200, 844574400, 856666800, 876024000, 888721200, 907473600, 920775600, 938923200, 952225200, 970372800, 983674800, 1002427200, 1018148400, 1030852800, 1049598000, 1062907200, 1081047600, 1097985600, 1110682800, 1129435200, 1142132400, 1160884800, 1173582000, 1192939200, 1205031600, 1224388800, 1236481200, 1255838400, 1270954800, 1286078400, 1302404400, 1317528000, 1333854000, 1349582400, 1364094000, 1381032000 } typeOffsets:intvector { -13840, 0, -14400, 0, -14400, 3600, -10800, 0 } @@ -282,7 +285,7 @@ zoneinfo64:table(nofallback) { finalRaw:int { -14400 } finalYear:int { 2014 } } //Z#78 - /* America/Atikokan */ :int { 182 } //Z#79 + /* America/Atikokan */ :int { 183 } //Z#79 /* America/Atka */ :int { 59 } //Z#80 /* America/Bahia */ :table { trans:intvector { -1767216356, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1318734000, 1330221600 } @@ -290,12 +293,9 @@ zoneinfo64:table(nofallback) { typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } } //Z#81 /* America/Bahia_Banderas */ :table { - trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1270371600, 1288508400, 1301817600, 1319958000 } + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1270371600, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1428220800, 1445756400, 1459670400, 1477810800, 1491120000, 1509260400, 1522569600, 1540710000, 1554624000, 1572159600, 1586073600, 1603609200, 1617523200, 1635663600, 1648972800, 1667113200 } typeOffsets:intvector { -25260, 0, -28800, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } - typeMap:bin { "0204020402040201020302030203020302030203020302030203020302030203020302030205040504" } - finalRule { "Mexico" } - finalRaw:int { -21600 } - finalYear:int { 2012 } + typeMap:bin { "020402030204020102030203020302030203020302030203020302030203020302030203020504050405040504050405040504050405040504050405040504" } } //Z#82 /* America/Barbados */ :table { trans:intvector { -1841256091, -874263600, -862682400, -841604400, -830714400, -811882800, -798660000, 234943200, 244616400, 261554400, 276066000, 293004000, 307515600, 325058400, 338706000 } @@ -312,14 +312,14 @@ zoneinfo64:table(nofallback) { typeOffsets:intvector { -21168, 0, -21600, 0, -21600, 1800, -21600, 3600 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020103010301" } } //Z#85 - /* America/Blanc-Sablon */ :int { 190 } //Z#86 + /* America/Blanc-Sablon */ :int { 191 } //Z#86 /* America/Boa_Vista */ :table { trans:intvector { -1767211040, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 938923200, 951620400, 970977600, 971578800 } typeOffsets:intvector { -14560, 0, -14400, 0, -14400, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201" } } //Z#87 /* America/Bogota */ :table { - trans:intvector { -1739041424, 704869200, 733896000 } + trans:intvector { -1739041424, 704869200, 729057600 } typeOffsets:intvector { -17776, 0, -18000, 0, -18000, 3600 } typeMap:bin { "010201" } } //Z#88 @@ -334,9 +334,9 @@ zoneinfo64:table(nofallback) { } //Z#89 /* America/Buenos_Aires */ :int { 64 } //Z#90 /* America/Cambridge_Bay */ :table { - trans:intvector { -1577923200, -880210800, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954662400, 972802800, 973400400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } - typeOffsets:intvector { 0, 0, -25200, 0, -25200, 3600, -25200, 7200, -21600, 0, -21600, 3600, -18000, 0 } - typeMap:bin { "0102010301020102010201020102010201020102010201020102010201020102010201020102010201020102040506040201020102010201020102010201" } + trans:intvector { -1577923200, -880210800, -765388800, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954662400, 972802800, 973400400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } + typeOffsets:intvector { 0, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600, -18000, 0 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030405030201020102010201020102010201" } finalRule { "Canada" } finalRaw:int { -25200 } finalYear:int { 2008 } @@ -363,7 +363,7 @@ zoneinfo64:table(nofallback) { typeOffsets:intvector { -12560, 0, -14400, 0, -10800, 0 } typeMap:bin { "0102" } } //Z#96 - /* America/Cayman */ :int { 182 } //Z#97 + /* America/Cayman */ :int { 183 } //Z#97 /* America/Chicago */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1563724800, -1551632400, -1538928000, -1520182800, -1504454400, -1491757200, -1473004800, -1459702800, -1441555200, -1428253200, -1410105600, -1396803600, -1378656000, -1365354000, -1347206400, -1333904400, -1315152000, -1301850000, -1283702400, -1270400400, -1252252800, -1238950800, -1220803200, -1207501200, -1189353600, -1176051600, -1157299200, -1144602000, -1125849600, -1112547600, -1094400000, -1081098000, -1067788800, -1045414800, -1031500800, -1018198800, -1000051200, -986749200, -967996800, -955299600, -936547200, -923245200, -905097600, -891795600, -880214400, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } @@ -372,47 +372,52 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - links:intvector { 98, 382, 621 } + links:intvector { 98, 383, 622 } } //Z#98 /* America/Chihuahua */ :table { - trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 } + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1270371600, 1288512000, 1301821200, 1319961600, 1333270800, 1351411200, 1365325200, 1382860800, 1396774800, 1414310400, 1428224400, 1445760000, 1459674000, 1477814400, 1491123600, 1509264000, 1522573200, 1540713600, 1554627600, 1572163200, 1586077200, 1603612800, 1617526800, 1635667200, 1648976400, 1667116800 } typeOffsets:intvector { -25460, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } - typeMap:bin { "0103010301030403040302010201020102010201" } - finalRule { "Mexico" } - finalRaw:int { -25200 } - finalYear:int { 2003 } + typeMap:bin { "010301020103040304030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" } } //Z#99 - /* America/Coral_Harbour */ :int { 182 } //Z#100 - /* America/Cordoba */ :int { 67 } //Z#101 + /* America/Ciudad_Juarez */ :table { + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1268557200, 1289116800, 1300006800, 1320566400, 1331456400, 1352016000, 1362906000, 1383465600, 1394355600, 1414915200, 1425805200, 1446364800, 1457859600, 1478419200, 1489309200, 1509868800, 1520758800, 1541318400, 1552208400, 1572768000, 1583658000, 1604217600, 1615712400, 1636272000, 1647162000, 1667116800, 1669788000, 1678611600, 1699171200 } + typeOffsets:intvector { -25556, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } + typeMap:bin { "010301020103040304030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203010201" } + finalRule { "US" } + finalRaw:int { -25200 } + finalYear:int { 2024 } + } //Z#100 + /* America/Coral_Harbour */ :int { 183 } //Z#101 + /* America/Cordoba */ :int { 67 } //Z#102 /* America/Costa_Rica */ :table { trans:intvector { -1545071027, 288770400, 297234000, 320220000, 328683600, 664264800, 678344400, 695714400, 700635600 } typeOffsets:intvector { -20173, 0, -21600, 0, -21600, 3600 } typeMap:bin { "010201020102010201" } - } //Z#102 - /* America/Creston */ :int { 185 } //Z#103 + } //Z#103 + /* America/Creston */ :int { 186 } //Z#104 /* America/Cuiaba */ :table { trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 } typeOffsets:intvector { -13460, 0, -14400, 0, -14400, 3600 } typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - } //Z#104 - /* America/Curacao */ :int { 190 } //Z#105 + } //Z#105 + /* America/Curacao */ :int { 191 } //Z#106 /* America/Danmarkshavn */ :table { trans:intvector { -1686091520, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 820465200 } typeOffsets:intvector { -4480, 0, -10800, 0, -10800, 3600, 0, 0 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020103" } - } //Z#106 + } //Z#107 /* America/Dawson */ :table { transPre32:intvector { -1, 2105970356 } trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, 120646800, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800, 1446368400, 1457863200, 1478422800, 1489312800, 1509872400, 1520762400, 1541322000, 1552212000, 1572771600, 1583661600, 1604214000 } typeOffsets:intvector { -33460, 0, -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600, -25200, 0 } typeMap:bin { "0102010201020103010405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" } - } //Z#107 + } //Z#108 /* America/Dawson_Creek */ :table { transPre32:intvector { -1, 1581085752 } trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 84013200 } typeOffsets:intvector { -28856, 0, -28800, 0, -28800, 3600, -25200, 0 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" } - } //Z#108 + } //Z#109 /* America/Denver */ :table { transPre32:intvector { -1, 1577323696 } trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -1570374000, -1551628800, -1538924400, -1534089600, -880210800, -765388800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } @@ -421,8 +426,8 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -25200 } finalYear:int { 2008 } - links:intvector { 109, 205, 546, 627 } - } //Z#109 + links:intvector { 110, 206, 547, 628 } + } //Z#110 /* America/Detroit */ :table { trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80506740, -68666400, -52938000, -37216800, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } typeOffsets:intvector { -19931, 0, -21600, 0, -18000, 0, -18000, 3600 } @@ -430,9 +435,9 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - links:intvector { 110, 626 } - } //Z#110 - /* America/Dominica */ :int { 190 } //Z#111 + links:intvector { 111, 627 } + } //Z#111 + /* America/Dominica */ :int { 191 } //Z#112 /* America/Edmonton */ :table { trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } typeOffsets:intvector { -27232, 0, -25200, 0, -25200, 3600 } @@ -440,31 +445,31 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -25200 } finalYear:int { 2008 } - links:intvector { 112, 389 } - } //Z#112 + links:intvector { 113, 226, 390 } + } //Z#113 /* America/Eirunepe */ :table { trans:intvector { -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800, 1214283600, 1384056000 } typeOffsets:intvector { -16768, 0, -18000, 0, -18000, 3600, -14400, 0 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010301" } - } //Z#113 + } //Z#114 /* America/El_Salvador */ :table { trans:intvector { -1546279392, 547020000, 559717200, 578469600, 591166800 } typeOffsets:intvector { -21408, 0, -21600, 0, -21600, 3600 } typeMap:bin { "0102010201" } - } //Z#114 - /* America/Ensenada */ :int { 217 } //Z#115 + } //Z#115 + /* America/Ensenada */ :int { 218 } //Z#116 /* America/Fort_Nelson */ :table { transPre32:intvector { -1, 1581086343 } trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800 } typeOffsets:intvector { -29447, 0, -28800, 0, -28800, 3600, -25200, 0 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" } - } //Z#116 - /* America/Fort_Wayne */ :int { 131 } //Z#117 + } //Z#117 + /* America/Fort_Wayne */ :int { 132 } //Z#118 /* America/Fortaleza */ :table { trans:intvector { -1767216360, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 } typeOffsets:intvector { -9240, 0, -10800, 0, -10800, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" } - } //Z#118 + } //Z#119 /* America/Glace_Bay */ :table { trans:intvector { -2131646412, -1632074400, -1615143600, -880221600, -765399600, -526500000, -513198000, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 } typeOffsets:intvector { -14388, 0, -14400, 0, -14400, 3600 } @@ -472,8 +477,8 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -14400 } finalYear:int { 2008 } - } //Z#119 - /* America/Godthab */ :int { 180 } //Z#120 + } //Z#120 + /* America/Godthab */ :int { 181 } //Z#121 /* America/Goose_Bay */ :table { transPre32:intvector { -1, 1581071396 } trans:intvector { -1632076148, -1615145348, -1096921748, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -119903400, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544593660, 562129260, 576043260, 594180060, 607492860, 625633260, 638942460, 657082860, 670996860, 688532460, 702446460, 719982060, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860, 1173585660, 1194145260, 1205035260, 1225594860, 1236484860, 1257044460, 1268539260, 1289098860, 1299988860, 1320555600, 1331445600, 1352005200 } @@ -482,7 +487,7 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -14400 } finalYear:int { 2013 } - } //Z#121 + } //Z#122 /* America/Grand_Turk */ :table { transPre32:intvector { -1, 1770462768 } trans:intvector { -1827687170, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1520751600, 1541311200 } @@ -491,25 +496,25 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2019 } - } //Z#122 - /* America/Grenada */ :int { 190 } //Z#123 - /* America/Guadeloupe */ :int { 190 } //Z#124 + } //Z#123 + /* America/Grenada */ :int { 191 } //Z#124 + /* America/Guadeloupe */ :int { 191 } //Z#125 /* America/Guatemala */ :table { trans:intvector { -1617040676, 123055200, 130914000, 422344800, 433054800, 669708000, 684219600, 1146376800, 1159678800 } typeOffsets:intvector { -21724, 0, -21600, 0, -21600, 3600 } typeMap:bin { "010201020102010201" } - } //Z#125 + } //Z#126 /* America/Guayaquil */ :table { transPre32:intvector { -1, 1770464856 } trans:intvector { -1230749160, 722926800, 728884800 } typeOffsets:intvector { -19160, 0, -18840, 0, -18000, 0, -18000, 3600 } typeMap:bin { "01020302" } - } //Z#126 + } //Z#127 /* America/Guyana */ :table { trans:intvector { -1843589241, -1730577600, 176096700, 701841600 } typeOffsets:intvector { -13959, 0, -14400, 0, -13500, 0, -10800, 0 } typeMap:bin { "01020301" } - } //Z#127 + } //Z#128 /* America/Halifax */ :table { trans:intvector { -2131645536, -1696276800, -1680469200, -1632074400, -1615143600, -1566763200, -1557090000, -1535486400, -1524949200, -1504468800, -1493413200, -1472414400, -1461963600, -1440964800, -1429390800, -1409515200, -1396731600, -1376856000, -1366491600, -1346616000, -1333832400, -1313956800, -1303678800, -1282507200, -1272661200, -1251057600, -1240088400, -1219608000, -1207429200, -1188763200, -1175979600, -1157313600, -1143925200, -1124049600, -1113771600, -1091390400, -1081026000, -1059854400, -1050786000, -1030910400, -1018126800, -999460800, -986677200, -965592000, -955227600, -935956800, -923173200, -904507200, -891723600, -880221600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -431546400, -418244400, -400096800, -386794800, -368647200, -355345200, -337197600, -323895600, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 } typeOffsets:intvector { -15264, 0, -14400, 0, -14400, 3600 } @@ -517,8 +522,8 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -14400 } finalYear:int { 2008 } - links:intvector { 128, 385 } - } //Z#128 + links:intvector { 129, 386 } + } //Z#129 /* America/Havana */ :table { transPre32:intvector { -1, 1770465464 } trans:intvector { -1402813824, -1311534000, -1300996800, -933534000, -925675200, -902084400, -893620800, -870030000, -862171200, -775681200, -767822400, -744231600, -736372800, -144702000, -134251200, -113425200, -102542400, -86295600, -72907200, -54154800, -41457600, -21495600, -5774400, 9954000, 25675200, 41403600, 57729600, 73458000, 87364800, 104907600, 118900800, 136357200, 150436800, 167806800, 183528000, 199256400, 215582400, 230706000, 247032000, 263365200, 276667200, 290581200, 308721600, 322030800, 340171200, 358318800, 371620800, 389768400, 403070400, 421218000, 434520000, 452667600, 466574400, 484117200, 498024000, 511333200, 529473600, 542782800, 560923200, 574837200, 592372800, 606286800, 623822400, 638946000, 655876800, 671000400, 687330000, 702450000, 718779600, 733899600, 750229200, 765349200, 781678800, 796798800, 813128400, 828853200, 844578000, 860302800, 876632400, 891147600, 909291600, 922597200, 941346000, 954651600, 972795600, 986101200, 1004245200, 1018155600, 1035694800, 1049605200, 1067144400, 1080450000, 1162098000, 1173589200, 1193547600, 1205643600, 1224997200, 1236488400, 1256446800, 1268542800, 1288501200, 1300597200, 1321160400, 1333256400, 1352005200, 1362891600, 1383454800 } @@ -527,13 +532,13 @@ zoneinfo64:table(nofallback) { finalRule { "Cuba" } finalRaw:int { -18000 } finalYear:int { 2014 } - links:intvector { 129, 396 } - } //Z#129 + links:intvector { 130, 397 } + } //Z#130 /* America/Hermosillo */ :table { trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 } typeOffsets:intvector { -26632, 0, -28800, 0, -25200, 0, -25200, 3600, -21600, 0 } - typeMap:bin { "020402040204020102030203020302" } - } //Z#130 + typeMap:bin { "020402030204020102030203020302" } + } //Z#131 /* America/Indiana/Indianapolis */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -900259200, -891795600, -880214400, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -386787600, -368640000, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -542,8 +547,8 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - links:intvector { 117, 131, 139, 514, 622 } - } //Z#131 + links:intvector { 118, 132, 140, 515, 623 } + } //Z#132 /* America/Indiana/Knox */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -195066000, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 1143961200, 1162105200, 1173600000, 1194159600 } @@ -552,8 +557,8 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - links:intvector { 132, 147, 625 } - } //Z#132 + links:intvector { 133, 148, 626 } + } //Z#133 /* America/Indiana/Marengo */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -589392000, -576090000, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -562,7 +567,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - } //Z#133 + } //Z#134 /* America/Indiana/Petersburg */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 1143961200, 1162105200, 1173600000, 1194159600, 1205046000, 1225605600 } @@ -571,7 +576,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2009 } - } //Z#134 + } //Z#135 /* America/Indiana/Tell_City */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -68662800, -52934400, -37213200, -21484800, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 } @@ -580,7 +585,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#135 + } //Z#136 /* America/Indiana/Vevay */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -495043200, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -589,7 +594,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - } //Z#136 + } //Z#137 /* America/Indiana/Vincennes */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600, 1205046000, 1225605600 } @@ -598,7 +603,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2009 } - } //Z#137 + } //Z#138 /* America/Indiana/Winamac */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194156000, 1205046000, 1225605600 } @@ -607,31 +612,32 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2009 } - } //Z#138 - /* America/Indianapolis */ :int { 131 } //Z#139 + } //Z#139 + /* America/Indianapolis */ :int { 132 } //Z#140 /* America/Inuvik */ :table { - trans:intvector { -536457600, -147888000, -131558400, 294228000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } - typeOffsets:intvector { 0, 0, -28800, 0, -28800, 7200, -25200, 0, -25200, 3600 } - typeMap:bin { "010201030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" } + trans:intvector { -536457600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } + typeOffsets:intvector { 0, 0, -28800, 0, -28800, 3600, -25200, 0, -25200, 3600 } + typeMap:bin { "01020102010201020102010201020104030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" } finalRule { "Canada" } finalRaw:int { -25200 } finalYear:int { 2008 } - } //Z#140 + } //Z#141 /* America/Iqaluit */ :table { - trans:intvector { -865296000, -765396000, -147898800, -131569200, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } - typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -18000, 7200 } - typeMap:bin { "040305030403040304030403040304030403040304030403040304030403040304030403040304030403040102030403040304030403040304030403" } + trans:intvector { -865296000, -765396000, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } + typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 } + typeMap:bin { "0403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040102030403040304030403040304030403" } finalRule { "Canada" } finalRaw:int { -18000 } finalYear:int { 2008 } - } //Z#141 + links:intvector { 142, 184 } + } //Z#142 /* America/Jamaica */ :table { trans:intvector { -1827687170, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 } typeOffsets:intvector { -18430, 0, -18000, 0, -18000, 3600 } typeMap:bin { "010201020102010201020102010201020102010201" } - links:intvector { 142, 531 } - } //Z#142 - /* America/Jujuy */ :int { 68 } //Z#143 + links:intvector { 143, 532 } + } //Z#143 + /* America/Jujuy */ :int { 68 } //Z#144 /* America/Juneau */ :table { transPre32:intvector { -1, 1069743569, -1, 2106012357 } trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341402400, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 } @@ -640,7 +646,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2008 } - } //Z#144 + } //Z#145 /* America/Kentucky/Louisville */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -765392400, -747251940, -744224400, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -649,8 +655,8 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - links:intvector { 145, 152 } - } //Z#145 + links:intvector { 146, 153 } + } //Z#146 /* America/Kentucky/Monticello */ :table { transPre32:intvector { -1, 1577320096 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -659,20 +665,20 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - } //Z#146 - /* America/Knox_IN */ :int { 132 } //Z#147 - /* America/Kralendijk */ :int { 190 } //Z#148 + } //Z#147 + /* America/Knox_IN */ :int { 133 } //Z#148 + /* America/Kralendijk */ :int { 191 } //Z#149 /* America/La_Paz */ :table { trans:intvector { -1205954844, -1192307244 } typeOffsets:intvector { -16356, 0, -16356, 3600, -14400, 0 } typeMap:bin { "0102" } - } //Z#149 + } //Z#150 /* America/Lima */ :table { transPre32:intvector { -1, 1770464188 } trans:intvector { -1938538284, -1009825200, -1002052800, -986756400, -971035200, -955306800, -939585600, 504939600, 512712000, 536475600, 544248000, 631170000, 638942400, 757400400, 765172800 } typeOffsets:intvector { -18492, 0, -18516, 0, -18000, 0, -18000, 3600 } typeMap:bin { "01020302030203020302030203020302" } - } //Z#150 + } //Z#151 /* America/Los_Angeles */ :table { transPre32:intvector { -1, 1577327296 } trans:intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -765385200, -687967140, -662655600, -620838000, -608137200, -589388400, -576082800, -557938800, -544633200, -526489200, -513183600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, -273682800, -260982000, -242233200, -226508400, -210783600, -195058800, -179334000, -163609200, -147884400, -131554800, -116434800, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 } @@ -681,51 +687,48 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -28800 } finalYear:int { 2008 } - links:intvector { 151, 551, 628, 629 } - } //Z#151 - /* America/Louisville */ :int { 145 } //Z#152 - /* America/Lower_Princes */ :int { 190 } //Z#153 + links:intvector { 152, 552, 629, 630 } + } //Z#152 + /* America/Louisville */ :int { 146 } //Z#153 + /* America/Lower_Princes */ :int { 191 } //Z#154 /* America/Maceio */ :table { trans:intvector { -1767217028, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 } typeOffsets:intvector { -8572, 0, -10800, 0, -10800, 3600 } typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - } //Z#154 + } //Z#155 /* America/Managua */ :table { transPre32:intvector { -1, 1770466404 } trans:intvector { -1121105688, 105084000, 161758800, 290584800, 299134800, 322034400, 330584400, 694260000, 717310800, 725868000, 852094800, 1113112800, 1128229200, 1146384000, 1159682400 } typeOffsets:intvector { -20708, 0, -21600, 0, -21600, 3600, -20712, 0, -18000, 0 } typeMap:bin { "03010401020102010401040102010201" } - } //Z#155 + } //Z#156 /* America/Manaus */ :table { trans:intvector { -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 } typeOffsets:intvector { -14404, 0, -14400, 0, -14400, 3600 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 156, 378 } - } //Z#156 - /* America/Marigot */ :int { 190 } //Z#157 + links:intvector { 157, 379 } + } //Z#157 + /* America/Marigot */ :int { 191 } //Z#158 /* America/Martinique */ :table { trans:intvector { -1851537340, 323841600, 338958000 } typeOffsets:intvector { -14660, 0, -14400, 0, -14400, 3600 } typeMap:bin { "010201" } - } //Z#158 + } //Z#159 /* America/Matamoros */ :table { trans:intvector { -1514743200, 576057600, 594198000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1268553600, 1289113200 } - typeOffsets:intvector { -24000, 0, -21600, 0, -21600, 3600 } + typeOffsets:intvector { -23400, 0, -21600, 0, -21600, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2011 } - } //Z#159 + } //Z#160 /* America/Mazatlan */ :table { - trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 } + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1270371600, 1288512000, 1301821200, 1319961600, 1333270800, 1351411200, 1365325200, 1382860800, 1396774800, 1414310400, 1428224400, 1445760000, 1459674000, 1477814400, 1491123600, 1509264000, 1522573200, 1540713600, 1554627600, 1572163200, 1586077200, 1603612800, 1617526800, 1635667200, 1648976400, 1667116800 } typeOffsets:intvector { -25540, 0, -28800, 0, -25200, 0, -25200, 3600, -21600, 0 } - typeMap:bin { "0204020402040201020302030203020302030203020302" } - finalRule { "Mexico" } - finalRaw:int { -25200 } - finalYear:int { 2003 } - links:intvector { 160, 540 } - } //Z#160 - /* America/Mendoza */ :int { 70 } //Z#161 + typeMap:bin { "020402030204020102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } + links:intvector { 161, 541 } + } //Z#161 + /* America/Mendoza */ :int { 70 } //Z#162 /* America/Menominee */ :table { transPre32:intvector { -1, 1635207523 } trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -747244800, -733942800, -116438400, -100112400, -21484800, 104914800, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } @@ -734,15 +737,12 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#162 + } //Z#163 /* America/Merida */ :table { - trans:intvector { -1514743200, 377935200, 407653200, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 } + trans:intvector { -1514743200, 377935200, 407653200, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1270368000, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1428220800, 1445756400, 1459670400, 1477810800, 1491120000, 1509260400, 1522569600, 1540710000, 1554624000, 1572159600, 1586073600, 1603609200, 1617523200, 1635663600, 1648972800, 1667113200 } typeOffsets:intvector { -21508, 0, -21600, 0, -21600, 3600, -18000, 0 } - typeMap:bin { "0103010201020102010201020102010201" } - finalRule { "Mexico" } - finalRaw:int { -21600 } - finalYear:int { 2003 } - } //Z#163 + typeMap:bin { "010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + } //Z#164 /* America/Metlakatla */ :table { transPre32:intvector { -1, 1069743569, -1, 2106011674 } trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 1446372000, 1457866800, 1478426400, 1489316400, 1509876000, 1520766000, 1541325600, 1547978400, 1552215600, 1572775200 } @@ -751,16 +751,13 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2020 } - } //Z#164 - /* America/Mexico_City */ :table { - trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -975261600, -963169200, -917114400, -907354800, -821901600, -810068400, -627501600, -612990000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 } - typeOffsets:intvector { -23796, 0, -25200, 0, -21600, 0, -21600, 3600 } - typeMap:bin { "01020102010203020302030203020302030203020302030203020302" } - finalRule { "Mexico" } - finalRaw:int { -21600 } - finalYear:int { 2003 } - links:intvector { 165, 541 } } //Z#165 + /* America/Mexico_City */ :table { + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -975261600, -963169200, -917114400, -907354800, -821901600, -810068400, -627501600, -612990000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1270368000, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1428220800, 1445756400, 1459670400, 1477810800, 1491120000, 1509260400, 1522569600, 1540710000, 1554624000, 1572159600, 1586073600, 1603609200, 1617523200, 1635663600, 1648972800, 1667113200 } + typeOffsets:intvector { -23796, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } + typeMap:bin { "0103010201030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" } + links:intvector { 166, 542 } + } //Z#166 /* America/Miquelon */ :table { trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 } typeOffsets:intvector { -13480, 0, -14400, 0, -10800, 0, -10800, 3600 } @@ -768,7 +765,7 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -10800 } finalYear:int { 2008 } - } //Z#166 + } //Z#167 /* America/Moncton */ :table { transPre32:intvector { -1, 1579085244 } trans:intvector { -2131642800, -1632074400, -1615143600, -1153681200, -1145822400, -1122231600, -1114372800, -1090782000, -1082923200, -1059332400, -1051473600, -1027882800, -1020024000, -996433200, -988574400, -965674800, -955396800, -934743600, -923947200, -904503600, -891892800, -880221600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -620848800, -608151600, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -463600800, -450298800, -431546400, -418244400, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860, 1173592800, 1194152400 } @@ -777,23 +774,20 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -14400 } finalYear:int { 2008 } - } //Z#167 + } //Z#168 /* America/Monterrey */ :table { - trans:intvector { -1514743200, 576057600, 594198000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 } + trans:intvector { -1514743200, 576057600, 594198000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1270368000, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1428220800, 1445756400, 1459670400, 1477810800, 1491120000, 1509260400, 1522569600, 1540710000, 1554624000, 1572159600, 1586073600, 1603609200, 1617523200, 1635663600, 1648972800, 1667113200 } typeOffsets:intvector { -24076, 0, -21600, 0, -21600, 3600 } - typeMap:bin { "0102010201020102010201020102010201" } - finalRule { "Mexico" } - finalRaw:int { -21600 } - finalYear:int { 2003 } - } //Z#168 + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + } //Z#169 /* America/Montevideo */ :table { trans:intvector { -1567455309, -1459627200, -1443819600, -1428006600, -1412283600, -1396470600, -1380747600, -1141590600, -1128286800, -1110141000, -1096837200, -1078691400, -1065387600, -1047241800, -1033938000, -1015187400, -1002488400, -983737800, -971038800, -954707400, -938984400, -920838600, -907534800, -896819400, -853621200, -845847000, -334789200, -319671000, -314226000, -309996000, -149720400, -134604000, -50446800, -34205400, 9860400, 14176800, 72846000, 80100000, 127278000, 132111000, 147234600, 156913200, 165376800, 219812400, 226461600, 250052400, 257911200, 282711600, 289360800, 294202800, 322020000, 566449200, 573012000, 597812400, 605066400, 625633200, 635911200, 656478000, 667965600, 688532400, 699415200, 719377200, 730864800, 1095562800, 1111896000, 1128834000, 1142136000, 1159678800, 1173585600, 1191733200, 1205035200, 1223182800, 1236484800, 1254632400, 1268539200, 1286082000, 1299988800, 1317531600, 1331438400, 1349586000, 1362888000, 1381035600, 1394337600, 1412485200, 1425787200 } typeOffsets:intvector { -13491, 0, -14400, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600, -10800, 5400 } typeMap:bin { "01030203020302030203020302030203020302030203020305040504060406040504060406040705040604060406040604060406040604060406040604060406040604060406040604060406040604060406040604" } - } //Z#169 - /* America/Montreal */ :int { 218 } //Z#170 - /* America/Montserrat */ :int { 190 } //Z#171 - /* America/Nassau */ :int { 218 } //Z#172 + } //Z#170 + /* America/Montreal */ :int { 219 } //Z#171 + /* America/Montserrat */ :int { 191 } //Z#172 + /* America/Nassau */ :int { 219 } //Z#173 /* America/New_York */ :table { transPre32:intvector { -1, 1577316496 } trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -1570381200, -1551636000, -1536512400, -1523210400, -1504458000, -1491760800, -1473008400, -1459706400, -1441558800, -1428256800, -1410109200, -1396807200, -1378659600, -1365357600, -1347210000, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1189357200, -1176055200, -1157302800, -1144605600, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -923248800, -905101200, -891799200, -880218000, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -639597600, -620845200, -608148000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -802,17 +796,9 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - links:intvector { 173, 623 } - } //Z#173 - /* America/Nipigon */ :table { - transPre32:intvector { -1, 1928233280 } - trans:intvector { -1632070800, -1615140000, -923252400, -765396000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } - typeOffsets:intvector { -21184, 0, -18000, 0, -18000, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - finalRule { "Canada" } - finalRaw:int { -18000 } - finalYear:int { 2008 } + links:intvector { 174, 624 } } //Z#174 + /* America/Nipigon */ :int { 219 } //Z#175 /* America/Nome */ :table { transPre32:intvector { -1, 1069743569, -1, 2106019794 } trans:intvector { -880196400, -765374400, -21466800, -5745600, 9982800, 25704000, 41432400, 57758400, 73486800, 89208000, 104936400, 120657600, 126709200, 152107200, 162392400, 183556800, 199285200, 215611200, 230734800, 247060800, 262789200, 278510400, 294238800, 309960000, 325688400, 341409600, 357138000, 372859200, 388587600, 404913600, 420037200, 436363200, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 } @@ -821,13 +807,13 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2008 } - } //Z#175 + } //Z#176 /* America/Noronha */ :table { trans:intvector { -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 } typeOffsets:intvector { -7780, 0, -7200, 0, -7200, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 176, 376 } - } //Z#176 + links:intvector { 177, 377 } + } //Z#177 /* America/North_Dakota/Beulah */ :table { transPre32:intvector { -1, 1577323696 } trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200, 1205053200, 1225612800, 1236502800, 1257062400, 1268557200, 1289116800, 1300003200, 1320562800 } @@ -836,7 +822,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2012 } - } //Z#177 + } //Z#178 /* America/North_Dakota/Center */ :table { transPre32:intvector { -1, 1577323696 } trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } @@ -845,7 +831,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#178 + } //Z#179 /* America/North_Dakota/New_Salem */ :table { transPre32:intvector { -1, 1577323696 } trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } @@ -854,51 +840,44 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#179 + } //Z#180 /* America/Nuuk */ :table { - trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } - typeOffsets:intvector { -12416, 0, -10800, 0, -10800, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201" } + trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 } + typeOffsets:intvector { -12416, 0, -10800, 0, -10800, 3600, -7200, 0, -7200, 3600 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030403" } finalRule { "EU" } - finalRaw:int { -10800 } - finalYear:int { 1997 } - links:intvector { 120, 180 } - } //Z#180 + finalRaw:int { -7200 } + finalYear:int { 2025 } + links:intvector { 121, 181 } + } //Z#181 /* America/Ojinaga */ :table { - trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1268557200, 1289116800 } + trans:intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1175418000, 1193558400, 1207472400, 1225008000, 1238922000, 1256457600, 1268557200, 1289116800, 1300006800, 1320566400, 1331456400, 1352016000, 1362906000, 1383465600, 1394355600, 1414915200, 1425805200, 1446364800, 1457859600, 1478419200, 1489309200, 1509868800, 1520758800, 1541318400, 1552208400, 1572768000, 1583658000, 1604217600, 1615712400, 1636272000, 1647162000, 1667116800, 1678608000, 1699167600 } typeOffsets:intvector { -25060, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } - typeMap:bin { "010301030103040304030201020102010201020102010201020102010201020102010201" } + typeMap:bin { "0103010201030403040302010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030403" } finalRule { "US" } - finalRaw:int { -25200 } - finalYear:int { 2011 } - } //Z#181 + finalRaw:int { -21600 } + finalYear:int { 2024 } + } //Z#182 /* America/Panama */ :table { transPre32:intvector { -1, 1770464784 } trans:intvector { -1946918424 } typeOffsets:intvector { -19088, 0, -19176, 0, -18000, 0 } typeMap:bin { "0102" } - links:intvector { 79, 97, 100, 182 } - } //Z#182 - /* America/Pangnirtung */ :table { - trans:intvector { -1546300800, -880221600, -765399600, -147902400, -131572800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } - typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600, -14400, 7200 } - typeMap:bin { "05060507050605060506050605060506050605060506050605060506050605060506050403040304030403040102030403040304030403040304030403" } - finalRule { "Canada" } - finalRaw:int { -18000 } - finalYear:int { 2008 } + links:intvector { 79, 97, 101, 183 } } //Z#183 + /* America/Pangnirtung */ :int { 142 } //Z#184 /* America/Paramaribo */ :table { trans:intvector { -1861906760, -1104524348, -765317964, 465449400 } typeOffsets:intvector { -13240, 0, -13252, 0, -13236, 0, -12600, 0, -10800, 0 } typeMap:bin { "01020304" } - } //Z#184 + } //Z#185 /* America/Phoenix */ :table { transPre32:intvector { -1, 1577323696 } trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 } typeOffsets:intvector { -26898, 0, -25200, 0, -25200, 3600 } typeMap:bin { "0102010201020102010201" } - links:intvector { 103, 185, 548, 620 } - } //Z#185 + links:intvector { 104, 186, 549, 621 } + } //Z#186 /* America/Port-au-Prince */ :table { transPre32:intvector { -1, 1770463056 } trans:intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1489302000, 1509861600 } @@ -907,76 +886,68 @@ zoneinfo64:table(nofallback) { finalRule { "Haiti" } finalRaw:int { -18000 } finalYear:int { 2018 } - } //Z#186 - /* America/Port_of_Spain */ :int { 190 } //Z#187 - /* America/Porto_Acre */ :int { 197 } //Z#188 + } //Z#187 + /* America/Port_of_Spain */ :int { 191 } //Z#188 + /* America/Porto_Acre */ :int { 198 } //Z#189 /* America/Porto_Velho */ :table { trans:intvector { -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 } typeOffsets:intvector { -15336, 0, -14400, 0, -14400, 3600 } typeMap:bin { "0102010201020102010201020102010201020102010201020102010201" } - } //Z#189 + } //Z#190 /* America/Puerto_Rico */ :table { transPre32:intvector { -1, 2061931961 } trans:intvector { -873057600, -765399600 } typeOffsets:intvector { -15865, 0, -14400, 0, -14400, 3600 } typeMap:bin { "010201" } - links:intvector { 61, 62, 77, 86, 105, 111, 123, 124, 148, 153, 157, 171, 187, 190, 207, 209, 210, 211, 212, 219, 221, 550 } - } //Z#190 + links:intvector { 61, 62, 77, 86, 106, 112, 124, 125, 149, 154, 158, 172, 188, 191, 208, 210, 211, 212, 213, 220, 222, 551 } + } //Z#191 /* America/Punta_Arenas */ :table { transPre32:intvector { -1, 1770462716 } trans:intvector { -1892661435, -1688410800, -1619205435, -1593806400, -1335986235, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -736632000, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 } typeOffsets:intvector { -17020, 0, -18000, 0, -18000, 3600, -16965, 0, -14400, 0, -14400, 3600, -10800, 0 } typeMap:bin { "030103040302010201020102010201040104020104050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" } - } //Z#191 - /* America/Rainy_River */ :table { - transPre32:intvector { -1, 1928234792 } - trans:intvector { -1632067200, -1615136400, -923248800, -765392400, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } - typeOffsets:intvector { -22696, 0, -21600, 0, -21600, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - finalRule { "Canada" } - finalRaw:int { -21600 } - finalYear:int { 2008 } } //Z#192 + /* America/Rainy_River */ :int { 224 } //Z#193 /* America/Rankin_Inlet */ :table { - trans:intvector { -410227200, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } - typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 } - typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201020102040201020102010201020102010201" } + trans:intvector { -410227200, 73468800, 89190000, 104918400, 120639600, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } + typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -18000, 0 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030201020102010201020102010201" } finalRule { "Canada" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#193 + } //Z#194 /* America/Recife */ :table { trans:intvector { -1767217224, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 971575200, 1003028400, 1013911200 } typeOffsets:intvector { -8376, 0, -10800, 0, -10800, 3600 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201" } - } //Z#194 + } //Z#195 /* America/Regina */ :table { trans:intvector { -2030202084, -1632063600, -1615132800, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 } typeOffsets:intvector { -25116, 0, -25200, 0, -25200, 3600, -21600, 0 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" } - links:intvector { 195, 387, 392 } - } //Z#195 + links:intvector { 196, 388, 393 } + } //Z#196 /* America/Resolute */ :table { - trans:intvector { -704937600, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } - typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 } - typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201020102040201020102010201020102040201" } + trans:intvector { -704937600, 73468800, 89190000, 104918400, 120639600, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } + typeOffsets:intvector { 0, 0, -21600, 0, -21600, 3600, -18000, 0 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030201020102010201020102030201" } finalRule { "Canada" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#196 + } //Z#197 /* America/Rio_Branco */ :table { trans:intvector { -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 1214283600, 1384056000 } typeOffsets:intvector { -16272, 0, -18000, 0, -18000, 3600, -14400, 0 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010301" } - links:intvector { 188, 197, 375 } - } //Z#197 - /* America/Rosario */ :int { 67 } //Z#198 - /* America/Santa_Isabel */ :int { 217 } //Z#199 + links:intvector { 189, 198, 376 } + } //Z#198 + /* America/Rosario */ :int { 67 } //Z#199 + /* America/Santa_Isabel */ :int { 218 } //Z#200 /* America/Santarem */ :table { trans:intvector { -1767212472, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 1214280000 } typeOffsets:intvector { -13128, 0, -14400, 0, -14400, 3600, -10800, 0 } typeMap:bin { "010201020102010201020102010201020102010201020102010201020103" } - } //Z#200 + } //Z#201 /* America/Santiago */ :table { trans:intvector { -1892661435, -1688410800, -1619205435, -1593806400, -1335986235, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736635600, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1494730800, 1502596800, 1526180400, 1534046400, 1554606000, 1567915200, 1586055600, 1599364800, 1617505200, 1630814400, 1648954800, 1662868800, 1680404400, 1693713600 } typeOffsets:intvector { -16965, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 } @@ -984,20 +955,20 @@ zoneinfo64:table(nofallback) { finalRule { "Chile" } finalRaw:int { -14400 } finalYear:int { 2024 } - links:intvector { 201, 394 } - } //Z#201 + links:intvector { 202, 395 } + } //Z#202 /* America/Santo_Domingo */ :table { transPre32:intvector { -1, 1770462472 } trans:intvector { -1159773600, -100119600, -89668800, -5770800, 4422600, 25678800, 33193800, 57733200, 64816200, 89182800, 96438600, 120632400, 127974600, 152082000, 972799200, 975823200 } typeOffsets:intvector { -16776, 0, -18000, 0, -18000, 1800, -18000, 3600, -16800, 0, -14400, 0 } typeMap:bin { "0401030102010201020102010201050105" } - } //Z#202 + } //Z#203 /* America/Sao_Paulo */ :table { trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800 } typeOffsets:intvector { -11188, 0, -10800, 0, -10800, 3600 } typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 203, 373, 377 } - } //Z#203 + links:intvector { 204, 374, 378 } + } //Z#204 /* America/Scoresbysund */ :table { trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 } @@ -1005,8 +976,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { -3600 } finalYear:int { 1997 } - } //Z#204 - /* America/Shiprock */ :int { 109 } //Z#205 + } //Z#205 + /* America/Shiprock */ :int { 110 } //Z#206 /* America/Sitka */ :table { transPre32:intvector { -1, 1069743569, -1, 2106012569 } trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 } @@ -1015,8 +986,8 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2008 } - } //Z#206 - /* America/St_Barthelemy */ :int { 190 } //Z#207 + } //Z#207 + /* America/St_Barthelemy */ :int { 191 } //Z#208 /* America/St_Johns */ :table { trans:intvector { -1664130548, -1650137348, -1632076148, -1615145348, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 1099189860, 1112499060, 1130639460, 1143948660, 1162089060, 1173583860, 1194143460, 1205033460, 1225593060, 1236483060, 1257042660, 1268537460, 1289097060, 1299987060, 1320553800, 1331443800, 1352003400 } typeOffsets:intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 } @@ -1024,22 +995,22 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -12600 } finalYear:int { 2013 } - links:intvector { 208, 381, 390 } - } //Z#208 - /* America/St_Kitts */ :int { 190 } //Z#209 - /* America/St_Lucia */ :int { 190 } //Z#210 - /* America/St_Thomas */ :int { 190 } //Z#211 - /* America/St_Vincent */ :int { 190 } //Z#212 + links:intvector { 209, 382, 391 } + } //Z#209 + /* America/St_Kitts */ :int { 191 } //Z#210 + /* America/St_Lucia */ :int { 191 } //Z#211 + /* America/St_Thomas */ :int { 191 } //Z#212 + /* America/St_Vincent */ :int { 191 } //Z#213 /* America/Swift_Current */ :table { trans:intvector { -2030201320, -1632063600, -1615132800, -880210800, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 } typeOffsets:intvector { -25880, 0, -25200, 0, -25200, 3600, -21600, 0 } typeMap:bin { "01020102010201020102010201020102010201020103" } - } //Z#213 + } //Z#214 /* America/Tegucigalpa */ :table { trans:intvector { -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1154926800 } typeOffsets:intvector { -20932, 0, -21600, 0, -21600, 3600 } typeMap:bin { "01020102010201" } - } //Z#214 + } //Z#215 /* America/Thule */ :table { trans:intvector { -1686079492, 670399200, 686120400, 701848800, 717570000, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 } typeOffsets:intvector { -16508, 0, -14400, 0, -14400, 3600 } @@ -1047,25 +1018,17 @@ zoneinfo64:table(nofallback) { finalRule { "Thule" } finalRaw:int { -14400 } finalYear:int { 2008 } - } //Z#215 - /* America/Thunder_Bay */ :table { - transPre32:intvector { -1, 1928233516 } - trans:intvector { -1893434400, -880218000, -765396000, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } - typeOffsets:intvector { -21420, 0, -21600, 0, -18000, 0, -18000, 3600 } - typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } - finalRule { "Canada" } - finalRaw:int { -18000 } - finalYear:int { 2008 } } //Z#216 + /* America/Thunder_Bay */ :int { 219 } //Z#217 /* America/Tijuana */ :table { - trans:intvector { -1514736000, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -761677200, -686073600, -661539600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 } + trans:intvector { -1514739600, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -761677200, -686073600, -661539600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 } typeOffsets:intvector { -28084, 0, -28800, 0, -28800, 3600, -25200, 0 } typeMap:bin { "03010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "US" } finalRaw:int { -28800 } finalYear:int { 2011 } - links:intvector { 115, 199, 217, 539 } - } //Z#217 + links:intvector { 116, 200, 218, 540 } + } //Z#218 /* America/Toronto */ :table { transPre32:intvector { -1, 1928231148 } trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } @@ -1074,9 +1037,9 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -18000 } finalYear:int { 2008 } - links:intvector { 170, 172, 218, 388 } - } //Z#218 - /* America/Tortola */ :int { 190 } //Z#219 + links:intvector { 171, 173, 175, 217, 219, 389 } + } //Z#219 + /* America/Tortola */ :int { 191 } //Z#220 /* America/Vancouver */ :table { transPre32:intvector { -1, 1581086444 } trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -733935600, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 } @@ -1085,16 +1048,16 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -28800 } finalYear:int { 2008 } - links:intvector { 220, 391 } - } //Z#220 - /* America/Virgin */ :int { 190 } //Z#221 + links:intvector { 221, 392 } + } //Z#221 + /* America/Virgin */ :int { 191 } //Z#222 /* America/Whitehorse */ :table { transPre32:intvector { -1, 2105969308 } - trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, -81961200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800, 1446368400, 1457863200, 1478422800, 1489312800, 1509872400, 1520762400, 1541322000, 1552212000, 1572771600, 1583661600, 1604214000 } + trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, -121273200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800, 1446368400, 1457863200, 1478422800, 1489312800, 1509872400, 1520762400, 1541322000, 1552212000, 1572771600, 1583661600, 1604214000 } typeOffsets:intvector { -32412, 0, -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600, -25200, 0 } typeMap:bin { "0102010201020103010405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" } - links:intvector { 222, 393 } - } //Z#222 + links:intvector { 223, 394 } + } //Z#223 /* America/Winnipeg */ :table { transPre32:intvector { -1, 1692709012 } trans:intvector { -1694368800, -1681671600, -1632067200, -1615136400, -1029686400, -1018198800, -880214400, -765392400, -746035200, -732733200, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620755200, -607626000, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -292438800, -210787200, -198090000, -116438400, -100108800, -84384000, -68659200, -52934400, -37209600, -21484800, -5760000, 9964800, 25689600, 41414400, 57744000, 73468800, 89193600, 104918400, 120643200, 136368000, 152092800, 167817600, 183542400, 199267200, 215596800, 230716800, 247046400, 262771200, 278496000, 294220800, 309945600, 325670400, 341395200, 357120000, 372844800, 388569600, 404899200, 420019200, 436348800, 452073600, 467798400, 483523200, 499248000, 514972800, 530697600, 544608000, 562147200, 576057600, 594201600, 607507200, 625651200, 638956800, 657100800, 671011200, 688550400, 702460800, 720000000, 733910400, 752054400, 765360000, 783504000, 796809600, 814953600, 828864000, 846403200, 860313600, 877852800, 891763200, 909302400, 923212800, 941356800, 954662400, 972806400, 986112000, 1004256000, 1018166400, 1035705600, 1049616000, 1067155200, 1081065600, 1099209600, 1112515200, 1130659200, 1143964800, 1162105200, 1173600000, 1194159600 } @@ -1103,8 +1066,8 @@ zoneinfo64:table(nofallback) { finalRule { "Canada" } finalRaw:int { -21600 } finalYear:int { 2008 } - links:intvector { 223, 386 } - } //Z#223 + links:intvector { 193, 224, 387 } + } //Z#224 /* America/Yakutat */ :table { transPre32:intvector { -1, 1069743569, -1, 2106013631 } trans:intvector { -880203600, -765381600, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 152100000, 162385200, 183549600, 199278000, 215604000, 230727600, 247053600, 262782000, 278503200, 294231600, 309952800, 325681200, 341402400, 357130800, 372852000, 388580400, 404906400, 420030000, 436356000, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 } @@ -1113,26 +1076,19 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -32400 } finalYear:int { 2008 } - } //Z#224 - /* America/Yellowknife */ :table { - trans:intvector { -1104537600, -880210800, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } - typeOffsets:intvector { 0, 0, -25200, 0, -25200, 3600, -25200, 7200 } - typeMap:bin { "01020103010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - finalRule { "Canada" } - finalRaw:int { -25200 } - finalYear:int { 2008 } } //Z#225 + /* America/Yellowknife */ :int { 113 } //Z#226 /* Antarctica/Casey */ :table { trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860 } typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 } typeMap:bin { "010201020102010201020102" } - } //Z#226 + } //Z#227 /* Antarctica/Davis */ :table { trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 } typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 } typeMap:bin { "02000201020102" } - } //Z#227 - /* Antarctica/DumontDUrville */ :int { 586 } //Z#228 + } //Z#228 + /* Antarctica/DumontDUrville */ :int { 587 } //Z#229 /* Antarctica/Macquarie */ :table { transPre32:intvector { -1, 2080708096 } trans:intvector { -1680508800, -1665388800, -1601719200, -687052800, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000, 1238860800, 1254585600, 1301760000, 1317484800 } @@ -1141,25 +1097,25 @@ zoneinfo64:table(nofallback) { finalRule { "AT" } finalRaw:int { 36000 } finalYear:int { 2012 } - } //Z#229 + } //Z#230 /* Antarctica/Mawson */ :table { trans:intvector { -501206400, 1255809600 } typeOffsets:intvector { 0, 0, 18000, 0, 21600, 0 } typeMap:bin { "0201" } - } //Z#230 - /* Antarctica/McMurdo */ :int { 554 } //Z#231 + } //Z#231 + /* Antarctica/McMurdo */ :int { 555 } //Z#232 /* Antarctica/Palmer */ :table { trans:intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 } typeOffsets:intvector { 0, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "02010201020102010201030403010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" } - } //Z#232 + } //Z#233 /* Antarctica/Rothera */ :table { trans:intvector { 218246400 } typeOffsets:intvector { 0, 0, -10800, 0 } typeMap:bin { "01" } - } //Z#233 - /* Antarctica/South_Pole */ :int { 554 } //Z#234 - /* Antarctica/Syowa */ :int { 310 } //Z#235 + } //Z#234 + /* Antarctica/South_Pole */ :int { 555 } //Z#235 + /* Antarctica/Syowa */ :int { 311 } //Z#236 /* Antarctica/Troll */ :table { trans:intvector { 1111885200, 1130634000 } typeOffsets:intvector { 0, 0, 0, 7200 } @@ -1167,73 +1123,70 @@ zoneinfo64:table(nofallback) { finalRule { "Troll" } finalRaw:int { 0 } finalYear:int { 2006 } - } //Z#236 - /* Antarctica/Vostok */ :int { 330 } //Z#237 - /* Arctic/Longyearbyen */ :int { 446 } //Z#238 - /* Asia/Aden */ :int { 310 } //Z#239 + } //Z#237 + /* Antarctica/Vostok */ :int { 331 } //Z#238 + /* Arctic/Longyearbyen */ :int { 447 } //Z#239 + /* Asia/Aden */ :int { 311 } //Z#240 /* Asia/Almaty */ :table { trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 } typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 } typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" } - } //Z#240 + } //Z#241 /* Asia/Amman */ :table { trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400, 1427407200, 1446156000, 1459461600, 1477605600, 1490911200, 1509055200, 1522360800, 1540504800, 1553810400, 1571954400, 1585260000, 1604008800, 1616709600, 1635458400, 1645740000, 1666908000 } - typeOffsets:intvector { 8624, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - finalRule { "Jordan" } - finalRaw:int { 7200 } - finalYear:int { 2023 } - } //Z#241 + typeOffsets:intvector { 8624, 0, 7200, 0, 7200, 3600, 10800, 0 } + typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" } + } //Z#242 /* Asia/Anadyr */ :table { trans:intvector { -1441194596, -1247572800, 354884400, 370692000, 386420400, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 } typeOffsets:intvector { 42596, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600, 46800, 0, 46800, 3600 } typeMap:bin { "03050605040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" } - } //Z#242 + } //Z#243 /* Asia/Aqtau */ :table { trans:intvector { -1441164064, -1247544000, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 } typeOffsets:intvector { 12064, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "0103050403040304030403040304030403040304030201030403040304010201020102010201020102010201020102010203" } - } //Z#243 + } //Z#244 /* Asia/Aqtobe */ :table { trans:intvector { -1441165720, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 } typeOffsets:intvector { 13720, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" } - } //Z#244 + } //Z#245 /* Asia/Ashgabat */ :table { trans:intvector { -1441166012, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000 } typeOffsets:intvector { 14012, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103" } - links:intvector { 245, 246 } - } //Z#245 - /* Asia/Ashkhabad */ :int { 245 } //Z#246 + links:intvector { 246, 247 } + } //Z#246 + /* Asia/Ashkhabad */ :int { 246 } //Z#247 /* Asia/Atyrau */ :table { trans:intvector { -1441164464, -1247540400, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 } typeOffsets:intvector { 12464, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "0104060504050405040504050405040504050405040302040504050405040504050405040504030203020302030203020304" } - } //Z#247 + } //Z#248 /* Asia/Baghdad */ :table { transPre32:intvector { -1, 1770435036 } trans:intvector { -1641005856, 389048400, 402264000, 417906000, 433800000, 449614800, 465422400, 481150800, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670464000, 686275200, 702086400, 717897600, 733622400, 749433600, 765158400, 780969600, 796694400, 812505600, 828316800, 844128000, 859852800, 875664000, 891388800, 907200000, 922924800, 938736000, 954547200, 970358400, 986083200, 1001894400, 1017619200, 1033430400, 1049155200, 1064966400, 1080777600, 1096588800, 1112313600, 1128124800, 1143849600, 1159660800, 1175385600, 1191196800 } typeOffsets:intvector { 10660, 0, 10656, 0, 10800, 0, 10800, 3600 } typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } - } //Z#248 - /* Asia/Bahrain */ :int { 306 } //Z#249 + } //Z#249 + /* Asia/Bahrain */ :int { 307 } //Z#250 /* Asia/Baku */ :table { trans:intvector { -1441163964, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 828234000, 846378000, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1319932800, 1332633600, 1351382400, 1364688000, 1382832000, 1396137600, 1414281600, 1427587200, 1445731200 } typeOffsets:intvector { 11964, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "010304030403040304030403040304030403040304030201020304030403040304030403040304030403040304030403040304030403040304030403040304030403" } - } //Z#250 + } //Z#251 /* Asia/Bangkok */ :table { trans:intvector { -1570084924 } typeOffsets:intvector { 24124, 0, 25200, 0 } typeMap:bin { "01" } - links:intvector { 251, 303, 332, 519 } - } //Z#251 + links:intvector { 252, 304, 333, 520 } + } //Z#252 /* Asia/Barnaul */ :table { trans:intvector { -1579844100, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 801590400, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1459022400 } typeOffsets:intvector { 20100, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040201020102010201020102010201020102010201020102010201020102010201030103" } - } //Z#252 + } //Z#253 /* Asia/Beirut */ :table { transPre32:intvector { -1, 1454817976 } trans:intvector { -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1473645600, -1460948400, -399866400, -386650800, -368330400, -355114800, -336794400, -323578800, -305172000, -291956400, -273636000, -260420400, 78012000, 86734800, 105055200, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 212965200, 231285600, 244501200, 262735200, 275950800, 452210400, 466722000, 483746400, 498258000, 515282400, 529794000, 546818400, 561330000, 581119200, 592952400, 610754400, 624488400, 641512800, 656024400, 673048800, 687560400, 704671200, 718146000, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 906843600, 922572000, 941317200 } @@ -1242,64 +1195,61 @@ zoneinfo64:table(nofallback) { finalRule { "Lebanon" } finalRaw:int { 7200 } finalYear:int { 2000 } - } //Z#253 + } //Z#254 /* Asia/Bishkek */ :table { trans:intvector { -1441169904, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683582400, 703018800, 717530400, 734468400, 748980000, 765918000, 780429600, 797367600, 811879200, 828817200, 843933600, 859671000, 877811400, 891120600, 909261000, 922570200, 941315400, 954019800, 972765000, 985469400, 1004214600, 1017523800, 1035664200, 1048973400, 1067113800, 1080423000, 1099168200, 1111872600, 1123783200 } typeOffsets:intvector { 17904, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020102010201020102010201020102010201020102010201020102010203" } - } //Z#254 - /* Asia/Brunei */ :int { 290 } //Z#255 - /* Asia/Calcutta */ :int { 287 } //Z#256 + } //Z#255 + /* Asia/Brunei */ :int { 291 } //Z#256 + /* Asia/Calcutta */ :int { 288 } //Z#257 /* Asia/Chita */ :table { trans:intvector { -1579419232, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800, 1459015200 } typeOffsets:intvector { 27232, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 } typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" } - } //Z#257 + } //Z#258 /* Asia/Choibalsan */ :table { trans:intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200, 1427479200, 1443193200, 1458928800, 1474642800 } typeOffsets:intvector { 27480, 0, 25200, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 } typeMap:bin { "010205040504050405040504050405040504050405040504050405040504050405040504050405040504050405040203020302" } - } //Z#258 - /* Asia/Chongqing */ :int { 315 } //Z#259 - /* Asia/Chungking */ :int { 315 } //Z#260 + } //Z#259 + /* Asia/Chongqing */ :int { 316 } //Z#260 + /* Asia/Chungking */ :int { 316 } //Z#261 /* Asia/Colombo */ :table { transPre32:intvector { -1, 1454807332 } trans:intvector { -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 } typeOffsets:intvector { 19164, 0, 19172, 0, 19800, 0, 19800, 1800, 19800, 3600, 21600, 0, 23400, 0 } typeMap:bin { "0102030402060502" } - } //Z#261 - /* Asia/Dacca */ :int { 264 } //Z#262 + } //Z#262 + /* Asia/Dacca */ :int { 265 } //Z#263 /* Asia/Damascus */ :table { - trans:intvector { -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1225486800, 1238104800, 1256850000, 1270159200, 1288299600, 1301608800, 1319749200, 1333058400, 1351198800 } - typeOffsets:intvector { 8712, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - finalRule { "Syria" } - finalRaw:int { 7200 } - finalYear:int { 2013 } - } //Z#263 + trans:intvector { -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1225486800, 1238104800, 1256850000, 1270159200, 1288299600, 1301608800, 1319749200, 1333058400, 1351198800, 1364508000, 1382648400, 1395957600, 1414702800, 1427407200, 1446152400, 1458856800, 1477602000, 1490911200, 1509051600, 1522360800, 1540501200, 1553810400, 1571950800, 1585260000, 1604005200, 1616709600, 1635454800, 1648159200, 1666904400 } + typeOffsets:intvector { 8712, 0, 7200, 0, 7200, 3600, 10800, 0 } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" } + } //Z#264 /* Asia/Dhaka */ :table { transPre32:intvector { -1, 1770423996 } trans:intvector { -891582800, -872058600, -862637400, -576138600, 1245430800, 1262278800 } typeOffsets:intvector { 21700, 0, 19800, 0, 21200, 0, 21600, 0, 21600, 3600, 23400, 0 } typeMap:bin { "02050105030403" } - links:intvector { 262, 264, 374 } - } //Z#264 + links:intvector { 263, 265, 375 } + } //Z#265 /* Asia/Dili */ :table { trans:intvector { -1830414140, -879152400, 199897200, 969120000 } typeOffsets:intvector { 30140, 0, 28800, 0, 32400, 0 } typeMap:bin { "01020102" } - } //Z#265 + } //Z#266 /* Asia/Dubai */ :table { trans:intvector { -1577936472 } typeOffsets:intvector { 13272, 0, 14400, 0 } typeMap:bin { "01" } - links:intvector { 266, 297, 523, 527 } - } //Z#266 + links:intvector { 267, 298, 524, 528 } + } //Z#267 /* Asia/Dushanbe */ :table { trans:intvector { -1441168512, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 684363600 } typeOffsets:intvector { 16512, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 } typeMap:bin { "010304030403040304030403040304030403040304030201" } - } //Z#267 + } //Z#268 /* Asia/Famagusta */ :table { trans:intvector { -1518920148, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1473282000, 1509238800, 1521939600, 1540688400 } typeOffsets:intvector { 8148, 0, 7200, 0, 7200, 3600, 10800, 0 } @@ -1307,59 +1257,61 @@ zoneinfo64:table(nofallback) { finalRule { "EUAsia" } finalRaw:int { 7200 } finalYear:int { 2019 } - } //Z#268 + } //Z#269 /* Asia/Gaza */ :table { transPre32:intvector { -1, 2109557424 } - trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666908000 } + trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } + transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 } typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } - finalYear:int { 2023 } - } //Z#269 - /* Asia/Harbin */ :int { 315 } //Z#270 + finalYear:int { 2088 } + } //Z#270 + /* Asia/Harbin */ :int { 316 } //Z#271 /* Asia/Hebron */ :table { transPre32:intvector { -1, 2109557273 } - trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666908000 } + trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 } + transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 } typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 } - typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } + typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } finalRule { "Palestine" } finalRaw:int { 7200 } - finalYear:int { 2023 } - } //Z#271 + finalYear:int { 2088 } + } //Z#272 /* Asia/Ho_Chi_Minh */ :table { trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 } typeOffsets:intvector { 25590, 0, 25200, 0, 28800, 0, 32400, 0 } typeMap:bin { "0102030102010201" } - links:intvector { 272, 311, 633 } - } //Z#272 + links:intvector { 273, 312, 634 } + } //Z#273 /* Asia/Hong_Kong */ :table { trans:intvector { -2056690800, -900910800, -891579600, -884248200, -761209200, -747907200, -728541000, -717049800, -697091400, -683785800, -668061000, -654755400, -636611400, -623305800, -605161800, -591856200, -573712200, -559801800, -541657800, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 } typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 1800, 28800, 3600, 32400, 0 } typeMap:bin { "010302040103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301" } - links:intvector { 273, 513 } - } //Z#273 + links:intvector { 274, 514 } + } //Z#274 /* Asia/Hovd */ :table { trans:intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800, 1427482800, 1443196800, 1458932400, 1474646400 } typeOffsets:intvector { 21996, 0, 21600, 0, 25200, 0, 25200, 3600 } typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } - } //Z#274 + } //Z#275 /* Asia/Irkutsk */ :table { trans:intvector { -1575874625, -1247554800, 354902400, 370710000, 386438400, 402246000, 417974400, 433782000, 449596800, 465328800, 481053600, 496778400, 512503200, 528228000, 543952800, 559677600, 575402400, 591127200, 606852000, 622576800, 638301600, 654631200, 670356000, 686084400, 695761200, 701805600, 717530400, 733255200, 748980000, 764704800, 780429600, 796154400, 811879200, 828208800, 846352800, 859658400, 877802400, 891108000, 909252000, 922557600, 941306400, 954007200, 972756000, 985456800, 1004205600, 1017511200, 1035655200, 1048960800, 1067104800, 1080410400, 1099159200, 1111860000, 1130608800, 1143309600, 1162058400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200, 1256407200, 1269712800, 1288461600, 1301162400, 1414256400 } typeOffsets:intvector { 25025, 0, 25200, 0, 25200, 3600, 28800, 0, 28800, 3600, 32400, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#275 - /* Asia/Istanbul */ :int { 459 } //Z#276 + } //Z#276 + /* Asia/Istanbul */ :int { 460 } //Z#277 /* Asia/Jakarta */ :table { trans:intvector { -1451719200, -1172906400, -876641400, -766054800, -683883000, -620812800, -189415800 } typeOffsets:intvector { 25632, 0, 25200, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 } typeMap:bin { "02030503040301" } - } //Z#277 + } //Z#278 /* Asia/Jayapura */ :table { trans:intvector { -1172913768, -799491600, -189423000 } typeOffsets:intvector { 33768, 0, 32400, 0, 34200, 0 } typeMap:bin { "010201" } - } //Z#278 + } //Z#279 /* Asia/Jerusalem */ :table { transPre32:intvector { -1, 1454818042 } trans:intvector { -1641003640, -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -681955200, -673228800, -667958400, -652320000, -636422400, -622080000, -608947200, -591840000, -572486400, -558576000, -542851200, -527731200, -514425600, -490838400, -482976000, -459388800, -451526400, -428544000, -418262400, -400118400, -387417600, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1382828400 } @@ -1368,83 +1320,83 @@ zoneinfo64:table(nofallback) { finalRule { "Zion" } finalRaw:int { 7200 } finalYear:int { 2014 } - links:intvector { 279, 322, 529 } - } //Z#279 + links:intvector { 280, 323, 530 } + } //Z#280 /* Asia/Kabul */ :table { transPre32:intvector { -1, 1770429088 } trans:intvector { -788932800 } typeOffsets:intvector { 16608, 0, 14400, 0, 16200, 0 } typeMap:bin { "0102" } - } //Z#280 + } //Z#281 /* Asia/Kamchatka */ :table { trans:intvector { -1487759676, -1247569200, 354888000, 370695600, 386424000, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701791200, 717516000, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400, 859644000, 877788000, 891093600, 909237600, 922543200, 941292000, 953992800, 972741600, 985442400, 1004191200, 1017496800, 1035640800, 1048946400, 1067090400, 1080396000, 1099144800, 1111845600, 1130594400, 1143295200, 1162044000, 1174744800, 1193493600, 1206799200, 1224943200, 1238248800, 1256392800, 1269698400, 1288450800, 1301151600 } typeOffsets:intvector { 38076, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" } - } //Z#281 + } //Z#282 /* Asia/Karachi */ :table { trans:intvector { -1988166492, -862637400, -764145000, -576135000, 1018119600, 1033840800, 1212260400, 1225476000, 1239735600, 1257012000 } typeOffsets:intvector { 16092, 0, 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 } typeMap:bin { "03040301020102010201" } - links:intvector { 282, 547 } - } //Z#282 - /* Asia/Kashgar */ :int { 330 } //Z#283 + links:intvector { 283, 548 } + } //Z#283 + /* Asia/Kashgar */ :int { 331 } //Z#284 /* Asia/Kathmandu */ :table { trans:intvector { -1577943676, 504901800 } typeOffsets:intvector { 20476, 0, 19800, 0, 20700, 0 } typeMap:bin { "0102" } - links:intvector { 284, 285 } - } //Z#284 - /* Asia/Katmandu */ :int { 284 } //Z#285 + links:intvector { 285, 286 } + } //Z#285 + /* Asia/Katmandu */ :int { 285 } //Z#286 /* Asia/Khandyga */ :table { trans:intvector { -1579424533, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1072882800, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1315832400, 1414252800 } typeOffsets:intvector { 32533, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403050605060506050605060506050605070503" } - } //Z#286 + } //Z#287 /* Asia/Kolkata */ :table { transPre32:intvector { -1, 649730088, -1, 1139272496 } trans:intvector { -2019705670, -891581400, -872058600, -862637400, -764145000 } typeOffsets:intvector { 21208, 0, 19270, 0, 19800, 0, 19800, 3600, 21200, 0 } typeMap:bin { "04010203020302" } - links:intvector { 256, 287, 515 } - } //Z#287 + links:intvector { 257, 288, 516 } + } //Z#288 /* Asia/Krasnoyarsk */ :table { trans:intvector { -1577513486, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288465200, 1301166000, 1414260000 } typeOffsets:intvector { 22286, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600, 28800, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#288 - /* Asia/Kuala_Lumpur */ :int { 316 } //Z#289 + } //Z#289 + /* Asia/Kuala_Lumpur */ :int { 317 } //Z#290 /* Asia/Kuching */ :table { trans:intvector { -1383463280, -1167636600, -1082448000, -1074586800, -1050825600, -1042964400, -1019289600, -1011428400, -987753600, -979892400, -956217600, -948356400, -924595200, -916734000, -893059200, -885198000, -879667200, -767005200 } typeOffsets:intvector { 26480, 0, 27000, 0, 28800, 0, 28800, 1200, 32400, 0 } typeMap:bin { "010203020302030203020302030203020402" } - links:intvector { 255, 290 } - } //Z#290 - /* Asia/Kuwait */ :int { 310 } //Z#291 - /* Asia/Macao */ :int { 293 } //Z#292 + links:intvector { 256, 291 } + } //Z#291 + /* Asia/Kuwait */ :int { 311 } //Z#292 + /* Asia/Macao */ :int { 294 } //Z#293 /* Asia/Macau */ :table { trans:intvector { -2056692850, -884509200, -873280800, -855918000, -841744800, -828529200, -765363600, -747046800, -733827600, -716461200, -697021200, -683715600, -667990800, -654771600, -636627600, -623322000, -605178000, -591872400, -573642000, -559818000, -541674000, -528368400, -510224400, -498128400, -478774800, -466678800, -446720400, -435229200, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132820200, -117088200, -101370600, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 } typeOffsets:intvector { 27250, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 } typeMap:bin { "0103040304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 292, 293 } - } //Z#293 + links:intvector { 293, 294 } + } //Z#294 /* Asia/Magadan */ :table { trans:intvector { -1441188192, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600, 1461427200 } typeOffsets:intvector { 36192, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 } typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050103" } - } //Z#294 + } //Z#295 /* Asia/Makassar */ :table { trans:intvector { -1172908656, -880272000, -766054800 } typeOffsets:intvector { 28656, 0, 28800, 0, 32400, 0 } typeMap:bin { "010201" } - links:intvector { 295, 327 } - } //Z#295 + links:intvector { 296, 328 } + } //Z#296 /* Asia/Manila */ :table { transPre32:intvector { -1, 350346256, -1, 2065645456 } trans:intvector { -1046678400, -1038733200, -873273600, -794221200, -496224000, -489315600, 259344000, 275151600 } typeOffsets:intvector { -57360, 0, 28800, 0, 28800, 3600, 29040, 0, 32400, 0 } typeMap:bin { "03010201040102010201" } - } //Z#296 - /* Asia/Muscat */ :int { 266 } //Z#297 + } //Z#297 + /* Asia/Muscat */ :int { 267 } //Z#298 /* Asia/Nicosia */ :table { trans:intvector { -1518920008, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600 } typeOffsets:intvector { 8008, 0, 7200, 0, 7200, 3600 } @@ -1452,187 +1404,187 @@ zoneinfo64:table(nofallback) { finalRule { "EUAsia" } finalRaw:int { 7200 } finalYear:int { 2000 } - links:intvector { 298, 475 } - } //Z#298 + links:intvector { 299, 476 } + } //Z#299 /* Asia/Novokuznetsk */ :table { trans:intvector { -1441259328, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1035658800, 1048964400, 1067108400, 1080414000, 1099162800, 1111863600, 1130612400, 1143313200, 1162062000, 1174762800, 1193511600, 1206817200, 1224961200, 1238266800, 1256410800, 1269716400, 1288468800, 1301169600 } typeOffsets:intvector { 20928, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040304030403040304030403020103" } - } //Z#299 + } //Z#300 /* Asia/Novosibirsk */ :table { trans:intvector { -1579476700, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 738086400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1469304000 } typeOffsets:intvector { 19900, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304020102010201020102010201020102010201020102010201020102010201020102010201030103" } - } //Z#300 + } //Z#301 /* Asia/Omsk */ :table { trans:intvector { -1582088010, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600 } typeOffsets:intvector { 17610, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600, 25200, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#301 + } //Z#302 /* Asia/Oral */ :table { trans:intvector { -1441164324, -1247540400, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 670370400, 686095200, 695772000, 701816400, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600 } typeOffsets:intvector { 12324, 0, 10800, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "010405060504050405040504050405040504030203020302040302030203020302030203020302030203020302030203020304" } - } //Z#302 - /* Asia/Phnom_Penh */ :int { 251 } //Z#303 + } //Z#303 + /* Asia/Phnom_Penh */ :int { 252 } //Z#304 /* Asia/Pontianak */ :table { trans:intvector { -1172906240, -881220600, -766054800, -683883000, -620812800, -189415800, 567964800 } typeOffsets:intvector { 26240, 0, 25200, 0, 27000, 0, 28800, 0, 32400, 0 } typeMap:bin { "02040203020301" } - } //Z#304 + } //Z#305 /* Asia/Pyongyang */ :table { trans:intvector { -1948782180, -1830414600, 1439564400, 1525446000 } typeOffsets:intvector { 30180, 0, 30600, 0, 32400, 0 } typeMap:bin { "01020102" } - } //Z#305 + } //Z#306 /* Asia/Qatar */ :table { trans:intvector { -1577935568, 76190400 } typeOffsets:intvector { 12368, 0, 10800, 0, 14400, 0 } typeMap:bin { "0201" } - links:intvector { 249, 306 } - } //Z#306 + links:intvector { 250, 307 } + } //Z#307 /* Asia/Qostanay */ :table { trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 } typeOffsets:intvector { 15268, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030405" } - } //Z#307 + } //Z#308 /* Asia/Qyzylorda */ :table { trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1545328800 } typeOffsets:intvector { 15712, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "01030405040304030403040304030403040304030403020305040304030403040304030403040304030403040304030403040503" } - } //Z#308 - /* Asia/Rangoon */ :int { 335 } //Z#309 + } //Z#309 + /* Asia/Rangoon */ :int { 336 } //Z#310 /* Asia/Riyadh */ :table { trans:intvector { -719636812 } typeOffsets:intvector { 11212, 0, 10800, 0 } typeMap:bin { "01" } - links:intvector { 235, 239, 291, 310 } - } //Z#310 - /* Asia/Saigon */ :int { 272 } //Z#311 + links:intvector { 236, 240, 292, 311 } + } //Z#311 + /* Asia/Saigon */ :int { 273 } //Z#312 /* Asia/Sakhalin */ :table { trans:intvector { -2031039048, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200, 1459008000 } typeOffsets:intvector { 34248, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 } typeMap:bin { "010405040504050405040504050405040504050405040302040504050405040504050403020302030203020302030203020302030203020302030203020302040204" } - } //Z#312 + } //Z#313 /* Asia/Samarkand */ :table { trans:intvector { -1441168073, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686091600 } typeOffsets:intvector { 16073, 0, 14400, 0, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "010203040302030203020302030203020302030203020302" } - } //Z#313 + } //Z#314 /* Asia/Seoul */ :table { trans:intvector { -1948782472, -1830414600, -681210000, -672228000, -654771600, -640864800, -623408400, -609415200, -588848400, -577965600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 } typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 } typeMap:bin { "01030403040304030403010201020102010201020102010304030403" } - links:intvector { 314, 600 } - } //Z#314 + links:intvector { 315, 601 } + } //Z#315 /* Asia/Shanghai */ :table { transPre32:intvector { -1, 2117485353 } trans:intvector { -1600675200, -1585904400, -933667200, -922093200, -908870400, -888829200, -881049600, -767869200, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -650019600, 515527200, 527014800, 545162400, 558464400, 577216800, 589914000, 608666400, 621968400, 640116000, 653418000, 671565600, 684867600 } typeOffsets:intvector { 29143, 0, 28800, 0, 28800, 3600 } typeMap:bin { "0102010201020102010201020102010201020102010201020102010201" } - links:intvector { 259, 260, 270, 315, 384, 549 } - } //Z#315 + links:intvector { 260, 261, 271, 316, 385, 550 } + } //Z#316 /* Asia/Singapore */ :table { - trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 } + trans:intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378662400 } typeOffsets:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 } typeMap:bin { "01020304060405" } - links:intvector { 289, 316, 602 } - } //Z#316 + links:intvector { 290, 317, 603 } + } //Z#317 /* Asia/Srednekolymsk */ :table { trans:intvector { -1441188892, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1414245600 } typeOffsets:intvector { 36892, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#317 + } //Z#318 /* Asia/Taipei */ :table { transPre32:intvector { -1, 1959718936 } trans:intvector { -1017820800, -766224000, -745833600, -733827600, -716889600, -699613200, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 299606400, 307551600 } typeOffsets:intvector { 29160, 0, 28800, 0, 28800, 3600, 32400, 0 } typeMap:bin { "0103010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 318, 599 } - } //Z#318 + links:intvector { 319, 600 } + } //Z#319 /* Asia/Tashkent */ :table { trans:intvector { -1441168631, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600 } typeOffsets:intvector { 16631, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 } typeMap:bin { "010304030403040304030403040304030403040304030201" } - } //Z#319 + } //Z#320 /* Asia/Tbilisi */ :table { trans:intvector { -1441162751, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 } typeOffsets:intvector { 10751, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "0103040304030403040304030403040304030403040302010201020102030403040304030403040304030403040304020103" } - } //Z#320 + } //Z#321 /* Asia/Tehran */ :table { trans:intvector { -1090466744, 227820600, 246223800, 259617600, 271108800, 283982400, 296598600, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600 } typeOffsets:intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "01020304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" } - links:intvector { 321, 528 } - } //Z#321 - /* Asia/Tel_Aviv */ :int { 279 } //Z#322 - /* Asia/Thimbu */ :int { 324 } //Z#323 + links:intvector { 322, 529 } + } //Z#322 + /* Asia/Tel_Aviv */ :int { 280 } //Z#323 + /* Asia/Thimbu */ :int { 325 } //Z#324 /* Asia/Thimphu */ :table { trans:intvector { -706341516, 560025000 } typeOffsets:intvector { 21516, 0, 19800, 0, 21600, 0 } typeMap:bin { "0102" } - links:intvector { 323, 324 } - } //Z#324 + links:intvector { 324, 325 } + } //Z#325 /* Asia/Tokyo */ :table { transPre32:intvector { -1, 1707254896 } trans:intvector { -683802000, -672310800, -654771600, -640861200, -620298000, -609411600, -588848400, -577962000 } typeOffsets:intvector { 33539, 0, 32400, 0, 32400, 3600 } typeMap:bin { "010201020102010201" } - links:intvector { 325, 530, 532 } - } //Z#325 + links:intvector { 326, 531, 533 } + } //Z#326 /* Asia/Tomsk */ :table { trans:intvector { -1578807591, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701809200, 717534000, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400, 859662000, 877806000, 891111600, 909255600, 922561200, 941310000, 954010800, 972759600, 985460400, 1004209200, 1017514800, 1020193200, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1111867200, 1130616000, 1143316800, 1162065600, 1174766400, 1193515200, 1206820800, 1224964800, 1238270400, 1256414400, 1269720000, 1288468800, 1301169600, 1414263600, 1464465600 } typeOffsets:intvector { 20391, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 } typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304020102010201020102010201020102010201030103" } - } //Z#326 - /* Asia/Ujung_Pandang */ :int { 295 } //Z#327 + } //Z#327 + /* Asia/Ujung_Pandang */ :int { 296 } //Z#328 /* Asia/Ulaanbaatar */ :table { trans:intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200, 1427479200, 1443193200, 1458928800, 1474642800 } typeOffsets:intvector { 25652, 0, 25200, 0, 28800, 0, 28800, 3600 } typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" } - links:intvector { 328, 329 } - } //Z#328 - /* Asia/Ulan_Bator */ :int { 328 } //Z#329 + links:intvector { 329, 330 } + } //Z#329 + /* Asia/Ulan_Bator */ :int { 329 } //Z#330 /* Asia/Urumqi */ :table { trans:intvector { -1325483420 } typeOffsets:intvector { 21020, 0, 21600, 0 } typeMap:bin { "01" } - links:intvector { 237, 283, 330 } - } //Z#330 + links:intvector { 238, 284, 331 } + } //Z#331 /* Asia/Ust-Nera */ :table { trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 } typeOffsets:intvector { 34374, 0, 28800, 0, 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600, 43200, 0 } typeMap:bin { "010206050605060506050605060506050605060506050403050605060506050605060506050605060506050605060506050605060506050605060506050605070503" } - } //Z#331 - /* Asia/Vientiane */ :int { 251 } //Z#332 + } //Z#332 + /* Asia/Vientiane */ :int { 252 } //Z#333 /* Asia/Vladivostok */ :table { trans:intvector { -1487321251, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701798400, 717523200, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 972748800, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143302400, 1162051200, 1174752000, 1193500800, 1206806400, 1224950400, 1238256000, 1256400000, 1269705600, 1288454400, 1301155200, 1414249200 } typeOffsets:intvector { 31651, 0, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600, 39600, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#333 + } //Z#334 /* Asia/Yakutsk */ :table { trans:intvector { -1579423138, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701802000, 717526800, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200, 859654800, 877798800, 891104400, 909248400, 922554000, 941302800, 954003600, 972752400, 985453200, 1004202000, 1017507600, 1035651600, 1048957200, 1067101200, 1080406800, 1099155600, 1111856400, 1130605200, 1143306000, 1162054800, 1174755600, 1193504400, 1206810000, 1224954000, 1238259600, 1256403600, 1269709200, 1288458000, 1301158800, 1414252800 } typeOffsets:intvector { 31138, 0, 28800, 0, 28800, 3600, 32400, 0, 32400, 3600, 36000, 0 } typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#334 + } //Z#335 /* Asia/Yangon */ :table { trans:intvector { -1577946287, -873268200, -778410000 } typeOffsets:intvector { 23087, 0, 23400, 0, 32400, 0 } typeMap:bin { "010201" } - links:intvector { 309, 335, 520 } - } //Z#335 + links:intvector { 310, 336, 521 } + } //Z#336 /* Asia/Yekaterinburg */ :table { trans:intvector { -1688270553, -1592610305, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1111870800, 1130619600, 1143320400, 1162069200, 1174770000, 1193518800, 1206824400, 1224968400, 1238274000, 1256418000, 1269723600, 1288472400, 1301173200, 1414267200 } typeOffsets:intvector { 14553, 0, 13505, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 } typeMap:bin { "010204050405040504050405040504050405040504050403020405040504050405040504050405040504050405040504050405040504050405040504050405040604" } - } //Z#336 + } //Z#337 /* Asia/Yerevan */ :table { trans:intvector { -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 686098800, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288476000, 1301176800, 1319925600 } typeOffsets:intvector { 10680, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "0103040304030403040304030403040304030403040302010201020102010203040304030403040304030403040304030403040304030403040304030403" } - links:intvector { 337, 542 } - } //Z#337 + links:intvector { 338, 543 } + } //Z#338 /* Atlantic/Azores */ :table { transPre32:intvector { -1, 1581063056 } trans:intvector { -1830376800, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -623275200, -607550400, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -1641,7 +1593,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { -3600 } finalYear:int { 1997 } - } //Z#338 + } //Z#339 /* Atlantic/Bermuda */ :table { trans:intvector { -1664307642, -1648932042, -1632080442, -1618692042, -1262281242, -882727200, -858538800, -845229600, -825879600, -814384800, -793825200, -782935200, -762375600, -713988000, -703710000, -681933600, -672865200, -650484000, -641415600, -618429600, -609966000, -586980000, -578516400, -555530400, -546462000, -429127200, -415825200, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 } typeOffsets:intvector { -15558, 0, -15558, 3600, -14400, 0, -14400, 3600 } @@ -1649,7 +1601,7 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -14400 } finalYear:int { 2008 } - } //Z#339 + } //Z#340 /* Atlantic/Canary */ :table { trans:intvector { -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { -3696, 0, -3600, 0, 0, 0, 0, 3600 } @@ -1657,13 +1609,13 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - } //Z#340 + } //Z#341 /* Atlantic/Cape_Verde */ :table { trans:intvector { -1830376800, -862610400, -764118000, 186120000 } typeOffsets:intvector { -5644, 0, -7200, 0, -7200, 3600, -3600, 0 } typeMap:bin { "01020103" } - } //Z#341 - /* Atlantic/Faeroe */ :int { 343 } //Z#342 + } //Z#342 + /* Atlantic/Faeroe */ :int { 344 } //Z#343 /* Atlantic/Faroe */ :table { trans:intvector { -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { -1624, 0, 0, 0, 0, 3600 } @@ -1671,9 +1623,9 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - links:intvector { 342, 343 } - } //Z#343 - /* Atlantic/Jan_Mayen */ :int { 446 } //Z#344 + links:intvector { 343, 344 } + } //Z#344 + /* Atlantic/Jan_Mayen */ :int { 447 } //Z#345 /* Atlantic/Madeira */ :table { trans:intvector { -1830380400, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -623278800, -607554000, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { -4056, 0, -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 } @@ -1681,20 +1633,20 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - } //Z#345 - /* Atlantic/Reykjavik */ :int { 5 } //Z#346 + } //Z#346 + /* Atlantic/Reykjavik */ :int { 5 } //Z#347 /* Atlantic/South_Georgia */ :table { transPre32:intvector { -1, 1770454464 } typeOffsets:intvector { -8768, 0, -7200, 0 } typeMap:bin { "01" } - } //Z#347 - /* Atlantic/St_Helena */ :int { 5 } //Z#348 + } //Z#348 + /* Atlantic/St_Helena */ :int { 5 } //Z#349 /* Atlantic/Stanley */ :table { trans:intvector { -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400, 987310800, 999410400, 1019365200, 1030860000, 1050814800, 1062914400, 1082264400, 1094364000, 1113714000, 1125813600, 1145163600, 1157263200, 1176613200, 1188712800, 1208667600, 1220767200, 1240117200, 1252216800, 1271566800, 1283666400 } typeOffsets:intvector { -13884, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 } typeMap:bin { "010201020102010201020102010304030403020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" } - } //Z#349 - /* Australia/ACT */ :int { 368 } //Z#350 + } //Z#350 + /* Australia/ACT */ :int { 369 } //Z#351 /* Australia/Adelaide */ :table { transPre32:intvector { -1, 1930857236, -1, 2064778096 } trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 } @@ -1703,15 +1655,15 @@ zoneinfo64:table(nofallback) { finalRule { "AS" } finalRaw:int { 34200 } finalYear:int { 2009 } - links:intvector { 351, 367 } - } //Z#351 + links:intvector { 352, 368 } + } //Z#352 /* Australia/Brisbane */ :table { transPre32:intvector { -1, 1928175368 } trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 } typeOffsets:intvector { 36728, 0, 36000, 0, 36000, 3600 } typeMap:bin { "0102010201020102010201020102010201" } - links:intvector { 352, 366 } - } //Z#352 + links:intvector { 353, 367 } + } //Z#353 /* Australia/Broken_Hill */ :table { transPre32:intvector { -1, 1930856548, -1, 1980016096, -1, 2064778096 } trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 } @@ -1720,23 +1672,23 @@ zoneinfo64:table(nofallback) { finalRule { "AS" } finalRaw:int { 34200 } finalYear:int { 2009 } - links:intvector { 353, 372 } - } //Z#353 - /* Australia/Canberra */ :int { 368 } //Z#354 - /* Australia/Currie */ :int { 358 } //Z#355 + links:intvector { 354, 373 } + } //Z#354 + /* Australia/Canberra */ :int { 369 } //Z#355 + /* Australia/Currie */ :int { 359 } //Z#356 /* Australia/Darwin */ :table { transPre32:intvector { -1, 1930859096, -1, 2064778096 } trans:intvector { -1672558200, -1665387000, -883639800, -876123000, -860398200, -844673400, -828343800, -813223800 } typeOffsets:intvector { 31400, 0, 32400, 0, 34200, 0, 34200, 3600 } typeMap:bin { "01020302030203020302" } - links:intvector { 0, 356, 364 } - } //Z#356 + links:intvector { 0, 357, 365 } + } //Z#357 /* Australia/Eucla */ :table { transPre32:intvector { -1, 1957038768 } trans:intvector { -1672555500, -1665384300, -883637100, -876120300, -860395500, -844670700, 152039700, 162926100, 436295700, 447182100, 690311700, 699383700, 1165079700, 1174756500, 1193505300, 1206810900, 1224954900, 1238260500 } typeOffsets:intvector { 30928, 0, 31500, 0, 31500, 3600 } typeMap:bin { "01020102010201020102010201020102010201" } - } //Z#357 + } //Z#358 /* Australia/Hobart */ :table { transPre32:intvector { -1, 1949171940 } trans:intvector { -1680508800, -1665388800, -1646640000, -1635753600, -1615190400, -1604304000, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 } @@ -1745,15 +1697,15 @@ zoneinfo64:table(nofallback) { finalRule { "AT" } finalRaw:int { 36000 } finalYear:int { 2009 } - links:intvector { 355, 358, 369 } - } //Z#358 - /* Australia/LHI */ :int { 361 } //Z#359 + links:intvector { 356, 359, 370 } + } //Z#359 + /* Australia/LHI */ :int { 362 } //Z#360 /* Australia/Lindeman */ :table { transPre32:intvector { -1, 1928176340 } trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200 } typeOffsets:intvector { 35756, 0, 36000, 0, 36000, 3600 } typeMap:bin { "010201020102010201020102010201020102010201" } - } //Z#360 + } //Z#361 /* Australia/Lord_Howe */ :table { transPre32:intvector { -1, 1930852316 } trans:intvector { 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400, 1174748400, 1193499000, 1207407600, 1223134200 } @@ -1762,8 +1714,8 @@ zoneinfo64:table(nofallback) { finalRule { "LH" } finalRaw:int { 37800 } finalYear:int { 2009 } - links:intvector { 359, 361 } - } //Z#361 + links:intvector { 360, 362 } + } //Z#362 /* Australia/Melbourne */ :table { transPre32:intvector { -1, 1930855704 } trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 } @@ -1772,19 +1724,19 @@ zoneinfo64:table(nofallback) { finalRule { "AV" } finalRaw:int { 36000 } finalYear:int { 2009 } - links:intvector { 362, 370 } - } //Z#362 - /* Australia/NSW */ :int { 368 } //Z#363 - /* Australia/North */ :int { 356 } //Z#364 + links:intvector { 363, 371 } + } //Z#363 + /* Australia/NSW */ :int { 369 } //Z#364 + /* Australia/North */ :int { 357 } //Z#365 /* Australia/Perth */ :table { transPre32:intvector { -1, 1957041892 } trans:intvector { -1672552800, -1665381600, -883634400, -876117600, -860392800, -844668000, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400, 1165082400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200 } typeOffsets:intvector { 27804, 0, 28800, 0, 28800, 3600 } typeMap:bin { "01020102010201020102010201020102010201" } - links:intvector { 365, 371 } - } //Z#365 - /* Australia/Queensland */ :int { 352 } //Z#366 - /* Australia/South */ :int { 351 } //Z#367 + links:intvector { 366, 372 } + } //Z#366 + /* Australia/Queensland */ :int { 353 } //Z#367 + /* Australia/South */ :int { 352 } //Z#368 /* Australia/Sydney */ :table { transPre32:intvector { -1, 1930854204 } trans:intvector { -1672560000, -1665388800, -883641600, -876124800, -860400000, -844675200, -828345600, -813225600, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 } @@ -1793,19 +1745,19 @@ zoneinfo64:table(nofallback) { finalRule { "AN" } finalRaw:int { 36000 } finalYear:int { 2009 } - links:intvector { 1, 350, 354, 363, 368 } - } //Z#368 - /* Australia/Tasmania */ :int { 358 } //Z#369 - /* Australia/Victoria */ :int { 362 } //Z#370 - /* Australia/West */ :int { 365 } //Z#371 - /* Australia/Yancowinna */ :int { 353 } //Z#372 - /* BET */ :int { 203 } //Z#373 - /* BST */ :int { 264 } //Z#374 - /* Brazil/Acre */ :int { 197 } //Z#375 - /* Brazil/DeNoronha */ :int { 176 } //Z#376 - /* Brazil/East */ :int { 203 } //Z#377 - /* Brazil/West */ :int { 156 } //Z#378 - /* CAT */ :int { 43 } //Z#379 + links:intvector { 1, 351, 355, 364, 369 } + } //Z#369 + /* Australia/Tasmania */ :int { 359 } //Z#370 + /* Australia/Victoria */ :int { 363 } //Z#371 + /* Australia/West */ :int { 366 } //Z#372 + /* Australia/Yancowinna */ :int { 354 } //Z#373 + /* BET */ :int { 204 } //Z#374 + /* BST */ :int { 265 } //Z#375 + /* Brazil/Acre */ :int { 198 } //Z#376 + /* Brazil/DeNoronha */ :int { 177 } //Z#377 + /* Brazil/East */ :int { 204 } //Z#378 + /* Brazil/West */ :int { 157 } //Z#379 + /* CAT */ :int { 43 } //Z#380 /* CET */ :table { trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 3600, 0, 3600, 3600 } @@ -1813,9 +1765,9 @@ zoneinfo64:table(nofallback) { finalRule { "C-Eur" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#380 - /* CNT */ :int { 208 } //Z#381 - /* CST */ :int { 98 } //Z#382 + } //Z#381 + /* CNT */ :int { 209 } //Z#382 + /* CST */ :int { 98 } //Z#383 /* CST6CDT */ :table { trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 } typeOffsets:intvector { -21600, 0, -21600, 3600 } @@ -1823,22 +1775,22 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -21600 } finalYear:int { 2008 } - } //Z#383 - /* CTT */ :int { 315 } //Z#384 - /* Canada/Atlantic */ :int { 128 } //Z#385 - /* Canada/Central */ :int { 223 } //Z#386 - /* Canada/East-Saskatchewan */ :int { 195 } //Z#387 - /* Canada/Eastern */ :int { 218 } //Z#388 - /* Canada/Mountain */ :int { 112 } //Z#389 - /* Canada/Newfoundland */ :int { 208 } //Z#390 - /* Canada/Pacific */ :int { 220 } //Z#391 - /* Canada/Saskatchewan */ :int { 195 } //Z#392 - /* Canada/Yukon */ :int { 222 } //Z#393 - /* Chile/Continental */ :int { 201 } //Z#394 - /* Chile/EasterIsland */ :int { 558 } //Z#395 - /* Cuba */ :int { 129 } //Z#396 - /* EAT */ :int { 48 } //Z#397 - /* ECT */ :int { 477 } //Z#398 + } //Z#384 + /* CTT */ :int { 316 } //Z#385 + /* Canada/Atlantic */ :int { 129 } //Z#386 + /* Canada/Central */ :int { 224 } //Z#387 + /* Canada/East-Saskatchewan */ :int { 196 } //Z#388 + /* Canada/Eastern */ :int { 219 } //Z#389 + /* Canada/Mountain */ :int { 113 } //Z#390 + /* Canada/Newfoundland */ :int { 209 } //Z#391 + /* Canada/Pacific */ :int { 221 } //Z#392 + /* Canada/Saskatchewan */ :int { 196 } //Z#393 + /* Canada/Yukon */ :int { 223 } //Z#394 + /* Chile/Continental */ :int { 202 } //Z#395 + /* Chile/EasterIsland */ :int { 559 } //Z#396 + /* Cuba */ :int { 130 } //Z#397 + /* EAT */ :int { 48 } //Z#398 + /* ECT */ :int { 478 } //Z#399 /* EET */ :table { trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 7200, 0, 7200, 3600 } @@ -1846,10 +1798,10 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1997 } - } //Z#399 + } //Z#400 /* EST */ :table { typeOffsets:intvector { -18000, 0 } - } //Z#400 + } //Z#401 /* EST5EDT */ :table { trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 } typeOffsets:intvector { -18000, 0, -18000, 3600 } @@ -1857,106 +1809,106 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -18000 } finalYear:int { 2008 } - } //Z#401 - /* Egypt */ :int { 18 } //Z#402 - /* Eire */ :int { 454 } //Z#403 + } //Z#402 + /* Egypt */ :int { 18 } //Z#403 + /* Eire */ :int { 455 } //Z#404 /* Etc/GMT */ :table { typeOffsets:intvector { 0, 0 } - links:intvector { 404, 405, 418, 433, 434, 507, 508, 509, 510, 511 } - } //Z#404 - /* Etc/GMT+0 */ :int { 404 } //Z#405 + links:intvector { 405, 406, 419, 434, 435, 508, 509, 510, 511, 512 } + } //Z#405 + /* Etc/GMT+0 */ :int { 405 } //Z#406 /* Etc/GMT+1 */ :table { typeOffsets:intvector { -3600, 0 } - } //Z#406 + } //Z#407 /* Etc/GMT+10 */ :table { typeOffsets:intvector { -36000, 0 } - } //Z#407 + } //Z#408 /* Etc/GMT+11 */ :table { typeOffsets:intvector { -39600, 0 } - } //Z#408 + } //Z#409 /* Etc/GMT+12 */ :table { typeOffsets:intvector { -43200, 0 } - } //Z#409 + } //Z#410 /* Etc/GMT+2 */ :table { typeOffsets:intvector { -7200, 0 } - } //Z#410 + } //Z#411 /* Etc/GMT+3 */ :table { typeOffsets:intvector { -10800, 0 } - } //Z#411 + } //Z#412 /* Etc/GMT+4 */ :table { typeOffsets:intvector { -14400, 0 } - } //Z#412 + } //Z#413 /* Etc/GMT+5 */ :table { typeOffsets:intvector { -18000, 0 } - } //Z#413 + } //Z#414 /* Etc/GMT+6 */ :table { typeOffsets:intvector { -21600, 0 } - } //Z#414 + } //Z#415 /* Etc/GMT+7 */ :table { typeOffsets:intvector { -25200, 0 } - } //Z#415 + } //Z#416 /* Etc/GMT+8 */ :table { typeOffsets:intvector { -28800, 0 } - } //Z#416 + } //Z#417 /* Etc/GMT+9 */ :table { typeOffsets:intvector { -32400, 0 } - } //Z#417 - /* Etc/GMT-0 */ :int { 404 } //Z#418 + } //Z#418 + /* Etc/GMT-0 */ :int { 405 } //Z#419 /* Etc/GMT-1 */ :table { typeOffsets:intvector { 3600, 0 } - } //Z#419 + } //Z#420 /* Etc/GMT-10 */ :table { typeOffsets:intvector { 36000, 0 } - } //Z#420 + } //Z#421 /* Etc/GMT-11 */ :table { typeOffsets:intvector { 39600, 0 } - } //Z#421 + } //Z#422 /* Etc/GMT-12 */ :table { typeOffsets:intvector { 43200, 0 } - } //Z#422 + } //Z#423 /* Etc/GMT-13 */ :table { typeOffsets:intvector { 46800, 0 } - } //Z#423 + } //Z#424 /* Etc/GMT-14 */ :table { typeOffsets:intvector { 50400, 0 } - } //Z#424 + } //Z#425 /* Etc/GMT-2 */ :table { typeOffsets:intvector { 7200, 0 } - } //Z#425 + } //Z#426 /* Etc/GMT-3 */ :table { typeOffsets:intvector { 10800, 0 } - } //Z#426 + } //Z#427 /* Etc/GMT-4 */ :table { typeOffsets:intvector { 14400, 0 } - } //Z#427 + } //Z#428 /* Etc/GMT-5 */ :table { typeOffsets:intvector { 18000, 0 } - } //Z#428 + } //Z#429 /* Etc/GMT-6 */ :table { typeOffsets:intvector { 21600, 0 } - } //Z#429 + } //Z#430 /* Etc/GMT-7 */ :table { typeOffsets:intvector { 25200, 0 } - } //Z#430 + } //Z#431 /* Etc/GMT-8 */ :table { typeOffsets:intvector { 28800, 0 } - } //Z#431 + } //Z#432 /* Etc/GMT-9 */ :table { typeOffsets:intvector { 32400, 0 } - } //Z#432 - /* Etc/GMT0 */ :int { 404 } //Z#433 - /* Etc/Greenwich */ :int { 404 } //Z#434 - /* Etc/UCT */ :int { 436 } //Z#435 + } //Z#433 + /* Etc/GMT0 */ :int { 405 } //Z#434 + /* Etc/Greenwich */ :int { 405 } //Z#435 + /* Etc/UCT */ :int { 437 } //Z#436 /* Etc/UTC */ :table { typeOffsets:intvector { 0, 0 } - links:intvector { 435, 436, 437, 439, 617, 631, 632, 636 } - } //Z#436 - /* Etc/Universal */ :int { 436 } //Z#437 + links:intvector { 436, 437, 438, 440, 618, 632, 633, 637 } + } //Z#437 + /* Etc/Universal */ :int { 437 } //Z#438 /* Etc/Unknown */ :table { typeOffsets:intvector { 0, 0 } - } //Z#438 - /* Etc/Zulu */ :int { 436 } //Z#439 - /* Europe/Amsterdam */ :int { 448 } //Z#440 + } //Z#439 + /* Etc/Zulu */ :int { 437 } //Z#440 + /* Europe/Amsterdam */ :int { 449 } //Z#441 /* Europe/Andorra */ :table { transPre32:intvector { -1, 2117514132 } trans:intvector { -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -1965,12 +1917,12 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#441 + } //Z#442 /* Europe/Astrakhan */ :table { trans:intvector { -1441249932, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 } typeOffsets:intvector { 11532, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "01030403040304030403040304030403040302010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" } - } //Z#442 + } //Z#443 /* Europe/Athens */ :table { trans:intvector { -1686101632, -1182996000, -1178161200, -906861600, -904878000, -857257200, -844477200, -828237600, -812422800, -552362400, -541652400, 166485600, 186184800, 198028800, 213753600, 228873600, 244080000, 260323200, 275446800, 291798000, 307407600, 323388000, 338936400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 5692, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 } @@ -1978,8 +1930,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1997 } - } //Z#443 - /* Europe/Belfast */ :int { 467 } //Z#444 + } //Z#444 + /* Europe/Belfast */ :int { 468 } //Z#445 /* Europe/Belgrade */ :table { transPre32:intvector { -1, 1581051976 } trans:intvector { -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -777942000, -766623600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -1988,8 +1940,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 445, 466, 478, 484, 487, 501 } - } //Z#445 + links:intvector { 446, 467, 479, 485, 488, 502 } + } //Z#446 /* Europe/Berlin */ :table { transPre32:intvector { -1, 1872912888 } trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -748479600, -733273200, -717631200, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -1998,9 +1950,9 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 238, 344, 446, 453, 476, 489 } - } //Z#446 - /* Europe/Bratislava */ :int { 479 } //Z#447 + links:intvector { 239, 345, 447, 454, 477, 490 } + } //Z#447 + /* Europe/Bratislava */ :int { 480 } //Z#448 /* Europe/Brussels */ :table { transPre32:intvector { -1, 1843972096 } trans:intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2009,8 +1961,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 440, 448, 468 } - } //Z#448 + links:intvector { 441, 449, 469 } + } //Z#449 /* Europe/Bucharest */ :table { trans:intvector { -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, 296604000, 307486800, 323816400, 338940000, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686095200, 701820000, 717544800, 733269600, 748994400, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 } typeOffsets:intvector { 6264, 0, 7200, 0, 7200, 3600 } @@ -2018,7 +1970,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1998 } - } //Z#449 + } //Z#450 /* Europe/Budapest */ :table { transPre32:intvector { -1, 1796706716 } trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600470000, -1587250800, -1569711600, -1555196400, -906775200, -857257200, -844556400, -828226800, -812502000, -796777200, -778471200, -762656400, -749689200, -733276800, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -492656400, -481168800, -461199600, -449708400, -428540400, -418258800, -397090800, -386809200, 323823600, 338943600, 354668400, 370393200, 386118000, 401842800, 417567600, 433292400, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2027,8 +1979,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#450 - /* Europe/Busingen */ :int { 503 } //Z#451 + } //Z#451 + /* Europe/Busingen */ :int { 504 } //Z#452 /* Europe/Chisinau */ :table { transPre32:intvector { -1, 1454819576 } trans:intvector { -1637114100, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, -927165600, -898138800, -857257200, -844556400, -828226800, -812502000, -800157600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 641944800, 654652800, 670377600, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859680000, 877824000 } @@ -2037,9 +1989,9 @@ zoneinfo64:table(nofallback) { finalRule { "Moldova" } finalRaw:int { 7200 } finalYear:int { 1998 } - links:intvector { 452, 492 } - } //Z#452 - /* Europe/Copenhagen */ :int { 446 } //Z#453 + links:intvector { 453, 493 } + } //Z#453 + /* Europe/Copenhagen */ :int { 447 } //Z#454 /* Europe/Dublin */ :table { trans:intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733356000, -719445600, -699487200, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 } typeOffsets:intvector { -1521, 0, -1521, 3600, 0, 0, 0, 3600, 3600, 0 } @@ -2047,8 +1999,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - links:intvector { 403, 454 } - } //Z#454 + links:intvector { 404, 455 } + } //Z#455 /* Europe/Gibraltar */ :table { transPre32:intvector { -1, 1473317380 } trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2057,8 +2009,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#455 - /* Europe/Guernsey */ :int { 467 } //Z#456 + } //Z#456 + /* Europe/Guernsey */ :int { 468 } //Z#457 /* Europe/Helsinki */ :table { trans:intvector { -1535938789, -875671200, -859773600, 354672000, 370396800, 386121600, 401846400, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 5989, 0, 7200, 0, 7200, 3600 } @@ -2066,29 +2018,29 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1997 } - links:intvector { 457, 471 } - } //Z#457 - /* Europe/Isle_of_Man */ :int { 467 } //Z#458 + links:intvector { 458, 472 } + } //Z#458 + /* Europe/Isle_of_Man */ :int { 468 } //Z#459 /* Europe/Istanbul */ :table { transPre32:intvector { -1, 1454819544 } trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931053600, -922676400, -917834400, -892436400, -875844000, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -622087200, -606970800, -590032800, -575521200, -235620000, -194842800, -177732000, -165726000, 107910000, 121215600, 133920000, 152665200, 164678400, 184114800, 196214400, 215564400, 228873600, 245804400, 260323200, 267915600, 428454000, 433893600, 468111600, 482799600, 496710000, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 } typeOffsets:intvector { 6952, 0, 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030405040203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" } - links:intvector { 276, 459, 616 } - } //Z#459 - /* Europe/Jersey */ :int { 467 } //Z#460 + links:intvector { 277, 460, 617 } + } //Z#460 + /* Europe/Jersey */ :int { 468 } //Z#461 /* Europe/Kaliningrad */ :table { transPre32:intvector { -1, 1872911176 } trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780372000, -778730400, -762663600, -749095200, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 } typeOffsets:intvector { 4920, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } typeMap:bin { "0102010201020102010201020102030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" } - } //Z#461 - /* Europe/Kiev */ :int { 464 } //Z#462 + } //Z#462 + /* Europe/Kiev */ :int { 465 } //Z#463 /* Europe/Kirov */ :table { trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 } typeOffsets:intvector { 11928, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "010304030403040304030403040304030403020102010302010201020102010201020102010201020102010201020102010201020102010201020102010301" } - } //Z#463 + } //Z#464 /* Europe/Kyiv */ :table { trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 } typeOffsets:intvector { 7324, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } @@ -2096,8 +2048,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1998 } - links:intvector { 462, 464 } - } //Z#464 + links:intvector { 463, 465, 495, 503 } + } //Z#465 /* Europe/Lisbon */ :table { trans:intvector { -1830384000, -1689555600, -1677801600, -1667437200, -1647738000, -1635814800, -1616202000, -1604365200, -1584666000, -1572742800, -1553043600, -1541206800, -1521507600, -1442451600, -1426813200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1221440400, -1206925200, -1191200400, -1175475600, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942022800, -922669200, -906944400, -891133200, -877309200, -873684000, -864007200, -857955600, -845859600, -842839200, -831348000, -825901200, -814410000, -810784800, -799898400, -794451600, -782960400, -779335200, -768448800, -763002000, -749091600, -733366800, -717631200, -701906400, -686181600, -670456800, -654732000, -639007200, -623282400, -607557600, -591832800, -575503200, -559778400, -544053600, -528328800, -512604000, -496879200, -481154400, -465429600, -449704800, -433980000, -417650400, -401925600, -386200800, -370476000, -354751200, -339026400, -323301600, -307576800, -291852000, -276127200, -260402400, -244677600, -228348000, -212623200, -196898400, -181173600, -165448800, -149724000, -133999200, -118274400, 212544000, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { -2205, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 } @@ -2105,9 +2057,9 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - links:intvector { 465, 598 } - } //Z#465 - /* Europe/Ljubljana */ :int { 445 } //Z#466 + links:intvector { 466, 599 } + } //Z#466 + /* Europe/Ljubljana */ :int { 446 } //Z#467 /* Europe/London */ :table { transPre32:intvector { -1, 442304971 } trans:intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 } @@ -2116,9 +2068,9 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - links:intvector { 444, 456, 458, 460, 467, 505, 506 } - } //Z#467 - /* Europe/Luxembourg */ :int { 448 } //Z#468 + links:intvector { 445, 457, 459, 461, 468, 506, 507 } + } //Z#468 + /* Europe/Luxembourg */ :int { 449 } //Z#469 /* Europe/Madrid */ :table { transPre32:intvector { -1, 2117514496 } trans:intvector { -1631926800, -1616889600, -1601168400, -1585353600, -1442451600, -1427673600, -1379293200, -1364774400, -1348448400, -1333324800, -1316390400, -1301270400, -1284339600, -1269820800, -1026954000, -1017619200, -1001898000, -999482400, -986090400, -954115200, -940208400, -873079200, -862621200, -842839200, -828320400, -811389600, -796870800, -779940000, -765421200, -748490400, -733971600, -652327200, -639018000, 135122400, 150246000, 166572000, 181695600, 196812000, 212540400, 228866400, 243990000, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2127,7 +2079,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#469 + } //Z#470 /* Europe/Malta */ :table { transPre32:intvector { -1, 1891488612 } trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812588400, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 102380400, 118105200, 135730800, 148518000, 167187600, 180489600, 198637200, 211939200, 230086800, 243388800, 261536400, 274838400, 292986000, 306288000, 323312400, 338342400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2136,23 +2088,23 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#470 - /* Europe/Mariehamn */ :int { 457 } //Z#471 + } //Z#471 + /* Europe/Mariehamn */ :int { 458 } //Z#472 /* Europe/Minsk */ :table { transPre32:intvector { -1, 1454819880 } trans:intvector { -1441158600, -1247536800, -899780400, -857257200, -844556400, -828226800, -812502000, -804650400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 670374000, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000 } typeOffsets:intvector { 6616, 0, 3600, 0, 3600, 3600, 6600, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } typeMap:bin { "0304060201020102060706070607060706070607060706070607060504050405040504050405040504050405040504050405040504050405040504050405040504050406" } - } //Z#472 - /* Europe/Monaco */ :int { 477 } //Z#473 + } //Z#473 + /* Europe/Monaco */ :int { 478 } //Z#474 /* Europe/Moscow */ :table { trans:intvector { -1688265017, -1656819079, -1641353479, -1627965079, -1618716679, -1596429079, -1593820800, -1589860800, -1542427200, -1539493200, -1525323600, -1522728000, -1491188400, -1247536800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 } typeOffsets:intvector { 9017, 0, 7200, 0, 7200, 3600, 9079, 0, 9079, 3600, 9079, 7200, 10800, 0, 10800, 3600, 10800, 7200, 14400, 0 } typeMap:bin { "0304030504050706070807060106070607060706070607060706070607060706070602010607060706070607060706070607060706070607060706070607060706070607060706070607060906" } - links:intvector { 474, 634 } - } //Z#474 - /* Europe/Nicosia */ :int { 298 } //Z#475 - /* Europe/Oslo */ :int { 446 } //Z#476 + links:intvector { 475, 635 } + } //Z#475 + /* Europe/Nicosia */ :int { 299 } //Z#476 + /* Europe/Oslo */ :int { 447 } //Z#477 /* Europe/Paris */ :table { trans:intvector { -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -932436000, -857257200, -844556400, -828226800, -812502000, -800071200, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 561, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 } @@ -2160,9 +2112,9 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 398, 473, 477 } - } //Z#477 - /* Europe/Podgorica */ :int { 445 } //Z#478 + links:intvector { 399, 474, 478 } + } //Z#478 + /* Europe/Podgorica */ :int { 446 } //Z#479 /* Europe/Prague */ :table { transPre32:intvector { -1, 1825565432 } trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -765327600, -746578800, -733359600, -728517600, -721260000, -716425200, -701910000, -684975600, -670460400, -654217200, -639010800, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2171,8 +2123,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 447, 479 } - } //Z#479 + links:intvector { 448, 480 } + } //Z#480 /* Europe/Riga */ :table { trans:intvector { -1632008194, -1618702594, -1601681794, -1597275394, -1377308194, -928029600, -899521200, -857257200, -844556400, -828226800, -812502000, -796777200, -795834000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 843955200, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 985482000, 1004230800 } typeOffsets:intvector { 5794, 0, 3600, 0, 3600, 3600, 5794, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } @@ -2180,7 +2132,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 2002 } - } //Z#480 + } //Z#481 /* Europe/Rome */ :table { transPre32:intvector { -1, 1891402096 } trans:intvector { -1690765200, -1680487200, -1664758800, -1648951200, -1635123600, -1616896800, -1604278800, -1585533600, -1571014800, -1555293600, -932432400, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71715600, -50547600, -40266000, -18493200, -8211600, 12956400, 23238000, 43801200, 54687600, 75855600, 86742000, 107910000, 118191600, 138754800, 149641200, 170809200, 181090800, 202258800, 212540400, 233103600, 243990000, 265158000, 276044400, 296607600, 307494000, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2189,27 +2141,27 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 481, 483, 496 } - } //Z#481 + links:intvector { 482, 484, 497 } + } //Z#482 /* Europe/Samara */ :table { trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701820000, 717544800, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1111874400, 1130623200, 1143324000, 1162072800, 1174773600, 1193522400, 1206828000, 1224972000, 1238277600, 1256421600, 1269727200, 1288479600, 1301180400 } typeOffsets:intvector { 12020, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "02040504050405040504050405040504050403020302010204050405040504050405040504050405040504050405040504050405040504050405040504030204" } - } //Z#482 - /* Europe/San_Marino */ :int { 481 } //Z#483 - /* Europe/Sarajevo */ :int { 445 } //Z#484 + } //Z#483 + /* Europe/San_Marino */ :int { 482 } //Z#484 + /* Europe/Sarajevo */ :int { 446 } //Z#485 /* Europe/Saratov */ :table { trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1480806000 } typeOffsets:intvector { 11058, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "01030403040304030403040304030403020102010201030201020102010201020102010201020102010201020102010201020102010201020102010201030103" } - } //Z#485 + } //Z#486 /* Europe/Simferopol */ :table { transPre32:intvector { -1, 1454818312 } trans:intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 701827200, 717552000, 733276800, 749001600, 764726400, 767739600, 780447600, 796172400, 811897200, 828219600, 846374400, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396137600, 1414274400 } typeOffsets:intvector { 8184, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8160, 0, 10800, 0, 10800, 3600, 14400, 0 } typeMap:bin { "050306020102010206070607060706070607060706070607060706030403040304070607060706040304030403040304030403040304030403040304030403040304030403040304030806" } - } //Z#486 - /* Europe/Skopje */ :int { 445 } //Z#487 + } //Z#487 + /* Europe/Skopje */ :int { 446 } //Z#488 /* Europe/Sofia */ :table { transPre32:intvector { -1, 1454820900, -1, 1925440280 } trans:intvector { -857257200, -844556400, -828226800, -812502000, -796777200, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 } @@ -2218,8 +2170,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 1998 } - } //Z#488 - /* Europe/Stockholm */ :int { 446 } //Z#489 + } //Z#489 + /* Europe/Stockholm */ :int { 447 } //Z#490 /* Europe/Tallinn */ :table { trans:intvector { -1638322740, -1632006000, -1618700400, -1593824400, -1535938740, -927943200, -892954800, -857257200, -844556400, -828226800, -812502000, -797652000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909277200, 922582800, 941331600, 1017536400, 1035680400 } typeOffsets:intvector { 5940, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } @@ -2227,7 +2179,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 2003 } - } //Z#490 + } //Z#491 /* Europe/Tirane */ :table { trans:intvector { -1767230360, -932346000, -857257200, -844556400, -843519600, 136854000, 149896800, 168130800, 181432800, 199839600, 213141600, 231894000, 244591200, 263257200, 276040800, 294706800, 307490400, 326156400, 339458400, 357087600, 370389600, 389142000, 402444000, 419468400, 433807200, 449622000, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 4760, 0, 3600, 0, 3600, 3600 } @@ -2235,24 +2187,16 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#491 - /* Europe/Tiraspol */ :int { 452 } //Z#492 + } //Z#492 + /* Europe/Tiraspol */ :int { 453 } //Z#493 /* Europe/Ulyanovsk */ :table { trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1459033200 } typeOffsets:intvector { 11616, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "030506050605060506050605060506050605040304030201030403040304030403040304030403040304030403040304030403040304030403040304030403050305" } - } //Z#493 - /* Europe/Uzhgorod */ :table { - transPre32:intvector { -1, 1794027544 } - trans:intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 670384800, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 } - typeOffsets:intvector { 5352, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 } - typeMap:bin { "01020102010201050605060506050605060506050605060506050103040304030403040304030403" } - finalRule { "EU" } - finalRaw:int { 7200 } - finalYear:int { 1998 } } //Z#494 - /* Europe/Vaduz */ :int { 503 } //Z#495 - /* Europe/Vatican */ :int { 481 } //Z#496 + /* Europe/Uzhgorod */ :int { 465 } //Z#495 + /* Europe/Vaduz */ :int { 504 } //Z#496 + /* Europe/Vatican */ :int { 482 } //Z#497 /* Europe/Vienna */ :table { transPre32:intvector { -1, 1872912175 } trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733273200, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2261,7 +2205,7 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#497 + } //Z#498 /* Europe/Vilnius */ :table { transPre32:intvector { -1, 1454820420 } trans:intvector { -1672536240, -1585100136, -1561251600, -1553565600, -928198800, -900126000, -857257200, -844556400, -828226800, -812502000, -802144800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891133200, 909277200, 922582800, 941331600, 1048986000, 1067130000 } @@ -2270,12 +2214,12 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 7200 } finalYear:int { 2004 } - } //Z#498 + } //Z#499 /* Europe/Volgograd */ :table { trans:intvector { -1577761060, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400, 1540681200, 1609020000 } typeOffsets:intvector { 10660, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 } typeMap:bin { "0103040304030403040304030403040302010201020103020102010201020102010201020102010201020102010201020102010201020102010201020103010301" } - } //Z#499 + } //Z#500 /* Europe/Warsaw */ :table { trans:intvector { -1717032240, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600473600, -1587168000, -1501725600, -931734000, -857257200, -844556400, -828226800, -812502000, -796608000, -778726800, -762660000, -748486800, -733273200, -715215600, -701910000, -684975600, -670460400, -654130800, -639010800, -397094400, -386812800, -371088000, -355363200, -334195200, -323308800, -307584000, -291859200, -271296000, -260409600, -239846400, -228960000, -208396800, -197510400, -176342400, -166060800, 228873600, 243993600, 260323200, 276048000, 291772800, 307497600, 323827200, 338947200, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 5040, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 } @@ -2283,18 +2227,10 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 500, 597 } - } //Z#500 - /* Europe/Zagreb */ :int { 445 } //Z#501 - /* Europe/Zaporozhye */ :table { - transPre32:intvector { -1, 1454818056 } - trans:intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 } - typeOffsets:intvector { 8440, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8400, 0, 10800, 0, 10800, 3600 } - typeMap:bin { "050306020102010607060706070607060706070607060706070607060403040304030403040304030403" } - finalRule { "EU" } - finalRaw:int { 7200 } - finalYear:int { 1998 } - } //Z#502 + links:intvector { 501, 598 } + } //Z#501 + /* Europe/Zagreb */ :int { 446 } //Z#502 + /* Europe/Zaporozhye */ :int { 465 } //Z#503 /* Europe/Zurich */ :table { transPre32:intvector { -1, 619768448, -1, 1909720710 } trans:intvector { -904435200, -891129600, -872985600, -859680000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } @@ -2303,56 +2239,56 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 3600 } finalYear:int { 1997 } - links:intvector { 451, 495, 503 } - } //Z#503 + links:intvector { 452, 496, 504 } + } //Z#504 /* Factory */ :table { typeOffsets:intvector { 0, 0 } - } //Z#504 - /* GB */ :int { 467 } //Z#505 - /* GB-Eire */ :int { 467 } //Z#506 - /* GMT */ :int { 404 } //Z#507 - /* GMT+0 */ :int { 404 } //Z#508 - /* GMT-0 */ :int { 404 } //Z#509 - /* GMT0 */ :int { 404 } //Z#510 - /* Greenwich */ :int { 404 } //Z#511 + } //Z#505 + /* GB */ :int { 468 } //Z#506 + /* GB-Eire */ :int { 468 } //Z#507 + /* GMT */ :int { 405 } //Z#508 + /* GMT+0 */ :int { 405 } //Z#509 + /* GMT-0 */ :int { 405 } //Z#510 + /* GMT0 */ :int { 405 } //Z#511 + /* Greenwich */ :int { 405 } //Z#512 /* HST */ :table { typeOffsets:intvector { -36000, 0 } - } //Z#512 - /* Hongkong */ :int { 273 } //Z#513 - /* IET */ :int { 131 } //Z#514 - /* IST */ :int { 287 } //Z#515 - /* Iceland */ :int { 5 } //Z#516 - /* Indian/Antananarivo */ :int { 48 } //Z#517 + } //Z#513 + /* Hongkong */ :int { 274 } //Z#514 + /* IET */ :int { 132 } //Z#515 + /* IST */ :int { 288 } //Z#516 + /* Iceland */ :int { 5 } //Z#517 + /* Indian/Antananarivo */ :int { 48 } //Z#518 /* Indian/Chagos */ :table { trans:intvector { -1988167780, 820436400 } typeOffsets:intvector { 17380, 0, 18000, 0, 21600, 0 } typeMap:bin { "0102" } - } //Z#518 - /* Indian/Christmas */ :int { 251 } //Z#519 - /* Indian/Cocos */ :int { 335 } //Z#520 - /* Indian/Comoro */ :int { 48 } //Z#521 - /* Indian/Kerguelen */ :int { 524 } //Z#522 - /* Indian/Mahe */ :int { 266 } //Z#523 + } //Z#519 + /* Indian/Christmas */ :int { 252 } //Z#520 + /* Indian/Cocos */ :int { 336 } //Z#521 + /* Indian/Comoro */ :int { 48 } //Z#522 + /* Indian/Kerguelen */ :int { 525 } //Z#523 + /* Indian/Mahe */ :int { 267 } //Z#524 /* Indian/Maldives */ :table { trans:intvector { -315636840 } typeOffsets:intvector { 17640, 0, 18000, 0 } typeMap:bin { "01" } - links:intvector { 522, 524 } - } //Z#524 + links:intvector { 523, 525 } + } //Z#525 /* Indian/Mauritius */ :table { trans:intvector { -1988164200, 403041600, 417034800, 1224972000, 1238274000 } typeOffsets:intvector { 13800, 0, 14400, 0, 14400, 3600 } typeMap:bin { "0102010201" } - } //Z#525 - /* Indian/Mayotte */ :int { 48 } //Z#526 - /* Indian/Reunion */ :int { 266 } //Z#527 - /* Iran */ :int { 321 } //Z#528 - /* Israel */ :int { 279 } //Z#529 - /* JST */ :int { 325 } //Z#530 - /* Jamaica */ :int { 142 } //Z#531 - /* Japan */ :int { 325 } //Z#532 - /* Kwajalein */ :int { 573 } //Z#533 - /* Libya */ :int { 56 } //Z#534 + } //Z#526 + /* Indian/Mayotte */ :int { 48 } //Z#527 + /* Indian/Reunion */ :int { 267 } //Z#528 + /* Iran */ :int { 322 } //Z#529 + /* Israel */ :int { 280 } //Z#530 + /* JST */ :int { 326 } //Z#531 + /* Jamaica */ :int { 143 } //Z#532 + /* Japan */ :int { 326 } //Z#533 + /* Kwajalein */ :int { 574 } //Z#534 + /* Libya */ :int { 56 } //Z#535 /* MET */ :table { trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 3600, 0, 3600, 3600 } @@ -2360,11 +2296,11 @@ zoneinfo64:table(nofallback) { finalRule { "C-Eur" } finalRaw:int { 3600 } finalYear:int { 1997 } - } //Z#535 - /* MIT */ :int { 553 } //Z#536 + } //Z#536 + /* MIT */ :int { 554 } //Z#537 /* MST */ :table { typeOffsets:intvector { -25200, 0 } - } //Z#537 + } //Z#538 /* MST7MDT */ :table { trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 } typeOffsets:intvector { -25200, 0, -25200, 3600 } @@ -2372,20 +2308,20 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -25200 } finalYear:int { 2008 } - } //Z#538 - /* Mexico/BajaNorte */ :int { 217 } //Z#539 - /* Mexico/BajaSur */ :int { 160 } //Z#540 - /* Mexico/General */ :int { 165 } //Z#541 - /* NET */ :int { 337 } //Z#542 - /* NST */ :int { 554 } //Z#543 - /* NZ */ :int { 554 } //Z#544 - /* NZ-CHAT */ :int { 556 } //Z#545 - /* Navajo */ :int { 109 } //Z#546 - /* PLT */ :int { 282 } //Z#547 - /* PNT */ :int { 185 } //Z#548 - /* PRC */ :int { 315 } //Z#549 - /* PRT */ :int { 190 } //Z#550 - /* PST */ :int { 151 } //Z#551 + } //Z#539 + /* Mexico/BajaNorte */ :int { 218 } //Z#540 + /* Mexico/BajaSur */ :int { 161 } //Z#541 + /* Mexico/General */ :int { 166 } //Z#542 + /* NET */ :int { 338 } //Z#543 + /* NST */ :int { 555 } //Z#544 + /* NZ */ :int { 555 } //Z#545 + /* NZ-CHAT */ :int { 557 } //Z#546 + /* Navajo */ :int { 110 } //Z#547 + /* PLT */ :int { 283 } //Z#548 + /* PNT */ :int { 186 } //Z#549 + /* PRC */ :int { 316 } //Z#550 + /* PRT */ :int { 191 } //Z#551 + /* PST */ :int { 152 } //Z#552 /* PST8PDT */ :table { trans:intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -765385200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 } typeOffsets:intvector { -28800, 0, -28800, 3600 } @@ -2393,14 +2329,14 @@ zoneinfo64:table(nofallback) { finalRule { "US" } finalRaw:int { -28800 } finalYear:int { 2008 } - } //Z#552 + } //Z#553 /* Pacific/Apia */ :table { transPre32:intvector { -1, 1849542912 } trans:intvector { -1861878784, -631110600, 1285498800, 1301752800, 1316872800, 1325239200, 1333202400, 1348927200, 1365256800, 1380376800, 1396706400, 1411826400, 1428156000, 1443276000, 1459605600, 1474725600, 1491055200, 1506175200, 1522504800, 1538229600, 1554559200, 1569679200, 1586008800, 1601128800, 1617458400 } typeOffsets:intvector { 45184, 0, -41400, 0, -41216, 0, -39600, 0, -39600, 3600, 46800, 0, 46800, 3600 } typeMap:bin { "0201030403040605060506050605060506050605060506050605" } - links:intvector { 536, 553 } - } //Z#553 + links:intvector { 537, 554 } + } //Z#554 /* Pacific/Auckland */ :table { transPre32:intvector { -1, 1102531752 } trans:intvector { -1330335000, -1320057000, -1300699800, -1287396000, -1269250200, -1255946400, -1237800600, -1224496800, -1206351000, -1192442400, -1174901400, -1160992800, -1143451800, -1125914400, -1112607000, -1094464800, -1081157400, -1063015200, -1049707800, -1031565600, -1018258200, -1000116000, -986808600, -968061600, -955359000, -936612000, -923304600, -757425600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 } @@ -2409,14 +2345,14 @@ zoneinfo64:table(nofallback) { finalRule { "NZ" } finalRaw:int { 43200 } finalYear:int { 2009 } - links:intvector { 231, 234, 543, 544, 554 } - } //Z#554 + links:intvector { 232, 235, 544, 545, 555 } + } //Z#555 /* Pacific/Bougainville */ :table { transPre32:intvector { -1, 1454789160, -1, 1928176784 } trans:intvector { -868010400, -768906000, 1419696000 } typeOffsets:intvector { 37336, 0, 32400, 0, 35312, 0, 36000, 0, 39600, 0 } typeMap:bin { "0203010304" } - } //Z#555 + } //Z#556 /* Pacific/Chatham */ :table { transPre32:intvector { -1, 1102529668 } trans:intvector { -757426500, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 } @@ -2425,9 +2361,9 @@ zoneinfo64:table(nofallback) { finalRule { "Chatham" } finalRaw:int { 45900 } finalYear:int { 2009 } - links:intvector { 545, 556 } - } //Z#556 - /* Pacific/Chuuk */ :int { 586 } //Z#557 + links:intvector { 546, 557 } + } //Z#557 + /* Pacific/Chuuk */ :int { 587 } //Z#558 /* Pacific/Easter */ :table { trans:intvector { -1178124152, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1494730800, 1502596800, 1526180400, 1534046400, 1554606000, 1567915200, 1586055600, 1599364800, 1617505200, 1630814400, 1648954800, 1662868800, 1680404400, 1693713600 } typeOffsets:intvector { -26248, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 } @@ -2435,102 +2371,99 @@ zoneinfo64:table(nofallback) { finalRule { "Chile" } finalRaw:int { -21600 } finalYear:int { 2024 } - links:intvector { 395, 558 } - } //Z#558 + links:intvector { 396, 559 } + } //Z#559 /* Pacific/Efate */ :table { trans:intvector { -1829387596, 125409600, 133876800, 433256400, 448977600, 464706000, 480427200, 496760400, 511876800, 528210000, 543931200, 559659600, 575380800, 591109200, 606830400, 622558800, 638280000, 654008400, 669729600, 686062800, 696340800, 719931600, 727790400 } typeOffsets:intvector { 40396, 0, 39600, 0, 39600, 3600 } typeMap:bin { "0102010201020102010201020102010201020102010201" } - } //Z#559 - /* Pacific/Enderbury */ :int { 570 } //Z#560 + } //Z#560 + /* Pacific/Enderbury */ :int { 571 } //Z#561 /* Pacific/Fakaofo */ :table { transPre32:intvector { -1, 2117555592 } trans:intvector { 1325242800 } typeOffsets:intvector { -41096, 0, -39600, 0, 46800, 0 } typeMap:bin { "0102" } - } //Z#561 + } //Z#562 /* Pacific/Fiji */ :table { - trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000, 1452952800, 1478354400, 1484402400, 1509804000, 1515852000, 1541253600, 1547301600, 1573308000, 1578751200, 1608386400, 1610805600, 1668261600, 1673704800, 1699711200 } + trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000, 1452952800, 1478354400, 1484402400, 1509804000, 1515852000, 1541253600, 1547301600, 1573308000, 1578751200, 1608386400, 1610805600 } typeOffsets:intvector { 42944, 0, 43200, 0, 43200, 3600 } - typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102" } - finalRule { "Fiji" } - finalRaw:int { 43200 } - finalYear:int { 2024 } - } //Z#562 - /* Pacific/Funafuti */ :int { 591 } //Z#563 + typeMap:bin { "0102010201020102010201020102010201020102010201020102010201" } + } //Z#563 + /* Pacific/Funafuti */ :int { 592 } //Z#564 /* Pacific/Galapagos */ :table { trans:intvector { -1230746496, 504939600, 722930400, 728888400 } typeOffsets:intvector { -21504, 0, -21600, 0, -21600, 3600, -18000, 0 } typeMap:bin { "03010201" } - } //Z#564 + } //Z#565 /* Pacific/Gambier */ :table { trans:intvector { -1806678012 } typeOffsets:intvector { -32388, 0, -32400, 0 } typeMap:bin { "01" } - } //Z#565 + } //Z#566 /* Pacific/Guadalcanal */ :table { trans:intvector { -1806748788 } typeOffsets:intvector { 38388, 0, 39600, 0 } typeMap:bin { "01" } - links:intvector { 566, 584, 585, 601 } - } //Z#566 + links:intvector { 567, 585, 586, 602 } + } //Z#567 /* Pacific/Guam */ :table { transPre32:intvector { -1, 350340556, -1, 2117479756 } trans:intvector { -885549600, -802256400, -331891200, -281610000, -73728000, -29415540, -16704000, -10659600, 9907200, 21394800, 41356800, 52844400, 124819200, 130863600, 201888000, 209487660, 230659200, 241542000 } typeOffsets:intvector { -51660, 0, 32400, 0, 34740, 0, 36000, 0, 36000, 3600 } typeMap:bin { "0203010304030403040304030403040304030403" } - links:intvector { 567, 588 } - } //Z#567 + links:intvector { 568, 589 } + } //Z#568 /* Pacific/Honolulu */ :table { transPre32:intvector { -1, 1960865982 } trans:intvector { -1157283000, -1155436200, -880198200, -765376200, -712150200 } typeOffsets:intvector { -37886, 0, -37800, 0, -37800, 3600, -36000, 0 } typeMap:bin { "010201020103" } - links:intvector { 568, 569, 624 } - } //Z#568 - /* Pacific/Johnston */ :int { 568 } //Z#569 + links:intvector { 569, 570, 625 } + } //Z#569 + /* Pacific/Johnston */ :int { 569 } //Z#570 /* Pacific/Kanton */ :table { trans:intvector { -1020470400, 307627200, 788871600 } typeOffsets:intvector { 0, 0, -43200, 0, -39600, 0, 46800, 0 } typeMap:bin { "010203" } - links:intvector { 560, 570 } - } //Z#570 + links:intvector { 561, 571 } + } //Z#571 /* Pacific/Kiritimati */ :table { transPre32:intvector { -1, 2117552256 } trans:intvector { 307622400, 788868000 } typeOffsets:intvector { -37760, 0, -38400, 0, -36000, 0, 50400, 0 } typeMap:bin { "010203" } - } //Z#571 + } //Z#572 /* Pacific/Kosrae */ :table { transPre32:intvector { -1, 350336180, -1, 2117475380 } trans:intvector { -1743678000, -1606813200, -1041418800, -907408800, -770634000, -7988400, 915105600 } typeOffsets:intvector { -47284, 0, 32400, 0, 36000, 0, 39116, 0, 39600, 0, 43200, 0 } typeMap:bin { "030401040201040504" } - } //Z#572 + } //Z#573 /* Pacific/Kwajalein */ :table { transPre32:intvector { -1, 2117474336 } trans:intvector { -1041418800, -907408800, -817462800, -7988400, 745934400 } typeOffsets:intvector { 40160, 0, -43200, 0, 32400, 0, 36000, 0, 39600, 0, 43200, 0 } typeMap:bin { "040302040105" } - links:intvector { 533, 573 } - } //Z#573 - /* Pacific/Majuro */ :int { 591 } //Z#574 + links:intvector { 534, 574 } + } //Z#574 + /* Pacific/Majuro */ :int { 592 } //Z#575 /* Pacific/Marquesas */ :table { trans:intvector { -1806676920 } typeOffsets:intvector { -33480, 0, -34200, 0 } typeMap:bin { "01" } - } //Z#575 - /* Pacific/Midway */ :int { 581 } //Z#576 + } //Z#576 + /* Pacific/Midway */ :int { 582 } //Z#577 /* Pacific/Nauru */ :table { trans:intvector { -1545131260, -862918200, -767350800, 287418600 } typeOffsets:intvector { 40060, 0, 32400, 0, 41400, 0, 43200, 0 } typeMap:bin { "02010203" } - } //Z#577 + } //Z#578 /* Pacific/Niue */ :table { trans:intvector { -543069620, -173623200 } typeOffsets:intvector { -40780, 0, -40800, 0, -39600, 0 } typeMap:bin { "0102" } - } //Z#578 + } //Z#579 /* Pacific/Norfolk */ :table { transPre32:intvector { -1, 2117474184 } trans:intvector { -599656320, 152029800, 162916200, 1443882600, 1570287600, 1586012400, 1601737200 } @@ -2539,75 +2472,75 @@ zoneinfo64:table(nofallback) { finalRule { "AN" } finalRaw:int { 39600 } finalYear:int { 2021 } - } //Z#579 + } //Z#580 /* Pacific/Noumea */ :table { trans:intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 } typeOffsets:intvector { 39948, 0, 39600, 0, 39600, 3600 } typeMap:bin { "01020102010201" } - } //Z#580 + } //Z#581 /* Pacific/Pago_Pago */ :table { transPre32:intvector { -1, 1849542664 } trans:intvector { -1861879032 } typeOffsets:intvector { 45432, 0, -40968, 0, -39600, 0 } typeMap:bin { "0102" } - links:intvector { 576, 581, 589, 630 } - } //Z#581 + links:intvector { 577, 582, 590, 631 } + } //Z#582 /* Pacific/Palau */ :table { transPre32:intvector { -1, 350343020, -1, 2117482220 } typeOffsets:intvector { -54124, 0, 32276, 0, 32400, 0 } typeMap:bin { "0102" } - } //Z#582 + } //Z#583 /* Pacific/Pitcairn */ :table { transPre32:intvector { -1, 2117545716 } trans:intvector { 893665800 } typeOffsets:intvector { -31220, 0, -30600, 0, -28800, 0 } typeMap:bin { "0102" } - } //Z#583 - /* Pacific/Pohnpei */ :int { 566 } //Z#584 - /* Pacific/Ponape */ :int { 566 } //Z#585 + } //Z#584 + /* Pacific/Pohnpei */ :int { 567 } //Z#585 + /* Pacific/Ponape */ :int { 567 } //Z#586 /* Pacific/Port_Moresby */ :table { transPre32:intvector { -1, 1454791176, -1, 1928176784 } typeOffsets:intvector { 35320, 0, 35312, 0, 36000, 0 } typeMap:bin { "0102" } - links:intvector { 228, 557, 586, 593, 596 } - } //Z#586 + links:intvector { 229, 558, 587, 594, 597 } + } //Z#587 /* Pacific/Rarotonga */ :table { transPre32:intvector { -1, 2085412040 } trans:intvector { -543072056, 279714600, 289387800, 309952800, 320837400, 341402400, 352287000, 372852000, 384341400, 404906400, 415791000, 436356000, 447240600, 467805600, 478690200, 499255200, 510139800, 530704800, 541589400, 562154400, 573643800, 594208800, 605093400, 625658400, 636543000, 657108000, 667992600 } typeOffsets:intvector { 48056, 0, -38344, 0, -37800, 0, -36000, 0, -36000, 1800 } typeMap:bin { "01020403040304030403040304030403040304030403040304030403" } - } //Z#587 - /* Pacific/Saipan */ :int { 567 } //Z#588 - /* Pacific/Samoa */ :int { 581 } //Z#589 + } //Z#588 + /* Pacific/Saipan */ :int { 568 } //Z#589 + /* Pacific/Samoa */ :int { 582 } //Z#590 /* Pacific/Tahiti */ :table { trans:intvector { -1806674504 } typeOffsets:intvector { -35896, 0, -36000, 0 } typeMap:bin { "01" } - } //Z#590 + } //Z#591 /* Pacific/Tarawa */ :table { transPre32:intvector { -1, 2117472972 } typeOffsets:intvector { 41524, 0, 43200, 0 } typeMap:bin { "01" } - links:intvector { 563, 574, 591, 594, 595 } - } //Z#591 + links:intvector { 564, 575, 592, 595, 596 } + } //Z#592 /* Pacific/Tongatapu */ :table { trans:intvector { -767189952, -284041200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400, 1478350800, 1484398800 } typeOffsets:intvector { 44352, 0, 44400, 0, 46800, 0, 46800, 3600 } typeMap:bin { "01020302030203020302" } - } //Z#592 - /* Pacific/Truk */ :int { 586 } //Z#593 - /* Pacific/Wake */ :int { 591 } //Z#594 - /* Pacific/Wallis */ :int { 591 } //Z#595 - /* Pacific/Yap */ :int { 586 } //Z#596 - /* Poland */ :int { 500 } //Z#597 - /* Portugal */ :int { 465 } //Z#598 - /* ROC */ :int { 318 } //Z#599 - /* ROK */ :int { 314 } //Z#600 - /* SST */ :int { 566 } //Z#601 - /* Singapore */ :int { 316 } //Z#602 + } //Z#593 + /* Pacific/Truk */ :int { 587 } //Z#594 + /* Pacific/Wake */ :int { 592 } //Z#595 + /* Pacific/Wallis */ :int { 592 } //Z#596 + /* Pacific/Yap */ :int { 587 } //Z#597 + /* Poland */ :int { 501 } //Z#598 + /* Portugal */ :int { 466 } //Z#599 + /* ROC */ :int { 319 } //Z#600 + /* ROK */ :int { 315 } //Z#601 + /* SST */ :int { 567 } //Z#602 + /* Singapore */ :int { 317 } //Z#603 /* SystemV/AST4 */ :table { typeOffsets:intvector { -14400, 0 } - } //Z#603 + } //Z#604 /* SystemV/AST4ADT */ :table { transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 } trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 } @@ -2616,10 +2549,10 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -14400 } finalYear:int { 1977 } - } //Z#604 + } //Z#605 /* SystemV/CST6 */ :table { typeOffsets:intvector { -21600, 0 } - } //Z#605 + } //Z#606 /* SystemV/CST6CDT */ :table { transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 } trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 } @@ -2628,10 +2561,10 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -21600 } finalYear:int { 1977 } - } //Z#606 + } //Z#607 /* SystemV/EST5 */ :table { typeOffsets:intvector { -18000, 0 } - } //Z#607 + } //Z#608 /* SystemV/EST5EDT */ :table { transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 } trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 } @@ -2640,13 +2573,13 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -18000 } finalYear:int { 1977 } - } //Z#608 + } //Z#609 /* SystemV/HST10 */ :table { typeOffsets:intvector { -36000, 0 } - } //Z#609 + } //Z#610 /* SystemV/MST7 */ :table { typeOffsets:intvector { -25200, 0 } - } //Z#610 + } //Z#611 /* SystemV/MST7MDT */ :table { transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 } trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 } @@ -2655,10 +2588,10 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -25200 } finalYear:int { 1977 } - } //Z#611 + } //Z#612 /* SystemV/PST8 */ :table { typeOffsets:intvector { -28800, 0 } - } //Z#612 + } //Z#613 /* SystemV/PST8PDT */ :table { transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 } trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 } @@ -2667,10 +2600,10 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -28800 } finalYear:int { 1977 } - } //Z#613 + } //Z#614 /* SystemV/YST9 */ :table { typeOffsets:intvector { -32400, 0 } - } //Z#614 + } //Z#615 /* SystemV/YST9YDT */ :table { transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 } trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 } @@ -2679,26 +2612,26 @@ zoneinfo64:table(nofallback) { finalRule { "SystemV" } finalRaw:int { -32400 } finalYear:int { 1977 } - } //Z#615 - /* Turkey */ :int { 459 } //Z#616 - /* UCT */ :int { 436 } //Z#617 - /* US/Alaska */ :int { 60 } //Z#618 - /* US/Aleutian */ :int { 59 } //Z#619 - /* US/Arizona */ :int { 185 } //Z#620 - /* US/Central */ :int { 98 } //Z#621 - /* US/East-Indiana */ :int { 131 } //Z#622 - /* US/Eastern */ :int { 173 } //Z#623 - /* US/Hawaii */ :int { 568 } //Z#624 - /* US/Indiana-Starke */ :int { 132 } //Z#625 - /* US/Michigan */ :int { 110 } //Z#626 - /* US/Mountain */ :int { 109 } //Z#627 - /* US/Pacific */ :int { 151 } //Z#628 - /* US/Pacific-New */ :int { 151 } //Z#629 - /* US/Samoa */ :int { 581 } //Z#630 - /* UTC */ :int { 436 } //Z#631 - /* Universal */ :int { 436 } //Z#632 - /* VST */ :int { 272 } //Z#633 - /* W-SU */ :int { 474 } //Z#634 + } //Z#616 + /* Turkey */ :int { 460 } //Z#617 + /* UCT */ :int { 437 } //Z#618 + /* US/Alaska */ :int { 60 } //Z#619 + /* US/Aleutian */ :int { 59 } //Z#620 + /* US/Arizona */ :int { 186 } //Z#621 + /* US/Central */ :int { 98 } //Z#622 + /* US/East-Indiana */ :int { 132 } //Z#623 + /* US/Eastern */ :int { 174 } //Z#624 + /* US/Hawaii */ :int { 569 } //Z#625 + /* US/Indiana-Starke */ :int { 133 } //Z#626 + /* US/Michigan */ :int { 111 } //Z#627 + /* US/Mountain */ :int { 110 } //Z#628 + /* US/Pacific */ :int { 152 } //Z#629 + /* US/Pacific-New */ :int { 152 } //Z#630 + /* US/Samoa */ :int { 582 } //Z#631 + /* UTC */ :int { 437 } //Z#632 + /* Universal */ :int { 437 } //Z#633 + /* VST */ :int { 273 } //Z#634 + /* W-SU */ :int { 475 } //Z#635 /* WET */ :table { trans:intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 } typeOffsets:intvector { 0, 0, 0, 3600 } @@ -2706,8 +2639,8 @@ zoneinfo64:table(nofallback) { finalRule { "EU" } finalRaw:int { 0 } finalYear:int { 1997 } - } //Z#635 - /* Zulu */ :int { 436 } //Z#636 + } //Z#636 + /* Zulu */ :int { 437 } //Z#637 } Names { "ACT","AET","AGT","ART","AST","Africa/Abidjan","Africa/Accra" // 6 @@ -2742,160 +2675,160 @@ zoneinfo64:table(nofallback) { ,"America/Boise","America/Buenos_Aires","America/Cambridge_Bay" // 91 ,"America/Campo_Grande","America/Cancun","America/Caracas" // 94 ,"America/Catamarca","America/Cayenne","America/Cayman" // 97 - ,"America/Chicago","America/Chihuahua","America/Coral_Harbour" // 100 - ,"America/Cordoba","America/Costa_Rica","America/Creston" // 103 - ,"America/Cuiaba","America/Curacao","America/Danmarkshavn" // 106 - ,"America/Dawson","America/Dawson_Creek","America/Denver" // 109 - ,"America/Detroit","America/Dominica","America/Edmonton" // 112 - ,"America/Eirunepe","America/El_Salvador","America/Ensenada" // 115 - ,"America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza" // 118 - ,"America/Glace_Bay","America/Godthab","America/Goose_Bay" // 121 - ,"America/Grand_Turk","America/Grenada","America/Guadeloupe" // 124 - ,"America/Guatemala","America/Guayaquil","America/Guyana" // 127 - ,"America/Halifax","America/Havana","America/Hermosillo" // 130 - ,"America/Indiana/Indianapolis","America/Indiana/Knox" // 132 - ,"America/Indiana/Marengo","America/Indiana/Petersburg" // 134 - ,"America/Indiana/Tell_City","America/Indiana/Vevay" // 136 - ,"America/Indiana/Vincennes","America/Indiana/Winamac" // 138 - ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 141 - ,"America/Jamaica","America/Jujuy","America/Juneau" // 144 - ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 146 - ,"America/Knox_IN","America/Kralendijk","America/La_Paz" // 149 - ,"America/Lima","America/Los_Angeles","America/Louisville" // 152 - ,"America/Lower_Princes","America/Maceio","America/Managua" // 155 - ,"America/Manaus","America/Marigot","America/Martinique" // 158 - ,"America/Matamoros","America/Mazatlan","America/Mendoza" // 161 - ,"America/Menominee","America/Merida","America/Metlakatla" // 164 - ,"America/Mexico_City","America/Miquelon","America/Moncton" // 167 - ,"America/Monterrey","America/Montevideo","America/Montreal" // 170 - ,"America/Montserrat","America/Nassau","America/New_York" // 173 - ,"America/Nipigon","America/Nome","America/Noronha" // 176 - ,"America/North_Dakota/Beulah","America/North_Dakota/Center" // 178 - ,"America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga" // 181 - ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 184 - ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 187 - ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 190 - ,"America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet" // 193 - ,"America/Recife","America/Regina","America/Resolute" // 196 - ,"America/Rio_Branco","America/Rosario","America/Santa_Isabel" // 199 - ,"America/Santarem","America/Santiago","America/Santo_Domingo" // 202 - ,"America/Sao_Paulo","America/Scoresbysund","America/Shiprock" // 205 - ,"America/Sitka","America/St_Barthelemy","America/St_Johns" // 208 - ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 211 - ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 214 - ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 217 - ,"America/Toronto","America/Tortola","America/Vancouver" // 220 - ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 223 - ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 226 - ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie" // 229 - ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 232 - ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 235 - ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 238 - ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 242 - ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 246 - ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 250 - ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 254 - ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 258 - ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 262 - ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 266 - ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 270 - ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 273 - ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 277 - ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 281 - ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 285 - ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 288 - ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 292 - ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 296 - ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 300 - ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 304 - ,"Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda" // 308 - ,"Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin" // 312 - ,"Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore" // 316 - ,"Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent" // 319 - ,"Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu" // 323 - ,"Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang" // 327 - ,"Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi" // 330 - ,"Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok" // 333 - ,"Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 336 - ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 339 - ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 342 - ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 345 - ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 348 - ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 351 - ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 354 - ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 357 - ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 360 - ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 363 - ,"Australia/North","Australia/Perth","Australia/Queensland" // 366 - ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 369 - ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 372 - ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 377 - ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 384 - ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 387 - ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 390 - ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 393 - ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 397 - ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 404 - ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 408 - ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 413 - ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 418 - ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 422 - ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 426 - ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 431 - ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 436 - ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 440 - ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 443 - ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 446 - ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 449 - ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 452 - ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 455 - ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 458 - ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 461 - ,"Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon" // 465 - ,"Europe/Ljubljana","Europe/London","Europe/Luxembourg" // 468 - ,"Europe/Madrid","Europe/Malta","Europe/Mariehamn" // 471 - ,"Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia" // 475 - ,"Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague" // 479 - ,"Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino" // 483 - ,"Europe/Sarajevo","Europe/Saratov","Europe/Simferopol" // 486 - ,"Europe/Skopje","Europe/Sofia","Europe/Stockholm" // 489 - ,"Europe/Tallinn","Europe/Tirane","Europe/Tiraspol" // 492 - ,"Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz" // 495 - ,"Europe/Vatican","Europe/Vienna","Europe/Vilnius" // 498 - ,"Europe/Volgograd","Europe/Warsaw","Europe/Zagreb" // 501 - ,"Europe/Zaporozhye","Europe/Zurich","Factory","GB" // 505 - ,"GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich" // 511 - ,"HST","Hongkong","IET","IST","Iceland","Indian/Antananarivo" // 517 - ,"Indian/Chagos","Indian/Christmas","Indian/Cocos" // 520 - ,"Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 524 - ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 527 - ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 533 - ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 539 - ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 544 - ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 552 - ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 555 - ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 558 - ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 561 - ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 564 - ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 567 - ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton" // 570 - ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 573 - ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 576 - ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 580 - ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 583 - ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 586 - ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 589 - ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 592 - ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 596 - ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 602 - ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 606 - ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 610 - ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 613 - ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 618 - ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 622 - ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 626 - ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 630 - ,"UTC","Universal","VST","W-SU","WET","Zulu" // 636 + ,"America/Chicago","America/Chihuahua","America/Ciudad_Juarez" // 100 + ,"America/Coral_Harbour","America/Cordoba","America/Costa_Rica" // 103 + ,"America/Creston","America/Cuiaba","America/Curacao" // 106 + ,"America/Danmarkshavn","America/Dawson","America/Dawson_Creek" // 109 + ,"America/Denver","America/Detroit","America/Dominica" // 112 + ,"America/Edmonton","America/Eirunepe","America/El_Salvador" // 115 + ,"America/Ensenada","America/Fort_Nelson","America/Fort_Wayne" // 118 + ,"America/Fortaleza","America/Glace_Bay","America/Godthab" // 121 + ,"America/Goose_Bay","America/Grand_Turk","America/Grenada" // 124 + ,"America/Guadeloupe","America/Guatemala","America/Guayaquil" // 127 + ,"America/Guyana","America/Halifax","America/Havana" // 130 + ,"America/Hermosillo","America/Indiana/Indianapolis" // 132 + ,"America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg" // 135 + ,"America/Indiana/Tell_City","America/Indiana/Vevay" // 137 + ,"America/Indiana/Vincennes","America/Indiana/Winamac" // 139 + ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 142 + ,"America/Jamaica","America/Jujuy","America/Juneau" // 145 + ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 147 + ,"America/Knox_IN","America/Kralendijk","America/La_Paz" // 150 + ,"America/Lima","America/Los_Angeles","America/Louisville" // 153 + ,"America/Lower_Princes","America/Maceio","America/Managua" // 156 + ,"America/Manaus","America/Marigot","America/Martinique" // 159 + ,"America/Matamoros","America/Mazatlan","America/Mendoza" // 162 + ,"America/Menominee","America/Merida","America/Metlakatla" // 165 + ,"America/Mexico_City","America/Miquelon","America/Moncton" // 168 + ,"America/Monterrey","America/Montevideo","America/Montreal" // 171 + ,"America/Montserrat","America/Nassau","America/New_York" // 174 + ,"America/Nipigon","America/Nome","America/Noronha" // 177 + ,"America/North_Dakota/Beulah","America/North_Dakota/Center" // 179 + ,"America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga" // 182 + ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 185 + ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 188 + ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 191 + ,"America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet" // 194 + ,"America/Recife","America/Regina","America/Resolute" // 197 + ,"America/Rio_Branco","America/Rosario","America/Santa_Isabel" // 200 + ,"America/Santarem","America/Santiago","America/Santo_Domingo" // 203 + ,"America/Sao_Paulo","America/Scoresbysund","America/Shiprock" // 206 + ,"America/Sitka","America/St_Barthelemy","America/St_Johns" // 209 + ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 212 + ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 215 + ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 218 + ,"America/Toronto","America/Tortola","America/Vancouver" // 221 + ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 224 + ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 227 + ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie" // 230 + ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 233 + ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 236 + ,"Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen" // 239 + ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 243 + ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 247 + ,"Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 251 + ,"Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek" // 255 + ,"Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan" // 259 + ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 263 + ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 267 + ,"Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin" // 271 + ,"Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 274 + ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 278 + ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 282 + ,"Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu" // 286 + ,"Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk" // 289 + ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 293 + ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 297 + ,"Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk" // 301 + ,"Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak" // 305 + ,"Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda" // 309 + ,"Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin" // 313 + ,"Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore" // 317 + ,"Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent" // 320 + ,"Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu" // 324 + ,"Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang" // 328 + ,"Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi" // 331 + ,"Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok" // 334 + ,"Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg" // 337 + ,"Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda" // 340 + ,"Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe" // 343 + ,"Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira" // 346 + ,"Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena" // 349 + ,"Atlantic/Stanley","Australia/ACT","Australia/Adelaide" // 352 + ,"Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra" // 355 + ,"Australia/Currie","Australia/Darwin","Australia/Eucla" // 358 + ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 361 + ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 364 + ,"Australia/North","Australia/Perth","Australia/Queensland" // 367 + ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 370 + ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 373 + ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 378 + ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 385 + ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 388 + ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 391 + ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 394 + ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 398 + ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 405 + ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 409 + ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 414 + ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 419 + ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 423 + ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 427 + ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 432 + ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 437 + ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 441 + ,"Europe/Andorra","Europe/Astrakhan","Europe/Athens" // 444 + ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 447 + ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 450 + ,"Europe/Budapest","Europe/Busingen","Europe/Chisinau" // 453 + ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 456 + ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 459 + ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 462 + ,"Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon" // 466 + ,"Europe/Ljubljana","Europe/London","Europe/Luxembourg" // 469 + ,"Europe/Madrid","Europe/Malta","Europe/Mariehamn" // 472 + ,"Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia" // 476 + ,"Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague" // 480 + ,"Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino" // 484 + ,"Europe/Sarajevo","Europe/Saratov","Europe/Simferopol" // 487 + ,"Europe/Skopje","Europe/Sofia","Europe/Stockholm" // 490 + ,"Europe/Tallinn","Europe/Tirane","Europe/Tiraspol" // 493 + ,"Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz" // 496 + ,"Europe/Vatican","Europe/Vienna","Europe/Vilnius" // 499 + ,"Europe/Volgograd","Europe/Warsaw","Europe/Zagreb" // 502 + ,"Europe/Zaporozhye","Europe/Zurich","Factory","GB" // 506 + ,"GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich" // 512 + ,"HST","Hongkong","IET","IST","Iceland","Indian/Antananarivo" // 518 + ,"Indian/Chagos","Indian/Christmas","Indian/Cocos" // 521 + ,"Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 525 + ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 528 + ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 534 + ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 540 + ,"Mexico/BajaSur","Mexico/General","NET","NST","NZ" // 545 + ,"NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST","PST8PDT" // 553 + ,"Pacific/Apia","Pacific/Auckland","Pacific/Bougainville" // 556 + ,"Pacific/Chatham","Pacific/Chuuk","Pacific/Easter" // 559 + ,"Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo" // 562 + ,"Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos" // 565 + ,"Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam" // 568 + ,"Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton" // 571 + ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 574 + ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 577 + ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 581 + ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 584 + ,"Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby" // 587 + ,"Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa" // 590 + ,"Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu" // 593 + ,"Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap" // 597 + ,"Poland","Portugal","ROC","ROK","SST","Singapore" // 603 + ,"SystemV/AST4","SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 607 + ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 611 + ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 614 + ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 619 + ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 623 + ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 627 + ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 631 + ,"UTC","Universal","VST","W-SU","WET","Zulu" // 637 } Rules { AN:intvector { @@ -2931,54 +2864,45 @@ zoneinfo64:table(nofallback) { EUAsia:intvector { 2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600 } //_#10 - Fiji:intvector { - 10, 8, -1, 7200, 0, 0, 12, -1, 10800, 0, 3600 + Egypt:intvector { + 3, -30, -6, 0, 0, 9, -31, -5, 86400, 0, 3600 } //_#11 Haiti:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 } //_#12 - Jordan:intvector { - 1, -29, -5, 86400, 0, 9, -31, -6, 0, 1, 3600 - } //_#13 LH:intvector { 9, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 1800 - } //_#14 + } //_#13 Lebanon:intvector { 2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600 - } //_#15 - Mexico:intvector { - 3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#16 + } //_#14 Moldova:intvector { 2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600 - } //_#17 + } //_#15 NZ:intvector { 8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600 - } //_#18 + } //_#16 Palestine:intvector { - 2, 25, -1, 0, 0, 9, 23, -6, 3600, 0, 3600 - } //_#19 + 2, -30, -7, 7200, 0, 9, -30, -7, 7200, 0, 3600 + } //_#17 Para:intvector { 9, 1, -1, 0, 0, 2, 22, -1, 0, 0, 3600 - } //_#20 - Syria:intvector { - 2, -31, -6, 0, 0, 9, -31, -6, 0, 0, 3600 - } //_#21 + } //_#18 SystemV:intvector { 3, -30, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#22 + } //_#19 Thule:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#23 + } //_#20 Troll:intvector { 2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 7200 - } //_#24 + } //_#21 US:intvector { 2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600 - } //_#25 + } //_#22 Zion:intvector { 2, 23, -6, 7200, 0, 9, -31, -1, 7200, 0, 3600 - } //_#26 + } //_#23 } Regions:array { "AU", //Z#0 ACT @@ -3036,7 +2960,7 @@ zoneinfo64:table(nofallback) { "BF", //Z#52 Africa/Ouagadougou "BJ", //Z#53 Africa/Porto-Novo "ST", //Z#54 Africa/Sao_Tome - "CI", //Z#55 Africa/Timbuktu + "ML", //Z#55 Africa/Timbuktu "LY", //Z#56 Africa/Tripoli "TN", //Z#57 Africa/Tunis "NA", //Z#58 Africa/Windhoek @@ -3081,542 +3005,543 @@ zoneinfo64:table(nofallback) { "KY", //Z#97 America/Cayman "US", //Z#98 America/Chicago "MX", //Z#99 America/Chihuahua - "CA", //Z#100 America/Coral_Harbour - "AR", //Z#101 America/Cordoba - "CR", //Z#102 America/Costa_Rica - "CA", //Z#103 America/Creston - "BR", //Z#104 America/Cuiaba - "CW", //Z#105 America/Curacao - "GL", //Z#106 America/Danmarkshavn - "CA", //Z#107 America/Dawson - "CA", //Z#108 America/Dawson_Creek - "US", //Z#109 America/Denver - "US", //Z#110 America/Detroit - "DM", //Z#111 America/Dominica - "CA", //Z#112 America/Edmonton - "BR", //Z#113 America/Eirunepe - "SV", //Z#114 America/El_Salvador - "MX", //Z#115 America/Ensenada - "CA", //Z#116 America/Fort_Nelson - "US", //Z#117 America/Fort_Wayne - "BR", //Z#118 America/Fortaleza - "CA", //Z#119 America/Glace_Bay - "GL", //Z#120 America/Godthab - "CA", //Z#121 America/Goose_Bay - "TC", //Z#122 America/Grand_Turk - "GD", //Z#123 America/Grenada - "GP", //Z#124 America/Guadeloupe - "GT", //Z#125 America/Guatemala - "EC", //Z#126 America/Guayaquil - "GY", //Z#127 America/Guyana - "CA", //Z#128 America/Halifax - "CU", //Z#129 America/Havana - "MX", //Z#130 America/Hermosillo - "US", //Z#131 America/Indiana/Indianapolis - "US", //Z#132 America/Indiana/Knox - "US", //Z#133 America/Indiana/Marengo - "US", //Z#134 America/Indiana/Petersburg - "US", //Z#135 America/Indiana/Tell_City - "US", //Z#136 America/Indiana/Vevay - "US", //Z#137 America/Indiana/Vincennes - "US", //Z#138 America/Indiana/Winamac - "US", //Z#139 America/Indianapolis - "CA", //Z#140 America/Inuvik - "CA", //Z#141 America/Iqaluit - "JM", //Z#142 America/Jamaica - "AR", //Z#143 America/Jujuy - "US", //Z#144 America/Juneau - "US", //Z#145 America/Kentucky/Louisville - "US", //Z#146 America/Kentucky/Monticello - "US", //Z#147 America/Knox_IN - "BQ", //Z#148 America/Kralendijk - "BO", //Z#149 America/La_Paz - "PE", //Z#150 America/Lima - "US", //Z#151 America/Los_Angeles - "US", //Z#152 America/Louisville - "SX", //Z#153 America/Lower_Princes - "BR", //Z#154 America/Maceio - "NI", //Z#155 America/Managua - "BR", //Z#156 America/Manaus - "MF", //Z#157 America/Marigot - "MQ", //Z#158 America/Martinique - "MX", //Z#159 America/Matamoros - "MX", //Z#160 America/Mazatlan - "AR", //Z#161 America/Mendoza - "US", //Z#162 America/Menominee - "MX", //Z#163 America/Merida - "US", //Z#164 America/Metlakatla - "MX", //Z#165 America/Mexico_City - "PM", //Z#166 America/Miquelon - "CA", //Z#167 America/Moncton - "MX", //Z#168 America/Monterrey - "UY", //Z#169 America/Montevideo - "CA", //Z#170 America/Montreal - "MS", //Z#171 America/Montserrat - "BS", //Z#172 America/Nassau - "US", //Z#173 America/New_York - "CA", //Z#174 America/Nipigon - "US", //Z#175 America/Nome - "BR", //Z#176 America/Noronha - "US", //Z#177 America/North_Dakota/Beulah - "US", //Z#178 America/North_Dakota/Center - "US", //Z#179 America/North_Dakota/New_Salem - "GL", //Z#180 America/Nuuk - "MX", //Z#181 America/Ojinaga - "PA", //Z#182 America/Panama - "CA", //Z#183 America/Pangnirtung - "SR", //Z#184 America/Paramaribo - "US", //Z#185 America/Phoenix - "HT", //Z#186 America/Port-au-Prince - "TT", //Z#187 America/Port_of_Spain - "BR", //Z#188 America/Porto_Acre - "BR", //Z#189 America/Porto_Velho - "PR", //Z#190 America/Puerto_Rico - "CL", //Z#191 America/Punta_Arenas - "CA", //Z#192 America/Rainy_River - "CA", //Z#193 America/Rankin_Inlet - "BR", //Z#194 America/Recife - "CA", //Z#195 America/Regina - "CA", //Z#196 America/Resolute - "BR", //Z#197 America/Rio_Branco - "AR", //Z#198 America/Rosario - "MX", //Z#199 America/Santa_Isabel - "BR", //Z#200 America/Santarem - "CL", //Z#201 America/Santiago - "DO", //Z#202 America/Santo_Domingo - "BR", //Z#203 America/Sao_Paulo - "GL", //Z#204 America/Scoresbysund - "US", //Z#205 America/Shiprock - "US", //Z#206 America/Sitka - "BL", //Z#207 America/St_Barthelemy - "CA", //Z#208 America/St_Johns - "KN", //Z#209 America/St_Kitts - "LC", //Z#210 America/St_Lucia - "VI", //Z#211 America/St_Thomas - "VC", //Z#212 America/St_Vincent - "CA", //Z#213 America/Swift_Current - "HN", //Z#214 America/Tegucigalpa - "GL", //Z#215 America/Thule - "CA", //Z#216 America/Thunder_Bay - "MX", //Z#217 America/Tijuana - "CA", //Z#218 America/Toronto - "VG", //Z#219 America/Tortola - "CA", //Z#220 America/Vancouver - "VI", //Z#221 America/Virgin - "CA", //Z#222 America/Whitehorse - "CA", //Z#223 America/Winnipeg - "US", //Z#224 America/Yakutat - "CA", //Z#225 America/Yellowknife - "AQ", //Z#226 Antarctica/Casey - "AQ", //Z#227 Antarctica/Davis - "AQ", //Z#228 Antarctica/DumontDUrville - "AU", //Z#229 Antarctica/Macquarie - "AQ", //Z#230 Antarctica/Mawson - "AQ", //Z#231 Antarctica/McMurdo - "AQ", //Z#232 Antarctica/Palmer - "AQ", //Z#233 Antarctica/Rothera - "NZ", //Z#234 Antarctica/South_Pole - "AQ", //Z#235 Antarctica/Syowa - "AQ", //Z#236 Antarctica/Troll - "AQ", //Z#237 Antarctica/Vostok - "SJ", //Z#238 Arctic/Longyearbyen - "YE", //Z#239 Asia/Aden - "KZ", //Z#240 Asia/Almaty - "JO", //Z#241 Asia/Amman - "RU", //Z#242 Asia/Anadyr - "KZ", //Z#243 Asia/Aqtau - "KZ", //Z#244 Asia/Aqtobe - "TM", //Z#245 Asia/Ashgabat - "TM", //Z#246 Asia/Ashkhabad - "KZ", //Z#247 Asia/Atyrau - "IQ", //Z#248 Asia/Baghdad - "BH", //Z#249 Asia/Bahrain - "AZ", //Z#250 Asia/Baku - "TH", //Z#251 Asia/Bangkok - "RU", //Z#252 Asia/Barnaul - "LB", //Z#253 Asia/Beirut - "KG", //Z#254 Asia/Bishkek - "BN", //Z#255 Asia/Brunei - "IN", //Z#256 Asia/Calcutta - "RU", //Z#257 Asia/Chita - "MN", //Z#258 Asia/Choibalsan - "CN", //Z#259 Asia/Chongqing - "CN", //Z#260 Asia/Chungking - "LK", //Z#261 Asia/Colombo - "BD", //Z#262 Asia/Dacca - "SY", //Z#263 Asia/Damascus - "BD", //Z#264 Asia/Dhaka - "TL", //Z#265 Asia/Dili - "AE", //Z#266 Asia/Dubai - "TJ", //Z#267 Asia/Dushanbe - "CY", //Z#268 Asia/Famagusta - "PS", //Z#269 Asia/Gaza - "CN", //Z#270 Asia/Harbin - "PS", //Z#271 Asia/Hebron - "VN", //Z#272 Asia/Ho_Chi_Minh - "HK", //Z#273 Asia/Hong_Kong - "MN", //Z#274 Asia/Hovd - "RU", //Z#275 Asia/Irkutsk - "TR", //Z#276 Asia/Istanbul - "ID", //Z#277 Asia/Jakarta - "ID", //Z#278 Asia/Jayapura - "IL", //Z#279 Asia/Jerusalem - "AF", //Z#280 Asia/Kabul - "RU", //Z#281 Asia/Kamchatka - "PK", //Z#282 Asia/Karachi - "CN", //Z#283 Asia/Kashgar - "NP", //Z#284 Asia/Kathmandu - "NP", //Z#285 Asia/Katmandu - "RU", //Z#286 Asia/Khandyga - "IN", //Z#287 Asia/Kolkata - "RU", //Z#288 Asia/Krasnoyarsk - "MY", //Z#289 Asia/Kuala_Lumpur - "MY", //Z#290 Asia/Kuching - "KW", //Z#291 Asia/Kuwait - "MO", //Z#292 Asia/Macao - "MO", //Z#293 Asia/Macau - "RU", //Z#294 Asia/Magadan - "ID", //Z#295 Asia/Makassar - "PH", //Z#296 Asia/Manila - "OM", //Z#297 Asia/Muscat - "CY", //Z#298 Asia/Nicosia - "RU", //Z#299 Asia/Novokuznetsk - "RU", //Z#300 Asia/Novosibirsk - "RU", //Z#301 Asia/Omsk - "KZ", //Z#302 Asia/Oral - "KH", //Z#303 Asia/Phnom_Penh - "ID", //Z#304 Asia/Pontianak - "KP", //Z#305 Asia/Pyongyang - "QA", //Z#306 Asia/Qatar - "KZ", //Z#307 Asia/Qostanay - "KZ", //Z#308 Asia/Qyzylorda - "MM", //Z#309 Asia/Rangoon - "SA", //Z#310 Asia/Riyadh - "VN", //Z#311 Asia/Saigon - "RU", //Z#312 Asia/Sakhalin - "UZ", //Z#313 Asia/Samarkand - "KR", //Z#314 Asia/Seoul - "CN", //Z#315 Asia/Shanghai - "SG", //Z#316 Asia/Singapore - "RU", //Z#317 Asia/Srednekolymsk - "TW", //Z#318 Asia/Taipei - "UZ", //Z#319 Asia/Tashkent - "GE", //Z#320 Asia/Tbilisi - "IR", //Z#321 Asia/Tehran - "IL", //Z#322 Asia/Tel_Aviv - "BT", //Z#323 Asia/Thimbu - "BT", //Z#324 Asia/Thimphu - "JP", //Z#325 Asia/Tokyo - "RU", //Z#326 Asia/Tomsk - "ID", //Z#327 Asia/Ujung_Pandang - "MN", //Z#328 Asia/Ulaanbaatar - "MN", //Z#329 Asia/Ulan_Bator - "CN", //Z#330 Asia/Urumqi - "RU", //Z#331 Asia/Ust-Nera - "LA", //Z#332 Asia/Vientiane - "RU", //Z#333 Asia/Vladivostok - "RU", //Z#334 Asia/Yakutsk - "MM", //Z#335 Asia/Yangon - "RU", //Z#336 Asia/Yekaterinburg - "AM", //Z#337 Asia/Yerevan - "PT", //Z#338 Atlantic/Azores - "BM", //Z#339 Atlantic/Bermuda - "ES", //Z#340 Atlantic/Canary - "CV", //Z#341 Atlantic/Cape_Verde - "FO", //Z#342 Atlantic/Faeroe - "FO", //Z#343 Atlantic/Faroe - "DE", //Z#344 Atlantic/Jan_Mayen - "PT", //Z#345 Atlantic/Madeira - "IS", //Z#346 Atlantic/Reykjavik - "GS", //Z#347 Atlantic/South_Georgia - "SH", //Z#348 Atlantic/St_Helena - "FK", //Z#349 Atlantic/Stanley - "AU", //Z#350 Australia/ACT - "AU", //Z#351 Australia/Adelaide - "AU", //Z#352 Australia/Brisbane - "AU", //Z#353 Australia/Broken_Hill - "AU", //Z#354 Australia/Canberra - "AU", //Z#355 Australia/Currie - "AU", //Z#356 Australia/Darwin - "AU", //Z#357 Australia/Eucla - "AU", //Z#358 Australia/Hobart - "AU", //Z#359 Australia/LHI - "AU", //Z#360 Australia/Lindeman - "AU", //Z#361 Australia/Lord_Howe - "AU", //Z#362 Australia/Melbourne - "AU", //Z#363 Australia/NSW - "AU", //Z#364 Australia/North - "AU", //Z#365 Australia/Perth - "AU", //Z#366 Australia/Queensland - "AU", //Z#367 Australia/South - "AU", //Z#368 Australia/Sydney - "AU", //Z#369 Australia/Tasmania - "AU", //Z#370 Australia/Victoria - "AU", //Z#371 Australia/West - "AU", //Z#372 Australia/Yancowinna - "BR", //Z#373 BET - "BD", //Z#374 BST - "BR", //Z#375 Brazil/Acre - "BR", //Z#376 Brazil/DeNoronha - "BR", //Z#377 Brazil/East - "BR", //Z#378 Brazil/West - "MZ", //Z#379 CAT - "001",//Z#380 CET - "CA", //Z#381 CNT - "US", //Z#382 CST - "001",//Z#383 CST6CDT - "CN", //Z#384 CTT - "CA", //Z#385 Canada/Atlantic - "CA", //Z#386 Canada/Central - "CA", //Z#387 Canada/East-Saskatchewan - "CA", //Z#388 Canada/Eastern - "CA", //Z#389 Canada/Mountain - "CA", //Z#390 Canada/Newfoundland - "CA", //Z#391 Canada/Pacific - "CA", //Z#392 Canada/Saskatchewan - "CA", //Z#393 Canada/Yukon - "CL", //Z#394 Chile/Continental - "CL", //Z#395 Chile/EasterIsland - "CU", //Z#396 Cuba - "KE", //Z#397 EAT - "FR", //Z#398 ECT - "001",//Z#399 EET - "001",//Z#400 EST - "001",//Z#401 EST5EDT - "EG", //Z#402 Egypt - "IE", //Z#403 Eire - "001",//Z#404 Etc/GMT - "001",//Z#405 Etc/GMT+0 - "001",//Z#406 Etc/GMT+1 - "001",//Z#407 Etc/GMT+10 - "001",//Z#408 Etc/GMT+11 - "001",//Z#409 Etc/GMT+12 - "001",//Z#410 Etc/GMT+2 - "001",//Z#411 Etc/GMT+3 - "001",//Z#412 Etc/GMT+4 - "001",//Z#413 Etc/GMT+5 - "001",//Z#414 Etc/GMT+6 - "001",//Z#415 Etc/GMT+7 - "001",//Z#416 Etc/GMT+8 - "001",//Z#417 Etc/GMT+9 - "001",//Z#418 Etc/GMT-0 - "001",//Z#419 Etc/GMT-1 - "001",//Z#420 Etc/GMT-10 - "001",//Z#421 Etc/GMT-11 - "001",//Z#422 Etc/GMT-12 - "001",//Z#423 Etc/GMT-13 - "001",//Z#424 Etc/GMT-14 - "001",//Z#425 Etc/GMT-2 - "001",//Z#426 Etc/GMT-3 - "001",//Z#427 Etc/GMT-4 - "001",//Z#428 Etc/GMT-5 - "001",//Z#429 Etc/GMT-6 - "001",//Z#430 Etc/GMT-7 - "001",//Z#431 Etc/GMT-8 - "001",//Z#432 Etc/GMT-9 - "001",//Z#433 Etc/GMT0 - "001",//Z#434 Etc/Greenwich - "001",//Z#435 Etc/UCT - "001",//Z#436 Etc/UTC - "001",//Z#437 Etc/Universal - "001",//Z#438 Etc/Unknown - "001",//Z#439 Etc/Zulu - "NL", //Z#440 Europe/Amsterdam - "AD", //Z#441 Europe/Andorra - "RU", //Z#442 Europe/Astrakhan - "GR", //Z#443 Europe/Athens - "GB", //Z#444 Europe/Belfast - "RS", //Z#445 Europe/Belgrade - "DE", //Z#446 Europe/Berlin - "SK", //Z#447 Europe/Bratislava - "BE", //Z#448 Europe/Brussels - "RO", //Z#449 Europe/Bucharest - "HU", //Z#450 Europe/Budapest - "DE", //Z#451 Europe/Busingen - "MD", //Z#452 Europe/Chisinau - "DK", //Z#453 Europe/Copenhagen - "IE", //Z#454 Europe/Dublin - "GI", //Z#455 Europe/Gibraltar - "GG", //Z#456 Europe/Guernsey - "FI", //Z#457 Europe/Helsinki - "IM", //Z#458 Europe/Isle_of_Man - "TR", //Z#459 Europe/Istanbul - "JE", //Z#460 Europe/Jersey - "RU", //Z#461 Europe/Kaliningrad - "UA", //Z#462 Europe/Kiev - "RU", //Z#463 Europe/Kirov - "UA", //Z#464 Europe/Kyiv - "PT", //Z#465 Europe/Lisbon - "SI", //Z#466 Europe/Ljubljana - "GB", //Z#467 Europe/London - "LU", //Z#468 Europe/Luxembourg - "ES", //Z#469 Europe/Madrid - "MT", //Z#470 Europe/Malta - "AX", //Z#471 Europe/Mariehamn - "BY", //Z#472 Europe/Minsk - "MC", //Z#473 Europe/Monaco - "RU", //Z#474 Europe/Moscow - "CY", //Z#475 Europe/Nicosia - "NO", //Z#476 Europe/Oslo - "FR", //Z#477 Europe/Paris - "ME", //Z#478 Europe/Podgorica - "CZ", //Z#479 Europe/Prague - "LV", //Z#480 Europe/Riga - "IT", //Z#481 Europe/Rome - "RU", //Z#482 Europe/Samara - "SM", //Z#483 Europe/San_Marino - "BA", //Z#484 Europe/Sarajevo - "RU", //Z#485 Europe/Saratov - "UA", //Z#486 Europe/Simferopol - "MK", //Z#487 Europe/Skopje - "BG", //Z#488 Europe/Sofia - "SE", //Z#489 Europe/Stockholm - "EE", //Z#490 Europe/Tallinn - "AL", //Z#491 Europe/Tirane - "MD", //Z#492 Europe/Tiraspol - "RU", //Z#493 Europe/Ulyanovsk - "UA", //Z#494 Europe/Uzhgorod - "LI", //Z#495 Europe/Vaduz - "VA", //Z#496 Europe/Vatican - "AT", //Z#497 Europe/Vienna - "LT", //Z#498 Europe/Vilnius - "RU", //Z#499 Europe/Volgograd - "PL", //Z#500 Europe/Warsaw - "HR", //Z#501 Europe/Zagreb - "UA", //Z#502 Europe/Zaporozhye - "CH", //Z#503 Europe/Zurich - "001",//Z#504 Factory - "GB", //Z#505 GB - "GB", //Z#506 GB-Eire - "001",//Z#507 GMT - "001",//Z#508 GMT+0 - "001",//Z#509 GMT-0 - "001",//Z#510 GMT0 - "001",//Z#511 Greenwich - "001",//Z#512 HST - "HK", //Z#513 Hongkong - "US", //Z#514 IET - "IN", //Z#515 IST - "CI", //Z#516 Iceland - "MG", //Z#517 Indian/Antananarivo - "IO", //Z#518 Indian/Chagos - "CX", //Z#519 Indian/Christmas - "CC", //Z#520 Indian/Cocos - "KM", //Z#521 Indian/Comoro - "TF", //Z#522 Indian/Kerguelen - "SC", //Z#523 Indian/Mahe - "MV", //Z#524 Indian/Maldives - "MU", //Z#525 Indian/Mauritius - "YT", //Z#526 Indian/Mayotte - "RE", //Z#527 Indian/Reunion - "IR", //Z#528 Iran - "IL", //Z#529 Israel - "JP", //Z#530 JST - "JM", //Z#531 Jamaica - "JP", //Z#532 Japan - "MH", //Z#533 Kwajalein - "LY", //Z#534 Libya - "001",//Z#535 MET - "WS", //Z#536 MIT - "001",//Z#537 MST - "001",//Z#538 MST7MDT - "MX", //Z#539 Mexico/BajaNorte - "MX", //Z#540 Mexico/BajaSur - "MX", //Z#541 Mexico/General - "AM", //Z#542 NET - "NZ", //Z#543 NST - "NZ", //Z#544 NZ - "NZ", //Z#545 NZ-CHAT - "US", //Z#546 Navajo - "PK", //Z#547 PLT - "US", //Z#548 PNT - "CN", //Z#549 PRC - "PR", //Z#550 PRT - "US", //Z#551 PST - "001",//Z#552 PST8PDT - "WS", //Z#553 Pacific/Apia - "NZ", //Z#554 Pacific/Auckland - "PG", //Z#555 Pacific/Bougainville - "NZ", //Z#556 Pacific/Chatham - "FM", //Z#557 Pacific/Chuuk - "CL", //Z#558 Pacific/Easter - "VU", //Z#559 Pacific/Efate - "KI", //Z#560 Pacific/Enderbury - "TK", //Z#561 Pacific/Fakaofo - "FJ", //Z#562 Pacific/Fiji - "TV", //Z#563 Pacific/Funafuti - "EC", //Z#564 Pacific/Galapagos - "PF", //Z#565 Pacific/Gambier - "SB", //Z#566 Pacific/Guadalcanal - "GU", //Z#567 Pacific/Guam - "US", //Z#568 Pacific/Honolulu - "UM", //Z#569 Pacific/Johnston - "KI", //Z#570 Pacific/Kanton - "KI", //Z#571 Pacific/Kiritimati - "FM", //Z#572 Pacific/Kosrae - "MH", //Z#573 Pacific/Kwajalein - "MH", //Z#574 Pacific/Majuro - "PF", //Z#575 Pacific/Marquesas - "UM", //Z#576 Pacific/Midway - "NR", //Z#577 Pacific/Nauru - "NU", //Z#578 Pacific/Niue - "NF", //Z#579 Pacific/Norfolk - "NC", //Z#580 Pacific/Noumea - "AS", //Z#581 Pacific/Pago_Pago - "PW", //Z#582 Pacific/Palau - "PN", //Z#583 Pacific/Pitcairn - "FM", //Z#584 Pacific/Pohnpei - "SB", //Z#585 Pacific/Ponape - "PG", //Z#586 Pacific/Port_Moresby - "CK", //Z#587 Pacific/Rarotonga - "MP", //Z#588 Pacific/Saipan - "AS", //Z#589 Pacific/Samoa - "PF", //Z#590 Pacific/Tahiti - "KI", //Z#591 Pacific/Tarawa - "TO", //Z#592 Pacific/Tongatapu - "PG", //Z#593 Pacific/Truk - "UM", //Z#594 Pacific/Wake - "WF", //Z#595 Pacific/Wallis - "PG", //Z#596 Pacific/Yap - "PL", //Z#597 Poland - "PT", //Z#598 Portugal - "TW", //Z#599 ROC - "KR", //Z#600 ROK - "SB", //Z#601 SST - "SG", //Z#602 Singapore - "001",//Z#603 SystemV/AST4 - "001",//Z#604 SystemV/AST4ADT - "001",//Z#605 SystemV/CST6 - "001",//Z#606 SystemV/CST6CDT - "001",//Z#607 SystemV/EST5 - "001",//Z#608 SystemV/EST5EDT - "001",//Z#609 SystemV/HST10 - "001",//Z#610 SystemV/MST7 - "001",//Z#611 SystemV/MST7MDT - "001",//Z#612 SystemV/PST8 - "001",//Z#613 SystemV/PST8PDT - "001",//Z#614 SystemV/YST9 - "001",//Z#615 SystemV/YST9YDT - "TR", //Z#616 Turkey - "001",//Z#617 UCT - "US", //Z#618 US/Alaska - "US", //Z#619 US/Aleutian - "US", //Z#620 US/Arizona - "US", //Z#621 US/Central - "US", //Z#622 US/East-Indiana - "US", //Z#623 US/Eastern - "US", //Z#624 US/Hawaii - "US", //Z#625 US/Indiana-Starke - "US", //Z#626 US/Michigan - "US", //Z#627 US/Mountain - "US", //Z#628 US/Pacific - "US", //Z#629 US/Pacific-New - "AS", //Z#630 US/Samoa - "001",//Z#631 UTC - "001",//Z#632 Universal - "VN", //Z#633 VST - "RU", //Z#634 W-SU - "001",//Z#635 WET - "001",//Z#636 Zulu + "MX", //Z#100 America/Ciudad_Juarez + "CA", //Z#101 America/Coral_Harbour + "AR", //Z#102 America/Cordoba + "CR", //Z#103 America/Costa_Rica + "CA", //Z#104 America/Creston + "BR", //Z#105 America/Cuiaba + "CW", //Z#106 America/Curacao + "GL", //Z#107 America/Danmarkshavn + "CA", //Z#108 America/Dawson + "CA", //Z#109 America/Dawson_Creek + "US", //Z#110 America/Denver + "US", //Z#111 America/Detroit + "DM", //Z#112 America/Dominica + "CA", //Z#113 America/Edmonton + "BR", //Z#114 America/Eirunepe + "SV", //Z#115 America/El_Salvador + "MX", //Z#116 America/Ensenada + "CA", //Z#117 America/Fort_Nelson + "US", //Z#118 America/Fort_Wayne + "BR", //Z#119 America/Fortaleza + "CA", //Z#120 America/Glace_Bay + "GL", //Z#121 America/Godthab + "CA", //Z#122 America/Goose_Bay + "TC", //Z#123 America/Grand_Turk + "GD", //Z#124 America/Grenada + "GP", //Z#125 America/Guadeloupe + "GT", //Z#126 America/Guatemala + "EC", //Z#127 America/Guayaquil + "GY", //Z#128 America/Guyana + "CA", //Z#129 America/Halifax + "CU", //Z#130 America/Havana + "MX", //Z#131 America/Hermosillo + "US", //Z#132 America/Indiana/Indianapolis + "US", //Z#133 America/Indiana/Knox + "US", //Z#134 America/Indiana/Marengo + "US", //Z#135 America/Indiana/Petersburg + "US", //Z#136 America/Indiana/Tell_City + "US", //Z#137 America/Indiana/Vevay + "US", //Z#138 America/Indiana/Vincennes + "US", //Z#139 America/Indiana/Winamac + "US", //Z#140 America/Indianapolis + "CA", //Z#141 America/Inuvik + "CA", //Z#142 America/Iqaluit + "JM", //Z#143 America/Jamaica + "AR", //Z#144 America/Jujuy + "US", //Z#145 America/Juneau + "US", //Z#146 America/Kentucky/Louisville + "US", //Z#147 America/Kentucky/Monticello + "US", //Z#148 America/Knox_IN + "BQ", //Z#149 America/Kralendijk + "BO", //Z#150 America/La_Paz + "PE", //Z#151 America/Lima + "US", //Z#152 America/Los_Angeles + "US", //Z#153 America/Louisville + "SX", //Z#154 America/Lower_Princes + "BR", //Z#155 America/Maceio + "NI", //Z#156 America/Managua + "BR", //Z#157 America/Manaus + "MF", //Z#158 America/Marigot + "MQ", //Z#159 America/Martinique + "MX", //Z#160 America/Matamoros + "MX", //Z#161 America/Mazatlan + "AR", //Z#162 America/Mendoza + "US", //Z#163 America/Menominee + "MX", //Z#164 America/Merida + "US", //Z#165 America/Metlakatla + "MX", //Z#166 America/Mexico_City + "PM", //Z#167 America/Miquelon + "CA", //Z#168 America/Moncton + "MX", //Z#169 America/Monterrey + "UY", //Z#170 America/Montevideo + "CA", //Z#171 America/Montreal + "MS", //Z#172 America/Montserrat + "BS", //Z#173 America/Nassau + "US", //Z#174 America/New_York + "CA", //Z#175 America/Nipigon + "US", //Z#176 America/Nome + "BR", //Z#177 America/Noronha + "US", //Z#178 America/North_Dakota/Beulah + "US", //Z#179 America/North_Dakota/Center + "US", //Z#180 America/North_Dakota/New_Salem + "GL", //Z#181 America/Nuuk + "MX", //Z#182 America/Ojinaga + "PA", //Z#183 America/Panama + "CA", //Z#184 America/Pangnirtung + "SR", //Z#185 America/Paramaribo + "US", //Z#186 America/Phoenix + "HT", //Z#187 America/Port-au-Prince + "TT", //Z#188 America/Port_of_Spain + "BR", //Z#189 America/Porto_Acre + "BR", //Z#190 America/Porto_Velho + "PR", //Z#191 America/Puerto_Rico + "CL", //Z#192 America/Punta_Arenas + "CA", //Z#193 America/Rainy_River + "CA", //Z#194 America/Rankin_Inlet + "BR", //Z#195 America/Recife + "CA", //Z#196 America/Regina + "CA", //Z#197 America/Resolute + "BR", //Z#198 America/Rio_Branco + "AR", //Z#199 America/Rosario + "MX", //Z#200 America/Santa_Isabel + "BR", //Z#201 America/Santarem + "CL", //Z#202 America/Santiago + "DO", //Z#203 America/Santo_Domingo + "BR", //Z#204 America/Sao_Paulo + "GL", //Z#205 America/Scoresbysund + "US", //Z#206 America/Shiprock + "US", //Z#207 America/Sitka + "BL", //Z#208 America/St_Barthelemy + "CA", //Z#209 America/St_Johns + "KN", //Z#210 America/St_Kitts + "LC", //Z#211 America/St_Lucia + "VI", //Z#212 America/St_Thomas + "VC", //Z#213 America/St_Vincent + "CA", //Z#214 America/Swift_Current + "HN", //Z#215 America/Tegucigalpa + "GL", //Z#216 America/Thule + "CA", //Z#217 America/Thunder_Bay + "MX", //Z#218 America/Tijuana + "CA", //Z#219 America/Toronto + "VG", //Z#220 America/Tortola + "CA", //Z#221 America/Vancouver + "VI", //Z#222 America/Virgin + "CA", //Z#223 America/Whitehorse + "CA", //Z#224 America/Winnipeg + "US", //Z#225 America/Yakutat + "CA", //Z#226 America/Yellowknife + "AQ", //Z#227 Antarctica/Casey + "AQ", //Z#228 Antarctica/Davis + "AQ", //Z#229 Antarctica/DumontDUrville + "AU", //Z#230 Antarctica/Macquarie + "AQ", //Z#231 Antarctica/Mawson + "AQ", //Z#232 Antarctica/McMurdo + "AQ", //Z#233 Antarctica/Palmer + "AQ", //Z#234 Antarctica/Rothera + "AQ", //Z#235 Antarctica/South_Pole + "AQ", //Z#236 Antarctica/Syowa + "AQ", //Z#237 Antarctica/Troll + "AQ", //Z#238 Antarctica/Vostok + "SJ", //Z#239 Arctic/Longyearbyen + "YE", //Z#240 Asia/Aden + "KZ", //Z#241 Asia/Almaty + "JO", //Z#242 Asia/Amman + "RU", //Z#243 Asia/Anadyr + "KZ", //Z#244 Asia/Aqtau + "KZ", //Z#245 Asia/Aqtobe + "TM", //Z#246 Asia/Ashgabat + "TM", //Z#247 Asia/Ashkhabad + "KZ", //Z#248 Asia/Atyrau + "IQ", //Z#249 Asia/Baghdad + "BH", //Z#250 Asia/Bahrain + "AZ", //Z#251 Asia/Baku + "TH", //Z#252 Asia/Bangkok + "RU", //Z#253 Asia/Barnaul + "LB", //Z#254 Asia/Beirut + "KG", //Z#255 Asia/Bishkek + "BN", //Z#256 Asia/Brunei + "IN", //Z#257 Asia/Calcutta + "RU", //Z#258 Asia/Chita + "MN", //Z#259 Asia/Choibalsan + "CN", //Z#260 Asia/Chongqing + "CN", //Z#261 Asia/Chungking + "LK", //Z#262 Asia/Colombo + "BD", //Z#263 Asia/Dacca + "SY", //Z#264 Asia/Damascus + "BD", //Z#265 Asia/Dhaka + "TL", //Z#266 Asia/Dili + "AE", //Z#267 Asia/Dubai + "TJ", //Z#268 Asia/Dushanbe + "CY", //Z#269 Asia/Famagusta + "PS", //Z#270 Asia/Gaza + "CN", //Z#271 Asia/Harbin + "PS", //Z#272 Asia/Hebron + "VN", //Z#273 Asia/Ho_Chi_Minh + "HK", //Z#274 Asia/Hong_Kong + "MN", //Z#275 Asia/Hovd + "RU", //Z#276 Asia/Irkutsk + "TR", //Z#277 Asia/Istanbul + "ID", //Z#278 Asia/Jakarta + "ID", //Z#279 Asia/Jayapura + "IL", //Z#280 Asia/Jerusalem + "AF", //Z#281 Asia/Kabul + "RU", //Z#282 Asia/Kamchatka + "PK", //Z#283 Asia/Karachi + "CN", //Z#284 Asia/Kashgar + "NP", //Z#285 Asia/Kathmandu + "NP", //Z#286 Asia/Katmandu + "RU", //Z#287 Asia/Khandyga + "IN", //Z#288 Asia/Kolkata + "RU", //Z#289 Asia/Krasnoyarsk + "MY", //Z#290 Asia/Kuala_Lumpur + "MY", //Z#291 Asia/Kuching + "KW", //Z#292 Asia/Kuwait + "MO", //Z#293 Asia/Macao + "MO", //Z#294 Asia/Macau + "RU", //Z#295 Asia/Magadan + "ID", //Z#296 Asia/Makassar + "PH", //Z#297 Asia/Manila + "OM", //Z#298 Asia/Muscat + "CY", //Z#299 Asia/Nicosia + "RU", //Z#300 Asia/Novokuznetsk + "RU", //Z#301 Asia/Novosibirsk + "RU", //Z#302 Asia/Omsk + "KZ", //Z#303 Asia/Oral + "KH", //Z#304 Asia/Phnom_Penh + "ID", //Z#305 Asia/Pontianak + "KP", //Z#306 Asia/Pyongyang + "QA", //Z#307 Asia/Qatar + "KZ", //Z#308 Asia/Qostanay + "KZ", //Z#309 Asia/Qyzylorda + "MM", //Z#310 Asia/Rangoon + "SA", //Z#311 Asia/Riyadh + "VN", //Z#312 Asia/Saigon + "RU", //Z#313 Asia/Sakhalin + "UZ", //Z#314 Asia/Samarkand + "KR", //Z#315 Asia/Seoul + "CN", //Z#316 Asia/Shanghai + "SG", //Z#317 Asia/Singapore + "RU", //Z#318 Asia/Srednekolymsk + "TW", //Z#319 Asia/Taipei + "UZ", //Z#320 Asia/Tashkent + "GE", //Z#321 Asia/Tbilisi + "IR", //Z#322 Asia/Tehran + "IL", //Z#323 Asia/Tel_Aviv + "BT", //Z#324 Asia/Thimbu + "BT", //Z#325 Asia/Thimphu + "JP", //Z#326 Asia/Tokyo + "RU", //Z#327 Asia/Tomsk + "ID", //Z#328 Asia/Ujung_Pandang + "MN", //Z#329 Asia/Ulaanbaatar + "MN", //Z#330 Asia/Ulan_Bator + "CN", //Z#331 Asia/Urumqi + "RU", //Z#332 Asia/Ust-Nera + "LA", //Z#333 Asia/Vientiane + "RU", //Z#334 Asia/Vladivostok + "RU", //Z#335 Asia/Yakutsk + "MM", //Z#336 Asia/Yangon + "RU", //Z#337 Asia/Yekaterinburg + "AM", //Z#338 Asia/Yerevan + "PT", //Z#339 Atlantic/Azores + "BM", //Z#340 Atlantic/Bermuda + "ES", //Z#341 Atlantic/Canary + "CV", //Z#342 Atlantic/Cape_Verde + "FO", //Z#343 Atlantic/Faeroe + "FO", //Z#344 Atlantic/Faroe + "SJ", //Z#345 Atlantic/Jan_Mayen + "PT", //Z#346 Atlantic/Madeira + "IS", //Z#347 Atlantic/Reykjavik + "GS", //Z#348 Atlantic/South_Georgia + "SH", //Z#349 Atlantic/St_Helena + "FK", //Z#350 Atlantic/Stanley + "AU", //Z#351 Australia/ACT + "AU", //Z#352 Australia/Adelaide + "AU", //Z#353 Australia/Brisbane + "AU", //Z#354 Australia/Broken_Hill + "AU", //Z#355 Australia/Canberra + "AU", //Z#356 Australia/Currie + "AU", //Z#357 Australia/Darwin + "AU", //Z#358 Australia/Eucla + "AU", //Z#359 Australia/Hobart + "AU", //Z#360 Australia/LHI + "AU", //Z#361 Australia/Lindeman + "AU", //Z#362 Australia/Lord_Howe + "AU", //Z#363 Australia/Melbourne + "AU", //Z#364 Australia/NSW + "AU", //Z#365 Australia/North + "AU", //Z#366 Australia/Perth + "AU", //Z#367 Australia/Queensland + "AU", //Z#368 Australia/South + "AU", //Z#369 Australia/Sydney + "AU", //Z#370 Australia/Tasmania + "AU", //Z#371 Australia/Victoria + "AU", //Z#372 Australia/West + "AU", //Z#373 Australia/Yancowinna + "BR", //Z#374 BET + "BD", //Z#375 BST + "BR", //Z#376 Brazil/Acre + "BR", //Z#377 Brazil/DeNoronha + "BR", //Z#378 Brazil/East + "BR", //Z#379 Brazil/West + "MZ", //Z#380 CAT + "001",//Z#381 CET + "CA", //Z#382 CNT + "US", //Z#383 CST + "001",//Z#384 CST6CDT + "CN", //Z#385 CTT + "CA", //Z#386 Canada/Atlantic + "CA", //Z#387 Canada/Central + "CA", //Z#388 Canada/East-Saskatchewan + "CA", //Z#389 Canada/Eastern + "CA", //Z#390 Canada/Mountain + "CA", //Z#391 Canada/Newfoundland + "CA", //Z#392 Canada/Pacific + "CA", //Z#393 Canada/Saskatchewan + "CA", //Z#394 Canada/Yukon + "CL", //Z#395 Chile/Continental + "CL", //Z#396 Chile/EasterIsland + "CU", //Z#397 Cuba + "KE", //Z#398 EAT + "FR", //Z#399 ECT + "001",//Z#400 EET + "001",//Z#401 EST + "001",//Z#402 EST5EDT + "EG", //Z#403 Egypt + "IE", //Z#404 Eire + "001",//Z#405 Etc/GMT + "001",//Z#406 Etc/GMT+0 + "001",//Z#407 Etc/GMT+1 + "001",//Z#408 Etc/GMT+10 + "001",//Z#409 Etc/GMT+11 + "001",//Z#410 Etc/GMT+12 + "001",//Z#411 Etc/GMT+2 + "001",//Z#412 Etc/GMT+3 + "001",//Z#413 Etc/GMT+4 + "001",//Z#414 Etc/GMT+5 + "001",//Z#415 Etc/GMT+6 + "001",//Z#416 Etc/GMT+7 + "001",//Z#417 Etc/GMT+8 + "001",//Z#418 Etc/GMT+9 + "001",//Z#419 Etc/GMT-0 + "001",//Z#420 Etc/GMT-1 + "001",//Z#421 Etc/GMT-10 + "001",//Z#422 Etc/GMT-11 + "001",//Z#423 Etc/GMT-12 + "001",//Z#424 Etc/GMT-13 + "001",//Z#425 Etc/GMT-14 + "001",//Z#426 Etc/GMT-2 + "001",//Z#427 Etc/GMT-3 + "001",//Z#428 Etc/GMT-4 + "001",//Z#429 Etc/GMT-5 + "001",//Z#430 Etc/GMT-6 + "001",//Z#431 Etc/GMT-7 + "001",//Z#432 Etc/GMT-8 + "001",//Z#433 Etc/GMT-9 + "001",//Z#434 Etc/GMT0 + "001",//Z#435 Etc/Greenwich + "001",//Z#436 Etc/UCT + "001",//Z#437 Etc/UTC + "001",//Z#438 Etc/Universal + "001",//Z#439 Etc/Unknown + "001",//Z#440 Etc/Zulu + "NL", //Z#441 Europe/Amsterdam + "AD", //Z#442 Europe/Andorra + "RU", //Z#443 Europe/Astrakhan + "GR", //Z#444 Europe/Athens + "GB", //Z#445 Europe/Belfast + "RS", //Z#446 Europe/Belgrade + "DE", //Z#447 Europe/Berlin + "SK", //Z#448 Europe/Bratislava + "BE", //Z#449 Europe/Brussels + "RO", //Z#450 Europe/Bucharest + "HU", //Z#451 Europe/Budapest + "DE", //Z#452 Europe/Busingen + "MD", //Z#453 Europe/Chisinau + "DK", //Z#454 Europe/Copenhagen + "IE", //Z#455 Europe/Dublin + "GI", //Z#456 Europe/Gibraltar + "GG", //Z#457 Europe/Guernsey + "FI", //Z#458 Europe/Helsinki + "IM", //Z#459 Europe/Isle_of_Man + "TR", //Z#460 Europe/Istanbul + "JE", //Z#461 Europe/Jersey + "RU", //Z#462 Europe/Kaliningrad + "UA", //Z#463 Europe/Kiev + "RU", //Z#464 Europe/Kirov + "UA", //Z#465 Europe/Kyiv + "PT", //Z#466 Europe/Lisbon + "SI", //Z#467 Europe/Ljubljana + "GB", //Z#468 Europe/London + "LU", //Z#469 Europe/Luxembourg + "ES", //Z#470 Europe/Madrid + "MT", //Z#471 Europe/Malta + "AX", //Z#472 Europe/Mariehamn + "BY", //Z#473 Europe/Minsk + "MC", //Z#474 Europe/Monaco + "RU", //Z#475 Europe/Moscow + "CY", //Z#476 Europe/Nicosia + "NO", //Z#477 Europe/Oslo + "FR", //Z#478 Europe/Paris + "ME", //Z#479 Europe/Podgorica + "CZ", //Z#480 Europe/Prague + "LV", //Z#481 Europe/Riga + "IT", //Z#482 Europe/Rome + "RU", //Z#483 Europe/Samara + "SM", //Z#484 Europe/San_Marino + "BA", //Z#485 Europe/Sarajevo + "RU", //Z#486 Europe/Saratov + "UA", //Z#487 Europe/Simferopol + "MK", //Z#488 Europe/Skopje + "BG", //Z#489 Europe/Sofia + "SE", //Z#490 Europe/Stockholm + "EE", //Z#491 Europe/Tallinn + "AL", //Z#492 Europe/Tirane + "MD", //Z#493 Europe/Tiraspol + "RU", //Z#494 Europe/Ulyanovsk + "UA", //Z#495 Europe/Uzhgorod + "LI", //Z#496 Europe/Vaduz + "VA", //Z#497 Europe/Vatican + "AT", //Z#498 Europe/Vienna + "LT", //Z#499 Europe/Vilnius + "RU", //Z#500 Europe/Volgograd + "PL", //Z#501 Europe/Warsaw + "HR", //Z#502 Europe/Zagreb + "UA", //Z#503 Europe/Zaporozhye + "CH", //Z#504 Europe/Zurich + "001",//Z#505 Factory + "GB", //Z#506 GB + "GB", //Z#507 GB-Eire + "001",//Z#508 GMT + "001",//Z#509 GMT+0 + "001",//Z#510 GMT-0 + "001",//Z#511 GMT0 + "001",//Z#512 Greenwich + "001",//Z#513 HST + "HK", //Z#514 Hongkong + "US", //Z#515 IET + "IN", //Z#516 IST + "CI", //Z#517 Iceland + "MG", //Z#518 Indian/Antananarivo + "IO", //Z#519 Indian/Chagos + "CX", //Z#520 Indian/Christmas + "CC", //Z#521 Indian/Cocos + "KM", //Z#522 Indian/Comoro + "TF", //Z#523 Indian/Kerguelen + "SC", //Z#524 Indian/Mahe + "MV", //Z#525 Indian/Maldives + "MU", //Z#526 Indian/Mauritius + "YT", //Z#527 Indian/Mayotte + "RE", //Z#528 Indian/Reunion + "IR", //Z#529 Iran + "IL", //Z#530 Israel + "JP", //Z#531 JST + "JM", //Z#532 Jamaica + "JP", //Z#533 Japan + "MH", //Z#534 Kwajalein + "LY", //Z#535 Libya + "001",//Z#536 MET + "WS", //Z#537 MIT + "001",//Z#538 MST + "001",//Z#539 MST7MDT + "MX", //Z#540 Mexico/BajaNorte + "MX", //Z#541 Mexico/BajaSur + "MX", //Z#542 Mexico/General + "AM", //Z#543 NET + "NZ", //Z#544 NST + "NZ", //Z#545 NZ + "NZ", //Z#546 NZ-CHAT + "US", //Z#547 Navajo + "PK", //Z#548 PLT + "US", //Z#549 PNT + "CN", //Z#550 PRC + "PR", //Z#551 PRT + "US", //Z#552 PST + "001",//Z#553 PST8PDT + "WS", //Z#554 Pacific/Apia + "NZ", //Z#555 Pacific/Auckland + "PG", //Z#556 Pacific/Bougainville + "NZ", //Z#557 Pacific/Chatham + "FM", //Z#558 Pacific/Chuuk + "CL", //Z#559 Pacific/Easter + "VU", //Z#560 Pacific/Efate + "KI", //Z#561 Pacific/Enderbury + "TK", //Z#562 Pacific/Fakaofo + "FJ", //Z#563 Pacific/Fiji + "TV", //Z#564 Pacific/Funafuti + "EC", //Z#565 Pacific/Galapagos + "PF", //Z#566 Pacific/Gambier + "SB", //Z#567 Pacific/Guadalcanal + "GU", //Z#568 Pacific/Guam + "US", //Z#569 Pacific/Honolulu + "UM", //Z#570 Pacific/Johnston + "KI", //Z#571 Pacific/Kanton + "KI", //Z#572 Pacific/Kiritimati + "FM", //Z#573 Pacific/Kosrae + "MH", //Z#574 Pacific/Kwajalein + "MH", //Z#575 Pacific/Majuro + "PF", //Z#576 Pacific/Marquesas + "UM", //Z#577 Pacific/Midway + "NR", //Z#578 Pacific/Nauru + "NU", //Z#579 Pacific/Niue + "NF", //Z#580 Pacific/Norfolk + "NC", //Z#581 Pacific/Noumea + "AS", //Z#582 Pacific/Pago_Pago + "PW", //Z#583 Pacific/Palau + "PN", //Z#584 Pacific/Pitcairn + "FM", //Z#585 Pacific/Pohnpei + "FM", //Z#586 Pacific/Ponape + "PG", //Z#587 Pacific/Port_Moresby + "CK", //Z#588 Pacific/Rarotonga + "MP", //Z#589 Pacific/Saipan + "AS", //Z#590 Pacific/Samoa + "PF", //Z#591 Pacific/Tahiti + "KI", //Z#592 Pacific/Tarawa + "TO", //Z#593 Pacific/Tongatapu + "FM", //Z#594 Pacific/Truk + "UM", //Z#595 Pacific/Wake + "WF", //Z#596 Pacific/Wallis + "FM", //Z#597 Pacific/Yap + "PL", //Z#598 Poland + "PT", //Z#599 Portugal + "TW", //Z#600 ROC + "KR", //Z#601 ROK + "SB", //Z#602 SST + "SG", //Z#603 Singapore + "001",//Z#604 SystemV/AST4 + "001",//Z#605 SystemV/AST4ADT + "001",//Z#606 SystemV/CST6 + "001",//Z#607 SystemV/CST6CDT + "001",//Z#608 SystemV/EST5 + "001",//Z#609 SystemV/EST5EDT + "001",//Z#610 SystemV/HST10 + "001",//Z#611 SystemV/MST7 + "001",//Z#612 SystemV/MST7MDT + "001",//Z#613 SystemV/PST8 + "001",//Z#614 SystemV/PST8PDT + "001",//Z#615 SystemV/YST9 + "001",//Z#616 SystemV/YST9YDT + "TR", //Z#617 Turkey + "001",//Z#618 UCT + "US", //Z#619 US/Alaska + "US", //Z#620 US/Aleutian + "US", //Z#621 US/Arizona + "US", //Z#622 US/Central + "US", //Z#623 US/East-Indiana + "US", //Z#624 US/Eastern + "US", //Z#625 US/Hawaii + "US", //Z#626 US/Indiana-Starke + "US", //Z#627 US/Michigan + "US", //Z#628 US/Mountain + "US", //Z#629 US/Pacific + "US", //Z#630 US/Pacific-New + "AS", //Z#631 US/Samoa + "001",//Z#632 UTC + "001",//Z#633 Universal + "VN", //Z#634 VST + "RU", //Z#635 W-SU + "001",//Z#636 WET + "001",//Z#637 Zulu } } diff --git a/js/src/jit-test/tests/errors/bug1810711.js b/js/src/jit-test/tests/errors/bug1810711.js new file mode 100644 index 0000000000..29a52f1ee9 --- /dev/null +++ b/js/src/jit-test/tests/errors/bug1810711.js @@ -0,0 +1,13 @@ +var g = newGlobal({newCompartment: true}); + +try { + undef() +} catch (err) { + const handler = { "getPrototypeOf": (x) => () => x }; + const proxy = new g.Proxy(err, handler); + try { + proxy.stack +/* odds are we weren't exploitable because we don't support pure catch, + but now it's not a problem */ + } catch(e) {} +} diff --git a/js/src/jit-test/tests/ion/bug1814899.js b/js/src/jit-test/tests/ion/bug1814899.js new file mode 100644 index 0000000000..c5da6de864 --- /dev/null +++ b/js/src/jit-test/tests/ion/bug1814899.js @@ -0,0 +1,23 @@ +function bar(x) { + with ({}) {} + switch (x) { + case 1: + foo(2); + break; + case 2: + gczeal(14, 1); + break; + } + return "a sufficiently long string"; +} + +function foo(x) { + for (var s in bar(x)) { gczeal(0); } +} + +with ({}) {} +for (var i = 0; i < 100; i++) { + foo(0); +} +foo(1); + diff --git a/js/src/jit/shared/CodeGenerator-shared.cpp b/js/src/jit/shared/CodeGenerator-shared.cpp index 01ca371ed2..f3efddab7b 100644 --- a/js/src/jit/shared/CodeGenerator-shared.cpp +++ b/js/src/jit/shared/CodeGenerator-shared.cpp @@ -1370,6 +1370,7 @@ CodeGeneratorShared::callVM(const VMFunction& fun, LInstruction* ins, const Regi // when returning from the call. Failures are handled with exceptions based // on the return value of the C functions. To guard the outcome of the // returned value, use another LIR instruction. + ensureOsiSpace(); uint32_t callOffset = masm.callJit(wrapper); markSafepointAt(callOffset, ins); diff --git a/js/src/vm/ErrorObject.cpp b/js/src/vm/ErrorObject.cpp index cdf07f3a04..e6d831deac 100644 --- a/js/src/vm/ErrorObject.cpp +++ b/js/src/vm/ErrorObject.cpp @@ -174,34 +174,31 @@ js::ErrorObject::checkAndUnwrapThis(JSContext* cx, CallArgs& args, const char* f // the slots we need. This allows us to support the poor-man's subclassing // of error: Object.create(Error.prototype). - RootedObject target(cx, CheckedUnwrap(&thisValue.toObject())); - if (!target) { + RootedObject obj(cx, &args.thisv().toObject()); + RootedObject curr(cx, obj); + RootedObject target(cx); + do { + target = CheckedUnwrap(curr); + if (!target) { JS_ReportError(cx, "Permission denied to access object"); return false; - } - - RootedObject proto(cx); - while (!target->is()) { - if (!GetPrototype(cx, target, &proto)) - return false; - - if (!proto) { - // We walked the whole prototype chain and did not find an Error - // object. - JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO, - js_Error_str, fnName, thisValue.toObject().getClass()->name); - return false; - } + } + if (target->is()) { + error.set(&target->as()); + return true; + } - target = CheckedUnwrap(proto); - if (!target) { - JS_ReportError(cx, "Permission denied to access object"); - return false; - } - } - - error.set(&target->as()); - return true; + if (!GetPrototype(cx, curr, &curr)) { + return false; + } + } while (curr); + + // We walked the whole prototype chain and did not find an Error + // object. + JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, + JSMSG_INCOMPATIBLE_PROTO, js_Error_str, + "(get stack)", obj->getClass()->name); + return false; } /* static */ bool diff --git a/js/src/vm/Interpreter.cpp b/js/src/vm/Interpreter.cpp index 4bf6e96cf3..8b9b44218d 100644 --- a/js/src/vm/Interpreter.cpp +++ b/js/src/vm/Interpreter.cpp @@ -3851,7 +3851,20 @@ END_CASE(JSOP_INITHOMEOBJECT) CASE(JSOP_SUPERBASE) { JSFunction& superEnvFunc = GetSuperEnvFunction(cx, REGS); +#if(0) + // TenFourFox issue 488. This sometimes happens when we throw, so make + // it a warning. MOZ_ASSERT(superEnvFunc.allowSuperProperty()); +#else + if(!superEnvFunc.allowSuperProperty()) { +#ifdef DEBUG + fprintf(stderr, "JSOP_SUPERBASE should only get things that allow SuperProperties\n"); +#endif + JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_CANT_CONVERT_TO, + "null", "object"); + goto error; + } +#endif MOZ_ASSERT(superEnvFunc.nonLazyScript()->needsHomeObject()); const Value& homeObjVal = superEnvFunc.getExtendedSlot(FunctionExtended::METHOD_HOMEOBJECT_SLOT); diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat index 10beba6658..76ed93f03f 100644 --- a/netwerk/dns/effective_tld_names.dat +++ b/netwerk/dns/effective_tld_names.dat @@ -380,11 +380,29 @@ org.bi // biz : https://en.wikipedia.org/wiki/.biz biz -// bj : https://en.wikipedia.org/wiki/.bj +// bj : https://nic.bj/bj-suffixes.txt +// submitted by registry bj -asso.bj -barreau.bj -gouv.bj +africa.bj +agro.bj +architectes.bj +assur.bj +avocats.bj +co.bj +com.bj +eco.bj +econo.bj +edu.bj +info.bj +loisirs.bj +money.bj +net.bj +org.bj +ote.bj +resto.bj +restaurant.bj +tourism.bj +univ.bj // bm : http://www.bermudanic.bm/dnr-text.txt bm @@ -1033,8 +1051,7 @@ fm // fo : https://en.wikipedia.org/wiki/.fo fo -// fr : http://www.afnic.fr/ -// domaines descriptifs : https://www.afnic.fr/medias/documents/Cadre_legal/Afnic_Naming_Policy_12122016_VEN.pdf +// fr : https://www.afnic.fr/ https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf fr asso.fr com.fr @@ -1042,7 +1059,7 @@ gouv.fr nom.fr prd.fr tm.fr -// domaines sectoriels : https://www.afnic.fr/en/products-and-services/the-fr-tld/sector-based-fr-domains-4.html +// Former "domaines sectoriels", still registration suffixes aeroport.fr avocat.fr avoues.fr @@ -4052,555 +4069,8 @@ ac.mu co.mu or.mu -// museum : http://about.museum/naming/ -// http://index.museum/ +// museum : https://welcome.museum/wp-content/uploads/2018/05/20180525-Registration-Policy-MUSEUM-EN_VF-2.pdf https://welcome.museum/buy-your-dot-museum-2/ museum -academy.museum -agriculture.museum -air.museum -airguard.museum -alabama.museum -alaska.museum -amber.museum -ambulance.museum -american.museum -americana.museum -americanantiques.museum -americanart.museum -amsterdam.museum -and.museum -annefrank.museum -anthro.museum -anthropology.museum -antiques.museum -aquarium.museum -arboretum.museum -archaeological.museum -archaeology.museum -architecture.museum -art.museum -artanddesign.museum -artcenter.museum -artdeco.museum -arteducation.museum -artgallery.museum -arts.museum -artsandcrafts.museum -asmatart.museum -assassination.museum -assisi.museum -association.museum -astronomy.museum -atlanta.museum -austin.museum -australia.museum -automotive.museum -aviation.museum -axis.museum -badajoz.museum -baghdad.museum -bahn.museum -bale.museum -baltimore.museum -barcelona.museum -baseball.museum -basel.museum -baths.museum -bauern.museum -beauxarts.museum -beeldengeluid.museum -bellevue.museum -bergbau.museum -berkeley.museum -berlin.museum -bern.museum -bible.museum -bilbao.museum -bill.museum -birdart.museum -birthplace.museum -bonn.museum -boston.museum -botanical.museum -botanicalgarden.museum -botanicgarden.museum -botany.museum -brandywinevalley.museum -brasil.museum -bristol.museum -british.museum -britishcolumbia.museum -broadcast.museum -brunel.museum -brussel.museum -brussels.museum -bruxelles.museum -building.museum -burghof.museum -bus.museum -bushey.museum -cadaques.museum -california.museum -cambridge.museum -can.museum -canada.museum -capebreton.museum -carrier.museum -cartoonart.museum -casadelamoneda.museum -castle.museum -castres.museum -celtic.museum -center.museum -chattanooga.museum -cheltenham.museum -chesapeakebay.museum -chicago.museum -children.museum -childrens.museum -childrensgarden.museum -chiropractic.museum -chocolate.museum -christiansburg.museum -cincinnati.museum -cinema.museum -circus.museum -civilisation.museum -civilization.museum -civilwar.museum -clinton.museum -clock.museum -coal.museum -coastaldefence.museum -cody.museum -coldwar.museum -collection.museum -colonialwilliamsburg.museum -coloradoplateau.museum -columbia.museum -columbus.museum -communication.museum -communications.museum -community.museum -computer.museum -computerhistory.museum -comunicações.museum -contemporary.museum -contemporaryart.museum -convent.museum -copenhagen.museum -corporation.museum -correios-e-telecomunicações.museum -corvette.museum -costume.museum -countryestate.museum -county.museum -crafts.museum -cranbrook.museum -creation.museum -cultural.museum -culturalcenter.museum -culture.museum -cyber.museum -cymru.museum -dali.museum -dallas.museum -database.museum -ddr.museum -decorativearts.museum -delaware.museum -delmenhorst.museum -denmark.museum -depot.museum -design.museum -detroit.museum -dinosaur.museum -discovery.museum -dolls.museum -donostia.museum -durham.museum -eastafrica.museum -eastcoast.museum -education.museum -educational.museum -egyptian.museum -eisenbahn.museum -elburg.museum -elvendrell.museum -embroidery.museum -encyclopedic.museum -england.museum -entomology.museum -environment.museum -environmentalconservation.museum -epilepsy.museum -essex.museum -estate.museum -ethnology.museum -exeter.museum -exhibition.museum -family.museum -farm.museum -farmequipment.museum -farmers.museum -farmstead.museum -field.museum -figueres.museum -filatelia.museum -film.museum -fineart.museum -finearts.museum -finland.museum -flanders.museum -florida.museum -force.museum -fortmissoula.museum -fortworth.museum -foundation.museum -francaise.museum -frankfurt.museum -franziskaner.museum -freemasonry.museum -freiburg.museum -fribourg.museum -frog.museum -fundacio.museum -furniture.museum -gallery.museum -garden.museum -gateway.museum -geelvinck.museum -gemological.museum -geology.museum -georgia.museum -giessen.museum -glas.museum -glass.museum -gorge.museum -grandrapids.museum -graz.museum -guernsey.museum -halloffame.museum -hamburg.museum -handson.museum -harvestcelebration.museum -hawaii.museum -health.museum -heimatunduhren.museum -hellas.museum -helsinki.museum -hembygdsforbund.museum -heritage.museum -histoire.museum -historical.museum -historicalsociety.museum -historichouses.museum -historisch.museum -historisches.museum -history.museum -historyofscience.museum -horology.museum -house.museum -humanities.museum -illustration.museum -imageandsound.museum -indian.museum -indiana.museum -indianapolis.museum -indianmarket.museum -intelligence.museum -interactive.museum -iraq.museum -iron.museum -isleofman.museum -jamison.museum -jefferson.museum -jerusalem.museum -jewelry.museum -jewish.museum -jewishart.museum -jfk.museum -journalism.museum -judaica.museum -judygarland.museum -juedisches.museum -juif.museum -karate.museum -karikatur.museum -kids.museum -koebenhavn.museum -koeln.museum -kunst.museum -kunstsammlung.museum -kunstunddesign.museum -labor.museum -labour.museum -lajolla.museum -lancashire.museum -landes.museum -lans.museum -läns.museum -larsson.museum -lewismiller.museum -lincoln.museum -linz.museum -living.museum -livinghistory.museum -localhistory.museum -london.museum -losangeles.museum -louvre.museum -loyalist.museum -lucerne.museum -luxembourg.museum -luzern.museum -mad.museum -madrid.museum -mallorca.museum -manchester.museum -mansion.museum -mansions.museum -manx.museum -marburg.museum -maritime.museum -maritimo.museum -maryland.museum -marylhurst.museum -media.museum -medical.museum -medizinhistorisches.museum -meeres.museum -memorial.museum -mesaverde.museum -michigan.museum -midatlantic.museum -military.museum -mill.museum -miners.museum -mining.museum -minnesota.museum -missile.museum -missoula.museum -modern.museum -moma.museum -money.museum -monmouth.museum -monticello.museum -montreal.museum -moscow.museum -motorcycle.museum -muenchen.museum -muenster.museum -mulhouse.museum -muncie.museum -museet.museum -museumcenter.museum -museumvereniging.museum -music.museum -national.museum -nationalfirearms.museum -nationalheritage.museum -nativeamerican.museum -naturalhistory.museum -naturalhistorymuseum.museum -naturalsciences.museum -nature.museum -naturhistorisches.museum -natuurwetenschappen.museum -naumburg.museum -naval.museum -nebraska.museum -neues.museum -newhampshire.museum -newjersey.museum -newmexico.museum -newport.museum -newspaper.museum -newyork.museum -niepce.museum -norfolk.museum -north.museum -nrw.museum -nyc.museum -nyny.museum -oceanographic.museum -oceanographique.museum -omaha.museum -online.museum -ontario.museum -openair.museum -oregon.museum -oregontrail.museum -otago.museum -oxford.museum -pacific.museum -paderborn.museum -palace.museum -paleo.museum -palmsprings.museum -panama.museum -paris.museum -pasadena.museum -pharmacy.museum -philadelphia.museum -philadelphiaarea.museum -philately.museum -phoenix.museum -photography.museum -pilots.museum -pittsburgh.museum -planetarium.museum -plantation.museum -plants.museum -plaza.museum -portal.museum -portland.museum -portlligat.museum -posts-and-telecommunications.museum -preservation.museum -presidio.museum -press.museum -project.museum -public.museum -pubol.museum -quebec.museum -railroad.museum -railway.museum -research.museum -resistance.museum -riodejaneiro.museum -rochester.museum -rockart.museum -roma.museum -russia.museum -saintlouis.museum -salem.museum -salvadordali.museum -salzburg.museum -sandiego.museum -sanfrancisco.museum -santabarbara.museum -santacruz.museum -santafe.museum -saskatchewan.museum -satx.museum -savannahga.museum -schlesisches.museum -schoenbrunn.museum -schokoladen.museum -school.museum -schweiz.museum -science.museum -scienceandhistory.museum -scienceandindustry.museum -sciencecenter.museum -sciencecenters.museum -science-fiction.museum -sciencehistory.museum -sciences.museum -sciencesnaturelles.museum -scotland.museum -seaport.museum -settlement.museum -settlers.museum -shell.museum -sherbrooke.museum -sibenik.museum -silk.museum -ski.museum -skole.museum -society.museum -sologne.museum -soundandvision.museum -southcarolina.museum -southwest.museum -space.museum -spy.museum -square.museum -stadt.museum -stalbans.museum -starnberg.museum -state.museum -stateofdelaware.museum -station.museum -steam.museum -steiermark.museum -stjohn.museum -stockholm.museum -stpetersburg.museum -stuttgart.museum -suisse.museum -surgeonshall.museum -surrey.museum -svizzera.museum -sweden.museum -sydney.museum -tank.museum -tcm.museum -technology.museum -telekommunikation.museum -television.museum -texas.museum -textile.museum -theater.museum -time.museum -timekeeping.museum -topology.museum -torino.museum -touch.museum -town.museum -transport.museum -tree.museum -trolley.museum -trust.museum -trustee.museum -uhren.museum -ulm.museum -undersea.museum -university.museum -usa.museum -usantiques.museum -usarts.museum -uscountryestate.museum -usculture.museum -usdecorativearts.museum -usgarden.museum -ushistory.museum -ushuaia.museum -uslivinghistory.museum -utah.museum -uvic.museum -valley.museum -vantaa.museum -versailles.museum -viking.museum -village.museum -virginia.museum -virtual.museum -virtuel.museum -vlaanderen.museum -volkenkunde.museum -wales.museum -wallonie.museum -war.museum -washingtondc.museum -watchandclock.museum -watch-and-clock.museum -western.museum -westfalen.museum -whaling.museum -wildlife.museum -williamsburg.museum -windmill.museum -workshop.museum -york.museum -yorkshire.museum -yosemite.museum -youth.museum -zoological.museum -zoology.museum -ירושלים.museum -иком.museum // mv : https://en.wikipedia.org/wiki/.mv // "mv" included because, contra Wikipedia, google.mv exists. @@ -5676,52 +5146,60 @@ turystyka.pl // Government domains gov.pl ap.gov.pl +griw.gov.pl ic.gov.pl is.gov.pl -us.gov.pl kmpsp.gov.pl +konsulat.gov.pl kppsp.gov.pl -kwpsp.gov.pl -psp.gov.pl -wskr.gov.pl kwp.gov.pl +kwpsp.gov.pl +mup.gov.pl mw.gov.pl -ug.gov.pl -um.gov.pl -umig.gov.pl -ugim.gov.pl -upow.gov.pl -uw.gov.pl -starostwo.gov.pl +oia.gov.pl +oirm.gov.pl +oke.gov.pl +oow.gov.pl +oschr.gov.pl +oum.gov.pl pa.gov.pl +pinb.gov.pl +piw.gov.pl po.gov.pl +pr.gov.pl +psp.gov.pl psse.gov.pl pup.gov.pl rzgw.gov.pl sa.gov.pl +sdn.gov.pl +sko.gov.pl so.gov.pl sr.gov.pl -wsa.gov.pl -sko.gov.pl +starostwo.gov.pl +ug.gov.pl +ugim.gov.pl +um.gov.pl +umig.gov.pl +upow.gov.pl +uppo.gov.pl +us.gov.pl +uw.gov.pl uzs.gov.pl +wif.gov.pl wiih.gov.pl winb.gov.pl -pinb.gov.pl wios.gov.pl witd.gov.pl -wzmiuw.gov.pl -piw.gov.pl wiw.gov.pl -griw.gov.pl -wif.gov.pl -oum.gov.pl -sdn.gov.pl -zp.gov.pl -uppo.gov.pl -mup.gov.pl +wkz.gov.pl +wsa.gov.pl +wskr.gov.pl +wsse.gov.pl wuoz.gov.pl -konsulat.gov.pl -oirm.gov.pl +wzmiuw.gov.pl +zp.gov.pl +zpisdn.gov.pl // pl regional domains (http://www.dns.pl/english/index.html) augustow.pl babia-gora.pl @@ -5843,7 +5321,7 @@ zarow.pl zgora.pl zgorzelec.pl -// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +// pm : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf pm // pn : http://www.government.pn/PnRegistry/policies.htm @@ -5941,7 +5419,7 @@ net.qa org.qa sch.qa -// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs +// re : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf re asso.re com.re @@ -6198,7 +5676,7 @@ td // http://www.telnic.org/ tel -// tf : https://en.wikipedia.org/wiki/.tf +// tf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf tf // tg : https://en.wikipedia.org/wiki/.tg @@ -6406,6 +5884,7 @@ kiev.ua kirovograd.ua km.ua kr.ua +kropyvnytskyi.ua krym.ua ks.ua kv.ua @@ -6794,20 +6273,89 @@ k12.vi net.vi org.vi -// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp +// vn : https://www.vnnic.vn/en/domain/cctld-vn +// https://vnnic.vn/sites/default/files/tailieu/vn.cctld.domains.txt vn +ac.vn +ai.vn +biz.vn com.vn -net.vn -org.vn edu.vn gov.vn -int.vn -ac.vn -biz.vn +health.vn +id.vn info.vn +int.vn +io.vn name.vn +net.vn +org.vn pro.vn -health.vn + +// vn geographical names +angiang.vn +bacgiang.vn +backan.vn +baclieu.vn +bacninh.vn +baria-vungtau.vn +bentre.vn +binhdinh.vn +binhduong.vn +binhphuoc.vn +binhthuan.vn +camau.vn +cantho.vn +caobang.vn +daklak.vn +daknong.vn +danang.vn +dienbien.vn +dongnai.vn +dongthap.vn +gialai.vn +hagiang.vn +haiduong.vn +haiphong.vn +hanam.vn +hanoi.vn +hatinh.vn +haugiang.vn +hoabinh.vn +hungyen.vn +khanhhoa.vn +kiengiang.vn +kontum.vn +laichau.vn +lamdong.vn +langson.vn +laocai.vn +longan.vn +namdinh.vn +nghean.vn +ninhbinh.vn +ninhthuan.vn +phutho.vn +phuyen.vn +quangbinh.vn +quangnam.vn +quangngai.vn +quangninh.vn +quangtri.vn +soctrang.vn +sonla.vn +tayninh.vn +thaibinh.vn +thainguyen.vn +thanhhoa.vn +thanhphohochiminh.vn +thuathienhue.vn +tiengiang.vn +travinh.vn +tuyenquang.vn +vinhlong.vn +vinhphuc.vn +yenbai.vn // vu : https://en.wikipedia.org/wiki/.vu // http://www.vunic.vu/ @@ -6817,7 +6365,7 @@ edu.vu net.vu org.vu -// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +// wf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf wf // ws : https://en.wikipedia.org/wiki/.ws @@ -6829,7 +6377,7 @@ org.ws gov.ws edu.ws -// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +// yt : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf yt // IDN ccTLDs @@ -7171,3471 +6719,4534 @@ org.zw // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-07-28T15:14:54Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2023-08-12T15:10:58Z // This list is auto-generated, don't edit it manually. -// aaa : 2015-02-26 American Automobile Association, Inc. +// aaa : American Automobile Association, Inc. +// https://www.iana.org/domains/root/db/aaa.html aaa -// aarp : 2015-05-21 AARP +// aarp : AARP +// https://www.iana.org/domains/root/db/aarp.html aarp -// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V. -abarth - -// abb : 2014-10-24 ABB Ltd +// abb : ABB Ltd +// https://www.iana.org/domains/root/db/abb.html abb -// abbott : 2014-07-24 Abbott Laboratories, Inc. +// abbott : Abbott Laboratories, Inc. +// https://www.iana.org/domains/root/db/abbott.html abbott -// abbvie : 2015-07-30 AbbVie Inc. +// abbvie : AbbVie Inc. +// https://www.iana.org/domains/root/db/abbvie.html abbvie -// abc : 2015-07-30 Disney Enterprises, Inc. +// abc : Disney Enterprises, Inc. +// https://www.iana.org/domains/root/db/abc.html abc -// able : 2015-06-25 Able Inc. +// able : Able Inc. +// https://www.iana.org/domains/root/db/able.html able -// abogado : 2014-04-24 Registry Services, LLC +// abogado : Registry Services, LLC +// https://www.iana.org/domains/root/db/abogado.html abogado -// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre +// abudhabi : Abu Dhabi Systems and Information Centre +// https://www.iana.org/domains/root/db/abudhabi.html abudhabi -// academy : 2013-11-07 Binky Moon, LLC +// academy : Binky Moon, LLC +// https://www.iana.org/domains/root/db/academy.html academy -// accenture : 2014-08-15 Accenture plc +// accenture : Accenture plc +// https://www.iana.org/domains/root/db/accenture.html accenture -// accountant : 2014-11-20 dot Accountant Limited +// accountant : dot Accountant Limited +// https://www.iana.org/domains/root/db/accountant.html accountant -// accountants : 2014-03-20 Binky Moon, LLC +// accountants : Binky Moon, LLC +// https://www.iana.org/domains/root/db/accountants.html accountants -// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG +// aco : ACO Severin Ahlmann GmbH & Co. KG +// https://www.iana.org/domains/root/db/aco.html aco -// actor : 2013-12-12 Dog Beach, LLC +// actor : Dog Beach, LLC +// https://www.iana.org/domains/root/db/actor.html actor -// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) -adac - -// ads : 2014-12-04 Charleston Road Registry Inc. +// ads : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/ads.html ads -// adult : 2014-10-16 ICM Registry AD LLC +// adult : ICM Registry AD LLC +// https://www.iana.org/domains/root/db/adult.html adult -// aeg : 2015-03-19 Aktiebolaget Electrolux +// aeg : Aktiebolaget Electrolux +// https://www.iana.org/domains/root/db/aeg.html aeg -// aetna : 2015-05-21 Aetna Life Insurance Company +// aetna : Aetna Life Insurance Company +// https://www.iana.org/domains/root/db/aetna.html aetna -// afl : 2014-10-02 Australian Football League +// afl : Australian Football League +// https://www.iana.org/domains/root/db/afl.html afl -// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa +// africa : ZA Central Registry NPC trading as Registry.Africa +// https://www.iana.org/domains/root/db/africa.html africa -// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +// agakhan : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/agakhan.html agakhan -// agency : 2013-11-14 Binky Moon, LLC +// agency : Binky Moon, LLC +// https://www.iana.org/domains/root/db/agency.html agency -// aig : 2014-12-18 American International Group, Inc. +// aig : American International Group, Inc. +// https://www.iana.org/domains/root/db/aig.html aig -// airbus : 2015-07-30 Airbus S.A.S. +// airbus : Airbus S.A.S. +// https://www.iana.org/domains/root/db/airbus.html airbus -// airforce : 2014-03-06 Dog Beach, LLC +// airforce : Dog Beach, LLC +// https://www.iana.org/domains/root/db/airforce.html airforce -// airtel : 2014-10-24 Bharti Airtel Limited +// airtel : Bharti Airtel Limited +// https://www.iana.org/domains/root/db/airtel.html airtel -// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +// akdn : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/akdn.html akdn -// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V. -alfaromeo - -// alibaba : 2015-01-15 Alibaba Group Holding Limited +// alibaba : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/alibaba.html alibaba -// alipay : 2015-01-15 Alibaba Group Holding Limited +// alipay : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/alipay.html alipay -// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +// allfinanz : Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +// https://www.iana.org/domains/root/db/allfinanz.html allfinanz -// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company +// allstate : Allstate Fire and Casualty Insurance Company +// https://www.iana.org/domains/root/db/allstate.html allstate -// ally : 2015-06-18 Ally Financial Inc. +// ally : Ally Financial Inc. +// https://www.iana.org/domains/root/db/ally.html ally -// alsace : 2014-07-02 Region Grand Est +// alsace : Region Grand Est +// https://www.iana.org/domains/root/db/alsace.html alsace -// alstom : 2015-07-30 ALSTOM +// alstom : ALSTOM +// https://www.iana.org/domains/root/db/alstom.html alstom -// amazon : 2019-12-19 Amazon Registry Services, Inc. +// amazon : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/amazon.html amazon -// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc. +// americanexpress : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/americanexpress.html americanexpress -// americanfamily : 2015-07-23 AmFam, Inc. +// americanfamily : AmFam, Inc. +// https://www.iana.org/domains/root/db/americanfamily.html americanfamily -// amex : 2015-07-31 American Express Travel Related Services Company, Inc. +// amex : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/amex.html amex -// amfam : 2015-07-23 AmFam, Inc. +// amfam : AmFam, Inc. +// https://www.iana.org/domains/root/db/amfam.html amfam -// amica : 2015-05-28 Amica Mutual Insurance Company +// amica : Amica Mutual Insurance Company +// https://www.iana.org/domains/root/db/amica.html amica -// amsterdam : 2014-07-24 Gemeente Amsterdam +// amsterdam : Gemeente Amsterdam +// https://www.iana.org/domains/root/db/amsterdam.html amsterdam -// analytics : 2014-12-18 Campus IP LLC +// analytics : Campus IP LLC +// https://www.iana.org/domains/root/db/analytics.html analytics -// android : 2014-08-07 Charleston Road Registry Inc. +// android : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/android.html android -// anquan : 2015-01-08 Beijing Qihu Keji Co., Ltd. +// anquan : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/anquan.html anquan -// anz : 2015-07-31 Australia and New Zealand Banking Group Limited +// anz : Australia and New Zealand Banking Group Limited +// https://www.iana.org/domains/root/db/anz.html anz -// aol : 2015-09-17 Oath Inc. +// aol : Oath Inc. +// https://www.iana.org/domains/root/db/aol.html aol -// apartments : 2014-12-11 Binky Moon, LLC +// apartments : Binky Moon, LLC +// https://www.iana.org/domains/root/db/apartments.html apartments -// app : 2015-05-14 Charleston Road Registry Inc. +// app : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/app.html app -// apple : 2015-05-14 Apple Inc. +// apple : Apple Inc. +// https://www.iana.org/domains/root/db/apple.html apple -// aquarelle : 2014-07-24 Aquarelle.com +// aquarelle : Aquarelle.com +// https://www.iana.org/domains/root/db/aquarelle.html aquarelle -// arab : 2015-11-12 League of Arab States +// arab : League of Arab States +// https://www.iana.org/domains/root/db/arab.html arab -// aramco : 2014-11-20 Aramco Services Company +// aramco : Aramco Services Company +// https://www.iana.org/domains/root/db/aramco.html aramco -// archi : 2014-02-06 Afilias Limited +// archi : Identity Digital Limited +// https://www.iana.org/domains/root/db/archi.html archi -// army : 2014-03-06 Dog Beach, LLC +// army : Dog Beach, LLC +// https://www.iana.org/domains/root/db/army.html army -// art : 2016-03-24 UK Creative Ideas Limited +// art : UK Creative Ideas Limited +// https://www.iana.org/domains/root/db/art.html art -// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. +// arte : Association Relative à la Télévision Européenne G.E.I.E. +// https://www.iana.org/domains/root/db/arte.html arte -// asda : 2015-07-31 Wal-Mart Stores, Inc. +// asda : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/asda.html asda -// associates : 2014-03-06 Binky Moon, LLC +// associates : Binky Moon, LLC +// https://www.iana.org/domains/root/db/associates.html associates -// athleta : 2015-07-30 The Gap, Inc. +// athleta : The Gap, Inc. +// https://www.iana.org/domains/root/db/athleta.html athleta -// attorney : 2014-03-20 Dog Beach, LLC +// attorney : Dog Beach, LLC +// https://www.iana.org/domains/root/db/attorney.html attorney -// auction : 2014-03-20 Dog Beach, LLC +// auction : Dog Beach, LLC +// https://www.iana.org/domains/root/db/auction.html auction -// audi : 2015-05-21 AUDI Aktiengesellschaft +// audi : AUDI Aktiengesellschaft +// https://www.iana.org/domains/root/db/audi.html audi -// audible : 2015-06-25 Amazon Registry Services, Inc. +// audible : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/audible.html audible -// audio : 2014-03-20 XYZ.COM LLC +// audio : XYZ.COM LLC +// https://www.iana.org/domains/root/db/audio.html audio -// auspost : 2015-08-13 Australian Postal Corporation +// auspost : Australian Postal Corporation +// https://www.iana.org/domains/root/db/auspost.html auspost -// author : 2014-12-18 Amazon Registry Services, Inc. +// author : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/author.html author -// auto : 2014-11-13 XYZ.COM LLC +// auto : XYZ.COM LLC +// https://www.iana.org/domains/root/db/auto.html auto -// autos : 2014-01-09 XYZ.COM LLC +// autos : XYZ.COM LLC +// https://www.iana.org/domains/root/db/autos.html autos -// avianca : 2015-01-08 Avianca Holdings S.A. +// avianca : Avianca Inc. +// https://www.iana.org/domains/root/db/avianca.html avianca -// aws : 2015-06-25 AWS Registry LLC +// aws : AWS Registry LLC +// https://www.iana.org/domains/root/db/aws.html aws -// axa : 2013-12-19 AXA Group Operations SAS +// axa : AXA Group Operations SAS +// https://www.iana.org/domains/root/db/axa.html axa -// azure : 2014-12-18 Microsoft Corporation +// azure : Microsoft Corporation +// https://www.iana.org/domains/root/db/azure.html azure -// baby : 2015-04-09 XYZ.COM LLC +// baby : XYZ.COM LLC +// https://www.iana.org/domains/root/db/baby.html baby -// baidu : 2015-01-08 Baidu, Inc. +// baidu : Baidu, Inc. +// https://www.iana.org/domains/root/db/baidu.html baidu -// banamex : 2015-07-30 Citigroup Inc. +// banamex : Citigroup Inc. +// https://www.iana.org/domains/root/db/banamex.html banamex -// bananarepublic : 2015-07-31 The Gap, Inc. +// bananarepublic : The Gap, Inc. +// https://www.iana.org/domains/root/db/bananarepublic.html bananarepublic -// band : 2014-06-12 Dog Beach, LLC +// band : Dog Beach, LLC +// https://www.iana.org/domains/root/db/band.html band -// bank : 2014-09-25 fTLD Registry Services LLC +// bank : fTLD Registry Services LLC +// https://www.iana.org/domains/root/db/bank.html bank -// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// bar : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// https://www.iana.org/domains/root/db/bar.html bar -// barcelona : 2014-07-24 Municipi de Barcelona +// barcelona : Municipi de Barcelona +// https://www.iana.org/domains/root/db/barcelona.html barcelona -// barclaycard : 2014-11-20 Barclays Bank PLC +// barclaycard : Barclays Bank PLC +// https://www.iana.org/domains/root/db/barclaycard.html barclaycard -// barclays : 2014-11-20 Barclays Bank PLC +// barclays : Barclays Bank PLC +// https://www.iana.org/domains/root/db/barclays.html barclays -// barefoot : 2015-06-11 Gallo Vineyards, Inc. +// barefoot : Gallo Vineyards, Inc. +// https://www.iana.org/domains/root/db/barefoot.html barefoot -// bargains : 2013-11-14 Binky Moon, LLC +// bargains : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bargains.html bargains -// baseball : 2015-10-29 MLB Advanced Media DH, LLC +// baseball : MLB Advanced Media DH, LLC +// https://www.iana.org/domains/root/db/baseball.html baseball -// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA) +// basketball : Fédération Internationale de Basketball (FIBA) +// https://www.iana.org/domains/root/db/basketball.html basketball -// bauhaus : 2014-04-17 Werkhaus GmbH +// bauhaus : Werkhaus GmbH +// https://www.iana.org/domains/root/db/bauhaus.html bauhaus -// bayern : 2014-01-23 Bayern Connect GmbH +// bayern : Bayern Connect GmbH +// https://www.iana.org/domains/root/db/bayern.html bayern -// bbc : 2014-12-18 British Broadcasting Corporation +// bbc : British Broadcasting Corporation +// https://www.iana.org/domains/root/db/bbc.html bbc -// bbt : 2015-07-23 BB&T Corporation +// bbt : BB&T Corporation +// https://www.iana.org/domains/root/db/bbt.html bbt -// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +// bbva : BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +// https://www.iana.org/domains/root/db/bbva.html bbva -// bcg : 2015-04-02 The Boston Consulting Group, Inc. +// bcg : The Boston Consulting Group, Inc. +// https://www.iana.org/domains/root/db/bcg.html bcg -// bcn : 2014-07-24 Municipi de Barcelona +// bcn : Municipi de Barcelona +// https://www.iana.org/domains/root/db/bcn.html bcn -// beats : 2015-05-14 Beats Electronics, LLC +// beats : Beats Electronics, LLC +// https://www.iana.org/domains/root/db/beats.html beats -// beauty : 2015-12-03 XYZ.COM LLC +// beauty : XYZ.COM LLC +// https://www.iana.org/domains/root/db/beauty.html beauty -// beer : 2014-01-09 Registry Services, LLC +// beer : Registry Services, LLC +// https://www.iana.org/domains/root/db/beer.html beer -// bentley : 2014-12-18 Bentley Motors Limited +// bentley : Bentley Motors Limited +// https://www.iana.org/domains/root/db/bentley.html bentley -// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG +// berlin : dotBERLIN GmbH & Co. KG +// https://www.iana.org/domains/root/db/berlin.html berlin -// best : 2013-12-19 BestTLD Pty Ltd +// best : BestTLD Pty Ltd +// https://www.iana.org/domains/root/db/best.html best -// bestbuy : 2015-07-31 BBY Solutions, Inc. +// bestbuy : BBY Solutions, Inc. +// https://www.iana.org/domains/root/db/bestbuy.html bestbuy -// bet : 2015-05-07 Afilias Limited +// bet : Identity Digital Limited +// https://www.iana.org/domains/root/db/bet.html bet -// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited +// bharti : Bharti Enterprises (Holding) Private Limited +// https://www.iana.org/domains/root/db/bharti.html bharti -// bible : 2014-06-19 American Bible Society +// bible : American Bible Society +// https://www.iana.org/domains/root/db/bible.html bible -// bid : 2013-12-19 dot Bid Limited +// bid : dot Bid Limited +// https://www.iana.org/domains/root/db/bid.html bid -// bike : 2013-08-27 Binky Moon, LLC +// bike : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bike.html bike -// bing : 2014-12-18 Microsoft Corporation +// bing : Microsoft Corporation +// https://www.iana.org/domains/root/db/bing.html bing -// bingo : 2014-12-04 Binky Moon, LLC +// bingo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bingo.html bingo -// bio : 2014-03-06 Afilias Limited +// bio : Identity Digital Limited +// https://www.iana.org/domains/root/db/bio.html bio -// black : 2014-01-16 Afilias Limited +// black : Identity Digital Limited +// https://www.iana.org/domains/root/db/black.html black -// blackfriday : 2014-01-16 Registry Services, LLC +// blackfriday : Registry Services, LLC +// https://www.iana.org/domains/root/db/blackfriday.html blackfriday -// blockbuster : 2015-07-30 Dish DBS Corporation +// blockbuster : Dish DBS Corporation +// https://www.iana.org/domains/root/db/blockbuster.html blockbuster -// blog : 2015-05-14 Knock Knock WHOIS There, LLC +// blog : Knock Knock WHOIS There, LLC +// https://www.iana.org/domains/root/db/blog.html blog -// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC +// bloomberg : Bloomberg IP Holdings LLC +// https://www.iana.org/domains/root/db/bloomberg.html bloomberg -// blue : 2013-11-07 Afilias Limited +// blue : Identity Digital Limited +// https://www.iana.org/domains/root/db/blue.html blue -// bms : 2014-10-30 Bristol-Myers Squibb Company +// bms : Bristol-Myers Squibb Company +// https://www.iana.org/domains/root/db/bms.html bms -// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +// bmw : Bayerische Motoren Werke Aktiengesellschaft +// https://www.iana.org/domains/root/db/bmw.html bmw -// bnpparibas : 2014-05-29 BNP Paribas +// bnpparibas : BNP Paribas +// https://www.iana.org/domains/root/db/bnpparibas.html bnpparibas -// boats : 2014-12-04 XYZ.COM LLC +// boats : XYZ.COM LLC +// https://www.iana.org/domains/root/db/boats.html boats -// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH +// boehringer : Boehringer Ingelheim International GmbH +// https://www.iana.org/domains/root/db/boehringer.html boehringer -// bofa : 2015-07-31 Bank of America Corporation +// bofa : Bank of America Corporation +// https://www.iana.org/domains/root/db/bofa.html bofa -// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// bom : Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// https://www.iana.org/domains/root/db/bom.html bom -// bond : 2014-06-05 ShortDot SA +// bond : ShortDot SA +// https://www.iana.org/domains/root/db/bond.html bond -// boo : 2014-01-30 Charleston Road Registry Inc. +// boo : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/boo.html boo -// book : 2015-08-27 Amazon Registry Services, Inc. +// book : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/book.html book -// booking : 2015-07-16 Booking.com B.V. +// booking : Booking.com B.V. +// https://www.iana.org/domains/root/db/booking.html booking -// bosch : 2015-06-18 Robert Bosch GMBH +// bosch : Robert Bosch GMBH +// https://www.iana.org/domains/root/db/bosch.html bosch -// bostik : 2015-05-28 Bostik SA +// bostik : Bostik SA +// https://www.iana.org/domains/root/db/bostik.html bostik -// boston : 2015-12-10 Registry Services, LLC +// boston : Registry Services, LLC +// https://www.iana.org/domains/root/db/boston.html boston -// bot : 2014-12-18 Amazon Registry Services, Inc. +// bot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/bot.html bot -// boutique : 2013-11-14 Binky Moon, LLC +// boutique : Binky Moon, LLC +// https://www.iana.org/domains/root/db/boutique.html boutique -// box : 2015-11-12 Intercap Registry Inc. +// box : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/box.html box -// bradesco : 2014-12-18 Banco Bradesco S.A. +// bradesco : Banco Bradesco S.A. +// https://www.iana.org/domains/root/db/bradesco.html bradesco -// bridgestone : 2014-12-18 Bridgestone Corporation +// bridgestone : Bridgestone Corporation +// https://www.iana.org/domains/root/db/bridgestone.html bridgestone -// broadway : 2014-12-22 Celebrate Broadway, Inc. +// broadway : Celebrate Broadway, Inc. +// https://www.iana.org/domains/root/db/broadway.html broadway -// broker : 2014-12-11 Dog Beach, LLC +// broker : Dog Beach, LLC +// https://www.iana.org/domains/root/db/broker.html broker -// brother : 2015-01-29 Brother Industries, Ltd. +// brother : Brother Industries, Ltd. +// https://www.iana.org/domains/root/db/brother.html brother -// brussels : 2014-02-06 DNS.be vzw +// brussels : DNS.be vzw +// https://www.iana.org/domains/root/db/brussels.html brussels -// bugatti : 2015-07-23 Bugatti International SA -bugatti - -// build : 2013-11-07 Plan Bee LLC +// build : Plan Bee LLC +// https://www.iana.org/domains/root/db/build.html build -// builders : 2013-11-07 Binky Moon, LLC +// builders : Binky Moon, LLC +// https://www.iana.org/domains/root/db/builders.html builders -// business : 2013-11-07 Binky Moon, LLC +// business : Binky Moon, LLC +// https://www.iana.org/domains/root/db/business.html business -// buy : 2014-12-18 Amazon Registry Services, Inc. +// buy : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/buy.html buy -// buzz : 2013-10-02 DOTSTRATEGY CO. +// buzz : DOTSTRATEGY CO. +// https://www.iana.org/domains/root/db/buzz.html buzz -// bzh : 2014-02-27 Association www.bzh +// bzh : Association www.bzh +// https://www.iana.org/domains/root/db/bzh.html bzh -// cab : 2013-10-24 Binky Moon, LLC +// cab : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cab.html cab -// cafe : 2015-02-11 Binky Moon, LLC +// cafe : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cafe.html cafe -// cal : 2014-07-24 Charleston Road Registry Inc. +// cal : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/cal.html cal -// call : 2014-12-18 Amazon Registry Services, Inc. +// call : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/call.html call -// calvinklein : 2015-07-30 PVH gTLD Holdings LLC +// calvinklein : PVH gTLD Holdings LLC +// https://www.iana.org/domains/root/db/calvinklein.html calvinklein -// cam : 2016-04-21 Cam Connecting SARL +// cam : Cam Connecting SARL +// https://www.iana.org/domains/root/db/cam.html cam -// camera : 2013-08-27 Binky Moon, LLC +// camera : Binky Moon, LLC +// https://www.iana.org/domains/root/db/camera.html camera -// camp : 2013-11-07 Binky Moon, LLC +// camp : Binky Moon, LLC +// https://www.iana.org/domains/root/db/camp.html camp -// cancerresearch : 2014-05-15 Australian Cancer Research Foundation -cancerresearch - -// canon : 2014-09-12 Canon Inc. +// canon : Canon Inc. +// https://www.iana.org/domains/root/db/canon.html canon -// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +// capetown : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/capetown.html capetown -// capital : 2014-03-06 Binky Moon, LLC +// capital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/capital.html capital -// capitalone : 2015-08-06 Capital One Financial Corporation +// capitalone : Capital One Financial Corporation +// https://www.iana.org/domains/root/db/capitalone.html capitalone -// car : 2015-01-22 XYZ.COM LLC +// car : XYZ.COM LLC +// https://www.iana.org/domains/root/db/car.html car -// caravan : 2013-12-12 Caravan International, Inc. +// caravan : Caravan International, Inc. +// https://www.iana.org/domains/root/db/caravan.html caravan -// cards : 2013-12-05 Binky Moon, LLC +// cards : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cards.html cards -// care : 2014-03-06 Binky Moon, LLC +// care : Binky Moon, LLC +// https://www.iana.org/domains/root/db/care.html care -// career : 2013-10-09 dotCareer LLC +// career : dotCareer LLC +// https://www.iana.org/domains/root/db/career.html career -// careers : 2013-10-02 Binky Moon, LLC +// careers : Binky Moon, LLC +// https://www.iana.org/domains/root/db/careers.html careers -// cars : 2014-11-13 XYZ.COM LLC +// cars : XYZ.COM LLC +// https://www.iana.org/domains/root/db/cars.html cars -// casa : 2013-11-21 Registry Services, LLC +// casa : Registry Services, LLC +// https://www.iana.org/domains/root/db/casa.html casa -// case : 2015-09-03 Helium TLDs Ltd +// case : Digity, LLC +// https://www.iana.org/domains/root/db/case.html case -// cash : 2014-03-06 Binky Moon, LLC +// cash : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cash.html cash -// casino : 2014-12-18 Binky Moon, LLC +// casino : Binky Moon, LLC +// https://www.iana.org/domains/root/db/casino.html casino -// catering : 2013-12-05 Binky Moon, LLC +// catering : Binky Moon, LLC +// https://www.iana.org/domains/root/db/catering.html catering -// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// catholic : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/catholic.html catholic -// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +// cba : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/cba.html cba -// cbn : 2014-08-22 The Christian Broadcasting Network, Inc. +// cbn : The Christian Broadcasting Network, Inc. +// https://www.iana.org/domains/root/db/cbn.html cbn -// cbre : 2015-07-02 CBRE, Inc. +// cbre : CBRE, Inc. +// https://www.iana.org/domains/root/db/cbre.html cbre -// cbs : 2015-08-06 CBS Domains Inc. +// cbs : CBS Domains Inc. +// https://www.iana.org/domains/root/db/cbs.html cbs -// center : 2013-11-07 Binky Moon, LLC +// center : Binky Moon, LLC +// https://www.iana.org/domains/root/db/center.html center -// ceo : 2013-11-07 CEOTLD Pty Ltd +// ceo : CEOTLD Pty Ltd +// https://www.iana.org/domains/root/db/ceo.html ceo -// cern : 2014-06-05 European Organization for Nuclear Research ("CERN") +// cern : European Organization for Nuclear Research ("CERN") +// https://www.iana.org/domains/root/db/cern.html cern -// cfa : 2014-08-28 CFA Institute +// cfa : CFA Institute +// https://www.iana.org/domains/root/db/cfa.html cfa -// cfd : 2014-12-11 ShortDot SA +// cfd : ShortDot SA +// https://www.iana.org/domains/root/db/cfd.html cfd -// chanel : 2015-04-09 Chanel International B.V. +// chanel : Chanel International B.V. +// https://www.iana.org/domains/root/db/chanel.html chanel -// channel : 2014-05-08 Charleston Road Registry Inc. +// channel : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/channel.html channel -// charity : 2018-04-11 Public Interest Registry +// charity : Public Interest Registry +// https://www.iana.org/domains/root/db/charity.html charity -// chase : 2015-04-30 JPMorgan Chase Bank, National Association +// chase : JPMorgan Chase Bank, National Association +// https://www.iana.org/domains/root/db/chase.html chase -// chat : 2014-12-04 Binky Moon, LLC +// chat : Binky Moon, LLC +// https://www.iana.org/domains/root/db/chat.html chat -// cheap : 2013-11-14 Binky Moon, LLC +// cheap : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cheap.html cheap -// chintai : 2015-06-11 CHINTAI Corporation +// chintai : CHINTAI Corporation +// https://www.iana.org/domains/root/db/chintai.html chintai -// christmas : 2013-11-21 XYZ.COM LLC +// christmas : XYZ.COM LLC +// https://www.iana.org/domains/root/db/christmas.html christmas -// chrome : 2014-07-24 Charleston Road Registry Inc. +// chrome : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/chrome.html chrome -// church : 2014-02-06 Binky Moon, LLC +// church : Binky Moon, LLC +// https://www.iana.org/domains/root/db/church.html church -// cipriani : 2015-02-19 Hotel Cipriani Srl +// cipriani : Hotel Cipriani Srl +// https://www.iana.org/domains/root/db/cipriani.html cipriani -// circle : 2014-12-18 Amazon Registry Services, Inc. +// circle : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/circle.html circle -// cisco : 2014-12-22 Cisco Technology, Inc. +// cisco : Cisco Technology, Inc. +// https://www.iana.org/domains/root/db/cisco.html cisco -// citadel : 2015-07-23 Citadel Domain LLC +// citadel : Citadel Domain LLC +// https://www.iana.org/domains/root/db/citadel.html citadel -// citi : 2015-07-30 Citigroup Inc. +// citi : Citigroup Inc. +// https://www.iana.org/domains/root/db/citi.html citi -// citic : 2014-01-09 CITIC Group Corporation +// citic : CITIC Group Corporation +// https://www.iana.org/domains/root/db/citic.html citic -// city : 2014-05-29 Binky Moon, LLC +// city : Binky Moon, LLC +// https://www.iana.org/domains/root/db/city.html city -// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc. +// cityeats : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/cityeats.html cityeats -// claims : 2014-03-20 Binky Moon, LLC +// claims : Binky Moon, LLC +// https://www.iana.org/domains/root/db/claims.html claims -// cleaning : 2013-12-05 Binky Moon, LLC +// cleaning : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cleaning.html cleaning -// click : 2014-06-05 UNR Corp. +// click : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/click.html click -// clinic : 2014-03-20 Binky Moon, LLC +// clinic : Binky Moon, LLC +// https://www.iana.org/domains/root/db/clinic.html clinic -// clinique : 2015-10-01 The Estée Lauder Companies Inc. +// clinique : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/clinique.html clinique -// clothing : 2013-08-27 Binky Moon, LLC +// clothing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/clothing.html clothing -// cloud : 2015-04-16 Aruba PEC S.p.A. +// cloud : Aruba PEC S.p.A. +// https://www.iana.org/domains/root/db/cloud.html cloud -// club : 2013-11-08 Registry Services, LLC +// club : Registry Services, LLC +// https://www.iana.org/domains/root/db/club.html club -// clubmed : 2015-06-25 Club Méditerranée S.A. +// clubmed : Club Méditerranée S.A. +// https://www.iana.org/domains/root/db/clubmed.html clubmed -// coach : 2014-10-09 Binky Moon, LLC +// coach : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coach.html coach -// codes : 2013-10-31 Binky Moon, LLC +// codes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/codes.html codes -// coffee : 2013-10-17 Binky Moon, LLC +// coffee : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coffee.html coffee -// college : 2014-01-16 XYZ.COM LLC +// college : XYZ.COM LLC +// https://www.iana.org/domains/root/db/college.html college -// cologne : 2014-02-05 dotKoeln GmbH +// cologne : dotKoeln GmbH +// https://www.iana.org/domains/root/db/cologne.html cologne -// comcast : 2015-07-23 Comcast IP Holdings I, LLC +// comcast : Comcast IP Holdings I, LLC +// https://www.iana.org/domains/root/db/comcast.html comcast -// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +// commbank : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/commbank.html commbank -// community : 2013-12-05 Binky Moon, LLC +// community : Binky Moon, LLC +// https://www.iana.org/domains/root/db/community.html community -// company : 2013-11-07 Binky Moon, LLC +// company : Binky Moon, LLC +// https://www.iana.org/domains/root/db/company.html company -// compare : 2015-10-08 Registry Services, LLC +// compare : Registry Services, LLC +// https://www.iana.org/domains/root/db/compare.html compare -// computer : 2013-10-24 Binky Moon, LLC +// computer : Binky Moon, LLC +// https://www.iana.org/domains/root/db/computer.html computer -// comsec : 2015-01-08 VeriSign, Inc. +// comsec : VeriSign, Inc. +// https://www.iana.org/domains/root/db/comsec.html comsec -// condos : 2013-12-05 Binky Moon, LLC +// condos : Binky Moon, LLC +// https://www.iana.org/domains/root/db/condos.html condos -// construction : 2013-09-16 Binky Moon, LLC +// construction : Binky Moon, LLC +// https://www.iana.org/domains/root/db/construction.html construction -// consulting : 2013-12-05 Dog Beach, LLC +// consulting : Dog Beach, LLC +// https://www.iana.org/domains/root/db/consulting.html consulting -// contact : 2015-01-08 Dog Beach, LLC +// contact : Dog Beach, LLC +// https://www.iana.org/domains/root/db/contact.html contact -// contractors : 2013-09-10 Binky Moon, LLC +// contractors : Binky Moon, LLC +// https://www.iana.org/domains/root/db/contractors.html contractors -// cooking : 2013-11-21 Registry Services, LLC +// cooking : Registry Services, LLC +// https://www.iana.org/domains/root/db/cooking.html cooking -// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. -cookingchannel - -// cool : 2013-11-14 Binky Moon, LLC +// cool : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cool.html cool -// corsica : 2014-09-25 Collectivité de Corse +// corsica : Collectivité de Corse +// https://www.iana.org/domains/root/db/corsica.html corsica -// country : 2013-12-19 DotCountry LLC +// country : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/country.html country -// coupon : 2015-02-26 Amazon Registry Services, Inc. +// coupon : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/coupon.html coupon -// coupons : 2015-03-26 Binky Moon, LLC +// coupons : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coupons.html coupons -// courses : 2014-12-04 Registry Services, LLC +// courses : Registry Services, LLC +// https://www.iana.org/domains/root/db/courses.html courses -// cpa : 2019-06-10 American Institute of Certified Public Accountants +// cpa : American Institute of Certified Public Accountants +// https://www.iana.org/domains/root/db/cpa.html cpa -// credit : 2014-03-20 Binky Moon, LLC +// credit : Binky Moon, LLC +// https://www.iana.org/domains/root/db/credit.html credit -// creditcard : 2014-03-20 Binky Moon, LLC +// creditcard : Binky Moon, LLC +// https://www.iana.org/domains/root/db/creditcard.html creditcard -// creditunion : 2015-01-22 DotCooperation LLC +// creditunion : DotCooperation LLC +// https://www.iana.org/domains/root/db/creditunion.html creditunion -// cricket : 2014-10-09 dot Cricket Limited +// cricket : dot Cricket Limited +// https://www.iana.org/domains/root/db/cricket.html cricket -// crown : 2014-10-24 Crown Equipment Corporation +// crown : Crown Equipment Corporation +// https://www.iana.org/domains/root/db/crown.html crown -// crs : 2014-04-03 Federated Co-operatives Limited +// crs : Federated Co-operatives Limited +// https://www.iana.org/domains/root/db/crs.html crs -// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd. +// cruise : Viking River Cruises (Bermuda) Ltd. +// https://www.iana.org/domains/root/db/cruise.html cruise -// cruises : 2013-12-05 Binky Moon, LLC +// cruises : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cruises.html cruises -// cuisinella : 2014-04-03 SCHMIDT GROUPE S.A.S. +// cuisinella : SCHMIDT GROUPE S.A.S. +// https://www.iana.org/domains/root/db/cuisinella.html cuisinella -// cymru : 2014-05-08 Nominet UK +// cymru : Nominet UK +// https://www.iana.org/domains/root/db/cymru.html cymru -// cyou : 2015-01-22 ShortDot SA +// cyou : ShortDot SA +// https://www.iana.org/domains/root/db/cyou.html cyou -// dabur : 2014-02-06 Dabur India Limited +// dabur : Dabur India Limited +// https://www.iana.org/domains/root/db/dabur.html dabur -// dad : 2014-01-23 Charleston Road Registry Inc. +// dad : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dad.html dad -// dance : 2013-10-24 Dog Beach, LLC +// dance : Dog Beach, LLC +// https://www.iana.org/domains/root/db/dance.html dance -// data : 2016-06-02 Dish DBS Corporation +// data : Dish DBS Corporation +// https://www.iana.org/domains/root/db/data.html data -// date : 2014-11-20 dot Date Limited +// date : dot Date Limited +// https://www.iana.org/domains/root/db/date.html date -// dating : 2013-12-05 Binky Moon, LLC +// dating : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dating.html dating -// datsun : 2014-03-27 NISSAN MOTOR CO., LTD. +// datsun : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/datsun.html datsun -// day : 2014-01-30 Charleston Road Registry Inc. +// day : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/day.html day -// dclk : 2014-11-20 Charleston Road Registry Inc. +// dclk : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dclk.html dclk -// dds : 2015-05-07 Registry Services, LLC +// dds : Registry Services, LLC +// https://www.iana.org/domains/root/db/dds.html dds -// deal : 2015-06-25 Amazon Registry Services, Inc. +// deal : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/deal.html deal -// dealer : 2014-12-22 Intercap Registry Inc. +// dealer : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/dealer.html dealer -// deals : 2014-05-22 Binky Moon, LLC +// deals : Binky Moon, LLC +// https://www.iana.org/domains/root/db/deals.html deals -// degree : 2014-03-06 Dog Beach, LLC +// degree : Dog Beach, LLC +// https://www.iana.org/domains/root/db/degree.html degree -// delivery : 2014-09-11 Binky Moon, LLC +// delivery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/delivery.html delivery -// dell : 2014-10-24 Dell Inc. +// dell : Dell Inc. +// https://www.iana.org/domains/root/db/dell.html dell -// deloitte : 2015-07-31 Deloitte Touche Tohmatsu +// deloitte : Deloitte Touche Tohmatsu +// https://www.iana.org/domains/root/db/deloitte.html deloitte -// delta : 2015-02-19 Delta Air Lines, Inc. +// delta : Delta Air Lines, Inc. +// https://www.iana.org/domains/root/db/delta.html delta -// democrat : 2013-10-24 Dog Beach, LLC +// democrat : Dog Beach, LLC +// https://www.iana.org/domains/root/db/democrat.html democrat -// dental : 2014-03-20 Binky Moon, LLC +// dental : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dental.html dental -// dentist : 2014-03-20 Dog Beach, LLC +// dentist : Dog Beach, LLC +// https://www.iana.org/domains/root/db/dentist.html dentist -// desi : 2013-11-14 Desi Networks LLC +// desi : Desi Networks LLC +// https://www.iana.org/domains/root/db/desi.html desi -// design : 2014-11-07 Registry Services, LLC +// design : Registry Services, LLC +// https://www.iana.org/domains/root/db/design.html design -// dev : 2014-10-16 Charleston Road Registry Inc. +// dev : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dev.html dev -// dhl : 2015-07-23 Deutsche Post AG +// dhl : Deutsche Post AG +// https://www.iana.org/domains/root/db/dhl.html dhl -// diamonds : 2013-09-22 Binky Moon, LLC +// diamonds : Binky Moon, LLC +// https://www.iana.org/domains/root/db/diamonds.html diamonds -// diet : 2014-06-26 XYZ.COM LLC +// diet : XYZ.COM LLC +// https://www.iana.org/domains/root/db/diet.html diet -// digital : 2014-03-06 Binky Moon, LLC +// digital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/digital.html digital -// direct : 2014-04-10 Binky Moon, LLC +// direct : Binky Moon, LLC +// https://www.iana.org/domains/root/db/direct.html direct -// directory : 2013-09-20 Binky Moon, LLC +// directory : Binky Moon, LLC +// https://www.iana.org/domains/root/db/directory.html directory -// discount : 2014-03-06 Binky Moon, LLC +// discount : Binky Moon, LLC +// https://www.iana.org/domains/root/db/discount.html discount -// discover : 2015-07-23 Discover Financial Services +// discover : Discover Financial Services +// https://www.iana.org/domains/root/db/discover.html discover -// dish : 2015-07-30 Dish DBS Corporation +// dish : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dish.html dish -// diy : 2015-11-05 Lifestyle Domain Holdings, Inc. +// diy : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/diy.html diy -// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. +// dnp : Dai Nippon Printing Co., Ltd. +// https://www.iana.org/domains/root/db/dnp.html dnp -// docs : 2014-10-16 Charleston Road Registry Inc. +// docs : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/docs.html docs -// doctor : 2016-06-02 Binky Moon, LLC +// doctor : Binky Moon, LLC +// https://www.iana.org/domains/root/db/doctor.html doctor -// dog : 2014-12-04 Binky Moon, LLC +// dog : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dog.html dog -// domains : 2013-10-17 Binky Moon, LLC +// domains : Binky Moon, LLC +// https://www.iana.org/domains/root/db/domains.html domains -// dot : 2015-05-21 Dish DBS Corporation +// dot : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dot.html dot -// download : 2014-11-20 dot Support Limited +// download : dot Support Limited +// https://www.iana.org/domains/root/db/download.html download -// drive : 2015-03-05 Charleston Road Registry Inc. +// drive : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/drive.html drive -// dtv : 2015-06-04 Dish DBS Corporation +// dtv : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dtv.html dtv -// dubai : 2015-01-01 Dubai Smart Government Department +// dubai : Dubai Smart Government Department +// https://www.iana.org/domains/root/db/dubai.html dubai -// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company +// dunlop : The Goodyear Tire & Rubber Company +// https://www.iana.org/domains/root/db/dunlop.html dunlop -// dupont : 2015-06-25 DuPont Specialty Products USA, LLC +// dupont : DuPont Specialty Products USA, LLC +// https://www.iana.org/domains/root/db/dupont.html dupont -// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +// durban : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/durban.html durban -// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +// dvag : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/dvag.html dvag -// dvr : 2016-05-26 DISH Technologies L.L.C. +// dvr : DISH Technologies L.L.C. +// https://www.iana.org/domains/root/db/dvr.html dvr -// earth : 2014-12-04 Interlink Systems Innovation Institute K.K. +// earth : Interlink Systems Innovation Institute K.K. +// https://www.iana.org/domains/root/db/earth.html earth -// eat : 2014-01-23 Charleston Road Registry Inc. +// eat : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/eat.html eat -// eco : 2016-07-08 Big Room Inc. +// eco : Big Room Inc. +// https://www.iana.org/domains/root/db/eco.html eco -// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V. +// edeka : EDEKA Verband kaufmännischer Genossenschaften e.V. +// https://www.iana.org/domains/root/db/edeka.html edeka -// education : 2013-11-07 Binky Moon, LLC +// education : Binky Moon, LLC +// https://www.iana.org/domains/root/db/education.html education -// email : 2013-10-31 Binky Moon, LLC +// email : Binky Moon, LLC +// https://www.iana.org/domains/root/db/email.html email -// emerck : 2014-04-03 Merck KGaA +// emerck : Merck KGaA +// https://www.iana.org/domains/root/db/emerck.html emerck -// energy : 2014-09-11 Binky Moon, LLC +// energy : Binky Moon, LLC +// https://www.iana.org/domains/root/db/energy.html energy -// engineer : 2014-03-06 Dog Beach, LLC +// engineer : Dog Beach, LLC +// https://www.iana.org/domains/root/db/engineer.html engineer -// engineering : 2014-03-06 Binky Moon, LLC +// engineering : Binky Moon, LLC +// https://www.iana.org/domains/root/db/engineering.html engineering -// enterprises : 2013-09-20 Binky Moon, LLC +// enterprises : Binky Moon, LLC +// https://www.iana.org/domains/root/db/enterprises.html enterprises -// epson : 2014-12-04 Seiko Epson Corporation +// epson : Seiko Epson Corporation +// https://www.iana.org/domains/root/db/epson.html epson -// equipment : 2013-08-27 Binky Moon, LLC +// equipment : Binky Moon, LLC +// https://www.iana.org/domains/root/db/equipment.html equipment -// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson +// ericsson : Telefonaktiebolaget L M Ericsson +// https://www.iana.org/domains/root/db/ericsson.html ericsson -// erni : 2014-04-03 ERNI Group Holding AG +// erni : ERNI Group Holding AG +// https://www.iana.org/domains/root/db/erni.html erni -// esq : 2014-05-08 Charleston Road Registry Inc. +// esq : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/esq.html esq -// estate : 2013-08-27 Binky Moon, LLC +// estate : Binky Moon, LLC +// https://www.iana.org/domains/root/db/estate.html estate -// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +// etisalat : Emirates Telecommunications Corporation (trading as Etisalat) +// https://www.iana.org/domains/root/db/etisalat.html etisalat -// eurovision : 2014-04-24 European Broadcasting Union (EBU) +// eurovision : European Broadcasting Union (EBU) +// https://www.iana.org/domains/root/db/eurovision.html eurovision -// eus : 2013-12-12 Puntueus Fundazioa +// eus : Puntueus Fundazioa +// https://www.iana.org/domains/root/db/eus.html eus -// events : 2013-12-05 Binky Moon, LLC +// events : Binky Moon, LLC +// https://www.iana.org/domains/root/db/events.html events -// exchange : 2014-03-06 Binky Moon, LLC +// exchange : Binky Moon, LLC +// https://www.iana.org/domains/root/db/exchange.html exchange -// expert : 2013-11-21 Binky Moon, LLC +// expert : Binky Moon, LLC +// https://www.iana.org/domains/root/db/expert.html expert -// exposed : 2013-12-05 Binky Moon, LLC +// exposed : Binky Moon, LLC +// https://www.iana.org/domains/root/db/exposed.html exposed -// express : 2015-02-11 Binky Moon, LLC +// express : Binky Moon, LLC +// https://www.iana.org/domains/root/db/express.html express -// extraspace : 2015-05-14 Extra Space Storage LLC +// extraspace : Extra Space Storage LLC +// https://www.iana.org/domains/root/db/extraspace.html extraspace -// fage : 2014-12-18 Fage International S.A. +// fage : Fage International S.A. +// https://www.iana.org/domains/root/db/fage.html fage -// fail : 2014-03-06 Binky Moon, LLC +// fail : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fail.html fail -// fairwinds : 2014-11-13 FairWinds Partners, LLC +// fairwinds : FairWinds Partners, LLC +// https://www.iana.org/domains/root/db/fairwinds.html fairwinds -// faith : 2014-11-20 dot Faith Limited +// faith : dot Faith Limited +// https://www.iana.org/domains/root/db/faith.html faith -// family : 2015-04-02 Dog Beach, LLC +// family : Dog Beach, LLC +// https://www.iana.org/domains/root/db/family.html family -// fan : 2014-03-06 Dog Beach, LLC +// fan : Dog Beach, LLC +// https://www.iana.org/domains/root/db/fan.html fan -// fans : 2014-11-07 ZDNS International Limited +// fans : ZDNS International Limited +// https://www.iana.org/domains/root/db/fans.html fans -// farm : 2013-11-07 Binky Moon, LLC +// farm : Binky Moon, LLC +// https://www.iana.org/domains/root/db/farm.html farm -// farmers : 2015-07-09 Farmers Insurance Exchange +// farmers : Farmers Insurance Exchange +// https://www.iana.org/domains/root/db/farmers.html farmers -// fashion : 2014-07-03 Registry Services, LLC +// fashion : Registry Services, LLC +// https://www.iana.org/domains/root/db/fashion.html fashion -// fast : 2014-12-18 Amazon Registry Services, Inc. +// fast : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/fast.html fast -// fedex : 2015-08-06 Federal Express Corporation +// fedex : Federal Express Corporation +// https://www.iana.org/domains/root/db/fedex.html fedex -// feedback : 2013-12-19 Top Level Spectrum, Inc. +// feedback : Top Level Spectrum, Inc. +// https://www.iana.org/domains/root/db/feedback.html feedback -// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V. +// ferrari : Fiat Chrysler Automobiles N.V. +// https://www.iana.org/domains/root/db/ferrari.html ferrari -// ferrero : 2014-12-18 Ferrero Trading Lux S.A. +// ferrero : Ferrero Trading Lux S.A. +// https://www.iana.org/domains/root/db/ferrero.html ferrero -// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V. -fiat - -// fidelity : 2015-07-30 Fidelity Brokerage Services LLC +// fidelity : Fidelity Brokerage Services LLC +// https://www.iana.org/domains/root/db/fidelity.html fidelity -// fido : 2015-08-06 Rogers Communications Canada Inc. +// fido : Rogers Communications Canada Inc. +// https://www.iana.org/domains/root/db/fido.html fido -// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd +// film : Motion Picture Domain Registry Pty Ltd +// https://www.iana.org/domains/root/db/film.html film -// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// final : Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// https://www.iana.org/domains/root/db/final.html final -// finance : 2014-03-20 Binky Moon, LLC +// finance : Binky Moon, LLC +// https://www.iana.org/domains/root/db/finance.html finance -// financial : 2014-03-06 Binky Moon, LLC +// financial : Binky Moon, LLC +// https://www.iana.org/domains/root/db/financial.html financial -// fire : 2015-06-25 Amazon Registry Services, Inc. +// fire : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/fire.html fire -// firestone : 2014-12-18 Bridgestone Licensing Services, Inc +// firestone : Bridgestone Licensing Services, Inc +// https://www.iana.org/domains/root/db/firestone.html firestone -// firmdale : 2014-03-27 Firmdale Holdings Limited +// firmdale : Firmdale Holdings Limited +// https://www.iana.org/domains/root/db/firmdale.html firmdale -// fish : 2013-12-12 Binky Moon, LLC +// fish : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fish.html fish -// fishing : 2013-11-21 Registry Services, LLC +// fishing : Registry Services, LLC +// https://www.iana.org/domains/root/db/fishing.html fishing -// fit : 2014-11-07 Registry Services, LLC +// fit : Registry Services, LLC +// https://www.iana.org/domains/root/db/fit.html fit -// fitness : 2014-03-06 Binky Moon, LLC +// fitness : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fitness.html fitness -// flickr : 2015-04-02 Flickr, Inc. +// flickr : Flickr, Inc. +// https://www.iana.org/domains/root/db/flickr.html flickr -// flights : 2013-12-05 Binky Moon, LLC +// flights : Binky Moon, LLC +// https://www.iana.org/domains/root/db/flights.html flights -// flir : 2015-07-23 FLIR Systems, Inc. +// flir : FLIR Systems, Inc. +// https://www.iana.org/domains/root/db/flir.html flir -// florist : 2013-11-07 Binky Moon, LLC +// florist : Binky Moon, LLC +// https://www.iana.org/domains/root/db/florist.html florist -// flowers : 2014-10-09 XYZ.COM LLC +// flowers : XYZ.COM LLC +// https://www.iana.org/domains/root/db/flowers.html flowers -// fly : 2014-05-08 Charleston Road Registry Inc. +// fly : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/fly.html fly -// foo : 2014-01-23 Charleston Road Registry Inc. +// foo : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/foo.html foo -// food : 2016-04-21 Lifestyle Domain Holdings, Inc. +// food : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/food.html food -// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc. -foodnetwork - -// football : 2014-12-18 Binky Moon, LLC +// football : Binky Moon, LLC +// https://www.iana.org/domains/root/db/football.html football -// ford : 2014-11-13 Ford Motor Company +// ford : Ford Motor Company +// https://www.iana.org/domains/root/db/ford.html ford -// forex : 2014-12-11 Dog Beach, LLC +// forex : Dog Beach, LLC +// https://www.iana.org/domains/root/db/forex.html forex -// forsale : 2014-05-22 Dog Beach, LLC +// forsale : Dog Beach, LLC +// https://www.iana.org/domains/root/db/forsale.html forsale -// forum : 2015-04-02 Fegistry, LLC +// forum : Fegistry, LLC +// https://www.iana.org/domains/root/db/forum.html forum -// foundation : 2013-12-05 Public Interest Registry +// foundation : Public Interest Registry +// https://www.iana.org/domains/root/db/foundation.html foundation -// fox : 2015-09-11 FOX Registry, LLC +// fox : FOX Registry, LLC +// https://www.iana.org/domains/root/db/fox.html fox -// free : 2015-12-10 Amazon Registry Services, Inc. +// free : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/free.html free -// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH +// fresenius : Fresenius Immobilien-Verwaltungs-GmbH +// https://www.iana.org/domains/root/db/fresenius.html fresenius -// frl : 2014-05-15 FRLregistry B.V. +// frl : FRLregistry B.V. +// https://www.iana.org/domains/root/db/frl.html frl -// frogans : 2013-12-19 OP3FT +// frogans : OP3FT +// https://www.iana.org/domains/root/db/frogans.html frogans -// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc. +// frontdoor : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/frontdoor.html frontdoor -// frontier : 2015-02-05 Frontier Communications Corporation +// frontier : Frontier Communications Corporation +// https://www.iana.org/domains/root/db/frontier.html frontier -// ftr : 2015-07-16 Frontier Communications Corporation +// ftr : Frontier Communications Corporation +// https://www.iana.org/domains/root/db/ftr.html ftr -// fujitsu : 2015-07-30 Fujitsu Limited +// fujitsu : Fujitsu Limited +// https://www.iana.org/domains/root/db/fujitsu.html fujitsu -// fun : 2016-01-14 Radix FZC +// fun : Radix FZC DMCC +// https://www.iana.org/domains/root/db/fun.html fun -// fund : 2014-03-20 Binky Moon, LLC +// fund : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fund.html fund -// furniture : 2014-03-20 Binky Moon, LLC +// furniture : Binky Moon, LLC +// https://www.iana.org/domains/root/db/furniture.html furniture -// futbol : 2013-09-20 Dog Beach, LLC +// futbol : Dog Beach, LLC +// https://www.iana.org/domains/root/db/futbol.html futbol -// fyi : 2015-04-02 Binky Moon, LLC +// fyi : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fyi.html fyi -// gal : 2013-11-07 Asociación puntoGAL +// gal : Asociación puntoGAL +// https://www.iana.org/domains/root/db/gal.html gal -// gallery : 2013-09-13 Binky Moon, LLC +// gallery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gallery.html gallery -// gallo : 2015-06-11 Gallo Vineyards, Inc. +// gallo : Gallo Vineyards, Inc. +// https://www.iana.org/domains/root/db/gallo.html gallo -// gallup : 2015-02-19 Gallup, Inc. +// gallup : Gallup, Inc. +// https://www.iana.org/domains/root/db/gallup.html gallup -// game : 2015-05-28 XYZ.COM LLC +// game : XYZ.COM LLC +// https://www.iana.org/domains/root/db/game.html game -// games : 2015-05-28 Dog Beach, LLC +// games : Dog Beach, LLC +// https://www.iana.org/domains/root/db/games.html games -// gap : 2015-07-31 The Gap, Inc. +// gap : The Gap, Inc. +// https://www.iana.org/domains/root/db/gap.html gap -// garden : 2014-06-26 Registry Services, LLC +// garden : Registry Services, LLC +// https://www.iana.org/domains/root/db/garden.html garden -// gay : 2019-05-23 Top Level Design, LLC +// gay : Registry Services, LLC +// https://www.iana.org/domains/root/db/gay.html gay -// gbiz : 2014-07-17 Charleston Road Registry Inc. +// gbiz : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gbiz.html gbiz -// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems" +// gdn : Joint Stock Company "Navigation-information systems" +// https://www.iana.org/domains/root/db/gdn.html gdn -// gea : 2014-12-04 GEA Group Aktiengesellschaft +// gea : GEA Group Aktiengesellschaft +// https://www.iana.org/domains/root/db/gea.html gea -// gent : 2014-01-23 Easyhost BV +// gent : Easyhost BV +// https://www.iana.org/domains/root/db/gent.html gent -// genting : 2015-03-12 Resorts World Inc Pte. Ltd. +// genting : Resorts World Inc Pte. Ltd. +// https://www.iana.org/domains/root/db/genting.html genting -// george : 2015-07-31 Wal-Mart Stores, Inc. +// george : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/george.html george -// ggee : 2014-01-09 GMO Internet, Inc. +// ggee : GMO Internet, Inc. +// https://www.iana.org/domains/root/db/ggee.html ggee -// gift : 2013-10-17 DotGift, LLC +// gift : DotGift, LLC +// https://www.iana.org/domains/root/db/gift.html gift -// gifts : 2014-07-03 Binky Moon, LLC +// gifts : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gifts.html gifts -// gives : 2014-03-06 Public Interest Registry +// gives : Public Interest Registry +// https://www.iana.org/domains/root/db/gives.html gives -// giving : 2014-11-13 Giving Limited +// giving : Public Interest Registry +// https://www.iana.org/domains/root/db/giving.html giving -// glass : 2013-11-07 Binky Moon, LLC +// glass : Binky Moon, LLC +// https://www.iana.org/domains/root/db/glass.html glass -// gle : 2014-07-24 Charleston Road Registry Inc. +// gle : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gle.html gle -// global : 2014-04-17 Dot Global Domain Registry Limited +// global : Identity Digital Limited +// https://www.iana.org/domains/root/db/global.html global -// globo : 2013-12-19 Globo Comunicação e Participações S.A +// globo : Globo Comunicação e Participações S.A +// https://www.iana.org/domains/root/db/globo.html globo -// gmail : 2014-05-01 Charleston Road Registry Inc. +// gmail : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gmail.html gmail -// gmbh : 2016-01-29 Binky Moon, LLC +// gmbh : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gmbh.html gmbh -// gmo : 2014-01-09 GMO Internet, Inc. +// gmo : GMO Internet, Inc. +// https://www.iana.org/domains/root/db/gmo.html gmo -// gmx : 2014-04-24 1&1 Mail & Media GmbH +// gmx : 1&1 Mail & Media GmbH +// https://www.iana.org/domains/root/db/gmx.html gmx -// godaddy : 2015-07-23 Go Daddy East, LLC +// godaddy : Go Daddy East, LLC +// https://www.iana.org/domains/root/db/godaddy.html godaddy -// gold : 2015-01-22 Binky Moon, LLC +// gold : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gold.html gold -// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +// goldpoint : YODOBASHI CAMERA CO.,LTD. +// https://www.iana.org/domains/root/db/goldpoint.html goldpoint -// golf : 2014-12-18 Binky Moon, LLC +// golf : Binky Moon, LLC +// https://www.iana.org/domains/root/db/golf.html golf -// goo : 2014-12-18 NTT Resonant Inc. +// goo : NTT Resonant Inc. +// https://www.iana.org/domains/root/db/goo.html goo -// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company +// goodyear : The Goodyear Tire & Rubber Company +// https://www.iana.org/domains/root/db/goodyear.html goodyear -// goog : 2014-11-20 Charleston Road Registry Inc. +// goog : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/goog.html goog -// google : 2014-07-24 Charleston Road Registry Inc. +// google : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/google.html google -// gop : 2014-01-16 Republican State Leadership Committee, Inc. +// gop : Republican State Leadership Committee, Inc. +// https://www.iana.org/domains/root/db/gop.html gop -// got : 2014-12-18 Amazon Registry Services, Inc. +// got : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/got.html got -// grainger : 2015-05-07 Grainger Registry Services, LLC +// grainger : Grainger Registry Services, LLC +// https://www.iana.org/domains/root/db/grainger.html grainger -// graphics : 2013-09-13 Binky Moon, LLC +// graphics : Binky Moon, LLC +// https://www.iana.org/domains/root/db/graphics.html graphics -// gratis : 2014-03-20 Binky Moon, LLC +// gratis : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gratis.html gratis -// green : 2014-05-08 Afilias Limited +// green : Identity Digital Limited +// https://www.iana.org/domains/root/db/green.html green -// gripe : 2014-03-06 Binky Moon, LLC +// gripe : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gripe.html gripe -// grocery : 2016-06-16 Wal-Mart Stores, Inc. +// grocery : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/grocery.html grocery -// group : 2014-08-15 Binky Moon, LLC +// group : Binky Moon, LLC +// https://www.iana.org/domains/root/db/group.html group -// guardian : 2015-07-30 The Guardian Life Insurance Company of America +// guardian : The Guardian Life Insurance Company of America +// https://www.iana.org/domains/root/db/guardian.html guardian -// gucci : 2014-11-13 Guccio Gucci S.p.a. +// gucci : Guccio Gucci S.p.a. +// https://www.iana.org/domains/root/db/gucci.html gucci -// guge : 2014-08-28 Charleston Road Registry Inc. +// guge : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/guge.html guge -// guide : 2013-09-13 Binky Moon, LLC +// guide : Binky Moon, LLC +// https://www.iana.org/domains/root/db/guide.html guide -// guitars : 2013-11-14 XYZ.COM LLC +// guitars : XYZ.COM LLC +// https://www.iana.org/domains/root/db/guitars.html guitars -// guru : 2013-08-27 Binky Moon, LLC +// guru : Binky Moon, LLC +// https://www.iana.org/domains/root/db/guru.html guru -// hair : 2015-12-03 XYZ.COM LLC +// hair : XYZ.COM LLC +// https://www.iana.org/domains/root/db/hair.html hair -// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH +// hamburg : Hamburg Top-Level-Domain GmbH +// https://www.iana.org/domains/root/db/hamburg.html hamburg -// hangout : 2014-11-13 Charleston Road Registry Inc. +// hangout : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/hangout.html hangout -// haus : 2013-12-05 Dog Beach, LLC +// haus : Dog Beach, LLC +// https://www.iana.org/domains/root/db/haus.html haus -// hbo : 2015-07-30 HBO Registry Services, Inc. +// hbo : HBO Registry Services, Inc. +// https://www.iana.org/domains/root/db/hbo.html hbo -// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +// hdfc : HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +// https://www.iana.org/domains/root/db/hdfc.html hdfc -// hdfcbank : 2015-02-12 HDFC Bank Limited +// hdfcbank : HDFC Bank Limited +// https://www.iana.org/domains/root/db/hdfcbank.html hdfcbank -// health : 2015-02-11 DotHealth, LLC +// health : Registry Services, LLC +// https://www.iana.org/domains/root/db/health.html health -// healthcare : 2014-06-12 Binky Moon, LLC +// healthcare : Binky Moon, LLC +// https://www.iana.org/domains/root/db/healthcare.html healthcare -// help : 2014-06-26 Innovation service Limited +// help : Innovation service Limited +// https://www.iana.org/domains/root/db/help.html help -// helsinki : 2015-02-05 City of Helsinki +// helsinki : City of Helsinki +// https://www.iana.org/domains/root/db/helsinki.html helsinki -// here : 2014-02-06 Charleston Road Registry Inc. +// here : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/here.html here -// hermes : 2014-07-10 HERMES INTERNATIONAL +// hermes : HERMES INTERNATIONAL +// https://www.iana.org/domains/root/db/hermes.html hermes -// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc. -hgtv - -// hiphop : 2014-03-06 Dot Hip Hop, LLC +// hiphop : Dot Hip Hop, LLC +// https://www.iana.org/domains/root/db/hiphop.html hiphop -// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc. +// hisamitsu : Hisamitsu Pharmaceutical Co.,Inc. +// https://www.iana.org/domains/root/db/hisamitsu.html hisamitsu -// hitachi : 2014-10-31 Hitachi, Ltd. +// hitachi : Hitachi, Ltd. +// https://www.iana.org/domains/root/db/hitachi.html hitachi -// hiv : 2014-03-13 UNR Corp. +// hiv : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/hiv.html hiv -// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited +// hkt : PCCW-HKT DataCom Services Limited +// https://www.iana.org/domains/root/db/hkt.html hkt -// hockey : 2015-03-19 Binky Moon, LLC +// hockey : Binky Moon, LLC +// https://www.iana.org/domains/root/db/hockey.html hockey -// holdings : 2013-08-27 Binky Moon, LLC +// holdings : Binky Moon, LLC +// https://www.iana.org/domains/root/db/holdings.html holdings -// holiday : 2013-11-07 Binky Moon, LLC +// holiday : Binky Moon, LLC +// https://www.iana.org/domains/root/db/holiday.html holiday -// homedepot : 2015-04-02 Home Depot Product Authority, LLC +// homedepot : Home Depot Product Authority, LLC +// https://www.iana.org/domains/root/db/homedepot.html homedepot -// homegoods : 2015-07-16 The TJX Companies, Inc. +// homegoods : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/homegoods.html homegoods -// homes : 2014-01-09 XYZ.COM LLC +// homes : XYZ.COM LLC +// https://www.iana.org/domains/root/db/homes.html homes -// homesense : 2015-07-16 The TJX Companies, Inc. +// homesense : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/homesense.html homesense -// honda : 2014-12-18 Honda Motor Co., Ltd. +// honda : Honda Motor Co., Ltd. +// https://www.iana.org/domains/root/db/honda.html honda -// horse : 2013-11-21 Registry Services, LLC +// horse : Registry Services, LLC +// https://www.iana.org/domains/root/db/horse.html horse -// hospital : 2016-10-20 Binky Moon, LLC +// hospital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/hospital.html hospital -// host : 2014-04-17 Radix FZC +// host : Radix FZC DMCC +// https://www.iana.org/domains/root/db/host.html host -// hosting : 2014-05-29 XYZ.COM LLC +// hosting : XYZ.COM LLC +// https://www.iana.org/domains/root/db/hosting.html hosting -// hot : 2015-08-27 Amazon Registry Services, Inc. +// hot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/hot.html hot -// hoteles : 2015-03-05 Travel Reservations SRL -hoteles - -// hotels : 2016-04-07 Booking.com B.V. +// hotels : Booking.com B.V. +// https://www.iana.org/domains/root/db/hotels.html hotels -// hotmail : 2014-12-18 Microsoft Corporation +// hotmail : Microsoft Corporation +// https://www.iana.org/domains/root/db/hotmail.html hotmail -// house : 2013-11-07 Binky Moon, LLC +// house : Binky Moon, LLC +// https://www.iana.org/domains/root/db/house.html house -// how : 2014-01-23 Charleston Road Registry Inc. +// how : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/how.html how -// hsbc : 2014-10-24 HSBC Global Services (UK) Limited +// hsbc : HSBC Global Services (UK) Limited +// https://www.iana.org/domains/root/db/hsbc.html hsbc -// hughes : 2015-07-30 Hughes Satellite Systems Corporation +// hughes : Hughes Satellite Systems Corporation +// https://www.iana.org/domains/root/db/hughes.html hughes -// hyatt : 2015-07-30 Hyatt GTLD, L.L.C. +// hyatt : Hyatt GTLD, L.L.C. +// https://www.iana.org/domains/root/db/hyatt.html hyatt -// hyundai : 2015-07-09 Hyundai Motor Company +// hyundai : Hyundai Motor Company +// https://www.iana.org/domains/root/db/hyundai.html hyundai -// ibm : 2014-07-31 International Business Machines Corporation +// ibm : International Business Machines Corporation +// https://www.iana.org/domains/root/db/ibm.html ibm -// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited +// icbc : Industrial and Commercial Bank of China Limited +// https://www.iana.org/domains/root/db/icbc.html icbc -// ice : 2014-10-30 IntercontinentalExchange, Inc. +// ice : IntercontinentalExchange, Inc. +// https://www.iana.org/domains/root/db/ice.html ice -// icu : 2015-01-08 ShortDot SA +// icu : ShortDot SA +// https://www.iana.org/domains/root/db/icu.html icu -// ieee : 2015-07-23 IEEE Global LLC +// ieee : IEEE Global LLC +// https://www.iana.org/domains/root/db/ieee.html ieee -// ifm : 2014-01-30 ifm electronic gmbh +// ifm : ifm electronic gmbh +// https://www.iana.org/domains/root/db/ifm.html ifm -// ikano : 2015-07-09 Ikano S.A. +// ikano : Ikano S.A. +// https://www.iana.org/domains/root/db/ikano.html ikano -// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +// imamat : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/imamat.html imamat -// imdb : 2015-06-25 Amazon Registry Services, Inc. +// imdb : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/imdb.html imdb -// immo : 2014-07-10 Binky Moon, LLC +// immo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/immo.html immo -// immobilien : 2013-11-07 Dog Beach, LLC +// immobilien : Dog Beach, LLC +// https://www.iana.org/domains/root/db/immobilien.html immobilien -// inc : 2018-03-10 Intercap Registry Inc. +// inc : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/inc.html inc -// industries : 2013-12-05 Binky Moon, LLC +// industries : Binky Moon, LLC +// https://www.iana.org/domains/root/db/industries.html industries -// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD. +// infiniti : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/infiniti.html infiniti -// ing : 2014-01-23 Charleston Road Registry Inc. +// ing : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/ing.html ing -// ink : 2013-12-05 Top Level Design, LLC +// ink : Registry Services, LLC +// https://www.iana.org/domains/root/db/ink.html ink -// institute : 2013-11-07 Binky Moon, LLC +// institute : Binky Moon, LLC +// https://www.iana.org/domains/root/db/institute.html institute -// insurance : 2015-02-19 fTLD Registry Services LLC +// insurance : fTLD Registry Services LLC +// https://www.iana.org/domains/root/db/insurance.html insurance -// insure : 2014-03-20 Binky Moon, LLC +// insure : Binky Moon, LLC +// https://www.iana.org/domains/root/db/insure.html insure -// international : 2013-11-07 Binky Moon, LLC +// international : Binky Moon, LLC +// https://www.iana.org/domains/root/db/international.html international -// intuit : 2015-07-30 Intuit Administrative Services, Inc. +// intuit : Intuit Administrative Services, Inc. +// https://www.iana.org/domains/root/db/intuit.html intuit -// investments : 2014-03-20 Binky Moon, LLC +// investments : Binky Moon, LLC +// https://www.iana.org/domains/root/db/investments.html investments -// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A. +// ipiranga : Ipiranga Produtos de Petroleo S.A. +// https://www.iana.org/domains/root/db/ipiranga.html ipiranga -// irish : 2014-08-07 Binky Moon, LLC +// irish : Binky Moon, LLC +// https://www.iana.org/domains/root/db/irish.html irish -// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +// ismaili : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/ismaili.html ismaili -// ist : 2014-08-28 Istanbul Metropolitan Municipality +// ist : Istanbul Metropolitan Municipality +// https://www.iana.org/domains/root/db/ist.html ist -// istanbul : 2014-08-28 Istanbul Metropolitan Municipality +// istanbul : Istanbul Metropolitan Municipality +// https://www.iana.org/domains/root/db/istanbul.html istanbul -// itau : 2014-10-02 Itau Unibanco Holding S.A. +// itau : Itau Unibanco Holding S.A. +// https://www.iana.org/domains/root/db/itau.html itau -// itv : 2015-07-09 ITV Services Limited +// itv : ITV Services Limited +// https://www.iana.org/domains/root/db/itv.html itv -// jaguar : 2014-11-13 Jaguar Land Rover Ltd +// jaguar : Jaguar Land Rover Ltd +// https://www.iana.org/domains/root/db/jaguar.html jaguar -// java : 2014-06-19 Oracle Corporation +// java : Oracle Corporation +// https://www.iana.org/domains/root/db/java.html java -// jcb : 2014-11-20 JCB Co., Ltd. +// jcb : JCB Co., Ltd. +// https://www.iana.org/domains/root/db/jcb.html jcb -// jeep : 2015-07-30 FCA US LLC. +// jeep : FCA US LLC. +// https://www.iana.org/domains/root/db/jeep.html jeep -// jetzt : 2014-01-09 Binky Moon, LLC +// jetzt : Binky Moon, LLC +// https://www.iana.org/domains/root/db/jetzt.html jetzt -// jewelry : 2015-03-05 Binky Moon, LLC +// jewelry : Binky Moon, LLC +// https://www.iana.org/domains/root/db/jewelry.html jewelry -// jio : 2015-04-02 Reliance Industries Limited +// jio : Reliance Industries Limited +// https://www.iana.org/domains/root/db/jio.html jio -// jll : 2015-04-02 Jones Lang LaSalle Incorporated +// jll : Jones Lang LaSalle Incorporated +// https://www.iana.org/domains/root/db/jll.html jll -// jmp : 2015-03-26 Matrix IP LLC +// jmp : Matrix IP LLC +// https://www.iana.org/domains/root/db/jmp.html jmp -// jnj : 2015-06-18 Johnson & Johnson Services, Inc. +// jnj : Johnson & Johnson Services, Inc. +// https://www.iana.org/domains/root/db/jnj.html jnj -// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +// joburg : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/joburg.html joburg -// jot : 2014-12-18 Amazon Registry Services, Inc. +// jot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/jot.html jot -// joy : 2014-12-18 Amazon Registry Services, Inc. +// joy : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/joy.html joy -// jpmorgan : 2015-04-30 JPMorgan Chase Bank, National Association +// jpmorgan : JPMorgan Chase Bank, National Association +// https://www.iana.org/domains/root/db/jpmorgan.html jpmorgan -// jprs : 2014-09-18 Japan Registry Services Co., Ltd. +// jprs : Japan Registry Services Co., Ltd. +// https://www.iana.org/domains/root/db/jprs.html jprs -// juegos : 2014-03-20 UNR Corp. +// juegos : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/juegos.html juegos -// juniper : 2015-07-30 JUNIPER NETWORKS, INC. +// juniper : JUNIPER NETWORKS, INC. +// https://www.iana.org/domains/root/db/juniper.html juniper -// kaufen : 2013-11-07 Dog Beach, LLC +// kaufen : Dog Beach, LLC +// https://www.iana.org/domains/root/db/kaufen.html kaufen -// kddi : 2014-09-12 KDDI CORPORATION +// kddi : KDDI CORPORATION +// https://www.iana.org/domains/root/db/kddi.html kddi -// kerryhotels : 2015-04-30 Kerry Trading Co. Limited +// kerryhotels : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kerryhotels.html kerryhotels -// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited +// kerrylogistics : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kerrylogistics.html kerrylogistics -// kerryproperties : 2015-04-09 Kerry Trading Co. Limited +// kerryproperties : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kerryproperties.html kerryproperties -// kfh : 2014-12-04 Kuwait Finance House +// kfh : Kuwait Finance House +// https://www.iana.org/domains/root/db/kfh.html kfh -// kia : 2015-07-09 KIA MOTORS CORPORATION +// kia : KIA MOTORS CORPORATION +// https://www.iana.org/domains/root/db/kia.html kia -// kids : 2021-08-13 DotKids Foundation Limited +// kids : DotKids Foundation Limited +// https://www.iana.org/domains/root/db/kids.html kids -// kim : 2013-09-23 Afilias Limited +// kim : Identity Digital Limited +// https://www.iana.org/domains/root/db/kim.html kim -// kinder : 2014-11-07 Ferrero Trading Lux S.A. +// kinder : Ferrero Trading Lux S.A. +// https://www.iana.org/domains/root/db/kinder.html kinder -// kindle : 2015-06-25 Amazon Registry Services, Inc. +// kindle : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/kindle.html kindle -// kitchen : 2013-09-20 Binky Moon, LLC +// kitchen : Binky Moon, LLC +// https://www.iana.org/domains/root/db/kitchen.html kitchen -// kiwi : 2013-09-20 DOT KIWI LIMITED +// kiwi : DOT KIWI LIMITED +// https://www.iana.org/domains/root/db/kiwi.html kiwi -// koeln : 2014-01-09 dotKoeln GmbH +// koeln : dotKoeln GmbH +// https://www.iana.org/domains/root/db/koeln.html koeln -// komatsu : 2015-01-08 Komatsu Ltd. +// komatsu : Komatsu Ltd. +// https://www.iana.org/domains/root/db/komatsu.html komatsu -// kosher : 2015-08-20 Kosher Marketing Assets LLC +// kosher : Kosher Marketing Assets LLC +// https://www.iana.org/domains/root/db/kosher.html kosher -// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft) +// kpmg : KPMG International Cooperative (KPMG International Genossenschaft) +// https://www.iana.org/domains/root/db/kpmg.html kpmg -// kpn : 2015-01-08 Koninklijke KPN N.V. +// kpn : Koninklijke KPN N.V. +// https://www.iana.org/domains/root/db/kpn.html kpn -// krd : 2013-12-05 KRG Department of Information Technology +// krd : KRG Department of Information Technology +// https://www.iana.org/domains/root/db/krd.html krd -// kred : 2013-12-19 KredTLD Pty Ltd +// kred : KredTLD Pty Ltd +// https://www.iana.org/domains/root/db/kred.html kred -// kuokgroup : 2015-04-09 Kerry Trading Co. Limited +// kuokgroup : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kuokgroup.html kuokgroup -// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen +// kyoto : Academic Institution: Kyoto Jyoho Gakuen +// https://www.iana.org/domains/root/db/kyoto.html kyoto -// lacaixa : 2014-01-09 Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa” +// lacaixa : Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa” +// https://www.iana.org/domains/root/db/lacaixa.html lacaixa -// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A. +// lamborghini : Automobili Lamborghini S.p.A. +// https://www.iana.org/domains/root/db/lamborghini.html lamborghini -// lamer : 2015-10-01 The Estée Lauder Companies Inc. +// lamer : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/lamer.html lamer -// lancaster : 2015-02-12 LANCASTER +// lancaster : LANCASTER +// https://www.iana.org/domains/root/db/lancaster.html lancaster -// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V. -lancia - -// land : 2013-09-10 Binky Moon, LLC +// land : Binky Moon, LLC +// https://www.iana.org/domains/root/db/land.html land -// landrover : 2014-11-13 Jaguar Land Rover Ltd +// landrover : Jaguar Land Rover Ltd +// https://www.iana.org/domains/root/db/landrover.html landrover -// lanxess : 2015-07-30 LANXESS Corporation +// lanxess : LANXESS Corporation +// https://www.iana.org/domains/root/db/lanxess.html lanxess -// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated +// lasalle : Jones Lang LaSalle Incorporated +// https://www.iana.org/domains/root/db/lasalle.html lasalle -// lat : 2014-10-16 XYZ.COM LLC +// lat : XYZ.COM LLC +// https://www.iana.org/domains/root/db/lat.html lat -// latino : 2015-07-30 Dish DBS Corporation +// latino : Dish DBS Corporation +// https://www.iana.org/domains/root/db/latino.html latino -// latrobe : 2014-06-16 La Trobe University +// latrobe : La Trobe University +// https://www.iana.org/domains/root/db/latrobe.html latrobe -// law : 2015-01-22 Registry Services, LLC +// law : Registry Services, LLC +// https://www.iana.org/domains/root/db/law.html law -// lawyer : 2014-03-20 Dog Beach, LLC +// lawyer : Dog Beach, LLC +// https://www.iana.org/domains/root/db/lawyer.html lawyer -// lds : 2014-03-20 IRI Domain Management, LLC +// lds : IRI Domain Management, LLC +// https://www.iana.org/domains/root/db/lds.html lds -// lease : 2014-03-06 Binky Moon, LLC +// lease : Binky Moon, LLC +// https://www.iana.org/domains/root/db/lease.html lease -// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +// leclerc : A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +// https://www.iana.org/domains/root/db/leclerc.html leclerc -// lefrak : 2015-07-16 LeFrak Organization, Inc. +// lefrak : LeFrak Organization, Inc. +// https://www.iana.org/domains/root/db/lefrak.html lefrak -// legal : 2014-10-16 Binky Moon, LLC +// legal : Binky Moon, LLC +// https://www.iana.org/domains/root/db/legal.html legal -// lego : 2015-07-16 LEGO Juris A/S +// lego : LEGO Juris A/S +// https://www.iana.org/domains/root/db/lego.html lego -// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION +// lexus : TOYOTA MOTOR CORPORATION +// https://www.iana.org/domains/root/db/lexus.html lexus -// lgbt : 2014-05-08 Afilias Limited +// lgbt : Identity Digital Limited +// https://www.iana.org/domains/root/db/lgbt.html lgbt -// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +// lidl : Schwarz Domains und Services GmbH & Co. KG +// https://www.iana.org/domains/root/db/lidl.html lidl -// life : 2014-02-06 Binky Moon, LLC +// life : Binky Moon, LLC +// https://www.iana.org/domains/root/db/life.html life -// lifeinsurance : 2015-01-15 American Council of Life Insurers +// lifeinsurance : American Council of Life Insurers +// https://www.iana.org/domains/root/db/lifeinsurance.html lifeinsurance -// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. +// lifestyle : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/lifestyle.html lifestyle -// lighting : 2013-08-27 Binky Moon, LLC +// lighting : Binky Moon, LLC +// https://www.iana.org/domains/root/db/lighting.html lighting -// like : 2014-12-18 Amazon Registry Services, Inc. +// like : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/like.html like -// lilly : 2015-07-31 Eli Lilly and Company +// lilly : Eli Lilly and Company +// https://www.iana.org/domains/root/db/lilly.html lilly -// limited : 2014-03-06 Binky Moon, LLC +// limited : Binky Moon, LLC +// https://www.iana.org/domains/root/db/limited.html limited -// limo : 2013-10-17 Binky Moon, LLC +// limo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/limo.html limo -// lincoln : 2014-11-13 Ford Motor Company +// lincoln : Ford Motor Company +// https://www.iana.org/domains/root/db/lincoln.html lincoln -// linde : 2014-12-04 Linde Aktiengesellschaft -linde - -// link : 2013-11-14 Nova Registry Ltd +// link : Nova Registry Ltd +// https://www.iana.org/domains/root/db/link.html link -// lipsy : 2015-06-25 Lipsy Ltd +// lipsy : Lipsy Ltd +// https://www.iana.org/domains/root/db/lipsy.html lipsy -// live : 2014-12-04 Dog Beach, LLC +// live : Dog Beach, LLC +// https://www.iana.org/domains/root/db/live.html live -// living : 2015-07-30 Lifestyle Domain Holdings, Inc. +// living : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/living.html living -// llc : 2017-12-14 Afilias Limited +// llc : Identity Digital Limited +// https://www.iana.org/domains/root/db/llc.html llc -// llp : 2019-08-26 Intercap Registry Inc. +// llp : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/llp.html llp -// loan : 2014-11-20 dot Loan Limited +// loan : dot Loan Limited +// https://www.iana.org/domains/root/db/loan.html loan -// loans : 2014-03-20 Binky Moon, LLC +// loans : Binky Moon, LLC +// https://www.iana.org/domains/root/db/loans.html loans -// locker : 2015-06-04 Dish DBS Corporation +// locker : Dish DBS Corporation +// https://www.iana.org/domains/root/db/locker.html locker -// locus : 2015-06-25 Locus Analytics LLC +// locus : Locus Analytics LLC +// https://www.iana.org/domains/root/db/locus.html locus -// loft : 2015-07-30 Annco, Inc. -loft - -// lol : 2015-01-30 XYZ.COM LLC +// lol : XYZ.COM LLC +// https://www.iana.org/domains/root/db/lol.html lol -// london : 2013-11-14 Dot London Domains Limited +// london : Dot London Domains Limited +// https://www.iana.org/domains/root/db/london.html london -// lotte : 2014-11-07 Lotte Holdings Co., Ltd. +// lotte : Lotte Holdings Co., Ltd. +// https://www.iana.org/domains/root/db/lotte.html lotte -// lotto : 2014-04-10 Afilias Limited +// lotto : Identity Digital Limited +// https://www.iana.org/domains/root/db/lotto.html lotto -// love : 2014-12-22 Merchant Law Group LLP +// love : Merchant Law Group LLP +// https://www.iana.org/domains/root/db/love.html love -// lpl : 2015-07-30 LPL Holdings, Inc. +// lpl : LPL Holdings, Inc. +// https://www.iana.org/domains/root/db/lpl.html lpl -// lplfinancial : 2015-07-30 LPL Holdings, Inc. +// lplfinancial : LPL Holdings, Inc. +// https://www.iana.org/domains/root/db/lplfinancial.html lplfinancial -// ltd : 2014-09-25 Binky Moon, LLC +// ltd : Binky Moon, LLC +// https://www.iana.org/domains/root/db/ltd.html ltd -// ltda : 2014-04-17 InterNetX, Corp +// ltda : InterNetX, Corp +// https://www.iana.org/domains/root/db/ltda.html ltda -// lundbeck : 2015-08-06 H. Lundbeck A/S +// lundbeck : H. Lundbeck A/S +// https://www.iana.org/domains/root/db/lundbeck.html lundbeck -// luxe : 2014-01-09 Registry Services, LLC +// luxe : Registry Services, LLC +// https://www.iana.org/domains/root/db/luxe.html luxe -// luxury : 2013-10-17 Luxury Partners, LLC +// luxury : Luxury Partners, LLC +// https://www.iana.org/domains/root/db/luxury.html luxury -// macys : 2015-07-31 Macys, Inc. -macys - -// madrid : 2014-05-01 Comunidad de Madrid +// madrid : Comunidad de Madrid +// https://www.iana.org/domains/root/db/madrid.html madrid -// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF) +// maif : Mutuelle Assurance Instituteur France (MAIF) +// https://www.iana.org/domains/root/db/maif.html maif -// maison : 2013-12-05 Binky Moon, LLC +// maison : Binky Moon, LLC +// https://www.iana.org/domains/root/db/maison.html maison -// makeup : 2015-01-15 XYZ.COM LLC +// makeup : XYZ.COM LLC +// https://www.iana.org/domains/root/db/makeup.html makeup -// man : 2014-12-04 MAN SE +// man : MAN SE +// https://www.iana.org/domains/root/db/man.html man -// management : 2013-11-07 Binky Moon, LLC +// management : Binky Moon, LLC +// https://www.iana.org/domains/root/db/management.html management -// mango : 2013-10-24 PUNTO FA S.L. +// mango : PUNTO FA S.L. +// https://www.iana.org/domains/root/db/mango.html mango -// map : 2016-06-09 Charleston Road Registry Inc. +// map : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/map.html map -// market : 2014-03-06 Dog Beach, LLC +// market : Dog Beach, LLC +// https://www.iana.org/domains/root/db/market.html market -// marketing : 2013-11-07 Binky Moon, LLC +// marketing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/marketing.html marketing -// markets : 2014-12-11 Dog Beach, LLC +// markets : Dog Beach, LLC +// https://www.iana.org/domains/root/db/markets.html markets -// marriott : 2014-10-09 Marriott Worldwide Corporation +// marriott : Marriott Worldwide Corporation +// https://www.iana.org/domains/root/db/marriott.html marriott -// marshalls : 2015-07-16 The TJX Companies, Inc. +// marshalls : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/marshalls.html marshalls -// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V. -maserati - -// mattel : 2015-08-06 Mattel Sites, Inc. +// mattel : Mattel Sites, Inc. +// https://www.iana.org/domains/root/db/mattel.html mattel -// mba : 2015-04-02 Binky Moon, LLC +// mba : Binky Moon, LLC +// https://www.iana.org/domains/root/db/mba.html mba -// mckinsey : 2015-07-31 McKinsey Holdings, Inc. +// mckinsey : McKinsey Holdings, Inc. +// https://www.iana.org/domains/root/db/mckinsey.html mckinsey -// med : 2015-08-06 Medistry LLC +// med : Medistry LLC +// https://www.iana.org/domains/root/db/med.html med -// media : 2014-03-06 Binky Moon, LLC +// media : Binky Moon, LLC +// https://www.iana.org/domains/root/db/media.html media -// meet : 2014-01-16 Charleston Road Registry Inc. +// meet : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/meet.html meet -// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +// melbourne : The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +// https://www.iana.org/domains/root/db/melbourne.html melbourne -// meme : 2014-01-30 Charleston Road Registry Inc. +// meme : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/meme.html meme -// memorial : 2014-10-16 Dog Beach, LLC +// memorial : Dog Beach, LLC +// https://www.iana.org/domains/root/db/memorial.html memorial -// men : 2015-02-26 Exclusive Registry Limited +// men : Exclusive Registry Limited +// https://www.iana.org/domains/root/db/men.html men -// menu : 2013-09-11 Dot Menu Registry, LLC +// menu : Dot Menu Registry, LLC +// https://www.iana.org/domains/root/db/menu.html menu -// merckmsd : 2016-07-14 MSD Registry Holdings, Inc. +// merckmsd : MSD Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/merckmsd.html merckmsd -// miami : 2013-12-19 Registry Services, LLC +// miami : Registry Services, LLC +// https://www.iana.org/domains/root/db/miami.html miami -// microsoft : 2014-12-18 Microsoft Corporation +// microsoft : Microsoft Corporation +// https://www.iana.org/domains/root/db/microsoft.html microsoft -// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +// mini : Bayerische Motoren Werke Aktiengesellschaft +// https://www.iana.org/domains/root/db/mini.html mini -// mint : 2015-07-30 Intuit Administrative Services, Inc. +// mint : Intuit Administrative Services, Inc. +// https://www.iana.org/domains/root/db/mint.html mint -// mit : 2015-07-02 Massachusetts Institute of Technology +// mit : Massachusetts Institute of Technology +// https://www.iana.org/domains/root/db/mit.html mit -// mitsubishi : 2015-07-23 Mitsubishi Corporation +// mitsubishi : Mitsubishi Corporation +// https://www.iana.org/domains/root/db/mitsubishi.html mitsubishi -// mlb : 2015-05-21 MLB Advanced Media DH, LLC +// mlb : MLB Advanced Media DH, LLC +// https://www.iana.org/domains/root/db/mlb.html mlb -// mls : 2015-04-23 The Canadian Real Estate Association +// mls : The Canadian Real Estate Association +// https://www.iana.org/domains/root/db/mls.html mls -// mma : 2014-11-07 MMA IARD +// mma : MMA IARD +// https://www.iana.org/domains/root/db/mma.html mma -// mobile : 2016-06-02 Dish DBS Corporation +// mobile : Dish DBS Corporation +// https://www.iana.org/domains/root/db/mobile.html mobile -// moda : 2013-11-07 Dog Beach, LLC +// moda : Dog Beach, LLC +// https://www.iana.org/domains/root/db/moda.html moda -// moe : 2013-11-13 Interlink Systems Innovation Institute K.K. +// moe : Interlink Systems Innovation Institute K.K. +// https://www.iana.org/domains/root/db/moe.html moe -// moi : 2014-12-18 Amazon Registry Services, Inc. +// moi : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/moi.html moi -// mom : 2015-04-16 XYZ.COM LLC +// mom : XYZ.COM LLC +// https://www.iana.org/domains/root/db/mom.html mom -// monash : 2013-09-30 Monash University +// monash : Monash University +// https://www.iana.org/domains/root/db/monash.html monash -// money : 2014-10-16 Binky Moon, LLC +// money : Binky Moon, LLC +// https://www.iana.org/domains/root/db/money.html money -// monster : 2015-09-11 XYZ.COM LLC +// monster : XYZ.COM LLC +// https://www.iana.org/domains/root/db/monster.html monster -// mormon : 2013-12-05 IRI Domain Management, LLC +// mormon : IRI Domain Management, LLC +// https://www.iana.org/domains/root/db/mormon.html mormon -// mortgage : 2014-03-20 Dog Beach, LLC +// mortgage : Dog Beach, LLC +// https://www.iana.org/domains/root/db/mortgage.html mortgage -// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// moscow : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// https://www.iana.org/domains/root/db/moscow.html moscow -// moto : 2015-06-04 Motorola Trademark Holdings, LLC +// moto : Motorola Trademark Holdings, LLC +// https://www.iana.org/domains/root/db/moto.html moto -// motorcycles : 2014-01-09 XYZ.COM LLC +// motorcycles : XYZ.COM LLC +// https://www.iana.org/domains/root/db/motorcycles.html motorcycles -// mov : 2014-01-30 Charleston Road Registry Inc. +// mov : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/mov.html mov -// movie : 2015-02-05 Binky Moon, LLC +// movie : Binky Moon, LLC +// https://www.iana.org/domains/root/db/movie.html movie -// msd : 2015-07-23 MSD Registry Holdings, Inc. +// msd : MSD Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/msd.html msd -// mtn : 2014-12-04 MTN Dubai Limited +// mtn : MTN Dubai Limited +// https://www.iana.org/domains/root/db/mtn.html mtn -// mtr : 2015-03-12 MTR Corporation Limited +// mtr : MTR Corporation Limited +// https://www.iana.org/domains/root/db/mtr.html mtr -// music : 2021-05-04 DotMusic Limited +// music : DotMusic Limited +// https://www.iana.org/domains/root/db/music.html music -// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC -mutual - -// nab : 2015-08-20 National Australia Bank Limited +// nab : National Australia Bank Limited +// https://www.iana.org/domains/root/db/nab.html nab -// nagoya : 2013-10-24 GMO Registry, Inc. +// nagoya : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/nagoya.html nagoya -// natura : 2015-03-12 NATURA COSMÉTICOS S.A. +// natura : NATURA COSMÉTICOS S.A. +// https://www.iana.org/domains/root/db/natura.html natura -// navy : 2014-03-06 Dog Beach, LLC +// navy : Dog Beach, LLC +// https://www.iana.org/domains/root/db/navy.html navy -// nba : 2015-07-31 NBA REGISTRY, LLC +// nba : NBA REGISTRY, LLC +// https://www.iana.org/domains/root/db/nba.html nba -// nec : 2015-01-08 NEC Corporation +// nec : NEC Corporation +// https://www.iana.org/domains/root/db/nec.html nec -// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +// netbank : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/netbank.html netbank -// netflix : 2015-06-18 Netflix, Inc. +// netflix : Netflix, Inc. +// https://www.iana.org/domains/root/db/netflix.html netflix -// network : 2013-11-14 Binky Moon, LLC +// network : Binky Moon, LLC +// https://www.iana.org/domains/root/db/network.html network -// neustar : 2013-12-05 NeuStar, Inc. +// neustar : NeuStar, Inc. +// https://www.iana.org/domains/root/db/neustar.html neustar -// new : 2014-01-30 Charleston Road Registry Inc. +// new : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/new.html new -// news : 2014-12-18 Dog Beach, LLC +// news : Dog Beach, LLC +// https://www.iana.org/domains/root/db/news.html news -// next : 2015-06-18 Next plc +// next : Next plc +// https://www.iana.org/domains/root/db/next.html next -// nextdirect : 2015-06-18 Next plc +// nextdirect : Next plc +// https://www.iana.org/domains/root/db/nextdirect.html nextdirect -// nexus : 2014-07-24 Charleston Road Registry Inc. +// nexus : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/nexus.html nexus -// nfl : 2015-07-23 NFL Reg Ops LLC +// nfl : NFL Reg Ops LLC +// https://www.iana.org/domains/root/db/nfl.html nfl -// ngo : 2014-03-06 Public Interest Registry +// ngo : Public Interest Registry +// https://www.iana.org/domains/root/db/ngo.html ngo -// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK) +// nhk : Japan Broadcasting Corporation (NHK) +// https://www.iana.org/domains/root/db/nhk.html nhk -// nico : 2014-12-04 DWANGO Co., Ltd. +// nico : DWANGO Co., Ltd. +// https://www.iana.org/domains/root/db/nico.html nico -// nike : 2015-07-23 NIKE, Inc. +// nike : NIKE, Inc. +// https://www.iana.org/domains/root/db/nike.html nike -// nikon : 2015-05-21 NIKON CORPORATION +// nikon : NIKON CORPORATION +// https://www.iana.org/domains/root/db/nikon.html nikon -// ninja : 2013-11-07 Dog Beach, LLC +// ninja : Dog Beach, LLC +// https://www.iana.org/domains/root/db/ninja.html ninja -// nissan : 2014-03-27 NISSAN MOTOR CO., LTD. +// nissan : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/nissan.html nissan -// nissay : 2015-10-29 Nippon Life Insurance Company +// nissay : Nippon Life Insurance Company +// https://www.iana.org/domains/root/db/nissay.html nissay -// nokia : 2015-01-08 Nokia Corporation +// nokia : Nokia Corporation +// https://www.iana.org/domains/root/db/nokia.html nokia -// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC -northwesternmutual - -// norton : 2014-12-04 NortonLifeLock Inc. +// norton : NortonLifeLock Inc. +// https://www.iana.org/domains/root/db/norton.html norton -// now : 2015-06-25 Amazon Registry Services, Inc. +// now : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/now.html now -// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// nowruz : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// https://www.iana.org/domains/root/db/nowruz.html nowruz -// nowtv : 2015-05-14 Starbucks (HK) Limited +// nowtv : Starbucks (HK) Limited +// https://www.iana.org/domains/root/db/nowtv.html nowtv -// nra : 2014-05-22 NRA Holdings Company, INC. +// nra : NRA Holdings Company, INC. +// https://www.iana.org/domains/root/db/nra.html nra -// nrw : 2013-11-21 Minds + Machines GmbH +// nrw : Minds + Machines GmbH +// https://www.iana.org/domains/root/db/nrw.html nrw -// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION +// ntt : NIPPON TELEGRAPH AND TELEPHONE CORPORATION +// https://www.iana.org/domains/root/db/ntt.html ntt -// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications +// nyc : The City of New York by and through the New York City Department of Information Technology & Telecommunications +// https://www.iana.org/domains/root/db/nyc.html nyc -// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA +// obi : OBI Group Holding SE & Co. KGaA +// https://www.iana.org/domains/root/db/obi.html obi -// observer : 2015-04-30 Dog Beach, LLC +// observer : Dog Beach, LLC +// https://www.iana.org/domains/root/db/observer.html observer -// office : 2015-03-12 Microsoft Corporation +// office : Microsoft Corporation +// https://www.iana.org/domains/root/db/office.html office -// okinawa : 2013-12-05 BRregistry, Inc. +// okinawa : BRregistry, Inc. +// https://www.iana.org/domains/root/db/okinawa.html okinawa -// olayan : 2015-05-14 Crescent Holding GmbH +// olayan : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/olayan.html olayan -// olayangroup : 2015-05-14 Crescent Holding GmbH +// olayangroup : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/olayangroup.html olayangroup -// oldnavy : 2015-07-31 The Gap, Inc. +// oldnavy : The Gap, Inc. +// https://www.iana.org/domains/root/db/oldnavy.html oldnavy -// ollo : 2015-06-04 Dish DBS Corporation +// ollo : Dish DBS Corporation +// https://www.iana.org/domains/root/db/ollo.html ollo -// omega : 2015-01-08 The Swatch Group Ltd +// omega : The Swatch Group Ltd +// https://www.iana.org/domains/root/db/omega.html omega -// one : 2014-11-07 One.com A/S +// one : One.com A/S +// https://www.iana.org/domains/root/db/one.html one -// ong : 2014-03-06 Public Interest Registry +// ong : Public Interest Registry +// https://www.iana.org/domains/root/db/ong.html ong -// onl : 2013-09-16 iRegistry GmbH +// onl : iRegistry GmbH +// https://www.iana.org/domains/root/db/onl.html onl -// online : 2015-01-15 Radix FZC +// online : Radix FZC DMCC +// https://www.iana.org/domains/root/db/online.html online -// ooo : 2014-01-09 INFIBEAM AVENUES LIMITED +// ooo : INFIBEAM AVENUES LIMITED +// https://www.iana.org/domains/root/db/ooo.html ooo -// open : 2015-07-31 American Express Travel Related Services Company, Inc. +// open : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/open.html open -// oracle : 2014-06-19 Oracle Corporation +// oracle : Oracle Corporation +// https://www.iana.org/domains/root/db/oracle.html oracle -// orange : 2015-03-12 Orange Brand Services Limited +// orange : Orange Brand Services Limited +// https://www.iana.org/domains/root/db/orange.html orange -// organic : 2014-03-27 Afilias Limited +// organic : Identity Digital Limited +// https://www.iana.org/domains/root/db/organic.html organic -// origins : 2015-10-01 The Estée Lauder Companies Inc. +// origins : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/origins.html origins -// osaka : 2014-09-04 Osaka Registry Co., Ltd. +// osaka : Osaka Registry Co., Ltd. +// https://www.iana.org/domains/root/db/osaka.html osaka -// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. +// otsuka : Otsuka Holdings Co., Ltd. +// https://www.iana.org/domains/root/db/otsuka.html otsuka -// ott : 2015-06-04 Dish DBS Corporation +// ott : Dish DBS Corporation +// https://www.iana.org/domains/root/db/ott.html ott -// ovh : 2014-01-16 MédiaBC +// ovh : MédiaBC +// https://www.iana.org/domains/root/db/ovh.html ovh -// page : 2014-12-04 Charleston Road Registry Inc. +// page : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/page.html page -// panasonic : 2015-07-30 Panasonic Corporation +// panasonic : Panasonic Holdings Corporation +// https://www.iana.org/domains/root/db/panasonic.html panasonic -// paris : 2014-01-30 City of Paris +// paris : City of Paris +// https://www.iana.org/domains/root/db/paris.html paris -// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// pars : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// https://www.iana.org/domains/root/db/pars.html pars -// partners : 2013-12-05 Binky Moon, LLC +// partners : Binky Moon, LLC +// https://www.iana.org/domains/root/db/partners.html partners -// parts : 2013-12-05 Binky Moon, LLC +// parts : Binky Moon, LLC +// https://www.iana.org/domains/root/db/parts.html parts -// party : 2014-09-11 Blue Sky Registry Limited +// party : Blue Sky Registry Limited +// https://www.iana.org/domains/root/db/party.html party -// passagens : 2015-03-05 Travel Reservations SRL -passagens - -// pay : 2015-08-27 Amazon Registry Services, Inc. +// pay : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/pay.html pay -// pccw : 2015-05-14 PCCW Enterprises Limited +// pccw : PCCW Enterprises Limited +// https://www.iana.org/domains/root/db/pccw.html pccw -// pet : 2015-05-07 Afilias Limited +// pet : Identity Digital Limited +// https://www.iana.org/domains/root/db/pet.html pet -// pfizer : 2015-09-11 Pfizer Inc. +// pfizer : Pfizer Inc. +// https://www.iana.org/domains/root/db/pfizer.html pfizer -// pharmacy : 2014-06-19 National Association of Boards of Pharmacy +// pharmacy : National Association of Boards of Pharmacy +// https://www.iana.org/domains/root/db/pharmacy.html pharmacy -// phd : 2016-07-28 Charleston Road Registry Inc. +// phd : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/phd.html phd -// philips : 2014-11-07 Koninklijke Philips N.V. +// philips : Koninklijke Philips N.V. +// https://www.iana.org/domains/root/db/philips.html philips -// phone : 2016-06-02 Dish DBS Corporation +// phone : Dish DBS Corporation +// https://www.iana.org/domains/root/db/phone.html phone -// photo : 2013-11-14 Registry Services, LLC +// photo : Registry Services, LLC +// https://www.iana.org/domains/root/db/photo.html photo -// photography : 2013-09-20 Binky Moon, LLC +// photography : Binky Moon, LLC +// https://www.iana.org/domains/root/db/photography.html photography -// photos : 2013-10-17 Binky Moon, LLC +// photos : Binky Moon, LLC +// https://www.iana.org/domains/root/db/photos.html photos -// physio : 2014-05-01 PhysBiz Pty Ltd +// physio : PhysBiz Pty Ltd +// https://www.iana.org/domains/root/db/physio.html physio -// pics : 2013-11-14 XYZ.COM LLC +// pics : XYZ.COM LLC +// https://www.iana.org/domains/root/db/pics.html pics -// pictet : 2014-06-26 Pictet Europe S.A. +// pictet : Pictet Europe S.A. +// https://www.iana.org/domains/root/db/pictet.html pictet -// pictures : 2014-03-06 Binky Moon, LLC +// pictures : Binky Moon, LLC +// https://www.iana.org/domains/root/db/pictures.html pictures -// pid : 2015-01-08 Top Level Spectrum, Inc. +// pid : Top Level Spectrum, Inc. +// https://www.iana.org/domains/root/db/pid.html pid -// pin : 2014-12-18 Amazon Registry Services, Inc. +// pin : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/pin.html pin -// ping : 2015-06-11 Ping Registry Provider, Inc. +// ping : Ping Registry Provider, Inc. +// https://www.iana.org/domains/root/db/ping.html ping -// pink : 2013-10-01 Afilias Limited +// pink : Identity Digital Limited +// https://www.iana.org/domains/root/db/pink.html pink -// pioneer : 2015-07-16 Pioneer Corporation +// pioneer : Pioneer Corporation +// https://www.iana.org/domains/root/db/pioneer.html pioneer -// pizza : 2014-06-26 Binky Moon, LLC +// pizza : Binky Moon, LLC +// https://www.iana.org/domains/root/db/pizza.html pizza -// place : 2014-04-24 Binky Moon, LLC +// place : Binky Moon, LLC +// https://www.iana.org/domains/root/db/place.html place -// play : 2015-03-05 Charleston Road Registry Inc. +// play : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/play.html play -// playstation : 2015-07-02 Sony Interactive Entertainment Inc. +// playstation : Sony Interactive Entertainment Inc. +// https://www.iana.org/domains/root/db/playstation.html playstation -// plumbing : 2013-09-10 Binky Moon, LLC +// plumbing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/plumbing.html plumbing -// plus : 2015-02-05 Binky Moon, LLC +// plus : Binky Moon, LLC +// https://www.iana.org/domains/root/db/plus.html plus -// pnc : 2015-07-02 PNC Domain Co., LLC +// pnc : PNC Domain Co., LLC +// https://www.iana.org/domains/root/db/pnc.html pnc -// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +// pohl : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/pohl.html pohl -// poker : 2014-07-03 Afilias Limited +// poker : Identity Digital Limited +// https://www.iana.org/domains/root/db/poker.html poker -// politie : 2015-08-20 Politie Nederland +// politie : Politie Nederland +// https://www.iana.org/domains/root/db/politie.html politie -// porn : 2014-10-16 ICM Registry PN LLC +// porn : ICM Registry PN LLC +// https://www.iana.org/domains/root/db/porn.html porn -// pramerica : 2015-07-30 Prudential Financial, Inc. +// pramerica : Prudential Financial, Inc. +// https://www.iana.org/domains/root/db/pramerica.html pramerica -// praxi : 2013-12-05 Praxi S.p.A. +// praxi : Praxi S.p.A. +// https://www.iana.org/domains/root/db/praxi.html praxi -// press : 2014-04-03 Radix FZC +// press : Radix FZC DMCC +// https://www.iana.org/domains/root/db/press.html press -// prime : 2015-06-25 Amazon Registry Services, Inc. +// prime : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/prime.html prime -// prod : 2014-01-23 Charleston Road Registry Inc. +// prod : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/prod.html prod -// productions : 2013-12-05 Binky Moon, LLC +// productions : Binky Moon, LLC +// https://www.iana.org/domains/root/db/productions.html productions -// prof : 2014-07-24 Charleston Road Registry Inc. +// prof : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/prof.html prof -// progressive : 2015-07-23 Progressive Casualty Insurance Company +// progressive : Progressive Casualty Insurance Company +// https://www.iana.org/domains/root/db/progressive.html progressive -// promo : 2014-12-18 Afilias Limited +// promo : Identity Digital Limited +// https://www.iana.org/domains/root/db/promo.html promo -// properties : 2013-12-05 Binky Moon, LLC +// properties : Binky Moon, LLC +// https://www.iana.org/domains/root/db/properties.html properties -// property : 2014-05-22 UNR Corp. +// property : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/property.html property -// protection : 2015-04-23 XYZ.COM LLC +// protection : XYZ.COM LLC +// https://www.iana.org/domains/root/db/protection.html protection -// pru : 2015-07-30 Prudential Financial, Inc. +// pru : Prudential Financial, Inc. +// https://www.iana.org/domains/root/db/pru.html pru -// prudential : 2015-07-30 Prudential Financial, Inc. +// prudential : Prudential Financial, Inc. +// https://www.iana.org/domains/root/db/prudential.html prudential -// pub : 2013-12-12 Dog Beach, LLC +// pub : Dog Beach, LLC +// https://www.iana.org/domains/root/db/pub.html pub -// pwc : 2015-10-29 PricewaterhouseCoopers LLP +// pwc : PricewaterhouseCoopers LLP +// https://www.iana.org/domains/root/db/pwc.html pwc -// qpon : 2013-11-14 dotCOOL, Inc. +// qpon : dotQPON LLC +// https://www.iana.org/domains/root/db/qpon.html qpon -// quebec : 2013-12-19 PointQuébec Inc +// quebec : PointQuébec Inc +// https://www.iana.org/domains/root/db/quebec.html quebec -// quest : 2015-03-26 XYZ.COM LLC +// quest : XYZ.COM LLC +// https://www.iana.org/domains/root/db/quest.html quest -// racing : 2014-12-04 Premier Registry Limited +// racing : Premier Registry Limited +// https://www.iana.org/domains/root/db/racing.html racing -// radio : 2016-07-21 European Broadcasting Union (EBU) +// radio : European Broadcasting Union (EBU) +// https://www.iana.org/domains/root/db/radio.html radio -// read : 2014-12-18 Amazon Registry Services, Inc. +// read : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/read.html read -// realestate : 2015-09-11 dotRealEstate LLC +// realestate : dotRealEstate LLC +// https://www.iana.org/domains/root/db/realestate.html realestate -// realtor : 2014-05-29 Real Estate Domains LLC +// realtor : Real Estate Domains LLC +// https://www.iana.org/domains/root/db/realtor.html realtor -// realty : 2015-03-19 Dog Beach, LLC +// realty : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/realty.html realty -// recipes : 2013-10-17 Binky Moon, LLC +// recipes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/recipes.html recipes -// red : 2013-11-07 Afilias Limited +// red : Identity Digital Limited +// https://www.iana.org/domains/root/db/red.html red -// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. +// redstone : Redstone Haute Couture Co., Ltd. +// https://www.iana.org/domains/root/db/redstone.html redstone -// redumbrella : 2015-03-26 Travelers TLD, LLC +// redumbrella : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/redumbrella.html redumbrella -// rehab : 2014-03-06 Dog Beach, LLC +// rehab : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rehab.html rehab -// reise : 2014-03-13 Binky Moon, LLC +// reise : Binky Moon, LLC +// https://www.iana.org/domains/root/db/reise.html reise -// reisen : 2014-03-06 Binky Moon, LLC +// reisen : Binky Moon, LLC +// https://www.iana.org/domains/root/db/reisen.html reisen -// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. +// reit : National Association of Real Estate Investment Trusts, Inc. +// https://www.iana.org/domains/root/db/reit.html reit -// reliance : 2015-04-02 Reliance Industries Limited +// reliance : Reliance Industries Limited +// https://www.iana.org/domains/root/db/reliance.html reliance -// ren : 2013-12-12 ZDNS International Limited +// ren : ZDNS International Limited +// https://www.iana.org/domains/root/db/ren.html ren -// rent : 2014-12-04 XYZ.COM LLC +// rent : XYZ.COM LLC +// https://www.iana.org/domains/root/db/rent.html rent -// rentals : 2013-12-05 Binky Moon, LLC +// rentals : Binky Moon, LLC +// https://www.iana.org/domains/root/db/rentals.html rentals -// repair : 2013-11-07 Binky Moon, LLC +// repair : Binky Moon, LLC +// https://www.iana.org/domains/root/db/repair.html repair -// report : 2013-12-05 Binky Moon, LLC +// report : Binky Moon, LLC +// https://www.iana.org/domains/root/db/report.html report -// republican : 2014-03-20 Dog Beach, LLC +// republican : Dog Beach, LLC +// https://www.iana.org/domains/root/db/republican.html republican -// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// rest : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// https://www.iana.org/domains/root/db/rest.html rest -// restaurant : 2014-07-03 Binky Moon, LLC +// restaurant : Binky Moon, LLC +// https://www.iana.org/domains/root/db/restaurant.html restaurant -// review : 2014-11-20 dot Review Limited +// review : dot Review Limited +// https://www.iana.org/domains/root/db/review.html review -// reviews : 2013-09-13 Dog Beach, LLC +// reviews : Dog Beach, LLC +// https://www.iana.org/domains/root/db/reviews.html reviews -// rexroth : 2015-06-18 Robert Bosch GMBH +// rexroth : Robert Bosch GMBH +// https://www.iana.org/domains/root/db/rexroth.html rexroth -// rich : 2013-11-21 iRegistry GmbH +// rich : iRegistry GmbH +// https://www.iana.org/domains/root/db/rich.html rich -// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited +// richardli : Pacific Century Asset Management (HK) Limited +// https://www.iana.org/domains/root/db/richardli.html richardli -// ricoh : 2014-11-20 Ricoh Company, Ltd. +// ricoh : Ricoh Company, Ltd. +// https://www.iana.org/domains/root/db/ricoh.html ricoh -// ril : 2015-04-02 Reliance Industries Limited +// ril : Reliance Industries Limited +// https://www.iana.org/domains/root/db/ril.html ril -// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO +// rio : Empresa Municipal de Informática SA - IPLANRIO +// https://www.iana.org/domains/root/db/rio.html rio -// rip : 2014-07-10 Dog Beach, LLC +// rip : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rip.html rip -// rocher : 2014-12-18 Ferrero Trading Lux S.A. +// rocher : Ferrero Trading Lux S.A. +// https://www.iana.org/domains/root/db/rocher.html rocher -// rocks : 2013-11-14 Dog Beach, LLC +// rocks : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rocks.html rocks -// rodeo : 2013-12-19 Registry Services, LLC +// rodeo : Registry Services, LLC +// https://www.iana.org/domains/root/db/rodeo.html rodeo -// rogers : 2015-08-06 Rogers Communications Canada Inc. +// rogers : Rogers Communications Canada Inc. +// https://www.iana.org/domains/root/db/rogers.html rogers -// room : 2014-12-18 Amazon Registry Services, Inc. +// room : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/room.html room -// rsvp : 2014-05-08 Charleston Road Registry Inc. +// rsvp : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/rsvp.html rsvp -// rugby : 2016-12-15 World Rugby Strategic Developments Limited +// rugby : World Rugby Strategic Developments Limited +// https://www.iana.org/domains/root/db/rugby.html rugby -// ruhr : 2013-10-02 dotSaarland GmbH +// ruhr : dotSaarland GmbH +// https://www.iana.org/domains/root/db/ruhr.html ruhr -// run : 2015-03-19 Binky Moon, LLC +// run : Binky Moon, LLC +// https://www.iana.org/domains/root/db/run.html run -// rwe : 2015-04-02 RWE AG +// rwe : RWE AG +// https://www.iana.org/domains/root/db/rwe.html rwe -// ryukyu : 2014-01-09 BRregistry, Inc. +// ryukyu : BRregistry, Inc. +// https://www.iana.org/domains/root/db/ryukyu.html ryukyu -// saarland : 2013-12-12 dotSaarland GmbH +// saarland : dotSaarland GmbH +// https://www.iana.org/domains/root/db/saarland.html saarland -// safe : 2014-12-18 Amazon Registry Services, Inc. +// safe : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/safe.html safe -// safety : 2015-01-08 Safety Registry Services, LLC. +// safety : Safety Registry Services, LLC. +// https://www.iana.org/domains/root/db/safety.html safety -// sakura : 2014-12-18 SAKURA Internet Inc. +// sakura : SAKURA Internet Inc. +// https://www.iana.org/domains/root/db/sakura.html sakura -// sale : 2014-10-16 Dog Beach, LLC +// sale : Dog Beach, LLC +// https://www.iana.org/domains/root/db/sale.html sale -// salon : 2014-12-11 Binky Moon, LLC +// salon : Binky Moon, LLC +// https://www.iana.org/domains/root/db/salon.html salon -// samsclub : 2015-07-31 Wal-Mart Stores, Inc. +// samsclub : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/samsclub.html samsclub -// samsung : 2014-04-03 SAMSUNG SDS CO., LTD +// samsung : SAMSUNG SDS CO., LTD +// https://www.iana.org/domains/root/db/samsung.html samsung -// sandvik : 2014-11-13 Sandvik AB +// sandvik : Sandvik AB +// https://www.iana.org/domains/root/db/sandvik.html sandvik -// sandvikcoromant : 2014-11-07 Sandvik AB +// sandvikcoromant : Sandvik AB +// https://www.iana.org/domains/root/db/sandvikcoromant.html sandvikcoromant -// sanofi : 2014-10-09 Sanofi +// sanofi : Sanofi +// https://www.iana.org/domains/root/db/sanofi.html sanofi -// sap : 2014-03-27 SAP AG +// sap : SAP AG +// https://www.iana.org/domains/root/db/sap.html sap -// sarl : 2014-07-03 Binky Moon, LLC +// sarl : Binky Moon, LLC +// https://www.iana.org/domains/root/db/sarl.html sarl -// sas : 2015-04-02 Research IP LLC +// sas : Research IP LLC +// https://www.iana.org/domains/root/db/sas.html sas -// save : 2015-06-25 Amazon Registry Services, Inc. +// save : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/save.html save -// saxo : 2014-10-31 Saxo Bank A/S +// saxo : Saxo Bank A/S +// https://www.iana.org/domains/root/db/saxo.html saxo -// sbi : 2015-03-12 STATE BANK OF INDIA +// sbi : STATE BANK OF INDIA +// https://www.iana.org/domains/root/db/sbi.html sbi -// sbs : 2014-11-07 ShortDot SA +// sbs : ShortDot SA +// https://www.iana.org/domains/root/db/sbs.html sbs -// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) +// sca : SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) +// https://www.iana.org/domains/root/db/sca.html sca -// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB") +// scb : The Siam Commercial Bank Public Company Limited ("SCB") +// https://www.iana.org/domains/root/db/scb.html scb -// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG +// schaeffler : Schaeffler Technologies AG & Co. KG +// https://www.iana.org/domains/root/db/schaeffler.html schaeffler -// schmidt : 2014-04-03 SCHMIDT GROUPE S.A.S. +// schmidt : SCHMIDT GROUPE S.A.S. +// https://www.iana.org/domains/root/db/schmidt.html schmidt -// scholarships : 2014-04-24 Scholarships.com, LLC +// scholarships : Scholarships.com, LLC +// https://www.iana.org/domains/root/db/scholarships.html scholarships -// school : 2014-12-18 Binky Moon, LLC +// school : Binky Moon, LLC +// https://www.iana.org/domains/root/db/school.html school -// schule : 2014-03-06 Binky Moon, LLC +// schule : Binky Moon, LLC +// https://www.iana.org/domains/root/db/schule.html schule -// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +// schwarz : Schwarz Domains und Services GmbH & Co. KG +// https://www.iana.org/domains/root/db/schwarz.html schwarz -// science : 2014-09-11 dot Science Limited +// science : dot Science Limited +// https://www.iana.org/domains/root/db/science.html science -// scot : 2014-01-23 Dot Scot Registry Limited +// scot : Dot Scot Registry Limited +// https://www.iana.org/domains/root/db/scot.html scot -// search : 2016-06-09 Charleston Road Registry Inc. +// search : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/search.html search -// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) +// seat : SEAT, S.A. (Sociedad Unipersonal) +// https://www.iana.org/domains/root/db/seat.html seat -// secure : 2015-08-27 Amazon Registry Services, Inc. +// secure : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/secure.html secure -// security : 2015-05-14 XYZ.COM LLC +// security : XYZ.COM LLC +// https://www.iana.org/domains/root/db/security.html security -// seek : 2014-12-04 Seek Limited +// seek : Seek Limited +// https://www.iana.org/domains/root/db/seek.html seek -// select : 2015-10-08 Registry Services, LLC +// select : Registry Services, LLC +// https://www.iana.org/domains/root/db/select.html select -// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A. +// sener : Sener Ingeniería y Sistemas, S.A. +// https://www.iana.org/domains/root/db/sener.html sener -// services : 2014-02-27 Binky Moon, LLC +// services : Binky Moon, LLC +// https://www.iana.org/domains/root/db/services.html services -// ses : 2015-07-23 SES -ses - -// seven : 2015-08-06 Seven West Media Ltd +// seven : Seven West Media Ltd +// https://www.iana.org/domains/root/db/seven.html seven -// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG +// sew : SEW-EURODRIVE GmbH & Co KG +// https://www.iana.org/domains/root/db/sew.html sew -// sex : 2014-11-13 ICM Registry SX LLC +// sex : ICM Registry SX LLC +// https://www.iana.org/domains/root/db/sex.html sex -// sexy : 2013-09-11 UNR Corp. +// sexy : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/sexy.html sexy -// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR +// sfr : Societe Francaise du Radiotelephone - SFR +// https://www.iana.org/domains/root/db/sfr.html sfr -// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited +// shangrila : Shangri‐La International Hotel Management Limited +// https://www.iana.org/domains/root/db/shangrila.html shangrila -// sharp : 2014-05-01 Sharp Corporation +// sharp : Sharp Corporation +// https://www.iana.org/domains/root/db/sharp.html sharp -// shaw : 2015-04-23 Shaw Cablesystems G.P. +// shaw : Shaw Cablesystems G.P. +// https://www.iana.org/domains/root/db/shaw.html shaw -// shell : 2015-07-30 Shell Information Technology International Inc +// shell : Shell Information Technology International Inc +// https://www.iana.org/domains/root/db/shell.html shell -// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// shia : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// https://www.iana.org/domains/root/db/shia.html shia -// shiksha : 2013-11-14 Afilias Limited +// shiksha : Identity Digital Limited +// https://www.iana.org/domains/root/db/shiksha.html shiksha -// shoes : 2013-10-02 Binky Moon, LLC +// shoes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/shoes.html shoes -// shop : 2016-04-08 GMO Registry, Inc. +// shop : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/shop.html shop -// shopping : 2016-03-31 Binky Moon, LLC +// shopping : Binky Moon, LLC +// https://www.iana.org/domains/root/db/shopping.html shopping -// shouji : 2015-01-08 Beijing Qihu Keji Co., Ltd. +// shouji : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/shouji.html shouji -// show : 2015-03-05 Binky Moon, LLC +// show : Binky Moon, LLC +// https://www.iana.org/domains/root/db/show.html show -// showtime : 2015-08-06 CBS Domains Inc. +// showtime : CBS Domains Inc. +// https://www.iana.org/domains/root/db/showtime.html showtime -// silk : 2015-06-25 Amazon Registry Services, Inc. +// silk : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/silk.html silk -// sina : 2015-03-12 Sina Corporation +// sina : Sina Corporation +// https://www.iana.org/domains/root/db/sina.html sina -// singles : 2013-08-27 Binky Moon, LLC +// singles : Binky Moon, LLC +// https://www.iana.org/domains/root/db/singles.html singles -// site : 2015-01-15 Radix FZC +// site : Radix FZC DMCC +// https://www.iana.org/domains/root/db/site.html site -// ski : 2015-04-09 Afilias Limited +// ski : Identity Digital Limited +// https://www.iana.org/domains/root/db/ski.html ski -// skin : 2015-01-15 XYZ.COM LLC +// skin : XYZ.COM LLC +// https://www.iana.org/domains/root/db/skin.html skin -// sky : 2014-06-19 Sky International AG +// sky : Sky International AG +// https://www.iana.org/domains/root/db/sky.html sky -// skype : 2014-12-18 Microsoft Corporation +// skype : Microsoft Corporation +// https://www.iana.org/domains/root/db/skype.html skype -// sling : 2015-07-30 DISH Technologies L.L.C. +// sling : DISH Technologies L.L.C. +// https://www.iana.org/domains/root/db/sling.html sling -// smart : 2015-07-09 Smart Communications, Inc. (SMART) +// smart : Smart Communications, Inc. (SMART) +// https://www.iana.org/domains/root/db/smart.html smart -// smile : 2014-12-18 Amazon Registry Services, Inc. +// smile : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/smile.html smile -// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F +// sncf : Société Nationale SNCF +// https://www.iana.org/domains/root/db/sncf.html sncf -// soccer : 2015-03-26 Binky Moon, LLC +// soccer : Binky Moon, LLC +// https://www.iana.org/domains/root/db/soccer.html soccer -// social : 2013-11-07 Dog Beach, LLC +// social : Dog Beach, LLC +// https://www.iana.org/domains/root/db/social.html social -// softbank : 2015-07-02 SoftBank Group Corp. +// softbank : SoftBank Group Corp. +// https://www.iana.org/domains/root/db/softbank.html softbank -// software : 2014-03-20 Dog Beach, LLC +// software : Dog Beach, LLC +// https://www.iana.org/domains/root/db/software.html software -// sohu : 2013-12-19 Sohu.com Limited +// sohu : Sohu.com Limited +// https://www.iana.org/domains/root/db/sohu.html sohu -// solar : 2013-11-07 Binky Moon, LLC +// solar : Binky Moon, LLC +// https://www.iana.org/domains/root/db/solar.html solar -// solutions : 2013-11-07 Binky Moon, LLC +// solutions : Binky Moon, LLC +// https://www.iana.org/domains/root/db/solutions.html solutions -// song : 2015-02-26 Amazon Registry Services, Inc. +// song : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/song.html song -// sony : 2015-01-08 Sony Corporation +// sony : Sony Corporation +// https://www.iana.org/domains/root/db/sony.html sony -// soy : 2014-01-23 Charleston Road Registry Inc. +// soy : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/soy.html soy -// spa : 2019-09-19 Asia Spa and Wellness Promotion Council Limited +// spa : Asia Spa and Wellness Promotion Council Limited +// https://www.iana.org/domains/root/db/spa.html spa -// space : 2014-04-03 Radix FZC +// space : Radix FZC DMCC +// https://www.iana.org/domains/root/db/space.html space -// sport : 2017-11-16 Global Association of International Sports Federations (GAISF) +// sport : SportAccord +// https://www.iana.org/domains/root/db/sport.html sport -// spot : 2015-02-26 Amazon Registry Services, Inc. +// spot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/spot.html spot -// srl : 2015-05-07 InterNetX, Corp +// srl : InterNetX, Corp +// https://www.iana.org/domains/root/db/srl.html srl -// stada : 2014-11-13 STADA Arzneimittel AG +// stada : STADA Arzneimittel AG +// https://www.iana.org/domains/root/db/stada.html stada -// staples : 2015-07-30 Staples, Inc. +// staples : Staples, Inc. +// https://www.iana.org/domains/root/db/staples.html staples -// star : 2015-01-08 Star India Private Limited +// star : Star India Private Limited +// https://www.iana.org/domains/root/db/star.html star -// statebank : 2015-03-12 STATE BANK OF INDIA +// statebank : STATE BANK OF INDIA +// https://www.iana.org/domains/root/db/statebank.html statebank -// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company +// statefarm : State Farm Mutual Automobile Insurance Company +// https://www.iana.org/domains/root/db/statefarm.html statefarm -// stc : 2014-10-09 Saudi Telecom Company +// stc : Saudi Telecom Company +// https://www.iana.org/domains/root/db/stc.html stc -// stcgroup : 2014-10-09 Saudi Telecom Company +// stcgroup : Saudi Telecom Company +// https://www.iana.org/domains/root/db/stcgroup.html stcgroup -// stockholm : 2014-12-18 Stockholms kommun +// stockholm : Stockholms kommun +// https://www.iana.org/domains/root/db/stockholm.html stockholm -// storage : 2014-12-22 XYZ.COM LLC +// storage : XYZ.COM LLC +// https://www.iana.org/domains/root/db/storage.html storage -// store : 2015-04-09 Radix FZC +// store : Radix FZC DMCC +// https://www.iana.org/domains/root/db/store.html store -// stream : 2016-01-08 dot Stream Limited +// stream : dot Stream Limited +// https://www.iana.org/domains/root/db/stream.html stream -// studio : 2015-02-11 Dog Beach, LLC +// studio : Dog Beach, LLC +// https://www.iana.org/domains/root/db/studio.html studio -// study : 2014-12-11 Registry Services, LLC +// study : Registry Services, LLC +// https://www.iana.org/domains/root/db/study.html study -// style : 2014-12-04 Binky Moon, LLC +// style : Binky Moon, LLC +// https://www.iana.org/domains/root/db/style.html style -// sucks : 2014-12-22 Vox Populi Registry Ltd. +// sucks : Vox Populi Registry Ltd. +// https://www.iana.org/domains/root/db/sucks.html sucks -// supplies : 2013-12-19 Binky Moon, LLC +// supplies : Binky Moon, LLC +// https://www.iana.org/domains/root/db/supplies.html supplies -// supply : 2013-12-19 Binky Moon, LLC +// supply : Binky Moon, LLC +// https://www.iana.org/domains/root/db/supply.html supply -// support : 2013-10-24 Binky Moon, LLC +// support : Binky Moon, LLC +// https://www.iana.org/domains/root/db/support.html support -// surf : 2014-01-09 Registry Services, LLC +// surf : Registry Services, LLC +// https://www.iana.org/domains/root/db/surf.html surf -// surgery : 2014-03-20 Binky Moon, LLC +// surgery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/surgery.html surgery -// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION +// suzuki : SUZUKI MOTOR CORPORATION +// https://www.iana.org/domains/root/db/suzuki.html suzuki -// swatch : 2015-01-08 The Swatch Group Ltd +// swatch : The Swatch Group Ltd +// https://www.iana.org/domains/root/db/swatch.html swatch -// swiss : 2014-10-16 Swiss Confederation +// swiss : Swiss Confederation +// https://www.iana.org/domains/root/db/swiss.html swiss -// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet +// sydney : State of New South Wales, Department of Premier and Cabinet +// https://www.iana.org/domains/root/db/sydney.html sydney -// systems : 2013-11-07 Binky Moon, LLC +// systems : Binky Moon, LLC +// https://www.iana.org/domains/root/db/systems.html systems -// tab : 2014-12-04 Tabcorp Holdings Limited +// tab : Tabcorp Holdings Limited +// https://www.iana.org/domains/root/db/tab.html tab -// taipei : 2014-07-10 Taipei City Government +// taipei : Taipei City Government +// https://www.iana.org/domains/root/db/taipei.html taipei -// talk : 2015-04-09 Amazon Registry Services, Inc. +// talk : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/talk.html talk -// taobao : 2015-01-15 Alibaba Group Holding Limited +// taobao : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/taobao.html taobao -// target : 2015-07-31 Target Domain Holdings, LLC +// target : Target Domain Holdings, LLC +// https://www.iana.org/domains/root/db/target.html target -// tatamotors : 2015-03-12 Tata Motors Ltd +// tatamotors : Tata Motors Ltd +// https://www.iana.org/domains/root/db/tatamotors.html tatamotors -// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +// tatar : Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +// https://www.iana.org/domains/root/db/tatar.html tatar -// tattoo : 2013-08-30 Top Level Design, LLC +// tattoo : Registry Services, LLC +// https://www.iana.org/domains/root/db/tattoo.html tattoo -// tax : 2014-03-20 Binky Moon, LLC +// tax : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tax.html tax -// taxi : 2015-03-19 Binky Moon, LLC +// taxi : Binky Moon, LLC +// https://www.iana.org/domains/root/db/taxi.html taxi -// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// tci : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// https://www.iana.org/domains/root/db/tci.html tci -// tdk : 2015-06-11 TDK Corporation +// tdk : TDK Corporation +// https://www.iana.org/domains/root/db/tdk.html tdk -// team : 2015-03-05 Binky Moon, LLC +// team : Binky Moon, LLC +// https://www.iana.org/domains/root/db/team.html team -// tech : 2015-01-30 Radix FZC +// tech : Radix FZC DMCC +// https://www.iana.org/domains/root/db/tech.html tech -// technology : 2013-09-13 Binky Moon, LLC +// technology : Binky Moon, LLC +// https://www.iana.org/domains/root/db/technology.html technology -// temasek : 2014-08-07 Temasek Holdings (Private) Limited +// temasek : Temasek Holdings (Private) Limited +// https://www.iana.org/domains/root/db/temasek.html temasek -// tennis : 2014-12-04 Binky Moon, LLC +// tennis : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tennis.html tennis -// teva : 2015-07-02 Teva Pharmaceutical Industries Limited +// teva : Teva Pharmaceutical Industries Limited +// https://www.iana.org/domains/root/db/teva.html teva -// thd : 2015-04-02 Home Depot Product Authority, LLC +// thd : Home Depot Product Authority, LLC +// https://www.iana.org/domains/root/db/thd.html thd -// theater : 2015-03-19 Binky Moon, LLC +// theater : Binky Moon, LLC +// https://www.iana.org/domains/root/db/theater.html theater -// theatre : 2015-05-07 XYZ.COM LLC +// theatre : XYZ.COM LLC +// https://www.iana.org/domains/root/db/theatre.html theatre -// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America +// tiaa : Teachers Insurance and Annuity Association of America +// https://www.iana.org/domains/root/db/tiaa.html tiaa -// tickets : 2015-02-05 XYZ.COM LLC +// tickets : XYZ.COM LLC +// https://www.iana.org/domains/root/db/tickets.html tickets -// tienda : 2013-11-14 Binky Moon, LLC +// tienda : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tienda.html tienda -// tiffany : 2015-01-30 Tiffany and Company -tiffany - -// tips : 2013-09-20 Binky Moon, LLC +// tips : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tips.html tips -// tires : 2014-11-07 Binky Moon, LLC +// tires : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tires.html tires -// tirol : 2014-04-24 punkt Tirol GmbH +// tirol : punkt Tirol GmbH +// https://www.iana.org/domains/root/db/tirol.html tirol -// tjmaxx : 2015-07-16 The TJX Companies, Inc. +// tjmaxx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tjmaxx.html tjmaxx -// tjx : 2015-07-16 The TJX Companies, Inc. +// tjx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tjx.html tjx -// tkmaxx : 2015-07-16 The TJX Companies, Inc. +// tkmaxx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tkmaxx.html tkmaxx -// tmall : 2015-01-15 Alibaba Group Holding Limited +// tmall : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/tmall.html tmall -// today : 2013-09-20 Binky Moon, LLC +// today : Binky Moon, LLC +// https://www.iana.org/domains/root/db/today.html today -// tokyo : 2013-11-13 GMO Registry, Inc. +// tokyo : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/tokyo.html tokyo -// tools : 2013-11-21 Binky Moon, LLC +// tools : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tools.html tools -// top : 2014-03-20 .TOP Registry +// top : .TOP Registry +// https://www.iana.org/domains/root/db/top.html top -// toray : 2014-12-18 Toray Industries, Inc. +// toray : Toray Industries, Inc. +// https://www.iana.org/domains/root/db/toray.html toray -// toshiba : 2014-04-10 TOSHIBA Corporation +// toshiba : TOSHIBA Corporation +// https://www.iana.org/domains/root/db/toshiba.html toshiba -// total : 2015-08-06 TOTAL SE +// total : TotalEnergies SE +// https://www.iana.org/domains/root/db/total.html total -// tours : 2015-01-22 Binky Moon, LLC +// tours : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tours.html tours -// town : 2014-03-06 Binky Moon, LLC +// town : Binky Moon, LLC +// https://www.iana.org/domains/root/db/town.html town -// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION +// toyota : TOYOTA MOTOR CORPORATION +// https://www.iana.org/domains/root/db/toyota.html toyota -// toys : 2014-03-06 Binky Moon, LLC +// toys : Binky Moon, LLC +// https://www.iana.org/domains/root/db/toys.html toys -// trade : 2014-01-23 Elite Registry Limited +// trade : Elite Registry Limited +// https://www.iana.org/domains/root/db/trade.html trade -// trading : 2014-12-11 Dog Beach, LLC +// trading : Dog Beach, LLC +// https://www.iana.org/domains/root/db/trading.html trading -// training : 2013-11-07 Binky Moon, LLC +// training : Binky Moon, LLC +// https://www.iana.org/domains/root/db/training.html training -// travel : 2015-10-09 Dog Beach, LLC +// travel : Dog Beach, LLC +// https://www.iana.org/domains/root/db/travel.html travel -// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. -travelchannel - -// travelers : 2015-03-26 Travelers TLD, LLC +// travelers : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/travelers.html travelers -// travelersinsurance : 2015-03-26 Travelers TLD, LLC +// travelersinsurance : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/travelersinsurance.html travelersinsurance -// trust : 2014-10-16 UNR Corp. +// trust : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/trust.html trust -// trv : 2015-03-26 Travelers TLD, LLC +// trv : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/trv.html trv -// tube : 2015-06-11 Latin American Telecom LLC +// tube : Latin American Telecom LLC +// https://www.iana.org/domains/root/db/tube.html tube -// tui : 2014-07-03 TUI AG +// tui : TUI AG +// https://www.iana.org/domains/root/db/tui.html tui -// tunes : 2015-02-26 Amazon Registry Services, Inc. +// tunes : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/tunes.html tunes -// tushu : 2014-12-18 Amazon Registry Services, Inc. +// tushu : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/tushu.html tushu -// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED +// tvs : T V SUNDRAM IYENGAR & SONS LIMITED +// https://www.iana.org/domains/root/db/tvs.html tvs -// ubank : 2015-08-20 National Australia Bank Limited +// ubank : National Australia Bank Limited +// https://www.iana.org/domains/root/db/ubank.html ubank -// ubs : 2014-12-11 UBS AG +// ubs : UBS AG +// https://www.iana.org/domains/root/db/ubs.html ubs -// unicom : 2015-10-15 China United Network Communications Corporation Limited +// unicom : China United Network Communications Corporation Limited +// https://www.iana.org/domains/root/db/unicom.html unicom -// university : 2014-03-06 Binky Moon, LLC +// university : Binky Moon, LLC +// https://www.iana.org/domains/root/db/university.html university -// uno : 2013-09-11 Radix FZC +// uno : Radix FZC DMCC +// https://www.iana.org/domains/root/db/uno.html uno -// uol : 2014-05-01 UBN INTERNET LTDA. +// uol : UBN INTERNET LTDA. +// https://www.iana.org/domains/root/db/uol.html uol -// ups : 2015-06-25 UPS Market Driver, Inc. +// ups : UPS Market Driver, Inc. +// https://www.iana.org/domains/root/db/ups.html ups -// vacations : 2013-12-05 Binky Moon, LLC +// vacations : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vacations.html vacations -// vana : 2014-12-11 Lifestyle Domain Holdings, Inc. +// vana : Lifestyle Domain Holdings, Inc. +// https://www.iana.org/domains/root/db/vana.html vana -// vanguard : 2015-09-03 The Vanguard Group, Inc. +// vanguard : The Vanguard Group, Inc. +// https://www.iana.org/domains/root/db/vanguard.html vanguard -// vegas : 2014-01-16 Dot Vegas, Inc. +// vegas : Dot Vegas, Inc. +// https://www.iana.org/domains/root/db/vegas.html vegas -// ventures : 2013-08-27 Binky Moon, LLC +// ventures : Binky Moon, LLC +// https://www.iana.org/domains/root/db/ventures.html ventures -// verisign : 2015-08-13 VeriSign, Inc. +// verisign : VeriSign, Inc. +// https://www.iana.org/domains/root/db/verisign.html verisign -// versicherung : 2014-03-20 tldbox GmbH +// versicherung : tldbox GmbH +// https://www.iana.org/domains/root/db/versicherung.html versicherung -// vet : 2014-03-06 Dog Beach, LLC +// vet : Dog Beach, LLC +// https://www.iana.org/domains/root/db/vet.html vet -// viajes : 2013-10-17 Binky Moon, LLC +// viajes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/viajes.html viajes -// video : 2014-10-16 Dog Beach, LLC +// video : Dog Beach, LLC +// https://www.iana.org/domains/root/db/video.html video -// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +// vig : VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +// https://www.iana.org/domains/root/db/vig.html vig -// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd. +// viking : Viking River Cruises (Bermuda) Ltd. +// https://www.iana.org/domains/root/db/viking.html viking -// villas : 2013-12-05 Binky Moon, LLC +// villas : Binky Moon, LLC +// https://www.iana.org/domains/root/db/villas.html villas -// vin : 2015-06-18 Binky Moon, LLC +// vin : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vin.html vin -// vip : 2015-01-22 Registry Services, LLC +// vip : Registry Services, LLC +// https://www.iana.org/domains/root/db/vip.html vip -// virgin : 2014-09-25 Virgin Enterprises Limited +// virgin : Virgin Enterprises Limited +// https://www.iana.org/domains/root/db/virgin.html virgin -// visa : 2015-07-30 Visa Worldwide Pte. Limited +// visa : Visa Worldwide Pte. Limited +// https://www.iana.org/domains/root/db/visa.html visa -// vision : 2013-12-05 Binky Moon, LLC +// vision : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vision.html vision -// viva : 2014-11-07 Saudi Telecom Company +// viva : Saudi Telecom Company +// https://www.iana.org/domains/root/db/viva.html viva -// vivo : 2015-07-31 Telefonica Brasil S.A. +// vivo : Telefonica Brasil S.A. +// https://www.iana.org/domains/root/db/vivo.html vivo -// vlaanderen : 2014-02-06 DNS.be vzw +// vlaanderen : DNS.be vzw +// https://www.iana.org/domains/root/db/vlaanderen.html vlaanderen -// vodka : 2013-12-19 Registry Services, LLC +// vodka : Registry Services, LLC +// https://www.iana.org/domains/root/db/vodka.html vodka -// volkswagen : 2015-05-14 Volkswagen Group of America Inc. +// volkswagen : Volkswagen Group of America Inc. +// https://www.iana.org/domains/root/db/volkswagen.html volkswagen -// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag +// volvo : Volvo Holding Sverige Aktiebolag +// https://www.iana.org/domains/root/db/volvo.html volvo -// vote : 2013-11-21 Monolith Registry LLC +// vote : Monolith Registry LLC +// https://www.iana.org/domains/root/db/vote.html vote -// voting : 2013-11-13 Valuetainment Corp. +// voting : Valuetainment Corp. +// https://www.iana.org/domains/root/db/voting.html voting -// voto : 2013-11-21 Monolith Registry LLC +// voto : Monolith Registry LLC +// https://www.iana.org/domains/root/db/voto.html voto -// voyage : 2013-08-27 Binky Moon, LLC +// voyage : Binky Moon, LLC +// https://www.iana.org/domains/root/db/voyage.html voyage -// vuelos : 2015-03-05 Travel Reservations SRL -vuelos - -// wales : 2014-05-08 Nominet UK +// wales : Nominet UK +// https://www.iana.org/domains/root/db/wales.html wales -// walmart : 2015-07-31 Wal-Mart Stores, Inc. +// walmart : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/walmart.html walmart -// walter : 2014-11-13 Sandvik AB +// walter : Sandvik AB +// https://www.iana.org/domains/root/db/walter.html walter -// wang : 2013-10-24 Zodiac Wang Limited +// wang : Zodiac Wang Limited +// https://www.iana.org/domains/root/db/wang.html wang -// wanggou : 2014-12-18 Amazon Registry Services, Inc. +// wanggou : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/wanggou.html wanggou -// watch : 2013-11-14 Binky Moon, LLC +// watch : Binky Moon, LLC +// https://www.iana.org/domains/root/db/watch.html watch -// watches : 2014-12-22 Afilias Limited +// watches : Identity Digital Limited +// https://www.iana.org/domains/root/db/watches.html watches -// weather : 2015-01-08 International Business Machines Corporation +// weather : International Business Machines Corporation +// https://www.iana.org/domains/root/db/weather.html weather -// weatherchannel : 2015-03-12 International Business Machines Corporation +// weatherchannel : International Business Machines Corporation +// https://www.iana.org/domains/root/db/weatherchannel.html weatherchannel -// webcam : 2014-01-23 dot Webcam Limited +// webcam : dot Webcam Limited +// https://www.iana.org/domains/root/db/webcam.html webcam -// weber : 2015-06-04 Saint-Gobain Weber SA +// weber : Saint-Gobain Weber SA +// https://www.iana.org/domains/root/db/weber.html weber -// website : 2014-04-03 Radix FZC +// website : Radix FZC DMCC +// https://www.iana.org/domains/root/db/website.html website -// wedding : 2014-04-24 Registry Services, LLC +// wedding : Registry Services, LLC +// https://www.iana.org/domains/root/db/wedding.html wedding -// weibo : 2015-03-05 Sina Corporation +// weibo : Sina Corporation +// https://www.iana.org/domains/root/db/weibo.html weibo -// weir : 2015-01-29 Weir Group IP Limited +// weir : Weir Group IP Limited +// https://www.iana.org/domains/root/db/weir.html weir -// whoswho : 2014-02-20 Who's Who Registry +// whoswho : Who's Who Registry +// https://www.iana.org/domains/root/db/whoswho.html whoswho -// wien : 2013-10-28 punkt.wien GmbH +// wien : punkt.wien GmbH +// https://www.iana.org/domains/root/db/wien.html wien -// wiki : 2013-11-07 Top Level Design, LLC +// wiki : Registry Services, LLC +// https://www.iana.org/domains/root/db/wiki.html wiki -// williamhill : 2014-03-13 William Hill Organization Limited +// williamhill : William Hill Organization Limited +// https://www.iana.org/domains/root/db/williamhill.html williamhill -// win : 2014-11-20 First Registry Limited +// win : First Registry Limited +// https://www.iana.org/domains/root/db/win.html win -// windows : 2014-12-18 Microsoft Corporation +// windows : Microsoft Corporation +// https://www.iana.org/domains/root/db/windows.html windows -// wine : 2015-06-18 Binky Moon, LLC +// wine : Binky Moon, LLC +// https://www.iana.org/domains/root/db/wine.html wine -// winners : 2015-07-16 The TJX Companies, Inc. +// winners : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/winners.html winners -// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC +// wme : William Morris Endeavor Entertainment, LLC +// https://www.iana.org/domains/root/db/wme.html wme -// wolterskluwer : 2015-08-06 Wolters Kluwer N.V. +// wolterskluwer : Wolters Kluwer N.V. +// https://www.iana.org/domains/root/db/wolterskluwer.html wolterskluwer -// woodside : 2015-07-09 Woodside Petroleum Limited +// woodside : Woodside Petroleum Limited +// https://www.iana.org/domains/root/db/woodside.html woodside -// work : 2013-12-19 Registry Services, LLC +// work : Registry Services, LLC +// https://www.iana.org/domains/root/db/work.html work -// works : 2013-11-14 Binky Moon, LLC +// works : Binky Moon, LLC +// https://www.iana.org/domains/root/db/works.html works -// world : 2014-06-12 Binky Moon, LLC +// world : Binky Moon, LLC +// https://www.iana.org/domains/root/db/world.html world -// wow : 2015-10-08 Amazon Registry Services, Inc. +// wow : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/wow.html wow -// wtc : 2013-12-19 World Trade Centers Association, Inc. +// wtc : World Trade Centers Association, Inc. +// https://www.iana.org/domains/root/db/wtc.html wtc -// wtf : 2014-03-06 Binky Moon, LLC +// wtf : Binky Moon, LLC +// https://www.iana.org/domains/root/db/wtf.html wtf -// xbox : 2014-12-18 Microsoft Corporation +// xbox : Microsoft Corporation +// https://www.iana.org/domains/root/db/xbox.html xbox -// xerox : 2014-10-24 Xerox DNHC LLC +// xerox : Xerox DNHC LLC +// https://www.iana.org/domains/root/db/xerox.html xerox -// xfinity : 2015-07-09 Comcast IP Holdings I, LLC +// xfinity : Comcast IP Holdings I, LLC +// https://www.iana.org/domains/root/db/xfinity.html xfinity -// xihuan : 2015-01-08 Beijing Qihu Keji Co., Ltd. +// xihuan : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/xihuan.html xihuan -// xin : 2014-12-11 Elegant Leader Limited +// xin : Elegant Leader Limited +// https://www.iana.org/domains/root/db/xin.html xin -// xn--11b4c3d : 2015-01-15 VeriSign Sarl +// xn--11b4c3d : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--11b4c3d.html कॉम -// xn--1ck2e1b : 2015-02-26 Amazon Registry Services, Inc. +// xn--1ck2e1b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--1ck2e1b.html セール -// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. +// xn--1qqw23a : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--1qqw23a.html 佛山 -// xn--30rr7y : 2014-06-12 Excellent First Limited +// xn--30rr7y : Excellent First Limited +// https://www.iana.org/domains/root/db/xn--30rr7y.html 慈善 -// xn--3bst00m : 2013-09-13 Eagle Horizon Limited +// xn--3bst00m : Eagle Horizon Limited +// https://www.iana.org/domains/root/db/xn--3bst00m.html 集团 -// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED OY +// xn--3ds443g : TLD REGISTRY LIMITED OY +// https://www.iana.org/domains/root/db/xn--3ds443g.html 在线 -// xn--3pxu8k : 2015-01-15 VeriSign Sarl +// xn--3pxu8k : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--3pxu8k.html 点看 -// xn--42c2d9a : 2015-01-15 VeriSign Sarl +// xn--42c2d9a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--42c2d9a.html คอม -// xn--45q11c : 2013-11-21 Zodiac Gemini Ltd +// xn--45q11c : Zodiac Gemini Ltd +// https://www.iana.org/domains/root/db/xn--45q11c.html 八卦 -// xn--4gbrim : 2013-10-04 Helium TLDs Ltd +// xn--4gbrim : Helium TLDs Ltd +// https://www.iana.org/domains/root/db/xn--4gbrim.html موقع -// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center +// xn--55qw42g : China Organizational Name Administration Center +// https://www.iana.org/domains/root/db/xn--55qw42g.html 公益 -// xn--55qx5d : 2013-11-14 China Internet Network Information Center (CNNIC) +// xn--55qx5d : China Internet Network Information Center (CNNIC) +// https://www.iana.org/domains/root/db/xn--55qx5d.html 公司 -// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited +// xn--5su34j936bgsg : Shangri‐La International Hotel Management Limited +// https://www.iana.org/domains/root/db/xn--5su34j936bgsg.html 香格里拉 -// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited +// xn--5tzm5g : Global Website TLD Asia Limited +// https://www.iana.org/domains/root/db/xn--5tzm5g.html 网站 -// xn--6frz82g : 2013-09-23 Afilias Limited +// xn--6frz82g : Identity Digital Limited +// https://www.iana.org/domains/root/db/xn--6frz82g.html 移动 -// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited +// xn--6qq986b3xl : Tycoon Treasure Limited +// https://www.iana.org/domains/root/db/xn--6qq986b3xl.html 我爱你 -// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// xn--80adxhks : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// https://www.iana.org/domains/root/db/xn--80adxhks.html москва -// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// xn--80aqecdr1a : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--80aqecdr1a.html католик -// xn--80asehdb : 2013-07-14 CORE Association +// xn--80asehdb : CORE Association +// https://www.iana.org/domains/root/db/xn--80asehdb.html онлайн -// xn--80aswg : 2013-07-14 CORE Association +// xn--80aswg : CORE Association +// https://www.iana.org/domains/root/db/xn--80aswg.html сайт -// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited +// xn--8y0a063a : China United Network Communications Corporation Limited +// https://www.iana.org/domains/root/db/xn--8y0a063a.html 联通 -// xn--9dbq2a : 2015-01-15 VeriSign Sarl +// xn--9dbq2a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--9dbq2a.html קום -// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED +// xn--9et52u : RISE VICTORY LIMITED +// https://www.iana.org/domains/root/db/xn--9et52u.html 时尚 -// xn--9krt00a : 2015-03-12 Sina Corporation +// xn--9krt00a : Sina Corporation +// https://www.iana.org/domains/root/db/xn--9krt00a.html 微博 -// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited +// xn--b4w605ferd : Temasek Holdings (Private) Limited +// https://www.iana.org/domains/root/db/xn--b4w605ferd.html 淡马锡 -// xn--bck1b9a5dre4c : 2015-02-26 Amazon Registry Services, Inc. +// xn--bck1b9a5dre4c : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--bck1b9a5dre4c.html ファッション -// xn--c1avg : 2013-11-14 Public Interest Registry +// xn--c1avg : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--c1avg.html орг -// xn--c2br7g : 2015-01-15 VeriSign Sarl +// xn--c2br7g : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--c2br7g.html नेट -// xn--cck2b3b : 2015-02-26 Amazon Registry Services, Inc. +// xn--cck2b3b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--cck2b3b.html ストア -// xn--cckwcxetd : 2019-12-19 Amazon Registry Services, Inc. +// xn--cckwcxetd : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--cckwcxetd.html アマゾン -// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD +// xn--cg4bki : SAMSUNG SDS CO., LTD +// https://www.iana.org/domains/root/db/xn--cg4bki.html 삼성 -// xn--czr694b : 2014-01-16 Internet DotTrademark Organisation Limited +// xn--czr694b : Internet DotTrademark Organisation Limited +// https://www.iana.org/domains/root/db/xn--czr694b.html 商标 -// xn--czrs0t : 2013-12-19 Binky Moon, LLC +// xn--czrs0t : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--czrs0t.html 商店 -// xn--czru2d : 2013-11-21 Zodiac Aquarius Limited +// xn--czru2d : Zodiac Aquarius Limited +// https://www.iana.org/domains/root/db/xn--czru2d.html 商城 -// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet” +// xn--d1acj3b : The Foundation for Network Initiatives “The Smart Internet” +// https://www.iana.org/domains/root/db/xn--d1acj3b.html дети -// xn--eckvdtc9d : 2014-12-18 Amazon Registry Services, Inc. +// xn--eckvdtc9d : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--eckvdtc9d.html ポイント -// xn--efvy88h : 2014-08-22 Guangzhou YU Wei Information Technology Co., Ltd. +// xn--efvy88h : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--efvy88h.html 新闻 -// xn--fct429k : 2015-04-09 Amazon Registry Services, Inc. +// xn--fct429k : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--fct429k.html 家電 -// xn--fhbei : 2015-01-15 VeriSign Sarl +// xn--fhbei : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--fhbei.html كوم -// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED OY +// xn--fiq228c5hs : TLD REGISTRY LIMITED OY +// https://www.iana.org/domains/root/db/xn--fiq228c5hs.html 中文网 -// xn--fiq64b : 2013-10-14 CITIC Group Corporation +// xn--fiq64b : CITIC Group Corporation +// https://www.iana.org/domains/root/db/xn--fiq64b.html 中信 -// xn--fjq720a : 2014-05-22 Binky Moon, LLC +// xn--fjq720a : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--fjq720a.html 娱乐 -// xn--flw351e : 2014-07-31 Charleston Road Registry Inc. +// xn--flw351e : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--flw351e.html 谷歌 -// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited +// xn--fzys8d69uvgm : PCCW Enterprises Limited +// https://www.iana.org/domains/root/db/xn--fzys8d69uvgm.html 電訊盈科 -// xn--g2xx48c : 2015-01-30 Nawang Heli(Xiamen) Network Service Co., LTD. +// xn--g2xx48c : Nawang Heli(Xiamen) Network Service Co., LTD. +// https://www.iana.org/domains/root/db/xn--g2xx48c.html 购物 -// xn--gckr3f0f : 2015-02-26 Amazon Registry Services, Inc. +// xn--gckr3f0f : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--gckr3f0f.html クラウド -// xn--gk3at1e : 2015-10-08 Amazon Registry Services, Inc. +// xn--gk3at1e : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--gk3at1e.html 通販 -// xn--hxt814e : 2014-05-15 Zodiac Taurus Limited +// xn--hxt814e : Zodiac Taurus Limited +// https://www.iana.org/domains/root/db/xn--hxt814e.html 网店 -// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry +// xn--i1b6b1a6a2e : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--i1b6b1a6a2e.html संगठन -// xn--imr513n : 2014-12-11 Internet DotTrademark Organisation Limited +// xn--imr513n : Internet DotTrademark Organisation Limited +// https://www.iana.org/domains/root/db/xn--imr513n.html 餐厅 -// xn--io0a7i : 2013-11-14 China Internet Network Information Center (CNNIC) +// xn--io0a7i : China Internet Network Information Center (CNNIC) +// https://www.iana.org/domains/root/db/xn--io0a7i.html 网络 -// xn--j1aef : 2015-01-15 VeriSign Sarl +// xn--j1aef : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--j1aef.html ком -// xn--jlq480n2rg : 2019-12-19 Amazon Registry Services, Inc. +// xn--jlq480n2rg : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--jlq480n2rg.html 亚马逊 -// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation -诺基亚 - -// xn--jvr189m : 2015-02-26 Amazon Registry Services, Inc. +// xn--jvr189m : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--jvr189m.html 食品 -// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. +// xn--kcrx77d1x4a : Koninklijke Philips N.V. +// https://www.iana.org/domains/root/db/xn--kcrx77d1x4a.html 飞利浦 -// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd +// xn--kput3i : Beijing RITT-Net Technology Development Co., Ltd +// https://www.iana.org/domains/root/db/xn--kput3i.html 手机 -// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company +// xn--mgba3a3ejt : Aramco Services Company +// https://www.iana.org/domains/root/db/xn--mgba3a3ejt.html ارامكو -// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH +// xn--mgba7c0bbn0a : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/xn--mgba7c0bbn0a.html العليان -// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +// xn--mgbaakc7dvf : Emirates Telecommunications Corporation (trading as Etisalat) +// https://www.iana.org/domains/root/db/xn--mgbaakc7dvf.html اتصالات -// xn--mgbab2bd : 2013-10-31 CORE Association +// xn--mgbab2bd : CORE Association +// https://www.iana.org/domains/root/db/xn--mgbab2bd.html بازار -// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre +// xn--mgbca7dzdo : Abu Dhabi Systems and Information Centre +// https://www.iana.org/domains/root/db/xn--mgbca7dzdo.html ابوظبي -// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// xn--mgbi4ecexp : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--mgbi4ecexp.html كاثوليك -// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// xn--mgbt3dhd : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +// https://www.iana.org/domains/root/db/xn--mgbt3dhd.html همراه -// xn--mk1bu44c : 2015-01-15 VeriSign Sarl +// xn--mk1bu44c : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--mk1bu44c.html 닷컴 -// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. +// xn--mxtq1m : Net-Chinese Co., Ltd. +// https://www.iana.org/domains/root/db/xn--mxtq1m.html 政府 -// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd. +// xn--ngbc5azd : International Domain Registry Pty. Ltd. +// https://www.iana.org/domains/root/db/xn--ngbc5azd.html شبكة -// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House +// xn--ngbe9e0a : Kuwait Finance House +// https://www.iana.org/domains/root/db/xn--ngbe9e0a.html بيتك -// xn--ngbrx : 2015-11-12 League of Arab States +// xn--ngbrx : League of Arab States +// https://www.iana.org/domains/root/db/xn--ngbrx.html عرب -// xn--nqv7f : 2013-11-14 Public Interest Registry +// xn--nqv7f : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--nqv7f.html 机构 -// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry +// xn--nqv7fs00ema : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--nqv7fs00ema.html 组织机构 -// xn--nyqy26a : 2014-11-07 Stable Tone Limited +// xn--nyqy26a : Stable Tone Limited +// https://www.iana.org/domains/root/db/xn--nyqy26a.html 健康 -// xn--otu796d : 2017-08-06 Jiang Yu Liang Cai Technology Company Limited +// xn--otu796d : Jiang Yu Liang Cai Technology Company Limited +// https://www.iana.org/domains/root/db/xn--otu796d.html 招聘 -// xn--p1acf : 2013-12-12 Rusnames Limited +// xn--p1acf : Rusnames Limited +// https://www.iana.org/domains/root/db/xn--p1acf.html рус -// xn--pssy2u : 2015-01-15 VeriSign Sarl +// xn--pssy2u : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--pssy2u.html 大拿 -// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. +// xn--q9jyb4c : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--q9jyb4c.html みんな -// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc. +// xn--qcka1pmc : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--qcka1pmc.html グーグル -// xn--rhqv96g : 2013-09-11 Stable Tone Limited +// xn--rhqv96g : Stable Tone Limited +// https://www.iana.org/domains/root/db/xn--rhqv96g.html 世界 -// xn--rovu88b : 2015-02-26 Amazon Registry Services, Inc. +// xn--rovu88b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--rovu88b.html 書籍 -// xn--ses554g : 2014-01-16 KNET Co., Ltd. +// xn--ses554g : KNET Co., Ltd. +// https://www.iana.org/domains/root/db/xn--ses554g.html 网址 -// xn--t60b56a : 2015-01-15 VeriSign Sarl +// xn--t60b56a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--t60b56a.html 닷넷 -// xn--tckwe : 2015-01-15 VeriSign Sarl +// xn--tckwe : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--tckwe.html コム -// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// xn--tiq49xqyj : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--tiq49xqyj.html 天主教 -// xn--unup4y : 2013-07-14 Binky Moon, LLC +// xn--unup4y : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--unup4y.html 游戏 -// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +// xn--vermgensberater-ctb : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/xn--vermgensberater-ctb.html vermögensberater -// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +// xn--vermgensberatung-pwb : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/xn--vermgensberatung-pwb.html vermögensberatung -// xn--vhquv : 2013-08-27 Binky Moon, LLC +// xn--vhquv : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--vhquv.html 企业 -// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. +// xn--vuq861b : Beijing Tele-info Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--vuq861b.html 信息 -// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited +// xn--w4r85el8fhu5dnra : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/xn--w4r85el8fhu5dnra.html 嘉里大酒店 -// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited +// xn--w4rs40l : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/xn--w4rs40l.html 嘉里 -// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. +// xn--xhq521b : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--xhq521b.html 广东 -// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center +// xn--zfr164b : China Organizational Name Administration Center +// https://www.iana.org/domains/root/db/xn--zfr164b.html 政务 -// xyz : 2013-12-05 XYZ.COM LLC +// xyz : XYZ.COM LLC +// https://www.iana.org/domains/root/db/xyz.html xyz -// yachts : 2014-01-09 XYZ.COM LLC +// yachts : XYZ.COM LLC +// https://www.iana.org/domains/root/db/yachts.html yachts -// yahoo : 2015-04-02 Oath Inc. +// yahoo : Oath Inc. +// https://www.iana.org/domains/root/db/yahoo.html yahoo -// yamaxun : 2014-12-18 Amazon Registry Services, Inc. +// yamaxun : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/yamaxun.html yamaxun -// yandex : 2014-04-10 Yandex Europe B.V. +// yandex : Yandex Europe B.V. +// https://www.iana.org/domains/root/db/yandex.html yandex -// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +// yodobashi : YODOBASHI CAMERA CO.,LTD. +// https://www.iana.org/domains/root/db/yodobashi.html yodobashi -// yoga : 2014-05-29 Registry Services, LLC +// yoga : Registry Services, LLC +// https://www.iana.org/domains/root/db/yoga.html yoga -// yokohama : 2013-12-12 GMO Registry, Inc. +// yokohama : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/yokohama.html yokohama -// you : 2015-04-09 Amazon Registry Services, Inc. +// you : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/you.html you -// youtube : 2014-05-01 Charleston Road Registry Inc. +// youtube : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/youtube.html youtube -// yun : 2015-01-08 Beijing Qihu Keji Co., Ltd. +// yun : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/yun.html yun -// zappos : 2015-06-25 Amazon Registry Services, Inc. +// zappos : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/zappos.html zappos -// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) +// zara : Industria de Diseño Textil, S.A. (INDITEX, S.A.) +// https://www.iana.org/domains/root/db/zara.html zara -// zero : 2014-12-18 Amazon Registry Services, Inc. +// zero : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/zero.html zero -// zip : 2014-05-08 Charleston Road Registry Inc. +// zip : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/zip.html zip -// zone : 2013-11-14 Binky Moon, LLC +// zone : Binky Moon, LLC +// https://www.iana.org/domains/root/db/zone.html zone -// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) +// zuerich : Kanton Zürich (Canton of Zurich) +// https://www.iana.org/domains/root/db/zuerich.html zuerich @@ -10660,6 +11271,14 @@ graphox.us // Submitted by accesso Team *.devcdnaccesso.com +// Acorn Labs : https://acorn.io +// Submitted by Craig Jellick +*.on-acorn.io + +// ActiveTrail: https://www.activetrail.biz/ +// Submitted by Ofer Kalaora +activetrail.biz + // Adobe : https://www.adobe.com/ // Submitted by Ian Boston and Lars Trieloff adobeaemcloud.com @@ -10669,6 +11288,11 @@ adobeaemcloud.net hlx.page hlx3.page +// Adobe Developer Platform : https://developer.adobe.com +// Submitted by Jesse MacFadyen +adobeio-static.net +adobeioruntime.net + // Agnat sp. z o.o. : https://domena.pl // Submitted by Przemyslaw Plewa beep.pl @@ -10683,6 +11307,24 @@ airkitapps.eu // Submitted by Etienne Stalmans aivencloud.com +// Akamai : https://www.akamai.com/ +// Submitted by Akamai Team +akadns.net +akamai.net +akamai-staging.net +akamaiedge.net +akamaiedge-staging.net +akamaihd.net +akamaihd-staging.net +akamaiorigin.net +akamaiorigin-staging.net +akamaized.net +akamaized-staging.net +edgekey.net +edgekey-staging.net +edgesuite.net +edgesuite-staging.net + // alboto.ca : http://alboto.ca // Submitted by Anton Avramov barsy.ca @@ -10704,19 +11346,164 @@ altervista.org // Submitted by Cyril alwaysdata.net -// Amazon CloudFront : https://aws.amazon.com/cloudfront/ +// Amaze Software : https://amaze.co +// Submitted by Domain Admin +myamaze.net + +// Amazon : https://www.amazon.com/ +// Submitted by AWS Security +// Subsections of Amazon/subsidiaries will appear until "concludes" tag + +// Amazon CloudFront // Submitted by Donavan Miller +// Reference: 54144616-fd49-4435-8535-19c6a601bdb3 cloudfront.net -// Amazon Elastic Compute Cloud : https://aws.amazon.com/ec2/ +// Amazon EC2 // Submitted by Luke Wells +// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537 *.compute.amazonaws.com *.compute-1.amazonaws.com *.compute.amazonaws.com.cn us-east-1.amazonaws.com -// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ +// Amazon S3 // Submitted by Luke Wells +// Reference: d068bd97-f0a9-4838-a6d8-954b622ef4ae +s3.cn-north-1.amazonaws.com.cn +s3.dualstack.ap-northeast-1.amazonaws.com +s3.dualstack.ap-northeast-2.amazonaws.com +s3.ap-northeast-2.amazonaws.com +s3-website.ap-northeast-2.amazonaws.com +s3.dualstack.ap-south-1.amazonaws.com +s3.ap-south-1.amazonaws.com +s3-website.ap-south-1.amazonaws.com +s3.dualstack.ap-southeast-1.amazonaws.com +s3.dualstack.ap-southeast-2.amazonaws.com +s3.dualstack.ca-central-1.amazonaws.com +s3.ca-central-1.amazonaws.com +s3-website.ca-central-1.amazonaws.com +s3.dualstack.eu-central-1.amazonaws.com +s3.eu-central-1.amazonaws.com +s3-website.eu-central-1.amazonaws.com +s3.dualstack.eu-west-1.amazonaws.com +s3.dualstack.eu-west-2.amazonaws.com +s3.eu-west-2.amazonaws.com +s3-website.eu-west-2.amazonaws.com +s3.dualstack.eu-west-3.amazonaws.com +s3.eu-west-3.amazonaws.com +s3-website.eu-west-3.amazonaws.com +s3.amazonaws.com +s3-ap-northeast-1.amazonaws.com +s3-ap-northeast-2.amazonaws.com +s3-ap-south-1.amazonaws.com +s3-ap-southeast-1.amazonaws.com +s3-ap-southeast-2.amazonaws.com +s3-ca-central-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-west-1.amazonaws.com +s3-eu-west-2.amazonaws.com +s3-eu-west-3.amazonaws.com +s3-external-1.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +s3-sa-east-1.amazonaws.com +s3-us-east-2.amazonaws.com +s3-us-gov-west-1.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3-website-ap-northeast-1.amazonaws.com +s3-website-ap-southeast-1.amazonaws.com +s3-website-ap-southeast-2.amazonaws.com +s3-website-eu-west-1.amazonaws.com +s3-website-sa-east-1.amazonaws.com +s3-website-us-east-1.amazonaws.com +s3-website-us-west-1.amazonaws.com +s3-website-us-west-2.amazonaws.com +s3.dualstack.sa-east-1.amazonaws.com +s3.dualstack.us-east-1.amazonaws.com +s3.dualstack.us-east-2.amazonaws.com +s3.us-east-2.amazonaws.com +s3-website.us-east-2.amazonaws.com + +// Analytics on AWS +// Submitted by AWS Security +// Reference: c02c3a80-f8a0-4fd2-b719-48ea8b7c28de +analytics-gateway.ap-northeast-1.amazonaws.com +analytics-gateway.eu-west-1.amazonaws.com +analytics-gateway.us-east-1.amazonaws.com +analytics-gateway.us-east-2.amazonaws.com +analytics-gateway.us-west-2.amazonaws.com + +// AWS Cloud9 +// Submitted by: AWS Security +// Reference: 05c44955-977c-4b57-938a-f2af92733f9f +webview-assets.aws-cloud9.af-south-1.amazonaws.com +vfs.cloud9.af-south-1.amazonaws.com +webview-assets.cloud9.af-south-1.amazonaws.com +webview-assets.aws-cloud9.ap-east-1.amazonaws.com +vfs.cloud9.ap-east-1.amazonaws.com +webview-assets.cloud9.ap-east-1.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com +vfs.cloud9.ap-northeast-1.amazonaws.com +webview-assets.cloud9.ap-northeast-1.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com +vfs.cloud9.ap-northeast-2.amazonaws.com +webview-assets.cloud9.ap-northeast-2.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com +vfs.cloud9.ap-northeast-3.amazonaws.com +webview-assets.cloud9.ap-northeast-3.amazonaws.com +webview-assets.aws-cloud9.ap-south-1.amazonaws.com +vfs.cloud9.ap-south-1.amazonaws.com +webview-assets.cloud9.ap-south-1.amazonaws.com +webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com +vfs.cloud9.ap-southeast-1.amazonaws.com +webview-assets.cloud9.ap-southeast-1.amazonaws.com +webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com +vfs.cloud9.ap-southeast-2.amazonaws.com +webview-assets.cloud9.ap-southeast-2.amazonaws.com +webview-assets.aws-cloud9.ca-central-1.amazonaws.com +vfs.cloud9.ca-central-1.amazonaws.com +webview-assets.cloud9.ca-central-1.amazonaws.com +webview-assets.aws-cloud9.eu-central-1.amazonaws.com +vfs.cloud9.eu-central-1.amazonaws.com +webview-assets.cloud9.eu-central-1.amazonaws.com +webview-assets.aws-cloud9.eu-north-1.amazonaws.com +vfs.cloud9.eu-north-1.amazonaws.com +webview-assets.cloud9.eu-north-1.amazonaws.com +webview-assets.aws-cloud9.eu-south-1.amazonaws.com +vfs.cloud9.eu-south-1.amazonaws.com +webview-assets.cloud9.eu-south-1.amazonaws.com +webview-assets.aws-cloud9.eu-west-1.amazonaws.com +vfs.cloud9.eu-west-1.amazonaws.com +webview-assets.cloud9.eu-west-1.amazonaws.com +webview-assets.aws-cloud9.eu-west-2.amazonaws.com +vfs.cloud9.eu-west-2.amazonaws.com +webview-assets.cloud9.eu-west-2.amazonaws.com +webview-assets.aws-cloud9.eu-west-3.amazonaws.com +vfs.cloud9.eu-west-3.amazonaws.com +webview-assets.cloud9.eu-west-3.amazonaws.com +webview-assets.aws-cloud9.me-south-1.amazonaws.com +vfs.cloud9.me-south-1.amazonaws.com +webview-assets.cloud9.me-south-1.amazonaws.com +webview-assets.aws-cloud9.sa-east-1.amazonaws.com +vfs.cloud9.sa-east-1.amazonaws.com +webview-assets.cloud9.sa-east-1.amazonaws.com +webview-assets.aws-cloud9.us-east-1.amazonaws.com +vfs.cloud9.us-east-1.amazonaws.com +webview-assets.cloud9.us-east-1.amazonaws.com +webview-assets.aws-cloud9.us-east-2.amazonaws.com +vfs.cloud9.us-east-2.amazonaws.com +webview-assets.cloud9.us-east-2.amazonaws.com +webview-assets.aws-cloud9.us-west-1.amazonaws.com +vfs.cloud9.us-west-1.amazonaws.com +webview-assets.cloud9.us-west-1.amazonaws.com +webview-assets.aws-cloud9.us-west-2.amazonaws.com +vfs.cloud9.us-west-2.amazonaws.com +webview-assets.cloud9.us-west-2.amazonaws.com + +// AWS Elastic Beanstalk +// Submitted by Luke Wells +// Reference: aa202394-43a0-4857-b245-8db04549137e cn-north-1.eb.amazonaws.com.cn cn-northwest-1.eb.amazonaws.com.cn elasticbeanstalk.com @@ -10738,71 +11525,24 @@ us-gov-west-1.elasticbeanstalk.com us-west-1.elasticbeanstalk.com us-west-2.elasticbeanstalk.com -// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/ +// (AWS) Elastic Load Balancing // Submitted by Luke Wells -*.elb.amazonaws.com +// Reference: 12a3d528-1bac-4433-a359-a395867ffed2 *.elb.amazonaws.com.cn +*.elb.amazonaws.com -// Amazon Global Accelerator : https://aws.amazon.com/global-accelerator/ +// AWS Global Accelerator // Submitted by Daniel Massaguer +// Reference: d916759d-a08b-4241-b536-4db887383a6a awsglobalaccelerator.com -// Amazon S3 : https://aws.amazon.com/s3/ -// Submitted by Luke Wells -s3.amazonaws.com -s3-ap-northeast-1.amazonaws.com -s3-ap-northeast-2.amazonaws.com -s3-ap-south-1.amazonaws.com -s3-ap-southeast-1.amazonaws.com -s3-ap-southeast-2.amazonaws.com -s3-ca-central-1.amazonaws.com -s3-eu-central-1.amazonaws.com -s3-eu-west-1.amazonaws.com -s3-eu-west-2.amazonaws.com -s3-eu-west-3.amazonaws.com -s3-external-1.amazonaws.com -s3-fips-us-gov-west-1.amazonaws.com -s3-sa-east-1.amazonaws.com -s3-us-gov-west-1.amazonaws.com -s3-us-east-2.amazonaws.com -s3-us-west-1.amazonaws.com -s3-us-west-2.amazonaws.com -s3.ap-northeast-2.amazonaws.com -s3.ap-south-1.amazonaws.com -s3.cn-north-1.amazonaws.com.cn -s3.ca-central-1.amazonaws.com -s3.eu-central-1.amazonaws.com -s3.eu-west-2.amazonaws.com -s3.eu-west-3.amazonaws.com -s3.us-east-2.amazonaws.com -s3.dualstack.ap-northeast-1.amazonaws.com -s3.dualstack.ap-northeast-2.amazonaws.com -s3.dualstack.ap-south-1.amazonaws.com -s3.dualstack.ap-southeast-1.amazonaws.com -s3.dualstack.ap-southeast-2.amazonaws.com -s3.dualstack.ca-central-1.amazonaws.com -s3.dualstack.eu-central-1.amazonaws.com -s3.dualstack.eu-west-1.amazonaws.com -s3.dualstack.eu-west-2.amazonaws.com -s3.dualstack.eu-west-3.amazonaws.com -s3.dualstack.sa-east-1.amazonaws.com -s3.dualstack.us-east-1.amazonaws.com -s3.dualstack.us-east-2.amazonaws.com -s3-website-us-east-1.amazonaws.com -s3-website-us-west-1.amazonaws.com -s3-website-us-west-2.amazonaws.com -s3-website-ap-northeast-1.amazonaws.com -s3-website-ap-southeast-1.amazonaws.com -s3-website-ap-southeast-2.amazonaws.com -s3-website-eu-west-1.amazonaws.com -s3-website-sa-east-1.amazonaws.com -s3-website.ap-northeast-2.amazonaws.com -s3-website.ap-south-1.amazonaws.com -s3-website.ca-central-1.amazonaws.com -s3-website.eu-central-1.amazonaws.com -s3-website.eu-west-2.amazonaws.com -s3-website.eu-west-3.amazonaws.com -s3-website.us-east-2.amazonaws.com +// eero +// Submitted by Yue Kang +// Reference: 264afe70-f62c-4c02-8ab9-b5281ed24461 +eero.online +eero-stage.online + +// concludes Amazon // Amune : https://amune.org/ // Submitted by Team Amune @@ -10859,6 +11599,10 @@ cdn.prod.atlassian-dev.net // Submitted by Lukas Reschke translated.page +// Autocode : https://autocode.com +// Submitted by Jacob Lee +autocode.dev + // AVM : https://avm.de // Submitted by Andreas Weise myfritz.net @@ -10912,6 +11656,10 @@ theshop.jp shopselect.net base.shop +// BeagleBoard.org Foundation : https://beagleboard.org +// Submitted by Jason Kridner +beagleboard.io + // Beget Ltd // Submitted by Lev Nekrasov *.beget.app @@ -10983,6 +11731,11 @@ cafjs.com // Submitted by Marcus Popp mycd.eu +// Canva Pty Ltd : https://canva.com/ +// Submitted by Joel Aquilina +canva-apps.cn +canva-apps.com + // Carrd : https://carrd.co // Submitted by AJ drr.ac @@ -11112,8 +11865,11 @@ cloudcontrolapp.com // Cloudflare, Inc. : https://www.cloudflare.com/ // Submitted by Cloudflare Team -pages.dev +cf-ipfs.com +cloudflare-ipfs.com trycloudflare.com +pages.dev +r2.dev workers.dev // Clovyr : https://clovyr.io @@ -11690,10 +12446,10 @@ dynv6.net // Submitted by Vladimir Dudr e4.cz -// eero : https://eero.com/ -// Submitted by Yue Kang -eero.online -eero-stage.online +// Easypanel : https://easypanel.io +// Submitted by Andrei Canta +easypanel.app +easypanel.host // Elementor : Elementor Ltd. // Submitted by Anton Barkan @@ -11897,6 +12653,7 @@ u.channelsdvr.net // Fastly Inc. : http://www.fastly.com/ // Submitted by Fastly Security edgecompute.app +fastly-edge.com fastly-terrarium.com fastlylb.net map.fastlylb.net @@ -11908,6 +12665,10 @@ a.ssl.fastly.net b.ssl.fastly.net global.ssl.fastly.net +// Fastmail : https://www.fastmail.com/ +// Submitted by Marc Bradshaw +*.user.fm + // FASTVPS EESTI OU : https://fastvps.ru/ // Submitted by Likhachev Vasiliy fastvps-server.com @@ -12377,7 +13138,6 @@ herokussl.com // Hibernating Rhinos // Submitted by Oren Eini ravendb.cloud -myravendb.com ravendb.community ravendb.me development.run @@ -12408,6 +13168,10 @@ ngo.ng edu.scot sch.so +// HostFly : https://www.ie.ua +// Submitted by Bohdan Dub +ie.ua + // HostyHosting (hostyhosting.com) hostyhosting.io @@ -12526,7 +13290,6 @@ iobb.net // Submitted by Ihor Kolodyuk mel.cloudlets.com.au cloud.interhostsolutions.be -users.scale.virtualcloud.com.br mycloud.by alp1.ae.flow.ch appengine.flow.ch @@ -12550,9 +13313,7 @@ ch.trendhosting.cloud de.trendhosting.cloud jele.club amscompute.com -clicketcloud.com dopaas.com -hidora.com paas.hosted-by-previder.com rag-cloud.hosteur.com rag-cloud-ch.hosteur.com @@ -12865,6 +13626,8 @@ azure-mobile.net cloudapp.net azurestaticapps.net 1.azurestaticapps.net +2.azurestaticapps.net +3.azurestaticapps.net centralus.azurestaticapps.net eastasia.azurestaticapps.net eastus2.azurestaticapps.net @@ -12917,25 +13680,6 @@ cust.retrosnub.co.uk // Submitted by Paulus Schoutsen ui.nabu.casa -// Names.of.London : https://names.of.london/ -// Submitted by James Stevens or -pony.club -of.fashion -in.london -of.london -from.marketing -with.marketing -for.men -repair.men -and.mom -for.mom -for.one -under.one -for.sale -that.win -from.work -to.work - // Net at Work Gmbh : https://www.netatwork.de // Submitted by Jan Jaeschke cloud.nospamproxy.com @@ -12950,7 +13694,19 @@ netlify.app // ngrok : https://ngrok.com/ // Submitted by Alan Shreve +ngrok.app +ngrok-free.app +ngrok.dev +ngrok-free.dev ngrok.io +ap.ngrok.io +au.ngrok.io +eu.ngrok.io +in.ngrok.io +jp.ngrok.io +sa.ngrok.io +us.ngrok.io +ngrok.pizza // Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/ // Submitted by Nicholas Ford @@ -13132,7 +13888,26 @@ omniwe.site // One.com: https://www.one.com/ // Submitted by Jacob Bunk Nielsen +123hjemmeside.dk +123hjemmeside.no +123homepage.it +123kotisivu.fi +123minsida.se +123miweb.es +123paginaweb.pt +123sait.ru +123siteweb.fr +123webseite.at +123webseite.de +123website.be +123website.ch +123website.lu +123website.nl service.one +simplesite.com +simplesite.com.br +simplesite.gr +simplesite.pl // One Fold Media : http://www.onefoldmedia.com/ // Submitted by Eddie Jones @@ -13328,6 +14103,10 @@ qoto.io // Submitted by Xavier De Cock qualifioapp.com +// Quality Unit: https://qualityunit.com +// Submitted by Vasyl Tsalko +ladesk.com + // QuickBackend: https://www.quickbackend.com // Submitted by Dani Biro qbuser.com @@ -13401,7 +14180,9 @@ app.render.com onrender.com // Repl.it : https://repl.it -// Submitted by Mason Clayton +// Submitted by Lincoln Bergeson +firewalledreplit.co +id.firewalledreplit.co repl.co id.repl.co repl.run @@ -13449,6 +14230,56 @@ rocky.page спб.рус я.рус +// SAKURA Internet Inc. : https://www.sakura.ad.jp/ +// Submitted by Internet Service Department +180r.com +dojin.com +sakuratan.com +sakuraweb.com +x0.com +2-d.jp +bona.jp +crap.jp +daynight.jp +eek.jp +flop.jp +halfmoon.jp +jeez.jp +matrix.jp +mimoza.jp +ivory.ne.jp +mail-box.ne.jp +mints.ne.jp +mokuren.ne.jp +opal.ne.jp +sakura.ne.jp +sumomo.ne.jp +topaz.ne.jp +netgamers.jp +nyanta.jp +o0o0.jp +rdy.jp +rgr.jp +rulez.jp +s3.isk01.sakurastorage.jp +s3.isk02.sakurastorage.jp +saloon.jp +sblo.jp +skr.jp +tank.jp +uh-oh.jp +undo.jp +rs.webaccel.jp +user.webaccel.jp +websozai.jp +xii.jp +squares.net +jpn.org +kirara.st +x0.to +from.tv +sakura.tv + // Salesforce.com, Inc. https://salesforce.com/ // Submitted by Michael Biven *.builder.code.com @@ -13599,6 +14430,13 @@ small-web.org // Submitted by Dan Kozak vp4.me +// Snowflake Inc : https://www.snowflake.com/ +// Submitted by Faith Olapade +snowflake.app +privatelink.snowflake.app +streamlit.app +streamlitapp.com + // Snowplow Analytics : https://snowplowanalytics.com/ // Submitted by Ian Streeter try-snowplow.com @@ -13677,6 +14515,10 @@ myspreadshop.co.uk // Submitted by Jacob Lee api.stdlib.com +// Storipress : https://storipress.com +// Submitted by Benno Liu +storipress.app + // Storj Labs Inc. : https://storj.io/ // Submitted by Philip Hutchins storj.farm @@ -13732,6 +14574,8 @@ direct.quickconnect.to // Tabit Technologies Ltd. : https://tabit.cloud/ // Submitted by Oren Agiv tabitorder.co.il +mytabit.co.il +mytabit.com // TAIFUN Software AG : http://taifun-software.de // Submitted by Bjoern Henke @@ -13764,10 +14608,6 @@ telebit.app telebit.io *.telebit.xyz -// The Gwiddle Foundation : https://gwiddlefoundation.org.uk -// Submitted by Joshua Bayfield -gwiddle.co.uk - // Thingdust AG : https://thingdust.com/ // Submitted by Adrian Imboden *.firenet.ch @@ -13802,10 +14642,6 @@ pages.torproject.net bloxcms.com townnews-staging.com -// TradableBits: https://tradablebits.com -// Submitted by Dmitry Khrisanov dmitry@tradablebits.com -tbits.me - // TrafficPlex GmbH : https://www.trafficplex.de/ // Submitted by Phillipp Röll 12hp.at @@ -13878,6 +14714,10 @@ hk.org ltd.hk inc.hk +// UK Intis Telecom LTD : https://it.com +// Submitted by ITComdomains +it.com + // UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ // see also: whois -h whois.udr.org.yt help // Submitted by Atanunu Igbunuroghene diff --git a/netwerk/sctp/sctp_update.log b/netwerk/sctp/sctp_update.log index 229c7b9571..92f7884f20 100644 --- a/netwerk/sctp/sctp_update.log +++ b/netwerk/sctp/sctp_update.log @@ -16,3 +16,6 @@ sctp updated to version 8443 from SVN on Sun Mar 31 09:05:07 EDT 2013 sctp updated to version 8815 from SVN on Tue Mar 4 08:50:51 EST 2014 sctp updated to version 9168 from SVN on Tue Mar 3 12:11:40 EST 2015 sctp updated to version 9209 from SVN on Tue Mar 24 18:11:59 EDT 2015 +sctp updated to version 0e076261b832121cf120ddc04aaff87ac3a34d30 from git on Tue Nov 28 15:20:51 EST 2017 +sctp updated to version ea345b6d0c8a0f8701cf49445dba5ec8d34e2305 from git on Tue 30 Jun 14:01:18 CEST 2020 +sctp updated to version 8e12cd9e01fc94d2e84ea1afa351c845966e116e from git on Mon Oct 17 10:23:01 CDT 2022 diff --git a/netwerk/sctp/src/netinet/sctp.h b/netwerk/sctp/src/netinet/sctp.h index 292cb7ca7f..203f6f1f6a 100755 --- a/netwerk/sctp/src/netinet/sctp.h +++ b/netwerk/sctp/src/netinet/sctp.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,22 +32,20 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp.h 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_H_ #define _NETINET_SCTP_H_ -#if (defined(__APPLE__) || defined(__Userspace_os_Linux) || defined(__Userspace_os_Darwin)) +#if defined(__APPLE__) || defined(__linux__) #include #endif - #include - -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #define SCTP_PACKED __attribute__((packed)) #else #pragma pack (push, 1) @@ -139,6 +139,7 @@ struct sctp_paramhdr { #define SCTP_NRSACK_SUPPORTED 0x00000030 #define SCTP_PKTDROP_SUPPORTED 0x00000031 #define SCTP_MAX_CWND 0x00000032 +#define SCTP_ACCEPT_ZERO_CHECKSUM 0x00000033 /* * read-only options @@ -189,7 +190,6 @@ struct sctp_paramhdr { #define SCTP_STREAM_RESET_INCOMING 0x00000001 #define SCTP_STREAM_RESET_OUTGOING 0x00000002 - /* here on down are more implementation specific */ #define SCTP_SET_DEBUG_LEVEL 0x00001005 #define SCTP_CLR_STAT_LOG 0x00001007 @@ -202,13 +202,15 @@ struct sctp_paramhdr { #define SCTP_PLUGGABLE_SS 0x00001203 #define SCTP_SS_VALUE 0x00001204 #define SCTP_CC_OPTION 0x00001205 /* Options for CC modules */ +/* For I-DATA */ +#define SCTP_INTERLEAVING_SUPPORTED 0x00001206 + /* read only */ #define SCTP_GET_SNDBUF_USE 0x00001101 #define SCTP_GET_STAT_LOG 0x00001103 #define SCTP_PCB_STATUS 0x00001104 #define SCTP_GET_NONCE_VALUES 0x00001105 - /* Special hook for dynamically setting primary for all assoc's, * this is a write only option that requires root privilege. */ @@ -281,11 +283,11 @@ struct sctp_paramhdr { #define SCTP_PEELOFF 0x0000800a /* the real worker for sctp_getaddrlen() */ #define SCTP_GET_ADDR_LEN 0x0000800b -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) /* temporary workaround for Apple listen() issue, no args used */ #define SCTP_LISTEN_FIX 0x0000800c #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) /* workaround for Cygwin on Windows: returns the SOCKET handle */ #define SCTP_GET_HANDLE 0x0000800d #endif @@ -331,7 +333,6 @@ struct sctp_paramhdr { /* First-come, first-serve */ #define SCTP_SS_FIRST_COME 0x00000005 - /* fragment interleave constants * setting must be one of these or * EINVAL returned. @@ -402,33 +403,32 @@ struct sctp_error_cause { } SCTP_PACKED; struct sctp_error_invalid_stream { - struct sctp_error_cause cause; /* code=SCTP_ERROR_INVALID_STREAM */ + struct sctp_error_cause cause; /* code=SCTP_CAUSE_INVALID_STREAM */ uint16_t stream_id; /* stream id of the DATA in error */ uint16_t reserved; } SCTP_PACKED; struct sctp_error_missing_param { - struct sctp_error_cause cause; /* code=SCTP_ERROR_MISSING_PARAM */ + struct sctp_error_cause cause; /* code=SCTP_CAUSE_MISSING_PARAM */ uint32_t num_missing_params; /* number of missing parameters */ - /* uint16_t param_type's follow */ + uint16_t type[]; } SCTP_PACKED; struct sctp_error_stale_cookie { - struct sctp_error_cause cause; /* code=SCTP_ERROR_STALE_COOKIE */ + struct sctp_error_cause cause; /* code=SCTP_CAUSE_STALE_COOKIE */ uint32_t stale_time; /* time in usec of staleness */ } SCTP_PACKED; struct sctp_error_out_of_resource { - struct sctp_error_cause cause; /* code=SCTP_ERROR_OUT_OF_RESOURCES */ + struct sctp_error_cause cause; /* code=SCTP_CAUSE_OUT_OF_RESOURCES */ } SCTP_PACKED; struct sctp_error_unresolv_addr { - struct sctp_error_cause cause; /* code=SCTP_ERROR_UNRESOLVABLE_ADDR */ - + struct sctp_error_cause cause; /* code=SCTP_CAUSE_UNRESOLVABLE_ADDR */ } SCTP_PACKED; struct sctp_error_unrecognized_chunk { - struct sctp_error_cause cause; /* code=SCTP_ERROR_UNRECOG_CHUNK */ + struct sctp_error_cause cause; /* code=SCTP_CAUSE_UNRECOG_CHUNK */ struct sctp_chunkhdr ch;/* header from chunk in error */ } SCTP_PACKED; @@ -437,6 +437,11 @@ struct sctp_error_no_user_data { uint32_t tsn; /* TSN of the empty data chunk */ } SCTP_PACKED; +struct sctp_error_auth_invalid_hmac { + struct sctp_error_cause cause; /* code=SCTP_CAUSE_UNSUPPORTED_HMACID */ + uint16_t hmac_id; +} SCTP_PACKED; + /* * Main SCTP chunk types we place these here so natd and f/w's in user land * can find them. @@ -462,6 +467,7 @@ struct sctp_error_no_user_data { /* EY nr_sack chunk id*/ #define SCTP_NR_SELECTIVE_ACK 0x10 /************0x40 series ***********/ +#define SCTP_IDATA 0x40 /************0x80 series ***********/ /* RFC5061 */ #define SCTP_ASCONF_ACK 0x80 @@ -477,7 +483,7 @@ struct sctp_error_no_user_data { #define SCTP_FORWARD_CUM_TSN 0xc0 /* RFC5061 */ #define SCTP_ASCONF 0xc1 - +#define SCTP_IFORWARD_CUM_TSN 0xc2 /* ABORT and SHUTDOWN COMPLETE FLAG */ #define SCTP_HAD_NO_TCB 0x01 @@ -520,6 +526,7 @@ struct sctp_error_no_user_data { #define SCTP_PCB_FLAGS_BOUNDALL 0x00000004 #define SCTP_PCB_FLAGS_ACCEPTING 0x00000008 #define SCTP_PCB_FLAGS_UNBOUND 0x00000010 +#define SCTP_PCB_FLAGS_SND_ITERATOR_UP 0x00000020 #define SCTP_PCB_FLAGS_CLOSE_IP 0x00040000 #define SCTP_PCB_FLAGS_WAS_CONNECTED 0x00080000 #define SCTP_PCB_FLAGS_WAS_ABORTED 0x00100000 @@ -561,7 +568,6 @@ struct sctp_error_no_user_data { #define SCTP_PCB_FLAGS_INTERLEAVE_STRMS 0x0000000000000010 #define SCTP_PCB_FLAGS_DO_ASCONF 0x0000000000000020 #define SCTP_PCB_FLAGS_AUTO_ASCONF 0x0000000000000040 -#define SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE 0x0000000000000080 /* socket options */ #define SCTP_PCB_FLAGS_NODELAY 0x0000000000000100 #define SCTP_PCB_FLAGS_AUTOCLOSE 0x0000000000000200 @@ -602,8 +608,8 @@ struct sctp_error_no_user_data { /* Largest PMTU allowed when disabling PMTU discovery */ #define SCTP_LARGEST_PMTU 65536 -#if defined(__Userspace_os_Windows) -#pragma pack() +#if defined(_WIN32) +#pragma pack(pop) #endif #undef SCTP_PACKED @@ -621,9 +627,9 @@ struct sctp_error_no_user_data { */ #define SCTP_MAX_SACK_DELAY 500 /* per RFC4960 */ #define SCTP_MAX_HB_INTERVAL 14400000 /* 4 hours in ms */ +#define SCTP_MIN_COOKIE_LIFE 1000 /* 1 second in ms */ #define SCTP_MAX_COOKIE_LIFE 3600000 /* 1 hour in ms */ - /* Types of logging/KTR tracing that can be enabled via the * sysctl net.inet.sctp.sctp_logging. You must also enable * SUBSYS tracing. diff --git a/netwerk/sctp/src/netinet/sctp_asconf.c b/netwerk/sctp/src/netinet/sctp_asconf.c index 438879885e..6c5d296893 100755 --- a/netwerk/sctp/src/netinet/sctp_asconf.c +++ b/netwerk/sctp/src/netinet/sctp_asconf.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,17 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(_WIN32) +// Needed for unified build so that rand_s is available to all unified +// sources. +#if !defined(_CRT_RAND_S) && !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define _CRT_RAND_S +#endif +#endif + +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_asconf.c 277347 2015-01-18 20:53:20Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -51,10 +61,6 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_asconf.c 277347 2015-01-18 20:53:20Z t * SCTP_DEBUG_ASCONF2: detailed info */ -#if defined(__APPLE__) -#define APPLE_FILE_NO 1 -#endif - /* * RFC 5061 * @@ -103,47 +109,52 @@ sctp_asconf_success_response(uint32_t id) static struct mbuf * sctp_asconf_error_response(uint32_t id, uint16_t cause, uint8_t *error_tlv, - uint16_t tlv_length) + uint16_t tlv_length) { struct mbuf *m_reply = NULL; struct sctp_asconf_paramhdr *aph; struct sctp_error_cause *error; + uint32_t buf_len; + uint16_t i, param_length, cause_length, padding_length; uint8_t *tlv; - m_reply = sctp_get_mbuf_for_msg((sizeof(struct sctp_asconf_paramhdr) + - tlv_length + - sizeof(struct sctp_error_cause)), - 0, M_NOWAIT, 1, MT_DATA); + if (error_tlv == NULL) { + tlv_length = 0; + } + cause_length = sizeof(struct sctp_error_cause) + tlv_length; + param_length = sizeof(struct sctp_asconf_paramhdr) + cause_length; + padding_length = tlv_length % 4; + if (padding_length != 0) { + padding_length = 4 - padding_length; + } + buf_len = param_length + padding_length; + if (buf_len > MLEN) { + SCTPDBG(SCTP_DEBUG_ASCONF1, + "asconf_error_response: tlv_length (%xh) too big\n", + tlv_length); + return (NULL); + } + m_reply = sctp_get_mbuf_for_msg(buf_len, 0, M_NOWAIT, 1, MT_DATA); if (m_reply == NULL) { SCTPDBG(SCTP_DEBUG_ASCONF1, "asconf_error_response: couldn't get mbuf!\n"); return (NULL); } aph = mtod(m_reply, struct sctp_asconf_paramhdr *); - error = (struct sctp_error_cause *)(aph + 1); - - aph->correlation_id = id; aph->ph.param_type = htons(SCTP_ERROR_CAUSE_IND); + aph->ph.param_length = htons(param_length); + aph->correlation_id = id; + error = (struct sctp_error_cause *)(aph + 1); error->code = htons(cause); - error->length = tlv_length + sizeof(struct sctp_error_cause); - aph->ph.param_length = error->length + - sizeof(struct sctp_asconf_paramhdr); - - if (aph->ph.param_length > MLEN) { - SCTPDBG(SCTP_DEBUG_ASCONF1, - "asconf_error_response: tlv_length (%xh) too big\n", - tlv_length); - sctp_m_freem(m_reply); /* discard */ - return (NULL); - } + error->length = htons(cause_length); if (error_tlv != NULL) { tlv = (uint8_t *) (error + 1); memcpy(tlv, error_tlv, tlv_length); + for (i = 0; i < padding_length; i++) { + tlv[tlv_length + i] = 0; + } } - SCTP_BUF_LEN(m_reply) = aph->ph.param_length; - error->length = htons(error->length); - aph->ph.param_length = htons(aph->ph.param_length); - + SCTP_BUF_LEN(m_reply) = buf_len; return (m_reply); } @@ -172,10 +183,16 @@ sctp_process_asconf_add_ip(struct sockaddr *src, struct sctp_asconf_paramhdr *ap #endif aparam_length = ntohs(aph->ph.param_length); + if (aparam_length < sizeof(struct sctp_asconf_paramhdr) + sizeof(struct sctp_paramhdr)) { + return (NULL); + } ph = (struct sctp_paramhdr *)(aph + 1); param_type = ntohs(ph->param_type); #if defined(INET) || defined(INET6) param_length = ntohs(ph->param_length); + if (param_length + sizeof(struct sctp_asconf_paramhdr) != aparam_length) { + return (NULL); + } #endif sa = &store.sa; switch (param_type) { @@ -187,7 +204,7 @@ sctp_process_asconf_add_ip(struct sockaddr *src, struct sctp_asconf_paramhdr *ap } v4addr = (struct sctp_ipv4addr_param *)ph; sin = &store.sin; - bzero(sin, sizeof(*sin)); + memset(sin, 0, sizeof(*sin)); sin->sin_family = AF_INET; #ifdef HAVE_SIN_LEN sin->sin_len = sizeof(struct sockaddr_in); @@ -212,7 +229,7 @@ sctp_process_asconf_add_ip(struct sockaddr *src, struct sctp_asconf_paramhdr *ap } v6addr = (struct sctp_ipv6addr_param *)ph; sin6 = &store.sin6; - bzero(sin6, sizeof(*sin6)); + memset(sin6, 0, sizeof(*sin6)); sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN sin6->sin6_len = sizeof(struct sockaddr_in6); @@ -243,30 +260,34 @@ sctp_process_asconf_add_ip(struct sockaddr *src, struct sctp_asconf_paramhdr *ap "process_asconf_add_ip: using source addr "); SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, src); } + net = NULL; /* add the address */ if (bad_address) { m_reply = sctp_asconf_error_response(aph->correlation_id, SCTP_CAUSE_INVALID_PARAM, (uint8_t *) aph, aparam_length); - } else if (sctp_add_remote_addr(stcb, sa, &net, SCTP_DONOT_SETSCOPE, - SCTP_ADDR_DYNAMIC_ADDED) != 0) { + } else if (sctp_add_remote_addr(stcb, sa, &net, stcb->asoc.port, + SCTP_DONOT_SETSCOPE, + SCTP_ADDR_DYNAMIC_ADDED) != 0) { SCTPDBG(SCTP_DEBUG_ASCONF1, "process_asconf_add_ip: error adding address\n"); m_reply = sctp_asconf_error_response(aph->correlation_id, SCTP_CAUSE_RESOURCE_SHORTAGE, (uint8_t *) aph, aparam_length); } else { - /* notify upper layer */ - sctp_ulp_notify(SCTP_NOTIFY_ASCONF_ADD_IP, stcb, 0, sa, SCTP_SO_NOT_LOCKED); if (response_required) { m_reply = sctp_asconf_success_response(aph->correlation_id); } - sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, stcb->sctp_ep, stcb, net); - sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, - stcb, net); - if (send_hb) { - sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); + if (net != NULL) { + /* notify upper layer */ + sctp_ulp_notify(SCTP_NOTIFY_ASCONF_ADD_IP, stcb, 0, sa, SCTP_SO_NOT_LOCKED); + sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, stcb->sctp_ep, stcb, net); + sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, + stcb, net); + if (send_hb) { + sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); + } } } return (m_reply); @@ -275,7 +296,7 @@ sctp_process_asconf_add_ip(struct sockaddr *src, struct sctp_asconf_paramhdr *ap static int sctp_asconf_del_remote_addrs_except(struct sctp_tcb *stcb, struct sockaddr *src) { - struct sctp_nets *src_net, *net; + struct sctp_nets *src_net, *net, *nnet; /* make sure the source address exists as a destination net */ src_net = sctp_findnet(stcb, src); @@ -285,10 +306,9 @@ sctp_asconf_del_remote_addrs_except(struct sctp_tcb *stcb, struct sockaddr *src) } /* delete all destination addresses except the source */ - TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { + TAILQ_FOREACH_SAFE(net, &stcb->asoc.nets, sctp_next, nnet) { if (net != src_net) { /* delete this address */ - sctp_remove_net(stcb, net); SCTPDBG(SCTP_DEBUG_ASCONF1, "asconf_del_remote_addrs_except: deleting "); SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, @@ -296,6 +316,7 @@ sctp_asconf_del_remote_addrs_except(struct sctp_tcb *stcb, struct sockaddr *src) /* notify upper layer */ sctp_ulp_notify(SCTP_NOTIFY_ASCONF_DELETE_IP, stcb, 0, (struct sockaddr *)&net->ro._l_addr, SCTP_SO_NOT_LOCKED); + sctp_remove_net(stcb, net); } } return (0); @@ -326,10 +347,16 @@ sctp_process_asconf_delete_ip(struct sockaddr *src, #endif aparam_length = ntohs(aph->ph.param_length); + if (aparam_length < sizeof(struct sctp_asconf_paramhdr) + sizeof(struct sctp_paramhdr)) { + return (NULL); + } ph = (struct sctp_paramhdr *)(aph + 1); param_type = ntohs(ph->param_type); #if defined(INET) || defined(INET6) param_length = ntohs(ph->param_length); + if (param_length + sizeof(struct sctp_asconf_paramhdr) != aparam_length) { + return (NULL); + } #endif sa = &store.sa; switch (param_type) { @@ -341,7 +368,7 @@ sctp_process_asconf_delete_ip(struct sockaddr *src, } v4addr = (struct sctp_ipv4addr_param *)ph; sin = &store.sin; - bzero(sin, sizeof(*sin)); + memset(sin, 0, sizeof(*sin)); sin->sin_family = AF_INET; #ifdef HAVE_SIN_LEN sin->sin_len = sizeof(struct sockaddr_in); @@ -363,7 +390,7 @@ sctp_process_asconf_delete_ip(struct sockaddr *src, } v6addr = (struct sctp_ipv6addr_param *)ph; sin6 = &store.sin6; - bzero(sin6, sizeof(*sin6)); + memset(sin6, 0, sizeof(*sin6)); sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN sin6->sin6_len = sizeof(struct sockaddr_in6); @@ -461,10 +488,16 @@ sctp_process_asconf_set_primary(struct sockaddr *src, #endif aparam_length = ntohs(aph->ph.param_length); + if (aparam_length < sizeof(struct sctp_asconf_paramhdr) + sizeof(struct sctp_paramhdr)) { + return (NULL); + } ph = (struct sctp_paramhdr *)(aph + 1); param_type = ntohs(ph->param_type); #if defined(INET) || defined(INET6) param_length = ntohs(ph->param_length); + if (param_length + sizeof(struct sctp_asconf_paramhdr) != aparam_length) { + return (NULL); + } #endif sa = &store.sa; switch (param_type) { @@ -476,7 +509,7 @@ sctp_process_asconf_set_primary(struct sockaddr *src, } v4addr = (struct sctp_ipv4addr_param *)ph; sin = &store.sin; - bzero(sin, sizeof(*sin)); + memset(sin, 0, sizeof(*sin)); sin->sin_family = AF_INET; #ifdef HAVE_SIN_LEN sin->sin_len = sizeof(struct sockaddr_in); @@ -496,7 +529,7 @@ sctp_process_asconf_set_primary(struct sockaddr *src, } v6addr = (struct sctp_ipv6addr_param *)ph; sin6 = &store.sin6; - bzero(sin6, sizeof(*sin6)); + memset(sin6, 0, sizeof(*sin6)); sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN sin6->sin6_len = sizeof(struct sockaddr_in6); @@ -530,8 +563,8 @@ sctp_process_asconf_set_primary(struct sockaddr *src, /* notify upper layer */ sctp_ulp_notify(SCTP_NOTIFY_ASCONF_SET_PRIMARY, stcb, 0, sa, SCTP_SO_NOT_LOCKED); if ((stcb->asoc.primary_destination->dest_state & SCTP_ADDR_REACHABLE) && - (!(stcb->asoc.primary_destination->dest_state & SCTP_ADDR_PF)) && - (stcb->asoc.alternate)) { + ((stcb->asoc.primary_destination->dest_state & SCTP_ADDR_PF) == 0) && + (stcb->asoc.alternate != NULL)) { sctp_free_remote_addr(stcb->asoc.alternate); stcb->asoc.alternate = NULL; } @@ -559,8 +592,9 @@ sctp_process_asconf_set_primary(struct sockaddr *src, SCTP_MOBILITY_PRIM_DELETED) && (stcb->asoc.primary_destination->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { - - sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_TIMER+SCTP_LOC_7); + sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_1); if (sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_FASTHANDOFF)) { sctp_assoc_immediate_retrans(stcb, @@ -571,8 +605,7 @@ sctp_process_asconf_set_primary(struct sockaddr *src, sctp_move_chunks_from_net(stcb, stcb->asoc.deleted_primary); } - sctp_delete_prim_timer(stcb->sctp_ep, stcb, - stcb->asoc.deleted_primary); + sctp_delete_prim_timer(stcb->sctp_ep, stcb); } } else { /* couldn't set the requested primary address! */ @@ -682,10 +715,11 @@ sctp_handle_asconf(struct mbuf *m, unsigned int offset, SCTPDBG(SCTP_DEBUG_ASCONF1, "handle_asconf: couldn't get lookup addr!\n"); /* respond with a missing/invalid mandatory parameter error */ + sctp_m_freem(m_ack); return; } - /* param_length is already validated in process_control... */ - offset += ntohs(p_addr->ph.param_length); /* skip lookup addr */ + /* skip lookup addr */ + offset += SCTP_SIZE32(ntohs(p_addr->ph.param_length)); /* get pointer to first asconf param in ASCONF */ aph = (struct sctp_asconf_paramhdr *)sctp_m_getptr(m, offset, sizeof(struct sctp_asconf_paramhdr), (uint8_t *)&aparam_buf); if (aph == NULL) { @@ -711,9 +745,10 @@ sctp_handle_asconf(struct mbuf *m, unsigned int offset, sctp_m_freem(m_ack); return; } - if (param_length <= sizeof(struct sctp_paramhdr)) { + if (param_length < sizeof(struct sctp_asconf_paramhdr)) { SCTPDBG(SCTP_DEBUG_ASCONF1, "handle_asconf: param length (%u) too short\n", param_length); sctp_m_freem(m_ack); + return; } /* get the entire parameter */ aph = (struct sctp_asconf_paramhdr *)sctp_m_getptr(m, offset, param_length, aparam_buf); @@ -769,8 +804,6 @@ sctp_handle_asconf(struct mbuf *m, unsigned int offset, if (m_result != NULL) { SCTP_BUF_NEXT(m_tail) = m_result; m_tail = m_result; - /* update lengths, make sure it's aligned too */ - SCTP_BUF_LEN(m_result) = SCTP_SIZE32(SCTP_BUF_LEN(m_result)); ack_cp->ch.chunk_length += SCTP_BUF_LEN(m_result); /* set flag to force success reports */ error = 1; @@ -924,13 +957,13 @@ sctp_addr_match(struct sctp_paramhdr *ph, struct sockaddr *sa) * Cleanup for non-responded/OP ERR'd ASCONF */ void -sctp_asconf_cleanup(struct sctp_tcb *stcb, struct sctp_nets *net) +sctp_asconf_cleanup(struct sctp_tcb *stcb) { /* * clear out any existing asconfs going out */ - sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_ASCONF+SCTP_LOC_2); + sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_2); stcb->asoc.asconf_seq_out_acked = stcb->asoc.asconf_seq_out; /* remove the old ASCONF on our outbound queue */ sctp_toss_old_asconf(stcb); @@ -966,8 +999,12 @@ sctp_asconf_nets_cleanup(struct sctp_tcb *stcb, struct sctp_ifn *ifn) ((ifn == NULL) || (SCTP_GET_IF_INDEX_FROM_ROUTE(&net->ro) != ifn->ifn_index))) { /* clear any cached route */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else RTFREE(net->ro.ro_rt); net->ro.ro_rt = NULL; +#endif } /* clear any cached source address */ if (net->src_addr_selected) { @@ -978,7 +1015,6 @@ sctp_asconf_nets_cleanup(struct sctp_tcb *stcb, struct sctp_ifn *ifn) } } - void sctp_assoc_immediate_retrans(struct sctp_tcb *stcb, struct sctp_nets *dstnet) { @@ -998,7 +1034,7 @@ sctp_assoc_immediate_retrans(struct sctp_tcb *stcb, struct sctp_nets *dstnet) SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, &stcb->asoc.primary_destination->ro._l_addr.sa); sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, stcb->asoc.deleted_primary, - SCTP_FROM_SCTP_TIMER+SCTP_LOC_8); + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_3); stcb->asoc.num_send_timers_up--; if (stcb->asoc.num_send_timers_up < 0) { stcb->asoc.num_send_timers_up = 0; @@ -1019,9 +1055,14 @@ sctp_assoc_immediate_retrans(struct sctp_tcb *stcb, struct sctp_nets *dstnet) (stcb->asoc.sent_queue_cnt > 0)) { struct sctp_tmit_chunk *chk; - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); - sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, chk->whoTo); + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); + } } } return; @@ -1038,7 +1079,7 @@ sctp_net_immediate_retrans(struct sctp_tcb *stcb, struct sctp_nets *net) SCTPDBG(SCTP_DEBUG_ASCONF1, "net_immediate_retrans: RTO is %d\n", net->RTO); sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_TIMER+SCTP_LOC_5); + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_4); stcb->asoc.cc_functions.sctp_set_initial_cc_param(stcb, net); net->error_count = 0; TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { @@ -1076,10 +1117,14 @@ sctp_path_check_and_react(struct sctp_tcb *stcb, struct sctp_ifa *newifa) if (addrnum == 1) { TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { /* clear any cached route and source address */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else if (net->ro.ro_rt) { RTFREE(net->ro.ro_rt); net->ro.ro_rt = NULL; } +#endif if (net->src_addr_selected) { sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; @@ -1095,13 +1140,17 @@ sctp_path_check_and_react(struct sctp_tcb *stcb, struct sctp_ifa *newifa) return; } - /* Multiple local addresses exsist in the association. */ + /* Multiple local addresses exist in the association. */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { /* clear any cached route and source address */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else if (net->ro.ro_rt) { RTFREE(net->ro.ro_rt); net->ro.ro_rt = NULL; } +#endif if (net->src_addr_selected) { sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; @@ -1114,8 +1163,13 @@ sctp_path_check_and_react(struct sctp_tcb *stcb, struct sctp_ifa *newifa) nexthop, the path will not be changed. */ SCTP_RTALLOC((sctp_route_t *)&net->ro, - stcb->sctp_ep->def_vrf_id); + stcb->sctp_ep->def_vrf_id, + stcb->sctp_ep->fibnum); +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (net->ro.ro_nh == NULL) +#else if (net->ro.ro_rt == NULL) +#endif continue; changed = 0; @@ -1155,7 +1209,7 @@ sctp_path_check_and_react(struct sctp_tcb *stcb, struct sctp_ifa *newifa) } } } -#endif /* __FreeBSD__ __APPLE__ __Userspace__ */ +#endif /* * process an ADD/DELETE IP ack from peer. @@ -1187,7 +1241,7 @@ sctp_asconf_addr_mgmt_ack(struct sctp_tcb *stcb, struct sctp_ifa *addr, uint32_t sctp_path_check_and_react(stcb, addr); return; } -#endif /* __FreeBSD__ __APPLE__ __Userspace__ */ +#endif /* clear any cached/topologically incorrect source addresses */ sctp_asconf_nets_cleanup(stcb, addr->ifn_p); } @@ -1321,7 +1375,6 @@ sctp_asconf_queue_mgmt(struct sctp_tcb *stcb, struct sctp_ifa *ifa, return (0); } - /* * add an asconf operation for the given ifa and type. * type = SCTP_ADD_IP_ADDRESS, SCTP_DEL_IP_ADDRESS, SCTP_SET_PRIM_ADDR. @@ -1334,6 +1387,7 @@ sctp_asconf_queue_add(struct sctp_tcb *stcb, struct sctp_ifa *ifa, { uint32_t status; int pending_delete_queued = 0; + int last; /* see if peer supports ASCONF */ if (stcb->asoc.asconf_supported == 0) { @@ -1344,15 +1398,21 @@ sctp_asconf_queue_add(struct sctp_tcb *stcb, struct sctp_ifa *ifa, * if this is deleting the last address from the assoc, mark it as * pending. */ - if ((type == SCTP_DEL_IP_ADDRESS) && !stcb->asoc.asconf_del_pending && - (sctp_local_addr_count(stcb) < 2)) { - /* set the pending delete info only */ - stcb->asoc.asconf_del_pending = 1; - stcb->asoc.asconf_addr_del_pending = ifa; - atomic_add_int(&ifa->refcount, 1); - SCTPDBG(SCTP_DEBUG_ASCONF2, - "asconf_queue_add: mark delete last address pending\n"); - return (-1); + if ((type == SCTP_DEL_IP_ADDRESS) && !stcb->asoc.asconf_del_pending) { + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { + last = (sctp_local_addr_count(stcb) == 0); + } else { + last = (sctp_local_addr_count(stcb) == 1); + } + if (last) { + /* set the pending delete info only */ + stcb->asoc.asconf_del_pending = 1; + stcb->asoc.asconf_addr_del_pending = ifa; + atomic_add_int(&ifa->refcount, 1); + SCTPDBG(SCTP_DEBUG_ASCONF2, + "asconf_queue_add: mark delete last address pending\n"); + return (-1); + } } /* queue an asconf parameter */ @@ -1367,7 +1427,7 @@ sctp_asconf_queue_add(struct sctp_tcb *stcb, struct sctp_ifa *ifa, if (sctp_asconf_queue_mgmt(stcb, stcb->asoc.asconf_addr_del_pending, SCTP_DEL_IP_ADDRESS) == 0) { - SCTPDBG(SCTP_DEBUG_ASCONF2, "asconf_queue_add: queing pending delete\n"); + SCTPDBG(SCTP_DEBUG_ASCONF2, "asconf_queue_add: queuing pending delete\n"); pending_delete_queued = 1; /* clear out the pending delete info */ stcb->asoc.asconf_del_pending = 0; @@ -1637,7 +1697,7 @@ sctp_asconf_ack_clear(struct sctp_tcb *stcb SCTP_UNUSED) { /* assume peer doesn't really know how to do asconfs */ /* XXX we could free the pending queue here */ - + } void @@ -1680,8 +1740,13 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, * abort the asoc, since someone probably just hijacked us... */ if (serial_num == (asoc->asconf_seq_out + 1)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + SCTPDBG(SCTP_DEBUG_ASCONF1, "handle_asconf_ack: got unexpected next serial number! Aborting asoc!\n"); - sctp_abort_an_association(stcb->sctp_ep, stcb, NULL, SCTP_SO_NOT_LOCKED); + SCTP_SNPRINTF(msg, sizeof(msg), "Never sent serial number %8.8x", serial_num); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); *abort_no_unlock = 1; return; } @@ -1694,8 +1759,8 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, if (serial_num == asoc->asconf_seq_out - 1) { /* stop our timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_ASCONF+SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_5); } /* process the ASCONF-ACK contents */ @@ -1720,7 +1785,7 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, sctp_asconf_ack_clear(stcb); return; } - if (param_length < sizeof(struct sctp_paramhdr)) { + if (param_length < sizeof(struct sctp_asconf_paramhdr)) { sctp_asconf_ack_clear(stcb); return; } @@ -1768,9 +1833,9 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, } /* switch */ /* update remaining ASCONF-ACK message length to process */ - ack_length -= SCTP_SIZE32(param_length); - if (ack_length <= 0) { - /* no more data in the mbuf chain */ + if (ack_length > SCTP_SIZE32(param_length)) { + ack_length -= SCTP_SIZE32(param_length); + } else { break; } offset += SCTP_SIZE32(param_length); @@ -1881,7 +1946,7 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, switch (ifa->address.sa.sa_family) { #ifdef INET6 case AF_INET6: -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &ifa->address.sin6.sin6_addr) != 0) { return; @@ -1891,7 +1956,7 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, #endif #ifdef INET case AF_INET: -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &ifa->address.sin.sin_addr) != 0) { return; @@ -1929,7 +1994,7 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, sin6 = &ifa->address.sin6; if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - /* we skip unspecifed addresses */ + /* we skip unspecified addresses */ return; } if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { @@ -1952,17 +2017,15 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, case AF_INET: { struct sockaddr_in *sin; - struct in6pcb *inp6; - inp6 = (struct in6pcb *)&inp->ip_inp.inp; /* invalid if we are a v6 only endpoint */ if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && - SCTP_IPV6_V6ONLY(inp6)) + SCTP_IPV6_V6ONLY(inp)) return; sin = &ifa->address.sin; if (sin->sin_addr.s_addr == 0) { - /* we skip unspecifed addresses */ + /* we skip unspecified addresses */ return; } if (stcb->asoc.scope.ipv4_local_scope == 0 && @@ -1990,7 +2053,8 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, * sent when the state goes open. */ if (status == 0 && - SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED))) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp, stcb, stcb->asoc.primary_destination); @@ -2002,7 +2066,6 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } } - int sctp_asconf_iterator_ep(struct sctp_inpcb *inp, void *ptr, uint32_t val SCTP_UNUSED) { @@ -2029,10 +2092,8 @@ sctp_asconf_iterator_ep(struct sctp_inpcb *inp, void *ptr, uint32_t val SCTP_UNU case AF_INET: { /* invalid if we are a v6 only endpoint */ - struct in6pcb *inp6; - inp6 = (struct in6pcb *)&inp->ip_inp.inp; if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && - SCTP_IPV6_V6ONLY(inp6)) { + SCTP_IPV6_V6ONLY(inp)) { cnt_invalid++; if (asc->cnt == cnt_invalid) return (1); @@ -2068,7 +2129,6 @@ sctp_asconf_iterator_ep_end(struct sctp_inpcb *inp, void *ptr, uint32_t val SCTP laddr->action = 0; break; } - } } else if (l->action == SCTP_DEL_IP_ADDRESS) { LIST_FOREACH_SAFE(laddr, &inp->sctp_addr_list, sctp_nxt_addr, nladdr) { @@ -2120,10 +2180,10 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } sin6 = &ifa->address.sin6; if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - /* we skip unspecifed addresses */ + /* we skip unspecified addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -2145,21 +2205,19 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, case AF_INET: { /* invalid if we are a v6 only endpoint */ - struct in6pcb *inp6; struct sockaddr_in *sin; - inp6 = (struct in6pcb *)&inp->ip_inp.inp; /* invalid if we are a v6 only endpoint */ if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && - SCTP_IPV6_V6ONLY(inp6)) + SCTP_IPV6_V6ONLY(inp)) continue; sin = &ifa->address.sin; if (sin->sin_addr.s_addr == 0) { - /* we skip unspecifed addresses */ + /* we skip unspecified addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -2170,7 +2228,7 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, continue; } if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && - SCTP_IPV6_V6ONLY(inp6)) { + SCTP_IPV6_V6ONLY(inp)) { cnt_invalid++; if (asc->cnt == cnt_invalid) return; @@ -2187,7 +2245,6 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, return; else continue; - break; } if (type == SCTP_ADD_IP_ADDRESS) { @@ -2196,18 +2253,19 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } else if (type == SCTP_DEL_IP_ADDRESS) { struct sctp_nets *net; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - sctp_rtentry_t *rt; - /* delete this address if cached */ if (net->ro._s_addr == ifa) { sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; net->src_addr_selected = 0; - rt = net->ro.ro_rt; - if (rt) { - RTFREE(rt); +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else + if (net->ro.ro_rt) { + RTFREE(net->ro.ro_rt); net->ro.ro_rt = NULL; } +#endif /* * Now we deleted our src address, * should we not also now reset the @@ -2216,7 +2274,6 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, */ stcb->asoc.cc_functions.sctp_set_initial_cc_param(stcb, net); net->RTO = 0; - } } } else if (type == SCTP_SET_PRIM_ADDR) { @@ -2242,7 +2299,8 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, * count of queued params. If in the non-open state, * these get sent when the assoc goes open. */ - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { if (status >= 0) { num_queued++; } @@ -2303,7 +2361,8 @@ sctp_set_primary_ip_address_sa(struct sctp_tcb *stcb, struct sockaddr *sa) "set_primary_ip_address_sa: queued on tcb=%p, ", (void *)stcb); SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, sa); - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, @@ -2321,38 +2380,6 @@ sctp_set_primary_ip_address_sa(struct sctp_tcb *stcb, struct sockaddr *sa) return (0); } -void -sctp_set_primary_ip_address(struct sctp_ifa *ifa) -{ - struct sctp_inpcb *inp; - - /* go through all our PCB's */ - LIST_FOREACH(inp, &SCTP_BASE_INFO(listhead), sctp_list) { - struct sctp_tcb *stcb; - - /* process for all associations for this endpoint */ - LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { - /* queue an ASCONF:SET_PRIM_ADDR to be sent */ - if (!sctp_asconf_queue_add(stcb, ifa, - SCTP_SET_PRIM_ADDR)) { - /* set primary queuing succeeded */ - SCTPDBG(SCTP_DEBUG_ASCONF1, "set_primary_ip_address: queued on stcb=%p, ", - (void *)stcb); - SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, &ifa->address.sa); - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { -#ifdef SCTP_TIMER_BASED_ASCONF - sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, - stcb->sctp_ep, stcb, - stcb->asoc.primary_destination); -#else - sctp_send_asconf(stcb, NULL, SCTP_ADDR_NOT_LOCKED); -#endif - } - } - } /* for each stcb */ - } /* for each inp */ -} - int sctp_is_addr_pending(struct sctp_tcb *stcb, struct sctp_ifa *sctp_ifa) { @@ -2475,10 +2502,10 @@ sctp_find_valid_localaddr(struct sctp_tcb *stcb, int addr_locked) sin = &sctp_ifa->address.sin; if (sin->sin_addr.s_addr == 0) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -2509,10 +2536,10 @@ sctp_find_valid_localaddr(struct sctp_tcb *stcb, int addr_locked) sin6 = &sctp_ifa->address.sin6; if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - /* we skip unspecifed addresses */ + /* we skip unspecified addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -2579,7 +2606,7 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) struct sctp_asconf_chunk *acp; struct sctp_asconf_paramhdr *aph; struct sctp_asconf_addr_param *aap; - uint32_t p_length; + uint32_t p_length, overhead; uint32_t correlation_id = 1; /* 0 is reserved... */ caddr_t ptr, lookup_ptr; uint8_t lookup_used = 0; @@ -2592,6 +2619,20 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) if (aa == NULL) return (NULL); + /* Consider IP header and SCTP common header. */ + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { + overhead = SCTP_MIN_OVERHEAD; + } else { + overhead = SCTP_MIN_V4_OVERHEAD; + } + /* Consider ASONF chunk. */ + overhead += sizeof(struct sctp_asconf_chunk); + /* Consider AUTH chunk. */ + overhead += sctp_get_auth_chunk_len(stcb->asoc.peer_hmac_id); + if (stcb->asoc.smallest_mtu <= overhead) { + /* MTU too small. */ + return (NULL); + } /* * get a chunk header mbuf and a cluster for the asconf params since * it's simpler to fill in the asconf chunk header lookup address on @@ -2601,21 +2642,21 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) if (m_asconf_chk == NULL) { /* no mbuf's */ SCTPDBG(SCTP_DEBUG_ASCONF1, - "compose_asconf: couldn't get chunk mbuf!\n"); + "sctp_compose_asconf: couldn't get chunk mbuf!\n"); return (NULL); } m_asconf = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_NOWAIT, 1, MT_DATA); if (m_asconf == NULL) { /* no mbuf's */ SCTPDBG(SCTP_DEBUG_ASCONF1, - "compose_asconf: couldn't get mbuf!\n"); + "sctp_compose_asconf: couldn't get mbuf!\n"); sctp_m_freem(m_asconf_chk); return (NULL); } SCTP_BUF_LEN(m_asconf_chk) = sizeof(struct sctp_asconf_chunk); SCTP_BUF_LEN(m_asconf) = 0; acp = mtod(m_asconf_chk, struct sctp_asconf_chunk *); - bzero(acp, sizeof(struct sctp_asconf_chunk)); + memset(acp, 0, sizeof(struct sctp_asconf_chunk)); /* save pointers to lookup address and asconf params */ lookup_ptr = (caddr_t)(acp + 1); /* after the header */ ptr = mtod(m_asconf, caddr_t); /* beginning of cluster */ @@ -2633,7 +2674,7 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) /* get the parameter length */ p_length = SCTP_SIZE32(aa->ap.aph.ph.param_length); /* will it fit in current chunk? */ - if ((SCTP_BUF_LEN(m_asconf) + p_length > stcb->asoc.smallest_mtu) || + if ((SCTP_BUF_LEN(m_asconf) + p_length > stcb->asoc.smallest_mtu - overhead) || (SCTP_BUF_LEN(m_asconf) + p_length > MCLBYTES)) { /* won't fit, so we're done with this chunk */ break; @@ -2733,10 +2774,12 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) break; #endif default: - p_size = 0; - addr_size = 0; - addr_ptr = NULL; - break; + SCTPDBG(SCTP_DEBUG_ASCONF1, + "sctp_compose_asconf: no usable lookup addr (family = %d)!\n", + found_addr->sa_family); + sctp_m_freem(m_asconf_chk); + sctp_m_freem(m_asconf); + return (NULL); } lookup->ph.param_length = htons(SCTP_SIZE32(p_size)); memcpy(lookup->addr, addr_ptr, addr_size); @@ -2744,12 +2787,10 @@ sctp_compose_asconf(struct sctp_tcb *stcb, int *retlen, int addr_locked) } else { /* uh oh... don't have any address?? */ SCTPDBG(SCTP_DEBUG_ASCONF1, - "compose_asconf: no lookup addr!\n"); - /* XXX for now, we send a IPv4 address of 0.0.0.0 */ - lookup->ph.param_type = htons(SCTP_IPV4_ADDRESS); - lookup->ph.param_length = htons(SCTP_SIZE32(sizeof(struct sctp_ipv4addr_param))); - bzero(lookup->addr, sizeof(struct in_addr)); - SCTP_BUF_LEN(m_asconf_chk) += SCTP_SIZE32(sizeof(struct sctp_ipv4addr_param)); + "sctp_compose_asconf: no lookup addr!\n"); + sctp_m_freem(m_asconf_chk); + sctp_m_freem(m_asconf); + return (NULL); } } /* chain it all together */ @@ -2870,8 +2911,7 @@ sctp_process_initack_addresses(struct sctp_tcb *stcb, struct mbuf *m, * out the ASCONF. */ if (status == 0 && - SCTP_GET_STATE(&stcb->asoc) == - SCTP_STATE_OPEN) { + SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, @@ -3046,10 +3086,6 @@ sctp_check_address_list_ep(struct sctp_tcb *stcb, struct mbuf *m, int offset, "check_addr_list_ep: laddr->ifa is NULL"); continue; } - if (laddr->ifa == NULL) { - SCTPDBG(SCTP_DEBUG_ASCONF1, "check_addr_list_ep: laddr->ifa->ifa_addr is NULL"); - continue; - } /* do i have it implicitly? */ if (sctp_cmpaddr(&laddr->ifa->address.sa, init_addr)) { continue; @@ -3111,7 +3147,7 @@ sctp_check_address_list_all(struct sctp_tcb *stcb, struct mbuf *m, int offset, #ifdef INET case AF_INET: sin = &sctp_ifa->address.sin; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -3127,7 +3163,7 @@ sctp_check_address_list_all(struct sctp_tcb *stcb, struct mbuf *m, int offset, #ifdef INET6 case AF_INET6: sin6 = &sctp_ifa->address.sin6; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -3196,7 +3232,7 @@ sctp_check_address_list(struct sctp_tcb *stcb, struct mbuf *m, int offset, */ uint32_t sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, - uint32_t type, uint32_t vrf_id, struct sctp_ifa *sctp_ifap) + uint32_t type, uint32_t vrf_id) { struct sctp_ifa *ifa; struct sctp_laddr *laddr, *nladdr; @@ -3207,9 +3243,7 @@ sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, return (EINVAL); } #endif - if (sctp_ifap) { - ifa = sctp_ifap; - } else if (type == SCTP_ADD_IP_ADDRESS) { + if (type == SCTP_ADD_IP_ADDRESS) { /* For an add the address MUST be on the system */ ifa = sctp_find_ifa_by_addr(sa, vrf_id, SCTP_ADDR_NOT_LOCKED); } else if (type == SCTP_DEL_IP_ADDRESS) { @@ -3250,6 +3284,7 @@ sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, } else { struct sctp_asconf_iterator *asc; struct sctp_laddr *wi; + int ret; SCTP_MALLOC(asc, struct sctp_asconf_iterator *, sizeof(struct sctp_asconf_iterator), @@ -3271,7 +3306,7 @@ sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, wi->action = type; atomic_add_int(&ifa->refcount, 1); LIST_INSERT_HEAD(&asc->list_of_work, wi, sctp_nxt_addr); - (void)sctp_initiate_iterator(sctp_asconf_iterator_ep, + ret = sctp_initiate_iterator(sctp_asconf_iterator_ep, sctp_asconf_iterator_stcb, sctp_asconf_iterator_ep_end, SCTP_PCB_ANY_FLAGS, @@ -3279,6 +3314,12 @@ sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, SCTP_ASOC_ANY_STATE, (void *)asc, 0, sctp_asconf_iterator_end, inp, 0); + if (ret) { + SCTP_PRINTF("Failed to initiate iterator for addr_mgmt_ep_sa\n"); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_ASCONF, EFAULT); + sctp_asconf_iterator_end(asc, 0); + return (EFAULT); + } } return (0); } else { @@ -3289,10 +3330,9 @@ sctp_addr_mgmt_ep_sa(struct sctp_inpcb *inp, struct sockaddr *sa, } void -sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, - struct sctp_nets *net) +sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, struct sctp_nets *net) { - struct sctp_asconf_addr *aa; + struct sctp_asconf_addr *aa_vtag, *aa_add, *aa_del; struct sctp_ifa *sctp_ifap; struct sctp_asconf_tag_param *vtag; #ifdef INET @@ -3301,6 +3341,7 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, #ifdef INET6 struct sockaddr_in6 *to6; #endif + if (net == NULL) { SCTPDBG(SCTP_DEBUG_ASCONF1, "sctp_asconf_send_nat_state_update: Missing net\n"); return; @@ -3309,108 +3350,84 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, SCTPDBG(SCTP_DEBUG_ASCONF1, "sctp_asconf_send_nat_state_update: Missing stcb\n"); return; } - /* Need to have in the asconf: - * - vtagparam(my_vtag/peer_vtag) - * - add(0.0.0.0) - * - del(0.0.0.0) - * - Any global addresses add(addr) - */ - SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), - SCTP_M_ASC_ADDR); - if (aa == NULL) { - /* didn't get memory */ - SCTPDBG(SCTP_DEBUG_ASCONF1, - "sctp_asconf_send_nat_state_update: failed to get memory!\n"); + /* Need to have in the ASCONF: + * - VTAG(my_vtag/peer_vtag) + * - ADD(wildcard) + * - DEL(wildcard) + * - ADD(Any global addresses) + */ + SCTP_MALLOC(aa_vtag, struct sctp_asconf_addr *, sizeof(struct sctp_asconf_addr), SCTP_M_ASC_ADDR); + SCTP_MALLOC(aa_add, struct sctp_asconf_addr *, sizeof(struct sctp_asconf_addr), SCTP_M_ASC_ADDR); + SCTP_MALLOC(aa_del, struct sctp_asconf_addr *, sizeof(struct sctp_asconf_addr), SCTP_M_ASC_ADDR); + + if ((aa_vtag == NULL) || (aa_add == NULL) || (aa_del == NULL)) { + /* Didn't get memory */ + SCTPDBG(SCTP_DEBUG_ASCONF1, "sctp_asconf_send_nat_state_update: failed to get memory!\n"); +out: + if (aa_vtag != NULL) { + SCTP_FREE(aa_vtag, SCTP_M_ASC_ADDR); + } + if (aa_add != NULL) { + SCTP_FREE(aa_add, SCTP_M_ASC_ADDR); + } + if (aa_del != NULL) { + SCTP_FREE(aa_del, SCTP_M_ASC_ADDR); + } return; } - aa->special_del = 0; - /* fill in asconf address parameter fields */ - /* top level elements are "networked" during send */ - aa->ifa = NULL; - aa->sent = 0; /* clear sent flag */ - vtag = (struct sctp_asconf_tag_param *)&aa->ap.aph; + memset(aa_vtag, 0, sizeof(struct sctp_asconf_addr)); + aa_vtag->special_del = 0; + /* Fill in ASCONF address parameter fields. */ + /* Top level elements are "networked" during send. */ + aa_vtag->ifa = NULL; + aa_vtag->sent = 0; /* clear sent flag */ + vtag = (struct sctp_asconf_tag_param *)&aa_vtag->ap.aph; vtag->aph.ph.param_type = SCTP_NAT_VTAGS; vtag->aph.ph.param_length = sizeof(struct sctp_asconf_tag_param); vtag->local_vtag = htonl(stcb->asoc.my_vtag); vtag->remote_vtag = htonl(stcb->asoc.peer_vtag); - TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); - SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), - SCTP_M_ASC_ADDR); - if (aa == NULL) { - /* didn't get memory */ - SCTPDBG(SCTP_DEBUG_ASCONF1, - "sctp_asconf_send_nat_state_update: failed to get memory!\n"); - return; - } - memset(aa, 0, sizeof(struct sctp_asconf_addr)); - /* fill in asconf address parameter fields */ - /* ADD(0.0.0.0) */ + memset(aa_add, 0, sizeof(struct sctp_asconf_addr)); + memset(aa_del, 0, sizeof(struct sctp_asconf_addr)); switch (net->ro._l_addr.sa.sa_family) { #ifdef INET case AF_INET: - aa->ap.aph.ph.param_type = SCTP_ADD_IP_ADDRESS; - aa->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addrv4_param); - aa->ap.addrp.ph.param_type = SCTP_IPV4_ADDRESS; - aa->ap.addrp.ph.param_length = sizeof (struct sctp_ipv4addr_param); - /* No need to add an address, we are using 0.0.0.0 */ - TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); + aa_add->ap.aph.ph.param_type = SCTP_ADD_IP_ADDRESS; + aa_add->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addrv4_param); + aa_add->ap.addrp.ph.param_type = SCTP_IPV4_ADDRESS; + aa_add->ap.addrp.ph.param_length = sizeof (struct sctp_ipv4addr_param); + /* No need to fill the address, we are using 0.0.0.0 */ + aa_del->ap.aph.ph.param_type = SCTP_DEL_IP_ADDRESS; + aa_del->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addrv4_param); + aa_del->ap.addrp.ph.param_type = SCTP_IPV4_ADDRESS; + aa_del->ap.addrp.ph.param_length = sizeof (struct sctp_ipv4addr_param); + /* No need to fill the address, we are using 0.0.0.0 */ break; #endif #ifdef INET6 case AF_INET6: - aa->ap.aph.ph.param_type = SCTP_ADD_IP_ADDRESS; - aa->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addr_param); - aa->ap.addrp.ph.param_type = SCTP_IPV6_ADDRESS; - aa->ap.addrp.ph.param_length = sizeof (struct sctp_ipv6addr_param); - /* No need to add an address, we are using 0.0.0.0 */ - TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); + aa_add->ap.aph.ph.param_type = SCTP_ADD_IP_ADDRESS; + aa_add->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addr_param); + aa_add->ap.addrp.ph.param_type = SCTP_IPV6_ADDRESS; + aa_add->ap.addrp.ph.param_length = sizeof (struct sctp_ipv6addr_param); + /* No need to fill the address, we are using ::0 */ + aa_del->ap.aph.ph.param_type = SCTP_DEL_IP_ADDRESS; + aa_del->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addr_param); + aa_del->ap.addrp.ph.param_type = SCTP_IPV6_ADDRESS; + aa_del->ap.addrp.ph.param_length = sizeof (struct sctp_ipv6addr_param); + /* No need to fill the address, we are using ::0 */ break; #endif default: SCTPDBG(SCTP_DEBUG_ASCONF1, - "sctp_asconf_send_nat_state_update: unknown address family\n"); - SCTP_FREE(aa, SCTP_M_ASC_ADDR); - return; - } - SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), - SCTP_M_ASC_ADDR); - if (aa == NULL) { - /* didn't get memory */ - SCTPDBG(SCTP_DEBUG_ASCONF1, - "sctp_asconf_send_nat_state_update: failed to get memory!\n"); - return; - } - memset(aa, 0, sizeof(struct sctp_asconf_addr)); - /* fill in asconf address parameter fields */ - /* ADD(0.0.0.0) */ - switch (net->ro._l_addr.sa.sa_family) { -#ifdef INET - case AF_INET: - aa->ap.aph.ph.param_type = SCTP_ADD_IP_ADDRESS; - aa->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addrv4_param); - aa->ap.addrp.ph.param_type = SCTP_IPV4_ADDRESS; - aa->ap.addrp.ph.param_length = sizeof (struct sctp_ipv4addr_param); - /* No need to add an address, we are using 0.0.0.0 */ - TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); - break; -#endif -#ifdef INET6 - case AF_INET6: - aa->ap.aph.ph.param_type = SCTP_DEL_IP_ADDRESS; - aa->ap.aph.ph.param_length = sizeof(struct sctp_asconf_addr_param); - aa->ap.addrp.ph.param_type = SCTP_IPV6_ADDRESS; - aa->ap.addrp.ph.param_length = sizeof (struct sctp_ipv6addr_param); - /* No need to add an address, we are using 0.0.0.0 */ - TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); - break; -#endif - default: - SCTPDBG(SCTP_DEBUG_ASCONF1, - "sctp_asconf_send_nat_state_update: unknown address family\n"); - SCTP_FREE(aa, SCTP_M_ASC_ADDR); - return; + "sctp_asconf_send_nat_state_update: unknown address family %d\n", + net->ro._l_addr.sa.sa_family); + goto out; } + TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa_vtag, next); + TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa_add, next); + TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa_del, next); + /* Now we must hunt the addresses and add all global addresses */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { struct sctp_vrf *vrf = NULL; @@ -3430,7 +3447,7 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, #ifdef INET case AF_INET: to = &sctp_ifap->address.sin; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(stcb->sctp_ep->ip_inp.inp.inp_cred, &to->sin_addr) != 0) { continue; @@ -3447,7 +3464,7 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, #ifdef INET6 case AF_INET6: to6 = &sctp_ifap->address.sin6; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(stcb->sctp_ep->ip_inp.inp.inp_cred, &to6->sin6_addr) != 0) { continue; diff --git a/netwerk/sctp/src/netinet/sctp_asconf.h b/netwerk/sctp/src/netinet/sctp_asconf.h index a3622e4128..318b26b168 100755 --- a/netwerk/sctp/src/netinet/sctp_asconf.h +++ b/netwerk/sctp/src/netinet/sctp_asconf.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_asconf.h 237715 2012-06-28 16:01:08Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_ASCONF_H_ @@ -43,7 +45,7 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_asconf.h 237715 2012-06-28 16:01:08Z t /* * function prototypes */ -extern void sctp_asconf_cleanup(struct sctp_tcb *, struct sctp_nets *); +extern void sctp_asconf_cleanup(struct sctp_tcb *); extern struct mbuf *sctp_compose_asconf(struct sctp_tcb *, int *, int); @@ -56,9 +58,8 @@ sctp_handle_asconf_ack(struct mbuf *, int, struct sctp_asconf_ack_chunk *, struct sctp_tcb *, struct sctp_nets *, int *); extern uint32_t -sctp_addr_mgmt_ep_sa(struct sctp_inpcb *, struct sockaddr *, - uint32_t, uint32_t, struct sctp_ifa *); - +sctp_addr_mgmt_ep_sa(struct sctp_inpcb *, struct sockaddr *, uint32_t, + uint32_t); extern int sctp_asconf_iterator_ep(struct sctp_inpcb *inp, void *ptr, uint32_t val); @@ -67,14 +68,10 @@ extern void sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, void *ptr, uint32_t type); extern void sctp_asconf_iterator_end(void *ptr, uint32_t val); - extern int32_t sctp_set_primary_ip_address_sa(struct sctp_tcb *, struct sockaddr *); -extern void -sctp_set_primary_ip_address(struct sctp_ifa *ifa); - extern void sctp_check_address_list(struct sctp_tcb *, struct mbuf *, int, int, struct sockaddr *, uint16_t, uint16_t, uint16_t, uint16_t); diff --git a/netwerk/sctp/src/netinet/sctp_auth.c b/netwerk/sctp/src/netinet/sctp_auth.c index 094698a519..39a0f5014a 100755 --- a/netwerk/sctp/src/netinet/sctp_auth.c +++ b/netwerk/sctp/src/netinet/sctp_auth.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_auth.c 271673 2014-09-16 14:20:33Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -51,11 +53,10 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_auth.c 271673 2014-09-16 14:20:33Z tue #define SCTP_AUTH_DEBUG2 (SCTP_BASE_SYSCTL(sctp_debug_on) & SCTP_DEBUG_AUTH2) #endif /* SCTP_DEBUG */ - void sctp_clear_chunklist(sctp_auth_chklist_t *chklist) { - bzero(chklist, sizeof(*chklist)); + memset(chklist, 0, sizeof(*chklist)); /* chklist->num_chunks = 0; */ } @@ -94,12 +95,11 @@ sctp_copy_chunklist(sctp_auth_chklist_t *list) if (new_list == NULL) return (NULL); /* copy it */ - bcopy(list, new_list, sizeof(*new_list)); + memcpy(new_list, list, sizeof(*new_list)); return (new_list); } - /* * add a chunk to the required chunks list */ @@ -239,7 +239,6 @@ sctp_unpack_auth_chunks(const uint8_t *ptr, uint8_t num_chunks, return (size); } - /* * allocate structure space for a key of length keylen */ @@ -340,7 +339,7 @@ sctp_set_key(uint8_t *key, uint32_t keylen) /* out of memory */ return (NULL); } - bcopy(key, new_key->key, keylen); + memcpy(new_key->key, key, keylen); return (new_key); } @@ -429,34 +428,33 @@ sctp_compute_hashkey(sctp_key_t *key1, sctp_key_t *key2, sctp_key_t *shared) if (sctp_compare_key(key1, key2) <= 0) { /* key is shared + key1 + key2 */ if (sctp_get_keylen(shared)) { - bcopy(shared->key, key_ptr, shared->keylen); + memcpy(key_ptr, shared->key, shared->keylen); key_ptr += shared->keylen; } if (sctp_get_keylen(key1)) { - bcopy(key1->key, key_ptr, key1->keylen); + memcpy(key_ptr, key1->key, key1->keylen); key_ptr += key1->keylen; } if (sctp_get_keylen(key2)) { - bcopy(key2->key, key_ptr, key2->keylen); + memcpy(key_ptr, key2->key, key2->keylen); } } else { /* key is shared + key2 + key1 */ if (sctp_get_keylen(shared)) { - bcopy(shared->key, key_ptr, shared->keylen); + memcpy(key_ptr, shared->key, shared->keylen); key_ptr += shared->keylen; } if (sctp_get_keylen(key2)) { - bcopy(key2->key, key_ptr, key2->keylen); + memcpy(key_ptr, key2->key, key2->keylen); key_ptr += key2->keylen; } if (sctp_get_keylen(key1)) { - bcopy(key1->key, key_ptr, key1->keylen); + memcpy(key_ptr, key1->key, key1->keylen); } } return (new_key); } - sctp_sharedkey_t * sctp_alloc_sharedkey(void) { @@ -523,7 +521,7 @@ sctp_insert_sharedkey(struct sctp_keyhead *shared_keys, } else if (new_skey->keyid == skey->keyid) { /* replace the existing key */ /* verify this key *can* be replaced */ - if ((skey->deactivated) && (skey->refcount > 1)) { + if ((skey->deactivated) || (skey->refcount > 1)) { SCTPDBG(SCTP_DEBUG_AUTH1, "can't replace shared key id %u\n", new_skey->keyid); @@ -544,7 +542,7 @@ sctp_insert_sharedkey(struct sctp_keyhead *shared_keys, } } /* shouldn't reach here */ - return (0); + return (EINVAL); } void @@ -560,16 +558,12 @@ sctp_auth_key_acquire(struct sctp_tcb *stcb, uint16_t key_id) atomic_add_int(&skey->refcount, 1); SCTPDBG(SCTP_DEBUG_AUTH2, "%s: stcb %p key %u refcount acquire to %d\n", - __FUNCTION__, (void *)stcb, key_id, skey->refcount); + __func__, (void *)stcb, key_id, skey->refcount); } } void -sctp_auth_key_release(struct sctp_tcb *stcb, uint16_t key_id, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_auth_key_release(struct sctp_tcb *stcb, uint16_t key_id, int so_locked) { sctp_sharedkey_t *skey; @@ -578,20 +572,20 @@ sctp_auth_key_release(struct sctp_tcb *stcb, uint16_t key_id, int so_locked /* decrement the ref count */ if (skey) { - sctp_free_sharedkey(skey); SCTPDBG(SCTP_DEBUG_AUTH2, "%s: stcb %p key %u refcount release to %d\n", - __FUNCTION__, (void *)stcb, key_id, skey->refcount); + __func__, (void *)stcb, key_id, skey->refcount); /* see if a notification should be generated */ - if ((skey->refcount <= 1) && (skey->deactivated)) { + if ((skey->refcount <= 2) && (skey->deactivated)) { /* notify ULP that key is no longer used */ sctp_ulp_notify(SCTP_NOTIFY_AUTH_FREE_KEY, stcb, key_id, 0, so_locked); SCTPDBG(SCTP_DEBUG_AUTH2, "%s: stcb %p key %u no longer used, %d\n", - __FUNCTION__, (void *)stcb, key_id, skey->refcount); + __func__, (void *)stcb, key_id, skey->refcount); } + sctp_free_sharedkey(skey); } } @@ -624,14 +618,16 @@ sctp_copy_skeylist(const struct sctp_keyhead *src, struct sctp_keyhead *dest) LIST_FOREACH(skey, src, next) { new_skey = sctp_copy_sharedkey(skey); if (new_skey != NULL) { - (void)sctp_insert_sharedkey(dest, new_skey); - count++; + if (sctp_insert_sharedkey(dest, new_skey)) { + sctp_free_sharedkey(new_skey); + } else { + count++; + } } } return (count); } - sctp_hmaclist_t * sctp_alloc_hmaclist(uint16_t num_hmacs) { @@ -655,7 +651,6 @@ sctp_free_hmaclist(sctp_hmaclist_t *list) { if (list != NULL) { SCTP_FREE(list,SCTP_M_AUTH_HL); - list = NULL; } } @@ -772,7 +767,7 @@ sctp_serialize_hmaclist(sctp_hmaclist_t *list, uint8_t *ptr) for (i = 0; i < list->num_algo; i++) { hmac_id = htons(list->hmac[i]); - bcopy(&hmac_id, ptr, sizeof(hmac_id)); + memcpy(ptr, &hmac_id, sizeof(hmac_id)); ptr += sizeof(hmac_id); } return (list->num_algo * sizeof(hmac_id)); @@ -803,7 +798,7 @@ sctp_alloc_authinfo(void) /* out of memory */ return (NULL); } - bzero(new_authinfo, sizeof(*new_authinfo)); + memset(new_authinfo, 0, sizeof(*new_authinfo)); return (new_authinfo); } @@ -826,7 +821,6 @@ sctp_free_authinfo(sctp_authinfo_t *authinfo) /* SCTP_FREE(authinfo, SCTP_M_AUTH_??); */ } - uint32_t sctp_get_auth_chunk_len(uint16_t hmac_algo) { @@ -974,10 +968,10 @@ sctp_hmac(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, key = temp; } /* initialize the inner/outer pads with the key and "append" zeroes */ - bzero(ipad, blocklen); - bzero(opad, blocklen); - bcopy(key, ipad, keylen); - bcopy(key, opad, keylen); + memset(ipad, 0, blocklen); + memset(opad, 0, blocklen); + memcpy(ipad, key, keylen); + memcpy(opad, key, keylen); /* XOR the key with ipad and opad values */ for (i = 0; i < blocklen; i++) { @@ -1034,10 +1028,10 @@ sctp_hmac_m(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, key = temp; } /* initialize the inner/outer pads with the key and "append" zeroes */ - bzero(ipad, blocklen); - bzero(opad, blocklen); - bcopy(key, ipad, keylen); - bcopy(key, opad, keylen); + memset(ipad, 0, blocklen); + memset(opad, 0, blocklen); + memcpy(ipad, key, keylen); + memcpy(opad, key, keylen); /* XOR the key with ipad and opad values */ for (i = 0; i < blocklen; i++) { @@ -1079,40 +1073,6 @@ sctp_hmac_m(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, return (digestlen); } -/*- - * verify the HMAC digest using the desired hash key, text, and HMAC - * algorithm. - * Returns -1 on error, 0 on success. - */ -int -sctp_verify_hmac(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, - uint8_t *text, uint32_t textlen, - uint8_t *digest, uint32_t digestlen) -{ - uint32_t len; - uint8_t temp[SCTP_AUTH_DIGEST_LEN_MAX]; - - /* sanity check the material and length */ - if ((key == NULL) || (keylen == 0) || - (text == NULL) || (textlen == 0) || (digest == NULL)) { - /* can't do HMAC with empty key or text or digest */ - return (-1); - } - len = sctp_get_hmac_digest_len(hmac_algo); - if ((len == 0) || (digestlen != len)) - return (-1); - - /* compute the expected hash */ - if (sctp_hmac(hmac_algo, key, keylen, text, textlen, temp) != len) - return (-1); - - if (memcmp(digest, temp, digestlen) != 0) - return (-1); - else - return (0); -} - - /* * computes the requested HMAC using a key struct (which may be modified if * the keylen exceeds the HMAC block len). @@ -1145,7 +1105,7 @@ sctp_compute_hmac(uint16_t hmac_algo, sctp_key_t *key, uint8_t *text, sctp_hmac_final(hmac_algo, &ctx, temp); /* save the hashed key as the new key */ key->keylen = digestlen; - bcopy(temp, key->key, key->keylen); + memcpy(key->key, temp, key->keylen); } return (sctp_hmac(hmac_algo, key->key, key->keylen, text, textlen, digest)); @@ -1179,7 +1139,7 @@ sctp_compute_hmac_m(uint16_t hmac_algo, sctp_key_t *key, struct mbuf *m, sctp_hmac_final(hmac_algo, &ctx, temp); /* save the hashed key as the new key */ key->keylen = digestlen; - bcopy(temp, key->key, key->keylen); + memcpy(key->key, temp, key->keylen); } return (sctp_hmac_m(hmac_algo, key->key, key->keylen, m, m_offset, digest, 0)); } @@ -1200,7 +1160,6 @@ sctp_auth_is_supported_hmac(sctp_hmaclist_t *list, uint16_t id) return (0); } - /*- * clear any cached key(s) if they match the given key id on an association. * the cached key(s) will be recomputed and re-cached at next use. @@ -1458,7 +1417,7 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m, if (plen > sizeof(random_store)) break; phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)random_store, min(plen, sizeof(random_store))); + (struct sctp_paramhdr *)random_store, plen); if (phdr == NULL) return; /* save the random and length for the key */ @@ -1471,7 +1430,7 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m, if (plen > sizeof(hmacs_store)) break; phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)hmacs_store, min(plen,sizeof(hmacs_store))); + (struct sctp_paramhdr *)hmacs_store, plen); if (phdr == NULL) return; /* save the hmacs list and num for the key */ @@ -1493,7 +1452,7 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m, if (plen > sizeof(chunks_store)) break; phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)chunks_store, min(plen,sizeof(chunks_store))); + (struct sctp_paramhdr *)chunks_store, plen); if (phdr == NULL) return; chunks = (struct sctp_auth_chunk_list *)phdr; @@ -1522,24 +1481,24 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m, } new_key = sctp_alloc_key(keylen); if (new_key != NULL) { - /* copy in the RANDOM */ - if (p_random != NULL) { - keylen = sizeof(*p_random) + random_len; - bcopy(p_random, new_key->key, keylen); - } else { - keylen = 0; - } - /* append in the AUTH chunks */ - if (chunks != NULL) { - bcopy(chunks, new_key->key + keylen, - sizeof(*chunks) + num_chunks); - keylen += sizeof(*chunks) + num_chunks; - } - /* append in the HMACs */ - if (hmacs != NULL) { - bcopy(hmacs, new_key->key + keylen, - sizeof(*hmacs) + hmacs_len); - } + /* copy in the RANDOM */ + if (p_random != NULL) { + keylen = sizeof(*p_random) + random_len; + memcpy(new_key->key, p_random, keylen); + } else { + keylen = 0; + } + /* append in the AUTH chunks */ + if (chunks != NULL) { + memcpy(new_key->key + keylen, chunks, + sizeof(*chunks) + num_chunks); + keylen += sizeof(*chunks) + num_chunks; + } + /* append in the HMACs */ + if (hmacs != NULL) { + memcpy(new_key->key + keylen, hmacs, + sizeof(*hmacs) + hmacs_len); + } } if (stcb->asoc.authinfo.random != NULL) sctp_free_key(stcb->asoc.authinfo.random); @@ -1576,7 +1535,7 @@ sctp_fill_hmac_digest_m(struct mbuf *m, uint32_t auth_offset, /* zero the digest + chunk padding */ digestlen = sctp_get_hmac_digest_len(stcb->asoc.peer_hmac_id); - bzero(auth->hmac, SCTP_SIZE32(digestlen)); + memset(auth->hmac, 0, SCTP_SIZE32(digestlen)); /* is the desired key cached? */ if ((keyid != stcb->asoc.authinfo.assoc_keyid) || @@ -1613,9 +1572,8 @@ sctp_fill_hmac_digest_m(struct mbuf *m, uint32_t auth_offset, m, auth_offset, auth->hmac); } - static void -sctp_bzero_m(struct mbuf *m, uint32_t m_offset, uint32_t size) +sctp_zero_m(struct mbuf *m, uint32_t m_offset, uint32_t size) { struct mbuf *m_tmp; uint8_t *data; @@ -1633,11 +1591,11 @@ sctp_bzero_m(struct mbuf *m, uint32_t m_offset, uint32_t size) /* now use the rest of the mbuf chain */ while ((m_tmp != NULL) && (size > 0)) { data = mtod(m_tmp, uint8_t *) + m_offset; - if (size > (uint32_t) SCTP_BUF_LEN(m_tmp)) { - bzero(data, SCTP_BUF_LEN(m_tmp)); - size -= SCTP_BUF_LEN(m_tmp); + if (size > (uint32_t)(SCTP_BUF_LEN(m_tmp) - m_offset)) { + memset(data, 0, SCTP_BUF_LEN(m_tmp) - m_offset); + size -= SCTP_BUF_LEN(m_tmp) - m_offset; } else { - bzero(data, size); + memset(data, 0, size); size = 0; } /* clear the offset since it's only for the first mbuf */ @@ -1679,10 +1637,13 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, "SCTP AUTH Chunk: shared key %u, HMAC id %u\n", shared_key_id, hmac_id); +#if defined(__Userspace__) && defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) + return (0); +#endif /* is the indicated HMAC supported? */ if (!sctp_auth_is_supported_hmac(stcb->asoc.local_hmacs, hmac_id)) { - struct mbuf *m_err; - struct sctp_auth_invalid_hmac *err; + struct mbuf *op_err; + struct sctp_error_auth_invalid_hmac *cause; SCTP_STAT_INCR(sctps_recvivalhmacid); SCTPDBG(SCTP_DEBUG_AUTH1, @@ -1692,20 +1653,19 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, * report this in an Error Chunk: Unsupported HMAC * Identifier */ - m_err = sctp_get_mbuf_for_msg(sizeof(*err), 0, M_NOWAIT, - 1, MT_HEADER); - if (m_err != NULL) { + op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_error_auth_invalid_hmac), + 0, M_NOWAIT, 1, MT_HEADER); + if (op_err != NULL) { /* pre-reserve some space */ - SCTP_BUF_RESV_UF(m_err, sizeof(struct sctp_chunkhdr)); + SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); /* fill in the error */ - err = mtod(m_err, struct sctp_auth_invalid_hmac *); - bzero(err, sizeof(*err)); - err->ph.param_type = htons(SCTP_CAUSE_UNSUPPORTED_HMACID); - err->ph.param_length = htons(sizeof(*err)); - err->hmac_id = ntohs(hmac_id); - SCTP_BUF_LEN(m_err) = sizeof(*err); + cause = mtod(op_err, struct sctp_error_auth_invalid_hmac *); + cause->cause.code = htons(SCTP_CAUSE_UNSUPPORTED_HMACID); + cause->cause.length = htons(sizeof(struct sctp_error_auth_invalid_hmac)); + cause->hmac_id = ntohs(hmac_id); + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_error_auth_invalid_hmac); /* queue it */ - sctp_queue_op_err(stcb, m_err); + sctp_queue_op_err(stcb, op_err); } return (-1); } @@ -1755,13 +1715,13 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, return (-1); } /* save a copy of the digest, zero the pseudo header, and validate */ - bcopy(auth->hmac, digest, digestlen); - sctp_bzero_m(m, offset + sizeof(*auth), SCTP_SIZE32(digestlen)); + memcpy(digest, auth->hmac, digestlen); + sctp_zero_m(m, offset + sizeof(*auth), SCTP_SIZE32(digestlen)); (void)sctp_compute_hmac_m(hmac_id, stcb->asoc.authinfo.recv_key, m, offset, computed_digest); /* compare the computed digest with the one in the AUTH chunk */ - if (memcmp(digest, computed_digest, digestlen) != 0) { + if (timingsafe_bcmp(digest, computed_digest, digestlen) != 0) { SCTP_STAT_INCR(sctps_recvauthfailed); SCTPDBG(SCTP_DEBUG_AUTH1, "SCTP Auth: HMAC digest check failed\n"); @@ -1775,11 +1735,7 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth, */ void sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, - uint16_t keyid, uint16_t alt_keyid, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) + uint16_t keyid, uint16_t alt_keyid, int so_locked) { struct mbuf *m_notify; struct sctp_authkey_event *auth; @@ -1826,15 +1782,14 @@ sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, so_locked); } - /*- * validates the AUTHentication related parameters in an INIT/INIT-ACK * Note: currently only used for INIT as INIT-ACK is handled inline @@ -1843,7 +1798,7 @@ sctp_notify_authentication(struct sctp_tcb *stcb, uint32_t indication, int sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) { - struct sctp_paramhdr *phdr, parm_buf; + struct sctp_paramhdr *phdr, param_buf; uint16_t ptype, plen; int peer_supports_asconf = 0; int peer_supports_auth = 0; @@ -1852,7 +1807,7 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) uint8_t saw_asconf_ack = 0; /* go through each of the params. */ - phdr = sctp_get_next_param(m, offset, &parm_buf, sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, sizeof(param_buf)); while (phdr) { ptype = ntohs(phdr->param_type); plen = ntohs(phdr->param_length); @@ -1866,11 +1821,15 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) if (ptype == SCTP_SUPPORTED_CHUNK_EXT) { /* A supported extension chunk */ struct sctp_supported_chunk_types_param *pr_supported; - uint8_t local_store[SCTP_PARAM_BUFFER_SIZE]; + uint8_t local_store[SCTP_SMALL_CHUNK_STORE]; int num_ent, i; + if (plen > sizeof(local_store)) { + break; + } phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)&local_store, min(plen,sizeof(local_store))); + (struct sctp_paramhdr *)&local_store, + plen); if (phdr == NULL) { return (-1); } @@ -1888,7 +1847,6 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) } } } else if (ptype == SCTP_RANDOM) { - got_random = 1; /* enforce the random length */ if (plen != (sizeof(struct sctp_auth_random) + SCTP_AUTH_RANDOM_SIZE_REQUIRED)) { @@ -1896,20 +1854,23 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) "SCTP: invalid RANDOM len\n"); return (-1); } + got_random = 1; } else if (ptype == SCTP_HMAC_LIST) { - uint8_t store[SCTP_PARAM_BUFFER_SIZE]; struct sctp_auth_hmac_algo *hmacs; + uint8_t store[SCTP_PARAM_BUFFER_SIZE]; int num_hmacs; - if (plen > sizeof(store)) + if (plen > sizeof(store)) { break; + } phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)store, min(plen,sizeof(store))); - if (phdr == NULL) + (struct sctp_paramhdr *)store, + plen); + if (phdr == NULL) { return (-1); + } hmacs = (struct sctp_auth_hmac_algo *)phdr; - num_hmacs = (plen - sizeof(*hmacs)) / - sizeof(hmacs->hmac_ids[0]); + num_hmacs = (plen - sizeof(*hmacs)) / sizeof(hmacs->hmac_ids[0]); /* validate the hmac list */ if (sctp_verify_hmac_param(hmacs, num_hmacs)) { SCTPDBG(SCTP_DEBUG_AUTH1, @@ -1918,16 +1879,19 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) } got_hmacs = 1; } else if (ptype == SCTP_CHUNK_LIST) { - int i, num_chunks; + struct sctp_auth_chunk_list *chunks; uint8_t chunks_store[SCTP_SMALL_CHUNK_STORE]; - /* did the peer send a non-empty chunk list? */ - struct sctp_auth_chunk_list *chunks = NULL; + int i, num_chunks; + + if (plen > sizeof(chunks_store)) { + break; + } phdr = sctp_get_next_param(m, offset, (struct sctp_paramhdr *)chunks_store, - min(plen,sizeof(chunks_store))); - if (phdr == NULL) + plen); + if (phdr == NULL) { return (-1); - + } /*- * Flip through the list and mark that the * peer supports asconf/asconf_ack. @@ -1940,7 +1904,6 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) saw_asconf = 1; if (chunks->chunk_types[i] == SCTP_ASCONF_ACK) saw_asconf_ack = 1; - } if (num_chunks) got_chklist = 1; @@ -1950,8 +1913,8 @@ sctp_validate_init_auth_params(struct mbuf *m, int offset, int limit) if (offset >= limit) { break; } - phdr = sctp_get_next_param(m, offset, &parm_buf, - sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, + sizeof(param_buf)); } /* validate authentication required parameters */ if (got_random && got_hmacs) { diff --git a/netwerk/sctp/src/netinet/sctp_auth.h b/netwerk/sctp/src/netinet/sctp_auth.h index 997389363d..718b2f5ba9 100755 --- a/netwerk/sctp/src/netinet/sctp_auth.h +++ b/netwerk/sctp/src/netinet/sctp_auth.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_auth.h 271673 2014-09-16 14:20:33Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_AUTH_H_ @@ -97,8 +99,6 @@ typedef struct sctp_authinformation { uint16_t recv_keyid; /* last recv keyid (cached) */ } sctp_authinfo_t; - - /* * Macros */ @@ -147,7 +147,6 @@ extern void sctp_auth_key_acquire(struct sctp_tcb *stcb, uint16_t keyid); extern void sctp_auth_key_release(struct sctp_tcb *stcb, uint16_t keyid, int so_locked); - /* hmac list handling */ extern sctp_hmaclist_t *sctp_alloc_hmaclist(uint16_t num_hmacs); extern void sctp_free_hmaclist(sctp_hmaclist_t *list); @@ -168,8 +167,6 @@ extern uint32_t sctp_get_auth_chunk_len(uint16_t hmac_algo); extern uint32_t sctp_get_hmac_digest_len(uint16_t hmac_algo); extern uint32_t sctp_hmac(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, uint8_t *text, uint32_t textlen, uint8_t *digest); -extern int sctp_verify_hmac(uint16_t hmac_algo, uint8_t *key, uint32_t keylen, - uint8_t *text, uint32_t textlen, uint8_t *digest, uint32_t digestlen); extern uint32_t sctp_compute_hmac(uint16_t hmac_algo, sctp_key_t *key, uint8_t *text, uint32_t textlen, uint8_t *digest); extern int sctp_auth_is_supported_hmac(sctp_hmaclist_t *list, uint16_t id); diff --git a/netwerk/sctp/src/netinet/sctp_bsd_addr.c b/netwerk/sctp/src/netinet/sctp_bsd_addr.c index 4e9d6796b6..7b40fc4084 100755 --- a/netwerk/sctp/src/netinet/sctp_bsd_addr.c +++ b/netwerk/sctp/src/netinet/sctp_bsd_addr.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_bsd_addr.c 276914 2015-01-10 20:49:57Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -48,17 +50,11 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_bsd_addr.c 276914 2015-01-10 20:49:57Z #include #include #include -#if defined(ANDROID) -#include -#include -#else -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif -#endif /* Declare all of our malloc named types */ -#ifndef __Panda__ MALLOC_DEFINE(SCTP_M_MAP, "sctp_map", "sctp asoc map descriptor"); MALLOC_DEFINE(SCTP_M_STRMI, "sctp_stri", "sctp stream in array"); MALLOC_DEFINE(SCTP_M_STRMO, "sctp_stro", "sctp stream out array"); @@ -79,12 +75,11 @@ MALLOC_DEFINE(SCTP_M_MVRF, "sctp_mvrf", "sctp mvrf pcb list"); MALLOC_DEFINE(SCTP_M_ITER, "sctp_iter", "sctp iterator control"); MALLOC_DEFINE(SCTP_M_SOCKOPT, "sctp_socko", "sctp socket option"); MALLOC_DEFINE(SCTP_M_MCORE, "sctp_mcore", "sctp mcore queue"); -#endif /* Global NON-VNET structure that controls the iterator */ struct iterator_control sctp_it_ctl; +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) -#if !defined(__FreeBSD__) static void sctp_cleanup_itqueue(void) { @@ -112,7 +107,7 @@ void sctp_wakeup_iterator(void) { #if defined(SCTP_PROCESS_LEVEL_LOCKS) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) WakeAllConditionVariable(&sctp_it_ctl.iterator_wakeup); #else pthread_cond_broadcast(&sctp_it_ctl.iterator_wakeup); @@ -129,9 +124,12 @@ static void #endif sctp_iterator_thread(void *v SCTP_UNUSED) { +#if defined(__Userspace__) + sctp_userspace_set_threadname("SCTP iterator"); +#endif SCTP_IPI_ITERATOR_WQ_LOCK(); /* In FreeBSD this thread never terminates. */ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) for (;;) { #else while ((sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) == 0) { @@ -140,25 +138,25 @@ sctp_iterator_thread(void *v SCTP_UNUSED) msleep(&sctp_it_ctl.iterator_running, #if defined(__FreeBSD__) &sctp_it_ctl.ipi_iterator_wq_mtx, -#elif defined(__APPLE__) || defined(__Userspace_os_Darwin) +#elif defined(__APPLE__) sctp_it_ctl.ipi_iterator_wq_mtx, #endif 0, "waiting_for_work", 0); #else -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SleepConditionVariableCS(&sctp_it_ctl.iterator_wakeup, &sctp_it_ctl.ipi_iterator_wq_mtx, INFINITE); #else pthread_cond_wait(&sctp_it_ctl.iterator_wakeup, &sctp_it_ctl.ipi_iterator_wq_mtx); #endif #endif -#if !defined(__FreeBSD__) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) { break; } #endif sctp_iterator_worker(); } -#if !defined(__FreeBSD__) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) /* Now this thread needs to be terminated */ sctp_cleanup_itqueue(); sctp_it_ctl.iterator_flags |= SCTP_ITERATOR_EXITED; @@ -187,27 +185,21 @@ sctp_startup_iterator(void) SCTP_ITERATOR_LOCK_INIT(); SCTP_IPI_ITERATOR_WQ_INIT(); TAILQ_INIT(&sctp_it_ctl.iteratorhead); -#if defined(__FreeBSD__) -#if __FreeBSD_version <= 701000 - kthread_create(sctp_iterator_thread, -#else +#if defined(__Userspace__) + if (sctp_userspace_thread_create(&sctp_it_ctl.thread_proc, &sctp_iterator_thread)) { + SCTP_PRINTF("ERROR: Creating sctp_iterator_thread failed.\n"); + } else { + SCTP_BASE_VAR(iterator_thread_started) = 1; + } +#elif defined(__FreeBSD__) kproc_create(sctp_iterator_thread, -#endif (void *)NULL, &sctp_it_ctl.thread_proc, - RFPROC, + 0, SCTP_KTHREAD_PAGES, SCTP_KTRHEAD_NAME); #elif defined(__APPLE__) kernel_thread_start((thread_continue_t)sctp_iterator_thread, NULL, &sctp_it_ctl.thread_proc); -#elif defined(__Userspace__) -#if defined(__Userspace_os_Windows) - if ((sctp_it_ctl.thread_proc = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&sctp_iterator_thread, NULL, 0, NULL)) == NULL) { -#else - if (pthread_create(&sctp_it_ctl.thread_proc, NULL, &sctp_iterator_thread, NULL)) { -#endif - SCTP_PRINTF("ERROR: Creating sctp_iterator_thread failed.\n"); - } #endif } @@ -252,7 +244,6 @@ sctp_gather_internal_ifa_flags(struct sctp_ifa *ifa) #endif /* __Userspace__ */ #endif /* INET6 */ - #if !defined(__Userspace__) static uint32_t sctp_is_desired_interface_type(struct ifnet *ifn) @@ -260,7 +251,7 @@ sctp_is_desired_interface_type(struct ifnet *ifn) int result; /* check the interface type to see if it's one we care about */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) switch(ifnet_type(ifn)) { #else switch (ifn->if_type) { @@ -286,7 +277,7 @@ sctp_is_desired_interface_type(struct ifnet *ifn) case IFT_GIF: case IFT_L2VLAN: case IFT_STF: -#if !defined(__APPLE__) +#if !(defined(__APPLE__) && !defined(__Userspace__)) case IFT_IP: case IFT_IPOVERCDLC: case IFT_IPOVERCLAW: @@ -302,29 +293,22 @@ sctp_is_desired_interface_type(struct ifnet *ifn) return (result); } #endif +#if defined(__APPLE__) && !defined(__Userspace__) -#if defined(__APPLE__) int sctp_is_vmware_interface(struct ifnet *ifn) { return (strncmp(ifnet_name(ifn), "vmnet", 5) == 0); } -#endif -#if defined(__Userspace_os_Windows) -#ifdef MALLOC -#undef MALLOC -#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x)) -#endif -#ifdef FREE -#undef FREE -#define FREE(x) HeapFree(GetProcessHeap(), 0, (x)) #endif + +#if defined(_WIN32) && defined(__Userspace__) +#define SCTP_BSD_FREE(x) HeapFree(GetProcessHeap(), 0, (x)) static void sctp_init_ifns_for_vrf(int vrfid) { #if defined(INET) || defined(INET6) - struct ifaddrs *ifa; struct sctp_ifa *sctp_ifa; DWORD Err, AdapterAddrsSize; PIP_ADAPTER_ADDRESSES pAdapterAddrs, pAdapt; @@ -350,6 +334,7 @@ sctp_init_ifns_for_vrf(int vrfid) /* Get actual adapter information */ if ((Err = GetAdaptersAddresses(AF_INET, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { SCTP_PRINTF("GetAdaptersV4Addresses() failed with error code %d\n", Err); + SCTP_BSD_FREE(pAdapterAddrs); return; } /* Enumerate through each returned adapter and save its information */ @@ -359,20 +344,14 @@ sctp_init_ifns_for_vrf(int vrfid) if (IN4_ISLINKLOCAL_ADDRESS(&(((struct sockaddr_in *)(pUnicast->Address.lpSockaddr))->sin_addr))) { continue; } - ifa = (struct ifaddrs*)malloc(sizeof(struct ifaddrs)); - ifa->ifa_name = _strdup(pAdapt->AdapterName); - ifa->ifa_flags = pAdapt->Flags; - ifa->ifa_addr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in)); - memcpy(ifa->ifa_addr, pUnicast->Address.lpSockaddr, sizeof(struct sockaddr_in)); - sctp_ifa = sctp_add_addr_to_vrf(0, - ifa, + NULL, pAdapt->IfIndex, (pAdapt->IfType == IF_TYPE_IEEE80211)?MIB_IF_TYPE_ETHERNET:pAdapt->IfType, - ifa->ifa_name, - (void *)ifa, - ifa->ifa_addr, - ifa->ifa_flags, + pAdapt->AdapterName, + NULL, + pUnicast->Address.lpSockaddr, + pAdapt->Flags, 0); if (sctp_ifa) { sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; @@ -380,8 +359,7 @@ sctp_init_ifns_for_vrf(int vrfid) } } } - if (pAdapterAddrs) - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); #endif #ifdef INET6 AdapterAddrsSize = 0; @@ -401,25 +379,21 @@ sctp_init_ifns_for_vrf(int vrfid) /* Get actual adapter information */ if ((Err = GetAdaptersAddresses(AF_INET6, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { SCTP_PRINTF("GetAdaptersV6Addresses() failed with error code %d\n", Err); + SCTP_BSD_FREE(pAdapterAddrs); return; } /* Enumerate through each returned adapter and save its information */ for (pAdapt = pAdapterAddrs; pAdapt; pAdapt = pAdapt->Next) { if (pAdapt->IfType == IF_TYPE_IEEE80211 || pAdapt->IfType == IF_TYPE_ETHERNET_CSMACD) { for (pUnicast = pAdapt->FirstUnicastAddress; pUnicast; pUnicast = pUnicast->Next) { - ifa = (struct ifaddrs*)malloc(sizeof(struct ifaddrs)); - ifa->ifa_name = _strdup(pAdapt->AdapterName); - ifa->ifa_flags = pAdapt->Flags; - ifa->ifa_addr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in6)); - memcpy(ifa->ifa_addr, pUnicast->Address.lpSockaddr, sizeof(struct sockaddr_in6)); sctp_ifa = sctp_add_addr_to_vrf(0, - ifa, + NULL, pAdapt->Ipv6IfIndex, (pAdapt->IfType == IF_TYPE_IEEE80211)?MIB_IF_TYPE_ETHERNET:pAdapt->IfType, - ifa->ifa_name, - (void *)ifa, - ifa->ifa_addr, - ifa->ifa_flags, + pAdapt->AdapterName, + NULL, + pUnicast->Address.lpSockaddr, + pAdapt->Flags, 0); if (sctp_ifa) { sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; @@ -427,8 +401,7 @@ sctp_init_ifns_for_vrf(int vrfid) } } } - if (pAdapterAddrs) - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); #endif } #elif defined(__Userspace__) @@ -437,15 +410,15 @@ sctp_init_ifns_for_vrf(int vrfid) { #if defined(INET) || defined(INET6) int rc; - struct ifaddrs *ifa = NULL; + struct ifaddrs *ifa, *ifas; struct sctp_ifa *sctp_ifa; uint32_t ifa_flags; - rc = getifaddrs(&g_interfaces); + rc = getifaddrs(&ifas); if (rc != 0) { return; } - for (ifa = g_interfaces; ifa; ifa = ifa->ifa_next) { + for (ifa = ifas; ifa; ifa = ifa->ifa_next) { if (ifa->ifa_addr == NULL) { continue; } @@ -468,7 +441,7 @@ sctp_init_ifns_for_vrf(int vrfid) #if defined(INET6) if ((ifa->ifa_addr->sa_family == AF_INET6) && IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr)) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ continue; } #endif @@ -480,11 +453,11 @@ sctp_init_ifns_for_vrf(int vrfid) #endif ifa_flags = 0; sctp_ifa = sctp_add_addr_to_vrf(vrfid, - ifa, + NULL, if_nametoindex(ifa->ifa_name), 0, ifa->ifa_name, - (void *)ifa, + NULL, ifa->ifa_addr, ifa_flags, 0); @@ -492,11 +465,11 @@ sctp_init_ifns_for_vrf(int vrfid) sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; } } + freeifaddrs(ifas); #endif } #endif - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static void sctp_init_ifns_for_vrf(int vrfid) { @@ -541,7 +514,7 @@ sctp_init_ifns_for_vrf(int vrfid) } if (ifa->ifa_addr->sa_family == AF_INET6) { if (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr)) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ continue; } } else { @@ -555,13 +528,13 @@ sctp_init_ifns_for_vrf(int vrfid) } else { ifa_flags = 0; } - snprintf(name, SCTP_IFNAMSIZ, "%s%d", ifnet_name(ifn), ifnet_unit(ifn)); + SCTP_SNPRINTF(name, SCTP_IFNAMSIZ, "%s%d", ifnet_name(ifn), ifnet_unit(ifn)); sctp_ifa = sctp_add_addr_to_vrf(vrfid, - (void *)ifn, + (void *)ifn, /* XXX */ ifnet_index(ifn), ifnet_type(ifn), name, - (void *)ifa, + (void *)ifa, /* XXX */ ifa->ifa_addr, ifa_flags, 0); @@ -574,8 +547,7 @@ sctp_init_ifns_for_vrf(int vrfid) ifnet_list_free(ifnetlist); } #endif - -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) static void sctp_init_ifns_for_vrf(int vrfid) { @@ -584,6 +556,7 @@ sctp_init_ifns_for_vrf(int vrfid) * any IFA that exists as we float through the * list of IFA's */ + struct epoch_tracker et; struct ifnet *ifn; struct ifaddr *ifa; struct sctp_ifa *sctp_ifa; @@ -593,17 +566,13 @@ sctp_init_ifns_for_vrf(int vrfid) #endif IFNET_RLOCK(); - TAILQ_FOREACH(ifn, &MODULE_GLOBAL(ifnet), if_list) { + NET_EPOCH_ENTER(et); + CK_STAILQ_FOREACH(ifn, &MODULE_GLOBAL(ifnet), if_link) { if (sctp_is_desired_interface_type(ifn) == 0) { /* non desired type */ continue; } -#if (__FreeBSD_version >= 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000 - IF_ADDR_RLOCK(ifn); -#else - IF_ADDR_LOCK(ifn); -#endif - TAILQ_FOREACH(ifa, &ifn->if_addrlist, ifa_list) { + CK_STAILQ_FOREACH(ifa, &ifn->if_addrhead, ifa_link) { if (ifa->ifa_addr == NULL) { continue; } @@ -618,7 +587,7 @@ sctp_init_ifns_for_vrf(int vrfid) #ifdef INET6 case AF_INET6: if (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr)) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ continue; } break; @@ -655,12 +624,8 @@ sctp_init_ifns_for_vrf(int vrfid) sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; } } -#if (__FreeBSD_version >= 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000 - IF_ADDR_RUNLOCK(ifn); -#else - IF_ADDR_UNLOCK(ifn); -#endif } + NET_EPOCH_EXIT(et); IFNET_RUNLOCK(); } #endif @@ -688,10 +653,14 @@ sctp_addr_change(struct ifaddr *ifa, int cmd) return; #else uint32_t ifa_flags = 0; + + if (SCTP_BASE_VAR(sctp_pcb_initialized) == 0) { + return; + } /* BSD only has one VRF, if this changes * we will need to hook in the right * things here to get the id to pass to - * the address managment routine. + * the address management routine. */ if (SCTP_BASE_VAR(first_time) == 0) { /* Special test to see if my ::1 will showup with this */ @@ -723,7 +692,7 @@ sctp_addr_change(struct ifaddr *ifa, int cmd) case AF_INET6: ifa_flags = ((struct in6_ifaddr *)ifa)->ia6_flags; if (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr)) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ return; } break; @@ -734,16 +703,15 @@ sctp_addr_change(struct ifaddr *ifa, int cmd) } if (cmd == RTM_ADD) { (void)sctp_add_addr_to_vrf(SCTP_DEFAULT_VRFID, (void *)ifa->ifa_ifp, -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) ifnet_index(ifa->ifa_ifp), ifnet_type(ifa->ifa_ifp), ifnet_name(ifa->ifa_ifp), #else ifa->ifa_ifp->if_index, ifa->ifa_ifp->if_type, ifa->ifa_ifp->if_xname, #endif (void *)ifa, ifa->ifa_addr, ifa_flags, 1); } else { - sctp_del_addr_from_vrf(SCTP_DEFAULT_VRFID, ifa->ifa_addr, -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) ifnet_index(ifa->ifa_ifp), ifnet_name(ifa->ifa_ifp)); #else @@ -758,26 +726,13 @@ sctp_addr_change(struct ifaddr *ifa, int cmd) #endif } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) void -sctp_add_or_del_interfaces(int (*pred)(struct ifnet *), int add) -{ - struct ifnet *ifn; - struct ifaddr *ifa; - - IFNET_RLOCK(); - TAILQ_FOREACH(ifn, &MODULE_GLOBAL(ifnet), if_list) { - if (!(*pred)(ifn)) { - continue; - } - TAILQ_FOREACH(ifa, &ifn->if_addrlist, ifa_list) { - sctp_addr_change(ifa, add ? RTM_ADD : RTM_DELETE); - } - } - IFNET_RUNLOCK(); +sctp_addr_change_event_handler(void *arg __unused, struct ifaddr *ifa, int cmd) { + sctp_addr_change(ifa, cmd); } #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) void sctp_add_or_del_interfaces(int (*pred)(struct ifnet *), int add) { @@ -809,149 +764,52 @@ struct mbuf * sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int allonebuf, int type) { - struct mbuf *m = NULL; + struct mbuf *m = NULL; +#if defined(__FreeBSD__) || defined(__Userspace__) #if defined(__Userspace__) - - /* - * __Userspace__ - * Using m_clget, which creates and mbuf and a cluster and - * hooks those together. - * TODO: This does not yet have functionality for jumbo packets. - * - */ - - int mbuf_threshold; - if (want_header) { - MGETHDR(m, how, type); - } else { - MGET(m, how, type); - } - if (m == NULL) { - return (NULL); - } - if (allonebuf == 0) - mbuf_threshold = SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count); - else - mbuf_threshold = 1; - - - if ((int)space_needed > (((mbuf_threshold - 1) * MLEN) + MHLEN)) { - MCLGET(m, how); - if (m == NULL) { - return (NULL); - } - - if (SCTP_BUF_IS_EXTENDED(m) == 0) { - sctp_m_freem(m); - return (NULL); - } - } - SCTP_BUF_LEN(m) = 0; - SCTP_BUF_NEXT(m) = SCTP_BUF_NEXT_PKT(m) = NULL; - - /* __Userspace__ - * Check if anything need to be done to ensure logging works - */ -#ifdef SCTP_MBUF_LOGGING - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - sctp_log_mb(m, SCTP_MBUF_IALLOC); - } + m = m_getm2(NULL, space_needed, how, type, want_header ? M_PKTHDR : 0, allonebuf); +#else + m = m_getm2(NULL, space_needed, how, type, want_header ? M_PKTHDR : 0); #endif -#elif defined(__FreeBSD__) && __FreeBSD_version > 1100052 - m = m_getm2(NULL, space_needed, how, type, want_header ? M_PKTHDR : 0); if (m == NULL) { /* bad, no memory */ return (m); } +#if !defined(__Userspace__) if (allonebuf) { if (SCTP_BUF_SIZE(m) < space_needed) { m_freem(m); return (NULL); } - } - if (SCTP_BUF_NEXT(m)) { - sctp_m_freem(SCTP_BUF_NEXT(m)); - SCTP_BUF_NEXT(m) = NULL; - } -#ifdef SCTP_MBUF_LOGGING - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - sctp_log_mb(m, SCTP_MBUF_IALLOC); + KASSERT(SCTP_BUF_NEXT(m) == NULL, ("%s: no chain allowed", __func__)); } #endif -#elif defined(__FreeBSD__) && __FreeBSD_version > 602000 - m = m_getm2(NULL, space_needed, how, type, want_header ? M_PKTHDR : 0); - if (m == NULL) { - /* bad, no memory */ - return (m); - } - if (allonebuf) { - int siz; - if (SCTP_BUF_IS_EXTENDED(m)) { - siz = SCTP_BUF_EXTEND_SIZE(m); - } else { - if (want_header) - siz = MHLEN; - else - siz = MLEN; - } - if (siz < space_needed) { - m_freem(m); - return (NULL); - } - } - if (SCTP_BUF_NEXT(m)) { - sctp_m_freem(SCTP_BUF_NEXT(m)); - SCTP_BUF_NEXT(m) = NULL; - } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { sctp_log_mb(m, SCTP_MBUF_IALLOC); } #endif #else -#if defined(__FreeBSD__) && __FreeBSD_version >= 601000 - int aloc_size; - int index = 0; -#endif int mbuf_threshold; + unsigned int size; + if (want_header) { MGETHDR(m, how, type); + size = MHLEN; } else { MGET(m, how, type); + size = MLEN; } if (m == NULL) { return (NULL); } - if (allonebuf == 0) + if (allonebuf == 0) { mbuf_threshold = SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count); - else + } else { mbuf_threshold = 1; + } - - if (space_needed > (((mbuf_threshold - 1) * MLEN) + MHLEN)) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 601000 - try_again: - index = 4; - if (space_needed <= MCLBYTES) { - aloc_size = MCLBYTES; - } else { - aloc_size = MJUMPAGESIZE; - index = 5; - } - m_cljget(m, how, aloc_size); - if (m == NULL) { - return (NULL); - } - if (SCTP_BUF_IS_EXTENDED(m) == 0) { - if ((aloc_size != MCLBYTES) && - (allonebuf == 0)) { - aloc_size -= 10; - goto try_again; - } - sctp_m_freem(m); - return (NULL); - } -#else + if (space_needed > (unsigned int)(((mbuf_threshold - 1) * MLEN) + MHLEN)) { MCLGET(m, how); if (m == NULL) { return (NULL); @@ -960,7 +818,11 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, sctp_m_freem(m); return (NULL); } -#endif + size = SCTP_BUF_EXTEND_SIZE(m); + } + if (allonebuf != 0 && size < space_needed) { + m_freem(m); + return (NULL); } SCTP_BUF_LEN(m) = 0; SCTP_BUF_NEXT(m) = SCTP_BUF_NEXT_PKT(m) = NULL; @@ -973,7 +835,6 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, return (m); } - #ifdef SCTP_PACKET_LOGGING void sctp_packet_log(struct mbuf *m) @@ -1049,7 +910,6 @@ sctp_packet_log(struct mbuf *m) SCTP_BASE_VAR(packet_log_end)); SCTP_BASE_VAR(packet_log_end) = 0; goto no_log; - } lenat = (int *)&SCTP_BASE_VAR(packet_log_buffer)[thisbegin]; *lenat = total_len; @@ -1075,7 +935,6 @@ sctp_packet_log(struct mbuf *m) atomic_subtract_int(&SCTP_BASE_VAR(packet_log_writers), 1); } - int sctp_copy_out_packet_log(uint8_t *target, int length) { @@ -1083,11 +942,10 @@ sctp_copy_out_packet_log(uint8_t *target, int length) * start copying up to length bytes out. * We return the number of bytes copied. */ - int tocopy, this_copy; + int this_copy; int *lenat; int did_delay = 0; - tocopy = length; if (length < (int)(2 * sizeof(int))) { /* not enough room */ return (0); @@ -1115,7 +973,7 @@ sctp_copy_out_packet_log(uint8_t *target, int length) memcpy((void *)lenat, (void *)SCTP_BASE_VAR(packet_log_buffer), this_copy); if (SCTP_PKTLOG_WRITERS_NEED_LOCK) { atomic_subtract_int(&SCTP_BASE_VAR(packet_log_writers), - SCTP_PKTLOG_WRITERS_NEED_LOCK); + SCTP_PKTLOG_WRITERS_NEED_LOCK); } SCTP_IP_PKTLOG_UNLOCK(); return (this_copy + sizeof(int)); diff --git a/netwerk/sctp/src/netinet/sctp_bsd_addr.h b/netwerk/sctp/src/netinet/sctp_bsd_addr.h index 8373b3b834..bbbc933adc 100755 --- a/netwerk/sctp/src/netinet/sctp_bsd_addr.h +++ b/netwerk/sctp/src/netinet/sctp_bsd_addr.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_bsd_addr.h 237540 2012-06-24 21:25:54Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_BSD_ADDR_H_ @@ -47,7 +49,6 @@ void sctp_wakeup_iterator(void); void sctp_startup_iterator(void); - #ifdef INET6 void sctp_gather_internal_ifa_flags(struct sctp_ifa *ifa); #endif @@ -59,8 +60,10 @@ int sctp_copy_out_packet_log(uint8_t *target, int length); #endif -#if !defined(__Panda__) void sctp_addr_change(struct ifaddr *ifa, int cmd); +#if defined(__FreeBSD__) && !defined(__Userspace__) + +void sctp_addr_change_event_handler(void *, struct ifaddr *, int); #endif void sctp_add_or_del_interfaces(int (*pred)(struct ifnet *), int add); diff --git a/netwerk/sctp/src/netinet/sctp_callout.c b/netwerk/sctp/src/netinet/sctp_callout.c index 3174e3fd4b..ee6cd4cddd 100755 --- a/netwerk/sctp/src/netinet/sctp_callout.c +++ b/netwerk/sctp/src/netinet/sctp_callout.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -32,18 +34,19 @@ #if defined(__Userspace__) #include -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) #include #include #include #endif -#if defined(__Userspace_os_NaCl) +#if defined(__native_client__) #include #endif #include #include #include #include +#include #include #include #else @@ -51,16 +54,26 @@ #include #include #endif +#include /* * Callout/Timer routines for OS that doesn't have them */ #if defined(__APPLE__) || defined(__Userspace__) -int ticks = 0; +static uint32_t ticks = 0; #else extern int ticks; #endif +uint32_t sctp_get_tick_count(void) { + uint32_t ret; + + SCTP_TIMERQ_LOCK(); + ret = ticks; + SCTP_TIMERQ_UNLOCK(); + return ret; +} + /* * SCTP_TIMERQ_LOCK protects: * - SCTP_BASE_INFO(callqueue) @@ -71,20 +84,23 @@ static sctp_os_timer_t *sctp_os_timer_next = NULL; void sctp_os_timer_init(sctp_os_timer_t *c) { - bzero(c, sizeof(*c)); + memset(c, 0, sizeof(*c)); } -void -sctp_os_timer_start(sctp_os_timer_t *c, int to_ticks, void (*ftn) (void *), +int +sctp_os_timer_start(sctp_os_timer_t *c, uint32_t to_ticks, void (*ftn) (void *), void *arg) { + int ret = 0; + /* paranoia */ if ((c == NULL) || (ftn == NULL)) - return; + return (ret); SCTP_TIMERQ_LOCK(); /* check to see if we're rescheduling a timer */ if (c->c_flags & SCTP_CALLOUT_PENDING) { + ret = 1; if (c == sctp_os_timer_next) { sctp_os_timer_next = TAILQ_NEXT(c, tqe); } @@ -101,7 +117,7 @@ sctp_os_timer_start(sctp_os_timer_t *c, int to_ticks, void (*ftn) (void *), * We could unlock/splx here and lock/spl at the TAILQ_INSERT_TAIL, * but there's no point since doing this setup doesn't take much time. */ - if (to_ticks <= 0) + if (to_ticks == 0) to_ticks = 1; c->c_arg = arg; @@ -110,6 +126,7 @@ sctp_os_timer_start(sctp_os_timer_t *c, int to_ticks, void (*ftn) (void *), c->c_time = ticks + to_ticks; TAILQ_INSERT_TAIL(&SCTP_BASE_INFO(callqueue), c, tqe); SCTP_TIMERQ_UNLOCK(); + return (ret); } int @@ -119,7 +136,7 @@ sctp_os_timer_stop(sctp_os_timer_t *c) /* * Don't attempt to delete a callout that's not on the queue. */ - if (!(c->c_flags & SCTP_CALLOUT_PENDING)) { + if ((c->c_flags & SCTP_CALLOUT_PENDING) == 0) { c->c_flags &= ~SCTP_CALLOUT_ACTIVE; SCTP_TIMERQ_UNLOCK(); return (0); @@ -133,8 +150,8 @@ sctp_os_timer_stop(sctp_os_timer_t *c) return (1); } -static void -sctp_handle_tick(int delta) +void +sctp_handle_tick(uint32_t elapsed_ticks) { sctp_os_timer_t *c; void (*c_func)(void *); @@ -142,10 +159,10 @@ sctp_handle_tick(int delta) SCTP_TIMERQ_LOCK(); /* update our tick count */ - ticks += delta; + ticks += elapsed_ticks; c = TAILQ_FIRST(&SCTP_BASE_INFO(callqueue)); while (c) { - if (c->c_time <= ticks) { + if (SCTP_UINT32_GE(ticks, c->c_time)) { sctp_os_timer_next = TAILQ_NEXT(c, tqe); TAILQ_REMOVE(&SCTP_BASE_INFO(callqueue), c, tqe); c_func = c->c_func; @@ -163,7 +180,7 @@ sctp_handle_tick(int delta) SCTP_TIMERQ_UNLOCK(); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) void sctp_timeout(void *arg SCTP_UNUSED) { @@ -178,43 +195,55 @@ sctp_timeout(void *arg SCTP_UNUSED) void * user_sctp_timer_iterate(void *arg) { + sctp_userspace_set_threadname("SCTP timer"); for (;;) { -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) Sleep(TIMEOUT_INTERVAL); #else - struct timeval timeout; + struct timespec amount, remaining; - timeout.tv_sec = 0; - timeout.tv_usec = 1000 * TIMEOUT_INTERVAL; - select(0, NULL, NULL, NULL, &timeout); + remaining.tv_sec = 0; + remaining.tv_nsec = TIMEOUT_INTERVAL * 1000 * 1000; + do { + amount = remaining; + } while (nanosleep(&amount, &remaining) == -1); #endif - if (SCTP_BASE_VAR(timer_thread_should_exit)) { + if (atomic_cmpset_int(&SCTP_BASE_VAR(timer_thread_should_exit), 1, 1)) { break; } - sctp_handle_tick(MSEC_TO_TICKS(TIMEOUT_INTERVAL)); + sctp_handle_tick(sctp_msecs_to_ticks(TIMEOUT_INTERVAL)); } return (NULL); } void -sctp_start_timer(void) +sctp_start_timer_thread(void) { /* * No need to do SCTP_TIMERQ_LOCK_INIT(); * here, it is being done in sctp_pcb_init() */ -#if defined (__Userspace_os_Windows) - if ((SCTP_BASE_VAR(timer_thread) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)user_sctp_timer_iterate, NULL, 0, NULL)) == NULL) { - SCTP_PRINTF("ERROR; Creating ithread failed\n"); - } -#else int rc; - rc = pthread_create(&SCTP_BASE_VAR(timer_thread), NULL, user_sctp_timer_iterate, NULL); + rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(timer_thread), user_sctp_timer_iterate); if (rc) { - SCTP_PRINTF("ERROR; return code from pthread_create() is %d\n", rc); + SCTP_PRINTF("ERROR; return code from sctp_thread_create() is %d\n", rc); + } else { + SCTP_BASE_VAR(timer_thread_started) = 1; } -#endif } +void +sctp_stop_timer_thread(void) +{ + atomic_cmpset_int(&SCTP_BASE_VAR(timer_thread_should_exit), 0, 1); + if (SCTP_BASE_VAR(timer_thread_started)) { +#if defined(_WIN32) + WaitForSingleObject(SCTP_BASE_VAR(timer_thread), INFINITE); + CloseHandle(SCTP_BASE_VAR(timer_thread)); +#else + pthread_join(SCTP_BASE_VAR(timer_thread), NULL); +#endif + } +} #endif diff --git a/netwerk/sctp/src/netinet/sctp_callout.h b/netwerk/sctp/src/netinet/sctp_callout.h index c53c5a4fc7..81fd8530d1 100755 --- a/netwerk/sctp/src/netinet/sctp_callout.h +++ b/netwerk/sctp/src/netinet/sctp_callout.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -28,7 +30,7 @@ * SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include __FBSDID("$FreeBSD$"); #endif @@ -51,26 +53,31 @@ __FBSDID("$FreeBSD$"); #define SCTP_TICKS_PER_FASTTIMO 20 /* called about every 20ms */ #if defined(__Userspace__) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define SCTP_TIMERQ_LOCK() EnterCriticalSection(&SCTP_BASE_VAR(timer_mtx)) #define SCTP_TIMERQ_UNLOCK() LeaveCriticalSection(&SCTP_BASE_VAR(timer_mtx)) #define SCTP_TIMERQ_LOCK_INIT() InitializeCriticalSection(&SCTP_BASE_VAR(timer_mtx)) #define SCTP_TIMERQ_LOCK_DESTROY() DeleteCriticalSection(&SCTP_BASE_VAR(timer_mtx)) #else +#ifdef INVARIANTS +#define SCTP_TIMERQ_LOCK() KASSERT(pthread_mutex_lock(&SCTP_BASE_VAR(timer_mtx)) == 0, ("%s: timer_mtx already locked", __func__)) +#define SCTP_TIMERQ_UNLOCK() KASSERT(pthread_mutex_unlock(&SCTP_BASE_VAR(timer_mtx)) == 0, ("%s: timer_mtx not locked", __func__)) +#else #define SCTP_TIMERQ_LOCK() (void)pthread_mutex_lock(&SCTP_BASE_VAR(timer_mtx)) #define SCTP_TIMERQ_UNLOCK() (void)pthread_mutex_unlock(&SCTP_BASE_VAR(timer_mtx)) -#define SCTP_TIMERQ_LOCK_INIT() (void)pthread_mutex_init(&SCTP_BASE_VAR(timer_mtx), NULL) +#endif +#define SCTP_TIMERQ_LOCK_INIT() (void)pthread_mutex_init(&SCTP_BASE_VAR(timer_mtx), &SCTP_BASE_VAR(mtx_attr)) #define SCTP_TIMERQ_LOCK_DESTROY() (void)pthread_mutex_destroy(&SCTP_BASE_VAR(timer_mtx)) #endif - -extern int ticks; #endif +uint32_t sctp_get_tick_count(void); + TAILQ_HEAD(calloutlist, sctp_callout); struct sctp_callout { TAILQ_ENTRY(sctp_callout) tqe; - int c_time; /* ticks to the event */ + uint32_t c_time; /* ticks to the event */ void *c_arg; /* function argument */ void (*c_func)(void *); /* function to call */ int c_flags; /* state of this entry */ @@ -81,10 +88,18 @@ typedef struct sctp_callout sctp_os_timer_t; #define SCTP_CALLOUT_PENDING 0x0004 /* callout is waiting for timeout */ void sctp_os_timer_init(sctp_os_timer_t *tmr); -void sctp_os_timer_start(sctp_os_timer_t *, int, void (*)(void *), void *); +/* Returns 1 if pending timer was rescheduled, 0 otherwise. */ +int sctp_os_timer_start(sctp_os_timer_t *, uint32_t, void (*)(void *), void *); +/* Returns 1 if pending timer was stopped, 0 otherwise. */ int sctp_os_timer_stop(sctp_os_timer_t *); +void sctp_handle_tick(uint32_t); #define SCTP_OS_TIMER_INIT sctp_os_timer_init +/* + * NOTE: The next two shouldn't be called directly outside of sctp_timer_start() + * and sctp_timer_stop(), since they don't handle incrementing/decrementing + * relevant reference counts. + */ #define SCTP_OS_TIMER_START sctp_os_timer_start #define SCTP_OS_TIMER_STOP sctp_os_timer_stop /* MT FIXME: Is the following correct? */ @@ -94,9 +109,10 @@ int sctp_os_timer_stop(sctp_os_timer_t *); #define SCTP_OS_TIMER_DEACTIVATE(tmr) ((tmr)->c_flags &= ~SCTP_CALLOUT_ACTIVE) #if defined(__Userspace__) -void sctp_start_timer(void); +void sctp_start_timer_thread(void); +void sctp_stop_timer_thread(void); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) void sctp_timeout(void *); #endif diff --git a/netwerk/sctp/src/netinet/sctp_cc_functions.c b/netwerk/sctp/src/netinet/sctp_cc_functions.c index 0e01c9860d..bf2ba8ab54 100755 --- a/netwerk/sctp/src/netinet/sctp_cc_functions.c +++ b/netwerk/sctp/src/netinet/sctp_cc_functions.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_cc_functions.c 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -48,8 +50,8 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_cc_functions.c 279859 2015-03-10 19:49 #include #include #include -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 -#include +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include #endif #define SHIFT_MPTCP_MULTI_N 40 @@ -62,7 +64,7 @@ sctp_enforce_cwnd_limit(struct sctp_association *assoc, struct sctp_nets *net) if ((assoc->max_cwnd > 0) && (net->cwnd > assoc->max_cwnd) && (net->cwnd > (net->mtu - sizeof(struct sctphdr)))) { - net->cwnd = assoc->max_cwnd ; + net->cwnd = assoc->max_cwnd; if (net->cwnd < (net->mtu - sizeof(struct sctphdr))) { net->cwnd = net->mtu - sizeof(struct sctphdr); } @@ -99,8 +101,8 @@ sctp_set_initial_cc_param(struct sctp_tcb *stcb, struct sctp_nets *net) } sctp_enforce_cwnd_limit(assoc, net); net->ssthresh = assoc->peers_rwnd; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, init, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, init, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, 0, net->cwnd); #endif @@ -161,7 +163,6 @@ sctp_cwnd_update_after_fr(struct sctp_tcb *stcb, (uint64_t)net->mtu * (uint64_t)net->ssthresh) / (uint64_t)t_ssthresh); - } if (asoc->sctp_cmt_on_off == SCTP_CMT_RPV2) { uint32_t srtt; @@ -194,8 +195,8 @@ sctp_cwnd_update_after_fr(struct sctp_tcb *stcb, } net->cwnd = net->ssthresh; sctp_enforce_cwnd_limit(asoc, net); -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, fr, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, fr, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, old_cwnd, net->cwnd); #endif @@ -212,7 +213,7 @@ sctp_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ asoc->fast_recovery_tsn = asoc->sending_seq - 1; } else { - asoc->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + asoc->fast_recovery_tsn = lchk->rec.data.tsn - 1; } /* @@ -225,11 +226,12 @@ sctp_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ net->fast_recovery_tsn = asoc->sending_seq - 1; } else { - net->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + net->fast_recovery_tsn = lchk->rec.data.tsn - 1; } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA+SCTP_LOC_32 ); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_1); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } @@ -244,26 +246,25 @@ sctp_cwnd_update_after_fr(struct sctp_tcb *stcb, } /* Defines for instantaneous bw decisions */ -#define SCTP_INST_LOOSING 1 /* Loosing to other flows */ +#define SCTP_INST_LOOSING 1 /* Losing to other flows */ #define SCTP_INST_NEUTRAL 2 /* Neutral, no indication */ #define SCTP_INST_GAINING 3 /* Gaining, step down possible */ - -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) static int cc_bw_same(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw, - uint64_t rtt_offset, uint64_t vtag, uint8_t inst_ind) + uint64_t rtt_offset, uint64_t vtag, uint8_t inst_ind) #else static int cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nbw, - uint64_t rtt_offset, uint8_t inst_ind) + uint64_t rtt_offset, uint8_t inst_ind) #endif { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t oth, probepoint; #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) probepoint = (((uint64_t)net->cwnd) << 32); #endif if (net->rtt > net->cc_mod.rtcc.lbw_rtt + rtt_offset) { @@ -272,10 +273,10 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb * we don't update bw.. so we don't * update the rtt either. */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 5 */ probepoint |= ((5 << 16) | 1); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -292,13 +293,13 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb ((net->cc_mod.rtcc.step_cnt > net->cc_mod.rtcc.steady_step) && ((net->cc_mod.rtcc.step_cnt % net->cc_mod.rtcc.steady_step) == 0))) { /* Try a step down */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -321,10 +322,10 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb * we update both the bw and the rtt here to * lock this in as a good step down. */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 6 */ probepoint |= ((6 << 16) | 0); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -332,13 +333,13 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb probepoint); #endif if (net->cc_mod.rtcc.steady_step) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -367,10 +368,10 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb } /* Ok bw and rtt remained the same .. no update to any */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 7 */ probepoint |= ((7 << 16) | net->cc_mod.rtcc.ret_from_eq); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -404,22 +405,22 @@ cc_bw_same(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nb return ((int)net->cc_mod.rtcc.ret_from_eq); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) static int cc_bw_decrease(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw, uint64_t rtt_offset, - uint64_t vtag, uint8_t inst_ind) + uint64_t vtag, uint8_t inst_ind) #else static int cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nbw, uint64_t rtt_offset, - uint8_t inst_ind) + uint8_t inst_ind) #endif { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t oth, probepoint; #endif /* Bandwidth decreased.*/ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) probepoint = (((uint64_t)net->cwnd) << 32); #endif if (net->rtt > net->cc_mod.rtcc.lbw_rtt+rtt_offset) { @@ -428,10 +429,10 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ if ((net->cwnd > net->cc_mod.rtcc.cwnd_at_bw_set) && (inst_ind != SCTP_INST_LOOSING)) { /* We caused it maybe.. back off? */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* PROBE POINT 1 */ probepoint |= ((1 << 16) | 1); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -445,10 +446,10 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ } return (1); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 2 */ probepoint |= ((2 << 16) | 0); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -457,13 +458,13 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ #endif /* Someone else - fight for more? */ if (net->cc_mod.rtcc.steady_step) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -485,10 +486,10 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ goto out_decision; } else if (net->rtt < net->cc_mod.rtcc.lbw_rtt-rtt_offset) { /* bw & rtt decreased */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 3 */ probepoint |= ((3 << 16) | 0); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -496,13 +497,13 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ probepoint); #endif if (net->cc_mod.rtcc.steady_step) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -521,10 +522,10 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ goto out_decision; } /* The bw decreased but rtt stayed the same */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Probe point 4 */ probepoint |= ((4 << 16) | 0); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -532,13 +533,13 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ probepoint); #endif if (net->cc_mod.rtcc.steady_step) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -565,7 +566,7 @@ cc_bw_decrease(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ } } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) static int cc_bw_increase(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw, uint64_t vtag) #else @@ -573,7 +574,7 @@ static int cc_bw_increase(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_t nbw) #endif { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t oth, probepoint; #endif @@ -583,10 +584,10 @@ cc_bw_increase(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ * update. Note that we pay no attention to * the inst_ind since our overall sum is increasing. */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* PROBE POINT 0 */ probepoint = (((uint64_t)net->cwnd) << 32); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -594,13 +595,13 @@ cc_bw_increase(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ probepoint); #endif if (net->cc_mod.rtcc.steady_step) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) oth = net->cc_mod.rtcc.vol_reduce; oth <<= 16; oth |= net->cc_mod.rtcc.step_cnt; oth <<= 16; oth |= net->cc_mod.rtcc.last_step_state; - SDT_PROBE(sctp, cwnd, net, rttstep, + SDT_PROBE5(sctp, cwnd, net, rttstep, vtag, ((net->cc_mod.rtcc.lbw << 32) | nbw), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -617,14 +618,14 @@ cc_bw_increase(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, uint64_ return (0); } -/* RTCC Algoritm to limit growth of cwnd, return +/* RTCC Algorithm to limit growth of cwnd, return * true if you want to NOT allow cwnd growth */ static int cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) { uint64_t bw_offset, rtt_offset; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t probepoint, rtt, vtag; #endif uint64_t bytes_for_this_rtt, inst_bw; @@ -670,7 +671,7 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) * change within 1/32nd */ bw_shift = SCTP_BASE_SYSCTL(sctp_rttvar_bw); -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) rtt = stcb->asoc.my_vtag; vtag = (rtt << 32) | (((uint32_t)(stcb->sctp_ep->sctp_lport)) << 16) | (stcb->rport); probepoint = (((uint64_t)net->cwnd) << 32); @@ -691,12 +692,12 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) inst_ind = SCTP_INST_LOOSING; else inst_ind = SCTP_INST_NEUTRAL; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) probepoint |= ((0xb << 16) | inst_ind); #endif } else { inst_ind = net->cc_mod.rtcc.last_inst_ind; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) inst_bw = bytes_for_this_rtt / (uint64_t)(net->rtt); /* Can't determine do not change */ probepoint |= ((0xc << 16) | inst_ind); @@ -704,14 +705,14 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) } } else { inst_ind = net->cc_mod.rtcc.last_inst_ind; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) inst_bw = bytes_for_this_rtt; /* Can't determine do not change */ probepoint |= ((0xd << 16) | inst_ind); #endif } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, rttvar, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((nbw << 32) | inst_bw), ((net->cc_mod.rtcc.lbw_rtt << 32) | rtt), @@ -724,7 +725,7 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) } bw_offset = net->cc_mod.rtcc.lbw >> bw_shift; if (nbw > net->cc_mod.rtcc.lbw + bw_offset) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ret = cc_bw_increase(stcb, net, nbw, vtag); #else ret = cc_bw_increase(stcb, net, nbw); @@ -733,7 +734,7 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) } rtt_offset = net->cc_mod.rtcc.lbw_rtt >> SCTP_BASE_SYSCTL(sctp_rttvar_rtt); if (nbw < net->cc_mod.rtcc.lbw - bw_offset) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ret = cc_bw_decrease(stcb, net, nbw, rtt_offset, vtag, inst_ind); #else ret = cc_bw_decrease(stcb, net, nbw, rtt_offset, inst_ind); @@ -744,7 +745,7 @@ cc_bw_limit(struct sctp_tcb *stcb, struct sctp_nets *net, uint64_t nbw) * we are in a situation where * the bw stayed the same. */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ret = cc_bw_same(stcb, net, nbw, rtt_offset, vtag, inst_ind); #else ret = cc_bw_same(stcb, net, nbw, rtt_offset, inst_ind); @@ -760,10 +761,10 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, int accum_moved, int reneged_all SCTP_UNUSED, int will_exit, int use_rtcc) { struct sctp_nets *net; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) int old_cwnd; #endif - uint32_t t_ssthresh, t_cwnd, incr; + uint32_t t_ssthresh, incr; uint64_t t_ucwnd_sbw; uint64_t t_path_mptcp; uint64_t mptcp_like_alpha; @@ -772,7 +773,6 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, /* MT FIXME: Don't compute this over and over again */ t_ssthresh = 0; - t_cwnd = 0; t_ucwnd_sbw = 0; t_path_mptcp = 0; mptcp_like_alpha = 1; @@ -782,7 +782,6 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, max_path = 0; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { t_ssthresh += net->ssthresh; - t_cwnd += net->cwnd; /* lastsa>>3; we don't need to devide ...*/ srtt = net->lastsa; if (srtt > 0) { @@ -814,7 +813,6 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, /* update cwnd and Early FR */ /******************************/ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - #ifdef JANA_CMT_FAST_RECOVERY /* * CMT fast recovery code. Need to debug. @@ -834,7 +832,7 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, continue; } #ifdef JANA_CMT_FAST_RECOVERY - /* CMT fast recovery code + /* CMT fast recovery code */ /* if (sctp_cmt_on_off > 0 && net->fast_retran_loss_recovery && net->will_exit_fast_recovery == 0) { @@ -876,7 +874,7 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, continue; } } else { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t vtag, probepoint; probepoint = (((uint64_t)net->cwnd) << 32); @@ -885,7 +883,7 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, (((uint32_t)(stcb->sctp_ep->sctp_lport)) << 16) | (stcb->rport); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, nbw, ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -912,7 +910,7 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, if (net->flight_size + net->net_ack >= net->cwnd) { uint32_t limit; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) old_cwnd = net->cwnd; #endif switch (asoc->sctp_cmt_on_off) { @@ -984,8 +982,8 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, sctp_log_cwnd(stcb, net, incr, SCTP_CWND_LOG_FROM_SS); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, ack, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, ack, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1005,9 +1003,9 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, net->partial_bytes_acked += net->net_ack; if ((net->flight_size + net->net_ack >= net->cwnd) && - (net->partial_bytes_acked >= net->cwnd)) { + (net->partial_bytes_acked >= net->cwnd)) { net->partial_bytes_acked -= net->cwnd; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) old_cwnd = net->cwnd; #endif switch (asoc->sctp_cmt_on_off) { @@ -1048,8 +1046,8 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, } net->cwnd += incr; sctp_enforce_cwnd_limit(asoc, net); -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, ack, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, ack, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1075,7 +1073,7 @@ sctp_cwnd_update_after_sack_common(struct sctp_tcb *stcb, } } -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) static void sctp_cwnd_update_exit_pf_common(struct sctp_tcb *stcb, struct sctp_nets *net) #else @@ -1083,14 +1081,14 @@ static void sctp_cwnd_update_exit_pf_common(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net) #endif { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) int old_cwnd; old_cwnd = net->cwnd; #endif net->cwnd = net->mtu; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, ack, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, ack, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, old_cwnd, net->cwnd); #endif @@ -1098,7 +1096,6 @@ sctp_cwnd_update_exit_pf_common(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_n (void *)net, net->cwnd); } - static void sctp_cwnd_update_after_timeout(struct sctp_tcb *stcb, struct sctp_nets *net) { @@ -1162,8 +1159,8 @@ sctp_cwnd_update_after_timeout(struct sctp_tcb *stcb, struct sctp_nets *net) } net->cwnd = net->mtu; net->partial_bytes_acked = 0; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, to, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, to, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1176,7 +1173,7 @@ sctp_cwnd_update_after_timeout(struct sctp_tcb *stcb, struct sctp_nets *net) static void sctp_cwnd_update_after_ecn_echo_common(struct sctp_tcb *stcb, struct sctp_nets *net, - int in_window, int num_pkt_lost, int use_rtcc) + int in_window, int num_pkt_lost, int use_rtcc) { int old_cwnd = net->cwnd; if ((use_rtcc) && (net->lan_type == SCTP_LAN_LOCAL) && (net->cc_mod.rtcc.use_dccc_ecn)) { @@ -1198,16 +1195,15 @@ sctp_cwnd_update_after_ecn_echo_common(struct sctp_tcb *stcb, struct sctp_nets * sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_SAT); } } else { - /* Further tuning down required over the drastic orginal cut */ + /* Further tuning down required over the drastic original cut */ net->ssthresh -= (net->mtu * num_pkt_lost); net->cwnd -= (net->mtu * num_pkt_lost); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_SAT); } - } SCTP_STAT_INCR(sctps_ecnereducedcwnd); - } else { + } else { if (in_window == 0) { SCTP_STAT_INCR(sctps_ecnereducedcwnd); net->ssthresh = net->cwnd / 2; @@ -1217,8 +1213,8 @@ sctp_cwnd_update_after_ecn_echo_common(struct sctp_tcb *stcb, struct sctp_nets * net->RTO <<= 1; } net->cwnd = net->ssthresh; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, ecn, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, ecn, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1338,8 +1334,8 @@ sctp_cwnd_update_after_packet_dropped(struct sctp_tcb *stcb, sctp_enforce_cwnd_limit(&stcb->asoc, net); if (net->cwnd - old_cwnd != 0) { /* log only changes */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, pd, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, pd, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1354,7 +1350,7 @@ sctp_cwnd_update_after_packet_dropped(struct sctp_tcb *stcb, static void sctp_cwnd_update_after_output(struct sctp_tcb *stcb, - struct sctp_nets *net, int burst_limit) + struct sctp_nets *net, int burst_limit) { int old_cwnd = net->cwnd; @@ -1363,8 +1359,8 @@ sctp_cwnd_update_after_output(struct sctp_tcb *stcb, if (burst_limit) { net->cwnd = (net->flight_size + (burst_limit * net->mtu)); sctp_enforce_cwnd_limit(&stcb->asoc, net); -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 - SDT_PROBE(sctp, cwnd, net, bl, +#if defined(__FreeBSD__) && !defined(__Userspace__) + SDT_PROBE5(sctp, cwnd, net, bl, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -1378,47 +1374,45 @@ sctp_cwnd_update_after_output(struct sctp_tcb *stcb, static void sctp_cwnd_update_after_sack(struct sctp_tcb *stcb, - struct sctp_association *asoc, - int accum_moved, int reneged_all, int will_exit) + struct sctp_association *asoc, + int accum_moved, int reneged_all, int will_exit) { - /* Passing a zero argument in last disables the rtcc algoritm */ + /* Passing a zero argument in last disables the rtcc algorithm */ sctp_cwnd_update_after_sack_common(stcb, asoc, accum_moved, reneged_all, will_exit, 0); } static void sctp_cwnd_update_after_ecn_echo(struct sctp_tcb *stcb, struct sctp_nets *net, - int in_window, int num_pkt_lost) + int in_window, int num_pkt_lost) { - /* Passing a zero argument in last disables the rtcc algoritm */ + /* Passing a zero argument in last disables the rtcc algorithm */ sctp_cwnd_update_after_ecn_echo_common(stcb, net, in_window, num_pkt_lost, 0); } /* Here starts the RTCCVAR type CC invented by RRS which * is a slight mod to RFC2581. We reuse a common routine or - * two since these algoritms are so close and need to + * two since these algorithms are so close and need to * remain the same. */ static void sctp_cwnd_update_rtcc_after_ecn_echo(struct sctp_tcb *stcb, struct sctp_nets *net, - int in_window, int num_pkt_lost) + int in_window, int num_pkt_lost) { sctp_cwnd_update_after_ecn_echo_common(stcb, net, in_window, num_pkt_lost, 1); } - -static -void sctp_cwnd_update_rtcc_tsn_acknowledged(struct sctp_nets *net, - struct sctp_tmit_chunk *tp1) +static void sctp_cwnd_update_rtcc_tsn_acknowledged(struct sctp_nets *net, + struct sctp_tmit_chunk *tp1) { net->cc_mod.rtcc.bw_bytes += tp1->send_size; } static void sctp_cwnd_prepare_rtcc_net_for_sack(struct sctp_tcb *stcb SCTP_UNUSED, - struct sctp_nets *net) + struct sctp_nets *net) { if (net->cc_mod.rtcc.tls_needs_set > 0) { - /* We had a bw measurment going on */ + /* We had a bw measurement going on */ struct timeval ltls; SCTP_GETPTIME_TIMEVAL(<ls); timevalsub(<ls, &net->cc_mod.rtcc.tls); @@ -1428,21 +1422,21 @@ sctp_cwnd_prepare_rtcc_net_for_sack(struct sctp_tcb *stcb SCTP_UNUSED, static void sctp_cwnd_new_rtcc_transmission_begins(struct sctp_tcb *stcb, - struct sctp_nets *net) + struct sctp_nets *net) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t vtag, probepoint; #endif if (net->cc_mod.rtcc.lbw) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Clear the old bw.. we went to 0 in-flight */ vtag = (net->rtt << 32) | (((uint32_t)(stcb->sctp_ep->sctp_lport)) << 16) | (stcb->rport); probepoint = (((uint64_t)net->cwnd) << 32); /* Probe point 8 */ probepoint |= ((8 << 16) | 0); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, ((net->cc_mod.rtcc.lbw << 32) | 0), ((net->cc_mod.rtcc.lbw_rtt << 32) | net->rtt), @@ -1489,21 +1483,21 @@ sctp_cwnd_new_rtcc_transmission_begins(struct sctp_tcb *stcb, static void sctp_set_rtcc_initial_cc_param(struct sctp_tcb *stcb, - struct sctp_nets *net) + struct sctp_nets *net) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) uint64_t vtag, probepoint; #endif sctp_set_initial_cc_param(stcb, net); stcb->asoc.use_precise_time = 1; -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 +#if defined(__FreeBSD__) && !defined(__Userspace__) probepoint = (((uint64_t)net->cwnd) << 32); probepoint |= ((9 << 16) | 0); vtag = (net->rtt << 32) | (((uint32_t)(stcb->sctp_ep->sctp_lport)) << 16) | (stcb->rport); - SDT_PROBE(sctp, cwnd, net, rttvar, + SDT_PROBE5(sctp, cwnd, net, rttvar, vtag, 0, 0, @@ -1524,15 +1518,14 @@ sctp_set_rtcc_initial_cc_param(struct sctp_tcb *stcb, net->cc_mod.rtcc.use_dccc_ecn = SCTP_BASE_SYSCTL(sctp_use_dccc_ecn); net->cc_mod.rtcc.step_cnt = 0; net->cc_mod.rtcc.last_step_state = 0; - - } static int sctp_cwnd_rtcc_socket_option(struct sctp_tcb *stcb, int setorget, - struct sctp_cc_option *cc_opt) + struct sctp_cc_option *cc_opt) { struct sctp_nets *net; + if (setorget == 1) { /* a set */ if (cc_opt->option == SCTP_CC_OPT_RTCC_SETMODE) { @@ -1597,10 +1590,10 @@ sctp_cwnd_update_rtcc_packet_transmitted(struct sctp_tcb *stcb SCTP_UNUSED, static void sctp_cwnd_update_rtcc_after_sack(struct sctp_tcb *stcb, - struct sctp_association *asoc, - int accum_moved, int reneged_all, int will_exit) + struct sctp_association *asoc, + int accum_moved, int reneged_all, int will_exit) { - /* Passing a one argument at the last enables the rtcc algoritm */ + /* Passing a one argument at the last enables the rtcc algorithm */ sctp_cwnd_update_after_sack_common(stcb, asoc, accum_moved, reneged_all, will_exit, 1); } @@ -1616,13 +1609,13 @@ sctp_rtt_rtcc_calculated(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_hs_raise_drop { int32_t cwnd; - int32_t increase; - int32_t drop_percent; + int8_t increase; + int8_t drop_percent; }; #define SCTP_HS_TABLE_SIZE 73 -struct sctp_hs_raise_drop sctp_cwnd_adjust[SCTP_HS_TABLE_SIZE] = { +static const struct sctp_hs_raise_drop sctp_cwnd_adjust[SCTP_HS_TABLE_SIZE] = { {38, 1, 50}, /* 0 */ {118, 2, 44}, /* 1 */ {221, 3, 41}, /* 2 */ @@ -1722,7 +1715,7 @@ sctp_hs_cwnd_increase(struct sctp_tcb *stcb, struct sctp_nets *net) } } net->last_hs_used = indx; - incr = ((sctp_cwnd_adjust[indx].increase) << 10); + incr = (((int32_t)sctp_cwnd_adjust[indx].increase) << 10); net->cwnd += incr; } sctp_enforce_cwnd_limit(&stcb->asoc, net); @@ -1748,7 +1741,7 @@ sctp_hs_cwnd_decrease(struct sctp_tcb *stcb, struct sctp_nets *net) } else { /* drop by the proper amount */ net->ssthresh = net->cwnd - (int)((net->cwnd / 100) * - sctp_cwnd_adjust[net->last_hs_used].drop_percent); + (int32_t)sctp_cwnd_adjust[net->last_hs_used].drop_percent); net->cwnd = net->ssthresh; /* now where are we */ indx = net->last_hs_used; @@ -1805,7 +1798,7 @@ sctp_hs_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ asoc->fast_recovery_tsn = asoc->sending_seq - 1; } else { - asoc->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + asoc->fast_recovery_tsn = lchk->rec.data.tsn - 1; } /* @@ -1818,11 +1811,12 @@ sctp_hs_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ net->fast_recovery_tsn = asoc->sending_seq - 1; } else { - net->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + net->fast_recovery_tsn = lchk->rec.data.tsn - 1; } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA+SCTP_LOC_32); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_2); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } @@ -1838,15 +1832,14 @@ sctp_hs_cwnd_update_after_fr(struct sctp_tcb *stcb, static void sctp_hs_cwnd_update_after_sack(struct sctp_tcb *stcb, - struct sctp_association *asoc, - int accum_moved, int reneged_all SCTP_UNUSED, int will_exit) + struct sctp_association *asoc, + int accum_moved, int reneged_all SCTP_UNUSED, int will_exit) { struct sctp_nets *net; /******************************/ /* update cwnd and Early FR */ /******************************/ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - #ifdef JANA_CMT_FAST_RECOVERY /* * CMT fast recovery code. Need to debug. @@ -1866,7 +1859,7 @@ sctp_hs_cwnd_update_after_sack(struct sctp_tcb *stcb, continue; } #ifdef JANA_CMT_FAST_RECOVERY - /* CMT fast recovery code + /* CMT fast recovery code */ /* if (sctp_cmt_on_off > 0 && net->fast_retran_loss_recovery && net->will_exit_fast_recovery == 0) { @@ -1930,7 +1923,6 @@ sctp_hs_cwnd_update_after_sack(struct sctp_tcb *stcb, } } - /* * H-TCP congestion control. The algorithm is detailed in: * R.N.Shorten, D.J.Leith: @@ -1939,7 +1931,6 @@ sctp_hs_cwnd_update_after_sack(struct sctp_tcb *stcb, * http://www.hamilton.ie/net/htcp3.pdf */ - static int use_rtt_scaling = 1; static int use_bandwidth_switch = 1; @@ -1958,7 +1949,7 @@ htcp_cong_time(struct htcp *ca) static inline uint32_t htcp_ccount(struct htcp *ca) { - return (htcp_cong_time(ca)/ca->minRTT); + return (ca->minRTT == 0 ? htcp_cong_time(ca) : htcp_cong_time(ca)/ca->minRTT); } static inline void @@ -1996,7 +1987,7 @@ measure_rtt(struct sctp_nets *net) if (net->fast_retran_ip == 0 && net->ssthresh < 0xFFFF && htcp_ccount(&net->cc_mod.htcp_ca) > 3) { if (net->cc_mod.htcp_ca.maxRTT < net->cc_mod.htcp_ca.minRTT) net->cc_mod.htcp_ca.maxRTT = net->cc_mod.htcp_ca.minRTT; - if (net->cc_mod.htcp_ca.maxRTT < srtt && srtt <= net->cc_mod.htcp_ca.maxRTT+MSEC_TO_TICKS(20)) + if (net->cc_mod.htcp_ca.maxRTT < srtt && srtt <= net->cc_mod.htcp_ca.maxRTT+sctp_msecs_to_ticks(20)) net->cc_mod.htcp_ca.maxRTT = srtt; } } @@ -2056,7 +2047,7 @@ htcp_beta_update(struct htcp *ca, uint32_t minRTT, uint32_t maxRTT) } } - if (ca->modeswitch && minRTT > (uint32_t)MSEC_TO_TICKS(10) && maxRTT) { + if (ca->modeswitch && minRTT > sctp_msecs_to_ticks(10) && maxRTT) { ca->beta = (minRTT<<7)/maxRTT; if (ca->beta < BETA_MIN) ca->beta = BETA_MIN; @@ -2077,19 +2068,19 @@ htcp_alpha_update(struct htcp *ca) if (diff > (uint32_t)hz) { diff -= hz; - factor = 1+ ( 10*diff + ((diff/2)*(diff/2)/hz))/hz; + factor = 1+ (10 * diff + ((diff / 2) * (diff / 2) / hz)) / hz; } if (use_rtt_scaling && minRTT) { - uint32_t scale = (hz<<3)/(10*minRTT); - scale = min(max(scale, 1U<<2), 10U<<3); /* clamping ratio to interval [0.5,10]<<3 */ - factor = (factor<<3)/scale; - if (!factor) + uint32_t scale = (hz << 3) / (10 * minRTT); + scale = min(max(scale, 1U << 2), 10U << 3); /* clamping ratio to interval [0.5,10]<<3 */ + factor = (factor << 3) / scale; + if (factor != 0) factor = 1; } - ca->alpha = 2*factor*((1<<7)-ca->beta); - if (!ca->alpha) + ca->alpha = 2 * factor * ((1 << 7) - ca->beta); + if (ca->alpha != 0) ca->alpha = ALPHA_BASE; } @@ -2127,10 +2118,10 @@ htcp_cong_avoid(struct sctp_tcb *stcb, struct sctp_nets *net) { /*- * How to handle these functions? - * if (!tcp_is_cwnd_limited(sk, in_flight)) RRS - good question. + * if (!tcp_is_cwnd_limited(sk, in_flight)) RRS - good question. * return; */ - if (net->cwnd <= net->ssthresh) { + if (net->cwnd <= net->ssthresh) { /* We are in slow start */ if (net->flight_size + net->net_ack >= net->cwnd) { if (net->net_ack > (net->mtu * SCTP_BASE_SYSCTL(sctp_L2_abc_variable))) { @@ -2146,7 +2137,6 @@ htcp_cong_avoid(struct sctp_tcb *stcb, struct sctp_nets *net) sctp_log_cwnd(stcb, net, net->net_ack, SCTP_CWND_LOG_FROM_SS); } - } sctp_enforce_cwnd_limit(&stcb->asoc, net); } else { @@ -2163,7 +2153,7 @@ htcp_cong_avoid(struct sctp_tcb *stcb, struct sctp_nets *net) */ /* What is snd_cwnd_cnt?? */ if (((net->partial_bytes_acked/net->mtu * net->cc_mod.htcp_ca.alpha) >> 7)*net->mtu >= net->cwnd) { - /*- + /*- * Does SCTP have a cwnd clamp? * if (net->snd_cwnd < net->snd_cwnd_clamp) - Nope (RRS). */ @@ -2234,7 +2224,6 @@ sctp_htcp_cwnd_update_after_sack(struct sctp_tcb *stcb, /* update cwnd and Early FR */ /******************************/ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - #ifdef JANA_CMT_FAST_RECOVERY /* * CMT fast recovery code. Need to debug. @@ -2254,7 +2243,7 @@ sctp_htcp_cwnd_update_after_sack(struct sctp_tcb *stcb, continue; } #ifdef JANA_CMT_FAST_RECOVERY - /* CMT fast recovery code + /* CMT fast recovery code */ /* if (sctp_cmt_on_off > 0 && net->fast_retran_loss_recovery && net->will_exit_fast_recovery == 0) { @@ -2331,7 +2320,7 @@ sctp_htcp_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ asoc->fast_recovery_tsn = asoc->sending_seq - 1; } else { - asoc->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + asoc->fast_recovery_tsn = lchk->rec.data.tsn - 1; } /* @@ -2344,11 +2333,12 @@ sctp_htcp_cwnd_update_after_fr(struct sctp_tcb *stcb, /* Mark end of the window */ net->fast_recovery_tsn = asoc->sending_seq - 1; } else { - net->fast_recovery_tsn = lchk->rec.data.TSN_seq - 1; + net->fast_recovery_tsn = lchk->rec.data.tsn - 1; } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA+SCTP_LOC_32); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_3); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } @@ -2403,9 +2393,9 @@ sctp_htcp_cwnd_update_after_ecn_echo(struct sctp_tcb *stcb, } } -struct sctp_cc_functions sctp_cc_functions[] = { +const struct sctp_cc_functions sctp_cc_functions[] = { { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) && !defined(__MINGW32__) sctp_set_initial_cc_param, sctp_cwnd_update_after_sack, sctp_cwnd_update_exit_pf_common, @@ -2426,7 +2416,7 @@ struct sctp_cc_functions sctp_cc_functions[] = { #endif }, { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) && !defined(__MINGW32__) sctp_set_initial_cc_param, sctp_hs_cwnd_update_after_sack, sctp_cwnd_update_exit_pf_common, @@ -2447,7 +2437,7 @@ struct sctp_cc_functions sctp_cc_functions[] = { #endif }, { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) && !defined(__MINGW32__) sctp_htcp_set_initial_cc_param, sctp_htcp_cwnd_update_after_sack, sctp_cwnd_update_exit_pf_common, @@ -2468,7 +2458,7 @@ struct sctp_cc_functions sctp_cc_functions[] = { #endif }, { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) && !defined(__MINGW32__) sctp_set_rtcc_initial_cc_param, sctp_cwnd_update_rtcc_after_sack, sctp_cwnd_update_exit_pf_common, diff --git a/netwerk/sctp/src/netinet/sctp_constants.h b/netwerk/sctp/src/netinet/sctp_constants.h index ff4874d9df..ca2ed70b59 100755 --- a/netwerk/sctp/src/netinet/sctp_constants.h +++ b/netwerk/sctp/src/netinet/sctp_constants.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,18 +32,18 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_constants.h 271204 2014-09-06 19:12:14Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_CONSTANTS_H_ #define _NETINET_SCTP_CONSTANTS_H_ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) && defined(__Userspace__) extern void getwintimeofday(struct timeval *tv); -#endif +#endif /* IANA assigned port number for SCTP over UDP encapsulation */ #define SCTP_OVER_UDP_TUNNELING_PORT 9899 @@ -71,6 +73,10 @@ extern void getwintimeofday(struct timeval *tv); */ #define SCTP_LARGEST_INIT_ACCEPTED (65535 - 2048) +/* Largest length of a chunk */ +#define SCTP_MAX_CHUNK_LENGTH 0xffff +/* Largest length of an error cause */ +#define SCTP_MAX_CAUSE_LENGTH 0xffff /* Number of addresses where we just skip the counting */ #define SCTP_COUNT_LIMIT 40 @@ -86,22 +92,16 @@ extern void getwintimeofday(struct timeval *tv); /* #define SCTP_AUDITING_ENABLED 1 used for debug/auditing */ #define SCTP_AUDIT_SIZE 256 - #define SCTP_KTRHEAD_NAME "sctp_iterator" #define SCTP_KTHREAD_PAGES 0 #define SCTP_MCORE_NAME "sctp_core_worker" - /* If you support Multi-VRF how big to * make the initial array of VRF's to. */ #define SCTP_DEFAULT_VRF_SIZE 4 -/* constants for rto calc */ -#define sctp_align_safe_nocopy 0 -#define sctp_align_unsafe_makecopy 1 - /* JRS - Values defined for the HTCP algorithm */ #define ALPHA_BASE (1<<7) /* 1.0 with shift << 7 */ #define BETA_MIN (1<<6) /* 0.5 with shift << 7 */ @@ -266,7 +266,6 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_LOCK_UNKNOWN 2 - /* number of associations by default for zone allocation */ #define SCTP_MAX_NUM_OF_ASOC 40000 /* how many addresses per assoc remote and local */ @@ -276,7 +275,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_DEFAULT_MULTIPLE_ASCONFS 0 /* - * Theshold for rwnd updates, we have to read (sb_hiwat >> + * Threshold for rwnd updates, we have to read (sb_hiwat >> * SCTP_RWND_HIWAT_SHIFT) before we will look to see if we need to send a * window update sack. When we look, we compare the last rwnd we sent vs the * current rwnd. It too must be greater than this value. Using 3 divdes the @@ -346,6 +345,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_RTT_FROM_NON_DATA 0 #define SCTP_RTT_FROM_DATA 1 +#define PR_SCTP_UNORDERED_FLAG 0x0001 /* IP hdr (20/40) + 12+2+2 (enet) + sctp common 12 */ #define SCTP_FIRST_MBUF_RESV 68 @@ -387,15 +387,14 @@ extern void getwintimeofday(struct timeval *tv); /* align to 32-bit sizes */ #define SCTP_SIZE32(x) ((((x) + 3) >> 2) << 2) -#define IS_SCTP_CONTROL(a) ((a)->chunk_type != SCTP_DATA) -#define IS_SCTP_DATA(a) ((a)->chunk_type == SCTP_DATA) - +#define IS_SCTP_CONTROL(a) (((a)->chunk_type != SCTP_DATA) && ((a)->chunk_type != SCTP_IDATA)) +#define IS_SCTP_DATA(a) (((a)->chunk_type == SCTP_DATA) || ((a)->chunk_type == SCTP_IDATA)) /* SCTP parameter types */ /*************0x0000 series*************/ #define SCTP_HEARTBEAT_INFO 0x0001 #if defined(__Userspace__) -#define SCTP_CONN_ADDRESS 0x0004 +#define SCTP_CONN_ADDRESS 0x0004 #endif #define SCTP_IPV4_ADDRESS 0x0005 #define SCTP_IPV6_ADDRESS 0x0006 @@ -405,43 +404,34 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_HOSTNAME_ADDRESS 0x000b #define SCTP_SUPPORTED_ADDRTYPE 0x000c -/* draft-ietf-stewart-tsvwg-strreset-xxx */ +/* RFC 6525 */ #define SCTP_STR_RESET_OUT_REQUEST 0x000d #define SCTP_STR_RESET_IN_REQUEST 0x000e #define SCTP_STR_RESET_TSN_REQUEST 0x000f #define SCTP_STR_RESET_RESPONSE 0x0010 #define SCTP_STR_RESET_ADD_OUT_STREAMS 0x0011 -#define SCTP_STR_RESET_ADD_IN_STREAMS 0x0012 +#define SCTP_STR_RESET_ADD_IN_STREAMS 0x0012 #define SCTP_MAX_RESET_PARAMS 2 -#define SCTP_STREAM_RESET_TSN_DELTA 0x1000 +#define SCTP_STREAM_RESET_TSN_DELTA 0x1000 /*************0x4000 series*************/ /*************0x8000 series*************/ #define SCTP_ECN_CAPABLE 0x8000 - -/* draft-ietf-tsvwg-auth-xxx */ +#define SCTP_ZERO_CHECKSUM_ACCEPTABLE 0x8001 +/* RFC 4895 */ #define SCTP_RANDOM 0x8002 #define SCTP_CHUNK_LIST 0x8003 #define SCTP_HMAC_LIST 0x8004 -/* - * draft-ietf-tsvwg-addip-sctp-xx param=0x8008 len=0xNNNN Byte | Byte | Byte - * | Byte Byte | Byte ... - * - * Where each byte is a chunk type extension supported. For example, to support - * all chunks one would have (in hex): - * - * 80 01 00 09 C0 C1 80 81 82 00 00 00 - * - * Has the parameter. C0 = PR-SCTP (RFC3758) C1, 80 = ASCONF (addip draft) 81 - * = Packet Drop 82 = Stream Reset 83 = Authentication - */ -#define SCTP_SUPPORTED_CHUNK_EXT 0x8008 +/* RFC 4820 */ +#define SCTP_PAD 0x8005 +/* RFC 5061 */ +#define SCTP_SUPPORTED_CHUNK_EXT 0x8008 /*************0xC000 series*************/ #define SCTP_PRSCTP_SUPPORTED 0xc000 -/* draft-ietf-tsvwg-addip-sctp */ +/* RFC 5061 */ #define SCTP_ADD_IP_ADDRESS 0xc001 #define SCTP_DEL_IP_ADDRESS 0xc002 #define SCTP_ERROR_CAUSE_IND 0xc003 @@ -449,8 +439,8 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_SUCCESS_REPORT 0xc005 #define SCTP_ULP_ADAPTATION 0xc006 /* behave-nat-draft */ -#define SCTP_HAS_NAT_SUPPORT 0xc007 -#define SCTP_NAT_VTAGS 0xc008 +#define SCTP_HAS_NAT_SUPPORT 0xc007 +#define SCTP_NAT_VTAGS 0xc008 /* bits for TOS field */ #define SCTP_ECT0_BIT 0x02 @@ -464,9 +454,8 @@ extern void getwintimeofday(struct timeval *tv); /* mask to get sticky */ #define SCTP_STICKY_OPTIONS_MASK 0x0c - /* - * SCTP states for internal state machine XXX (should match "user" values) + * SCTP states for internal state machine */ #define SCTP_STATE_EMPTY 0x0000 #define SCTP_STATE_INUSE 0x0001 @@ -484,10 +473,14 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_STATE_IN_ACCEPT_QUEUE 0x1000 #define SCTP_STATE_MASK 0x007f -#define SCTP_GET_STATE(asoc) ((asoc)->state & SCTP_STATE_MASK) -#define SCTP_SET_STATE(asoc, newstate) ((asoc)->state = ((asoc)->state & ~SCTP_STATE_MASK) | newstate) -#define SCTP_CLEAR_SUBSTATE(asoc, substate) ((asoc)->state &= ~substate) -#define SCTP_ADD_SUBSTATE(asoc, substate) ((asoc)->state |= substate) +#define SCTP_GET_STATE(_stcb) \ + ((_stcb)->asoc.state & SCTP_STATE_MASK) +#define SCTP_SET_STATE(_stcb, _state) \ + sctp_set_state(_stcb, _state) +#define SCTP_CLEAR_SUBSTATE(_stcb, _substate) \ + (_stcb)->asoc.state &= ~(_substate) +#define SCTP_ADD_SUBSTATE(_stcb, _substate) \ + sctp_add_substate(_stcb, _substate) /* SCTP reachability state for each address */ #define SCTP_ADDR_REACHABLE 0x001 @@ -517,7 +510,7 @@ extern void getwintimeofday(struct timeval *tv); /* Maximum the mapping array will grow to (TSN mapping array) */ #define SCTP_MAPPING_ARRAY 512 -/* size of the inital malloc on the mapping array */ +/* size of the initial malloc on the mapping array */ #define SCTP_INITIAL_MAPPING_ARRAY 16 /* how much we grow the mapping array each call */ #define SCTP_MAPPING_ARRAY_INCR 32 @@ -553,26 +546,22 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_TIMER_TYPE_ASCONF 10 #define SCTP_TIMER_TYPE_SHUTDOWNGUARD 11 #define SCTP_TIMER_TYPE_AUTOCLOSE 12 -#define SCTP_TIMER_TYPE_EVENTWAKE 13 -#define SCTP_TIMER_TYPE_STRRESET 14 -#define SCTP_TIMER_TYPE_INPKILL 15 -#define SCTP_TIMER_TYPE_ASOCKILL 16 -#define SCTP_TIMER_TYPE_ADDR_WQ 17 -#define SCTP_TIMER_TYPE_ZERO_COPY 18 -#define SCTP_TIMER_TYPE_ZCOPY_SENDQ 19 -#define SCTP_TIMER_TYPE_PRIM_DELETED 20 +#define SCTP_TIMER_TYPE_STRRESET 13 +#define SCTP_TIMER_TYPE_INPKILL 14 +#define SCTP_TIMER_TYPE_ASOCKILL 15 +#define SCTP_TIMER_TYPE_ADDR_WQ 16 +#define SCTP_TIMER_TYPE_PRIM_DELETED 17 /* add new timers here - and increment LAST */ -#define SCTP_TIMER_TYPE_LAST 21 +#define SCTP_TIMER_TYPE_LAST 18 #define SCTP_IS_TIMER_TYPE_VALID(t) (((t) > SCTP_TIMER_TYPE_NONE) && \ ((t) < SCTP_TIMER_TYPE_LAST)) - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) /* Number of ticks to run the main timer at in msec */ #define SCTP_MAIN_TIMER_DEFAULT 10 -#endif +#endif /* max number of TSN's dup'd that I will hold */ #define SCTP_MAX_DUP_TSNS 20 @@ -591,22 +580,7 @@ extern void getwintimeofday(struct timeval *tv); * number of clusters as a base. This way high bandwidth environments will * not get impacted by the lower bandwidth sending a bunch of 1 byte chunks */ -#ifdef __Panda__ -#define SCTP_ASOC_MAX_CHUNKS_ON_QUEUE 10240 -#else #define SCTP_ASOC_MAX_CHUNKS_ON_QUEUE 512 -#endif - - -/* The conversion from time to ticks and vice versa is done by rounding - * upwards. This way we can test in the code the time to be positive and - * know that this corresponds to a positive number of ticks. - */ -#define MSEC_TO_TICKS(x) ((hz == 1000) ? x : ((((x) * hz) + 999) / 1000)) -#define TICKS_TO_MSEC(x) ((hz == 1000) ? x : ((((x) * 1000) + (hz - 1)) / hz)) - -#define SEC_TO_TICKS(x) ((x) * hz) -#define TICKS_TO_SEC(x) (((x) + (hz - 1)) / hz) /* * Basically the minimum amount of time before I do a early FR. Making this @@ -628,10 +602,6 @@ extern void getwintimeofday(struct timeval *tv); /* 30 seconds + RTO (in ms) */ #define SCTP_HB_DEFAULT_MSEC 30000 -/* Max time I will wait for Shutdown to complete */ -#define SCTP_DEF_MAX_SHUTDOWN_SEC 180 - - /* * This is how long a secret lives, NOT how long a cookie lives how many * ticks the current secret will live. @@ -640,8 +610,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_RTO_UPPER_BOUND (60000) /* 60 sec in ms */ #define SCTP_RTO_LOWER_BOUND (1000) /* 1 sec is ms */ -#define SCTP_RTO_INITIAL (3000) /* 3 sec in ms */ - +#define SCTP_RTO_INITIAL (1000) /* 1 sec in ms */ #define SCTP_INP_KILL_TIMEOUT 20 /* number of ms to retry kill of inpcb */ #define SCTP_ASOC_KILL_TIMEOUT 10 /* number of ms to retry kill of inpcb */ @@ -653,8 +622,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_DEF_PMTU_RAISE_SEC 600 /* 10 min between raise attempts */ - -/* How many streams I request initally by default */ +/* How many streams I request initially by default */ #define SCTP_OSTREAM_INITIAL 10 #define SCTP_ISTREAM_INITIAL 2048 @@ -723,8 +691,6 @@ extern void getwintimeofday(struct timeval *tv); /* amount peer is obligated to have in rwnd or I will abort */ #define SCTP_MIN_RWND 1500 -#define SCTP_DEFAULT_MAXSEGMENT 65535 - #define SCTP_CHUNK_BUFFER_SIZE 512 #define SCTP_PARAM_BUFFER_SIZE 512 @@ -736,7 +702,6 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_NUMBER_OF_SECRETS 8 /* or 8 * 4 = 32 octets */ #define SCTP_SECRET_SIZE 32 /* number of octets in a 256 bits */ - /* * SCTP upper layer notifications */ @@ -767,6 +732,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_NOTIFY_NO_PEER_AUTH 25 #define SCTP_NOTIFY_SENDER_DRY 26 #define SCTP_NOTIFY_REMOTE_ERROR 27 +#define SCTP_NOTIFY_ASSOC_TIMEDOUT 28 /* This is the value for messages that are NOT completely * copied down where we will start to split the message. @@ -777,7 +743,11 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_DEFAULT_SPLIT_POINT_MIN 2904 /* Maximum length of diagnostic information in error causes */ -#define SCTP_DIAG_INFO_LEN 64 +#if defined(__Userspace__) +#define SCTP_DIAG_INFO_LEN 256 +#else +#define SCTP_DIAG_INFO_LEN 128 +#endif /* ABORT CODES and other tell-tale location * codes are generated by adding the below @@ -785,18 +755,18 @@ extern void getwintimeofday(struct timeval *tv); */ /* File defines */ -#define SCTP_FROM_SCTP_INPUT 0x10000000 -#define SCTP_FROM_SCTP_PCB 0x20000000 -#define SCTP_FROM_SCTP_INDATA 0x30000000 -#define SCTP_FROM_SCTP_TIMER 0x40000000 -#define SCTP_FROM_SCTP_USRREQ 0x50000000 -#define SCTP_FROM_SCTPUTIL 0x60000000 -#define SCTP_FROM_SCTP6_USRREQ 0x70000000 -#define SCTP_FROM_SCTP_ASCONF 0x80000000 -#define SCTP_FROM_SCTP_OUTPUT 0x90000000 -#define SCTP_FROM_SCTP_PEELOFF 0xa0000000 -#define SCTP_FROM_SCTP_PANDA 0xb0000000 -#define SCTP_FROM_SCTP_SYSCTL 0xc0000000 +#define SCTP_FROM_SCTP_INPUT 0x10000000 +#define SCTP_FROM_SCTP_PCB 0x20000000 +#define SCTP_FROM_SCTP_INDATA 0x30000000 +#define SCTP_FROM_SCTP_TIMER 0x40000000 +#define SCTP_FROM_SCTP_USRREQ 0x50000000 +#define SCTP_FROM_SCTPUTIL 0x60000000 +#define SCTP_FROM_SCTP6_USRREQ 0x70000000 +#define SCTP_FROM_SCTP_ASCONF 0x80000000 +#define SCTP_FROM_SCTP_OUTPUT 0x90000000 +#define SCTP_FROM_SCTP_PEELOFF 0xa0000000 +#define SCTP_FROM_SCTP_SYSCTL 0xb0000000 +#define SCTP_FROM_SCTP_CC_FUNCTIONS 0xc0000000 /* Location ID's */ #define SCTP_LOC_1 0x00000001 @@ -832,7 +802,10 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_LOC_31 0x0000001f #define SCTP_LOC_32 0x00000020 #define SCTP_LOC_33 0x00000021 - +#define SCTP_LOC_34 0x00000022 +#define SCTP_LOC_35 0x00000023 +#define SCTP_LOC_36 0x00000024 +#define SCTP_LOC_37 0x00000025 /* Free assoc codes */ #define SCTP_NORMAL_PROC 0 @@ -852,7 +825,6 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_DONOT_SETSCOPE 0 #define SCTP_DO_SETSCOPE 1 - /* This value determines the default for when * we try to add more on the send queue., if * there is room. This prevents us from cycling @@ -879,7 +851,7 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_CHUNKQUEUE_SCALE 10 #endif -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) /* clock variance is 1 ms */ #define SCTP_CLOCK_GRANULARITY 1 #else @@ -908,12 +880,20 @@ extern void getwintimeofday(struct timeval *tv); /* modular comparison */ /* See RFC 1982 for details. */ -#define SCTP_SSN_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ - ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) -#define SCTP_SSN_GE(a, b) (SCTP_SSN_GT(a, b) || (a == b)) -#define SCTP_TSN_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ - ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) -#define SCTP_TSN_GE(a, b) (SCTP_TSN_GT(a, b) || (a == b)) +#define SCTP_UINT16_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ + ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) +#define SCTP_UINT16_GE(a, b) (SCTP_UINT16_GT(a, b) || (a == b)) +#define SCTP_UINT32_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ + ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) +#define SCTP_UINT32_GE(a, b) (SCTP_UINT32_GT(a, b) || (a == b)) + +#define SCTP_SSN_GT(a, b) SCTP_UINT16_GT(a, b) +#define SCTP_SSN_GE(a, b) SCTP_UINT16_GE(a, b) +#define SCTP_TSN_GT(a, b) SCTP_UINT32_GT(a, b) +#define SCTP_TSN_GE(a, b) SCTP_UINT32_GE(a, b) +#define SCTP_MID_GT(i, a, b) (((i) == 1) ? SCTP_UINT32_GT(a, b) : SCTP_UINT16_GT((uint16_t)a, (uint16_t)b)) +#define SCTP_MID_GE(i, a, b) (((i) == 1) ? SCTP_UINT32_GE(a, b) : SCTP_UINT16_GE((uint16_t)a, (uint16_t)b)) +#define SCTP_MID_EQ(i, a, b) (((i) == 1) ? a == b : (uint16_t)a == (uint16_t)b) /* Mapping array manipulation routines */ #define SCTP_IS_TSN_PRESENT(arry, gap) ((arry[(gap >> 3)] >> (gap & 0x07)) & 0x01) @@ -927,7 +907,6 @@ extern void getwintimeofday(struct timeval *tv); } \ } while (0) - #define SCTP_RETRAN_DONE -1 #define SCTP_RETRAN_EXIT -2 @@ -936,7 +915,7 @@ extern void getwintimeofday(struct timeval *tv); * element. Each entry will take 2 4 byte ints (and of course the overhead * of the next pointer as well). Using 15 as an example will yield * ((8 * * 15) + 8) or 128 bytes of overhead for each timewait block that gets - * initialized. Increasing it to 31 would yeild 256 bytes per block. + * initialized. Increasing it to 31 would yield 256 bytes per block. */ #define SCTP_NUMBER_IN_VTAG_BLOCK 15 /* @@ -978,15 +957,11 @@ extern void getwintimeofday(struct timeval *tv); /*- * defines for socket lock states. - * Used by __APPLE__ and SCTP_SO_LOCK_TESTING + * Used by __APPLE__ */ #define SCTP_SO_LOCKED 1 #define SCTP_SO_NOT_LOCKED 0 - -#define SCTP_HOLDS_LOCK 1 -#define SCTP_NOT_LOCKED 0 - /*- * For address locks, do we hold the lock? */ @@ -1002,17 +977,17 @@ extern void getwintimeofday(struct timeval *tv); (((uint8_t *)&(a)->s_addr)[1] == 168))) #define IN4_ISLOOPBACK_ADDRESS(a) \ - ((((uint8_t *)&(a)->s_addr)[0] == 127) && \ - (((uint8_t *)&(a)->s_addr)[1] == 0) && \ - (((uint8_t *)&(a)->s_addr)[2] == 0) && \ - (((uint8_t *)&(a)->s_addr)[3] == 1)) + (((uint8_t *)&(a)->s_addr)[0] == 127) #define IN4_ISLINKLOCAL_ADDRESS(a) \ ((((uint8_t *)&(a)->s_addr)[0] == 169) && \ (((uint8_t *)&(a)->s_addr)[1] == 254)) +/* Maximum size of optval for IPPROTO_SCTP level socket options. */ +#define SCTP_SOCKET_OPTION_LIMIT (64 * 1024) + #if defined(__Userspace__) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define SCTP_GETTIME_TIMEVAL(x) getwintimeofday(x) #define SCTP_GETPTIME_TIMEVAL(x) getwintimeofday(x) /* this doesn't seem to ever be used.. */ #else @@ -1020,7 +995,6 @@ extern void getwintimeofday(struct timeval *tv); #define SCTP_GETPTIME_TIMEVAL(x) gettimeofday(x, NULL) #endif #endif - #if defined(_KERNEL) #define SCTP_GETTIME_TIMEVAL(x) (getmicrouptime(x)) #define SCTP_GETPTIME_TIMEVAL(x) (microuptime(x)) @@ -1030,18 +1004,18 @@ extern void getwintimeofday(struct timeval *tv); #define sctp_sowwakeup(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEOUTPUT; \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEOUTPUT); \ } else { \ sowwakeup(so); \ } \ } while (0) -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) #define sctp_sowwakeup_locked(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - SOCKBUF_UNLOCK(&((so)->so_snd)); \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEOUTPUT; \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEOUTPUT); \ + SOCKBUF_UNLOCK(&((so)->so_snd)); \ } else { \ sowwakeup_locked(so); \ } \ @@ -1050,8 +1024,8 @@ do { \ #define sctp_sowwakeup_locked(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - SOCKBUF_UNLOCK(&((so)->so_snd)); \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEOUTPUT; \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEOUTPUT); \ + SOCKBUF_UNLOCK(&((so)->so_snd)); \ } else { \ sowwakeup(so); \ } \ @@ -1061,18 +1035,18 @@ do { \ #define sctp_sorwakeup(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEINPUT; \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEINPUT); \ } else { \ sorwakeup(so); \ } \ } while (0) -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) #define sctp_sorwakeup_locked(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEINPUT; \ - SOCKBUF_UNLOCK(&((so)->so_rcv)); \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEINPUT); \ + SOCKBUF_UNLOCK(&((so)->so_rcv)); \ } else { \ sorwakeup_locked(so); \ } \ @@ -1082,8 +1056,8 @@ do { \ #define sctp_sorwakeup_locked(inp, so) \ do { \ if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { \ - inp->sctp_flags |= SCTP_PCB_FLAGS_WAKEINPUT; \ - SOCKBUF_UNLOCK(&((so)->so_rcv)); \ + sctp_pcb_add_flags(inp, SCTP_PCB_FLAGS_WAKEINPUT); \ + SOCKBUF_UNLOCK(&((so)->so_rcv)); \ } else { \ sorwakeup(so); \ } \ diff --git a/netwerk/sctp/src/netinet/sctp_crc32.c b/netwerk/sctp/src/netinet/sctp_crc32.c index b994aaace0..51b4e49d2e 100755 --- a/netwerk/sctp/src/netinet/sctp_crc32.c +++ b/netwerk/sctp/src/netinet/sctp_crc32.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,20 +32,31 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_crc32.c 235828 2012-05-23 11:26:28Z tuexen $"); -#endif +__FBSDID("$FreeBSD$"); + +#include "opt_sctp.h" + +#include +#include +#include +#include +#include +#include +#if defined(SCTP) || defined(SCTP_SUPPORT) +#include +#include +#endif +#else #include #include #include #include +#endif - -#if !defined(SCTP_WITH_NO_CSUM) -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 -#else +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) /** * * Routine Description: @@ -94,7 +107,7 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_crc32.c 235828 2012-05-23 11:26:28Z tu * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o32[256] = +static const uint32_t sctp_crc_tableil8_o32[256] = { 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24, @@ -150,7 +163,7 @@ static uint32_t sctp_crc_tableil8_o32[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o40[256] = +static const uint32_t sctp_crc_tableil8_o40[256] = { 0x00000000, 0x13A29877, 0x274530EE, 0x34E7A899, 0x4E8A61DC, 0x5D28F9AB, 0x69CF5132, 0x7A6DC945, 0x9D14C3B8, 0x8EB65BCF, 0xBA51F356, 0xA9F36B21, 0xD39EA264, 0xC03C3A13, 0xF4DB928A, 0xE7790AFD, @@ -206,7 +219,7 @@ static uint32_t sctp_crc_tableil8_o40[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o48[256] = +static const uint32_t sctp_crc_tableil8_o48[256] = { 0x00000000, 0xA541927E, 0x4F6F520D, 0xEA2EC073, 0x9EDEA41A, 0x3B9F3664, 0xD1B1F617, 0x74F06469, 0x38513EC5, 0x9D10ACBB, 0x773E6CC8, 0xD27FFEB6, 0xA68F9ADF, 0x03CE08A1, 0xE9E0C8D2, 0x4CA15AAC, @@ -262,7 +275,7 @@ static uint32_t sctp_crc_tableil8_o48[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o56[256] = +static const uint32_t sctp_crc_tableil8_o56[256] = { 0x00000000, 0xDD45AAB8, 0xBF672381, 0x62228939, 0x7B2231F3, 0xA6679B4B, 0xC4451272, 0x1900B8CA, 0xF64463E6, 0x2B01C95E, 0x49234067, 0x9466EADF, 0x8D665215, 0x5023F8AD, 0x32017194, 0xEF44DB2C, @@ -318,7 +331,7 @@ static uint32_t sctp_crc_tableil8_o56[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o64[256] = +static const uint32_t sctp_crc_tableil8_o64[256] = { 0x00000000, 0x38116FAC, 0x7022DF58, 0x4833B0F4, 0xE045BEB0, 0xD854D11C, 0x906761E8, 0xA8760E44, 0xC5670B91, 0xFD76643D, 0xB545D4C9, 0x8D54BB65, 0x2522B521, 0x1D33DA8D, 0x55006A79, 0x6D1105D5, @@ -374,7 +387,7 @@ static uint32_t sctp_crc_tableil8_o64[256] = * File Name = ............................ 8x256_tables.c */ -uint32_t sctp_crc_tableil8_o72[256] = +static const uint32_t sctp_crc_tableil8_o72[256] = { 0x00000000, 0xEF306B19, 0xDB8CA0C3, 0x34BCCBDA, 0xB2F53777, 0x5DC55C6E, 0x697997B4, 0x8649FCAD, 0x6006181F, 0x8F367306, 0xBB8AB8DC, 0x54BAD3C5, 0xD2F32F68, 0x3DC34471, 0x097F8FAB, 0xE64FE4B2, @@ -430,7 +443,7 @@ uint32_t sctp_crc_tableil8_o72[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o80[256] = +static const uint32_t sctp_crc_tableil8_o80[256] = { 0x00000000, 0x68032CC8, 0xD0065990, 0xB8057558, 0xA5E0C5D1, 0xCDE3E919, 0x75E69C41, 0x1DE5B089, 0x4E2DFD53, 0x262ED19B, 0x9E2BA4C3, 0xF628880B, 0xEBCD3882, 0x83CE144A, 0x3BCB6112, 0x53C84DDA, @@ -486,7 +499,7 @@ static uint32_t sctp_crc_tableil8_o80[256] = * File Name = ............................ 8x256_tables.c */ -static uint32_t sctp_crc_tableil8_o88[256] = +static const uint32_t sctp_crc_tableil8_o88[256] = { 0x00000000, 0x493C7D27, 0x9278FA4E, 0xDB448769, 0x211D826D, 0x6821FF4A, 0xB3657823, 0xFA590504, 0x423B04DA, 0x0B0779FD, 0xD043FE94, 0x997F83B3, 0x632686B7, 0x2A1AFB90, 0xF15E7CF9, 0xB86201DE, @@ -613,7 +626,7 @@ multitable_crc32c(uint32_t crc32c, return (sctp_crc32c_sb8_64_bit(crc32c, buffer, length, to_even_word)); } -static uint32_t sctp_crc_c[256] = { +static const uint32_t sctp_crc_c[256] = { 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, @@ -696,8 +709,11 @@ singletable_crc32c(uint32_t crc32c, return (crc32c); } - +#if defined(__Userspace__) +uint32_t +#else static uint32_t +#endif calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, unsigned int length) @@ -708,92 +724,79 @@ calculate_crc32c(uint32_t crc32c, return (multitable_crc32c(crc32c, buffer, length)); } } -#endif /* FreeBSD < 80000 || other OS */ +#endif +#if defined(__Userspace__) +uint32_t +#else static uint32_t +#endif sctp_finalize_crc32c(uint32_t crc32c) { - uint32_t result; - #if BYTE_ORDER == BIG_ENDIAN - uint8_t byte0, byte1, byte2, byte3; - + uint32_t byte0, byte1, byte2, byte3; #endif - /* Complement the result */ - result = ~crc32c; + #if BYTE_ORDER == BIG_ENDIAN /* - * For BIG-ENDIAN.. aka Motorola byte order the result is in - * little-endian form. So we must manually swap the bytes. Then we - * can call htonl() which does nothing... + * For BIG-ENDIAN platforms, the result is in LITTLE-ENDIAN byte order. + * For LITTLE-ENDIAN platforms, the result is in in BIG-ENDIAN byte + * order. So for BIG-ENDIAN platforms the bytes must be swapped to + * return the result always in network byte order (aka BIG-ENDIAN). */ - byte0 = result & 0x000000ff; - byte1 = (result >> 8) & 0x000000ff; - byte2 = (result >> 16) & 0x000000ff; - byte3 = (result >> 24) & 0x000000ff; + byte0 = crc32c & 0x000000ff; + byte1 = (crc32c >> 8) & 0x000000ff; + byte2 = (crc32c >> 16) & 0x000000ff; + byte3 = (crc32c >> 24) & 0x000000ff; crc32c = ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3); -#else - /* - * For INTEL platforms the result comes out in network order. No - * htonl is required or the swap above. So we optimize out both the - * htonl and the manual swap above. - */ - crc32c = result; #endif - return (crc32c); + return (~crc32c); } +static int +sctp_calculate_cksum_cb(void *arg, void *data, u_int len) +{ + uint32_t *basep; + + basep = arg; + *basep = calculate_crc32c(*basep, data, len); + return (0); +} + +/* + * Compute the SCTP checksum in network byte order for a given mbuf chain m + * which contains an SCTP packet starting at offset. + * Since this function is also called by ipfw, don't assume that + * it is compiled on a kernel with SCTP support. + */ uint32_t -sctp_calculate_cksum(struct mbuf *m, uint32_t offset) +sctp_calculate_cksum(struct mbuf *m, int32_t offset) { - /* - * given a mbuf chain with a packetheader offset by 'offset' - * pointing at a sctphdr (with csum set to 0) go through the chain - * of SCTP_BUF_NEXT()'s and calculate the SCTP checksum. This also - * has a side bonus as it will calculate the total length of the - * mbuf chain. Note: if offset is greater than the total mbuf - * length, checksum=1, pktlen=0 is returned (ie. no real error code) - */ - uint32_t base = 0xffffffff; - struct mbuf *at; - - at = m; - /* find the correct mbuf and offset into mbuf */ - while ((at != NULL) && (offset > (uint32_t) SCTP_BUF_LEN(at))) { - offset -= SCTP_BUF_LEN(at); /* update remaining offset - * left */ - at = SCTP_BUF_NEXT(at); - } - while (at != NULL) { - if ((SCTP_BUF_LEN(at) - offset) > 0) { - base = calculate_crc32c(base, - (unsigned char *)(SCTP_BUF_AT(at, offset)), - (unsigned int)(SCTP_BUF_LEN(at) - offset)); - } - if (offset) { - /* we only offset once into the first mbuf */ - if (offset < (uint32_t) SCTP_BUF_LEN(at)) - offset = 0; - else - offset -= SCTP_BUF_LEN(at); - } - at = SCTP_BUF_NEXT(at); - } - base = sctp_finalize_crc32c(base); - return (base); + uint32_t base; + int len; + + M_ASSERTPKTHDR(m); + KASSERT(offset < m->m_pkthdr.len, + ("%s: invalid offset %u into mbuf %p", __func__, offset, m)); + + base = 0xffffffff; + len = m->m_pkthdr.len - offset; + (void)m_apply(m, offset, len, sctp_calculate_cksum_cb, &base); + return (sctp_finalize_crc32c(base)); } -#endif /* !defined(SCTP_WITH_NO_CSUM) */ +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP) || defined(SCTP_SUPPORT) + +VNET_DEFINE(struct sctp_base_info, system_base_info); -#if defined(__FreeBSD__) +/* + * Compute and insert the SCTP checksum in network byte order for a given + * mbuf chain m which contains an SCTP packet starting at offset. + */ void sctp_delayed_cksum(struct mbuf *m, uint32_t offset) { -#if defined(SCTP_WITH_NO_CSUM) -#ifdef INVARIANTS - panic("sctp_delayed_cksum() called when using no SCTP CRC."); -#endif -#else uint32_t checksum; checksum = sctp_calculate_cksum(m, offset); @@ -801,18 +804,18 @@ sctp_delayed_cksum(struct mbuf *m, uint32_t offset) SCTP_STAT_INCR(sctps_sendswcrc); offset += offsetof(struct sctphdr, checksum); - if (offset + sizeof(uint32_t) > (uint32_t) (m->m_len)) { - SCTP_PRINTF("sctp_delayed_cksum(): m->len: %d, off: %d.\n", - (uint32_t) m->m_len, offset); - /* - * XXX this shouldn't happen, but if it does, the correct - * behavior may be to insert the checksum in the appropriate - * next mbuf in the chain. - */ + if (offset + sizeof(uint32_t) > (uint32_t)(m->m_pkthdr.len)) { +#ifdef INVARIANTS + panic("sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.", + m->m_pkthdr.len, offset); +#else + SCTP_PRINTF("sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.\n", + m->m_pkthdr.len, offset); +#endif return; } - *(uint32_t *) (m->m_data + offset) = checksum; -#endif + m_copyback(m, (int)offset, (int)sizeof(uint32_t), (caddr_t)&checksum); } #endif +#endif diff --git a/netwerk/sctp/src/netinet/sctp_crc32.h b/netwerk/sctp/src/netinet/sctp_crc32.h index 2cc14f4503..18be779d62 100755 --- a/netwerk/sctp/src/netinet/sctp_crc32.h +++ b/netwerk/sctp/src/netinet/sctp_crc32.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,25 +32,25 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_crc32.h 235828 2012-05-23 11:26:28Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_CRC32_H_ #define _NETINET_SCTP_CRC32_H_ #if defined(_KERNEL) -#if !defined(SCTP_WITH_NO_CSUM) -uint32_t sctp_calculate_cksum(struct mbuf *, uint32_t); -#endif -#if defined(__FreeBSD__) +uint32_t sctp_calculate_cksum(struct mbuf *, int32_t); +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP) || defined(SCTP_SUPPORT) void sctp_delayed_cksum(struct mbuf *, uint32_t offset); #endif +#endif #endif /* _KERNEL */ #if defined(__Userspace__) -#if !defined(SCTP_WITH_NO_CSUM) -uint32_t sctp_calculate_cksum(struct mbuf *, uint32_t); -#endif +uint32_t calculate_crc32c(uint32_t, const unsigned char *, unsigned int); +uint32_t sctp_finalize_crc32c(uint32_t); +uint32_t sctp_calculate_cksum(struct mbuf *, int32_t); #endif #endif /* __crc32c_h__ */ diff --git a/netwerk/sctp/src/netinet/sctp_header.h b/netwerk/sctp/src/netinet/sctp_header.h index f62181fecd..64a27eccf6 100755 --- a/netwerk/sctp/src/netinet/sctp_header.h +++ b/netwerk/sctp/src/netinet/sctp_header.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,24 +32,24 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_header.h 273168 2014-10-16 15:36:04Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_HEADER_H_ #define _NETINET_SCTP_HEADER_H_ -#if defined(__Windows__) && !defined(__Userspace_os_Windows) +#if defined(_WIN32) && !defined(__Userspace__) #include #endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include #endif #include #include -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #define SCTP_PACKED __attribute__((packed)) #else #pragma pack (push, 1) @@ -64,7 +66,6 @@ struct sctp_ipv4addr_param { #define SCTP_V6_ADDR_BYTES 16 - struct sctp_ipv6addr_param { struct sctp_paramhdr ph;/* type=SCTP_IPV6_PARAM_TYPE, len=20 */ uint8_t addr[SCTP_V6_ADDR_BYTES]; /* IPV6 address */ @@ -108,14 +109,12 @@ struct sctp_heartbeat_info_param { char address[SCTP_ADDRMAX]; } SCTP_PACKED; - /* draft-ietf-tsvwg-prsctp */ /* PR-SCTP supported parameter */ struct sctp_prsctp_supported_param { struct sctp_paramhdr ph; } SCTP_PACKED; - /* draft-ietf-tsvwg-addip-sctp */ struct sctp_asconf_paramhdr { /* an ASCONF "parameter" */ struct sctp_paramhdr ph;/* a SCTP parameter header */ @@ -127,14 +126,12 @@ struct sctp_asconf_addr_param { /* an ASCONF address parameter */ struct sctp_ipv6addr_param addrp; /* max storage size */ } SCTP_PACKED; - struct sctp_asconf_tag_param { /* an ASCONF NAT-Vtag parameter */ struct sctp_asconf_paramhdr aph; /* asconf "parameter" */ - uint32_t local_vtag; - uint32_t remote_vtag; + uint32_t local_vtag; + uint32_t remote_vtag; } SCTP_PACKED; - struct sctp_asconf_addrv4_param { /* an ASCONF address (v4) parameter */ struct sctp_asconf_paramhdr aph; /* asconf "parameter" */ struct sctp_ipv4addr_param addrp; /* max storage size */ @@ -147,15 +144,14 @@ struct sctp_supported_chunk_types_param { uint8_t chunk_types[]; } SCTP_PACKED; - /* * Structures for DATA chunks */ struct sctp_data { uint32_t tsn; - uint16_t stream_id; - uint16_t stream_sequence; - uint32_t protocol_id; + uint16_t sid; + uint16_t ssn; + uint32_t ppid; /* user data follows */ } SCTP_PACKED; @@ -164,6 +160,23 @@ struct sctp_data_chunk { struct sctp_data dp; } SCTP_PACKED; +struct sctp_idata { + uint32_t tsn; + uint16_t sid; + uint16_t reserved; /* Where does the SSN go? */ + uint32_t mid; + union { + uint32_t ppid; + uint32_t fsn; /* Fragment Sequence Number */ + } ppid_fsn; + /* user data follows */ +} SCTP_PACKED; + +struct sctp_idata_chunk { + struct sctp_chunkhdr ch; + struct sctp_idata dp; +} SCTP_PACKED; + /* * Structures for the control chunks */ @@ -180,9 +193,9 @@ struct sctp_init { #define SCTP_IDENTIFICATION_SIZE 16 #define SCTP_ADDRESS_SIZE 4 #if defined(__Userspace__) -#define SCTP_RESERVE_SPACE 5 +#define SCTP_RESERVE_SPACE 4 #else -#define SCTP_RESERVE_SPACE 6 +#define SCTP_RESERVE_SPACE 5 #endif /* state cookie header */ struct sctp_state_cookie { /* this is our definition... */ @@ -213,6 +226,7 @@ struct sctp_state_cookie { /* this is our definition... */ uint8_t ipv4_scope; /* IPv4 private addr scope */ uint8_t loopback_scope; /* loopback scope information */ + uint8_t zero_checksum; /* copy of the inp value */ uint8_t reserved[SCTP_RESERVE_SPACE]; /* Align to 64 bits */ /* * at the end is tacked on the INIT chunk and the INIT-ACK chunk @@ -220,34 +234,6 @@ struct sctp_state_cookie { /* this is our definition... */ */ } SCTP_PACKED; - -/* Used for NAT state error cause */ -struct sctp_missing_nat_state { - uint16_t cause; - uint16_t length; - uint8_t data[]; -} SCTP_PACKED; - - -struct sctp_inv_mandatory_param { - uint16_t cause; - uint16_t length; - uint32_t num_param; - uint16_t param; - /* - * We include this to 0 it since only a missing cookie will cause - * this error. - */ - uint16_t resv; -} SCTP_PACKED; - -struct sctp_unresolv_addr { - uint16_t cause; - uint16_t length; - uint16_t addr_type; - uint16_t reserved; /* Only one invalid addr type */ -} SCTP_PACKED; - /* state cookie parameter */ struct sctp_state_cookie_param { struct sctp_paramhdr ph; @@ -269,7 +255,6 @@ struct sctp_init_msg { #define sctp_init_ack_chunk sctp_init_chunk #define sctp_init_ack_msg sctp_init_msg - /* Selective Ack (SACK) */ struct sctp_gap_ack_block { uint16_t start; /* Gap Ack block start */ @@ -306,7 +291,6 @@ struct sctp_nr_sack_chunk { struct sctp_nr_sack nr_sack; } SCTP_PACKED; - /* Heartbeat Request (HEARTBEAT) */ struct sctp_heartbeat { struct sctp_heartbeat_info_param hb_info; @@ -321,7 +305,6 @@ struct sctp_heartbeat_chunk { #define sctp_heartbeat_ack sctp_heartbeat #define sctp_heartbeat_ack_chunk sctp_heartbeat_chunk - /* Abort Asssociation (ABORT) */ struct sctp_abort_chunk { struct sctp_chunkhdr ch; @@ -333,27 +316,23 @@ struct sctp_abort_msg { struct sctp_abort_chunk msg; } SCTP_PACKED; - /* Shutdown Association (SHUTDOWN) */ struct sctp_shutdown_chunk { struct sctp_chunkhdr ch; uint32_t cumulative_tsn_ack; } SCTP_PACKED; - /* Shutdown Acknowledgment (SHUTDOWN ACK) */ struct sctp_shutdown_ack_chunk { struct sctp_chunkhdr ch; } SCTP_PACKED; - /* Operation Error (ERROR) */ struct sctp_error_chunk { struct sctp_chunkhdr ch; /* optional error causes follow */ } SCTP_PACKED; - /* Cookie Echo (COOKIE ECHO) */ struct sctp_cookie_echo_chunk { struct sctp_chunkhdr ch; @@ -388,28 +367,11 @@ struct sctp_shutdown_complete_chunk { struct sctp_chunkhdr ch; } SCTP_PACKED; -/* Oper error holding a stale cookie */ -struct sctp_stale_cookie_msg { - struct sctp_paramhdr ph;/* really an error cause */ - uint32_t time_usec; -} SCTP_PACKED; - struct sctp_adaptation_layer_indication { struct sctp_paramhdr ph; uint32_t indication; } SCTP_PACKED; -struct sctp_cookie_while_shutting_down { - struct sctphdr sh; - struct sctp_chunkhdr ch; - struct sctp_paramhdr ph;/* really an error cause */ -} SCTP_PACKED; - -struct sctp_shutdown_complete_msg { - struct sctphdr sh; - struct sctp_shutdown_complete_chunk shut_cmp; -} SCTP_PACKED; - /* * draft-ietf-tsvwg-addip-sctp */ @@ -437,10 +399,16 @@ struct sctp_forward_tsn_chunk { } SCTP_PACKED; struct sctp_strseq { - uint16_t stream; - uint16_t sequence; + uint16_t sid; + uint16_t ssn; } SCTP_PACKED; +struct sctp_strseq_mid { + uint16_t sid; + uint16_t flags; + uint32_t mid; +}; + struct sctp_forward_tsn_msg { struct sctphdr sh; struct sctp_forward_tsn_chunk msg; @@ -456,7 +424,6 @@ struct sctp_chunk_desc { uint32_t tsn_ifany; } SCTP_PACKED; - struct sctp_pktdrop_chunk { struct sctp_chunkhdr ch; uint32_t bottle_bw; @@ -507,10 +474,10 @@ struct sctp_stream_reset_response_tsn { } SCTP_PACKED; struct sctp_stream_reset_add_strm { - struct sctp_paramhdr ph; - uint32_t request_seq; - uint16_t number_of_streams; - uint16_t reserved; + struct sctp_paramhdr ph; + uint32_t request_seq; + uint16_t number_of_streams; + uint16_t reserved; } SCTP_PACKED; #define SCTP_STREAM_RESET_RESULT_NOTHING_TO_DO 0x00000000 /* XXX: unused */ @@ -572,12 +539,6 @@ struct sctp_auth_chunk { uint8_t hmac[]; } SCTP_PACKED; -struct sctp_auth_invalid_hmac { - struct sctp_paramhdr ph; - uint16_t hmac_id; - uint16_t padding; -} SCTP_PACKED; - /* * we pre-reserve enough room for a ECNE or CWR AND a SACK with no missing * pieces. If ENCE is missing we could have a couple of blocks. This way we @@ -589,49 +550,47 @@ struct sctp_auth_invalid_hmac { #ifndef SCTP_MAX_OVERHEAD #ifdef INET6 #define SCTP_MAX_OVERHEAD (sizeof(struct sctp_data_chunk) + \ - sizeof(struct sctphdr) + \ - sizeof(struct sctp_ecne_chunk) + \ - sizeof(struct sctp_sack_chunk) + \ - sizeof(struct ip6_hdr)) + sizeof(struct sctphdr) + \ + sizeof(struct sctp_ecne_chunk) + \ + sizeof(struct sctp_sack_chunk) + \ + sizeof(struct ip6_hdr)) #define SCTP_MED_OVERHEAD (sizeof(struct sctp_data_chunk) + \ - sizeof(struct sctphdr) + \ - sizeof(struct ip6_hdr)) - + sizeof(struct sctphdr) + \ + sizeof(struct ip6_hdr)) #define SCTP_MIN_OVERHEAD (sizeof(struct ip6_hdr) + \ - sizeof(struct sctphdr)) + sizeof(struct sctphdr)) #else #define SCTP_MAX_OVERHEAD (sizeof(struct sctp_data_chunk) + \ - sizeof(struct sctphdr) + \ - sizeof(struct sctp_ecne_chunk) + \ - sizeof(struct sctp_sack_chunk) + \ - sizeof(struct ip)) + sizeof(struct sctphdr) + \ + sizeof(struct sctp_ecne_chunk) + \ + sizeof(struct sctp_sack_chunk) + \ + sizeof(struct ip)) #define SCTP_MED_OVERHEAD (sizeof(struct sctp_data_chunk) + \ - sizeof(struct sctphdr) + \ - sizeof(struct ip)) - + sizeof(struct sctphdr) + \ + sizeof(struct ip)) #define SCTP_MIN_OVERHEAD (sizeof(struct ip) + \ - sizeof(struct sctphdr)) + sizeof(struct sctphdr)) #endif /* INET6 */ #endif /* !SCTP_MAX_OVERHEAD */ #define SCTP_MED_V4_OVERHEAD (sizeof(struct sctp_data_chunk) + \ - sizeof(struct sctphdr) + \ - sizeof(struct ip)) + sizeof(struct sctphdr) + \ + sizeof(struct ip)) #define SCTP_MIN_V4_OVERHEAD (sizeof(struct ip) + \ - sizeof(struct sctphdr)) + sizeof(struct sctphdr)) -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) #include #endif -#if defined(__Userspace_os_Windows) -#pragma pack () +#if defined(_WIN32) && defined(__Userspace__) +#pragma pack(pop) #endif #undef SCTP_PACKED #endif /* !__sctp_header_h__ */ diff --git a/netwerk/sctp/src/netinet/sctp_indata.c b/netwerk/sctp/src/netinet/sctp_indata.c index f697d0ced9..cc8aed3410 100755 --- a/netwerk/sctp/src/netinet/sctp_indata.c +++ b/netwerk/sctp/src/netinet/sctp_indata.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,24 +32,32 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_indata.c 280440 2015-03-24 15:05:36Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#endif #include #include -#include #include +#include #include #include -#include -#include #include +#include #include - - +#include +#include +#include +#include +#include +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#endif /* * NOTES: On the outbound side of things I need to check the sack timer to * see if I should generate a sack into the chunk queue (if I have data to @@ -57,6 +67,12 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_indata.c 280440 2015-03-24 15:05:36Z t * This will cause sctp_service_queues() to get called on the top entry in * the list. */ +static uint32_t +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_tmit_chunk *chk, int hold_rlock); void sctp_set_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) @@ -76,19 +92,23 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) * sctp_soreceive then we will fix this so that ONLY this * associations data is taken into account. */ - if (stcb->sctp_socket == NULL) + if (stcb->sctp_socket == NULL) { return (calc); + } + KASSERT(asoc->cnt_on_reasm_queue > 0 || asoc->size_on_reasm_queue == 0, + ("size_on_reasm_queue is %u", asoc->size_on_reasm_queue)); + KASSERT(asoc->cnt_on_all_streams > 0 || asoc->size_on_all_streams == 0, + ("size_on_all_streams is %u", asoc->size_on_all_streams)); if (stcb->asoc.sb_cc == 0 && - asoc->size_on_reasm_queue == 0 && - asoc->size_on_all_streams == 0) { + asoc->cnt_on_reasm_queue == 0 && + asoc->cnt_on_all_streams == 0) { /* Full rwnd granted */ calc = max(SCTP_SB_LIMIT_RCV(stcb->sctp_socket), SCTP_MINIMAL_RWND); return (calc); } /* get actual space */ calc = (uint32_t) sctp_sbspace(&stcb->asoc, &stcb->sctp_socket->so_rcv); - /* * take out what has NOT been put on socket queue and we yet hold * for putting up. @@ -97,7 +117,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) asoc->cnt_on_reasm_queue * MSIZE)); calc = sctp_sbspace_sub(calc, (uint32_t)(asoc->size_on_all_streams + asoc->cnt_on_all_streams * MSIZE)); - if (calc == 0) { /* out of space */ return (calc); @@ -114,8 +133,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) return (calc); } - - /* * Build out our readq entry based on the incoming packet. */ @@ -123,8 +140,8 @@ struct sctp_queued_to_read * sctp_build_readq_entry(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, - uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, + uint32_t context, uint16_t sid, + uint32_t mid, uint8_t flags, struct mbuf *dm) { struct sctp_queued_to_read *read_queue_e = NULL; @@ -133,73 +150,29 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, if (read_queue_e == NULL) { goto failed_build; } - read_queue_e->sinfo_stream = stream_no; - read_queue_e->sinfo_ssn = stream_seq; + memset(read_queue_e, 0, sizeof(struct sctp_queued_to_read)); + read_queue_e->sinfo_stream = sid; read_queue_e->sinfo_flags = (flags << 8); read_queue_e->sinfo_ppid = ppid; read_queue_e->sinfo_context = context; - read_queue_e->sinfo_timetolive = 0; read_queue_e->sinfo_tsn = tsn; read_queue_e->sinfo_cumtsn = tsn; read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); + read_queue_e->mid = mid; + read_queue_e->top_fsn = read_queue_e->fsn_included = 0xffffffff; + TAILQ_INIT(&read_queue_e->reasm); read_queue_e->whoFrom = net; - read_queue_e->length = 0; atomic_add_int(&net->ref_count, 1); read_queue_e->data = dm; - read_queue_e->spec_flags = 0; - read_queue_e->tail_mbuf = NULL; - read_queue_e->aux_data = NULL; read_queue_e->stcb = stcb; read_queue_e->port_from = stcb->rport; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; -failed_build: - return (read_queue_e); -} - - -/* - * Build out our readq entry based on the incoming packet. - */ -static struct sctp_queued_to_read * -sctp_build_readq_entry_chk(struct sctp_tcb *stcb, - struct sctp_tmit_chunk *chk) -{ - struct sctp_queued_to_read *read_queue_e = NULL; - - sctp_alloc_a_readq(stcb, read_queue_e); - if (read_queue_e == NULL) { - goto failed_build; + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + read_queue_e->do_not_ref_stcb = 1; } - read_queue_e->sinfo_stream = chk->rec.data.stream_number; - read_queue_e->sinfo_ssn = chk->rec.data.stream_seq; - read_queue_e->sinfo_flags = (chk->rec.data.rcv_flags << 8); - read_queue_e->sinfo_ppid = chk->rec.data.payloadtype; - read_queue_e->sinfo_context = stcb->asoc.context; - read_queue_e->sinfo_timetolive = 0; - read_queue_e->sinfo_tsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_cumtsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); - read_queue_e->whoFrom = chk->whoTo; - read_queue_e->aux_data = NULL; - read_queue_e->length = 0; - atomic_add_int(&chk->whoTo->ref_count, 1); - read_queue_e->data = chk->data; - read_queue_e->tail_mbuf = NULL; - read_queue_e->stcb = stcb; - read_queue_e->port_from = stcb->rport; - read_queue_e->spec_flags = 0; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; failed_build: return (read_queue_e); } - struct mbuf * sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) { @@ -207,7 +180,7 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) struct sctp_sndrcvinfo *outinfo; struct sctp_rcvinfo *rcvinfo; struct sctp_nxtinfo *nxtinfo; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) WSACMSGHDR *cmh; #else struct cmsghdr *cmh; @@ -230,9 +203,9 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) } seinfo = (struct sctp_extrcvinfo *)sinfo; if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO) && - (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_AVAIL)) { + (seinfo->serinfo_next_flags & SCTP_NEXT_MSG_AVAIL)) { provide_nxt = 1; - len += CMSG_SPACE(sizeof(struct sctp_rcvinfo)); + len += CMSG_SPACE(sizeof(struct sctp_nxtinfo)); } else { provide_nxt = 0; } @@ -256,7 +229,7 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) SCTP_BUF_LEN(ret) = 0; /* We need a CMSG header followed by the struct */ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) cmh = mtod(ret, WSACMSGHDR *); #else cmh = mtod(ret, struct cmsghdr *); @@ -279,7 +252,7 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) rcvinfo->rcv_cumtsn = sinfo->sinfo_cumtsn; rcvinfo->rcv_context = sinfo->sinfo_context; rcvinfo->rcv_assoc_id = sinfo->sinfo_assoc_id; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) cmh = (WSACMSGHDR *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_rcvinfo))); #else cmh = (struct cmsghdr *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_rcvinfo))); @@ -291,21 +264,21 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) cmh->cmsg_len = CMSG_LEN(sizeof(struct sctp_nxtinfo)); cmh->cmsg_type = SCTP_NXTINFO; nxtinfo = (struct sctp_nxtinfo *)CMSG_DATA(cmh); - nxtinfo->nxt_sid = seinfo->sreinfo_next_stream; + nxtinfo->nxt_sid = seinfo->serinfo_next_stream; nxtinfo->nxt_flags = 0; - if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_IS_UNORDERED) { + if (seinfo->serinfo_next_flags & SCTP_NEXT_MSG_IS_UNORDERED) { nxtinfo->nxt_flags |= SCTP_UNORDERED; } - if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_IS_NOTIFICATION) { + if (seinfo->serinfo_next_flags & SCTP_NEXT_MSG_IS_NOTIFICATION) { nxtinfo->nxt_flags |= SCTP_NOTIFICATION; } - if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_ISCOMPLETE) { + if (seinfo->serinfo_next_flags & SCTP_NEXT_MSG_ISCOMPLETE) { nxtinfo->nxt_flags |= SCTP_COMPLETE; } - nxtinfo->nxt_ppid = seinfo->sreinfo_next_ppid; - nxtinfo->nxt_length = seinfo->sreinfo_next_length; - nxtinfo->nxt_assoc_id = seinfo->sreinfo_next_aid; -#if defined(__Userspace_os_Windows) + nxtinfo->nxt_ppid = seinfo->serinfo_next_ppid; + nxtinfo->nxt_length = seinfo->serinfo_next_length; + nxtinfo->nxt_assoc_id = seinfo->serinfo_next_aid; +#if defined(_WIN32) cmh = (WSACMSGHDR *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_nxtinfo))); #else cmh = (struct cmsghdr *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_nxtinfo))); @@ -330,243 +303,207 @@ sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) return (ret); } - static void sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) { - uint32_t gap, i, cumackp1; - int fnd = 0; + uint32_t gap, i; + int in_r, in_nr; if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { return; } - cumackp1 = asoc->cumulative_tsn + 1; - if (SCTP_TSN_GT(cumackp1, tsn)) { - /* this tsn is behind the cum ack and thus we don't + if (SCTP_TSN_GE(asoc->cumulative_tsn, tsn)) { + /* + * This tsn is behind the cum ack and thus we don't * need to worry about it being moved from one to the other. */ return; } SCTP_CALC_TSN_TO_GAP(gap, tsn, asoc->mapping_array_base_tsn); - if (!SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap)) { - SCTP_PRINTF("gap:%x tsn:%x\n", gap, tsn); - sctp_print_mapping_array(asoc); -#ifdef INVARIANTS - panic("Things are really messed up now!!"); -#endif + in_r = SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap); + in_nr = SCTP_IS_TSN_PRESENT(asoc->nr_mapping_array, gap); + KASSERT(in_r || in_nr, ("%s: Things are really messed up now", __func__)); + if (!in_nr) { + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + asoc->highest_tsn_inside_nr_map = tsn; + } } - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - if (tsn == asoc->highest_tsn_inside_map) { - /* We must back down to see what the new highest is */ - for (i = tsn - 1; SCTP_TSN_GE(i, asoc->mapping_array_base_tsn); i--) { - SCTP_CALC_TSN_TO_GAP(gap, i, asoc->mapping_array_base_tsn); - if (SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap)) { - asoc->highest_tsn_inside_map = i; - fnd = 1; - break; + if (in_r) { + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + if (tsn == asoc->highest_tsn_inside_map) { + /* We must back down to see what the new highest is. */ + for (i = tsn - 1; SCTP_TSN_GE(i, asoc->mapping_array_base_tsn); i--) { + SCTP_CALC_TSN_TO_GAP(gap, i, asoc->mapping_array_base_tsn); + if (SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap)) { + asoc->highest_tsn_inside_map = i; + break; + } + } + if (!SCTP_TSN_GE(i, asoc->mapping_array_base_tsn)) { + asoc->highest_tsn_inside_map = asoc->mapping_array_base_tsn - 1; } - } - if (!fnd) { - asoc->highest_tsn_inside_map = asoc->mapping_array_base_tsn - 1; } } } - -/* - * We are delivering currently from the reassembly queue. We must continue to - * deliver until we either: 1) run out of space. 2) run out of sequential - * TSN's 3) hit the SCTP_DATA_LAST_FRAG flag. - */ -static void -sctp_service_reassembly(struct sctp_tcb *stcb, struct sctp_association *asoc) +static int +sctp_place_control_in_stream(struct sctp_stream_in *strm, + struct sctp_association *asoc, + struct sctp_queued_to_read *control) { - struct sctp_tmit_chunk *chk, *nchk; - uint16_t nxt_todel; - uint16_t stream_no; - int end = 0; - int cntDel; - struct sctp_queued_to_read *control, *ctl, *nctl; - - if (stcb == NULL) - return; - - cntDel = stream_no = 0; - if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || - (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) || - (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { - /* socket above is long gone or going.. */ - abandon: - asoc->fragmented_delivery_inprogress = 0; - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* - * Lose the data pointer, since its in the socket - * buffer - */ - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; + struct sctp_queued_to_read *at; + struct sctp_readhead *q; + uint8_t flags, unordered; + + flags = (control->sinfo_flags >> 8); + unordered = flags & SCTP_DATA_UNORDERED; + if (unordered) { + q = &strm->uno_inqueue; + if (asoc->idata_supported == 0) { + if (!TAILQ_EMPTY(q)) { + /* Only one stream can be here in old style -- abort */ + return (-1); } - /* Now free the address and data */ - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - /*sa_ignore FREED_MEMORY*/ - } - return; - } - SCTP_TCB_LOCK_ASSERT(stcb); - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (chk->rec.data.TSN_seq != (asoc->tsn_last_delivered + 1)) { - /* Can't deliver more :< */ - return; - } - stream_no = chk->rec.data.stream_number; - nxt_todel = asoc->strmin[stream_no].last_sequence_delivered + 1; - if (nxt_todel != chk->rec.data.stream_seq && - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - /* - * Not the next sequence to deliver in its stream OR - * unordered - */ - return; + TAILQ_INSERT_TAIL(q, control, next_instrm); + control->on_strm_q = SCTP_ON_UNORDERED; + return (0); } - if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - - control = sctp_build_readq_entry_chk(stcb, chk); - if (control == NULL) { - /* out of memory? */ - return; - } - /* save it off for our future deliveries */ - stcb->asoc.control_pdapi = control; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - sctp_add_to_readq(stcb->sctp_ep, - stcb, control, &stcb->sctp_socket->so_rcv, end, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - cntDel++; + } else { + q = &strm->inqueue; + } + if ((flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + control->end_added = 1; + control->first_frag_seen = 1; + control->last_frag_seen = 1; + } + if (TAILQ_EMPTY(q)) { + /* Empty queue */ + TAILQ_INSERT_HEAD(q, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; } else { - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - if (sctp_append_to_readq(stcb->sctp_ep, stcb, - stcb->asoc.control_pdapi, - chk->data, end, chk->rec.data.TSN_seq, - &stcb->sctp_socket->so_rcv)) { + control->on_strm_q = SCTP_ON_ORDERED; + } + return (0); + } else { + TAILQ_FOREACH(at, q, next_instrm) { + if (SCTP_MID_GT(asoc->idata_supported, at->mid, control->mid)) { /* - * something is very wrong, either - * control_pdapi is NULL, or the tail_mbuf - * is corrupt, or there is a EOM already on - * the mbuf chain. + * one in queue is bigger than the + * new one, insert before this one */ - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - goto abandon; + TAILQ_INSERT_BEFORE(at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; } else { -#ifdef INVARIANTS - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - panic("This should not happen control_pdapi NULL?"); + control->on_strm_q = SCTP_ON_ORDERED; + } + break; + } else if (SCTP_MID_EQ(asoc->idata_supported, at->mid, control->mid)) { + /* + * Gak, He sent me a duplicate msg + * id number?? return -1 to abort. + */ + return (-1); + } else { + if (TAILQ_NEXT(at, next_instrm) == NULL) { + /* + * We are at the end, insert + * it after this one + */ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { + sctp_log_strm_del(control, at, + SCTP_STR_LOG_FROM_INSERT_TL); } - /* if we did not panic, it was a EOM */ - panic("Bad chunking ??"); -#else - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - SCTP_PRINTF("This should not happen control_pdapi NULL?\n"); + TAILQ_INSERT_AFTER(q, at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; + } else { + control->on_strm_q = SCTP_ON_ORDERED; } - SCTP_PRINTF("Bad chunking ??\n"); - SCTP_PRINTF("Dumping re-assembly queue this will probably hose the association\n"); - -#endif - goto abandon; + break; } } - cntDel++; - } - /* pull it we did it */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - asoc->fragmented_delivery_inprogress = 0; - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[stream_no].last_sequence_delivered++; - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); - } - } else if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* - * turn the flag back on since we just delivered - * yet another one. - */ - asoc->fragmented_delivery_inprogress = 1; } - asoc->tsn_of_pdapi_last_delivered = chk->rec.data.TSN_seq; - asoc->last_flags_delivered = chk->rec.data.rcv_flags; - asoc->last_strm_seq_delivered = chk->rec.data.stream_seq; - asoc->last_strm_no_delivered = chk->rec.data.stream_number; + } + return (0); +} - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* free up the chk */ +static void +sctp_abort_in_reasm(struct sctp_tcb *stcb, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag, int opspot) +{ + char msg[SCTP_DIAG_INFO_LEN]; + struct mbuf *oper; + + if (stcb->asoc.idata_supported) { + SCTP_SNPRINTF(msg, sizeof(msg), + "Reass %x,CF:%x,TSN=%8.8x,SID=%4.4x,FSN=%8.8x,MID:%8.8x", + opspot, + control->fsn_included, + chk->rec.data.tsn, + chk->rec.data.sid, + chk->rec.data.fsn, chk->rec.data.mid); + } else { + SCTP_SNPRINTF(msg, sizeof(msg), + "Reass %x,CI:%x,TSN=%8.8x,SID=%4.4x,FSN=%4.4x,SSN:%4.4x", + opspot, + control->fsn_included, + chk->rec.data.tsn, + chk->rec.data.sid, + chk->rec.data.fsn, + (uint16_t)chk->rec.data.mid); + } + oper = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_1; + sctp_abort_an_association(stcb->sctp_ep, stcb, oper, false, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; +} + +static void +sctp_clean_up_control(struct sctp_tcb *stcb, struct sctp_queued_to_read *control) +{ + /* + * The control could not be placed and must be cleaned. + */ + struct sctp_tmit_chunk *chk, *nchk; + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) + sctp_m_freem(chk->data); chk->data = NULL; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - - if (asoc->fragmented_delivery_inprogress == 0) { - /* - * Now lets see if we can deliver the next one on - * the stream - */ - struct sctp_stream_in *strm; - - strm = &asoc->strmin[stream_no]; - nxt_todel = strm->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strm->inqueue, next, nctl) { - /* Deliver more if we can. */ - if (nxt_todel == ctl->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, ctl, next); - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - strm->last_sequence_delivered++; - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { - break; - } - nxt_todel = strm->last_sequence_delivered + 1; - } - break; - } } + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + sctp_free_a_readq(stcb, control); } /* * Queue the chunk either right into the socket buffer if it is the next one * to go OR put it in the correct place in the delivery queue. If we do - * append to the so_buf, keep doing so until we are out of order. One big - * question still remains, what to do when the socket buffer is FULL?? + * append to the so_buf, keep doing so until we are out of order as + * long as the control's entered are non-fragmented. */ static void -sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_queued_to_read *control, int *abort_flag) +sctp_queue_data_to_stream(struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_queued_to_read *control, int *abort_flag, int *need_reasm) { /* * FIX-ME maybe? What happens when the ssn wraps? If we are getting * all the data in one stream this could happen quite rapidly. One * could use the TSN to keep track of things, but this scheme breaks - * down in the other type of stream useage that could occur. Send a + * down in the other type of stream usage that could occur. Send a * single msg to stream 0, send 4Billion messages to stream 1, now * send a message to stream 0. You have a situation where the TSN * has wrapped but not in the stream. Is this worth worrying about @@ -577,73 +514,112 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, * with TSN 1? If the peer is doing some sort of funky TSN/SSN * assignment this could happen... and I don't see how this would be * a violation. So for now I am undecided an will leave the sort by - * SSN alone. Maybe a hybred approach is the answer + * SSN alone. Maybe a hybrid approach is the answer * */ - struct sctp_stream_in *strm; struct sctp_queued_to_read *at; int queue_needed; - uint16_t nxt_todel; + uint32_t nxt_todel; struct mbuf *op_err; + struct sctp_stream_in *strm; char msg[SCTP_DIAG_INFO_LEN]; - queue_needed = 1; - asoc->size_on_all_streams += control->length; - sctp_ucount_incr(asoc->cnt_on_all_streams); strm = &asoc->strmin[control->sinfo_stream]; - nxt_todel = strm->last_sequence_delivered + 1; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INTO_STRD); } - SCTPDBG(SCTP_DEBUG_INDATA1, - "queue to stream called for ssn:%u lastdel:%u nxt:%u\n", - (uint32_t) control->sinfo_stream, - (uint32_t) strm->last_sequence_delivered, - (uint32_t) nxt_todel); - if (SCTP_SSN_GE(strm->last_sequence_delivered, control->sinfo_ssn)) { + if (SCTP_MID_GT((asoc->idata_supported), strm->last_mid_delivered, control->mid)) { /* The incoming sseq is behind where we last delivered? */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Duplicate S-SEQ:%d delivered:%d from peer, Abort association\n", - control->sinfo_ssn, strm->last_sequence_delivered); - protocol_error: + SCTPDBG(SCTP_DEBUG_INDATA1, "Duplicate S-SEQ: %u delivered: %u from peer, Abort association\n", + strm->last_mid_delivered, control->mid); /* * throw it in the stream so it gets cleaned up in * association destruction */ - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); - snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - strm->last_sequence_delivered, control->sinfo_tsn, - control->sinfo_stream, control->sinfo_ssn); + TAILQ_INSERT_HEAD(&strm->inqueue, control, next_instrm); + if (asoc->idata_supported) { + SCTP_SNPRINTF(msg, sizeof(msg), "Delivered MID=%8.8x, got TSN=%8.8x, SID=%4.4x, MID=%8.8x", + strm->last_mid_delivered, control->sinfo_tsn, + control->sinfo_stream, control->mid); + } else { + SCTP_SNPRINTF(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", + (uint16_t)strm->last_mid_delivered, + control->sinfo_tsn, + control->sinfo_stream, + (uint16_t)control->mid); + } op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_1; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_2; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; - } - if (nxt_todel == control->sinfo_ssn) { + queue_needed = 1; + asoc->size_on_all_streams += control->length; + sctp_ucount_incr(asoc->cnt_on_all_streams); + nxt_todel = strm->last_mid_delivered + 1; + if (SCTP_MID_EQ(asoc->idata_supported, nxt_todel, control->mid)) { +#if defined(__APPLE__) && !defined(__Userspace__) + struct socket *so; + + so = SCTP_INP_SO(stcb->sctp_ep); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } +#endif /* can be delivered right away? */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_IMMED_DEL); } - /* EY it wont be queued if it could be delivered directly*/ + /* EY it wont be queued if it could be delivered directly */ queue_needed = 0; - asoc->size_on_all_streams -= control->length; + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } sctp_ucount_decr(asoc->cnt_on_all_streams); - strm->last_sequence_delivered++; - + strm->last_mid_delivered++; sctp_mark_non_revokable(asoc, control->sinfo_tsn); sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - TAILQ_FOREACH_SAFE(control, &strm->inqueue, next, at) { + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_LOCKED); + TAILQ_FOREACH_SAFE(control, &strm->inqueue, next_instrm, at) { /* all delivered */ - nxt_todel = strm->last_sequence_delivered + 1; - if (nxt_todel == control->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, control, next); - asoc->size_on_all_streams -= control->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - strm->last_sequence_delivered++; + nxt_todel = strm->last_mid_delivered + 1; + if (SCTP_MID_EQ(asoc->idata_supported, nxt_todel, control->mid) && + (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG)) { + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); +#ifdef INVARIANTS + } else { + panic("Huh control: %p is on_strm_q: %d", + control, control->on_strm_q); +#endif + } + control->on_strm_q = 0; + strm->last_mid_delivered++; /* * We ignore the return of deliver_data here * since we always can hold the chunk on the @@ -659,656 +635,1141 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, - SCTP_SO_NOT_LOCKED); + SCTP_SO_LOCKED); continue; + } else if (SCTP_MID_EQ(asoc->idata_supported, nxt_todel, control->mid)) { + *need_reasm = 1; } break; } +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_UNLOCK(so, 1); +#endif } if (queue_needed) { /* * Ok, we did not deliver this guy, find the correct place * to put it on the queue. */ - if (SCTP_TSN_GE(asoc->cumulative_tsn, control->sinfo_tsn)) { - goto protocol_error; - } - if (TAILQ_EMPTY(&strm->inqueue)) { - /* Empty queue */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INSERT_HD); - } - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); - } else { - TAILQ_FOREACH(at, &strm->inqueue, next) { - if (SCTP_SSN_GT(at->sinfo_ssn, control->sinfo_ssn)) { - /* - * one in queue is bigger than the - * new one, insert before this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_MD); - } - TAILQ_INSERT_BEFORE(at, control, next); - break; - } else if (at->sinfo_ssn == control->sinfo_ssn) { - /* - * Gak, He sent me a duplicate str - * seq number - */ - /* - * foo bar, I guess I will just free - * this new guy, should we abort - * too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. - * Maybe I should compare to TSN - * somehow... sigh for now just blow - * away the chunk! - */ - - if (control->data) - sctp_m_freem(control->data); - control->data = NULL; - asoc->size_on_all_streams -= control->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - return; - } else { - if (TAILQ_NEXT(at, next) == NULL) { - /* - * We are at the end, insert - * it after this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_TL); - } - TAILQ_INSERT_AFTER(&strm->inqueue, - at, control, next); - break; - } - } - } + if (sctp_place_control_in_stream(strm, asoc, control)) { + SCTP_SNPRINTF(msg, sizeof(msg), + "Queue to str MID: %u duplicate", control->mid); + sctp_clean_up_control(stcb, control); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_3; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; } } } -/* - * Returns two things: You get the total size of the deliverable parts of the - * first fragmented message on the reassembly queue. And you get a 1 back if - * all of the message is ready or a 0 back if the message is still incomplete - */ -static int -sctp_is_all_msg_on_reasm(struct sctp_association *asoc, uint32_t *t_size) +static void +sctp_setup_tail_pointer(struct sctp_queued_to_read *control) { - struct sctp_tmit_chunk *chk; - uint32_t tsn; - - *t_size = 0; - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* nothing on the queue */ - return (0); - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - /* Not a first on the queue */ - return (0); - } - tsn = chk->rec.data.TSN_seq; - TAILQ_FOREACH(chk, &asoc->reasmqueue, sctp_next) { - if (tsn != chk->rec.data.TSN_seq) { - return (0); + struct mbuf *m, *prev = NULL; + struct sctp_tcb *stcb; + + stcb = control->stcb; + control->held_length = 0; + control->length = 0; + m = control->data; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->data = sctp_m_free(m); + m = control->data; + } else { + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); + } + if (m == NULL) { + control->tail_mbuf = prev; + } + continue; } - *t_size += chk->send_size; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - return (1); + prev = m; + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + if (control->on_read_q) { + /* + * On read queue so we must increment the + * SB stuff, we assume caller has done any locks of SB. + */ + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); } - tsn++; + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; } - return (0); } static void -sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc) +sctp_add_to_tail_pointer(struct sctp_queued_to_read *control, struct mbuf *m, uint32_t *added) { - struct sctp_tmit_chunk *chk; - uint16_t nxt_todel; - uint32_t tsize, pd_point; - - doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* Huh? */ - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; + struct mbuf *prev=NULL; + struct sctp_tcb *stcb; + + stcb = control->stcb; + if (stcb == NULL) { +#ifdef INVARIANTS + panic("Control broken"); +#else return; +#endif } - if (asoc->fragmented_delivery_inprogress == 0) { - nxt_todel = - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - (nxt_todel == chk->rec.data.stream_seq || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here and its ok to deliver - * but should we? - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); + if (control->tail_mbuf == NULL) { + /* TSNH */ + sctp_m_freem(control->data); + control->data = m; + sctp_setup_tail_pointer(control); + return; + } + control->tail_mbuf->m_next = m; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->tail_mbuf->m_next = sctp_m_free(m); + m = control->tail_mbuf->m_next; } else { - pd_point = stcb->sctp_ep->partial_delivery_point; + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - /* - * Yes, we setup to start reception, by - * backing down the TSN just in case we - * can't deliver. If we - */ - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = - chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = - chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); + if (m == NULL) { + control->tail_mbuf = prev; } + continue; } - } else { - /* Service re-assembly will deliver stream data queued - * at the end of fragmented delivery.. but it wont know - * to go back and call itself again... we do that here - * with the got doit_again - */ - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { - /* finished our Fragmented delivery, could be - * more waiting? + prev = m; + if (control->on_read_q) { + /* + * On read queue so we must increment the + * SB stuff, we assume caller has done any locks of SB. */ - goto doit_again; + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); } + *added += SCTP_BUF_LEN(m); + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; } } -/* - * Dump onto the re-assembly queue, in its proper place. After dumping on the - * queue, see if anthing can be delivered. If so pull it off (or as much as - * we can. If we run out of space then we must dump what we can and set the - * appropriate flag to say we queued what we could. - */ static void -sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_tmit_chunk *chk, int *abort_flag) +sctp_build_readq_entry_from_ctl(struct sctp_queued_to_read *nc, struct sctp_queued_to_read *control) { - struct mbuf *op_err; - char msg[SCTP_DIAG_INFO_LEN]; - uint32_t cum_ackp1, prev_tsn, post_tsn; - struct sctp_tmit_chunk *at, *prev, *next; - - prev = next = NULL; - cum_ackp1 = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue)) { - /* This is the first one on the queue */ - TAILQ_INSERT_HEAD(&asoc->reasmqueue, chk, sctp_next); + memset(nc, 0, sizeof(struct sctp_queued_to_read)); + nc->sinfo_stream = control->sinfo_stream; + nc->mid = control->mid; + TAILQ_INIT(&nc->reasm); + nc->top_fsn = control->top_fsn; + nc->mid = control->mid; + nc->sinfo_flags = control->sinfo_flags; + nc->sinfo_ppid = control->sinfo_ppid; + nc->sinfo_context = control->sinfo_context; + nc->fsn_included = 0xffffffff; + nc->sinfo_tsn = control->sinfo_tsn; + nc->sinfo_cumtsn = control->sinfo_cumtsn; + nc->sinfo_assoc_id = control->sinfo_assoc_id; + nc->whoFrom = control->whoFrom; + atomic_add_int(&nc->whoFrom->ref_count, 1); + nc->stcb = control->stcb; + nc->port_from = control->port_from; + nc->do_not_ref_stcb = control->do_not_ref_stcb; +} + +static void +sctp_reset_a_control(struct sctp_queued_to_read *control, + struct sctp_inpcb *inp, uint32_t tsn) +{ + control->fsn_included = tsn; + if (control->on_read_q) { /* - * we do not check for delivery of anything when only one - * fragment is here + * We have to purge it from there, + * hopefully this will work :-) */ - asoc->size_on_reasm_queue = chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - if (chk->rec.data.TSN_seq == cum_ackp1) { - if (asoc->fragmented_delivery_inprogress == 0 && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) != - SCTP_DATA_FIRST_FRAG) { - /* - * An empty queue, no delivery inprogress, - * we hit the next one and it does NOT have - * a FIRST fragment mark. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not first, no fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Expected B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_2; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { - /* - * We are doing a partial delivery and the - * NEXT chunk MUST be either the LAST or - * MIDDLE fragment NOT a FIRST - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS a first and fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Didn't expect B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_3; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress) { - /* - * Here we are ok with a MIDDLE or LAST - * piece - */ - if (chk->rec.data.stream_number != - asoc->str_of_pdapi) { - /* Got to be the right STR No */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream number %d vs %d\n", - chk->rec.data.stream_number, - asoc->str_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->str_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_4; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if ((asoc->fragment_flags & SCTP_DATA_UNORDERED) != - SCTP_DATA_UNORDERED && - chk->rec.data.stream_seq != asoc->ssn_of_pdapi) { - /* Got to be the right STR Seq */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream seq %d vs %d\n", - chk->rec.data.stream_seq, - asoc->ssn_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->ssn_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_5; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + TAILQ_REMOVE(&inp->read_queue, control, next); + control->on_read_q = 0; + } +} + +static int +sctp_handle_old_unordered_data(struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + uint32_t pd_point, + int inp_read_lock_held) +{ + /* Special handling for the old un-ordered data chunk. + * All the chunks/TSN's go to mid 0. So + * we have to do the old style watching to see + * if we have it all. If you return one, no other + * control entries on the un-ordered queue will + * be looked at. In theory there should be no others + * entries in reality, unless the guy is sending both + * unordered NDATA and unordered DATA... + */ + struct sctp_tmit_chunk *chk, *lchk, *tchk; + uint32_t fsn; + struct sctp_queued_to_read *nc; + int cnt_added; + + if (control->first_frag_seen == 0) { + /* Nothing we can do, we have not seen the first piece yet */ + return (1); + } + /* Collapse any we can */ + cnt_added = 0; +restart: + fsn = control->fsn_included + 1; + /* Now what can we add? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, lchk) { + if (chk->rec.data.fsn == fsn) { + /* Ok lets add it */ + sctp_alloc_a_readq(stcb, nc); + if (nc == NULL) { + break; + } + memset(nc, 0, sizeof(struct sctp_queued_to_read)); + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, chk, inp_read_lock_held); + fsn++; + cnt_added++; + chk = NULL; + if (control->end_added) { + /* We are done */ + if (!TAILQ_EMPTY(&control->reasm)) { + /* + * Ok we have to move anything left on + * the control queue to a new control. + */ + sctp_build_readq_entry_from_ctl(nc, control); + tchk = TAILQ_FIRST(&control->reasm); + if (tchk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + if (asoc->size_on_reasm_queue >= tchk->send_size) { + asoc->size_on_reasm_queue -= tchk->send_size; + } else { +#ifdef INVARIANTS + panic("size_on_reasm_queue = %u smaller than chunk length %u", asoc->size_on_reasm_queue, tchk->send_size); +#else + asoc->size_on_reasm_queue = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + nc->first_frag_seen = 1; + nc->fsn_included = tchk->rec.data.fsn; + nc->data = tchk->data; + nc->sinfo_ppid = tchk->rec.data.ppid; + nc->sinfo_tsn = tchk->rec.data.tsn; + sctp_mark_non_revokable(asoc, tchk->rec.data.tsn); + tchk->data = NULL; + sctp_free_a_chunk(stcb, tchk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(nc); + tchk = TAILQ_FIRST(&control->reasm); + } + /* Spin the rest onto the queue */ + while (tchk) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + TAILQ_INSERT_TAIL(&nc->reasm, tchk, sctp_next); + tchk = TAILQ_FIRST(&control->reasm); + } + /* Now lets add it to the queue after removing control */ + TAILQ_INSERT_TAIL(&strm->uno_inqueue, nc, next_instrm); + nc->on_strm_q = SCTP_ON_UNORDERED; + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + } + if (control->pdapi_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); +#if defined(__Userspace__) + } else { + sctp_invoke_recv_callback(stcb->sctp_ep, stcb, control, inp_read_lock_held); +#endif + } + sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); + if ((nc->first_frag_seen) && !TAILQ_EMPTY(&nc->reasm)) { + /* Switch to the new guy and continue */ + control = nc; + goto restart; + } else { + if (nc->on_strm_q == 0) { + sctp_free_a_readq(stcb, nc); + } } + return (1); + } else { + sctp_free_a_readq(stcb, nc); } + } else { + /* Can't add more */ + break; + } + } + if (cnt_added && strm->pd_api_started) { +#if defined(__Userspace__) + sctp_invoke_recv_callback(stcb->sctp_ep, stcb, control, inp_read_lock_held); +#endif + sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); + } + if ((control->length > pd_point) && (strm->pd_api_started == 0)) { + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); + sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); + return (0); + } else { + return (1); + } +} + +static void +sctp_inject_old_unordered_data(struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag) +{ + struct sctp_tmit_chunk *at; + int inserted; + /* + * Here we need to place the chunk into the control structure + * sorted in the correct order. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn: %u becomes fsn_included\n", + chk->rec.data.fsn); + at = TAILQ_FIRST(&control->reasm); + if (at && SCTP_TSN_GT(chk->rec.data.fsn, at->rec.data.fsn)) { + /* + * The first chunk in the reassembly is + * a smaller TSN than this one, even though + * this has a first, it must be from a subsequent + * msg. + */ + goto place_chunk; } + if (control->first_frag_seen) { + /* + * In old un-ordered we can reassembly on + * one control multiple messages. As long + * as the next FIRST is greater then the old + * first (TSN i.e. FSN wise) + */ + struct mbuf *tdata; + uint32_t tmp; + + if (SCTP_TSN_GT(chk->rec.data.fsn, control->fsn_included)) { + /* Easy way the start of a new guy beyond the lowest */ + goto place_chunk; + } + if ((chk->rec.data.fsn == control->fsn_included) || + (control->pdapi_started)) { + /* + * Ok this should not happen, if it does + * we started the pd-api on the higher TSN (since + * the equals part is a TSN failure it must be that). + * + * We are completely hosed in that case since I have + * no way to recover. This really will only happen + * if we can get more TSN's higher before the pd-api-point. + */ + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_4); + + return; + } + /* + * Ok we have two firsts and the one we just got + * is smaller than the one we previously placed.. yuck! + * We must swap them out. + */ + /* swap the mbufs */ + tdata = control->data; + control->data = chk->data; + chk->data = tdata; + /* Save the lengths */ + chk->send_size = control->length; + /* Recompute length of control and tail pointer */ + sctp_setup_tail_pointer(control); + /* Fix the FSN included */ + tmp = control->fsn_included; + control->fsn_included = chk->rec.data.fsn; + chk->rec.data.fsn = tmp; + /* Fix the TSN included */ + tmp = control->sinfo_tsn; + control->sinfo_tsn = chk->rec.data.tsn; + chk->rec.data.tsn = tmp; + /* Fix the PPID included */ + tmp = control->sinfo_ppid; + control->sinfo_ppid = chk->rec.data.ppid; + chk->rec.data.ppid = tmp; + /* Fix tail pointer */ + goto place_chunk; + } + control->first_frag_seen = 1; + control->fsn_included = chk->rec.data.fsn; + control->top_fsn = chk->rec.data.fsn; + control->sinfo_tsn = chk->rec.data.tsn; + control->sinfo_ppid = chk->rec.data.ppid; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.tsn); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); return; } - /* Find its place */ - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(at->rec.data.TSN_seq, chk->rec.data.TSN_seq)) { +place_chunk: + inserted = 0; + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn, chk->rec.data.fsn)) { /* - * one in queue is bigger than the new one, insert - * before this one + * This one in queue is bigger than the new one, insert + * the new one before at. */ - /* A check */ asoc->size_on_reasm_queue += chk->send_size; sctp_ucount_incr(asoc->cnt_on_reasm_queue); - next = at; + inserted = 1; TAILQ_INSERT_BEFORE(at, chk, sctp_next); break; - } else if (at->rec.data.TSN_seq == chk->rec.data.TSN_seq) { - /* Gak, He sent me a duplicate str seq number */ + } else if (at->rec.data.fsn == chk->rec.data.fsn) { /* - * foo bar, I guess I will just free this new guy, - * should we abort too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. Maybe I should - * compare to TSN somehow... sigh for now just blow - * away the chunk! + * They sent a duplicate fsn number. This + * really should not happen since the FSN is + * a TSN and it should have been dropped earlier. */ - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_5); return; + } + } + if (inserted == 0) { + /* Its at the end */ + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + control->top_fsn = chk->rec.data.fsn; + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } +} + +static int +sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_stream_in *strm, int inp_read_lock_held) +{ + /* + * Given a stream, strm, see if any of + * the SSN's on it that are fragmented + * are ready to deliver. If so go ahead + * and place them on the read queue. In + * so placing if we have hit the end, then + * we need to remove them from the stream's queue. + */ + struct sctp_queued_to_read *control, *nctl = NULL; + uint32_t next_to_del; + uint32_t pd_point; + int ret = 0; + + if (stcb->sctp_socket) { + pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, + stcb->sctp_ep->partial_delivery_point); + } else { + pd_point = stcb->sctp_ep->partial_delivery_point; + } + control = TAILQ_FIRST(&strm->uno_inqueue); + + if ((control != NULL) && + (asoc->idata_supported == 0)) { + /* Special handling needed for "old" data format */ + if (sctp_handle_old_unordered_data(stcb, asoc, strm, control, pd_point, inp_read_lock_held)) { + goto done_un; + } + } + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + while (control) { + SCTPDBG(SCTP_DEBUG_XXX, "Looking at control: %p e(%d) ssn: %u top_fsn: %u inc_fsn: %u -uo\n", + control, control->end_added, control->mid, control->top_fsn, control->fsn_included); + nctl = TAILQ_NEXT(control, next_instrm); + if (control->end_added) { + /* We just put the last bit on */ + if (control->on_strm_q) { +#ifdef INVARIANTS + if (control->on_strm_q != SCTP_ON_UNORDERED) { + panic("Huh control: %p on_q: %d -- not unordered?", + control, control->on_strm_q); + } +#endif + SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + control->on_strm_q = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); + } } else { - prev = at; - if (TAILQ_NEXT(at, sctp_next) == NULL) { - /* - * We are at the end, insert it after this - * one - */ - /* check it first */ - asoc->size_on_reasm_queue += chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - TAILQ_INSERT_AFTER(&asoc->reasmqueue, at, chk, sctp_next); + /* Can we do a PD-API for this un-ordered guy? */ + if ((control->length >= pd_point) && (strm->pd_api_started == 0)) { + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); + break; } } + control = nctl; } - /* Now the audits */ - if (prev) { - prev_tsn = chk->rec.data.TSN_seq - 1; - if (prev_tsn == prev->rec.data.TSN_seq) { - /* - * Ok the one I am dropping onto the end is the - * NEXT. A bit of valdiation here. - */ - if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG || - (prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG) { - /* - * Insert chk MUST be a MIDDLE or LAST - * fragment - */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - It can be a midlle or last but not a first\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it's a FIRST!\n"); - snprintf(msg, sizeof(msg), - "Can't handle B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_6; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; +done_un: + control = TAILQ_FIRST(&strm->inqueue); + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + if (control == NULL) { + return (ret); + } + if (SCTP_MID_EQ(asoc->idata_supported, strm->last_mid_delivered, control->mid)) { + /* Ok the guy at the top was being partially delivered + * completed, so we remove it. Note + * the pd_api flag was taken off when the + * chunk was merged on in sctp_queue_data_for_reasm below. + */ + nctl = TAILQ_NEXT(control, next_instrm); + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control: %p e(%d) ssn: %u top_fsn: %u inc_fsn: %u (lastdel: %u)- o\n", + control, control->end_added, control->mid, + control->top_fsn, control->fsn_included, + strm->last_mid_delivered); + if (control->end_added) { + if (control->on_strm_q) { +#ifdef INVARIANTS + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control: %p on_q: %d -- not ordered?", + control, control->on_strm_q); } - if (chk->rec.data.stream_number != - prev->rec.data.stream_number) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sid:%d not the same as at:%d\n", - chk->rec.data.stream_number, - prev->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Expect SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_7; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; +#endif + SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { - /* - * Huh, need the same ordering here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_7; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + sctp_ucount_decr(asoc->cnt_on_all_streams); + control->on_strm_q = 0; + } + if (strm->pd_api_started && control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); + } + control = nctl; + } + } + if (strm->pd_api_started) { + /* Can't add more must have gotten an un-ordered above being partially delivered. */ + return (0); + } +deliver_more: + next_to_del = strm->last_mid_delivered + 1; + if (control) { + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control: %p e(%d) ssn: %u top_fsn: %u inc_fsn: %u (nxtdel: %u)- o\n", + control, control->end_added, control->mid, control->top_fsn, control->fsn_included, + next_to_del); + nctl = TAILQ_NEXT(control, next_instrm); + if (SCTP_MID_EQ(asoc->idata_supported, control->mid, next_to_del) && + (control->first_frag_seen)) { + int done; + + /* Ok we can deliver it onto the stream. */ + if (control->end_added) { + /* We are done with it afterwards */ + if (control->on_strm_q) { +#ifdef INVARIANTS + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control: %p on_q: %d -- not ordered?", + control, control->on_strm_q); + } +#endif + SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + control->on_strm_q = 0; } - if ((prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - prev->rec.data.stream_seq) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - prev->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Expect SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_8; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + ret++; + } + if (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* A singleton now slipping through - mark it non-revokable too */ + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + } else if (control->end_added == 0) { + /* Check if we can defer adding until its all there */ + if ((control->length < pd_point) || (strm->pd_api_started)) { + /* Don't need it or cannot add more (one being delivered that way) */ + goto out; } - } else if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - /* Insert chk MUST be a FIRST */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, evil plot, its not FIRST and it must be!\n"); - snprintf(msg, sizeof(msg), - "Expect B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_9; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + } + done = (control->end_added) && (control->last_frag_seen); + if (control->on_read_q == 0) { + if (!done) { + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + strm->pd_api_started = 1; + control->pdapi_started = 1; } + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + inp_read_lock_held, SCTP_SO_NOT_LOCKED); + } + strm->last_mid_delivered = next_to_del; + if (done) { + control = nctl; + goto deliver_more; + } + } + } +out: + return (ret); +} + +uint32_t +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_tmit_chunk *chk, int hold_rlock) +{ + /* + * Given a control and a chunk, merge the + * data from the chk onto the control and free + * up the chunk resources. + */ + uint32_t added=0; + int i_locked = 0; + + if (control->on_read_q && (hold_rlock == 0)) { + /* + * Its being pd-api'd so we must + * do some locks. + */ + SCTP_INP_READ_LOCK(stcb->sctp_ep); + i_locked = 1; + } + if (control->data == NULL) { + control->data = chk->data; + sctp_setup_tail_pointer(control); + } else { + sctp_add_to_tail_pointer(control, chk->data, &added); + } + control->fsn_included = chk->rec.data.fsn; + asoc->size_on_reasm_queue -= chk->send_size; + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + sctp_mark_non_revokable(asoc, chk->rec.data.tsn); + chk->data = NULL; + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + control->first_frag_seen = 1; + control->sinfo_tsn = chk->rec.data.tsn; + control->sinfo_ppid = chk->rec.data.ppid; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Its complete */ + if ((control->on_strm_q) && (control->on_read_q)) { + if (control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + if (control->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } else if (control->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + /* + * Don't need to decrement size_on_all_streams, + * since control is on the read queue. + */ + sctp_ucount_decr(asoc->cnt_on_all_streams); + control->on_strm_q = 0; +#ifdef INVARIANTS + } else if (control->on_strm_q) { + panic("Unknown state on ctrl: %p on_strm_q: %d", control, + control->on_strm_q); +#endif + } + } + control->end_added = 1; + control->last_frag_seen = 1; + } + if (i_locked) { + SCTP_INP_READ_UNLOCK(stcb->sctp_ep); + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + return (added); +} + +/* + * Dump onto the re-assembly queue, in its proper place. After dumping on the + * queue, see if anthing can be delivered. If so pull it off (or as much as + * we can. If we run out of space then we must dump what we can and set the + * appropriate flag to say we queued what we could. + */ +static void +sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int created_control, + int *abort_flag, uint32_t tsn) +{ + uint32_t next_fsn; + struct sctp_tmit_chunk *at, *nat; + struct sctp_stream_in *strm; + int do_wakeup, unordered; + uint32_t lenadded; + + strm = &asoc->strmin[control->sinfo_stream]; + /* + * For old un-ordered data chunks. + */ + if ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) { + unordered = 1; + } else { + unordered = 0; + } + /* Must be added to the stream-in queue */ + if (created_control) { + if ((unordered == 0) || (asoc->idata_supported)) { + sctp_ucount_incr(asoc->cnt_on_all_streams); + } + if (sctp_place_control_in_stream(strm, asoc, control)) { + /* Duplicate SSN? */ + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_6); + sctp_clean_up_control(stcb, control); + return; + } + if ((tsn == (asoc->cumulative_tsn + 1) && (asoc->idata_supported == 0))) { + /* Ok we created this control and now + * lets validate that its legal i.e. there + * is a B bit set, if not and we have + * up to the cum-ack then its invalid. + */ + if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_7); + return; } } } - if (next) { - post_tsn = chk->rec.data.TSN_seq + 1; - if (post_tsn == next->rec.data.TSN_seq) { + if ((asoc->idata_supported == 0) && (unordered == 1)) { + sctp_inject_old_unordered_data(stcb, asoc, control, chk, abort_flag); + return; + } + /* + * Ok we must queue the chunk into the reasembly portion: + * o if its the first it goes to the control mbuf. + * o if its not first but the next in sequence it goes to the control, + * and each succeeding one in order also goes. + * o if its not in order we place it on the list in its place. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn: %u becomes fsn_included\n", + chk->rec.data.fsn); + if (control->first_frag_seen) { /* - * Ok the one I am inserting ahead of is my NEXT - * one. A bit of valdiation here. + * Error on senders part, they either + * sent us two data chunks with FIRST, + * or they sent two un-ordered chunks that + * were fragmented at the same time in the same stream. */ - if (next->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* Insert chk MUST be a last fragment */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) - != SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is FIRST, we must be LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not a last!\n"); - snprintf(msg, sizeof(msg), - "Expect only E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_10; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_8); + return; + } + control->first_frag_seen = 1; + control->sinfo_ppid = chk->rec.data.ppid; + control->sinfo_tsn = chk->rec.data.tsn; + control->fsn_included = chk->rec.data.fsn; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.tsn); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); + asoc->size_on_all_streams += control->length; + } else { + /* Place the chunk in our list */ + int inserted=0; + if (control->last_frag_seen == 0) { + /* Still willing to raise highest FSN seen */ + if (SCTP_TSN_GT(chk->rec.data.fsn, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "We have a new top_fsn: %u\n", + chk->rec.data.fsn); + control->top_fsn = chk->rec.data.fsn; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + SCTPDBG(SCTP_DEBUG_XXX, + "The last fsn is now in place fsn: %u\n", + chk->rec.data.fsn); + control->last_frag_seen = 1; + if (SCTP_TSN_GT(control->top_fsn, chk->rec.data.fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn: %u is not at top_fsn: %u -- abort\n", + chk->rec.data.fsn, + control->top_fsn); + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_9); return; } - } else if ((next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG || - (next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { + } + if (asoc->idata_supported || control->first_frag_seen) { /* - * Insert chk CAN be MIDDLE or FIRST NOT - * LAST + * For IDATA we always check since we know that + * the first fragment is 0. For old DATA we have + * to receive the first before we know the first FSN + * (which is the TSN). */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is a MIDDLE/LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, new prev chunk is a LAST\n"); - snprintf(msg, sizeof(msg), - "Didn't expect E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_11; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn)) { + /* We have already delivered up to this so its a dup */ + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_10); return; } - if (chk->rec.data.stream_number != - next->rec.data.stream_number) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, ssn:%d not the same as at:%d\n", - chk->rec.data.stream_number, - next->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Required SID %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_12; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + } + } else { + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Second last? huh? */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate last fsn: %u (top: %u) -- abort\n", + chk->rec.data.fsn, control->top_fsn); + sctp_abort_in_reasm(stcb, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_11); + return; + } + if (asoc->idata_supported || control->first_frag_seen) { + /* + * For IDATA we always check since we know that + * the first fragment is 0. For old DATA we have + * to receive the first before we know the first FSN + * (which is the TSN). + */ + + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn)) { + /* We have already delivered up to this so its a dup */ + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn: %u is already seen in included_fsn: %u -- abort\n", + chk->rec.data.fsn, control->fsn_included); + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_12); return; } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { - /* - * Huh, need the same ordering here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_12; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + } + /* validate not beyond top FSN if we have seen last one */ + if (SCTP_TSN_GT(chk->rec.data.fsn, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn: %u is beyond or at top_fsn: %u -- abort\n", + chk->rec.data.fsn, + control->top_fsn); + sctp_abort_in_reasm(stcb, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_13); + return; + } + } + /* + * If we reach here, we need to place the + * new chunk in the reassembly for this + * control. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a not first fsn: %u needs to be inserted\n", + chk->rec.data.fsn); + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn, chk->rec.data.fsn)) { + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Last not at the end? huh? */ + SCTPDBG(SCTP_DEBUG_XXX, + "Last fragment not last in list: -- abort\n"); + sctp_abort_in_reasm(stcb, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_14); return; } - if ((next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - next->rec.data.stream_seq) { + /* + * This one in queue is bigger than the new one, insert + * the new one before at. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Insert it before fsn: %u\n", + at->rec.data.fsn); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + TAILQ_INSERT_BEFORE(at, chk, sctp_next); + inserted = 1; + break; + } else if (at->rec.data.fsn == chk->rec.data.fsn) { + /* Gak, He sent me a duplicate str seq number */ + /* + * foo bar, I guess I will just free this new guy, + * should we abort too? FIX ME MAYBE? Or it COULD be + * that the SSN's have wrapped. Maybe I should + * compare to TSN somehow... sigh for now just blow + * away the chunk! + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate to fsn: %u -- abort\n", + at->rec.data.fsn); + sctp_abort_in_reasm(stcb, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_15); + return; + } + } + if (inserted == 0) { + /* Goes on the end */ + SCTPDBG(SCTP_DEBUG_XXX, "Inserting at tail of list fsn: %u\n", + chk->rec.data.fsn); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } + } + /* + * Ok lets see if we can suck any up into the control + * structure that are in seq if it makes sense. + */ + do_wakeup = 0; + /* + * If the first fragment has not been + * seen there is no sense in looking. + */ + if (control->first_frag_seen) { + next_fsn = control->fsn_included + 1; + TAILQ_FOREACH_SAFE(at, &control->reasm, sctp_next, nat) { + if (at->rec.data.fsn == next_fsn) { + /* We can add this one now to the control */ + SCTPDBG(SCTP_DEBUG_XXX, + "Adding more to control: %p at: %p fsn: %u next_fsn: %u included: %u\n", + control, at, + at->rec.data.fsn, + next_fsn, control->fsn_included); + TAILQ_REMOVE(&control->reasm, at, sctp_next); + lenadded = sctp_add_chk_to_control(control, strm, stcb, asoc, at, SCTP_READ_LOCK_NOT_HELD); + if (control->on_read_q) { + do_wakeup = 1; + } else { /* - * Huh, need the correct STR here, - * they must be the same. + * We only add to the size-on-all-streams + * if its not on the read q. The read q + * flag will cause a sballoc so its accounted + * for there. */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - next->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Required SSN %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_13; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + asoc->size_on_all_streams += lenadded; } + next_fsn++; + if (control->end_added && control->pdapi_started) { + if (strm->pd_api_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + break; + } + } else { + break; } } } - /* Do we need to do some delivery? check */ - sctp_deliver_reasm_check(stcb, asoc); + if (do_wakeup) { +#if defined(__Userspace__) + sctp_invoke_recv_callback(stcb->sctp_ep, stcb, control, SCTP_READ_LOCK_NOT_HELD); +#endif + /* Need to wakeup the reader */ + sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); + } } -/* - * This is an unfortunate routine. It checks to make sure a evil guy is not - * stuffing us full of bad packet fragments. A broken peer could also do this - * but this is doubtful. It is to bad I must worry about evil crackers sigh - * :< more cycles. - */ -static int -sctp_does_tsn_belong_to_reasm(struct sctp_association *asoc, - uint32_t TSN_seq) +static struct sctp_queued_to_read * +sctp_find_reasm_entry(struct sctp_stream_in *strm, uint32_t mid, int ordered, int idata_supported) { - struct sctp_tmit_chunk *at; - uint32_t tsn_est; - - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(TSN_seq, at->rec.data.TSN_seq)) { - /* is it one bigger? */ - tsn_est = at->rec.data.TSN_seq + 1; - if (tsn_est == TSN_seq) { - /* yep. It better be a last then */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_LAST_FRAG) { - /* - * Ok this guy belongs next to a guy - * that is NOT last, it should be a - * middle/last, not a complete - * chunk. - */ - return (1); - } else { - /* - * This guy is ok since its a LAST - * and the new chunk is a fully - * self- contained one. - */ - return (0); - } + struct sctp_queued_to_read *control; + + if (ordered) { + TAILQ_FOREACH(control, &strm->inqueue, next_instrm) { + if (SCTP_MID_EQ(idata_supported, control->mid, mid)) { + break; } - } else if (TSN_seq == at->rec.data.TSN_seq) { - /* Software error since I have a dup? */ - return (1); - } else { - /* - * Ok, 'at' is larger than new chunk but does it - * need to be right before it. - */ - tsn_est = TSN_seq + 1; - if (tsn_est == at->rec.data.TSN_seq) { - /* Yep, It better be a first */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - return (1); - } else { - return (0); + } + } else { + if (idata_supported) { + TAILQ_FOREACH(control, &strm->uno_inqueue, next_instrm) { + if (SCTP_MID_EQ(idata_supported, control->mid, mid)) { + break; } } + } else { + control = TAILQ_FIRST(&strm->uno_inqueue); } } - return (0); + return (control); } static int sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct mbuf **m, int offset, struct sctp_data_chunk *ch, int chk_length, - struct sctp_nets *net, uint32_t *high_tsn, int *abort_flag, - int *break_flag, int last_chunk) + struct mbuf **m, int offset, int chk_length, + struct sctp_nets *net, uint32_t *high_tsn, int *abort_flag, + int *break_flag, int last_chunk, uint8_t chk_type) { - /* Process a data chunk */ - /* struct sctp_tmit_chunk *chk; */ - struct sctp_tmit_chunk *chk; - uint32_t tsn, gap; + struct sctp_tmit_chunk *chk = NULL; /* make gcc happy */ + struct sctp_stream_in *strm; + uint32_t tsn, fsn, gap, mid; struct mbuf *dmbuf; int the_len; int need_reasm_check = 0; - uint16_t strmno, strmseq; + uint16_t sid; struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - struct sctp_queued_to_read *control; - int ordered; - uint32_t protocol_id; - uint8_t chunk_flags; + struct sctp_queued_to_read *control, *ncontrol; + uint32_t ppid; + uint8_t chk_flags; struct sctp_stream_reset_list *liste; - - chk = NULL; - tsn = ntohl(ch->dp.tsn); - chunk_flags = ch->ch.chunk_flags; - if ((chunk_flags & SCTP_DATA_SACK_IMMEDIATELY) == SCTP_DATA_SACK_IMMEDIATELY) { + int ordered; + size_t clen; + int created_control = 0; + + if (chk_type == SCTP_IDATA) { + struct sctp_idata_chunk *chunk, chunk_buf; + + chunk = (struct sctp_idata_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_idata_chunk), (uint8_t *)&chunk_buf); + chk_flags = chunk->ch.chunk_flags; + clen = sizeof(struct sctp_idata_chunk); + tsn = ntohl(chunk->dp.tsn); + sid = ntohs(chunk->dp.sid); + mid = ntohl(chunk->dp.mid); + if (chk_flags & SCTP_DATA_FIRST_FRAG) { + fsn = 0; + ppid = chunk->dp.ppid_fsn.ppid; + } else { + fsn = ntohl(chunk->dp.ppid_fsn.fsn); + ppid = 0xffffffff; /* Use as an invalid value. */ + } + } else { + struct sctp_data_chunk *chunk, chunk_buf; + + chunk = (struct sctp_data_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_data_chunk), (uint8_t *)&chunk_buf); + chk_flags = chunk->ch.chunk_flags; + clen = sizeof(struct sctp_data_chunk); + tsn = ntohl(chunk->dp.tsn); + sid = ntohs(chunk->dp.sid); + mid = (uint32_t)(ntohs(chunk->dp.ssn)); + fsn = tsn; + ppid = chunk->dp.ppid; + } + if ((size_t)chk_length == clen) { + /* + * Need to send an abort since we had a + * empty data chunk. + */ + op_err = sctp_generate_no_user_data_cause(tsn); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_16; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + if ((chk_flags & SCTP_DATA_SACK_IMMEDIATELY) == SCTP_DATA_SACK_IMMEDIATELY) { asoc->send_sack = 1; } - protocol_id = ch->dp.protocol_id; - ordered = ((chunk_flags & SCTP_DATA_UNORDERED) == 0); + ordered = ((chk_flags & SCTP_DATA_UNORDERED) == 0); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { sctp_log_map(tsn, asoc->cumulative_tsn, asoc->highest_tsn_inside_map, SCTP_MAP_TSN_ENTERS); } if (stcb == NULL) { return (0); } - SCTP_LTRACE_CHK(stcb->sctp_ep, stcb, ch->ch.chunk_type, tsn); + SCTP_LTRACE_CHK(stcb->sctp_ep, stcb, chk_type, tsn); if (SCTP_TSN_GE(asoc->cumulative_tsn, tsn)) { /* It is a duplicate */ SCTP_STAT_INCR(sctps_recvdupdata); @@ -1360,7 +1821,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * receiver. Send peer an ABORT! */ op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return (0); } @@ -1370,6 +1831,112 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * for on a partial delivery API. */ + /* Is the stream valid? */ + if (sid >= asoc->streamincnt) { + struct sctp_error_invalid_stream *cause; + + op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_error_invalid_stream), + 0, M_NOWAIT, 1, MT_DATA); + if (op_err != NULL) { + /* add some space up front so prepend will work well */ + SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); + cause = mtod(op_err, struct sctp_error_invalid_stream *); + /* + * Error causes are just param's and this one has + * two back to back phdr, one with the error type + * and size, the other with the streamid and a rsvd + */ + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_error_invalid_stream); + cause->cause.code = htons(SCTP_CAUSE_INVALID_STREAM); + cause->cause.length = htons(sizeof(struct sctp_error_invalid_stream)); + cause->stream_id = htons(sid); + cause->reserved = htons(0); + sctp_queue_op_err(stcb, op_err); + } + SCTP_STAT_INCR(sctps_badsid); + SCTP_TCB_LOCK_ASSERT(stcb); + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + asoc->highest_tsn_inside_nr_map = tsn; + } + if (tsn == (asoc->cumulative_tsn + 1)) { + /* Update cum-ack */ + asoc->cumulative_tsn = tsn; + } + return (0); + } + /* + * If its a fragmented message, lets see if we can + * find the control on the reassembly queues. + */ + if ((chk_type == SCTP_IDATA) && + ((chk_flags & SCTP_DATA_FIRST_FRAG) == 0) && + (fsn == 0)) { + /* + * The first *must* be fsn 0, and other + * (middle/end) pieces can *not* be fsn 0. + * XXX: This can happen in case of a wrap around. + * Ignore is for now. + */ + SCTP_SNPRINTF(msg, sizeof(msg), "FSN zero for MID=%8.8x, but flags=%2.2x", mid, chk_flags); + goto err_out; + } + control = sctp_find_reasm_entry(&asoc->strmin[sid], mid, ordered, asoc->idata_supported); + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x look for control on queues %p\n", + chk_flags, control); + if ((chk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { + /* See if we can find the re-assembly entity */ + if (control != NULL) { + /* We found something, does it belong? */ + if (ordered && (mid != control->mid)) { + SCTP_SNPRINTF(msg, sizeof(msg), "Reassembly problem (MID=%8.8x)", mid); + err_out: + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_17; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + if (ordered && ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED)) { + /* We can't have a switched order with an unordered chunk */ + SCTP_SNPRINTF(msg, sizeof(msg), + "All fragments of a user message must be ordered or unordered (TSN=%8.8x)", + tsn); + goto err_out; + } + if (!ordered && (((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) == 0)) { + /* We can't have a switched unordered with a ordered chunk */ + SCTP_SNPRINTF(msg, sizeof(msg), + "All fragments of a user message must be ordered or unordered (TSN=%8.8x)", + tsn); + goto err_out; + } + } + } else { + /* Its a complete segment. Lets validate we + * don't have a re-assembly going on with + * the same Stream/Seq (for ordered) or in + * the same Stream for unordered. + */ + if (control != NULL) { + if (ordered || asoc->idata_supported) { + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags: 0x%x dup detected on MID: %u\n", + chk_flags, mid); + SCTP_SNPRINTF(msg, sizeof(msg), "Duplicate MID=%8.8x detected.", mid); + goto err_out; + } else { + if ((tsn == control->fsn_included + 1) && + (control->end_added == 0)) { + SCTP_SNPRINTF(msg, sizeof(msg), + "Illegal message sequence, missing end for MID: %8.8x", + control->fsn_included); + goto err_out; + } else { + control = NULL; + } + } + } + } /* now do the tests */ if (((asoc->cnt_on_all_streams + asoc->cnt_on_reasm_queue + @@ -1379,9 +1946,9 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * When we have NO room in the rwnd we check to make sure * the reader is doing its job... */ - if (stcb->sctp_socket->so_rcv.sb_cc) { + if (SCTP_SBAVAIL(&stcb->sctp_socket->so_rcv) > 0) { /* some to read, wake-up */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(stcb->sctp_ep); @@ -1397,73 +1964,36 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } #endif sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } /* now is it in the mapping array of what we have accepted? */ - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && - SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - /* Nope not in the valid range dump it */ - sctp_set_rwnd(stcb, asoc); - if ((asoc->cnt_on_all_streams + - asoc->cnt_on_reasm_queue + - asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { - SCTP_STAT_INCR(sctps_datadropchklmt); - } else { - SCTP_STAT_INCR(sctps_datadroprwnd); + if (chk_type == SCTP_DATA) { + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && + SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + /* Nope not in the valid range dump it */ + dump_packet: + sctp_set_rwnd(stcb, asoc); + if ((asoc->cnt_on_all_streams + + asoc->cnt_on_reasm_queue + + asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { + SCTP_STAT_INCR(sctps_datadropchklmt); + } else { + SCTP_STAT_INCR(sctps_datadroprwnd); + } + *break_flag = 1; + return (0); + } + } else { + if (control == NULL) { + goto dump_packet; + } + if (SCTP_TSN_GT(fsn, control->top_fsn)) { + goto dump_packet; } - *break_flag = 1; - return (0); - } - } - strmno = ntohs(ch->dp.stream_id); - if (strmno >= asoc->streamincnt) { - struct sctp_paramhdr *phdr; - struct mbuf *mb; - - mb = sctp_get_mbuf_for_msg((sizeof(struct sctp_paramhdr) * 2), - 0, M_NOWAIT, 1, MT_DATA); - if (mb != NULL) { - /* add some space up front so prepend will work well */ - SCTP_BUF_RESV_UF(mb, sizeof(struct sctp_chunkhdr)); - phdr = mtod(mb, struct sctp_paramhdr *); - /* - * Error causes are just param's and this one has - * two back to back phdr, one with the error type - * and size, the other with the streamid and a rsvd - */ - SCTP_BUF_LEN(mb) = (sizeof(struct sctp_paramhdr) * 2); - phdr->param_type = htons(SCTP_CAUSE_INVALID_STREAM); - phdr->param_length = - htons(sizeof(struct sctp_paramhdr) * 2); - phdr++; - /* We insert the stream in the type field */ - phdr->param_type = ch->dp.stream_id; - /* And set the length to 0 for the rsvd field */ - phdr->param_length = 0; - sctp_queue_op_err(stcb, mb); - } - SCTP_STAT_INCR(sctps_badsid); - SCTP_TCB_LOCK_ASSERT(stcb); - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - if (tsn == (asoc->cumulative_tsn + 1)) { - /* Update cum-ack */ - asoc->cumulative_tsn = tsn; } - return (0); } - /* - * Before we continue lets validate that we are not being fooled by - * an evil attacker. We can only have 4k chunks based on our TSN - * spread allowed by the mapping array 512 * 8 bits, so there is no - * way our stream sequence numbers could have wrapped. We of course - * only validate the FIRST fragment so the bit must be set. - */ - strmseq = ntohs(ch->dp.stream_sequence); #ifdef SCTP_ASOCLOG_OF_TSNS SCTP_TCB_LOCK_ASSERT(stcb); if (asoc->tsn_in_at >= SCTP_TSN_LOG_SIZE) { @@ -1471,8 +2001,8 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, asoc->tsn_in_wrapped = 1; } asoc->in_tsnlog[asoc->tsn_in_at].tsn = tsn; - asoc->in_tsnlog[asoc->tsn_in_at].strm = strmno; - asoc->in_tsnlog[asoc->tsn_in_at].seq = strmseq; + asoc->in_tsnlog[asoc->tsn_in_at].strm = sid; + asoc->in_tsnlog[asoc->tsn_in_at].seq = mid; asoc->in_tsnlog[asoc->tsn_in_at].sz = chk_length; asoc->in_tsnlog[asoc->tsn_in_at].flgs = chunk_flags; asoc->in_tsnlog[asoc->tsn_in_at].stcb = (void *)stcb; @@ -1480,33 +2010,55 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, asoc->in_tsnlog[asoc->tsn_in_at].in_out = 1; asoc->tsn_in_at++; #endif - if ((chunk_flags & SCTP_DATA_FIRST_FRAG) && + /* + * Before we continue lets validate that we are not being fooled by + * an evil attacker. We can only have Nk chunks based on our TSN + * spread allowed by the mapping array N * 8 bits, so there is no + * way our stream sequence numbers could have wrapped. We of course + * only validate the FIRST fragment so the bit must be set. + */ + if ((chk_flags & SCTP_DATA_FIRST_FRAG) && (TAILQ_EMPTY(&asoc->resetHead)) && - (chunk_flags & SCTP_DATA_UNORDERED) == 0 && - SCTP_SSN_GE(asoc->strmin[strmno].last_sequence_delivered, strmseq)) { + (chk_flags & SCTP_DATA_UNORDERED) == 0 && + SCTP_MID_GE(asoc->idata_supported, asoc->strmin[sid].last_mid_delivered, mid)) { /* The incoming sseq is behind where we last delivered? */ - SCTPDBG(SCTP_DEBUG_INDATA1, "EVIL/Broken-Dup S-SEQ:%d delivered:%d from peer, Abort!\n", - strmseq, asoc->strmin[strmno].last_sequence_delivered); - - snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->strmin[strmno].last_sequence_delivered, - tsn, strmno, strmseq); + SCTPDBG(SCTP_DEBUG_INDATA1, "EVIL/Broken-Dup S-SEQ: %u delivered: %u from peer, Abort!\n", + mid, asoc->strmin[sid].last_mid_delivered); + + if (asoc->idata_supported) { + SCTP_SNPRINTF(msg, sizeof(msg), "Delivered MID=%8.8x, got TSN=%8.8x, SID=%4.4x, MID=%8.8x", + asoc->strmin[sid].last_mid_delivered, + tsn, + sid, + mid); + } else { + SCTP_SNPRINTF(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", + (uint16_t)asoc->strmin[sid].last_mid_delivered, + tsn, + sid, + (uint16_t)mid); + } op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_14; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return (0); } - /************************************ - * From here down we may find ch-> invalid - * so its a good idea NOT to use it. - *************************************/ - - the_len = (chk_length - sizeof(struct sctp_data_chunk)); + if (chk_type == SCTP_IDATA) { + the_len = (chk_length - sizeof(struct sctp_idata_chunk)); + } else { + the_len = (chk_length - sizeof(struct sctp_data_chunk)); + } if (last_chunk == 0) { - dmbuf = SCTP_M_COPYM(*m, - (offset + sizeof(struct sctp_data_chunk)), - the_len, M_NOWAIT); + if (chk_type == SCTP_IDATA) { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_idata_chunk)), + the_len, M_NOWAIT); + } else { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_data_chunk)), + the_len, M_NOWAIT); + } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { sctp_log_mbc(dmbuf, SCTP_MBUF_ICOPY); @@ -1517,7 +2069,11 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, int l_len; dmbuf = *m; /* lop off the top part */ - m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + if (chk_type == SCTP_IDATA) { + m_adj(dmbuf, (offset + sizeof(struct sctp_idata_chunk))); + } else { + m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + } if (SCTP_BUF_NEXT(dmbuf) == NULL) { l_len = SCTP_BUF_LEN(dmbuf); } else { @@ -1540,12 +2096,48 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_STAT_INCR(sctps_nomem); return (0); } - if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG && - asoc->fragmented_delivery_inprogress == 0 && + /* + * Now no matter what, we need a control, get one + * if we don't have one (we may have gotten it + * above when we found the message was fragmented + */ + if (control == NULL) { + sctp_alloc_a_readq(stcb, control); + sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, + ppid, + sid, + chk_flags, + NULL, fsn, mid); + if (control == NULL) { + SCTP_STAT_INCR(sctps_nomem); + return (0); + } + if ((chk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + struct mbuf *mm; + + control->data = dmbuf; + control->tail_mbuf = NULL; + for (mm = control->data; mm; mm = mm->m_next) { + control->length += SCTP_BUF_LEN(mm); + if (SCTP_BUF_NEXT(mm) == NULL) { + control->tail_mbuf = mm; + } + } + control->end_added = 1; + control->last_frag_seen = 1; + control->first_frag_seen = 1; + control->fsn_included = fsn; + control->top_fsn = fsn; + } + created_control = 1; + } + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags: 0x%x ordered: %d MID: %u control: %p\n", + chk_flags, ordered, mid, control); + if ((chk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG && TAILQ_EMPTY(&asoc->resetHead) && ((ordered == 0) || - ((uint16_t)(asoc->strmin[strmno].last_sequence_delivered + 1) == strmseq && - TAILQ_EMPTY(&asoc->strmin[strmno].inqueue)))) { + (SCTP_MID_EQ(asoc->idata_supported, asoc->strmin[sid].last_mid_delivered + 1, mid) && + TAILQ_EMPTY(&asoc->strmin[sid].inqueue)))) { /* Candidate for express delivery */ /* * Its not fragmented, No PD-API is up, Nothing in the @@ -1554,108 +2146,32 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * And there is room for it in the socket buffer. Lets just * stuff it up the buffer.... */ - - /* It would be nice to avoid this copy if we could :< */ - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - goto failed_express_del; - } SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { asoc->highest_tsn_inside_nr_map = tsn; } + SCTPDBG(SCTP_DEBUG_XXX, "Injecting control: %p to be read (MID: %u)\n", + control, mid); + sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { + if ((chk_flags & SCTP_DATA_UNORDERED) == 0) { /* for ordered, bump what we delivered */ - asoc->strmin[strmno].last_sequence_delivered++; + asoc->strmin[sid].last_mid_delivered++; } SCTP_STAT_INCR(sctps_recvexpress); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, + sctp_log_strm_del_alt(stcb, tsn, mid, sid, SCTP_STR_LOG_FROM_EXPRS_DEL); } control = NULL; - goto finish_express_del; } -failed_express_del: - /* If we reach here this is a new chunk */ - chk = NULL; - control = NULL; - /* Express for fragmented delivery? */ - if ((asoc->fragmented_delivery_inprogress) && - (stcb->asoc.control_pdapi) && - (asoc->str_of_pdapi == strmno) && - (asoc->ssn_of_pdapi == strmseq) - ) { - control = stcb->asoc.control_pdapi; - if ((chunk_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { - /* Can't be another first? */ - goto failed_pdapi_express_del; - } - if (tsn == (control->sinfo_tsn + 1)) { - /* Yep, we can add it on */ - int end = 0; - - if (chunk_flags & SCTP_DATA_LAST_FRAG) { - end = 1; - } - if (sctp_append_to_readq(stcb->sctp_ep, stcb, control, dmbuf, end, - tsn, - &stcb->sctp_socket->so_rcv)) { - SCTP_PRINTF("Append fails end:%d\n", end); - goto failed_pdapi_express_del; - } - - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - SCTP_STAT_INCR(sctps_recvexpressm); - asoc->tsn_last_delivered = tsn; - asoc->fragment_flags = chunk_flags; - asoc->tsn_of_pdapi_last_delivered = tsn; - asoc->last_flags_delivered = chunk_flags; - asoc->last_strm_seq_delivered = strmseq; - asoc->last_strm_no_delivered = strmno; - if (end) { - /* clean up the flags and such */ - asoc->fragmented_delivery_inprogress = 0; - if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[strmno].last_sequence_delivered++; - } - stcb->asoc.control_pdapi = NULL; - if (TAILQ_EMPTY(&asoc->reasmqueue) == 0) { - /* There could be another message ready */ - need_reasm_check = 1; - } - } - control = NULL; - goto finish_express_del; - } - } - failed_pdapi_express_del: - control = NULL; - if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - } else { - SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { - asoc->highest_tsn_inside_map = tsn; - } - } - if ((chunk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { + + /* Now will we need a chunk too? */ + if ((chk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { /* No memory so we drop the chunk */ @@ -1666,203 +2182,120 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } return (0); } - chk->rec.data.TSN_seq = tsn; + chk->rec.data.tsn = tsn; chk->no_fr_allowed = 0; - chk->rec.data.stream_seq = strmseq; - chk->rec.data.stream_number = strmno; - chk->rec.data.payloadtype = protocol_id; + chk->rec.data.fsn = fsn; + chk->rec.data.mid = mid; + chk->rec.data.sid = sid; + chk->rec.data.ppid = ppid; chk->rec.data.context = stcb->asoc.context; chk->rec.data.doing_fast_retransmit = 0; - chk->rec.data.rcv_flags = chunk_flags; + chk->rec.data.rcv_flags = chk_flags; chk->asoc = asoc; chk->send_size = the_len; chk->whoTo = net; + SCTPDBG(SCTP_DEBUG_XXX, "Building ck: %p for control: %p to be read (MID: %u)\n", + chk, + control, mid); atomic_add_int(&net->ref_count, 1); chk->data = dmbuf; + } + /* Set the appropriate TSN mark */ + if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + asoc->highest_tsn_inside_nr_map = tsn; + } } else { - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - /* No memory so we drop the chunk */ - SCTP_STAT_INCR(sctps_nomem); - if (last_chunk == 0) { - /* we copied it, free the copy */ - sctp_m_freem(dmbuf); - } - return (0); + SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { + asoc->highest_tsn_inside_map = tsn; } - control->length = the_len; } - - /* Mark it as received */ - /* Now queue it where it belongs */ - if (control != NULL) { - /* First a sanity check */ - if (asoc->fragmented_delivery_inprogress) { + /* Now is it complete (i.e. not fragmented)? */ + if ((chk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* + * Special check for when streams are resetting. We + * could be more smart about this and check the + * actual stream to see if it is not being reset.. + * that way we would not create a HOLB when amongst + * streams being reset and those not being reset. + * + */ + if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && + SCTP_TSN_GT(tsn, liste->tsn)) { /* - * Ok, we have a fragmented delivery in progress if - * this chunk is next to deliver OR belongs in our - * view to the reassembly, the peer is evil or - * broken. + * yep its past where we need to reset... go + * ahead and queue it. */ - uint32_t estimate_tsn; - - estimate_tsn = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue) && - (estimate_tsn == control->sinfo_tsn)) { - /* Evil/Broke peer */ - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "Reas. queue emtpy, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_15; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); + if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { + /* first one on */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); } else { - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_16; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; + struct sctp_queued_to_read *lcontrol, *nlcontrol; + unsigned char inserted = 0; + TAILQ_FOREACH_SAFE(lcontrol, &asoc->pending_reply_queue, next, nlcontrol) { + if (SCTP_TSN_GT(control->sinfo_tsn, lcontrol->sinfo_tsn)) { + continue; + } else { + /* found it */ + TAILQ_INSERT_BEFORE(lcontrol, control, next); + inserted = 1; + break; } - return (0); } - } - } else { - /* No PDAPI running */ - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* - * Reassembly queue is NOT empty validate - * that this tsn does not need to be in - * reasembly queue. If it does then our peer - * is broken or evil. - */ - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "No PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_17; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); + if (inserted == 0) { + /* + * must be put at end, use + * prevP (all setup from + * loop) to setup nextP. + */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); } } + goto finish_express_del; } - /* ok, if we reach here we have passed the sanity checks */ - if (chunk_flags & SCTP_DATA_UNORDERED) { + if (chk_flags & SCTP_DATA_UNORDERED) { /* queue directly into socket buffer */ + SCTPDBG(SCTP_DEBUG_XXX, "Unordered data to be read control: %p MID: %u\n", + control, mid); sctp_mark_non_revokable(asoc, control->sinfo_tsn); sctp_add_to_readq(stcb->sctp_ep, stcb, control, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { - /* - * Special check for when streams are resetting. We - * could be more smart about this and check the - * actual stream to see if it is not being reset.. - * that way we would not create a HOLB when amongst - * streams being reset and those not being reset. - * - * We take complete messages that have a stream reset - * intervening (aka the TSN is after where our - * cum-ack needs to be) off and put them on a - * pending_reply_queue. The reassembly ones we do - * not have to worry about since they are all sorted - * and proceessed by TSN order. It is only the - * singletons I must worry about. - */ - if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && - SCTP_TSN_GT(tsn, liste->tsn)) { - /* - * yep its past where we need to reset... go - * ahead and queue it. - */ - if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { - /* first one on */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } else { - struct sctp_queued_to_read *ctlOn, *nctlOn; - unsigned char inserted = 0; + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - TAILQ_FOREACH_SAFE(ctlOn, &asoc->pending_reply_queue, next, nctlOn) { - if (SCTP_TSN_GT(control->sinfo_tsn, ctlOn->sinfo_tsn)) { - continue; - } else { - /* found it */ - TAILQ_INSERT_BEFORE(ctlOn, control, next); - inserted = 1; - break; - } - } - if (inserted == 0) { - /* - * must be put at end, use - * prevP (all setup from - * loop) to setup nextP. - */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } - } - } else { - sctp_queue_data_to_stream(stcb, asoc, control, abort_flag); - if (*abort_flag) { - if (last_chunk) { - *m = NULL; - } - return (0); + } else { + SCTPDBG(SCTP_DEBUG_XXX, "Queue control: %p for reordering MID: %u\n", control, + mid); + sctp_queue_data_to_stream(stcb, asoc, control, abort_flag, &need_reasm_check); + if (*abort_flag) { + if (last_chunk) { + *m = NULL; } + return (0); } } - } else { - /* Into the re-assembly queue */ - sctp_queue_data_for_reasm(stcb, asoc, chk, abort_flag); - if (*abort_flag) { - /* - * the assoc is now gone and chk was put onto the - * reasm queue, which has all been freed. - */ - if (last_chunk) { - *m = NULL; - } - return (0); + goto finish_express_del; + } + /* If we reach here its a reassembly */ + need_reasm_check = 1; + SCTPDBG(SCTP_DEBUG_XXX, + "Queue data to stream for reasm control: %p MID: %u\n", + control, mid); + sctp_queue_data_for_reasm(stcb, asoc, control, chk, created_control, abort_flag, tsn); + if (*abort_flag) { + /* + * the assoc is now gone and chk was put onto the + * reasm queue, which has all been freed. + */ + if (last_chunk) { + *m = NULL; } + return (0); } finish_express_del: + /* Here we tidy up things */ if (tsn == (asoc->cumulative_tsn + 1)) { /* Update cum-ack */ asoc->cumulative_tsn = tsn; @@ -1878,12 +2311,16 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_STAT_INCR(sctps_recvdata); /* Set it present please */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, SCTP_STR_LOG_FROM_MARK_TSN); + sctp_log_strm_del_alt(stcb, tsn, mid, sid, SCTP_STR_LOG_FROM_MARK_TSN); } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { sctp_log_map(asoc->mapping_array_base_tsn, asoc->cumulative_tsn, asoc->highest_tsn_inside_map, SCTP_MAP_PREPARE_SLIDE); } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, asoc, &asoc->strmin[sid], SCTP_READ_LOCK_NOT_HELD); + need_reasm_check = 0; + } /* check the special flag for stream resets */ if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && SCTP_TSN_GE(asoc->cumulative_tsn, liste->tsn)) { @@ -1893,55 +2330,53 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * pending_reply space 3: distribute any chunks in * pending_reply_queue. */ - struct sctp_queued_to_read *ctl, *nctl; - sctp_reset_in_stream(stcb, liste->number_entries, liste->list_of_streams); TAILQ_REMOVE(&asoc->resetHead, liste, next_resp); + sctp_send_deferred_reset_response(stcb, liste, SCTP_STREAM_RESET_RESULT_PERFORMED); SCTP_FREE(liste, SCTP_M_STRESET); /*sa_ignore FREED_MEMORY*/ liste = TAILQ_FIRST(&asoc->resetHead); if (TAILQ_EMPTY(&asoc->resetHead)) { /* All can be removed */ - TAILQ_FOREACH_SAFE(ctl, &asoc->pending_reply_queue, next, nctl) { - TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + TAILQ_FOREACH_SAFE(control, &asoc->pending_reply_queue, next, ncontrol) { + TAILQ_REMOVE(&asoc->pending_reply_queue, control, next); + strm = &asoc->strmin[control->sinfo_stream]; + sctp_queue_data_to_stream(stcb, asoc, control, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, asoc, strm, SCTP_READ_LOCK_NOT_HELD); + need_reasm_check = 0; + } } } else { - TAILQ_FOREACH_SAFE(ctl, &asoc->pending_reply_queue, next, nctl) { - if (SCTP_TSN_GT(ctl->sinfo_tsn, liste->tsn)) { + TAILQ_FOREACH_SAFE(control, &asoc->pending_reply_queue, next, ncontrol) { + if (SCTP_TSN_GT(control->sinfo_tsn, liste->tsn)) { break; } /* - * if ctl->sinfo_tsn is <= liste->tsn we can + * if control->sinfo_tsn is <= liste->tsn we can * process it which is the NOT of - * ctl->sinfo_tsn > liste->tsn + * control->sinfo_tsn > liste->tsn */ - TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + TAILQ_REMOVE(&asoc->pending_reply_queue, control, next); + strm = &asoc->strmin[control->sinfo_stream]; + sctp_queue_data_to_stream(stcb, asoc, control, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, asoc, strm, SCTP_READ_LOCK_NOT_HELD); + need_reasm_check = 0; + } } } - /* - * Now service re-assembly to pick up anything that has been - * held on reassembly queue? - */ - sctp_deliver_reasm_check(stcb, asoc); - need_reasm_check = 0; - } - - if (need_reasm_check) { - /* Another one waits ? */ - sctp_deliver_reasm_check(stcb, asoc); } return (1); } -int8_t sctp_map_lookup_tab[256] = { +static const int8_t sctp_map_lookup_tab[256] = { 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, @@ -1976,7 +2411,6 @@ int8_t sctp_map_lookup_tab[256] = { 0, 1, 0, 2, 0, 1, 0, 8 }; - void sctp_slide_mapping_arrays(struct sctp_tcb *stcb) { @@ -1985,7 +2419,7 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb) * 1) Did we move the cum-ack point? * * When you first glance at this you might think - * that all entries that make up the postion + * that all entries that make up the position * of the cum-ack would be in the nr-mapping array * only.. i.e. things up to the cum-ack are always * deliverable. Thats true with one exception, when @@ -2083,7 +2517,7 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb) #ifdef INVARIANTS panic("impossible slide"); #else - SCTP_PRINTF("impossible slide lgap:%x slide_end:%x slide_from:%x? at:%d\n", + SCTP_PRINTF("impossible slide lgap: %x slide_end: %x slide_from: %x? at: %d\n", lgap, slide_end, slide_from, at); return; #endif @@ -2092,7 +2526,7 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb) #ifdef INVARIANTS panic("would overrun buffer"); #else - SCTP_PRINTF("Gak, would have overrun map end:%d slide_end:%d\n", + SCTP_PRINTF("Gak, would have overrun map end: %d slide_end: %d\n", asoc->mapping_array_size, slide_end); slide_end = asoc->mapping_array_size; #endif @@ -2112,7 +2546,6 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb) * we will be able to slide it forward. Really I * don't think this should happen :-0 */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { sctp_log_map((uint32_t) distance, (uint32_t) slide_from, (uint32_t) asoc->mapping_array_size, @@ -2124,7 +2557,6 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb) for (ii = 0; ii < distance; ii++) { asoc->mapping_array[ii] = asoc->mapping_array[slide_from + ii]; asoc->nr_mapping_array[ii] = asoc->nr_mapping_array[slide_from + ii]; - } for (ii = distance; ii < asoc->mapping_array_size; ii++) { asoc->mapping_array[ii] = 0; @@ -2151,19 +2583,23 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) { struct sctp_association *asoc; uint32_t highest_tsn; + int is_a_gap; + sctp_slide_mapping_arrays(stcb); asoc = &stcb->asoc; if (SCTP_TSN_GT(asoc->highest_tsn_inside_nr_map, asoc->highest_tsn_inside_map)) { highest_tsn = asoc->highest_tsn_inside_nr_map; } else { highest_tsn = asoc->highest_tsn_inside_map; } + /* Is there a gap now? */ + is_a_gap = SCTP_TSN_GT(highest_tsn, stcb->asoc.cumulative_tsn); /* * Now we need to see if we need to queue a sack or just start the * timer (if allowed). */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) { /* * Ok special case, in SHUTDOWN-SENT case. here we * maker sure SACK timer is off and instead send a @@ -2171,17 +2607,15 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) */ if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_INDATA+SCTP_LOC_18); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_19); } sctp_send_shutdown(stcb, - ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination)); - sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED); + ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination)); + if (is_a_gap) { + sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED); + } } else { - int is_a_gap; - - /* is there a gap now ? */ - is_a_gap = SCTP_TSN_GT(highest_tsn, stcb->asoc.cumulative_tsn); - /* * CMT DAC algorithm: increase number of packets * received since last ack @@ -2194,20 +2628,16 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) (stcb->asoc.numduptsns) || /* we have dup's */ (is_a_gap) || /* is still a gap */ (stcb->asoc.delayed_ack == 0) || /* Delayed sack disabled */ - (stcb->asoc.data_pkts_seen >= stcb->asoc.sack_freq) /* hit limit of pkts */ - ) { - + (stcb->asoc.data_pkts_seen >= stcb->asoc.sack_freq)) { /* hit limit of pkts */ if ((stcb->asoc.sctp_cmt_on_off > 0) && (SCTP_BASE_SYSCTL(sctp_cmt_use_dac)) && (stcb->asoc.send_sack == 0) && (stcb->asoc.numduptsns == 0) && (stcb->asoc.delayed_ack) && (!SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer))) { - /* * CMT DAC algorithm: With CMT, * delay acks even in the face of - * reordering. Therefore, if acks * that do not have to be sent * because of the above reasons, @@ -2225,7 +2655,8 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) * first packet OR there are gaps or * duplicates. */ - (void)SCTP_OS_TIMER_STOP(&stcb->asoc.dack_timer.timer); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_20); sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED); } } else { @@ -2237,85 +2668,20 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) } } -void -sctp_service_queues(struct sctp_tcb *stcb, struct sctp_association *asoc) -{ - struct sctp_tmit_chunk *chk; - uint32_t tsize, pd_point; - uint16_t nxt_todel; - - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* Can we proceed further, i.e. the PD-API is complete */ - if (asoc->fragmented_delivery_inprogress) { - /* no */ - return; - } - /* - * Now is there some other chunk I can deliver from the reassembly - * queue. - */ - doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; - return; - } - nxt_todel = asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - ((nxt_todel == chk->rec.data.stream_seq) || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here. We setup to start reception, - * by backing down the TSN just in case we can't deliver. - */ - - /* - * Before we start though either all of the message should - * be here or the socket buffer max or nothing on the - * delivery queue and something can be delivered. - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); - } else { - pd_point = stcb->sctp_ep->partial_delivery_point; - } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { - goto doit_again; - } - } - } -} - int sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, - struct sockaddr *src, struct sockaddr *dst, - struct sctphdr *sh, struct sctp_inpcb *inp, - struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t *high_tsn, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, -#endif - uint32_t vrf_id, uint16_t port) + struct sctp_inpcb *inp, struct sctp_tcb *stcb, + struct sctp_nets *net, uint32_t *high_tsn) { - struct sctp_data_chunk *ch, chunk_buf; + struct sctp_chunkhdr *ch, chunk_buf; struct sctp_association *asoc; int num_chunks = 0; /* number of control chunks processed */ int stop_proc = 0; - int chk_length, break_flag, last_chunk; + int break_flag, last_chunk; int abort_flag = 0, was_a_gap; struct mbuf *m; uint32_t highest_tsn; + uint16_t chk_length; /* set the rwnd */ sctp_set_rwnd(stcb, &stcb->asoc); @@ -2336,14 +2702,12 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, */ asoc->last_data_chunk_from = net; -#ifndef __Panda__ /*- * Now before we proceed we must figure out if this is a wasted * cluster... i.e. it is a small packet sent in and yet the driver * underneath allocated a full cluster for it. If so we must copy it * to a smaller mbuf and free up the cluster mbuf. This will help - * with cluster starvation. Note for __Panda__ we don't do this - * since it has clusters all the way down to 64 bytes. + * with cluster starvation. */ if (SCTP_BUF_LEN(m) < (long)MLEN && SCTP_BUF_NEXT(m) == NULL) { /* we only handle mbufs that are singletons.. not chains */ @@ -2358,17 +2722,17 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, /* copy the length and free up the old */ SCTP_BUF_LEN(m) = SCTP_BUF_LEN((*mm)); sctp_m_freem(*mm); - /* sucess, back copy */ + /* success, back copy */ *mm = m; } else { /* We are in trouble in the mbuf world .. yikes */ m = *mm; } } -#endif /* get pointer to the first chunk header */ - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), + (uint8_t *)&chunk_buf); if (ch == NULL) { return (1); } @@ -2380,14 +2744,44 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, asoc->data_pkts_seen++; while (stop_proc == 0) { /* validate chunk length */ - chk_length = ntohs(ch->ch.chunk_length); + chk_length = ntohs(ch->chunk_length); if (length - *offset < chk_length) { /* all done, mutulated chunk */ stop_proc = 1; continue; } - if (ch->ch.chunk_type == SCTP_DATA) { - if ((size_t)chk_length < sizeof(struct sctp_data_chunk)) { + if ((asoc->idata_supported == 1) && + (ch->chunk_type == SCTP_DATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + SCTP_SNPRINTF(msg, sizeof(msg), "%s", "DATA chunk received when I-DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((asoc->idata_supported == 0) && + (ch->chunk_type == SCTP_IDATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + SCTP_SNPRINTF(msg, sizeof(msg), "%s", "I-DATA chunk received when DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_22; + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((ch->chunk_type == SCTP_DATA) || + (ch->chunk_type == SCTP_IDATA)) { + uint16_t clen; + + if (ch->chunk_type == SCTP_DATA) { + clen = sizeof(struct sctp_data_chunk); + } else { + clen = sizeof(struct sctp_idata_chunk); + } + if (chk_length < clen) { /* * Need to send an abort since we had a * invalid data chunk. @@ -2395,33 +2789,12 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - snprintf(msg, sizeof(msg), "DATA chunk of length %d", - chk_length); + SCTP_SNPRINTF(msg, sizeof(msg), "%s chunk of length %u", + ch->chunk_type == SCTP_DATA ? "DATA" : "I-DATA", + chk_length); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_19; - sctp_abort_association(inp, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - return (2); - } - if ((size_t)chk_length == sizeof(struct sctp_data_chunk)) { - /* - * Need to send an abort since we had an - * empty data chunk. - */ - struct mbuf *op_err; - - op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_19; - sctp_abort_association(inp, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_23; + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); return (2); } #ifdef SCTP_AUDITING_ENABLED @@ -2432,9 +2805,9 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } else { last_chunk = 0; } - if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, ch, + if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, chk_length, net, high_tsn, &abort_flag, &break_flag, - last_chunk)) { + last_chunk, ch->chunk_type)) { num_chunks++; } if (abort_flag) @@ -2450,7 +2823,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } else { /* not a data chunk in the data region */ - switch (ch->ch.chunk_type) { + switch (ch->chunk_type) { case SCTP_INITIATION: case SCTP_INITIATION_ACK: case SCTP_SELECTIVE_ACK: @@ -2472,6 +2845,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, case SCTP_STREAM_RESET: case SCTP_FORWARD_CUM_TSN: case SCTP_ASCONF: + { /* * Now, what do we do with KNOWN chunks that * are NOT in the right place? @@ -2481,57 +2855,55 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, * switch out and do either an ABORT() or * possibly process them. */ - if (SCTP_BASE_SYSCTL(sctp_strict_data_order)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + SCTP_SNPRINTF(msg, sizeof(msg), "DATA chunk followed by chunk of type %2.2x", + ch->chunk_type); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return (2); + } + default: + /* + * Unknown chunk type: use bit rules after + * checking length + */ + if (chk_length < sizeof(struct sctp_chunkhdr)) { + /* + * Need to send an abort since we had a + * invalid chunk. + */ struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, ""); - sctp_abort_association(inp, stcb, - m, iphlen, - src, dst, - sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); + SCTP_SNPRINTF(msg, sizeof(msg), "Chunk of length %u", chk_length); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24; + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); return (2); } - break; - default: - /* unknown chunk type, use bit rules */ - if (ch->ch.chunk_type & 0x40) { + if (ch->chunk_type & 0x40) { /* Add a error report to the queue */ - struct mbuf *merr; - struct sctp_paramhdr *phd; - - merr = sctp_get_mbuf_for_msg(sizeof(*phd), 0, M_NOWAIT, 1, MT_DATA); - if (merr) { - phd = mtod(merr, struct sctp_paramhdr *); - /* - * We cheat and use param - * type since we did not - * bother to define a error - * cause struct. They are - * the same basic format - * with different names. - */ - phd->param_type = - htons(SCTP_CAUSE_UNRECOG_CHUNK); - phd->param_length = - htons(chk_length + sizeof(*phd)); - SCTP_BUF_LEN(merr) = sizeof(*phd); - SCTP_BUF_NEXT(merr) = SCTP_M_COPYM(m, *offset, chk_length, M_NOWAIT); - if (SCTP_BUF_NEXT(merr)) { - if (sctp_pad_lastmbuf(SCTP_BUF_NEXT(merr), SCTP_SIZE32(chk_length) - chk_length, NULL) == NULL) { - sctp_m_freem(merr); - } else { - sctp_queue_op_err(stcb, merr); - } + struct mbuf *op_err; + struct sctp_gen_error_cause *cause; + + op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_gen_error_cause), + 0, M_NOWAIT, 1, MT_DATA); + if (op_err != NULL) { + cause = mtod(op_err, struct sctp_gen_error_cause *); + cause->code = htons(SCTP_CAUSE_UNRECOG_CHUNK); + cause->length = htons((uint16_t)(chk_length + sizeof(struct sctp_gen_error_cause))); + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_gen_error_cause); + SCTP_BUF_NEXT(op_err) = SCTP_M_COPYM(m, *offset, chk_length, M_NOWAIT); + if (SCTP_BUF_NEXT(op_err) != NULL) { + sctp_queue_op_err(stcb, op_err); } else { - sctp_m_freem(merr); + sctp_m_freem(op_err); } } } - if ((ch->ch.chunk_type & 0x80) == 0) { + if ((ch->chunk_type & 0x80) == 0) { /* discard the rest of this packet */ stop_proc = 1; } /* else skip this bad chunk and @@ -2545,8 +2917,9 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, stop_proc = 1; continue; } - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), + (uint8_t *)&chunk_buf); if (ch == NULL) { *offset = length; stop_proc = 1; @@ -2576,10 +2949,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_last_rcvd); } /* now service all of the reassm queue if needed */ - if (!(TAILQ_EMPTY(&asoc->reasmqueue))) - sctp_service_queues(stcb, asoc); - - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) { /* Assure that we ack right away */ stcb->asoc.send_sack = 1; } @@ -2622,16 +2992,16 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 if ((tp1->sent < SCTP_DATAGRAM_RESEND) && (tp1->whoTo->find_pseudo_cumack == 1) && (tp1->snd_count == 1)) { - tp1->whoTo->pseudo_cumack = tp1->rec.data.TSN_seq; + tp1->whoTo->pseudo_cumack = tp1->rec.data.tsn; tp1->whoTo->find_pseudo_cumack = 0; } if ((tp1->sent < SCTP_DATAGRAM_RESEND) && (tp1->whoTo->find_rtx_pseudo_cumack == 1) && (tp1->snd_count > 1)) { - tp1->whoTo->rtx_pseudo_cumack = tp1->rec.data.TSN_seq; + tp1->whoTo->rtx_pseudo_cumack = tp1->rec.data.tsn; tp1->whoTo->find_rtx_pseudo_cumack = 0; } - if (tp1->rec.data.TSN_seq == theTSN) { + if (tp1->rec.data.tsn == theTSN) { if (tp1->sent != SCTP_DATAGRAM_UNSENT) { /*- * must be held until @@ -2645,9 +3015,9 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 * via previous Gap Ack Blocks... * i.e. ACKED or RESEND. */ - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, + if (SCTP_TSN_GT(tp1->rec.data.tsn, *biggest_newly_acked_tsn)) { - *biggest_newly_acked_tsn = tp1->rec.data.TSN_seq; + *biggest_newly_acked_tsn = tp1->rec.data.tsn; } /*- * CMT: SFR algo (and HTNA) - set @@ -2659,10 +3029,10 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 if (tp1->rec.data.chunk_was_revoked == 0) tp1->whoTo->saw_newack = 1; - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, + if (SCTP_TSN_GT(tp1->rec.data.tsn, tp1->whoTo->this_sack_highest_newack)) { tp1->whoTo->this_sack_highest_newack = - tp1->rec.data.TSN_seq; + tp1->rec.data.tsn; } /*- * CMT DAC algo: also update @@ -2672,12 +3042,12 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(*this_sack_lowest_newack, last_tsn, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, 0, 0, SCTP_LOG_TSN_ACKED); } - *this_sack_lowest_newack = tp1->rec.data.TSN_seq; + *this_sack_lowest_newack = tp1->rec.data.tsn; } /*- * CMT: CUCv2 algorithm. If (rtx-)pseudo-cumack for corresp @@ -2687,16 +3057,16 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 * Separate pseudo_cumack trackers for first transmissions and * retransmissions. */ - if (tp1->rec.data.TSN_seq == tp1->whoTo->pseudo_cumack) { + if (tp1->rec.data.tsn == tp1->whoTo->pseudo_cumack) { if (tp1->rec.data.chunk_was_revoked == 0) { tp1->whoTo->new_pseudo_cumack = 1; } tp1->whoTo->find_pseudo_cumack = 1; } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { - sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.TSN_seq, SCTP_CWND_LOG_FROM_SACK); + sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.tsn, SCTP_CWND_LOG_FROM_SACK); } - if (tp1->rec.data.TSN_seq == tp1->whoTo->rtx_pseudo_cumack) { + if (tp1->rec.data.tsn == tp1->whoTo->rtx_pseudo_cumack) { if (tp1->rec.data.chunk_was_revoked == 0) { tp1->whoTo->new_pseudo_cumack = 1; } @@ -2705,7 +3075,7 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(*biggest_newly_acked_tsn, last_tsn, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, frag_strt, frag_end, SCTP_LOG_TSN_ACKED); @@ -2714,8 +3084,8 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_GAP, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } sctp_flight_size_decrease(tp1); if (stcb->asoc.cc_functions.sctp_cwnd_update_tsn_acknowledged) { @@ -2727,7 +3097,7 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 tp1->whoTo->net_ack += tp1->send_size; if (tp1->snd_count < 2) { /*- - * True non-retransmited chunk + * True non-retransmitted chunk */ tp1->whoTo->net_ack2 += tp1->send_size; @@ -2735,14 +3105,12 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 * update RTO too ? */ if (tp1->do_rtt) { - if (*rto_ok) { - tp1->whoTo->RTO = - sctp_calculate_rto(stcb, - &stcb->asoc, - tp1->whoTo, - &tp1->sent_rcv_time, - sctp_align_safe_nocopy, - SCTP_RTT_FROM_DATA); + if (*rto_ok && + sctp_calculate_rto(stcb, + &stcb->asoc, + tp1->whoTo, + &tp1->sent_rcv_time, + SCTP_RTT_FROM_DATA)) { *rto_ok = 0; } if (tp1->whoTo->rto_needed == 0) { @@ -2751,13 +3119,12 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 tp1->do_rtt = 0; } } - } if (tp1->sent <= SCTP_DATAGRAM_RESEND) { - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, + if (SCTP_TSN_GT(tp1->rec.data.tsn, stcb->asoc.this_sack_highest_gap)) { stcb->asoc.this_sack_highest_gap = - tp1->rec.data.TSN_seq; + tp1->rec.data.tsn; } if (tp1->sent == SCTP_DATAGRAM_RESEND) { sctp_ucount_decr(stcb->asoc.sent_queue_retran_cnt); @@ -2783,13 +3150,18 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 /* NR Sack code here */ if (nr_sacking && (tp1->sent != SCTP_DATAGRAM_NR_ACKED)) { - if (stcb->asoc.strmout[tp1->rec.data.stream_number].chunks_on_queues > 0) { - stcb->asoc.strmout[tp1->rec.data.stream_number].chunks_on_queues--; + if (stcb->asoc.strmout[tp1->rec.data.sid].chunks_on_queues > 0) { + stcb->asoc.strmout[tp1->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", tp1->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", tp1->rec.data.sid); #endif } + if ((stcb->asoc.strmout[tp1->rec.data.sid].chunks_on_queues == 0) && + (stcb->asoc.strmout[tp1->rec.data.sid].state == SCTP_STREAM_RESET_PENDING) && + TAILQ_EMPTY(&stcb->asoc.strmout[tp1->rec.data.sid].outqueue)) { + stcb->asoc.trigger_reset = 1; + } tp1->sent = SCTP_DATAGRAM_NR_ACKED; if (tp1->data) { /* sa_ignore NO_NULL_CHK */ @@ -2801,8 +3173,8 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 } } break; - } /* if (tp1->TSN_seq == theTSN) */ - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, theTSN)) { + } /* if (tp1->tsn == theTSN) */ + if (SCTP_TSN_GT(tp1->rec.data.tsn, theTSN)) { break; } tp1 = TAILQ_NEXT(tp1, sctp_next); @@ -2821,7 +3193,6 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1 return (wake_him); /* Return value only used for nr-sack */ } - static int sctp_handle_segments(struct mbuf *m, int *offset, struct sctp_tcb *stcb, struct sctp_association *asoc, uint32_t last_tsn, uint32_t *biggest_tsn_acked, @@ -2894,14 +3265,14 @@ sctp_check_for_revoked(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1; TAILQ_FOREACH(tp1, &asoc->sent_queue, sctp_next) { - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, cumack)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, cumack)) { /* * ok this guy is either ACK or MARKED. If it is * ACKED it has been previously acked but not this * time i.e. revoked. If it is MARKED it was ACK'ed * again. */ - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, biggest_tsn_acked)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, biggest_tsn_acked)) { break; } if (tp1->sent == SCTP_DATAGRAM_ACKED) { @@ -2915,8 +3286,8 @@ sctp_check_for_revoked(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_UP_REVOKE, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } sctp_flight_size_increase(tp1); sctp_total_flight_increase(stcb, tp1); @@ -2927,7 +3298,7 @@ sctp_check_for_revoked(struct sctp_tcb *stcb, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(asoc->last_acked_seq, cumack, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, 0, 0, SCTP_LOG_TSN_REVOKED); @@ -2942,7 +3313,6 @@ sctp_check_for_revoked(struct sctp_tcb *stcb, } } - static void sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, uint32_t biggest_tsn_acked, uint32_t biggest_tsn_newly_acked, uint32_t this_sack_lowest_newack, int accum_moved) @@ -2950,7 +3320,6 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_tmit_chunk *tp1; int strike_flag = 0; struct timeval now; - int tot_retrans = 0; uint32_t sending_seq; struct sctp_nets *net; int num_dests_sacked = 0; @@ -2963,7 +3332,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, if (tp1 == NULL) { sending_seq = asoc->sending_seq; } else { - sending_seq = tp1->rec.data.TSN_seq; + sending_seq = tp1->rec.data.tsn; } /* CMT DAC algo: finding out if SACK is a mixed SACK */ @@ -2986,11 +3355,11 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { if (tp1->sent < SCTP_DATAGRAM_RESEND) sctp_log_fr(biggest_tsn_newly_acked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_CHECK_STRIKE); } - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, biggest_tsn_acked) || + if (SCTP_TSN_GT(tp1->rec.data.tsn, biggest_tsn_acked) || tp1->sent == SCTP_DATAGRAM_UNSENT) { /* done */ break; @@ -2998,7 +3367,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, if (stcb->asoc.prsctp_supported) { if ((PR_SCTP_TTL_ENABLED(tp1->flags)) && tp1->sent < SCTP_DATAGRAM_ACKED) { /* Is it expired? */ -#ifndef __FreeBSD__ +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (timercmp(&now, &tp1->rec.data.timetodrop, >)) { #else if (timevalcmp(&now, &tp1->rec.data.timetodrop, >)) { @@ -3011,9 +3380,9 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, continue; } } - } - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, asoc->this_sack_highest_gap)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, asoc->this_sack_highest_gap) && + !(accum_moved && asoc->fast_retran_loss_recovery)) { /* we are beyond the tsn in the sack */ break; } @@ -3031,16 +3400,18 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, */ if (tp1->whoTo && tp1->whoTo->saw_newack == 0) { /* - * No new acks were receieved for data sent to this + * No new acks were received for data sent to this * dest. Therefore, according to the SFR algo for * CMT, no data sent to this dest can be marked for * FR using this SACK. */ continue; - } else if (tp1->whoTo && SCTP_TSN_GT(tp1->rec.data.TSN_seq, - tp1->whoTo->this_sack_highest_newack)) { + } else if (tp1->whoTo && + SCTP_TSN_GT(tp1->rec.data.tsn, + tp1->whoTo->this_sack_highest_newack) && + !(accum_moved && asoc->fast_retran_loss_recovery)) { /* - * CMT: New acks were receieved for data sent to + * CMT: New acks were received for data sent to * this dest. But no new acks were seen for data * sent after tp1. Therefore, according to the SFR * algo for CMT, tp1 cannot be marked for FR using @@ -3066,7 +3437,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(biggest_tsn_newly_acked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3087,10 +3458,10 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, * two packets have been received after this missing TSN. */ if ((tp1->sent < SCTP_DATAGRAM_RESEND) && (num_dests_sacked == 1) && - SCTP_TSN_GT(this_sack_lowest_newack, tp1->rec.data.TSN_seq)) { + SCTP_TSN_GT(this_sack_lowest_newack, tp1->rec.data.tsn)) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(16 + num_dests_sacked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3118,7 +3489,6 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, (1) #endif ) { - if (SCTP_TSN_GE(biggest_tsn_newly_acked, tp1->rec.data.fast_retran_tsn)) { /* @@ -3128,7 +3498,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(biggest_tsn_newly_acked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3156,10 +3526,10 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, if ((tp1->sent < SCTP_DATAGRAM_RESEND) && (num_dests_sacked == 1) && SCTP_TSN_GT(this_sack_lowest_newack, - tp1->rec.data.TSN_seq)) { + tp1->rec.data.tsn)) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(32 + num_dests_sacked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3174,7 +3544,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, * JRI: TODO: remove code for HTNA algo. CMT's * SFR algo covers HTNA. */ - } else if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, + } else if (SCTP_TSN_GT(tp1->rec.data.tsn, biggest_tsn_newly_acked)) { /* * We don't strike these: This is the HTNA @@ -3186,7 +3556,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, /* Strike the TSN */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(biggest_tsn_newly_acked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3207,10 +3577,10 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, * two packets have been received after this missing TSN. */ if ((tp1->sent < SCTP_DATAGRAM_RESEND) && (num_dests_sacked == 1) && - SCTP_TSN_GT(this_sack_lowest_newack, tp1->rec.data.TSN_seq)) { + SCTP_TSN_GT(this_sack_lowest_newack, tp1->rec.data.tsn)) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(48 + num_dests_sacked, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, tp1->sent, SCTP_FR_LOG_STRIKE_CHUNK); } @@ -3226,8 +3596,8 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_RSND, (tp1->whoTo ? (tp1->whoTo->flight_size) : 0), tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } if (tp1->whoTo) { tp1->whoTo->net_ack++; @@ -3258,13 +3628,15 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_SO_NOT_LOCKED); } /* Make sure to flag we had a FR */ - tp1->whoTo->net_ack++; + if (tp1->whoTo != NULL) { + tp1->whoTo->net_ack++; + } continue; } } /* SCTP_PRINTF("OK, we are now ready to FR this guy\n"); */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { - sctp_log_fr(tp1->rec.data.TSN_seq, tp1->snd_count, + sctp_log_fr(tp1->rec.data.tsn, tp1->snd_count, 0, SCTP_FR_MARKED); } if (strike_flag) { @@ -3303,9 +3675,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, tp1->whoTo->find_pseudo_cumack = 1; tp1->whoTo->find_rtx_pseudo_cumack = 1; } - } else {/* CMT is OFF */ - #ifdef SCTP_FR_TO_ALTERNATE /* Can we find an alternate? */ alt = sctp_find_alternate_net(stcb, tp1->whoTo, 0); @@ -3320,11 +3690,10 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, } tp1->rec.data.doing_fast_retransmit = 1; - tot_retrans++; /* mark the sending seq for possible subsequent FR's */ /* * SCTP_PRINTF("Marking TSN for FR new value %x\n", - * (uint32_t)tpi->rec.data.TSN_seq); + * (uint32_t)tpi->rec.data.tsn); */ if (TAILQ_EMPTY(&asoc->send_queue)) { /* @@ -3347,7 +3716,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, ttt = TAILQ_FIRST(&asoc->send_queue); tp1->rec.data.fast_retran_tsn = - ttt->rec.data.TSN_seq; + ttt->rec.data.tsn; } if (tp1->do_rtt) { @@ -3395,7 +3764,7 @@ sctp_try_advance_peer_ack_point(struct sctp_tcb *stcb, (tp1->sent == SCTP_DATAGRAM_NR_ACKED)) { sctp_misc_ints(SCTP_FWD_TSN_CHECK, asoc->advanced_peer_ack_point, - tp1->rec.data.TSN_seq, 0, 0); + tp1->rec.data.tsn, 0, 0); } } if (!PR_SCTP_ENABLED(tp1->flags)) { @@ -3421,7 +3790,7 @@ sctp_try_advance_peer_ack_point(struct sctp_tcb *stcb, * Now is this one marked for resend and its time is * now up? */ -#ifndef __FreeBSD__ +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (timercmp(&now, &tp1->rec.data.timetodrop, >)) { #else if (timevalcmp(&now, &tp1->rec.data.timetodrop, >)) { @@ -3447,10 +3816,10 @@ sctp_try_advance_peer_ack_point(struct sctp_tcb *stcb, if ((tp1->sent == SCTP_FORWARD_TSN_SKIP) || (tp1->sent == SCTP_DATAGRAM_NR_ACKED)) { /* advance PeerAckPoint goes forward */ - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, asoc->advanced_peer_ack_point)) { - asoc->advanced_peer_ack_point = tp1->rec.data.TSN_seq; + if (SCTP_TSN_GT(tp1->rec.data.tsn, asoc->advanced_peer_ack_point)) { + asoc->advanced_peer_ack_point = tp1->rec.data.tsn; a_adv = tp1; - } else if (tp1->rec.data.TSN_seq == asoc->advanced_peer_ack_point) { + } else if (tp1->rec.data.tsn == asoc->advanced_peer_ack_point) { /* No update but we do save the chk */ a_adv = tp1; } @@ -3470,19 +3839,23 @@ sctp_fs_audit(struct sctp_association *asoc) { struct sctp_tmit_chunk *chk; int inflight = 0, resend = 0, inbetween = 0, acked = 0, above = 0; - int entry_flight, entry_cnt, ret; + int ret; +#ifndef INVARIANTS + int entry_flight, entry_cnt; +#endif + ret = 0; +#ifndef INVARIANTS entry_flight = asoc->total_flight; entry_cnt = asoc->total_flight_count; - ret = 0; - +#endif if (asoc->pr_sctp_cnt >= asoc->sent_queue_cnt) return (0); TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { if (chk->sent < SCTP_DATAGRAM_RESEND) { - SCTP_PRINTF("Chk TSN:%u size:%d inflight cnt:%d\n", - chk->rec.data.TSN_seq, + SCTP_PRINTF("Chk TSN: %u size: %d inflight cnt: %d\n", + chk->rec.data.tsn, chk->send_size, chk->snd_count); inflight++; @@ -3499,24 +3872,23 @@ sctp_fs_audit(struct sctp_association *asoc) if ((inflight > 0) || (inbetween > 0)) { #ifdef INVARIANTS - panic("Flight size-express incorrect? \n"); + panic("Flight size-express incorrect F: %d I: %d R: %d Ab: %d ACK: %d", + inflight, inbetween, resend, above, acked); #else - SCTP_PRINTF("asoc->total_flight:%d cnt:%d\n", + SCTP_PRINTF("asoc->total_flight: %d cnt: %d\n", entry_flight, entry_cnt); - - SCTP_PRINTF("Flight size-express incorrect F:%d I:%d R:%d Ab:%d ACK:%d\n", - inflight, inbetween, resend, above, acked); + SCTP_PRINTF("Flight size-express incorrect F: %d I: %d R: %d Ab: %d ACK: %d\n", + inflight, inbetween, resend, above, acked); ret = 1; #endif } return (ret); } - static void sctp_window_probe_recovery(struct sctp_tcb *stcb, - struct sctp_association *asoc, - struct sctp_tmit_chunk *tp1) + struct sctp_association *asoc, + struct sctp_tmit_chunk *tp1) { tp1->window_probe = 0; if ((tp1->sent >= SCTP_DATAGRAM_ACKED) || (tp1->data == NULL)) { @@ -3524,8 +3896,8 @@ sctp_window_probe_recovery(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_DWN_WP_FWD, tp1->whoTo ? tp1->whoTo->flight_size : 0, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); return; } /* First setup this by shrinking flight */ @@ -3543,8 +3915,8 @@ sctp_window_probe_recovery(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_WP, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } } @@ -3560,6 +3932,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, int win_probe_recovered = 0; int j, done_once = 0; int rto_ok = 1; + uint32_t send_s; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_SACK_ARRIVALS_ENABLE) { sctp_misc_ints(SCTP_SACK_LOG_EXPRESS, cumack, @@ -3601,48 +3974,38 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, net->prev_cwnd = net->cwnd; net->net_ack = 0; net->net_ack2 = 0; - - /* - * CMT: Reset CUC and Fast recovery algo variables before - * SACK processing - */ - net->new_pseudo_cumack = 0; - net->will_exit_fast_recovery = 0; - if (stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack) { - (*stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack)(stcb, net); - } - } - if (SCTP_BASE_SYSCTL(sctp_strict_sacks)) { - uint32_t send_s; - - if (!TAILQ_EMPTY(&asoc->sent_queue)) { - tp1 = TAILQ_LAST(&asoc->sent_queue, - sctpchunk_listhead); - send_s = tp1->rec.data.TSN_seq + 1; - } else { - send_s = asoc->sending_seq; - } - if (SCTP_TSN_GE(cumack, send_s)) { -#ifndef INVARIANTS - struct mbuf *op_err; - char msg[SCTP_DIAG_INFO_LEN]; - -#endif -#ifdef INVARIANTS - panic("Impossible sack 1"); -#else - - *abort_now = 1; - /* XXX */ - snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal then TSN %8.8x", - cumack, send_s); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - return; -#endif + + /* + * CMT: Reset CUC and Fast recovery algo variables before + * SACK processing + */ + net->new_pseudo_cumack = 0; + net->will_exit_fast_recovery = 0; + if (stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack) { + (*stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack)(stcb, net); } } + if (!TAILQ_EMPTY(&asoc->sent_queue)) { + tp1 = TAILQ_LAST(&asoc->sent_queue, + sctpchunk_listhead); + send_s = tp1->rec.data.tsn + 1; + } else { + send_s = asoc->sending_seq; + } + if (SCTP_TSN_GE(cumack, send_s)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + *abort_now = 1; + /* XXX */ + SCTP_SNPRINTF(msg, sizeof(msg), + "Cum ack %8.8x greater or equal than TSN %8.8x", + cumack, send_s); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return; + } asoc->this_sack_highest_gap = cumack; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { sctp_misc_ints(SCTP_THRESHOLD_CLEAR, @@ -3655,7 +4018,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, if (SCTP_TSN_GT(cumack, asoc->last_acked_seq)) { /* process the new consecutive TSN first */ TAILQ_FOREACH_SAFE(tp1, &asoc->sent_queue, sctp_next, tp2) { - if (SCTP_TSN_GE(cumack, tp1->rec.data.TSN_seq)) { + if (SCTP_TSN_GE(cumack, tp1->rec.data.tsn)) { if (tp1->sent == SCTP_DATAGRAM_UNSENT) { SCTP_PRINTF("Warning, an unsent is now acked?\n"); } @@ -3670,8 +4033,8 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_CA, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } sctp_flight_size_decrease(tp1); if (stcb->asoc.cc_functions.sctp_cwnd_update_tsn_acknowledged) { @@ -3684,7 +4047,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, tp1->whoTo->net_ack += tp1->send_size; if (tp1->snd_count < 2) { /* - * True non-retransmited + * True non-retransmitted * chunk */ tp1->whoTo->net_ack2 += @@ -3692,17 +4055,12 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, /* update RTO too? */ if (tp1->do_rtt) { - if (rto_ok) { - tp1->whoTo->RTO = - /* - * sa_ignore - * NO_NULL_CHK - */ - sctp_calculate_rto(stcb, - asoc, tp1->whoTo, - &tp1->sent_rcv_time, - sctp_align_safe_nocopy, - SCTP_RTT_FROM_DATA); + if (rto_ok && + sctp_calculate_rto(stcb, + &stcb->asoc, + tp1->whoTo, + &tp1->sent_rcv_time, + SCTP_RTT_FROM_DATA)) { rto_ok = 0; } if (tp1->whoTo->rto_needed == 0) { @@ -3726,10 +4084,9 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, tp1->whoTo->new_pseudo_cumack = 1; tp1->whoTo->find_pseudo_cumack = 1; tp1->whoTo->find_rtx_pseudo_cumack = 1; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { /* sa_ignore NO_NULL_CHK */ - sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.TSN_seq, SCTP_CWND_LOG_FROM_SACK); + sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.tsn, SCTP_CWND_LOG_FROM_SACK); } } if (tp1->sent == SCTP_DATAGRAM_RESEND) { @@ -3741,14 +4098,19 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, tp1->rec.data.chunk_was_revoked = 0; } if (tp1->sent != SCTP_DATAGRAM_NR_ACKED) { - if (asoc->strmout[tp1->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[tp1->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[tp1->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[tp1->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", tp1->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", tp1->rec.data.sid); #endif } } + if ((asoc->strmout[tp1->rec.data.sid].chunks_on_queues == 0) && + (asoc->strmout[tp1->rec.data.sid].state == SCTP_STREAM_RESET_PENDING) && + TAILQ_EMPTY(&asoc->strmout[tp1->rec.data.sid].outqueue)) { + asoc->trigger_reset = 1; + } TAILQ_REMOVE(&asoc->sent_queue, tp1, sctp_next); if (tp1->data) { /* sa_ignore NO_NULL_CHK */ @@ -3759,7 +4121,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(asoc->last_acked_seq, cumack, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, 0, 0, SCTP_LOG_FREE_SENT); @@ -3770,7 +4132,6 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, break; } } - } #if defined(__Userspace__) if (stcb->sctp_ep->recv_callback) { @@ -3790,7 +4151,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, (inp->send_sb_threshold == 0))) { atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); - inp->send_callback(stcb->sctp_socket, sb_free_now); + inp->send_callback(stcb->sctp_socket, sb_free_now, inp->ulp_info); SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); } @@ -3800,7 +4161,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, /* sa_ignore NO_NULL_CHK */ if (stcb->sctp_socket) { #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif @@ -3809,7 +4170,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, /* sa_ignore NO_NULL_CHK */ sctp_wakeup_log(stcb, 1, SCTP_WAKESND_FROM_SACK); } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -3823,7 +4184,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, } #endif sctp_sowwakeup_locked(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } else { @@ -3841,7 +4202,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, * is optional. */ net->error_count = 0; - if (!(net->dest_state & SCTP_ADDR_REACHABLE)) { + if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) { /* addr came good */ net->dest_state |= SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb, @@ -3856,7 +4217,9 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, } if (net->dest_state & SCTP_ADDR_PF) { net->dest_state &= ~SCTP_ADDR_PF; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_26); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -3900,7 +4263,6 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, again: j = 0; TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - int to_ticks; if (win_probe_recovery && (net->window_probe)) { win_probe_recovered = 1; /* @@ -3916,15 +4278,9 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, } } } - if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); - } else { - to_ticks = MSEC_TO_TICKS(net->RTO); - } if (net->flight_size) { j++; - (void)SCTP_OS_TIMER_START(&net->rxt_timer.timer, to_ticks, - sctp_timeout_handler, &net->rxt_timer); + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); if (net->window_probe) { net->window_probe = 0; } @@ -3933,13 +4289,12 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, /* In window probes we must assure a timer is still running there */ net->window_probe = 0; if (!SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { - SCTP_OS_TIMER_START(&net->rxt_timer.timer, to_ticks, - sctp_timeout_handler, &net->rxt_timer); + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_27); } } } @@ -3978,72 +4333,49 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, /* clean up */ if ((asoc->stream_queue_cnt == 1) && ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || - (asoc->state & SCTP_STATE_SHUTDOWN_RECEIVED)) && - (asoc->locked_on_sending) - ) { - struct sctp_stream_queue_pending *sp; - /* I may be in a state where we got - * all across.. but cannot write more due - * to a shutdown... we abort since the - * user did not indicate EOR in this case. The - * sp will be cleaned during free of the asoc. - */ - sp = TAILQ_LAST(&((asoc->locked_on_sending)->outqueue), - sctp_streamhead); - if ((sp) && (sp->length == 0)) { - /* Let cleanup code purge it */ - if (sp->msg_is_complete) { - asoc->stream_queue_cnt--; - } else { - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - asoc->locked_on_sending = NULL; - asoc->stream_queue_cnt--; - } - } + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) && + ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc))) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); + } + if (((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) && + (asoc->stream_queue_cnt == 1) && + (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) { + struct mbuf *op_err; + + *abort_now = 1; + /* XXX */ + op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_28; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return; } if ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) && (asoc->stream_queue_cnt == 0)) { - if (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT) { - /* Need to abort here */ - struct mbuf *op_err; + struct sctp_nets *netp; - abort_out_now: - *abort_now = 1; - /* XXX */ - op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + SCTP_STAT_DECR_GAUGE32(sctps_currestab); + } + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); + sctp_stop_timers_for_shutdown(stcb); + if (asoc->alternate) { + netp = asoc->alternate; } else { - struct sctp_nets *netp; - - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { - SCTP_STAT_DECR_GAUGE32(sctps_currestab); - } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); - sctp_stop_timers_for_shutdown(stcb); - if (asoc->alternate) { - netp = asoc->alternate; - } else { - netp = asoc->primary_destination; - } - sctp_send_shutdown(stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, - stcb->sctp_ep, stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, netp); + netp = asoc->primary_destination; } - } else if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) && + sctp_send_shutdown(stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, + stcb->sctp_ep, stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, + stcb->sctp_ep, stcb, NULL); + } else if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) && (asoc->stream_queue_cnt == 0)) { struct sctp_nets *netp; - if (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT) { - goto abort_out_now; - } SCTP_STAT_DECR_GAUGE32(sctps_currestab); - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT); sctp_stop_timers_for_shutdown(stcb); if (asoc->alternate) { netp = asoc->alternate; @@ -4084,10 +4416,15 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, } } } - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, lchk->whoTo); + stcb->sctp_ep, stcb, lchk->whoTo); } } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_RWND_LOGGING_ENABLE) { @@ -4131,7 +4468,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, * old sack, if so discard. 2) If there is nothing left in the send * queue (cum-ack is equal to last acked) then you have a duplicate * too, update any rwnd change and verify no timers are running. - * then return. 3) Process any new consequtive data i.e. cum-ack + * then return. 3) Process any new consecutive data i.e. cum-ack * moved process these first and note that it moved. 4) Process any * sack blocks. 5) Drop any acked from the queue. 6) Check for any * revoked blocks and mark. 7) Update the cwnd. 8) Nothing left, @@ -4194,40 +4531,39 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, sctp_log_fr(*dupdata, 0, 0, SCTP_FR_DUPED); } } - if (SCTP_BASE_SYSCTL(sctp_strict_sacks)) { - /* reality check */ - if (!TAILQ_EMPTY(&asoc->sent_queue)) { - tp1 = TAILQ_LAST(&asoc->sent_queue, - sctpchunk_listhead); - send_s = tp1->rec.data.TSN_seq + 1; - } else { - tp1 = NULL; - send_s = asoc->sending_seq; - } - if (SCTP_TSN_GE(cum_ack, send_s)) { - struct mbuf *op_err; - char msg[SCTP_DIAG_INFO_LEN]; + /* reality check */ + if (!TAILQ_EMPTY(&asoc->sent_queue)) { + tp1 = TAILQ_LAST(&asoc->sent_queue, + sctpchunk_listhead); + send_s = tp1->rec.data.tsn + 1; + } else { + tp1 = NULL; + send_s = asoc->sending_seq; + } + if (SCTP_TSN_GE(cum_ack, send_s)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; - /* - * no way, we have not even sent this TSN out yet. - * Peer is hopelessly messed up with us. - */ - SCTP_PRINTF("NEW cum_ack:%x send_s:%x is smaller or equal\n", - cum_ack, send_s); - if (tp1) { - SCTP_PRINTF("Got send_s from tsn:%x + 1 of tp1:%p\n", - tp1->rec.data.TSN_seq, (void *)tp1); - } - hopeless_peer: - *abort_now = 1; - /* XXX */ - snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal then TSN %8.8x", - cum_ack, send_s); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - return; - } + /* + * no way, we have not even sent this TSN out yet. + * Peer is hopelessly messed up with us. + */ + SCTP_PRINTF("NEW cum_ack:%x send_s:%x is smaller or equal\n", + cum_ack, send_s); + if (tp1) { + SCTP_PRINTF("Got send_s from tsn:%x + 1 of tp1: %p\n", + tp1->rec.data.tsn, (void *)tp1); + } + hopeless_peer: + *abort_now = 1; + /* XXX */ + SCTP_SNPRINTF(msg, sizeof(msg), + "Cum ack %8.8x greater or equal than TSN %8.8x", + cum_ack, send_s); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_29; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return; } /**********************/ /* 1) check the range */ @@ -4257,7 +4593,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* stop any timers */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_26); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); net->partial_bytes_acked = 0; net->flight_size = 0; } @@ -4269,7 +4605,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, * We init netAckSz and netAckSz2 to 0. These are used to track 2 * things. The total byte count acked is tracked in netAckSz AND * netAck2 is used to track the total bytes acked that are un- - * amibguious and were never retransmitted. We track these on a per + * ambiguous and were never retransmitted. We track these on a per * destination address basis. */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { @@ -4290,10 +4626,18 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack) { (*stcb->asoc.cc_functions.sctp_cwnd_prepare_net_for_sack)(stcb, net); } + + /* + * CMT: SFR algo (and HTNA) - this_sack_highest_newack has + * to be greater than the cumack. Also reset saw_newack to 0 + * for all dests. + */ + net->saw_newack = 0; + net->this_sack_highest_newack = last_tsn; } /* process the new consecutive TSN first */ TAILQ_FOREACH(tp1, &asoc->sent_queue, sctp_next) { - if (SCTP_TSN_GE(last_tsn, tp1->rec.data.TSN_seq)) { + if (SCTP_TSN_GE(last_tsn, tp1->rec.data.tsn)) { if (tp1->sent != SCTP_DATAGRAM_UNSENT) { accum_moved = 1; if (tp1->sent < SCTP_DATAGRAM_ACKED) { @@ -4321,8 +4665,8 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_CA, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } sctp_flight_size_decrease(tp1); sctp_total_flight_decrease(stcb, tp1); @@ -4334,12 +4678,12 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, tp1->whoTo->net_ack += tp1->send_size; /* CMT SFR and DAC algos */ - this_sack_lowest_newack = tp1->rec.data.TSN_seq; + this_sack_lowest_newack = tp1->rec.data.tsn; tp1->whoTo->saw_newack = 1; if (tp1->snd_count < 2) { /* - * True non-retransmited + * True non-retransmitted * chunk */ tp1->whoTo->net_ack2 += @@ -4347,13 +4691,12 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* update RTO too? */ if (tp1->do_rtt) { - if (rto_ok) { - tp1->whoTo->RTO = - sctp_calculate_rto(stcb, - asoc, tp1->whoTo, - &tp1->sent_rcv_time, - sctp_align_safe_nocopy, - SCTP_RTT_FROM_DATA); + if (rto_ok && + sctp_calculate_rto(stcb, + &stcb->asoc, + tp1->whoTo, + &tp1->sent_rcv_time, + SCTP_RTT_FROM_DATA)) { rto_ok = 0; } if (tp1->whoTo->rto_needed == 0) { @@ -4377,18 +4720,16 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, tp1->whoTo->new_pseudo_cumack = 1; tp1->whoTo->find_pseudo_cumack = 1; tp1->whoTo->find_rtx_pseudo_cumack = 1; - - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(asoc->last_acked_seq, cum_ack, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, 0, 0, SCTP_LOG_TSN_ACKED); } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { - sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.TSN_seq, SCTP_CWND_LOG_FROM_SACK); + sctp_log_cwnd(stcb, tp1->whoTo, tp1->rec.data.tsn, SCTP_CWND_LOG_FROM_SACK); } } if (tp1->sent == SCTP_DATAGRAM_RESEND) { @@ -4416,17 +4757,6 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, asoc->this_sack_highest_gap = last_tsn; if ((num_seg > 0) || (num_nr_seg > 0)) { - - /* - * CMT: SFR algo (and HTNA) - this_sack_highest_newack has - * to be greater than the cumack. Also reset saw_newack to 0 - * for all dests. - */ - TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - net->saw_newack = 0; - net->this_sack_highest_newack = last_tsn; - } - /* * thisSackHighestGap will increase while handling NEW * segments this_sack_highest_newack will increase while @@ -4438,20 +4768,18 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, num_seg, num_nr_seg, &rto_ok)) { wake_him++; } - if (SCTP_BASE_SYSCTL(sctp_strict_sacks)) { + /* + * validate the biggest_tsn_acked in the gap acks if + * strict adherence is wanted. + */ + if (SCTP_TSN_GE(biggest_tsn_acked, send_s)) { /* - * validate the biggest_tsn_acked in the gap acks if - * strict adherence is wanted. + * peer is either confused or we are under + * attack. We must abort. */ - if (SCTP_TSN_GE(biggest_tsn_acked, send_s)) { - /* - * peer is either confused or we are under - * attack. We must abort. - */ - SCTP_PRINTF("Hopeless peer! biggest_tsn_acked:%x largest seq:%x\n", - biggest_tsn_acked, send_s); - goto hopeless_peer; - } + SCTP_PRINTF("Hopeless peer! biggest_tsn_acked:%x largest seq:%x\n", + biggest_tsn_acked, send_s); + goto hopeless_peer; } } /*******************************************/ @@ -4462,14 +4790,13 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (net->new_pseudo_cumack) sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_27); - + SCTP_FROM_SCTP_INDATA + SCTP_LOC_31); } } else { if (accum_moved) { TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); } } } @@ -4479,18 +4806,23 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, asoc->last_acked_seq = cum_ack; TAILQ_FOREACH_SAFE(tp1, &asoc->sent_queue, sctp_next, tp2) { - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, cum_ack)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, cum_ack)) { break; } if (tp1->sent != SCTP_DATAGRAM_NR_ACKED) { - if (asoc->strmout[tp1->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[tp1->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[tp1->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[tp1->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", tp1->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", tp1->rec.data.sid); #endif } } + if ((asoc->strmout[tp1->rec.data.sid].chunks_on_queues == 0) && + (asoc->strmout[tp1->rec.data.sid].state == SCTP_STREAM_RESET_PENDING) && + TAILQ_EMPTY(&asoc->strmout[tp1->rec.data.sid].outqueue)) { + asoc->trigger_reset = 1; + } TAILQ_REMOVE(&asoc->sent_queue, tp1, sctp_next); if (PR_SCTP_ENABLED(tp1->flags)) { if (asoc->pr_sctp_cnt != 0) @@ -4509,7 +4841,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SACK_LOGGING_ENABLE) { sctp_log_sack(asoc->last_acked_seq, cum_ack, - tp1->rec.data.TSN_seq, + tp1->rec.data.tsn, 0, 0, SCTP_LOG_FREE_SENT); @@ -4519,7 +4851,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, } if (TAILQ_EMPTY(&asoc->sent_queue) && (asoc->total_flight > 0)) { #ifdef INVARIANTS - panic("Warning flight size is postive and should be 0"); + panic("Warning flight size is positive and should be 0"); #else SCTP_PRINTF("Warning flight size incorrect should be 0 is %d\n", asoc->total_flight); @@ -4543,7 +4875,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, (inp->send_sb_threshold == 0))) { atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); - inp->send_callback(stcb->sctp_socket, sb_free_now); + inp->send_callback(stcb->sctp_socket, sb_free_now, inp->ulp_info); SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); } @@ -4553,7 +4885,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* sa_ignore NO_NULL_CHK */ if ((wake_him) && (stcb->sctp_socket)) { #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif @@ -4561,7 +4893,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_WAKE_LOGGING_ENABLE) { sctp_wakeup_log(stcb, wake_him, SCTP_WAKESND_FROM_SACK); } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -4575,7 +4907,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, } #endif sctp_sowwakeup_locked(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } else { @@ -4614,8 +4946,8 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, sctp_misc_ints(SCTP_FLIGHT_LOG_UP_REVOKE, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)tp1->whoTo, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)tp1->whoTo, + tp1->rec.data.tsn); } sctp_flight_size_increase(tp1); sctp_total_flight_increase(stcb, tp1); @@ -4650,7 +4982,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, * is optional. */ net->error_count = 0; - if (!(net->dest_state & SCTP_ADDR_REACHABLE)) { + if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) { /* addr came good */ net->dest_state |= SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb, @@ -4667,7 +4999,9 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (net->dest_state & SCTP_ADDR_PF) { net->dest_state &= ~SCTP_ADDR_PF; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_33); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -4691,7 +5025,8 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, TAILQ_FOREACH(net, &asoc->nets, sctp_next) { /* stop all timers */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); + stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_34); net->flight_size = 0; net->partial_bytes_acked = 0; } @@ -4716,72 +5051,50 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* clean up */ if ((asoc->stream_queue_cnt == 1) && ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || - (asoc->state & SCTP_STATE_SHUTDOWN_RECEIVED)) && - (asoc->locked_on_sending) - ) { - struct sctp_stream_queue_pending *sp; - /* I may be in a state where we got - * all across.. but cannot write more due - * to a shutdown... we abort since the - * user did not indicate EOR in this case. - */ - sp = TAILQ_LAST(&((asoc->locked_on_sending)->outqueue), - sctp_streamhead); - if ((sp) && (sp->length == 0)) { - asoc->locked_on_sending = NULL; - if (sp->msg_is_complete) { - asoc->stream_queue_cnt--; - } else { - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - asoc->stream_queue_cnt--; - } - } + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) && + ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc))) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); + } + if (((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) && + (asoc->stream_queue_cnt == 1) && + (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) { + struct mbuf *op_err; + + *abort_now = 1; + /* XXX */ + op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_35; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); + return; } if ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) && (asoc->stream_queue_cnt == 0)) { - if (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT) { - /* Need to abort here */ - struct mbuf *op_err; + struct sctp_nets *netp; - abort_out_now: - *abort_now = 1; - /* XXX */ - op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_31; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - return; + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + SCTP_STAT_DECR_GAUGE32(sctps_currestab); + } + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); + sctp_stop_timers_for_shutdown(stcb); + if (asoc->alternate) { + netp = asoc->alternate; } else { - struct sctp_nets *netp; - - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { - SCTP_STAT_DECR_GAUGE32(sctps_currestab); - } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); - sctp_stop_timers_for_shutdown(stcb); - if (asoc->alternate) { - netp = asoc->alternate; - } else { - netp = asoc->primary_destination; - } - sctp_send_shutdown(stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, - stcb->sctp_ep, stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, netp); + netp = asoc->primary_destination; } + sctp_send_shutdown(stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, + stcb->sctp_ep, stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, + stcb->sctp_ep, stcb, NULL); return; - } else if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) && + } else if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) && (asoc->stream_queue_cnt == 0)) { struct sctp_nets *netp; - if (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT) { - goto abort_out_now; - } SCTP_STAT_DECR_GAUGE32(sctps_currestab); - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT); sctp_stop_timers_for_shutdown(stcb); if (asoc->alternate) { netp = asoc->alternate; @@ -4892,12 +5205,11 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (!SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); - } } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_36); } } } @@ -4962,7 +5274,12 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, } } } - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); @@ -4993,141 +5310,241 @@ sctp_update_acked(struct sctp_tcb *stcb, struct sctp_shutdown_chunk *cp, int *ab static void sctp_kick_prsctp_reorder_queue(struct sctp_tcb *stcb, - struct sctp_stream_in *strmin) + struct sctp_stream_in *strmin) { - struct sctp_queued_to_read *ctl, *nctl; + struct sctp_queued_to_read *control, *ncontrol; struct sctp_association *asoc; - uint16_t tt; + uint32_t mid; + int need_reasm_check = 0; asoc = &stcb->asoc; - tt = strmin->last_sequence_delivered; + mid = strmin->last_mid_delivered; /* * First deliver anything prior to and including the stream no that - * came in + * came in. */ - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { - if (SCTP_SSN_GE(tt, ctl->sinfo_ssn)) { + TAILQ_FOREACH_SAFE(control, &strmin->inqueue, next_instrm, ncontrol) { + if (SCTP_MID_GE(asoc->idata_supported, mid, control->mid)) { /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + if (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + if (control->on_strm_q) { + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, control, next_instrm); + } else if (control->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, control, next_instrm); +#ifdef INVARIANTS + } else { + panic("strmin: %p ctl: %p unknown %d", + strmin, control, control->on_strm_q); +#endif + } + control->on_strm_q = 0; + } + /* subtract pending on streams */ + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, + 1, SCTP_READ_LOCK_HELD, + SCTP_SO_NOT_LOCKED); + } + } else { + /* Its a fragmented message */ + if (control->first_frag_seen) { + /* Make it so this is next to deliver, we restore later */ + strmin->last_mid_delivered = control->mid - 1; + need_reasm_check = 1; + break; + } } } else { /* no more delivery now. */ break; } } + if (need_reasm_check) { + int ret; + ret = sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin, SCTP_READ_LOCK_HELD); + if (SCTP_MID_GT(asoc->idata_supported, mid, strmin->last_mid_delivered)) { + /* Restore the next to deliver unless we are ahead */ + strmin->last_mid_delivered = mid; + } + if (ret == 0) { + /* Left the front Partial one on */ + return; + } + need_reasm_check = 0; + } /* * now we must deliver things in queue the normal way if any are * now ready. */ - tt = strmin->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { - if (tt == ctl->sinfo_ssn) { - /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - strmin->last_sequence_delivered = ctl->sinfo_ssn; - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); - + mid = strmin->last_mid_delivered + 1; + TAILQ_FOREACH_SAFE(control, &strmin->inqueue, next_instrm, ncontrol) { + if (SCTP_MID_EQ(asoc->idata_supported, mid, control->mid)) { + if (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* this is deliverable now */ + if (control->on_strm_q) { + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, control, next_instrm); + } else if (control->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, control, next_instrm); +#ifdef INVARIANTS + } else { + panic("strmin: %p ctl: %p unknown %d", + strmin, control, control->on_strm_q); +#endif + } + control->on_strm_q = 0; + } + /* subtract pending on streams */ + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + strmin->last_mid_delivered = control->mid; + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + } + mid = strmin->last_mid_delivered + 1; + } else { + /* Its a fragmented message */ + if (control->first_frag_seen) { + /* Make it so this is next to deliver */ + strmin->last_mid_delivered = control->mid - 1; + need_reasm_check = 1; + break; + } } - tt = strmin->last_sequence_delivered + 1; } else { break; } } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin, SCTP_READ_LOCK_HELD); + } } static void sctp_flush_reassm_for_str_seq(struct sctp_tcb *stcb, - struct sctp_association *asoc, - uint16_t stream, uint16_t seq) + struct sctp_association *asoc, struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, int ordered, uint32_t cumtsn) { struct sctp_tmit_chunk *chk, *nchk; - /* For each one on here see if we need to toss it */ /* - * For now large messages held on the reasmqueue that are + * For now large messages held on the stream reasm that are * complete will be tossed too. We could in theory do more * work to spin through and stop after dumping one msg aka * seeing the start of a new msg at the head, and call the * delivery function... to see if it can be delivered... But * for now we just dump everything on the queue. */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - /* Do not toss it if on a different stream or - * marked for unordered delivery in which case - * the stream sequence number has no meaning. - */ - if ((chk->rec.data.stream_number != stream) || - ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == SCTP_DATA_UNORDERED)) { - continue; - } - if (chk->rec.data.stream_seq == seq) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; + if (!asoc->idata_supported && !ordered && + control->first_frag_seen && + SCTP_TSN_GT(control->fsn_included, cumtsn)) { + return; + } + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + /* Purge hanging chunks */ + if (!asoc->idata_supported && !ordered) { + if (SCTP_TSN_GT(chk->rec.data.tsn, cumtsn)) { + break; } + } + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (asoc->size_on_reasm_queue >= chk->send_size) { asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is - * not unordered that is being - * skipped. There is a chance that - * if the peer does not include the - * last fragment in its FWD-TSN we - * WILL have a problem here since - * you would have a partial chunk in - * queue that may not be - * deliverable. Also if a Partial - * delivery API as started the user - * may get a partial chunk. The next - * read returning a new chunk... - * really ugly but I see no way - * around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else if (SCTP_SSN_GT(chk->rec.data.stream_seq, seq)) { - /* If the stream_seq is > than the purging one, we are done */ - break; + } else { +#ifdef INVARIANTS + panic("size_on_reasm_queue = %u smaller than chunk length %u", asoc->size_on_reasm_queue, chk->send_size); +#else + asoc->size_on_reasm_queue = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + if (!TAILQ_EMPTY(&control->reasm)) { + /* This has to be old data, unordered */ + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + sctp_reset_a_control(control, stcb->sctp_ep, cumtsn); + chk = TAILQ_FIRST(&control->reasm); + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, + chk, SCTP_READ_LOCK_HELD); + } + sctp_deliver_reasm_check(stcb, asoc, strm, SCTP_READ_LOCK_HELD); + return; + } + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + control->on_strm_q = 0; + } else if (control->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; +#ifdef INVARIANTS + } else if (control->on_strm_q) { + panic("strm: %p ctl: %p unknown %d", + strm, control, control->on_strm_q); +#endif + } + control->on_strm_q = 0; + if (control->on_read_q == 0) { + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; } + sctp_free_a_readq(stcb, control); } } - void sctp_handle_forward_tsn(struct sctp_tcb *stcb, struct sctp_forward_tsn_chunk *fwd, - int *abort_flag, struct mbuf *m ,int offset) + int *abort_flag, struct mbuf *m , int offset) { /* The pr-sctp fwd tsn */ /* @@ -5136,18 +5553,18 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * * Assume we get FwdTSN(x): * - * 1) update local cumTSN to x 2) try to further advance cumTSN to x + - * others we have 3) examine and update re-ordering queue on - * pr-in-streams 4) clean up re-assembly queue 5) Send a sack to - * report where we are. + * 1) update local cumTSN to x + * 2) try to further advance cumTSN to x + others we have + * 3) examine and update re-ordering queue on pr-in-streams + * 4) clean up re-assembly queue + * 5) Send a sack to report where we are. */ struct sctp_association *asoc; uint32_t new_cum_tsn, gap; unsigned int i, fwd_sz, m_size; uint32_t str_seq; struct sctp_stream_in *strm; - struct sctp_tmit_chunk *chk, *nchk; - struct sctp_queued_to_read *ctl, *sv; + struct sctp_queued_to_read *control, *ncontrol, *sv; asoc = &stcb->asoc; if ((fwd_sz = ntohs(fwd->ch.chunk_length)) < sizeof(struct sctp_forward_tsn_chunk)) { @@ -5181,12 +5598,12 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * give out). This must be an attacker. */ *abort_flag = 1; - snprintf(msg, sizeof(msg), - "New cum ack %8.8x too high, highest TSN %8.8x", - new_cum_tsn, asoc->highest_tsn_inside_map); + SCTP_SNPRINTF(msg, sizeof(msg), + "New cum ack %8.8x too high, highest TSN %8.8x", + new_cum_tsn, asoc->highest_tsn_inside_map); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA+SCTP_LOC_33; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_37; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, false, SCTP_SO_NOT_LOCKED); return; } SCTP_STAT_INCR(sctps_fwdtsn_map_over); @@ -5216,69 +5633,20 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, /*************************************************************/ /* 2. Clear up re-assembly queue */ /*************************************************************/ - /* - * First service it if pd-api is up, just in case we can progress it - * forward - */ - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* For each one on here see if we need to toss it */ - /* - * For now large messages held on the reasmqueue that are - * complete will be tossed too. We could in theory do more - * work to spin through and stop after dumping one msg aka - * seeing the start of a new msg at the head, and call the - * delivery function... to see if it can be delivered... But - * for now we just dump everything on the queue. - */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GE(new_cum_tsn, chk->rec.data.TSN_seq)) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; - } - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is - * not unordered that is being - * skipped. There is a chance that - * if the peer does not include the - * last fragment in its FWD-TSN we - * WILL have a problem here since - * you would have a partial chunk in - * queue that may not be - * deliverable. Also if a Partial - * delivery API as started the user - * may get a partial chunk. The next - * read returning a new chunk... - * really ugly but I see no way - * around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; + /* This is now done as part of clearing up the stream/seq */ + if (asoc->idata_supported == 0) { + uint16_t sid; + + /* Flush all the un-ordered data based on cum-tsn */ + SCTP_INP_READ_LOCK(stcb->sctp_ep); + for (sid = 0; sid < asoc->streamincnt; sid++) { + strm = &asoc->strmin[sid]; + if (!TAILQ_EMPTY(&strm->uno_inqueue)) { + sctp_flush_reassm_for_str_seq(stcb, asoc, strm, TAILQ_FIRST(&strm->uno_inqueue), 0, new_cum_tsn); } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else { - /* - * Ok we have gone beyond the end of the - * fwd-tsn's mark. - */ - break; } + SCTP_INP_READ_UNLOCK(stcb->sctp_ep); } /*******************************************************/ /* 3. Update the PR-stream re-ordering queues and fix */ @@ -5288,25 +5656,49 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, if (m && fwd_sz) { /* New method. */ unsigned int num_str; + uint32_t mid; + uint16_t sid; + uint16_t ordered, flags; struct sctp_strseq *stseq, strseqbuf; + struct sctp_strseq_mid *stseq_m, strseqbuf_m; offset += sizeof(*fwd); SCTP_INP_READ_LOCK(stcb->sctp_ep); - num_str = fwd_sz / sizeof(struct sctp_strseq); + if (asoc->idata_supported) { + num_str = fwd_sz / sizeof(struct sctp_strseq_mid); + } else { + num_str = fwd_sz / sizeof(struct sctp_strseq); + } for (i = 0; i < num_str; i++) { - uint16_t st; - stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, - sizeof(struct sctp_strseq), - (uint8_t *)&strseqbuf); - offset += sizeof(struct sctp_strseq); - if (stseq == NULL) { - break; + if (asoc->idata_supported) { + stseq_m = (struct sctp_strseq_mid *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq_mid), + (uint8_t *)&strseqbuf_m); + offset += sizeof(struct sctp_strseq_mid); + if (stseq_m == NULL) { + break; + } + sid = ntohs(stseq_m->sid); + mid = ntohl(stseq_m->mid); + flags = ntohs(stseq_m->flags); + if (flags & PR_SCTP_UNORDERED_FLAG) { + ordered = 0; + } else { + ordered = 1; + } + } else { + stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq), + (uint8_t *)&strseqbuf); + offset += sizeof(struct sctp_strseq); + if (stseq == NULL) { + break; + } + sid = ntohs(stseq->sid); + mid = (uint32_t)ntohs(stseq->ssn); + ordered = 1; } /* Convert */ - st = ntohs(stseq->stream); - stseq->stream = st; - st = ntohs(stseq->sequence); - stseq->sequence = st; /* now process */ @@ -5315,27 +5707,67 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * where its not all delivered. If we find it we transmute the * read entry into a PDI_ABORTED. */ - if (stseq->stream >= asoc->streamincnt) { + if (sid >= asoc->streamincnt) { /* screwed up streams, stop! */ break; } - if ((asoc->str_of_pdapi == stseq->stream) && - (asoc->ssn_of_pdapi == stseq->sequence)) { + if ((asoc->str_of_pdapi == sid) && + (asoc->ssn_of_pdapi == mid)) { /* If this is the one we were partially delivering * now then we no longer are. Note this will change * with the reassembly re-write. */ asoc->fragmented_delivery_inprogress = 0; } - sctp_flush_reassm_for_str_seq(stcb, asoc, stseq->stream, stseq->sequence); - TAILQ_FOREACH(ctl, &stcb->sctp_ep->read_queue, next) { - if ((ctl->sinfo_stream == stseq->stream) && - (ctl->sinfo_ssn == stseq->sequence)) { - str_seq = (stseq->stream << 16) | stseq->sequence; - ctl->end_added = 1; - ctl->pdapi_aborted = 1; + strm = &asoc->strmin[sid]; + if (ordered) { + TAILQ_FOREACH_SAFE(control, &strm->inqueue, next_instrm, ncontrol) { + if (SCTP_MID_GE(asoc->idata_supported, mid, control->mid)) { + sctp_flush_reassm_for_str_seq(stcb, asoc, strm, control, ordered, new_cum_tsn); + } + } + } else { + if (asoc->idata_supported) { + TAILQ_FOREACH_SAFE(control, &strm->uno_inqueue, next_instrm, ncontrol) { + if (SCTP_MID_GE(asoc->idata_supported, mid, control->mid)) { + sctp_flush_reassm_for_str_seq(stcb, asoc, strm, control, ordered, new_cum_tsn); + } + } + } else { + if (!TAILQ_EMPTY(&strm->uno_inqueue)) { + sctp_flush_reassm_for_str_seq(stcb, asoc, strm, TAILQ_FIRST(&strm->uno_inqueue), ordered, new_cum_tsn); + } + } + } + TAILQ_FOREACH(control, &stcb->sctp_ep->read_queue, next) { + if ((control->sinfo_stream == sid) && + (SCTP_MID_EQ(asoc->idata_supported, control->mid, mid))) { + str_seq = (sid << 16) | (0x0000ffff & mid); + control->pdapi_aborted = 1; sv = stcb->asoc.control_pdapi; - stcb->asoc.control_pdapi = ctl; + control->end_added = 1; + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + } else if (control->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); +#ifdef INVARIANTS + } else if (control->on_strm_q) { + panic("strm: %p ctl: %p unknown %d", + strm, control, control->on_strm_q); +#endif + } + control->on_strm_q = 0; + stcb->asoc.control_pdapi = control; sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION, stcb, SCTP_PARTIAL_DELIVERY_ABORTED, @@ -5343,19 +5775,18 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, SCTP_SO_NOT_LOCKED); stcb->asoc.control_pdapi = sv; break; - } else if ((ctl->sinfo_stream == stseq->stream) && - SCTP_SSN_GT(ctl->sinfo_ssn, stseq->sequence)) { + } else if ((control->sinfo_stream == sid) && + SCTP_MID_GT(asoc->idata_supported, control->mid, mid)) { /* We are past our victim SSN */ break; } } - strm = &asoc->strmin[stseq->stream]; - if (SCTP_SSN_GT(stseq->sequence, strm->last_sequence_delivered)) { + if (SCTP_MID_GT(asoc->idata_supported, mid, strm->last_mid_delivered)) { /* Update the sequence number */ - strm->last_sequence_delivered = stseq->sequence; + strm->last_mid_delivered = mid; } /* now kick the stream the new way */ - /*sa_ignore NO_NULL_CHK*/ + /*sa_ignore NO_NULL_CHK*/ sctp_kick_prsctp_reorder_queue(stcb, strm); } SCTP_INP_READ_UNLOCK(stcb->sctp_ep); @@ -5364,10 +5795,4 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * Now slide thing forward. */ sctp_slide_mapping_arrays(stcb); - - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* now lets kick out and check for more fragmented delivery */ - /*sa_ignore NO_NULL_CHK*/ - sctp_deliver_reasm_check(stcb, &stcb->asoc); - } } diff --git a/netwerk/sctp/src/netinet/sctp_indata.h b/netwerk/sctp/src/netinet/sctp_indata.h index d90602a21d..c9b71054d3 100755 --- a/netwerk/sctp/src/netinet/sctp_indata.h +++ b/netwerk/sctp/src/netinet/sctp_indata.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_indata.h 252585 2013-07-03 18:48:43Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_INDATA_H_ @@ -42,46 +44,40 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_indata.h 252585 2013-07-03 18:48:43Z t struct sctp_queued_to_read * sctp_build_readq_entry(struct sctp_tcb *stcb, - struct sctp_nets *net, - uint32_t tsn, uint32_t ppid, - uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, - struct mbuf *dm); - + struct sctp_nets *net, + uint32_t tsn, uint32_t ppid, + uint32_t context, uint16_t sid, + uint32_t mid, uint8_t flags, + struct mbuf *dm); -#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, stream_no, stream_seq, flags, dm) do { \ +#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, sid, flags, dm, tfsn, mid) do { \ if (_ctl) { \ atomic_add_int(&((net)->ref_count), 1); \ - (_ctl)->sinfo_stream = stream_no; \ - (_ctl)->sinfo_ssn = stream_seq; \ + memset(_ctl, 0, sizeof(struct sctp_queued_to_read)); \ + (_ctl)->sinfo_stream = sid; \ + TAILQ_INIT(&_ctl->reasm); \ + (_ctl)->top_fsn = tfsn; \ + (_ctl)->mid = mid; \ (_ctl)->sinfo_flags = (flags << 8); \ (_ctl)->sinfo_ppid = ppid; \ (_ctl)->sinfo_context = context; \ - (_ctl)->sinfo_timetolive = 0; \ + (_ctl)->fsn_included = 0xffffffff; \ (_ctl)->sinfo_tsn = tsn; \ (_ctl)->sinfo_cumtsn = tsn; \ (_ctl)->sinfo_assoc_id = sctp_get_associd((in_it)); \ - (_ctl)->length = 0; \ - (_ctl)->held_length = 0; \ (_ctl)->whoFrom = net; \ (_ctl)->data = dm; \ - (_ctl)->tail_mbuf = NULL; \ - (_ctl)->aux_data = NULL; \ (_ctl)->stcb = (in_it); \ (_ctl)->port_from = (in_it)->rport; \ - (_ctl)->spec_flags = 0; \ - (_ctl)->do_not_ref_stcb = 0; \ - (_ctl)->end_added = 0; \ - (_ctl)->pdapi_aborted = 0; \ - (_ctl)->some_taken = 0; \ + if ((in_it)->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { \ + (_ctl)->do_not_ref_stcb = 1; \ + }\ } \ } while (0) - - struct mbuf * sctp_build_ctl_nchunk(struct sctp_inpcb *inp, - struct sctp_sndrcvinfo *sinfo); + struct sctp_sndrcvinfo *sinfo); void sctp_set_rwnd(struct sctp_tcb *, struct sctp_association *); @@ -90,7 +86,7 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc); void sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, - uint32_t rwnd, int *abort_now, int ecne_seen); + uint32_t rwnd, int *abort_now, int ecne_seen); void sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, @@ -102,7 +98,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* draft-ietf-tsvwg-usctp */ void sctp_handle_forward_tsn(struct sctp_tcb *, - struct sctp_forward_tsn_chunk *, int *, struct mbuf *, int); + struct sctp_forward_tsn_chunk *, int *, struct mbuf *, int); struct sctp_tmit_chunk * sctp_try_advance_peer_ack_point(struct sctp_tcb *, struct sctp_association *); @@ -114,14 +110,8 @@ sctp_update_acked(struct sctp_tcb *, struct sctp_shutdown_chunk *, int *); int sctp_process_data(struct mbuf **, int, int *, int, - struct sockaddr *src, struct sockaddr *dst, - struct sctphdr *, - struct sctp_inpcb *, struct sctp_tcb *, - struct sctp_nets *, uint32_t *, -#if defined(__FreeBSD__) - uint8_t, uint32_t, -#endif - uint32_t, uint16_t); + struct sctp_inpcb *, struct sctp_tcb *, + struct sctp_nets *, uint32_t *); void sctp_slide_mapping_arrays(struct sctp_tcb *stcb); diff --git a/netwerk/sctp/src/netinet/sctp_input.c b/netwerk/sctp/src/netinet/sctp_input.c index d0f0d1c0bb..651d078ab7 100755 --- a/netwerk/sctp/src/netinet/sctp_input.c +++ b/netwerk/sctp/src/netinet/sctp_input.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_input.c 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -49,20 +51,18 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_input.c 279859 2015-03-10 19:49:25Z tu #include #include #include +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#endif #if defined(INET) || defined(INET6) -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include #endif #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif -#if defined(__APPLE__) -#define APPLE_FILE_NO 2 -#endif - - static void sctp_stop_all_cookie_timers(struct sctp_tcb *stcb) { @@ -79,12 +79,12 @@ sctp_stop_all_cookie_timers(struct sctp_tcb *stcb) sctp_timer_stop(SCTP_TIMER_TYPE_COOKIE, stcb->sctp_ep, stcb, - net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_1); + net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_1); } else if (net->rxt_timer.type == SCTP_TIMER_TYPE_INIT) { sctp_timer_stop(SCTP_TIMER_TYPE_INIT, stcb->sctp_ep, stcb, - net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_2); + net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_2); } } } @@ -94,8 +94,8 @@ static void sctp_handle_init(struct mbuf *m, int iphlen, int offset, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_init_chunk *cp, struct sctp_inpcb *inp, - struct sctp_tcb *stcb, int *abort_no_unlock, -#if defined(__FreeBSD__) + struct sctp_tcb *stcb, struct sctp_nets *net, +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port) @@ -108,66 +108,21 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset, if (stcb == NULL) { SCTP_INP_RLOCK(inp); } - /* validate length */ - if (ntohs(cp->ch.chunk_length) < sizeof(struct sctp_init_chunk)) { - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; - goto outnow; - } - /* validate parameters */ + /* Validate parameters */ init = &cp->init; - if (init->initiate_tag == 0) { - /* protocol error... send abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; + if (ntohl(init->initiate_tag) == 0) { goto outnow; } - if (ntohl(init->a_rwnd) < SCTP_MIN_RWND) { - /* invalid parameter... send abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; - goto outnow; - } - if (init->num_inbound_streams == 0) { - /* protocol error... send abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; - goto outnow; - } - if (init->num_outbound_streams == 0) { + if ((ntohl(init->a_rwnd) < SCTP_MIN_RWND) || + (ntohs(init->num_inbound_streams) == 0) || + (ntohs(init->num_outbound_streams) == 0)) { /* protocol error... send abort */ op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, + sctp_send_abort(m, iphlen, src, dst, sh, init->initiate_tag, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; + vrf_id, port); goto outnow; } if (sctp_validate_init_auth_params(m, offset + sizeof(*cp), @@ -175,21 +130,18 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset, /* auth parameter(s) error... send abort */ op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Problem with AUTH parameters"); - sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, + sctp_send_abort(m, iphlen, src, dst, sh, init->initiate_tag, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif - vrf_id, port); - if (stcb) - *abort_no_unlock = 1; + vrf_id, port); goto outnow; } - /* We are only accepting if we have a socket with positive so_qlimit.*/ + /* We are only accepting if we have a listening socket.*/ if ((stcb == NULL) && ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || - (inp->sctp_socket == NULL) || - (inp->sctp_socket->so_qlimit == 0))) { + (!SCTP_IS_LISTENING(inp)))) { /* * FIX ME ?? What about TCP model and we have a * match/restart case? Actually no fix is needed. @@ -206,27 +158,26 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset, op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "No listener"); sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); } goto outnow; } if ((stcb != NULL) && - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT)) { + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT)) { SCTPDBG(SCTP_DEBUG_INPUT3, "sctp_handle_init: sending SHUTDOWN-ACK\n"); sctp_send_shutdown_ack(stcb, NULL); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CONTROL_PROC, SCTP_SO_NOT_LOCKED); } else { SCTPDBG(SCTP_DEBUG_INPUT3, "sctp_handle_init: sending INIT-ACK\n"); - sctp_send_initiate_ack(inp, stcb, m, iphlen, offset, src, dst, - sh, cp, -#if defined(__FreeBSD__) + sctp_send_initiate_ack(inp, stcb, net, m, iphlen, offset, + src, dst, sh, cp, +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif - vrf_id, port, - ((stcb == NULL) ? SCTP_HOLDS_LOCK : SCTP_NOT_LOCKED)); + vrf_id, port); } outnow: if (stcb == NULL) { @@ -239,24 +190,21 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset, */ int -sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked) { - int unsent_data = 0; + int unsent_data; unsigned int i; struct sctp_stream_queue_pending *sp; struct sctp_association *asoc; - /* This function returns the number of streams that have - * true unsent data on them. Note that as it looks through - * it will clean up any places that have old data that - * has been sent but left at top of stream queue. + SCTP_TCB_LOCK_ASSERT(stcb); + + /* This function returns if any stream has true unsent data on it. + * Note that as it looks through it will clean up any places that + * have old data that has been sent but left at top of stream queue. */ asoc = &stcb->asoc; - SCTP_TCB_SEND_LOCK(stcb); + unsent_data = 0; if (!stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, asoc)) { /* Check to see if some data queued */ for (i = 0; i < stcb->asoc.streamoutcnt; i++) { @@ -266,7 +214,7 @@ sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked continue; } if ((sp->msg_is_complete) && - (sp->length == 0) && + (sp->length == 0) && (sp->sender_all_done)) { /* We are doing differed cleanup. Last * time through when we took all the data @@ -282,6 +230,7 @@ sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked } atomic_subtract_int(&stcb->asoc.stream_queue_cnt, 1); TAILQ_REMOVE(&stcb->asoc.strmout[i].outqueue, sp, next); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, &asoc->strmout[i], sp); if (sp->net) { sctp_free_remote_addr(sp->net); sp->net = NULL; @@ -291,13 +240,17 @@ sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked sp->data = NULL; } sctp_free_a_strmoq(stcb, sp, so_locked); + if (!TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) { + unsent_data++; + } } else { unsent_data++; + } + if (unsent_data > 0) { break; } } } - SCTP_TCB_SEND_UNLOCK(stcb); return (unsent_data); } @@ -309,6 +262,8 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) struct sctp_nets *lnet; unsigned int i; + SCTP_TCB_LOCK_ASSERT(stcb); + init = &cp->init; asoc = &stcb->asoc; /* save off parameters */ @@ -324,10 +279,8 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) if (SCTP_BASE_SYSCTL(sctp_logging_level) & (SCTP_CWND_MONITOR_ENABLE|SCTP_CWND_LOGGING_ENABLE)) { sctp_log_cwnd(stcb, lnet, 0, SCTP_CWND_INITIALIZATION); } - } } - SCTP_TCB_SEND_LOCK(stcb); if (asoc->pre_open_streams > ntohs(init->num_inbound_streams)) { unsigned int newcnt; struct sctp_stream_out *outs; @@ -337,14 +290,14 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) /* abandon the upper streams */ newcnt = ntohs(init->num_inbound_streams); TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { - if (chk->rec.data.stream_number >= newcnt) { + if (chk->rec.data.sid >= newcnt) { TAILQ_REMOVE(&asoc->send_queue, chk, sctp_next); asoc->send_queue_cnt--; - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", chk->rec.data.sid); #endif } if (chk->data != NULL) { @@ -364,8 +317,9 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) for (i = newcnt; i < asoc->pre_open_streams; i++) { outs = &asoc->strmout[i]; TAILQ_FOREACH_SAFE(sp, &outs->outqueue, next, nsp) { + atomic_subtract_int(&stcb->asoc.stream_queue_cnt, 1); TAILQ_REMOVE(&outs->outqueue, sp, next); - asoc->stream_queue_cnt--; + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, outs, sp); sctp_ulp_notify(SCTP_NOTIFY_SPECIAL_SP_FAIL, stcb, 0, sp, SCTP_SO_NOT_LOCKED); if (sp->data) { @@ -380,14 +334,18 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) sctp_free_a_strmoq(stcb, sp, SCTP_SO_NOT_LOCKED); /*sa_ignore FREED_MEMORY*/ } + outs->state = SCTP_STREAM_CLOSED; } } /* cut back the count */ asoc->pre_open_streams = newcnt; } - SCTP_TCB_SEND_UNLOCK(stcb); - asoc->strm_realoutsize = asoc->streamoutcnt = asoc->pre_open_streams; - + asoc->streamoutcnt = asoc->pre_open_streams; + if (asoc->strmout) { + for (i = 0; i < asoc->streamoutcnt; i++) { + asoc->strmout[i].state = SCTP_STREAM_OPEN; + } + } /* EY - nr_sack: initialize highest tsn in nr_mapping_array */ asoc->highest_tsn_inside_nr_map = asoc->highest_tsn_inside_map; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { @@ -404,17 +362,9 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) if (asoc->strmin != NULL) { /* Free the old ones */ - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - ctl->whoFrom = NULL; - sctp_m_freem(ctl->data); - ctl->data = NULL; - sctp_free_a_readq(stcb, ctl); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); } @@ -431,9 +381,11 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) return (-1); } for (i = 0; i < asoc->streamincnt; i++) { - asoc->strmin[i].stream_no = i; - asoc->strmin[i].last_sequence_delivered = 0xffff; + asoc->strmin[i].sid = i; + asoc->strmin[i].last_mid_delivered = 0xffffffff; TAILQ_INIT(&asoc->strmin[i].inqueue); + TAILQ_INIT(&asoc->strmin[i].uno_inqueue); + asoc->strmin[i].pd_api_started = 0; asoc->strmin[i].delivery_started = 0; } /* @@ -457,49 +409,100 @@ sctp_process_init_ack(struct mbuf *m, int iphlen, int offset, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_init_ack_chunk *cp, struct sctp_tcb *stcb, struct sctp_nets *net, int *abort_no_unlock, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id) { struct sctp_association *asoc; struct mbuf *op_err; - int retval, abort_flag; - uint32_t initack_limit; + int retval, abort_flag, cookie_found; + int initack_limit; int nat_friendly = 0; /* First verify that we have no illegal param's */ abort_flag = 0; + cookie_found = 0; op_err = sctp_arethere_unrecognized_parameters(m, (offset + sizeof(struct sctp_init_chunk)), - &abort_flag, (struct sctp_chunkhdr *)cp, &nat_friendly); + &abort_flag, (struct sctp_chunkhdr *)cp, + &nat_friendly, &cookie_found); if (abort_flag) { /* Send an abort and notify peer */ - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); *abort_no_unlock = 1; return (-1); } + if (!cookie_found) { + uint16_t len; + + /* Only report the missing cookie parameter */ + if (op_err != NULL) { + sctp_m_freem(op_err); + } + len = (uint16_t)(sizeof(struct sctp_error_missing_param) + sizeof(uint16_t)); + /* We abort with an error of missing mandatory param */ + op_err = sctp_get_mbuf_for_msg(len, 0, M_NOWAIT, 1, MT_DATA); + if (op_err != NULL) { + struct sctp_error_missing_param *cause; + + SCTP_BUF_LEN(op_err) = len; + cause = mtod(op_err, struct sctp_error_missing_param *); + /* Subtract the reserved param */ + cause->cause.code = htons(SCTP_CAUSE_MISSING_PARAM); + cause->cause.length = htons(len); + cause->num_missing_params = htonl(1); + cause->type[0] = htons(SCTP_STATE_COOKIE); + } + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); + *abort_no_unlock = 1; + return (-3); + } asoc = &stcb->asoc; asoc->peer_supports_nat = (uint8_t)nat_friendly; /* process the peer's parameters in the INIT-ACK */ - retval = sctp_process_init((struct sctp_init_chunk *)cp, stcb); - if (retval < 0) { - return (retval); + if (sctp_process_init((struct sctp_init_chunk *)cp, stcb) < 0) { + if (op_err != NULL) { + sctp_m_freem(op_err); + } + op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); + SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_init() failed\n"); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); + *abort_no_unlock = 1; + return (-1); } initack_limit = offset + ntohs(cp->ch.chunk_length); /* load all addresses */ if ((retval = sctp_load_addresses_from_init(stcb, m, - (offset + sizeof(struct sctp_init_chunk)), initack_limit, - src, dst, NULL))) { + offset + sizeof(struct sctp_init_chunk), + initack_limit, src, dst, NULL, stcb->asoc.port)) < 0) { + if (op_err != NULL) { + sctp_m_freem(op_err); + } op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Problem with address parameters"); SCTPDBG(SCTP_DEBUG_INPUT1, - "Load addresses from INIT causes an abort %d\n", - retval); + "Load addresses from INIT causes an abort %d\n", + retval); sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, net->port); @@ -531,62 +534,50 @@ sctp_process_init_ack(struct mbuf *m, int iphlen, int offset, SCTP_FROM_SCTP_INPUT, __LINE__); } - stcb->asoc.overall_error_count = 0; - net->error_count = 0; /* * Cancel the INIT timer, We do this first before queueing the - * cookie. We always cancel at the primary to assue that we are + * cookie. We always cancel at the primary to assume that we are * canceling the timer started by the INIT which always goes to the * primary. */ sctp_timer_stop(SCTP_TIMER_TYPE_INIT, stcb->sctp_ep, stcb, - asoc->primary_destination, SCTP_FROM_SCTP_INPUT+SCTP_LOC_4); + asoc->primary_destination, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); /* calculate the RTO */ - net->RTO = sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered, sctp_align_safe_nocopy, - SCTP_RTT_FROM_NON_DATA); + if (asoc->overall_error_count == 0) { + sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered, + SCTP_RTT_FROM_NON_DATA); + } + stcb->asoc.overall_error_count = 0; + net->error_count = 0; +#if defined(__Userspace__) + if (stcb->sctp_ep->recv_callback) { + if (stcb->sctp_socket) { + uint32_t inqueue_bytes, sb_free_now; + struct sctp_inpcb *inp; - retval = sctp_send_cookie_echo(m, offset, stcb, net); - if (retval < 0) { - /* - * No cookie, we probably should send a op error. But in any - * case if there is no cookie in the INIT-ACK, we can - * abandon the peer, its broke. - */ - if (retval == -3) { - /* We abort with an error of missing mandatory param */ - op_err = sctp_generate_cause(SCTP_CAUSE_MISSING_PARAM, ""); - if (op_err) { - /* - * Expand beyond to include the mandatory - * param cookie - */ - struct sctp_inv_mandatory_param *mp; - - SCTP_BUF_LEN(op_err) = - sizeof(struct sctp_inv_mandatory_param); - mp = mtod(op_err, - struct sctp_inv_mandatory_param *); - /* Subtract the reserved param */ - mp->length = - htons(sizeof(struct sctp_inv_mandatory_param) - 2); - mp->num_param = htonl(1); - mp->param = htons(SCTP_STATE_COOKIE); - mp->resv = 0; + inp = stcb->sctp_ep; + inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); + sb_free_now = SCTP_SB_LIMIT_SND(stcb->sctp_socket) - (inqueue_bytes + stcb->asoc.sb_send_resv); + + /* check if the amount free in the send socket buffer crossed the threshold */ + if (inp->send_callback && + (((inp->send_sb_threshold > 0) && + (sb_free_now >= inp->send_sb_threshold) && + (stcb->asoc.chunks_on_out_queue <= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) || + (inp->send_sb_threshold == 0))) { + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + inp->send_callback(stcb->sctp_socket, sb_free_now, inp->ulp_info); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); } - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; } - return (retval); } - - return (0); +#endif + retval = sctp_send_cookie_echo(m, offset, initack_limit, stcb, net); + return (retval); } static void @@ -671,7 +662,7 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp, f_net = TAILQ_FIRST(&stcb->asoc.nets); if (f_net != r_net) { /* first one on the list is NOT the primary - * sctp_cmpaddr() is much more efficent if + * sctp_cmpaddr() is much more efficient if * the primary is the first on the list, make it * so. */ @@ -682,18 +673,27 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp, } sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_CONFIRMED, stcb, 0, (void *)r_net, SCTP_SO_NOT_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, + r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_4); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net); } + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { + sctp_misc_ints(SCTP_THRESHOLD_CLEAR, + stcb->asoc.overall_error_count, + 0, + SCTP_FROM_SCTP_INPUT, + __LINE__); + } + stcb->asoc.overall_error_count = 0; old_error_counter = r_net->error_count; r_net->error_count = 0; r_net->hb_responded = 1; tv.tv_sec = cp->heartbeat.hb_info.time_value_1; tv.tv_usec = cp->heartbeat.hb_info.time_value_2; /* Now lets do a RTO with this */ - r_net->RTO = sctp_calculate_rto(stcb, &stcb->asoc, r_net, &tv, sctp_align_safe_nocopy, - SCTP_RTT_FROM_NON_DATA); - if (!(r_net->dest_state & SCTP_ADDR_REACHABLE)) { + sctp_calculate_rto(stcb, &stcb->asoc, r_net, &tv, + SCTP_RTT_FROM_NON_DATA); + if ((r_net->dest_state & SCTP_ADDR_REACHABLE) == 0) { r_net->dest_state |= SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb, 0, (void *)r_net, SCTP_SO_NOT_LOCKED); @@ -703,7 +703,8 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp, stcb->asoc.cc_functions.sctp_cwnd_update_exit_pf(stcb, net); } if (old_error_counter > 0) { - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, + stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_5); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net); } if (r_net == stcb->asoc.primary_destination) { @@ -721,20 +722,20 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp, SCTP_MOBILITY_FASTHANDOFF)) && sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_PRIM_DELETED)) { - - sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_TIMER+SCTP_LOC_7); + sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_6); if (sctp_is_mobility_feature_on(stcb->sctp_ep, - SCTP_MOBILITY_FASTHANDOFF)) { + SCTP_MOBILITY_FASTHANDOFF)) { sctp_assoc_immediate_retrans(stcb, - stcb->asoc.primary_destination); + stcb->asoc.primary_destination); } if (sctp_is_mobility_feature_on(stcb->sctp_ep, - SCTP_MOBILITY_BASE)) { + SCTP_MOBILITY_BASE)) { sctp_move_chunks_from_net(stcb, - stcb->asoc.deleted_primary); + stcb->asoc.deleted_primary); } - sctp_delete_prim_timer(stcb->sctp_ep, stcb, - stcb->asoc.deleted_primary); + sctp_delete_prim_timer(stcb->sctp_ep, stcb); } } } @@ -742,22 +743,35 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp, static int sctp_handle_nat_colliding_state(struct sctp_tcb *stcb) { - /* return 0 means we want you to proceed with the abort - * non-zero means no abort processing - */ + /* + * Return 0 means we want you to proceed with the abort + * non-zero means no abort processing. + */ + uint32_t new_vtag; struct sctpasochead *head; - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_INP_INFO_WLOCK(); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } else { + return (0); + } + new_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1); + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) { /* generate a new vtag and send init */ LIST_REMOVE(stcb, sctp_asocs); - stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1); + stcb->asoc.my_vtag = new_vtag; head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, SCTP_BASE_INFO(hashasocmark))]; /* put it in the bucket in the vtag hash of assoc's for the system */ LIST_INSERT_HEAD(head, stcb, sctp_asocs); + SCTP_INP_INFO_WUNLOCK(); sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); return (1); - } - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED) { + } else { /* treat like a case where the cookie expired i.e.: * - dump current cookie. * - generate a new vtag. @@ -765,14 +779,14 @@ sctp_handle_nat_colliding_state(struct sctp_tcb *stcb) */ /* generate a new vtag and send init */ LIST_REMOVE(stcb, sctp_asocs); - stcb->asoc.state &= ~SCTP_STATE_COOKIE_ECHOED; - stcb->asoc.state |= SCTP_STATE_COOKIE_WAIT; + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); sctp_stop_all_cookie_timers(stcb); sctp_toss_old_cookies(stcb, &stcb->asoc); - stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1); + stcb->asoc.my_vtag = new_vtag; head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, SCTP_BASE_INFO(hashasocmark))]; /* put it in the bucket in the vtag hash of assoc's for the system */ LIST_INSERT_HEAD(head, stcb, sctp_asocs); + SCTP_INP_INFO_WUNLOCK(); sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); return (1); } @@ -794,12 +808,12 @@ sctp_handle_nat_missing_state(struct sctp_tcb *stcb, return (1); } - -static void +/* Returns 1 if the stcb was aborted, 0 otherwise */ +static int sctp_handle_abort(struct sctp_abort_chunk *abort, struct sctp_tcb *stcb, struct sctp_nets *net) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif uint16_t len; @@ -807,48 +821,49 @@ sctp_handle_abort(struct sctp_abort_chunk *abort, SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_abort: handling ABORT\n"); if (stcb == NULL) - return; + return (0); len = ntohs(abort->ch.chunk_length); - if (len > sizeof (struct sctp_chunkhdr)) { + if (len >= sizeof(struct sctp_chunkhdr) + sizeof(struct sctp_error_cause)) { /* Need to check the cause codes for our * two magic nat aborts which don't kill the assoc * necessarily. */ - struct sctp_missing_nat_state *natc; + struct sctp_error_cause *cause; - natc = (struct sctp_missing_nat_state *)(abort + 1); - error = ntohs(natc->cause); + cause = (struct sctp_error_cause *)(abort + 1); + error = ntohs(cause->code); if (error == SCTP_CAUSE_NAT_COLLIDING_STATE) { - SCTPDBG(SCTP_DEBUG_INPUT2, "Received Colliding state abort flags:%x\n", + SCTPDBG(SCTP_DEBUG_INPUT2, "Received Colliding state, ABORT flags:%x\n", abort->ch.chunk_flags); if (sctp_handle_nat_colliding_state(stcb)) { - return; + return (0); } } else if (error == SCTP_CAUSE_NAT_MISSING_STATE) { - SCTPDBG(SCTP_DEBUG_INPUT2, "Received missing state abort flags:%x\n", + SCTPDBG(SCTP_DEBUG_INPUT2, "Received missing state, ABORT flags:%x\n", abort->ch.chunk_flags); if (sctp_handle_nat_missing_state(stcb, net)) { - return; + return (0); } } } else { error = 0; } /* stop any receive timers */ - sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_6); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_7); /* notify user of the abort and clean up... */ - sctp_abort_notification(stcb, 1, error, abort, SCTP_SO_NOT_LOCKED); + sctp_abort_notification(stcb, true, false, error, abort, SCTP_SO_NOT_LOCKED); /* free the tcb */ SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } #ifdef SCTP_ASOCLOG_OF_TSNS sctp_print_out_track_log(stcb); #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -856,13 +871,13 @@ sctp_handle_abort(struct sctp_abort_chunk *abort, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - stcb->asoc.state |= SCTP_STATE_WAS_ABORTED; (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT+SCTP_LOC_6); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_FROM_SCTP_INPUT + SCTP_LOC_8); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_abort: finished\n"); + return (1); } static void @@ -895,14 +910,14 @@ sctp_start_net_timers(struct sctp_tcb *stcb) } } - static void sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, struct sctp_tcb *stcb, struct sctp_nets *net, int *abort_flag) { struct sctp_association *asoc; int some_on_streamwheel; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + int old_state; +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif @@ -911,29 +926,49 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, if (stcb == NULL) return; asoc = &stcb->asoc; - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { return; } if (ntohs(cp->ch.chunk_length) != sizeof(struct sctp_shutdown_chunk)) { /* Shutdown NOT the expected size */ return; - } else { - sctp_update_acked(stcb, cp, abort_flag); - if (*abort_flag) { - return; - } + } + old_state = SCTP_GET_STATE(stcb); + sctp_update_acked(stcb, cp, abort_flag); + if (*abort_flag) { + return; } if (asoc->control_pdapi) { /* With a normal shutdown * we assume the end of last record. */ SCTP_INP_READ_LOCK(stcb->sctp_ep); + if (asoc->control_pdapi->on_strm_q) { + struct sctp_stream_in *strm; + + strm = &asoc->strmin[asoc->control_pdapi->sinfo_stream]; + if (asoc->control_pdapi->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; + } else if (asoc->control_pdapi->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; +#ifdef INVARIANTS + } else { + panic("Unknown state on ctrl:%p on_strm_q:%d", + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); +#endif + } + } asoc->control_pdapi->end_added = 1; asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; SCTP_INP_READ_UNLOCK(stcb->sctp_ep); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -946,18 +981,19 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, return; } #endif - sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + if (stcb->sctp_socket) { + sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); + } +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } /* goto SHUTDOWN_RECEIVED state to block new requests */ if (stcb->sctp_socket) { - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT)) { - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_RECEIVED); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT)) { + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_RECEIVED); /* notify upper layer that peer has initiated a shutdown */ sctp_ulp_notify(SCTP_NOTIFY_PEER_SHUTDOWN, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); @@ -965,12 +1001,13 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, (void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered); } } - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) { /* * stop the shutdown timer, since we WILL move to * SHUTDOWN-ACK-SENT. */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_8); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, + net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_9); } /* Now is there unsent data on a stream somewhere? */ some_on_streamwheel = sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED); @@ -984,16 +1021,19 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, /* no outstanding data to send, so move on... */ /* send SHUTDOWN-ACK */ /* move to SHUTDOWN-ACK-SENT state */ - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); - sctp_stop_timers_for_shutdown(stcb); - sctp_send_shutdown_ack(stcb, net); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK, stcb->sctp_ep, - stcb, net); + if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) { + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT); + sctp_stop_timers_for_shutdown(stcb); + sctp_send_shutdown_ack(stcb, net); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK, + stcb->sctp_ep, stcb, net); + } else if (old_state == SCTP_STATE_SHUTDOWN_ACK_SENT) { + sctp_send_shutdown_ack(stcb, net); + } } } @@ -1003,7 +1043,7 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, struct sctp_nets *net) { struct sctp_association *asoc; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(stcb->sctp_ep); @@ -1015,15 +1055,15 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, asoc = &stcb->asoc; /* process according to association state */ - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { /* unexpected SHUTDOWN-ACK... do OOTB handling... */ sctp_send_shutdown_complete(stcb, net, 1); SCTP_TCB_UNLOCK(stcb); return; } - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { /* unexpected SHUTDOWN-ACK... so ignore... */ SCTP_TCB_UNLOCK(stcb); return; @@ -1037,7 +1077,7 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; SCTP_INP_READ_UNLOCK(stcb->sctp_ep); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); @@ -1050,32 +1090,33 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, } #endif sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } #ifdef INVARIANTS if (!TAILQ_EMPTY(&asoc->send_queue) || !TAILQ_EMPTY(&asoc->sent_queue) || - !stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, asoc)) { + sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED)) { panic("Queues are not empty when handling SHUTDOWN-ACK"); } #endif /* stop the timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_9); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_10); /* send SHUTDOWN-COMPLETE */ sctp_send_shutdown_complete(stcb, net, 0); /* notify upper layer protocol */ if (stcb->sctp_socket) { if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { - stcb->sctp_socket->so_snd.sb_cc = 0; + SCTP_SB_CLEAR(stcb->sctp_socket->so_snd); } sctp_ulp_notify(SCTP_NOTIFY_ASSOC_DOWN, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); } SCTP_STAT_INCR_COUNTER32(sctps_shutdown); /* free the TCB but first save off the ep */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); @@ -1083,36 +1124,28 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT+SCTP_LOC_10); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_FROM_SCTP_INPUT + SCTP_LOC_11); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } -/* - * Skip past the param header and then we will find the chunk that caused the - * problem. There are two possiblities ASCONF or FWD-TSN other than that and - * our peer must be broken. - */ static void -sctp_process_unrecog_chunk(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr, - struct sctp_nets *net) +sctp_process_unrecog_chunk(struct sctp_tcb *stcb, uint8_t chunk_type) { - struct sctp_chunkhdr *chk; - - chk = (struct sctp_chunkhdr *)((caddr_t)phdr + sizeof(*phdr)); - switch (chk->chunk_type) { + switch (chunk_type) { case SCTP_ASCONF_ACK: case SCTP_ASCONF: - sctp_asconf_cleanup(stcb, net); + sctp_asconf_cleanup(stcb); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: stcb->asoc.prsctp_supported = 0; break; default: SCTPDBG(SCTP_DEBUG_INPUT2, - "Peer does not support chunk type %d(%x)??\n", - chk->chunk_type, (uint32_t) chk->chunk_type); + "Peer does not support chunk type %d (0x%x).\n", + chunk_type, chunk_type); break; } } @@ -1124,12 +1157,9 @@ sctp_process_unrecog_chunk(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr, * XXX: Is this the right thing to do? */ static void -sctp_process_unrecog_param(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr) +sctp_process_unrecog_param(struct sctp_tcb *stcb, uint16_t parameter_type) { - struct sctp_paramhdr *pbad; - - pbad = phdr + 1; - switch (ntohs(pbad->param_type)) { + switch (parameter_type) { /* pr-sctp draft */ case SCTP_PRSCTP_SUPPORTED: stcb->asoc.prsctp_supported = 0; @@ -1154,66 +1184,72 @@ sctp_process_unrecog_param(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr) break; default: SCTPDBG(SCTP_DEBUG_INPUT2, - "Peer does not support param type %d(%x)??\n", - pbad->param_type, (uint32_t) pbad->param_type); + "Peer does not support param type %d (0x%x)??\n", + parameter_type, parameter_type); break; } } static int sctp_handle_error(struct sctp_chunkhdr *ch, - struct sctp_tcb *stcb, struct sctp_nets *net) + struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t limit) { - int chklen; - struct sctp_paramhdr *phdr; - uint16_t error, error_type; - uint16_t error_len; + struct sctp_error_cause *cause; struct sctp_association *asoc; - int adjust; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + uint32_t remaining_length, adjust; + uint16_t code, cause_code, cause_length; +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif /* parse through all of the errors and process */ asoc = &stcb->asoc; - phdr = (struct sctp_paramhdr *)((caddr_t)ch + + cause = (struct sctp_error_cause *)((caddr_t)ch + sizeof(struct sctp_chunkhdr)); - chklen = ntohs(ch->chunk_length) - sizeof(struct sctp_chunkhdr); - error = 0; - while ((size_t)chklen >= sizeof(struct sctp_paramhdr)) { + remaining_length = ntohs(ch->chunk_length); + if (remaining_length > limit) { + remaining_length = limit; + } + if (remaining_length >= sizeof(struct sctp_chunkhdr)) { + remaining_length -= sizeof(struct sctp_chunkhdr); + } else { + remaining_length = 0; + } + code = 0; + while (remaining_length >= sizeof(struct sctp_error_cause)) { /* Process an Error Cause */ - error_type = ntohs(phdr->param_type); - error_len = ntohs(phdr->param_length); - if ((error_len > chklen) || (error_len == 0)) { - /* invalid param length for this param */ - SCTPDBG(SCTP_DEBUG_INPUT1, "Bogus length in error param- chunk left:%d errorlen:%d\n", - chklen, error_len); + cause_code = ntohs(cause->code); + cause_length = ntohs(cause->length); + if ((cause_length > remaining_length) || (cause_length == 0)) { + /* Invalid cause length, possibly due to truncation. */ + SCTPDBG(SCTP_DEBUG_INPUT1, "Bogus length in cause - bytes left: %u cause length: %u\n", + remaining_length, cause_length); return (0); } - if (error == 0) { + if (code == 0) { /* report the first error cause */ - error = error_type; + code = cause_code; } - switch (error_type) { + switch (cause_code) { case SCTP_CAUSE_INVALID_STREAM: case SCTP_CAUSE_MISSING_PARAM: case SCTP_CAUSE_INVALID_PARAM: case SCTP_CAUSE_NO_USER_DATA: - SCTPDBG(SCTP_DEBUG_INPUT1, "Software error we got a %d back? We have a bug :/ (or do they?)\n", - error_type); + SCTPDBG(SCTP_DEBUG_INPUT1, "Software error we got a %u back? We have a bug :/ (or do they?)\n", + cause_code); break; case SCTP_CAUSE_NAT_COLLIDING_STATE: - SCTPDBG(SCTP_DEBUG_INPUT2, "Received Colliding state abort flags:%x\n", + SCTPDBG(SCTP_DEBUG_INPUT2, "Received Colliding state, ERROR flags: %x\n", ch->chunk_flags); if (sctp_handle_nat_colliding_state(stcb)) { - return (0); + return (0); } break; case SCTP_CAUSE_NAT_MISSING_STATE: - SCTPDBG(SCTP_DEBUG_INPUT2, "Received missing state abort flags:%x\n", + SCTPDBG(SCTP_DEBUG_INPUT2, "Received missing state, ERROR flags: %x\n", ch->chunk_flags); if (sctp_handle_nat_missing_state(stcb, net)) { - return (0); + return (0); } break; case SCTP_CAUSE_STALE_COOKIE: @@ -1221,18 +1257,21 @@ sctp_handle_error(struct sctp_chunkhdr *ch, * We only act if we have echoed a cookie and are * waiting. */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) { - int *p; - - p = (int *)((caddr_t)phdr + sizeof(*phdr)); - /* Save the time doubled */ - asoc->cookie_preserve_req = ntohl(*p) << 1; + if ((cause_length >= sizeof(struct sctp_error_stale_cookie)) && + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + struct sctp_error_stale_cookie *stale_cookie; + + stale_cookie = (struct sctp_error_stale_cookie *)cause; + /* stable_time is in usec, convert to msec. */ + asoc->cookie_preserve_req = ntohl(stale_cookie->stale_time) / 1000; + /* Double it to be more robust on RTX. */ + asoc->cookie_preserve_req *= 2; asoc->stale_cookie_count++; if (asoc->stale_cookie_count > asoc->max_init_times) { - sctp_abort_notification(stcb, 0, 0, NULL, SCTP_SO_NOT_LOCKED); + sctp_abort_notification(stcb, false, true, 0, NULL, SCTP_SO_NOT_LOCKED); /* now free the asoc */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -1241,16 +1280,15 @@ sctp_handle_error(struct sctp_chunkhdr *ch, atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT+SCTP_LOC_11); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_FROM_SCTP_INPUT + SCTP_LOC_12); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif return (-1); } /* blast back to INIT state */ sctp_toss_old_cookies(stcb, &stcb->asoc); - asoc->state &= ~SCTP_STATE_COOKIE_ECHOED; - asoc->state |= SCTP_STATE_COOKIE_WAIT; + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); sctp_stop_all_cookie_timers(stcb); sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); } @@ -1262,17 +1300,28 @@ sctp_handle_error(struct sctp_chunkhdr *ch, * (or IPv4 for that matter) it does not matter. If * they don't support that type of address, they can * NOT possibly get that packet type... i.e. with no - * IPv6 you can't recieve a IPv6 packet. so we can + * IPv6 you can't receive a IPv6 packet. so we can * safely ignore this one. If we ever added support * for HOSTNAME Addresses, then we would need to do * something here. */ break; case SCTP_CAUSE_UNRECOG_CHUNK: - sctp_process_unrecog_chunk(stcb, phdr, net); + if (cause_length >= sizeof(struct sctp_error_unrecognized_chunk)) { + struct sctp_error_unrecognized_chunk *unrec_chunk; + + unrec_chunk = (struct sctp_error_unrecognized_chunk *)cause; + sctp_process_unrecog_chunk(stcb, unrec_chunk->ch.chunk_type); + } break; case SCTP_CAUSE_UNRECOG_PARAM: - sctp_process_unrecog_param(stcb, phdr); + /* XXX: We only consider the first parameter */ + if (cause_length >= sizeof(struct sctp_error_cause) + sizeof(struct sctp_paramhdr)) { + struct sctp_paramhdr *unrec_parameter; + + unrec_parameter = (struct sctp_paramhdr *)(cause + 1); + sctp_process_unrecog_param(stcb, ntohs(unrec_parameter->param_type)); + } break; case SCTP_CAUSE_COOKIE_IN_SHUTDOWN: /* @@ -1289,8 +1338,8 @@ sctp_handle_error(struct sctp_chunkhdr *ch, * We should NOT get these here, but in a * ASCONF-ACK. */ - SCTPDBG(SCTP_DEBUG_INPUT2, "Peer sends ASCONF errors in a Operational Error?<%d>?\n", - error_type); + SCTPDBG(SCTP_DEBUG_INPUT2, "Peer sends ASCONF errors in a error cause with code %u.\n", + cause_code); break; case SCTP_CAUSE_OUT_OF_RESC: /* @@ -1302,15 +1351,19 @@ sctp_handle_error(struct sctp_chunkhdr *ch, */ break; default: - SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_handle_error: unknown error type = 0x%xh\n", - error_type); + SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_handle_error: unknown code 0x%x\n", + cause_code); break; } - adjust = SCTP_SIZE32(error_len); - chklen -= adjust; - phdr = (struct sctp_paramhdr *)((caddr_t)phdr + adjust); + adjust = SCTP_SIZE32(cause_length); + if (remaining_length >= adjust) { + remaining_length -= adjust; + } else { + remaining_length = 0; + } + cause = (struct sctp_error_cause *)((caddr_t)cause + adjust); } - sctp_ulp_notify(SCTP_NOTIFY_REMOTE_ERROR, stcb, error, ch, SCTP_SO_NOT_LOCKED); + sctp_ulp_notify(SCTP_NOTIFY_REMOTE_ERROR, stcb, code, ch, SCTP_SO_NOT_LOCKED); return (0); } @@ -1319,7 +1372,7 @@ sctp_handle_init_ack(struct mbuf *m, int iphlen, int offset, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_init_ack_chunk *cp, struct sctp_tcb *stcb, struct sctp_nets *net, int *abort_no_unlock, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id) @@ -1335,73 +1388,25 @@ sctp_handle_init_ack(struct mbuf *m, int iphlen, int offset, "sctp_handle_init_ack: TCB is null\n"); return (-1); } - if (ntohs(cp->ch.chunk_length) < sizeof(struct sctp_init_ack_chunk)) { - /* Invalid length */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; - return (-1); - } - init_ack = &cp->init; - /* validate parameters */ - if (init_ack->initiate_tag == 0) { - /* protocol error... send an abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; - return (-1); - } - if (ntohl(init_ack->a_rwnd) < SCTP_MIN_RWND) { - /* protocol error... send an abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; - return (-1); - } - if (init_ack->num_inbound_streams == 0) { - /* protocol error... send an abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; - return (-1); - } - if (init_ack->num_outbound_streams == 0) { - /* protocol error... send an abort */ - op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); - sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, net->port); - *abort_no_unlock = 1; - return (-1); - } - /* process according to association state... */ - switch (stcb->asoc.state & SCTP_STATE_MASK) { - case SCTP_STATE_COOKIE_WAIT: - /* this is the expected state for this chunk */ - /* process the INIT-ACK parameters */ + /* Only process the INIT-ACK chunk in COOKIE WAIT state.*/ + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) { + init_ack = &cp->init; + /* Validate parameters. */ + if ((ntohl(init_ack->initiate_tag) == 0) || + (ntohl(init_ack->a_rwnd) < SCTP_MIN_RWND) || + (ntohs(init_ack->num_inbound_streams) == 0) || + (ntohs(init_ack->num_outbound_streams) == 0)) { + /* One of the mandatory parameters is illegal. */ + op_err = sctp_generate_cause(SCTP_CAUSE_INVALID_PARAM, ""); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, + #if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, + #endif + vrf_id, net->port); + *abort_no_unlock = 1; + return (-1); + } if (stcb->asoc.primary_destination->dest_state & SCTP_ADDR_UNCONFIRMED) { /* @@ -1417,56 +1422,42 @@ sctp_handle_init_ack(struct mbuf *m, int iphlen, int offset, } if (sctp_process_init_ack(m, iphlen, offset, src, dst, sh, cp, stcb, net, abort_no_unlock, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id) < 0) { /* error in parsing parameters */ return (-1); } - /* update our state */ + /* Update our state. */ SCTPDBG(SCTP_DEBUG_INPUT2, "moving to COOKIE-ECHOED state\n"); - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_ECHOED); + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_ECHOED); - /* reset the RTO calc */ + /* Reset the RTO calculation. */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); + stcb->asoc.overall_error_count, + 0, + SCTP_FROM_SCTP_INPUT, + __LINE__); } stcb->asoc.overall_error_count = 0; (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); /* - * collapse the init timer back in case of a exponential - * backoff + * Collapse the init timer back in case of a exponential + * backoff. */ sctp_timer_start(SCTP_TIMER_TYPE_COOKIE, stcb->sctp_ep, stcb, net); /* - * the send at the end of the inbound data processing will - * cause the cookie to be sent + * The output routine at the end of the inbound data processing + * will cause the cookie to be sent. */ - break; - case SCTP_STATE_SHUTDOWN_SENT: - /* incorrect state... discard */ - break; - case SCTP_STATE_COOKIE_ECHOED: - /* incorrect state... discard */ - break; - case SCTP_STATE_OPEN: - /* incorrect state... discard */ - break; - case SCTP_STATE_EMPTY: - case SCTP_STATE_INUSE: - default: - /* incorrect state... discard */ + SCTPDBG(SCTP_DEBUG_INPUT1, "Leaving handle-init-ack end\n"); + return (0); + } else { return (-1); - break; } - SCTPDBG(SCTP_DEBUG_INPUT1, "Leaving handle-init-ack end\n"); - return (0); } static struct sctp_tcb * @@ -1476,12 +1467,11 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, struct sctp_inpcb *inp, struct sctp_nets **netp, struct sockaddr *init_src, int *notification, int auth_skipped, uint32_t auth_offset, uint32_t auth_len, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port); - /* * handle a state cookie for an existing association m: input packet mbuf * chain-- assumes a pullup on IP/SCTP/COOKIE-ECHO chunk note: this is a @@ -1495,7 +1485,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets **netp, struct sockaddr *init_src, int *notification, int auth_skipped, uint32_t auth_offset, uint32_t auth_len, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port) @@ -1528,17 +1518,18 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, if (how_indx < sizeof(asoc->cookie_how)) { asoc->cookie_how[how_indx] = 1; } - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) { /* SHUTDOWN came in after sending INIT-ACK */ sctp_send_shutdown_ack(stcb, stcb->asoc.primary_destination); op_err = sctp_generate_cause(SCTP_CAUSE_COOKIE_IN_SHUTDOWN, ""); sctp_send_operr_to(src, dst, sh, cookie->peers_vtag, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, net->port); if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 2; + SCTP_TCB_UNLOCK(stcb); return (NULL); } /* @@ -1553,9 +1544,11 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, (uint8_t *) & init_buf); if (init_cp == NULL) { /* could not pull a INIT chunk in cookie */ + SCTP_TCB_UNLOCK(stcb); return (NULL); } if (init_cp->ch.chunk_type != SCTP_INITIATION) { + SCTP_TCB_UNLOCK(stcb); return (NULL); } /* @@ -1568,9 +1561,11 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, (uint8_t *) & initack_buf); if (initack_cp == NULL) { /* could not pull INIT-ACK chunk in cookie */ + SCTP_TCB_UNLOCK(stcb); return (NULL); } if (initack_cp->ch.chunk_type != SCTP_INITIATION_ACK) { + SCTP_TCB_UNLOCK(stcb); return (NULL); } if ((ntohl(initack_cp->init.initiate_tag) == asoc->my_vtag) && @@ -1588,7 +1583,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, * ----INIT-ACK(tag=t)--> * ----INIT(tag=t)------> *1 * <---INIT-ACK(tag=a)--- - * <----CE(tag=t)------------- *2 + * <----CE(tag=t)------------- *2 * * At point *1 we should be generating a different * tag t'. Which means we would throw away the CE and send @@ -1596,10 +1591,10 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, */ if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 17; + SCTP_TCB_UNLOCK(stcb); return (NULL); - } - switch (SCTP_GET_STATE(asoc)) { + switch (SCTP_GET_STATE(stcb)) { case SCTP_STATE_COOKIE_WAIT: case SCTP_STATE_COOKIE_ECHOED: /* @@ -1609,34 +1604,43 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, * have the right seq no's. */ /* First we must process the INIT !! */ - retval = sctp_process_init(init_cp, stcb); - if (retval < 0) { + if (sctp_process_init(init_cp, stcb) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 3; + op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); + SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_init() failed\n"); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } /* we have already processed the INIT so no problem */ - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, - net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_12); - sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_13); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_13); + sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_14); /* update current state */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) SCTP_STAT_INCR_COUNTER32(sctps_activeestab); else SCTP_STAT_INCR_COUNTER32(sctps_collisionestab); - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, asoc->primary_destination); + stcb->sctp_ep, stcb, NULL); } SCTP_STAT_INCR_GAUGE32(sctps_currestab); sctp_stop_all_cookie_timers(stcb); if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) && - (inp->sctp_socket->so_qlimit == 0) - ) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (!SCTP_IS_LISTENING(inp))) { +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif /* @@ -1645,41 +1649,32 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, * init/init-ack/cookie done before the * init-ack came back.. */ - stcb->sctp_ep->sctp_flags |= - SCTP_PCB_FLAGS_CONNECTED; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + sctp_pcb_add_flags(stcb->sctp_ep, SCTP_PCB_FLAGS_CONNECTED); +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { + SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_UNLOCK(so, 1); return (NULL); } #endif soisconnected(stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } /* notify upper layer */ *notification = SCTP_NOTIFY_ASSOC_UP; - /* - * since we did not send a HB make sure we - * don't double things - */ net->hb_responded = 1; - net->RTO = sctp_calculate_rto(stcb, asoc, net, - &cookie->time_entered, - sctp_align_unsafe_makecopy, - SCTP_RTT_FROM_NON_DATA); - if (stcb->asoc.sctp_autoclose_ticks && (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE))) { sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, - inp, stcb, NULL); + inp, stcb, NULL); } break; default: @@ -1690,16 +1685,22 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, break; } /* end switch */ sctp_stop_all_cookie_timers(stcb); - /* - * We ignore the return code here.. not sure if we should - * somehow abort.. but we do have an existing asoc. This - * really should not fail. - */ - if (sctp_load_addresses_from_init(stcb, m, - init_offset + sizeof(struct sctp_init_chunk), - initack_offset, src, dst, init_src)) { + if ((retval = sctp_load_addresses_from_init(stcb, m, + init_offset + sizeof(struct sctp_init_chunk), + initack_offset, src, dst, init_src, stcb->asoc.port)) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 4; + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + "Problem with address parameters"); + SCTPDBG(SCTP_DEBUG_INPUT1, + "Load addresses from INIT causes an abort %d\n", + retval); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } /* respond with a COOKIE-ACK */ @@ -1719,12 +1720,13 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, */ if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 6; + SCTP_TCB_UNLOCK(stcb); return (NULL); } /* If nat support, and the below and stcb is established, * send back a ABORT(colliding state) if we are established. */ - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) && + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) && (asoc->peer_supports_nat) && ((ntohl(initack_cp->init.initiate_tag) == asoc->my_vtag) && ((ntohl(init_cp->init.initiate_tag) != asoc->peer_vtag) || @@ -1740,10 +1742,11 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, */ op_err = sctp_generate_cause(SCTP_CAUSE_NAT_COLLIDING_STATE, ""); sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); + SCTP_TCB_UNLOCK(stcb); return (NULL); } if ((ntohl(initack_cp->init.initiate_tag) == asoc->my_vtag) && @@ -1759,7 +1762,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, * generator returned the same vtag when we * first sent our INIT-ACK and when we later sent * our INIT. The side with the seq numbers that are - * different will be the one that normnally would + * different will be the one that normally would * have hit case C. This in effect "extends" our vtags * in this collision case to be 64 bits. The same collision * could occur aka you get both vtag and seq number the @@ -1773,11 +1776,13 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 7; + SCTP_TCB_UNLOCK(stcb); return (NULL); } if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 8; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_14); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_15); sctp_stop_all_cookie_timers(stcb); /* * since we did not send a HB make sure we don't double @@ -1787,12 +1792,13 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, if (stcb->asoc.sctp_autoclose_ticks && sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE)) { sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, - NULL); + NULL); } asoc->my_rwnd = ntohl(initack_cp->init.a_rwnd); if (asoc->pre_open_streams < asoc->streamoutcnt) { asoc->pre_open_streams = asoc->streamoutcnt; } + if (ntohl(init_cp->init.initiate_tag) != asoc->peer_vtag) { /* Ok the peer probably discarded our * data (if we echoed a cookie+data). So anything @@ -1801,7 +1807,8 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, * kick us so it COULD still take a timeout * to move these.. but it can't hurt to mark them. */ - TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { if (chk->sent < SCTP_DATAGRAM_RESEND) { chk->sent = SCTP_DATAGRAM_RESEND; sctp_flight_size_decrease(chk); @@ -1810,65 +1817,82 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, spec_flag++; } } - } /* process the INIT info (peer's info) */ - retval = sctp_process_init(init_cp, stcb); - if (retval < 0) { + if (sctp_process_init(init_cp, stcb) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 9; + op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); + SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_init() failed\n"); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } - if (sctp_load_addresses_from_init(stcb, m, - init_offset + sizeof(struct sctp_init_chunk), - initack_offset, src, dst, init_src)) { + if ((retval = sctp_load_addresses_from_init(stcb, m, + init_offset + sizeof(struct sctp_init_chunk), + initack_offset, src, dst, init_src, stcb->asoc.port)) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 10; + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + "Problem with address parameters"); + SCTPDBG(SCTP_DEBUG_INPUT1, + "Load addresses from INIT causes an abort %d\n", + retval); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } - if ((asoc->state & SCTP_STATE_COOKIE_WAIT) || - (asoc->state & SCTP_STATE_COOKIE_ECHOED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { *notification = SCTP_NOTIFY_ASSOC_UP; if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) && - (inp->sctp_socket->so_qlimit == 0)) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (!SCTP_IS_LISTENING(inp))) { +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif - stcb->sctp_ep->sctp_flags |= - SCTP_PCB_FLAGS_CONNECTED; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + sctp_pcb_add_flags(stcb->sctp_ep, SCTP_PCB_FLAGS_CONNECTED); +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { + SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_UNLOCK(so, 1); return (NULL); } #endif soisconnected(stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } - if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) SCTP_STAT_INCR_COUNTER32(sctps_activeestab); else SCTP_STAT_INCR_COUNTER32(sctps_collisionestab); SCTP_STAT_INCR_GAUGE32(sctps_currestab); - } else if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) { + } else if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { SCTP_STAT_INCR_COUNTER32(sctps_restartestab); } else { SCTP_STAT_INCR_COUNTER32(sctps_collisionestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, asoc->primary_destination); + stcb->sctp_ep, stcb, NULL); } sctp_stop_all_cookie_timers(stcb); sctp_toss_old_cookies(stcb, asoc); @@ -1893,24 +1917,30 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, cookie->tie_tag_peer_vtag == asoc->peer_vtag_nonce && cookie->tie_tag_peer_vtag != 0) { struct sctpasochead *head; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif if (asoc->peer_supports_nat) { + struct sctp_tcb *local_stcb; + /* This is a gross gross hack. * Just call the cookie_new code since we * are allowing a duplicate association. * I hope this works... */ - return (sctp_process_cookie_new(m, iphlen, offset, src, dst, - sh, cookie, cookie_len, - inp, netp, init_src,notification, - auth_skipped, auth_offset, auth_len, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port)); + local_stcb = sctp_process_cookie_new(m, iphlen, offset, src, dst, + sh, cookie, cookie_len, + inp, netp, init_src,notification, + auth_skipped, auth_offset, auth_len, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, port); + if (local_stcb == NULL) { + SCTP_TCB_UNLOCK(stcb); + } + return (local_stcb); } /* * case A in Section 5.2.4 Table 2: XXMM (peer restarted) @@ -1918,30 +1948,28 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, /* temp code */ if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 12; - sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_15); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_16); - + sctp_stop_association_timers(stcb, false); /* notify upper layer */ *notification = SCTP_NOTIFY_ASSOC_RESTART; atomic_add_int(&stcb->asoc.refcnt, 1); - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_OPEN) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT)) { SCTP_STAT_INCR_GAUGE32(sctps_currestab); } - if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { SCTP_STAT_INCR_GAUGE32(sctps_restartestab); - } else if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) { + } else if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) { SCTP_STAT_INCR_GAUGE32(sctps_collisionestab); } if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, asoc->primary_destination); + stcb->sctp_ep, stcb, NULL); - } else if (!(asoc->state & SCTP_STATE_SHUTDOWN_SENT)) { + } else if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) { /* move to OPEN state, if not in SHUTDOWN_SENT */ - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); } if (asoc->pre_open_streams < asoc->streamoutcnt) { asoc->pre_open_streams = asoc->streamoutcnt; @@ -1949,12 +1977,14 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, asoc->init_seq_number = ntohl(initack_cp->init.initial_tsn); asoc->sending_seq = asoc->asconf_seq_out = asoc->str_reset_seq_out = asoc->init_seq_number; asoc->asconf_seq_out_acked = asoc->asconf_seq_out - 1; - asoc->asconf_seq_in = asoc->last_acked_seq = asoc->init_seq_number - 1; - asoc->str_reset_seq_in = asoc->init_seq_number; - asoc->advanced_peer_ack_point = asoc->last_acked_seq; + asoc->send_sack = 1; + asoc->data_pkts_seen = 0; + asoc->last_data_chunk_from = NULL; + asoc->last_control_chunk_from = NULL; + asoc->last_net_cmt_send_started = NULL; if (asoc->mapping_array) { memset(asoc->mapping_array, 0, asoc->mapping_array_size); @@ -1964,18 +1994,16 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, asoc->mapping_array_size); } SCTP_TCB_UNLOCK(stcb); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); SCTP_SOCKET_LOCK(so, 1); #endif SCTP_INP_INFO_WLOCK(); SCTP_INP_WLOCK(stcb->sctp_ep); SCTP_TCB_LOCK(stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); /* send up all the data */ - SCTP_TCB_SEND_LOCK(stcb); - - sctp_report_all_outbound(stcb, 0, 1, SCTP_SO_LOCKED); + sctp_report_all_outbound(stcb, 0, SCTP_SO_LOCKED); for (i = 0; i < stcb->asoc.streamoutcnt; i++) { stcb->asoc.strmout[i].chunks_on_queues = 0; #if defined(SCTP_DETAILED_STR_STATS) @@ -1987,8 +2015,9 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, asoc->strmout[i].abandoned_sent[0] = 0; asoc->strmout[i].abandoned_unsent[0] = 0; #endif - stcb->asoc.strmout[i].stream_no = i; - stcb->asoc.strmout[i].next_sequence_send = 0; + stcb->asoc.strmout[i].next_mid_ordered = 0; + stcb->asoc.strmout[i].next_mid_unordered = 0; + stcb->asoc.strmout[i].sid = i; stcb->asoc.strmout[i].last_msg_incomplete = 0; } TAILQ_FOREACH_SAFE(strrst, &asoc->resetHead, next_resp, nstrrst) { @@ -2018,6 +2047,9 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); SCTP_DECR_CHK_COUNT(); } + asoc->ctrl_queue_cnt = 0; + asoc->str_reset = NULL; + asoc->stream_reset_outstanding = 0; TAILQ_FOREACH_SAFE(chk, &asoc->asconf_send_queue, sctp_next, nchk) { TAILQ_REMOVE(&asoc->asconf_send_queue, chk, sctp_next); if (chk->data) { @@ -2041,7 +2073,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, } SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asconf_ack), aack); } - + asoc->zero_checksum = cookie->zero_checksum; /* process the INIT-ACK info (my info) */ asoc->my_vtag = ntohl(initack_cp->init.initiate_tag); @@ -2051,27 +2083,32 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, LIST_REMOVE(stcb, sctp_asocs); /* re-insert to new vtag position */ head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, - SCTP_BASE_INFO(hashasocmark))]; + SCTP_BASE_INFO(hashasocmark))]; /* * put it in the bucket in the vtag hash of assoc's for the * system */ LIST_INSERT_HEAD(head, stcb, sctp_asocs); - SCTP_TCB_SEND_UNLOCK(stcb); SCTP_INP_WUNLOCK(stcb->sctp_ep); SCTP_INP_INFO_WUNLOCK(); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif asoc->total_flight = 0; asoc->total_flight_count = 0; /* process the INIT info (peer's info) */ - retval = sctp_process_init(init_cp, stcb); - if (retval < 0) { + if (sctp_process_init(init_cp, stcb) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 13; - + op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); + SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_init() failed\n"); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } /* @@ -2080,30 +2117,41 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset, */ net->hb_responded = 1; - if (sctp_load_addresses_from_init(stcb, m, - init_offset + sizeof(struct sctp_init_chunk), - initack_offset, src, dst, init_src)) { + if ((retval = sctp_load_addresses_from_init(stcb, m, + init_offset + sizeof(struct sctp_init_chunk), + initack_offset, src, dst, init_src, stcb->asoc.port)) < 0) { if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 14; - + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + "Problem with address parameters"); + SCTPDBG(SCTP_DEBUG_INPUT1, + "Load addresses from INIT causes an abort %d\n", + retval); + sctp_abort_association(stcb->sctp_ep, stcb, m, iphlen, + src, dst, sh, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, +#endif + vrf_id, net->port); return (NULL); } /* respond with a COOKIE-ACK */ - sctp_stop_all_cookie_timers(stcb); - sctp_toss_old_cookies(stcb, asoc); sctp_send_cookie_ack(stcb); if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 15; - + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE) && + (asoc->sctp_autoclose_ticks > 0)) { + sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL); + } return (stcb); } if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 16; /* all other cases... */ + SCTP_TCB_UNLOCK(stcb); return (NULL); } - /* * handle a state cookie for a new association m: input packet mbuf chain-- * assumes a pullup on IP/SCTP/COOKIE-ECHO chunk note: this is a "split" mbuf @@ -2118,7 +2166,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, struct sctp_inpcb *inp, struct sctp_nets **netp, struct sockaddr *init_src, int *notification, int auth_skipped, uint32_t auth_offset, uint32_t auth_len, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port) @@ -2129,10 +2177,9 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, union sctp_sockstore store; struct sctp_association *asoc; int init_offset, initack_offset, initack_limit; - int retval; int error = 0; uint8_t auth_chunk_buf[SCTP_CHUNK_BUFFER_SIZE]; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(inp); @@ -2183,25 +2230,28 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, /* * now that we know the INIT/INIT-ACK are in place, create a new TCB - * and popluate + * and populate */ - /* + /* * Here we do a trick, we set in NULL for the proc/thread argument. We * do this since in effect we only use the p argument when * the socket is unbound and we must do an implicit bind. * Since we are getting a cookie, we cannot be unbound. */ stcb = sctp_aloc_assoc(inp, init_src, &error, - ntohl(initack_cp->init.initiate_tag), vrf_id, -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - (struct thread *)NULL -#elif defined(__Windows__) - (PKTHREAD)NULL + ntohl(initack_cp->init.initiate_tag), + ntohl(initack_cp->init.initial_tsn), vrf_id, + ntohs(initack_cp->init.num_outbound_streams), + port, +#if defined(__FreeBSD__) && !defined(__Userspace__) + (struct thread *)NULL, +#elif defined(_WIN32) && !defined(__Userspace__) + (PKTHREAD)NULL, #else - (struct proc *)NULL + (struct proc *)NULL, #endif - ); + SCTP_DONT_INITIALIZE_AUTH_PARAMS); if (stcb == NULL) { struct mbuf *op_err; @@ -2211,7 +2261,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); sctp_abort_association(inp, (struct sctp_tcb *)NULL, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); @@ -2239,69 +2289,63 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, * cookie was in flight. Only recourse is to abort the * association. */ - atomic_add_int(&stcb->asoc.refcnt, 1); op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); sctp_abort_association(inp, (struct sctp_tcb *)NULL, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) + atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT+SCTP_LOC_16); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_FROM_SCTP_INPUT + SCTP_LOC_18); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif - atomic_subtract_int(&stcb->asoc.refcnt, 1); return (NULL); } + asoc->zero_checksum = cookie->zero_checksum; /* process the INIT-ACK info (my info) */ - asoc->my_vtag = ntohl(initack_cp->init.initiate_tag); asoc->my_rwnd = ntohl(initack_cp->init.a_rwnd); - asoc->init_seq_number = ntohl(initack_cp->init.initial_tsn); - asoc->sending_seq = asoc->asconf_seq_out = asoc->str_reset_seq_out = asoc->init_seq_number; - asoc->asconf_seq_out_acked = asoc->asconf_seq_out - 1; - asoc->asconf_seq_in = asoc->last_acked_seq = asoc->init_seq_number - 1; - asoc->str_reset_seq_in = asoc->init_seq_number; - - asoc->advanced_peer_ack_point = asoc->last_acked_seq; /* process the INIT info (peer's info) */ - retval = sctp_process_init(init_cp, stcb); - if (retval < 0) { + if (sctp_process_init(init_cp, stcb) < 0) { +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_16); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_19); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif - atomic_subtract_int(&stcb->asoc.refcnt, 1); return (NULL); } /* load all addresses */ if (sctp_load_addresses_from_init(stcb, m, - init_offset + sizeof(struct sctp_init_chunk), initack_offset, - src, dst, init_src)) { + init_offset + sizeof(struct sctp_init_chunk), + initack_offset, src, dst, init_src, port) < 0) { +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_17); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_20); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif - atomic_subtract_int(&stcb->asoc.refcnt, 1); return (NULL); } /* @@ -2315,8 +2359,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, struct sctp_auth_chunk *auth; if (auth_len <= SCTP_CHUNK_BUFFER_SIZE) { - auth = (struct sctp_auth_chunk *) - sctp_m_getptr(m, auth_offset, auth_len, auth_chunk_buf); + auth = (struct sctp_auth_chunk *)sctp_m_getptr(m, auth_offset, auth_len, auth_chunk_buf); } else { auth = NULL; } @@ -2324,33 +2367,24 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, /* auth HMAC failed, dump the assoc and packet */ SCTPDBG(SCTP_DEBUG_AUTH1, "COOKIE-ECHO: AUTH failed\n"); +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_18); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_21); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif - atomic_subtract_int(&stcb->asoc.refcnt, 1); return (NULL); } else { /* remaining chunks checked... good to go */ stcb->asoc.authenticated = 1; } } - /* update current state */ - SCTPDBG(SCTP_DEBUG_INPUT2, "moving to OPEN state\n"); - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); - if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, asoc->primary_destination); - } - sctp_stop_all_cookie_timers(stcb); - SCTP_STAT_INCR_COUNTER32(sctps_passiveestab); - SCTP_STAT_INCR_GAUGE32(sctps_currestab); /* * if we're doing ASCONFs, check to see if we have any new local @@ -2399,25 +2433,37 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, break; #endif default: +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_19); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_22); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif - atomic_subtract_int(&stcb->asoc.refcnt, 1); return (NULL); } + /* update current state */ + SCTPDBG(SCTP_DEBUG_INPUT2, "moving to OPEN state\n"); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); + if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, + stcb->sctp_ep, stcb, NULL); + } + sctp_stop_all_cookie_timers(stcb); + SCTP_STAT_INCR_COUNTER32(sctps_passiveestab); + SCTP_STAT_INCR_GAUGE32(sctps_currestab); + /* set up to notify upper layer */ *notification = SCTP_NOTIFY_ASSOC_UP; if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) && - (inp->sctp_socket->so_qlimit == 0)) { + (!SCTP_IS_LISTENING(inp))) { /* * This is an endpoint that called connect() how it got a * cookie that is NEW is a bit of a mystery. It must be that @@ -2425,9 +2471,11 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, * INIT/INIT-ACK/COOKIE arrived. But of course then it * should have went to the other code.. not here.. oh well.. * a bit of protection is worth having.. + * + * XXXMJ unlocked */ - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + sctp_pcb_add_flags(stcb->sctp_ep, SCTP_PCB_FLAGS_CONNECTED); +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); SCTP_SOCKET_LOCK(so, 1); @@ -2439,11 +2487,11 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, } #endif soisconnected(stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } else if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && - (inp->sctp_socket->so_qlimit)) { + (SCTP_IS_LISTENING(inp))) { /* * We don't want to do anything with this one. Since it is * the listening guy. The timer will get started for @@ -2455,19 +2503,14 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE)) { sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL); } - /* calculate the RTT */ (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); - *netp = sctp_findnet(stcb, init_src); + *netp = sctp_findnet(stcb, init_src); if (*netp != NULL) { /* * Since we did not send a HB, make sure we don't double * things. */ (*netp)->hb_responded = 1; - /* Calculate the RTT. */ - (*netp)->RTO = sctp_calculate_rto(stcb, asoc, *netp, - &cookie->time_entered, sctp_align_unsafe_makecopy, - SCTP_RTT_FROM_NON_DATA); } /* respond with a COOKIE-ACK */ sctp_send_cookie_ack(stcb); @@ -2482,7 +2525,6 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, &store.sa, cookie->local_scope, cookie->site_scope, cookie->ipv4_scope, cookie->loopback_scope); - return (stcb); } @@ -2493,7 +2535,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset, head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(tag, SCTP_BASE_INFO(hashasocmark))]; LIST_FOREACH(stcb, head, sctp_asocs) { - if ((stcb->asoc.my_vtag == tag) && (stcb->rport == rport) && (inp == stcb->sctp_ep)) { + if ((stcb->asoc.my_vtag == tag) && (stcb->rport == rport) && (inp == stcb->sctp_ep)) { -- SEND ABORT - TRY AGAIN -- } } @@ -2510,7 +2552,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, struct sctp_inpcb **inp_p, struct sctp_tcb **stcb, struct sctp_nets **netp, int auth_skipped, uint32_t auth_offset, uint32_t auth_len, struct sctp_tcb **locked_tcb, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port) @@ -2523,11 +2565,15 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, struct mbuf *m_sig; uint8_t calc_sig[SCTP_SIGNATURE_SIZE], tmp_sig[SCTP_SIGNATURE_SIZE]; uint8_t *sig; +#if defined(__Userspace__) && defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) + uint8_t cookie_ok = 1; +#else uint8_t cookie_ok = 0; +#endif unsigned int sig_offset, cookie_offset; unsigned int cookie_len; struct timeval now; - struct timeval time_expires; + struct timeval time_entered, time_expires; int notification = 0; struct sctp_nets *netl; int had_a_existing_tcb = 0; @@ -2552,8 +2598,14 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, cookie_offset = offset + sizeof(struct sctp_chunkhdr); cookie_len = ntohs(cp->ch.chunk_length); - if ((cookie->peerport != sh->src_port) && - (cookie->myport != sh->dest_port) && + if (cookie_len < sizeof(struct sctp_cookie_echo_chunk) + + sizeof(struct sctp_init_chunk) + + sizeof(struct sctp_init_ack_chunk) + SCTP_SIGNATURE_SIZE) { + /* cookie too small */ + return (NULL); + } + if ((cookie->peerport != sh->src_port) || + (cookie->myport != sh->dest_port) || (cookie->my_vtag != sh->v_tag)) { /* * invalid ports or bad tag. Note that we always leave the @@ -2564,12 +2616,6 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, */ return (NULL); } - if (cookie_len < sizeof(struct sctp_cookie_echo_chunk) + - sizeof(struct sctp_init_chunk) + - sizeof(struct sctp_init_ack_chunk) + SCTP_SIGNATURE_SIZE) { - /* cookie too small */ - return (NULL); - } #if defined(__Userspace__) /* * Recover the AF_CONN addresses within the cookie. @@ -2610,15 +2656,22 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, /* * compute the signature/digest for the cookie */ - ep = &(*inp_p)->sctp_ep; - l_inp = *inp_p; - if (l_stcb) { + if (l_stcb != NULL) { + atomic_add_int(&l_stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(l_stcb); } + l_inp = *inp_p; SCTP_INP_RLOCK(l_inp); - if (l_stcb) { + if (l_stcb != NULL) { SCTP_TCB_LOCK(l_stcb); + atomic_subtract_int(&l_stcb->asoc.refcnt, 1); + } + if (l_inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { + SCTP_INP_RUNLOCK(l_inp); + sctp_m_freem(m_sig); + return (NULL); } + ep = &(*inp_p)->sctp_ep; /* which cookie is it? */ if ((cookie->time_entered.tv_sec < (long)ep->time_of_secret_change) && (ep->current_secret_number != ep->last_secret_number)) { @@ -2641,7 +2694,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, return (NULL); } /* compare the received digest with the computed digest */ - if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) { + if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) { /* try the old cookie? */ if ((cookie->time_entered.tv_sec == (long)ep->time_of_secret_change) && (ep->current_secret_number != ep->last_secret_number)) { @@ -2650,7 +2703,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, (uint8_t *)ep->secret_key[(int)ep->last_secret_number], SCTP_SECRET_SIZE, m, cookie_offset, calc_sig, 0); /* compare */ - if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0) + if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0) cookie_ok = 1; } } else { @@ -2679,17 +2732,35 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, return (NULL); } + if (sctp_ticks_to_msecs(cookie->cookie_life) > SCTP_MAX_COOKIE_LIFE) { + SCTPDBG(SCTP_DEBUG_INPUT2, "handle_cookie_echo: Invalid cookie lifetime\n"); + return (NULL); + } + time_entered.tv_sec = cookie->time_entered.tv_sec; + time_entered.tv_usec = cookie->time_entered.tv_usec; + if ((time_entered.tv_sec < 0) || + (time_entered.tv_usec < 0) || + (time_entered.tv_usec >= 1000000)) { + /* Invalid time stamp. Cookie must have been modified. */ + SCTPDBG(SCTP_DEBUG_INPUT2, "handle_cookie_echo: Invalid time stamp\n"); + return (NULL); + } + (void)SCTP_GETTIME_TIMEVAL(&now); +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) + if (timercmp(&now, &time_entered, <)) { +#else + if (timevalcmp(&now, &time_entered, <)) { +#endif + SCTPDBG(SCTP_DEBUG_INPUT2, "handle_cookie_echo: cookie generated in the future!\n"); + return (NULL); + } /* - * check the cookie timestamps to be sure it's not stale + * Check the cookie timestamps to be sure it's not stale. + * cookie_life is in ticks, so we convert to seconds. */ - (void)SCTP_GETTIME_TIMEVAL(&now); - /* Expire time is in Ticks, so we convert to seconds */ - time_expires.tv_sec = cookie->time_entered.tv_sec + TICKS_TO_SEC(cookie->cookie_life); - time_expires.tv_usec = cookie->time_entered.tv_usec; - /* TODO sctp_constants.h needs alternative time macros when - * _KERNEL is undefined. - */ -#ifndef __FreeBSD__ + time_expires.tv_sec = time_entered.tv_sec + sctp_ticks_to_secs(cookie->cookie_life); + time_expires.tv_usec = time_entered.tv_usec; +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (timercmp(&now, &time_expires, >)) #else if (timevalcmp(&now, &time_expires, >)) @@ -2697,29 +2768,41 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, { /* cookie is stale! */ struct mbuf *op_err; - struct sctp_stale_cookie_msg *scm; - uint32_t tim; - op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_stale_cookie_msg), - 0, M_NOWAIT, 1, MT_DATA); + struct sctp_error_stale_cookie *cause; + struct timeval diff; + uint32_t staleness; + + op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_error_stale_cookie), + 0, M_NOWAIT, 1, MT_DATA); if (op_err == NULL) { /* FOOBAR */ return (NULL); } /* Set the len */ - SCTP_BUF_LEN(op_err) = sizeof(struct sctp_stale_cookie_msg); - scm = mtod(op_err, struct sctp_stale_cookie_msg *); - scm->ph.param_type = htons(SCTP_CAUSE_STALE_COOKIE); - scm->ph.param_length = htons((sizeof(struct sctp_paramhdr) + - (sizeof(uint32_t)))); - /* seconds to usec */ - tim = (now.tv_sec - time_expires.tv_sec) * 1000000; - /* add in usec */ - if (tim == 0) - tim = now.tv_usec - cookie->time_entered.tv_usec; - scm->time_usec = htonl(tim); + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_error_stale_cookie); + cause = mtod(op_err, struct sctp_error_stale_cookie *); + cause->cause.code = htons(SCTP_CAUSE_STALE_COOKIE); + cause->cause.length = htons(sizeof(struct sctp_error_stale_cookie)); +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) + timersub(&now, &time_expires, &diff); +#else + diff = now; + timevalsub(&diff, &time_expires); +#endif + if ((uint32_t)diff.tv_sec > UINT32_MAX / 1000000) { + staleness = UINT32_MAX; + } else { + staleness = (uint32_t)diff.tv_sec * 1000000; + } + if (UINT32_MAX - staleness >= (uint32_t)diff.tv_usec) { + staleness += (uint32_t)diff.tv_usec; + } else { + staleness = UINT32_MAX; + } + cause->stale_time = htonl(staleness); sctp_send_operr_to(src, dst, sh, cookie->peers_vtag, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, l_inp->fibnum, #endif vrf_id, port); return (NULL); @@ -2821,7 +2904,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, cookie, cookie_len, *inp_p, netp, to, ¬ification, auth_skipped, auth_offset, auth_len, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); @@ -2830,21 +2913,25 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, had_a_existing_tcb = 1; *stcb = sctp_process_cookie_existing(m, iphlen, offset, src, dst, sh, - cookie, cookie_len, *inp_p, *stcb, netp, to, - ¬ification, auth_skipped, auth_offset, auth_len, -#if defined(__FreeBSD__) + cookie, cookie_len, *inp_p, *stcb, netp, to, + ¬ification, auth_skipped, auth_offset, auth_len, +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); + if (*stcb == NULL) { + *locked_tcb = NULL; + } } if (*stcb == NULL) { /* still no TCB... must be bad cookie-echo */ return (NULL); } -#if defined(__FreeBSD__) - if ((*netp != NULL) && (mflowtype != M_HASHTYPE_NONE)) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (*netp != NULL) { (*netp)->flowtype = mflowtype; + (*netp)->flowid = mflowid; } #endif /* @@ -2857,7 +2944,8 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, */ if (netl == NULL) { /* TSNH! Huh, why do I need to add this address here? */ - if (sctp_add_remote_addr(*stcb, to, NULL, SCTP_DONOT_SETSCOPE, SCTP_IN_COOKIE_PROC)) { + if (sctp_add_remote_addr(*stcb, to, NULL, port, + SCTP_DONOT_SETSCOPE, SCTP_IN_COOKIE_PROC)) { return (NULL); } netl = sctp_findnet(*stcb, to); @@ -2895,36 +2983,23 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, return (m); } oso = (*inp_p)->sctp_socket; -#if (defined(__FreeBSD__) && __FreeBSD_version < 700000) - /* - * We do this to keep the sockets side happy during - * the sonewcon ONLY. - */ - NET_LOCK_GIANT(); -#endif atomic_add_int(&(*stcb)->asoc.refcnt, 1); SCTP_TCB_UNLOCK((*stcb)); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_SET(oso->so_vnet); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(oso, 1); #endif so = sonewconn(oso, 0 -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) ,NULL -#endif -#ifdef __Panda__ - ,NULL , (*inp_p)->def_vrf_id #endif ); -#if (defined(__FreeBSD__) && __FreeBSD_version < 700000) - NET_UNLOCK_GIANT(); -#endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(oso, 1); #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_RESTORE(); #endif SCTP_TCB_LOCK((*stcb)); @@ -2932,7 +3007,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, if (so == NULL) { struct mbuf *op_err; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *pcb_so; #endif /* Too many sockets */ @@ -2940,11 +3015,11 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); sctp_abort_association(*inp_p, NULL, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) pcb_so = SCTP_INP_SO(*inp_p); atomic_add_int(&(*stcb)->asoc.refcnt, 1); SCTP_TCB_UNLOCK((*stcb)); @@ -2952,8 +3027,9 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, SCTP_TCB_LOCK((*stcb)); atomic_subtract_int(&(*stcb)->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(*inp_p, *stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_20); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(*inp_p, *stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_23); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(pcb_so, 1); #endif return (NULL); @@ -2987,7 +3063,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, inp->partial_delivery_point = (*inp_p)->partial_delivery_point; inp->sctp_context = (*inp_p)->sctp_context; inp->local_strreset_support = (*inp_p)->local_strreset_support; - inp->inp_starting_point_for_iterator = NULL; + inp->fibnum = (*inp_p)->fibnum; #if defined(__Userspace__) inp->ulp_info = (*inp_p)->ulp_info; inp->recv_callback = (*inp_p)->recv_callback; @@ -3016,14 +3092,14 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, * the accept state waiting for the accept! */ if (*stcb) { - (*stcb)->asoc.state |= SCTP_STATE_IN_ACCEPT_QUEUE; + SCTP_ADD_SUBSTATE(*stcb, SCTP_STATE_IN_ACCEPT_QUEUE); } sctp_move_pcb_and_assoc(*inp_p, inp, *stcb); atomic_add_int(&(*stcb)->asoc.refcnt, 1); SCTP_TCB_UNLOCK((*stcb)); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_pull_off_control_to_new_inp((*inp_p), inp, *stcb, 0); #else @@ -3032,7 +3108,6 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, SCTP_TCB_LOCK((*stcb)); atomic_subtract_int(&(*stcb)->asoc.refcnt, 1); - /* now we must check to see if we were aborted while * the move was going on and the lock/unlock happened. */ @@ -3055,13 +3130,13 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset, } /* Pull it from the incomplete queue and wake the guy */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) atomic_add_int(&(*stcb)->asoc.refcnt, 1); SCTP_TCB_UNLOCK((*stcb)); SCTP_SOCKET_LOCK(so, 1); #endif soisconnected(so); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_TCB_LOCK((*stcb)); atomic_subtract_int(&(*stcb)->asoc.refcnt, 1); SCTP_SOCKET_UNLOCK(so, 1); @@ -3085,6 +3160,7 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED, { /* cp must not be used, others call this without a c-ack :-) */ struct sctp_association *asoc; + struct sctp_tmit_chunk *chk; SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_cookie_ack: handling COOKIE-ACK\n"); @@ -3093,37 +3169,47 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED, } asoc = &stcb->asoc; - + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { + sctp_misc_ints(SCTP_THRESHOLD_CLEAR, + asoc->overall_error_count, + 0, + SCTP_FROM_SCTP_INPUT, + __LINE__); + } sctp_stop_all_cookie_timers(stcb); /* process according to association state */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) { /* state change only needed when I am in right state */ SCTPDBG(SCTP_DEBUG_INPUT2, "moving to OPEN state\n"); - SCTP_SET_STATE(asoc, SCTP_STATE_OPEN); + SCTP_SET_STATE(stcb, SCTP_STATE_OPEN); sctp_start_net_timers(stcb); if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) { sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, asoc->primary_destination); - + stcb->sctp_ep, stcb, NULL); } /* update RTO */ SCTP_STAT_INCR_COUNTER32(sctps_activeestab); SCTP_STAT_INCR_GAUGE32(sctps_currestab); if (asoc->overall_error_count == 0) { - net->RTO = sctp_calculate_rto(stcb, asoc, net, - &asoc->time_entered, sctp_align_safe_nocopy, - SCTP_RTT_FROM_NON_DATA); + sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered, + SCTP_RTT_FROM_NON_DATA); } + /* + * Since we did not send a HB make sure we don't double + * things. + */ + asoc->overall_error_count = 0; + net->hb_responded = 1; (void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered); sctp_ulp_notify(SCTP_NOTIFY_ASSOC_UP, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + sctp_pcb_add_flags(stcb->sctp_ep, SCTP_PCB_FLAGS_CONNECTED); +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -3134,15 +3220,10 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED, if ((stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) == 0) { soisconnected(stcb->sctp_socket); } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } - /* - * since we did not send a HB make sure we don't double - * things - */ - net->hb_responded = 1; if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { /* We don't need to do the asconf thing, @@ -3154,7 +3235,6 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED, sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); - if (stcb->asoc.sctp_autoclose_ticks && sctp_is_feature_on(stcb->sctp_ep, SCTP_PCB_FLAGS_AUTOCLOSE)) { sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, @@ -3181,11 +3261,13 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED, closed_socket: /* Toss the cookie if I can */ sctp_toss_old_cookies(stcb, asoc); - if (!TAILQ_EMPTY(&asoc->sent_queue)) { - /* Restart the timer if we have pending data */ - struct sctp_tmit_chunk *chk; - - chk = TAILQ_FIRST(&asoc->sent_queue); + /* Restart the timer if we have pending data */ + TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); } } @@ -3203,10 +3285,6 @@ sctp_handle_ecn_echo(struct sctp_ecne_chunk *cp, unsigned int pkt_cnt; len = ntohs(cp->ch.chunk_length); - if ((len != sizeof(struct sctp_ecne_chunk)) && - (len != sizeof(struct old_sctp_ecne_chunk))) { - return; - } if (len == sizeof(struct old_sctp_ecne_chunk)) { /* Its the old format */ memcpy(&bkup, cp, sizeof(struct old_sctp_ecne_chunk)); @@ -3220,18 +3298,18 @@ sctp_handle_ecn_echo(struct sctp_ecne_chunk *cp, if (lchk == NULL) { window_data_tsn = stcb->asoc.sending_seq - 1; } else { - window_data_tsn = lchk->rec.data.TSN_seq; + window_data_tsn = lchk->rec.data.tsn; } /* Find where it was sent to if possible. */ net = NULL; TAILQ_FOREACH(lchk, &stcb->asoc.sent_queue, sctp_next) { - if (lchk->rec.data.TSN_seq == tsn) { + if (lchk->rec.data.tsn == tsn) { net = lchk->whoTo; net->ecn_prev_cwnd = lchk->rec.data.cwnd_at_send; break; } - if (SCTP_TSN_GT(lchk->rec.data.TSN_seq, tsn)) { + if (SCTP_TSN_GT(lchk->rec.data.tsn, tsn)) { break; } } @@ -3317,14 +3395,14 @@ sctp_handle_ecn_cwr(struct sctp_cwr_chunk *cp, struct sctp_tcb *stcb, struct sct * make sure that we have a covered ECNE in the control chunk part. * If so remove it. */ - struct sctp_tmit_chunk *chk; + struct sctp_tmit_chunk *chk, *nchk; struct sctp_ecne_chunk *ecne; int override; uint32_t cwr_tsn; cwr_tsn = ntohl(cp->tsn); override = cp->ch.chunk_flags & SCTP_CWR_REDUCE_OVERRIDE; - TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { + TAILQ_FOREACH_SAFE(chk, &stcb->asoc.control_send_queue, sctp_next, nchk) { if (chk->rec.chunk_id.id != SCTP_ECN_ECHO) { continue; } @@ -3338,9 +3416,9 @@ sctp_handle_ecn_cwr(struct sctp_cwr_chunk *cp, struct sctp_tcb *stcb, struct sct stcb->asoc.ecn_echo_cnt_onq--; TAILQ_REMOVE(&stcb->asoc.control_send_queue, chk, sctp_next); + stcb->asoc.ctrl_queue_cnt--; sctp_m_freem(chk->data); chk->data = NULL; - stcb->asoc.ctrl_queue_cnt--; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); if (override == 0) { break; @@ -3353,8 +3431,7 @@ static void sctp_handle_shutdown_complete(struct sctp_shutdown_complete_chunk *cp SCTP_UNUSED, struct sctp_tcb *stcb, struct sctp_nets *net) { - struct sctp_association *asoc; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif @@ -3363,9 +3440,8 @@ sctp_handle_shutdown_complete(struct sctp_shutdown_complete_chunk *cp SCTP_UNUSE if (stcb == NULL) return; - asoc = &stcb->asoc; /* process according to association state */ - if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT) { + if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) { /* unexpected SHUTDOWN-COMPLETE... so ignore... */ SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_shutdown_complete: not in SCTP_STATE_SHUTDOWN_ACK_SENT --- ignore\n"); @@ -3377,19 +3453,20 @@ sctp_handle_shutdown_complete(struct sctp_shutdown_complete_chunk *cp SCTP_UNUSE sctp_ulp_notify(SCTP_NOTIFY_ASSOC_DOWN, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); } #ifdef INVARIANTS - if (!TAILQ_EMPTY(&asoc->send_queue) || - !TAILQ_EMPTY(&asoc->sent_queue) || - !stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, asoc)) { + if (!TAILQ_EMPTY(&stcb->asoc.send_queue) || + !TAILQ_EMPTY(&stcb->asoc.sent_queue) || + sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED)) { panic("Queues are not empty when handling SHUTDOWN-COMPLETE"); } #endif /* stop the timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNACK, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_22); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNACK, stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_24); SCTP_STAT_INCR_COUNTER32(sctps_shutdown); /* free the TCB */ SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_shutdown_complete: calls free-asoc\n"); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -3397,8 +3474,9 @@ sctp_handle_shutdown_complete(struct sctp_shutdown_complete_chunk *cp SCTP_UNUSE SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_23); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_25); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif return; @@ -3410,18 +3488,19 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, { switch (desc->chunk_type) { case SCTP_DATA: - /* find the tsn to resend (possibly */ + case SCTP_IDATA: + /* find the tsn to resend (possibly) */ { uint32_t tsn; struct sctp_tmit_chunk *tp1; tsn = ntohl(desc->tsn_ifany); TAILQ_FOREACH(tp1, &stcb->asoc.sent_queue, sctp_next) { - if (tp1->rec.data.TSN_seq == tsn) { + if (tp1->rec.data.tsn == tsn) { /* found it */ break; } - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, tsn)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, tsn)) { /* not found */ tp1 = NULL; break; @@ -3434,7 +3513,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, */ SCTP_STAT_INCR(sctps_pdrpdnfnd); TAILQ_FOREACH(tp1, &stcb->asoc.sent_queue, sctp_next) { - if (tp1->rec.data.TSN_seq == tsn) { + if (tp1->rec.data.tsn == tsn) { /* found it */ break; } @@ -3444,8 +3523,6 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, SCTP_STAT_INCR(sctps_pdrptsnnf); } if ((tp1) && (tp1->sent < SCTP_DATAGRAM_ACKED)) { - uint8_t *ddp; - if (((flg & SCTP_BADCRC) == 0) && ((flg & SCTP_FROM_MIDDLE_BOX) == 0)) { return (0); @@ -3460,20 +3537,18 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, SCTP_STAT_INCR(sctps_pdrpdizrw); return (0); } - ddp = (uint8_t *) (mtod(tp1->data, caddr_t) + - sizeof(struct sctp_data_chunk)); - { - unsigned int iii; - - for (iii = 0; iii < sizeof(desc->data_bytes); - iii++) { - if (ddp[iii] != desc->data_bytes[iii]) { - SCTP_STAT_INCR(sctps_pdrpbadd); - return (-1); - } - } + if ((uint32_t)SCTP_BUF_LEN(tp1->data) < + SCTP_DATA_CHUNK_OVERHEAD(stcb) + SCTP_NUM_DB_TO_VERIFY) { + /* Payload not matching. */ + SCTP_STAT_INCR(sctps_pdrpbadd); + return (-1); + } + if (memcmp(mtod(tp1->data, caddr_t) + SCTP_DATA_CHUNK_OVERHEAD(stcb), + desc->data_bytes, SCTP_NUM_DB_TO_VERIFY) != 0) { + /* Payload not matching. */ + SCTP_STAT_INCR(sctps_pdrpbadd); + return (-1); } - if (tp1->do_rtt) { /* * this guy had a RTO calculation @@ -3500,12 +3575,13 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, if (TAILQ_EMPTY(&stcb->asoc.send_queue)) { tp1->rec.data.fast_retran_tsn = stcb->asoc.sending_seq; } else { - tp1->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.TSN_seq; + tp1->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.tsn; } /* restart the timer */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, tp1->whoTo, SCTP_FROM_SCTP_INPUT+SCTP_LOC_24); + stcb, tp1->whoTo, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_26); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, tp1->whoTo); @@ -3514,8 +3590,8 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PDRP, tp1->whoTo->flight_size, tp1->book_size, - (uintptr_t)stcb, - tp1->rec.data.TSN_seq); + (uint32_t)(uintptr_t)stcb, + tp1->rec.data.tsn); } if (tp1->sent < SCTP_DATAGRAM_RESEND) { sctp_flight_size_decrease(tp1); @@ -3573,7 +3649,8 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, * this, otherwise we let the timer fire. */ sctp_timer_stop(SCTP_TIMER_TYPE_INIT, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INPUT+SCTP_LOC_25); + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_27); sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); } break; @@ -3621,6 +3698,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, /* resend last asconf ack */ sctp_send_asconf_ack(stcb); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: send_forward_tsn(stcb, &stcb->asoc); break; @@ -3646,7 +3724,7 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t *l uint16_t temp; /* - * We set things to 0xffff since this is the last delivered sequence + * We set things to 0xffffffff since this is the last delivered sequence * and we will be sending in 0 after the reset. */ @@ -3656,12 +3734,12 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t *l if (temp >= stcb->asoc.streamincnt) { continue; } - stcb->asoc.strmin[temp].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[temp].last_mid_delivered = 0xffffffff; } } else { list = NULL; for (i = 0; i < stcb->asoc.streamincnt; i++) { - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[i].last_mid_delivered = 0xffffffff; } } sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_RECV, stcb, number_entries, (void *)list, SCTP_SO_NOT_LOCKED); @@ -3680,16 +3758,39 @@ sctp_reset_out_streams(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t /* no such stream */ continue; } - stcb->asoc.strmout[temp].next_sequence_send = 0; + stcb->asoc.strmout[temp].next_mid_ordered = 0; + stcb->asoc.strmout[temp].next_mid_unordered = 0; } } else { for (i = 0; i < stcb->asoc.streamoutcnt; i++) { - stcb->asoc.strmout[i].next_sequence_send = 0; + stcb->asoc.strmout[i].next_mid_ordered = 0; + stcb->asoc.strmout[i].next_mid_unordered = 0; } } sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_SEND, stcb, number_entries, (void *)list, SCTP_SO_NOT_LOCKED); } +static void +sctp_reset_clear_pending(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t *list) +{ + uint32_t i; + uint16_t temp; + + if (number_entries > 0) { + for (i = 0; i < number_entries; i++) { + temp = ntohs(list[i]); + if (temp >= stcb->asoc.streamoutcnt) { + /* no such stream */ + continue; + } + stcb->asoc.strmout[temp].state = SCTP_STREAM_OPEN; + } + } else { + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + stcb->asoc.strmout[i].state = SCTP_STREAM_OPEN; + } + } +} struct sctp_stream_reset_request * sctp_find_stream_reset(struct sctp_tcb *stcb, uint32_t seq, struct sctp_tmit_chunk **bchk) @@ -3701,19 +3802,16 @@ sctp_find_stream_reset(struct sctp_tcb *stcb, uint32_t seq, struct sctp_tmit_chu int len, clen; asoc = &stcb->asoc; - if (TAILQ_EMPTY(&stcb->asoc.control_send_queue)) { - asoc->stream_reset_outstanding = 0; - return (NULL); - } - if (stcb->asoc.str_reset == NULL) { + chk = asoc->str_reset; + if (TAILQ_EMPTY(&asoc->control_send_queue) || + (chk == NULL)) { asoc->stream_reset_outstanding = 0; return (NULL); } - chk = stcb->asoc.str_reset; if (chk->data == NULL) { return (NULL); } - if (bchk) { + if (bchk != NULL) { /* he wants a copy of the chk pointer */ *bchk = chk; } @@ -3740,35 +3838,32 @@ static void sctp_clean_up_stream_reset(struct sctp_tcb *stcb) { struct sctp_association *asoc; - struct sctp_tmit_chunk *chk = stcb->asoc.str_reset; + struct sctp_tmit_chunk *chk; - if (stcb->asoc.str_reset == NULL) { + asoc = &stcb->asoc; + chk = asoc->str_reset; + if (chk == NULL) { return; } - asoc = &stcb->asoc; - - sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, chk->whoTo, SCTP_FROM_SCTP_INPUT+SCTP_LOC_26); - TAILQ_REMOVE(&asoc->control_send_queue, - chk, - sctp_next); + asoc->str_reset = NULL; + sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, + NULL, SCTP_FROM_SCTP_INPUT + SCTP_LOC_28); + TAILQ_REMOVE(&asoc->control_send_queue, chk, sctp_next); + asoc->ctrl_queue_cnt--; if (chk->data) { sctp_m_freem(chk->data); chk->data = NULL; } - asoc->ctrl_queue_cnt--; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - /*sa_ignore NO_NULL_CHK*/ - stcb->asoc.str_reset = NULL; } - static int sctp_handle_stream_reset_response(struct sctp_tcb *stcb, uint32_t seq, uint32_t action, struct sctp_stream_reset_response *respin) { uint16_t type; - int lparm_len; + int lparam_len; struct sctp_association *asoc = &stcb->asoc; struct sctp_tmit_chunk *chk; struct sctp_stream_reset_request *req_param; @@ -3785,10 +3880,12 @@ sctp_handle_stream_reset_response(struct sctp_tcb *stcb, if (req_param != NULL) { stcb->asoc.str_reset_seq_out++; type = ntohs(req_param->ph.param_type); - lparm_len = ntohs(req_param->ph.param_length); + lparam_len = ntohs(req_param->ph.param_length); if (type == SCTP_STR_RESET_OUT_REQUEST) { + int no_clear = 0; + req_out_param = (struct sctp_stream_reset_out_request *)req_param; - number_entries = (lparm_len - sizeof(struct sctp_stream_reset_out_request)) / sizeof(uint16_t); + number_entries = (lparam_len - sizeof(struct sctp_stream_reset_out_request)) / sizeof(uint16_t); asoc->stream_reset_out_is_outstanding = 0; if (asoc->stream_reset_outstanding) asoc->stream_reset_outstanding--; @@ -3797,12 +3894,21 @@ sctp_handle_stream_reset_response(struct sctp_tcb *stcb, sctp_reset_out_streams(stcb, number_entries, req_out_param->list_of_streams); } else if (action == SCTP_STREAM_RESET_RESULT_DENIED) { sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_DENIED_OUT, stcb, number_entries, req_out_param->list_of_streams, SCTP_SO_NOT_LOCKED); + } else if (action == SCTP_STREAM_RESET_RESULT_IN_PROGRESS) { + /* Set it up so we don't stop retransmitting */ + asoc->stream_reset_outstanding++; + stcb->asoc.str_reset_seq_out--; + asoc->stream_reset_out_is_outstanding = 1; + no_clear = 1; } else { sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_FAILED_OUT, stcb, number_entries, req_out_param->list_of_streams, SCTP_SO_NOT_LOCKED); } + if (no_clear == 0) { + sctp_reset_clear_pending(stcb, number_entries, req_out_param->list_of_streams); + } } else if (type == SCTP_STR_RESET_IN_REQUEST) { req_in_param = (struct sctp_stream_reset_in_request *)req_param; - number_entries = (lparm_len - sizeof(struct sctp_stream_reset_in_request)) / sizeof(uint16_t); + number_entries = (lparam_len - sizeof(struct sctp_stream_reset_in_request)) / sizeof(uint16_t); if (asoc->stream_reset_outstanding) asoc->stream_reset_outstanding--; if (action == SCTP_STREAM_RESET_RESULT_DENIED) { @@ -3826,7 +3932,11 @@ sctp_handle_stream_reset_response(struct sctp_tcb *stcb, asoc->stream_reset_outstanding--; if (action == SCTP_STREAM_RESET_RESULT_PERFORMED) { /* Put the new streams into effect */ - stcb->asoc.streamoutcnt += num_stream; + int i; + for (i = asoc->streamoutcnt; i < (asoc->streamoutcnt + num_stream); i++) { + asoc->strmout[i].state = SCTP_STREAM_OPEN; + } + asoc->streamoutcnt += num_stream; sctp_notify_stream_reset_add(stcb, stcb->asoc.streamincnt, stcb->asoc.streamoutcnt, 0); } else if (action == SCTP_STREAM_RESET_RESULT_DENIED) { sctp_notify_stream_reset_add(stcb, stcb->asoc.streamincnt, stcb->asoc.streamoutcnt, @@ -3903,6 +4013,9 @@ sctp_handle_stream_reset_response(struct sctp_tcb *stcb, } } } + if (asoc->stream_reset_outstanding == 0) { + sctp_send_stream_reset_out_if_possible(stcb, SCTP_SO_NOT_LOCKED); + } return (0); } @@ -3925,7 +4038,7 @@ sctp_handle_str_reset_request_in(struct sctp_tcb *stcb, seq = ntohl(req->request_seq); if (asoc->str_reset_seq_in == seq) { asoc->last_reset_action[1] = asoc->last_reset_action[0]; - if (!(asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ)) { + if ((asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ) == 0) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } else if (trunc) { /* Can't do it, since they exceeded our buffer size */ @@ -3933,22 +4046,33 @@ sctp_handle_str_reset_request_in(struct sctp_tcb *stcb, } else if (stcb->asoc.stream_reset_out_is_outstanding == 0) { len = ntohs(req->ph.param_length); number_entries = ((len - sizeof(struct sctp_stream_reset_in_request)) / sizeof(uint16_t)); - for (i = 0; i < number_entries; i++) { - temp = ntohs(req->list_of_streams[i]); - req->list_of_streams[i] = temp; + if (number_entries) { + for (i = 0; i < number_entries; i++) { + temp = ntohs(req->list_of_streams[i]); + if (temp >= stcb->asoc.streamoutcnt) { + asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; + goto bad_boy; + } + req->list_of_streams[i] = temp; + } + for (i = 0; i < number_entries; i++) { + if (stcb->asoc.strmout[req->list_of_streams[i]].state == SCTP_STREAM_OPEN) { + stcb->asoc.strmout[req->list_of_streams[i]].state = SCTP_STREAM_RESET_PENDING; + } + } + } else { + /* Its all */ + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + if (stcb->asoc.strmout[i].state == SCTP_STREAM_OPEN) + stcb->asoc.strmout[i].state = SCTP_STREAM_RESET_PENDING; + } } asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_PERFORMED; - sctp_add_stream_reset_out(chk, number_entries, req->list_of_streams, - asoc->str_reset_seq_out, - seq, (asoc->sending_seq - 1)); - asoc->stream_reset_out_is_outstanding = 1; - asoc->str_reset = chk; - sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, chk->whoTo); - stcb->asoc.stream_reset_outstanding++; } else { /* Can't do it, since we have sent one out */ asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_ERR_IN_PROGRESS; } + bad_boy: sctp_add_stream_reset_result(chk, seq, asoc->last_reset_action[0]); asoc->str_reset_seq_in++; } else if (asoc->str_reset_seq_in - 1 == seq) { @@ -3958,6 +4082,7 @@ sctp_handle_str_reset_request_in(struct sctp_tcb *stcb, } else { sctp_add_stream_reset_result(chk, seq, SCTP_STREAM_RESET_RESULT_ERR_BAD_SEQNO); } + sctp_send_stream_reset_out_if_possible(stcb, SCTP_SO_NOT_LOCKED); } static int @@ -3979,7 +4104,7 @@ sctp_handle_str_reset_request_tsn(struct sctp_tcb *stcb, seq = ntohl(req->request_seq); if (asoc->str_reset_seq_in == seq) { asoc->last_reset_action[1] = stcb->asoc.last_reset_action[0]; - if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) { + if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } else { fwdtsn.ch.chunk_length = htons(sizeof(struct sctp_forward_tsn_chunk)); @@ -4051,7 +4176,7 @@ sctp_handle_str_reset_request_out(struct sctp_tcb *stcb, /* move the reset action back one */ asoc->last_reset_action[1] = asoc->last_reset_action[0]; - if (!(asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ)) { + if ((asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ) == 0) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } else if (trunc) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; @@ -4076,11 +4201,12 @@ sctp_handle_str_reset_request_out(struct sctp_tcb *stcb, sctp_add_stream_reset_result(chk, seq, asoc->last_reset_action[0]); return; } + liste->seq = seq; liste->tsn = tsn; liste->number_entries = number_entries; memcpy(&liste->list_of_streams, req->list_of_streams, number_entries * sizeof(uint16_t)); TAILQ_INSERT_TAIL(&asoc->resetHead, liste, next_resp); - asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_PERFORMED; + asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_IN_PROGRESS; } sctp_add_stream_reset_result(chk, seq, asoc->last_reset_action[0]); asoc->str_reset_seq_in++; @@ -4122,7 +4248,7 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch if (asoc->str_reset_seq_in == seq) { num_stream += stcb->asoc.streamincnt; stcb->asoc.last_reset_action[1] = stcb->asoc.last_reset_action[0]; - if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) { + if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } else if ((num_stream > stcb->asoc.max_inbound_streams) || (num_stream > 0xffff)) { @@ -4145,20 +4271,28 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch /* copy off the old data */ for (i = 0; i < stcb->asoc.streamincnt; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); - stcb->asoc.strmin[i].stream_no = i; - stcb->asoc.strmin[i].last_sequence_delivered = oldstrm[i].last_sequence_delivered; + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); + stcb->asoc.strmin[i].sid = i; + stcb->asoc.strmin[i].last_mid_delivered = oldstrm[i].last_mid_delivered; stcb->asoc.strmin[i].delivery_started = oldstrm[i].delivery_started; + stcb->asoc.strmin[i].pd_api_started = oldstrm[i].pd_api_started; /* now anything on those queues? */ - TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next, nctl) { - TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next); - TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next); + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next_instrm); + } + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].uno_inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].uno_inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].uno_inqueue, ctl, next_instrm); } } /* Init the new streams */ for (i = stcb->asoc.streamincnt; i < num_stream; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); - stcb->asoc.strmin[i].stream_no = i; - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); + stcb->asoc.strmin[i].sid = i; + stcb->asoc.strmin[i].last_mid_delivered = 0xffffffff; + stcb->asoc.strmin[i].pd_api_started = 0; stcb->asoc.strmin[i].delivery_started = 0; } SCTP_FREE(oldstrm, SCTP_M_STRMI); @@ -4183,7 +4317,6 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch sctp_add_stream_reset_result(chk, seq, asoc->last_reset_action[1]); } else { sctp_add_stream_reset_result(chk, seq, SCTP_STREAM_RESET_RESULT_ERR_BAD_SEQNO); - } } @@ -4206,7 +4339,7 @@ sctp_handle_str_reset_add_out_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk /* Now what would be the new total? */ if (asoc->str_reset_seq_in == seq) { stcb->asoc.last_reset_action[1] = stcb->asoc.last_reset_action[0]; - if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) { + if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) { asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } else if (stcb->asoc.stream_reset_outstanding) { /* We must reject it we have something pending */ @@ -4218,7 +4351,7 @@ sctp_handle_str_reset_add_out_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk mychk += num_stream; if (mychk < 0x10000) { stcb->asoc.last_reset_action[0] = SCTP_STREAM_RESET_RESULT_PERFORMED; - if (sctp_send_str_reset_req(stcb, 0, NULL, 0, 0, 0, 1, num_stream, 0, 1)) { + if (sctp_send_str_reset_req(stcb, 0, NULL, 0, 0, 1, num_stream, 0, 1)) { stcb->asoc.last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED; } } else { @@ -4244,11 +4377,9 @@ sctp_handle_str_reset_add_out_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk } } -#if !defined(__Panda__) #ifdef __GNUC__ __attribute__ ((noinline)) #endif -#endif static int sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, struct sctp_chunkhdr *ch_req) @@ -4424,110 +4555,122 @@ sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, * Handle a router or endpoints report of a packet loss, there are two ways * to handle this, either we get the whole packet and must disect it * ourselves (possibly with truncation and or corruption) or it is a summary - * from a middle box that did the disectting for us. + * from a middle box that did the disecting for us. */ static void sctp_handle_packet_dropped(struct sctp_pktdrop_chunk *cp, struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t limit) { - uint32_t bottle_bw, on_queue; - uint16_t trunc_len; - unsigned int chlen; - unsigned int at; struct sctp_chunk_desc desc; - struct sctp_chunkhdr *ch; - - chlen = ntohs(cp->ch.chunk_length); - chlen -= sizeof(struct sctp_pktdrop_chunk); - /* XXX possible chlen underflow */ - if (chlen == 0) { - ch = NULL; - if (cp->ch.chunk_flags & SCTP_FROM_MIDDLE_BOX) + struct sctp_chunkhdr *chk_hdr; + struct sctp_data_chunk *data_chunk; + struct sctp_idata_chunk *idata_chunk; + uint32_t bottle_bw, on_queue; + uint32_t offset, chk_len; + uint16_t pktdrp_len; + uint8_t pktdrp_flags; + + KASSERT(sizeof(struct sctp_pktdrop_chunk) <= limit, + ("PKTDROP chunk too small")); + pktdrp_flags = cp->ch.chunk_flags; + pktdrp_len = ntohs(cp->ch.chunk_length); + KASSERT(limit <= pktdrp_len, ("Inconsistent limit")); + if (pktdrp_flags & SCTP_PACKET_TRUNCATED) { + if (ntohs(cp->trunc_len) <= pktdrp_len - sizeof(struct sctp_pktdrop_chunk)) { + /* The peer plays games with us. */ + return; + } + } + limit -= sizeof(struct sctp_pktdrop_chunk); + offset = 0; + if (offset == limit) { + if (pktdrp_flags & SCTP_FROM_MIDDLE_BOX) { SCTP_STAT_INCR(sctps_pdrpbwrpt); + } + } else if (offset + sizeof(struct sctphdr) > limit) { + /* Only a partial SCTP common header. */ + SCTP_STAT_INCR(sctps_pdrpcrupt); + offset = limit; } else { - ch = (struct sctp_chunkhdr *)(cp->data + sizeof(struct sctphdr)); - chlen -= sizeof(struct sctphdr); - /* XXX possible chlen underflow */ - memset(&desc, 0, sizeof(desc)); + /* XXX: Check embedded SCTP common header. */ + offset += sizeof(struct sctphdr); } - trunc_len = (uint16_t) ntohs(cp->trunc_len); - if (trunc_len > limit) { - trunc_len = limit; - } - - /* now the chunks themselves */ - while ((ch != NULL) && (chlen >= sizeof(struct sctp_chunkhdr))) { - desc.chunk_type = ch->chunk_type; - /* get amount we need to move */ - at = ntohs(ch->chunk_length); - if (at < sizeof(struct sctp_chunkhdr)) { - /* corrupt chunk, maybe at the end? */ + /* Now parse through the chunks themselves. */ + while (offset < limit) { + if (offset + sizeof(struct sctp_chunkhdr) > limit) { SCTP_STAT_INCR(sctps_pdrpcrupt); break; } - if (trunc_len == 0) { - /* we are supposed to have all of it */ - if (at > chlen) { - /* corrupt skip it */ - SCTP_STAT_INCR(sctps_pdrpcrupt); + chk_hdr = (struct sctp_chunkhdr *)(cp->data + offset); + desc.chunk_type = chk_hdr->chunk_type; + /* get amount we need to move */ + chk_len = (uint32_t)ntohs(chk_hdr->chunk_length); + if (chk_len < sizeof(struct sctp_chunkhdr)) { + /* Someone is lying... */ + break; + } + if (desc.chunk_type == SCTP_DATA) { + if (stcb->asoc.idata_supported) { + /* Some is playing games with us. */ break; } - } else { - /* is there enough of it left ? */ - if (desc.chunk_type == SCTP_DATA) { - if (chlen < (sizeof(struct sctp_data_chunk) + - sizeof(desc.data_bytes))) { - break; - } - } else { - if (chlen < sizeof(struct sctp_chunkhdr)) { - break; - } + if (chk_len <= sizeof(struct sctp_data_chunk)) { + /* Some is playing games with us. */ + break; } - } - if (desc.chunk_type == SCTP_DATA) { - /* can we get out the tsn? */ - if ((cp->ch.chunk_flags & SCTP_FROM_MIDDLE_BOX)) + if (chk_len < sizeof(struct sctp_data_chunk) + SCTP_NUM_DB_TO_VERIFY) { + /* Not enough data bytes available in the chunk. */ + SCTP_STAT_INCR(sctps_pdrpnedat); + goto next_chunk; + } + if (offset + sizeof(struct sctp_data_chunk) + SCTP_NUM_DB_TO_VERIFY > limit) { + /* Not enough data in buffer. */ + break; + } + data_chunk = (struct sctp_data_chunk *)(cp->data + offset); + memcpy(desc.data_bytes, data_chunk + 1, SCTP_NUM_DB_TO_VERIFY); + desc.tsn_ifany = data_chunk->dp.tsn; + if (pktdrp_flags & SCTP_FROM_MIDDLE_BOX) { SCTP_STAT_INCR(sctps_pdrpmbda); - - if (chlen >= (sizeof(struct sctp_data_chunk) + sizeof(uint32_t))) { - /* yep */ - struct sctp_data_chunk *dcp; - uint8_t *ddp; - unsigned int iii; - - dcp = (struct sctp_data_chunk *)ch; - ddp = (uint8_t *) (dcp + 1); - for (iii = 0; iii < sizeof(desc.data_bytes); iii++) { - desc.data_bytes[iii] = ddp[iii]; - } - desc.tsn_ifany = dcp->dp.tsn; - } else { - /* nope we are done. */ + } + } else if (desc.chunk_type == SCTP_IDATA) { + if (!stcb->asoc.idata_supported) { + /* Some is playing games with us. */ + break; + } + if (chk_len <= sizeof(struct sctp_idata_chunk)) { + /* Some is playing games with us. */ + break; + } + if (chk_len < sizeof(struct sctp_idata_chunk) + SCTP_NUM_DB_TO_VERIFY) { + /* Not enough data bytes available in the chunk. */ SCTP_STAT_INCR(sctps_pdrpnedat); + goto next_chunk; + } + if (offset + sizeof(struct sctp_idata_chunk) + SCTP_NUM_DB_TO_VERIFY > limit) { + /* Not enough data in buffer. */ break; } + idata_chunk = (struct sctp_idata_chunk *)(cp->data + offset); + memcpy(desc.data_bytes, idata_chunk + 1, SCTP_NUM_DB_TO_VERIFY); + desc.tsn_ifany = idata_chunk->dp.tsn; + if (pktdrp_flags & SCTP_FROM_MIDDLE_BOX) { + SCTP_STAT_INCR(sctps_pdrpmbda); + } } else { - if ((cp->ch.chunk_flags & SCTP_FROM_MIDDLE_BOX)) + if (pktdrp_flags & SCTP_FROM_MIDDLE_BOX) { SCTP_STAT_INCR(sctps_pdrpmbct); + } } - - if (process_chunk_drop(stcb, &desc, net, cp->ch.chunk_flags)) { + if (process_chunk_drop(stcb, &desc, net, pktdrp_flags)) { SCTP_STAT_INCR(sctps_pdrppdbrk); break; } - if (SCTP_SIZE32(at) > chlen) { - break; - } - chlen -= SCTP_SIZE32(at); - if (chlen < sizeof(struct sctp_chunkhdr)) { - /* done, none left */ - break; - } - ch = (struct sctp_chunkhdr *)((caddr_t)ch + SCTP_SIZE32(at)); +next_chunk: + offset += SCTP_SIZE32(chk_len); } /* Now update any rwnd --- possibly */ - if ((cp->ch.chunk_flags & SCTP_FROM_MIDDLE_BOX) == 0) { + if ((pktdrp_flags & SCTP_FROM_MIDDLE_BOX) == 0) { /* From a peer, we get a rwnd report */ uint32_t a_rwnd; @@ -4563,11 +4706,11 @@ sctp_handle_packet_dropped(struct sctp_pktdrop_chunk *cp, } /* now middle boxes in sat networks get a cwnd bump */ - if ((cp->ch.chunk_flags & SCTP_FROM_MIDDLE_BOX) && + if ((pktdrp_flags & SCTP_FROM_MIDDLE_BOX) && (stcb->asoc.sat_t3_loss_recovery == 0) && (stcb->asoc.sat_network)) { /* - * This is debateable but for sat networks it makes sense + * This is debatable but for sat networks it makes sense * Note if a T3 timer has went off, we will prohibit any * changes to cwnd until we exit the t3 loss recovery. */ @@ -4585,18 +4728,16 @@ sctp_handle_packet_dropped(struct sctp_pktdrop_chunk *cp, * cookie-echo processing - return NULL to discard the packet (ie. no asoc, * bad packet,...) otherwise return the tcb for this packet */ -#if !defined(__Panda__) #ifdef __GNUC__ __attribute__ ((noinline)) #endif -#endif static struct sctp_tcb * sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_chunkhdr *ch, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets **netp, int *fwd_tsn_seen, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { @@ -4605,53 +4746,51 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, char msg[SCTP_DIAG_INFO_LEN]; uint32_t vtag_in; int num_chunks = 0; /* number of control chunks processed */ - uint32_t chk_length; + uint32_t chk_length, contiguous; int ret; int abort_no_unlock = 0; int ecne_seen = 0; + int abort_flag; /* * How big should this be, and should it be alloc'd? Lets try the * d-mtu-ceiling for now (2k) and that should hopefully work ... * until we get into jumbo grams and such.. */ uint8_t chunk_buf[SCTP_CHUNK_BUFFER_SIZE]; - struct sctp_tcb *locked_tcb = stcb; int got_auth = 0; uint32_t auth_offset = 0, auth_len = 0; int auth_skipped = 0; int asconf_cnt = 0; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_control: iphlen=%u, offset=%u, length=%u stcb:%p\n", iphlen, *offset, length, (void *)stcb); + if (stcb) { + SCTP_TCB_LOCK_ASSERT(stcb); + } /* validate chunk header length... */ if (ntohs(ch->chunk_length) < sizeof(*ch)) { SCTPDBG(SCTP_DEBUG_INPUT1, "Invalid header length %d\n", ntohs(ch->chunk_length)); - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + *offset = length; + return (stcb); } /* * validate the verification tag */ vtag_in = ntohl(sh->v_tag); - if (locked_tcb) { - SCTP_TCB_LOCK_ASSERT(locked_tcb); - } if (ch->chunk_type == SCTP_INITIATION) { SCTPDBG(SCTP_DEBUG_INPUT1, "Its an INIT of len:%d vtag:%x\n", ntohs(ch->chunk_length), vtag_in); if (vtag_in != 0) { /* protocol error- silently discard... */ SCTP_STAT_INCR(sctps_badvtag); - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); } return (NULL); } @@ -4674,9 +4813,6 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if (*offset >= length) { /* no more data left in the mbuf chain */ *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } return (NULL); } ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, @@ -4685,10 +4821,7 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if (ch == NULL) { /* Help */ *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); } if (ch->chunk_type == SCTP_COOKIE_ECHO) { goto process_control_chunks; @@ -4725,8 +4858,6 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, * sctp_findassociation_ep_asconf(). */ SCTP_INP_DECR_REF(inp); - } else { - locked_tcb = stcb; } /* now go back and verify any auth chunk to be sure */ @@ -4734,9 +4865,7 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, struct sctp_auth_chunk *auth; if (auth_len <= SCTP_CHUNK_BUFFER_SIZE) { - auth = (struct sctp_auth_chunk *) - sctp_m_getptr(m, auth_offset, - auth_len, chunk_buf); + auth = (struct sctp_auth_chunk *)sctp_m_getptr(m, auth_offset, auth_len, chunk_buf); got_auth = 1; auth_skipped = 0; } else { @@ -4746,10 +4875,7 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, auth_offset)) { /* auth HMAC failed so dump it */ *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); } else { /* remaining chunks are HMAC checked */ stcb->asoc.authenticated = 1; @@ -4757,19 +4883,16 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, } } if (stcb == NULL) { - snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); + SCTP_SNPRINTF(msg, sizeof(msg), "OOTB, %s:%d at %s", __FILE__, __LINE__, __func__); op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), msg); /* no association, so it's out of the blue... */ sctp_handle_ootb(m, iphlen, *offset, src, dst, sh, inp, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } return (NULL); } asoc = &stcb->asoc; @@ -4781,39 +4904,17 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if ((((ch->chunk_flags & SCTP_HAD_NO_TCB) == 0) && (vtag_in == asoc->my_vtag)) || (((ch->chunk_flags & SCTP_HAD_NO_TCB) == SCTP_HAD_NO_TCB) && + (asoc->peer_vtag != htonl(0)) && (vtag_in == asoc->peer_vtag))) { /* this is valid */ } else { /* drop this packet... */ SCTP_STAT_INCR(sctps_badvtag); - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); } return (NULL); } - } else if (ch->chunk_type == SCTP_SHUTDOWN_ACK) { - if (vtag_in != asoc->my_vtag) { - /* - * this could be a stale SHUTDOWN-ACK or the - * peer never got the SHUTDOWN-COMPLETE and - * is still hung; we have started a new asoc - * but it won't complete until the shutdown - * is completed - */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); - op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), - msg); - sctp_handle_ootb(m, iphlen, *offset, src, dst, - sh, inp, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); - return (NULL); - } } else { /* for all other chunks, vtag must match */ if (vtag_in != asoc->my_vtag) { @@ -4822,8 +4923,8 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, "invalid vtag: %xh, expect %xh\n", vtag_in, asoc->my_vtag); SCTP_STAT_INCR(sctps_badvtag); - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); } *offset = length; return (NULL); @@ -4836,16 +4937,8 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if (((ch->chunk_type == SCTP_SELECTIVE_ACK) || (ch->chunk_type == SCTP_NR_SELECTIVE_ACK) || (ch->chunk_type == SCTP_HEARTBEAT_REQUEST)) && - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED)) { + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { /* implied cookie-ack.. we must have lost the ack */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; sctp_handle_cookie_ack((struct sctp_cookie_ack_chunk *)ch, stcb, *netp); } @@ -4860,66 +4953,33 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if (chk_length < sizeof(*ch) || (*offset + (int)chk_length) > length) { *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); } SCTP_STAT_INCR_COUNTER64(sctps_incontrolchunks); /* - * INIT-ACK only gets the init ack "header" portion only - * because we don't have to process the peer's COOKIE. All - * others get a complete chunk. + * INIT and INIT-ACK only gets the init ack "header" portion + * only because we don't have to process the peer's COOKIE. + * All others get a complete chunk. */ - if ((ch->chunk_type == SCTP_INITIATION_ACK) || - (ch->chunk_type == SCTP_INITIATION)) { - /* get an init-ack chunk */ - ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_init_ack_chunk), chunk_buf); - if (ch == NULL) { - *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); - } - } else { - /* For cookies and all other chunks. */ - if (chk_length > sizeof(chunk_buf)) { - /* - * use just the size of the chunk buffer - * so the front part of our chunks fit in - * contiguous space up to the chunk buffer - * size (508 bytes). - * For chunks that need to get more than that - * they must use the sctp_m_getptr() function - * or other means (e.g. know how to parse mbuf - * chains). Cookies do this already. - */ - ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, - (sizeof(chunk_buf) - 4), - chunk_buf); - if (ch == NULL) { - *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); - } - } else { - /* We can fit it all */ - ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, - chk_length, chunk_buf); - if (ch == NULL) { - SCTP_PRINTF("sctp_process_control: Can't get the all data....\n"); - *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); - } - } + switch (ch->chunk_type) { + case SCTP_INITIATION: + contiguous = sizeof(struct sctp_init_chunk); + break; + case SCTP_INITIATION_ACK: + contiguous = sizeof(struct sctp_init_ack_chunk); + break; + default: + contiguous = min(chk_length, sizeof(chunk_buf)); + break; + } + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + contiguous, + chunk_buf); + if (ch == NULL) { + *offset = length; + return (stcb); } + num_chunks++; /* Save off the last place we got a control from */ if (stcb != NULL) { @@ -4939,7 +4999,6 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, /* check to see if this chunk required auth, but isn't */ if ((stcb != NULL) && - (stcb->asoc.auth_supported == 1) && sctp_auth_is_required_chunk(ch->chunk_type, stcb->asoc.local_auth_chunks) && !stcb->asoc.authenticated) { /* "silently" ignore */ @@ -4952,58 +5011,52 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, /* The INIT chunk must be the only chunk. */ if ((num_chunks > 1) || (length - *offset > (int)SCTP_SIZE32(chk_length))) { - op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), - "INIT not the only chunk"); - sctp_abort_association(inp, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); + /* + * RFC 4960bis requires stopping the + * processing of the packet. + */ *offset = length; - return (NULL); + return (stcb); } /* Honor our resource limit. */ if (chk_length > SCTP_LARGEST_INIT_ACCEPTED) { op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); - sctp_abort_association(inp, stcb, m, iphlen, - src, dst, sh, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, + sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif - vrf_id, port); + vrf_id, port); *offset = length; + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } return (NULL); } sctp_handle_init(m, iphlen, *offset, src, dst, sh, (struct sctp_init_chunk *)ch, inp, - stcb, &abort_no_unlock, -#if defined(__FreeBSD__) + stcb, *netp, +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); *offset = length; - if ((!abort_no_unlock) && (locked_tcb)) { - SCTP_TCB_UNLOCK(locked_tcb); + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); } return (NULL); break; case SCTP_PAD_CHUNK: break; case SCTP_INITIATION_ACK: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_INIT-ACK\n"); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_INIT_ACK\n"); if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { /* We are not interested anymore */ - if ((stcb) && (stcb->asoc.total_output_queue_size)) { + if ((stcb != NULL) && (stcb->asoc.total_output_queue_size)) { ; } else { - if (locked_tcb != stcb) { - /* Very unlikely */ - SCTP_TCB_UNLOCK(locked_tcb); - } *offset = length; - if (stcb) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + if (stcb != NULL) { +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -5011,8 +5064,9 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_27); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_29); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } @@ -5023,18 +5077,15 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if ((num_chunks > 1) || (length - *offset > (int)SCTP_SIZE32(chk_length))) { *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); } - if ((netp) && (*netp)) { + if ((netp != NULL) && (*netp != NULL)) { ret = sctp_handle_init_ack(m, iphlen, *offset, src, dst, sh, (struct sctp_init_ack_chunk *)ch, stcb, *netp, &abort_no_unlock, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id); @@ -5052,44 +5103,57 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, if ((stcb != NULL) && (ret == 0)) { sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_CONTROL_PROC, SCTP_SO_NOT_LOCKED); } - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); break; case SCTP_SELECTIVE_ACK: - { - struct sctp_sack_chunk *sack; - int abort_now = 0; - uint32_t a_rwnd, cum_ack; - uint16_t num_seg, num_dup; - uint8_t flags; - int offset_seg, offset_dup; - - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SACK\n"); - SCTP_STAT_INCR(sctps_recvsacks); - if (stcb == NULL) { - SCTPDBG(SCTP_DEBUG_INDATA1, "No stcb when processing SACK chunk\n"); - break; - } + case SCTP_NR_SELECTIVE_ACK: + { + int abort_now = 0; + uint32_t a_rwnd, cum_ack; + uint16_t num_seg, num_nr_seg, num_dup; + uint8_t flags; + int offset_seg, offset_dup; + + SCTPDBG(SCTP_DEBUG_INPUT3, "%s\n", + ch->chunk_type == SCTP_SELECTIVE_ACK ? "SCTP_SACK" : "SCTP_NR_SACK"); + SCTP_STAT_INCR(sctps_recvsacks); + if (stcb == NULL) { + SCTPDBG(SCTP_DEBUG_INDATA1, "No stcb when processing %s chunk\n", + (ch->chunk_type == SCTP_SELECTIVE_ACK) ? "SCTP_SACK" : "SCTP_NR_SACK"); + break; + } + if (ch->chunk_type == SCTP_SELECTIVE_ACK) { if (chk_length < sizeof(struct sctp_sack_chunk)) { SCTPDBG(SCTP_DEBUG_INDATA1, "Bad size on SACK chunk, too small\n"); break; } - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) { - /*- - * If we have sent a shutdown-ack, we will pay no - * attention to a sack sent in to us since - * we don't care anymore. - */ + } else { + if (stcb->asoc.nrsack_supported == 0) { + goto unknown_chunk; + } + if (chk_length < sizeof(struct sctp_nr_sack_chunk)) { + SCTPDBG(SCTP_DEBUG_INDATA1, "Bad size on NR_SACK chunk, too small\n"); break; } + } + if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) { + /*- + * If we have sent a shutdown-ack, we will pay no + * attention to a sack sent in to us since + * we don't care anymore. + */ + break; + } + flags = ch->chunk_flags; + if (ch->chunk_type == SCTP_SELECTIVE_ACK) { + struct sctp_sack_chunk *sack; + sack = (struct sctp_sack_chunk *)ch; - flags = ch->chunk_flags; cum_ack = ntohl(sack->sack.cum_tsn_ack); num_seg = ntohs(sack->sack.num_gap_ack_blks); + num_nr_seg = 0; num_dup = ntohs(sack->sack.num_dup_tsns); - a_rwnd = (uint32_t) ntohl(sack->sack.a_rwnd); + a_rwnd = ntohl(sack->sack.a_rwnd); if (sizeof(struct sctp_sack_chunk) + num_seg * sizeof(struct sctp_gap_ack_block) + num_dup * sizeof(uint32_t) != chk_length) { @@ -5098,78 +5162,15 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, } offset_seg = *offset + sizeof(struct sctp_sack_chunk); offset_dup = offset_seg + num_seg * sizeof(struct sctp_gap_ack_block); - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SACK process cum_ack:%x num_seg:%d a_rwnd:%d\n", - cum_ack, num_seg, a_rwnd); - stcb->asoc.seen_a_sack_this_pkt = 1; - if ((stcb->asoc.pr_sctp_cnt == 0) && - (num_seg == 0) && - SCTP_TSN_GE(cum_ack, stcb->asoc.last_acked_seq) && - (stcb->asoc.saw_sack_with_frags == 0) && - (stcb->asoc.saw_sack_with_nr_frags == 0) && - (!TAILQ_EMPTY(&stcb->asoc.sent_queue)) - ) { - /* We have a SIMPLE sack having no prior segments and - * data on sent queue to be acked.. Use the faster - * path sack processing. We also allow window update - * sacks with no missing segments to go this way too. - */ - sctp_express_handle_sack(stcb, cum_ack, a_rwnd, &abort_now, ecne_seen); - } else { - if (netp && *netp) - sctp_handle_sack(m, offset_seg, offset_dup, stcb, - num_seg, 0, num_dup, &abort_now, flags, - cum_ack, a_rwnd, ecne_seen); - } - if (abort_now) { - /* ABORT signal from sack processing */ - *offset = length; - return (NULL); - } - if (TAILQ_EMPTY(&stcb->asoc.send_queue) && - TAILQ_EMPTY(&stcb->asoc.sent_queue) && - (stcb->asoc.stream_queue_cnt == 0)) { - sctp_ulp_notify(SCTP_NOTIFY_SENDER_DRY, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); - } - } - break; - /* EY - nr_sack: If the received chunk is an nr_sack chunk */ - case SCTP_NR_SELECTIVE_ACK: - { + } else { struct sctp_nr_sack_chunk *nr_sack; - int abort_now = 0; - uint32_t a_rwnd, cum_ack; - uint16_t num_seg, num_nr_seg, num_dup; - uint8_t flags; - int offset_seg, offset_dup; - - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_NR_SACK\n"); - SCTP_STAT_INCR(sctps_recvsacks); - if (stcb == NULL) { - SCTPDBG(SCTP_DEBUG_INDATA1, "No stcb when processing NR-SACK chunk\n"); - break; - } - if (stcb->asoc.nrsack_supported == 0) { - goto unknown_chunk; - } - if (chk_length < sizeof(struct sctp_nr_sack_chunk)) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Bad size on NR-SACK chunk, too small\n"); - break; - } - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) { - /*- - * If we have sent a shutdown-ack, we will pay no - * attention to a sack sent in to us since - * we don't care anymore. - */ - break; - } + nr_sack = (struct sctp_nr_sack_chunk *)ch; - flags = ch->chunk_flags; cum_ack = ntohl(nr_sack->nr_sack.cum_tsn_ack); num_seg = ntohs(nr_sack->nr_sack.num_gap_ack_blks); num_nr_seg = ntohs(nr_sack->nr_sack.num_nr_gap_ack_blks); num_dup = ntohs(nr_sack->nr_sack.num_dup_tsns); - a_rwnd = (uint32_t) ntohl(nr_sack->nr_sack.a_rwnd); + a_rwnd = ntohl(nr_sack->nr_sack.a_rwnd); if (sizeof(struct sctp_nr_sack_chunk) + (num_seg + num_nr_seg) * sizeof(struct sctp_gap_ack_block) + num_dup * sizeof(uint32_t) != chk_length) { @@ -5177,112 +5178,92 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, break; } offset_seg = *offset + sizeof(struct sctp_nr_sack_chunk); - offset_dup = offset_seg + num_seg * sizeof(struct sctp_gap_ack_block); - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_NR_SACK process cum_ack:%x num_seg:%d a_rwnd:%d\n", - cum_ack, num_seg, a_rwnd); - stcb->asoc.seen_a_sack_this_pkt = 1; - if ((stcb->asoc.pr_sctp_cnt == 0) && - (num_seg == 0) && (num_nr_seg == 0) && - SCTP_TSN_GE(cum_ack, stcb->asoc.last_acked_seq) && - (stcb->asoc.saw_sack_with_frags == 0) && - (stcb->asoc.saw_sack_with_nr_frags == 0) && - (!TAILQ_EMPTY(&stcb->asoc.sent_queue))) { - /* - * We have a SIMPLE sack having no - * prior segments and data on sent - * queue to be acked. Use the - * faster path sack processing. We - * also allow window update sacks - * with no missing segments to go - * this way too. - */ - sctp_express_handle_sack(stcb, cum_ack, a_rwnd, - &abort_now, ecne_seen); - } else { - if (netp && *netp) - sctp_handle_sack(m, offset_seg, offset_dup, stcb, - num_seg, num_nr_seg, num_dup, &abort_now, flags, - cum_ack, a_rwnd, ecne_seen); - } - if (abort_now) { - /* ABORT signal from sack processing */ - *offset = length; - return (NULL); - } - if (TAILQ_EMPTY(&stcb->asoc.send_queue) && - TAILQ_EMPTY(&stcb->asoc.sent_queue) && - (stcb->asoc.stream_queue_cnt == 0)) { - sctp_ulp_notify(SCTP_NOTIFY_SENDER_DRY, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); + offset_dup = offset_seg + (num_seg + num_nr_seg) * sizeof(struct sctp_gap_ack_block); + } + SCTPDBG(SCTP_DEBUG_INPUT3, "%s process cum_ack:%x num_seg:%d a_rwnd:%d\n", + (ch->chunk_type == SCTP_SELECTIVE_ACK) ? "SCTP_SACK" : "SCTP_NR_SACK", + cum_ack, num_seg, a_rwnd); + stcb->asoc.seen_a_sack_this_pkt = 1; + if ((stcb->asoc.pr_sctp_cnt == 0) && + (num_seg == 0) && (num_nr_seg == 0) && + SCTP_TSN_GE(cum_ack, stcb->asoc.last_acked_seq) && + (stcb->asoc.saw_sack_with_frags == 0) && + (stcb->asoc.saw_sack_with_nr_frags == 0) && + (!TAILQ_EMPTY(&stcb->asoc.sent_queue))) { + /* + * We have a SIMPLE sack having no + * prior segments and data on sent + * queue to be acked. Use the + * faster path sack processing. We + * also allow window update sacks + * with no missing segments to go + * this way too. + */ + sctp_express_handle_sack(stcb, cum_ack, a_rwnd, + &abort_now, ecne_seen); + } else { + if ((netp != NULL) && (*netp != NULL)) { + sctp_handle_sack(m, offset_seg, offset_dup, stcb, + num_seg, num_nr_seg, num_dup, &abort_now, flags, + cum_ack, a_rwnd, ecne_seen); } } + if (abort_now) { + /* ABORT signal from sack processing */ + *offset = length; + return (NULL); + } + if (TAILQ_EMPTY(&stcb->asoc.send_queue) && + TAILQ_EMPTY(&stcb->asoc.sent_queue) && + (stcb->asoc.stream_queue_cnt == 0)) { + sctp_ulp_notify(SCTP_NOTIFY_SENDER_DRY, stcb, 0, NULL, SCTP_SO_NOT_LOCKED); + } break; - + } case SCTP_HEARTBEAT_REQUEST: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_HEARTBEAT\n"); - if ((stcb) && netp && *netp) { + if ((stcb != NULL) && (netp != NULL) && (*netp != NULL)) { SCTP_STAT_INCR(sctps_recvheartbeat); sctp_send_heartbeat_ack(stcb, m, *offset, - chk_length, *netp); - - /* He's alive so give him credit */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; + chk_length, *netp); } break; case SCTP_HEARTBEAT_ACK: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_HEARTBEAT-ACK\n"); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_HEARTBEAT_ACK\n"); if ((stcb == NULL) || (chk_length != sizeof(struct sctp_heartbeat_chunk))) { /* Its not ours */ - *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); - } - /* He's alive so give him credit */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); + break; } - stcb->asoc.overall_error_count = 0; SCTP_STAT_INCR(sctps_recvheartbeatack); - if (netp && *netp) + if ((netp != NULL) && (*netp != NULL)) { sctp_handle_heartbeat_ack((struct sctp_heartbeat_chunk *)ch, - stcb, *netp); + stcb, *netp); + } break; case SCTP_ABORT_ASSOCIATION: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ABORT, stcb %p\n", (void *)stcb); - if ((stcb) && netp && *netp) - sctp_handle_abort((struct sctp_abort_chunk *)ch, - stcb, *netp); *offset = length; - return (NULL); + if ((stcb != NULL) && (netp != NULL) && (*netp != NULL)) { + if (sctp_handle_abort((struct sctp_abort_chunk *)ch, stcb, *netp)) { + return (NULL); + } else { + return (stcb); + } + } else { + return (NULL); + } break; case SCTP_SHUTDOWN: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SHUTDOWN, stcb %p\n", (void *)stcb); if ((stcb == NULL) || (chk_length != sizeof(struct sctp_shutdown_chunk))) { - *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + break; } - if (netp && *netp) { - int abort_flag = 0; - + if ((netp != NULL) && (*netp != NULL)) { + abort_flag = 0; sctp_handle_shutdown((struct sctp_shutdown_chunk *)ch, - stcb, *netp, &abort_flag); + stcb, *netp, &abort_flag); if (abort_flag) { *offset = length; return (NULL); @@ -5290,51 +5271,69 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, } break; case SCTP_SHUTDOWN_ACK: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SHUTDOWN-ACK, stcb %p\n", (void *)stcb); - if ((stcb) && (netp) && (*netp)) + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SHUTDOWN_ACK, stcb %p\n", (void *)stcb); + if ((chk_length == sizeof(struct sctp_shutdown_ack_chunk)) && + (stcb != NULL) && (netp != NULL) && (*netp != NULL)) { sctp_handle_shutdown_ack((struct sctp_shutdown_ack_chunk *)ch, stcb, *netp); - *offset = length; - return (NULL); + *offset = length; + return (NULL); + } break; - case SCTP_OPERATION_ERROR: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_OP-ERR\n"); - if ((stcb) && netp && *netp && sctp_handle_error(ch, stcb, *netp) < 0) { + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_OP_ERR\n"); + if ((stcb != NULL) && (netp != NULL) && (*netp != NULL) && + sctp_handle_error(ch, stcb, *netp, contiguous) < 0) { *offset = length; return (NULL); } break; case SCTP_COOKIE_ECHO: SCTPDBG(SCTP_DEBUG_INPUT3, - "SCTP_COOKIE-ECHO, stcb %p\n", (void *)stcb); - if ((stcb) && (stcb->asoc.total_output_queue_size)) { + "SCTP_COOKIE_ECHO, stcb %p\n", (void *)stcb); + if ((stcb != NULL) && (stcb->asoc.total_output_queue_size > 0)) { ; } else { if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { /* We are not interested anymore */ abend: - if (stcb) { + if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } *offset = length; return (NULL); } } - /* + /*- * First are we accepting? We do this again here * since it is possible that a previous endpoint WAS * listening responded to a INIT-ACK and then * closed. We opened and bound.. and are now no * longer listening. + * + * XXXGL: notes on checking listen queue length. + * 1) SCTP_IS_LISTENING() doesn't necessarily mean + * SOLISTENING(), because a listening "UDP type" + * socket isn't listening in terms of the socket + * layer. It is a normal data flow socket, that + * can fork off new connections. Thus, we should + * look into sol_qlen only in case we are !UDP. + * 2) Checking sol_qlen in general requires locking + * the socket, and this code lacks that. */ - - if ((stcb == NULL) && (inp->sctp_socket->so_qlen >= inp->sctp_socket->so_qlimit)) { + if ((stcb == NULL) && + (!SCTP_IS_LISTENING(inp) || + (((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) == 0) && +#if defined(__FreeBSD__) && !defined(__Userspace__) + inp->sctp_socket->sol_qlen >= inp->sctp_socket->sol_qlimit))) { +#else + inp->sctp_socket->so_qlen >= inp->sctp_socket->so_qlimit))) { +#endif if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && (SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit))) { op_err = sctp_generate_cause(SCTP_CAUSE_OUT_OF_RESC, ""); sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); @@ -5344,22 +5343,27 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, } else { struct mbuf *ret_buf; struct sctp_inpcb *linp; + struct sctp_tmit_chunk *chk; + + if (inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE | + SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { + goto abend; + } + if (stcb) { linp = NULL; } else { linp = inp; } - if (linp) { + if (linp != NULL) { SCTP_ASOC_CREATE_LOCK(linp); - if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || - (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { - SCTP_ASOC_CREATE_UNLOCK(linp); - goto abend; - } } - if (netp) { + if (netp != NULL) { + struct sctp_tcb *locked_stcb; + + locked_stcb = stcb; ret_buf = sctp_handle_cookie_echo(m, iphlen, *offset, @@ -5370,22 +5374,28 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, auth_skipped, auth_offset, auth_len, - &locked_tcb, -#if defined(__FreeBSD__) + &locked_stcb, +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowtype, mflowid, #endif vrf_id, port); + if ((locked_stcb != NULL) && (locked_stcb != stcb)) { + SCTP_TCB_UNLOCK(locked_stcb); + } + if (stcb != NULL) { + SCTP_TCB_LOCK_ASSERT(stcb); + } } else { ret_buf = NULL; } - if (linp) { + if (linp != NULL) { SCTP_ASOC_CREATE_UNLOCK(linp); } if (ret_buf == NULL) { - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); } SCTPDBG(SCTP_DEBUG_INPUT3, "GAK, null buffer\n"); @@ -5397,32 +5407,28 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, got_auth = 1; auth_skipped = 0; } - if (!TAILQ_EMPTY(&stcb->asoc.sent_queue)) { - /* - * Restart the timer if we have - * pending data - */ - struct sctp_tmit_chunk *chk; - - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); + /* Restart the timer if we have pending data */ + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); } } break; case SCTP_COOKIE_ACK: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_COOKIE-ACK, stcb %p\n", (void *)stcb); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_COOKIE_ACK, stcb %p\n", (void *)stcb); if ((stcb == NULL) || chk_length != sizeof(struct sctp_cookie_ack_chunk)) { - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + break; } if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { /* We are not interested anymore */ if ((stcb) && (stcb->asoc.total_output_queue_size)) { ; } else if (stcb) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -5430,223 +5436,169 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_27); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_30); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif *offset = length; return (NULL); } } - /* He's alive so give him credit */ - if ((stcb) && netp && *netp) { - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; - sctp_handle_cookie_ack((struct sctp_cookie_ack_chunk *)ch,stcb, *netp); + if ((netp != NULL) && (*netp != NULL)) { + sctp_handle_cookie_ack((struct sctp_cookie_ack_chunk *)ch, stcb, *netp); } break; case SCTP_ECN_ECHO: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ECN-ECHO\n"); - /* He's alive so give him credit */ - if ((stcb == NULL) || (chk_length != sizeof(struct sctp_ecne_chunk))) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - *offset = length; - return (NULL); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ECN_ECHO\n"); + if (stcb == NULL) { + break; } - if (stcb) { - if (stcb->asoc.ecn_supported == 0) { - goto unknown_chunk; - } - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; - sctp_handle_ecn_echo((struct sctp_ecne_chunk *)ch, - stcb); - ecne_seen = 1; + if (stcb->asoc.ecn_supported == 0) { + goto unknown_chunk; + } + if ((chk_length != sizeof(struct sctp_ecne_chunk)) && + (chk_length != sizeof(struct old_sctp_ecne_chunk))) { + break; } + sctp_handle_ecn_echo((struct sctp_ecne_chunk *)ch, stcb); + ecne_seen = 1; break; case SCTP_ECN_CWR: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ECN-CWR\n"); - /* He's alive so give him credit */ - if ((stcb == NULL) || (chk_length != sizeof(struct sctp_cwr_chunk))) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - *offset = length; - return (NULL); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ECN_CWR\n"); + if (stcb == NULL) { + break; } - if (stcb) { - if (stcb->asoc.ecn_supported == 0) { - goto unknown_chunk; - } - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; - sctp_handle_ecn_cwr((struct sctp_cwr_chunk *)ch, stcb, *netp); + if (stcb->asoc.ecn_supported == 0) { + goto unknown_chunk; + } + if (chk_length != sizeof(struct sctp_cwr_chunk)) { + break; } + sctp_handle_ecn_cwr((struct sctp_cwr_chunk *)ch, stcb, *netp); break; case SCTP_SHUTDOWN_COMPLETE: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SHUTDOWN-COMPLETE, stcb %p\n", (void *)stcb); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_SHUTDOWN_COMPLETE, stcb %p\n", (void *)stcb); /* must be first and only chunk */ if ((num_chunks > 1) || (length - *offset > (int)SCTP_SIZE32(chk_length))) { *offset = length; - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - return (NULL); + return (stcb); } - if ((stcb) && netp && *netp) { + if ((chk_length == sizeof(struct sctp_shutdown_complete_chunk)) && + (stcb != NULL) && (netp != NULL) && (*netp != NULL)) { sctp_handle_shutdown_complete((struct sctp_shutdown_complete_chunk *)ch, - stcb, *netp); + stcb, *netp); + *offset = length; + return (NULL); } - *offset = length; - return (NULL); break; case SCTP_ASCONF: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ASCONF\n"); - /* He's alive so give him credit */ - if (stcb) { + if (stcb != NULL) { if (stcb->asoc.asconf_supported == 0) { goto unknown_chunk; } - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; sctp_handle_asconf(m, *offset, src, - (struct sctp_asconf_chunk *)ch, stcb, asconf_cnt == 0); + (struct sctp_asconf_chunk *)ch, stcb, asconf_cnt == 0); asconf_cnt++; } break; case SCTP_ASCONF_ACK: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ASCONF-ACK\n"); + SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_ASCONF_ACK\n"); + if (stcb == NULL) { + break; + } + if (stcb->asoc.asconf_supported == 0) { + goto unknown_chunk; + } if (chk_length < sizeof(struct sctp_asconf_ack_chunk)) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - *offset = length; - return (NULL); + break; } - if ((stcb) && netp && *netp) { - if (stcb->asoc.asconf_supported == 0) { - goto unknown_chunk; - } + if ((netp != NULL) && (*netp != NULL)) { /* He's alive so give him credit */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); + stcb->asoc.overall_error_count, + 0, + SCTP_FROM_SCTP_INPUT, + __LINE__); } stcb->asoc.overall_error_count = 0; sctp_handle_asconf_ack(m, *offset, - (struct sctp_asconf_ack_chunk *)ch, stcb, *netp, &abort_no_unlock); + (struct sctp_asconf_ack_chunk *)ch, stcb, *netp, &abort_no_unlock); if (abort_no_unlock) return (NULL); } break; case SCTP_FORWARD_CUM_TSN: - SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_FWD-TSN\n"); + case SCTP_IFORWARD_CUM_TSN: + SCTPDBG(SCTP_DEBUG_INPUT3, "%s\n", + ch->chunk_type == SCTP_FORWARD_CUM_TSN ? "FORWARD_TSN" : "I_FORWARD_TSN"); + if (stcb == NULL) { + break; + } + if (stcb->asoc.prsctp_supported == 0) { + goto unknown_chunk; + } if (chk_length < sizeof(struct sctp_forward_tsn_chunk)) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); + break; + } + if (((stcb->asoc.idata_supported == 1) && (ch->chunk_type == SCTP_FORWARD_CUM_TSN)) || + ((stcb->asoc.idata_supported == 0) && (ch->chunk_type == SCTP_IFORWARD_CUM_TSN))) { + if (ch->chunk_type == SCTP_FORWARD_CUM_TSN) { + SCTP_SNPRINTF(msg, sizeof(msg), "%s", "FORWARD-TSN chunk received when I-FORWARD-TSN was negotiated"); + } else { + SCTP_SNPRINTF(msg, sizeof(msg), "%s", "I-FORWARD-TSN chunk received when FORWARD-TSN was negotiated"); } + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); *offset = length; return (NULL); } - - /* He's alive so give him credit */ - if (stcb) { - int abort_flag = 0; - - if (stcb->asoc.prsctp_supported == 0) { - goto unknown_chunk; - } - stcb->asoc.overall_error_count = 0; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - *fwd_tsn_seen = 1; - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - /* We are not interested anymore */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - so = SCTP_INP_SO(inp); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); + *fwd_tsn_seen = 1; + if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + /* We are not interested anymore */ +#if defined(__APPLE__) && !defined(__Userspace__) + so = SCTP_INP_SO(inp); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT+SCTP_LOC_29); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_31); +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_UNLOCK(so, 1); #endif - *offset = length; - return (NULL); - } - sctp_handle_forward_tsn(stcb, - (struct sctp_forward_tsn_chunk *)ch, &abort_flag, m, *offset); - if (abort_flag) { - *offset = length; - return (NULL); - } else { - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; - } - + *offset = length; + return (NULL); + } + /* + * For sending a SACK this looks like DATA + * chunks. + */ + stcb->asoc.last_data_chunk_from = stcb->asoc.last_control_chunk_from; + abort_flag = 0; + sctp_handle_forward_tsn(stcb, + (struct sctp_forward_tsn_chunk *)ch, &abort_flag, m, *offset); + if (abort_flag) { + *offset = length; + return (NULL); } break; case SCTP_STREAM_RESET: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_STREAM_RESET\n"); - if (((stcb == NULL) || (ch == NULL) || (chk_length < sizeof(struct sctp_stream_reset_tsn_req)))) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - *offset = length; - return (NULL); + if (stcb == NULL) { + break; } if (stcb->asoc.reconfig_supported == 0) { goto unknown_chunk; } + if (chk_length < sizeof(struct sctp_stream_reset_tsn_req)) { + break; + } if (sctp_handle_stream_reset(stcb, m, *offset, ch)) { /* stop processing */ *offset = length; @@ -5655,27 +5607,20 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, break; case SCTP_PACKET_DROPPED: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_PACKET_DROPPED\n"); - /* re-get it all please */ + if (stcb == NULL) { + break; + } + if (stcb->asoc.pktdrop_supported == 0) { + goto unknown_chunk; + } if (chk_length < sizeof(struct sctp_pktdrop_chunk)) { - /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } - *offset = length; - return (NULL); + break; } - - - if (ch && (stcb) && netp && (*netp)) { - if (stcb->asoc.pktdrop_supported == 0) { - goto unknown_chunk; - } + if ((netp != NULL) && (*netp != NULL)) { sctp_handle_packet_dropped((struct sctp_pktdrop_chunk *)ch, - stcb, *netp, - min(chk_length, (sizeof(chunk_buf) - 4))); - + stcb, *netp, + min(chk_length, contiguous)); } - break; case SCTP_AUTHENTICATION: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_AUTHENTICATION\n"); @@ -5687,28 +5632,24 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, auth_skipped = 1; } /* skip this chunk (temporarily) */ - goto next_chunk; + break; } if (stcb->asoc.auth_supported == 0) { goto unknown_chunk; } if ((chk_length < (sizeof(struct sctp_auth_chunk))) || (chk_length > (sizeof(struct sctp_auth_chunk) + - SCTP_AUTH_DIGEST_LEN_MAX))) { + SCTP_AUTH_DIGEST_LEN_MAX))) { /* Its not ours */ - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } *offset = length; - return (NULL); + return (stcb); } if (got_auth == 1) { /* skip this chunk... it's already auth'd */ - goto next_chunk; + break; } got_auth = 1; - if ((ch == NULL) || sctp_handle_auth(stcb, (struct sctp_auth_chunk *)ch, - m, *offset)) { + if (sctp_handle_auth(stcb, (struct sctp_auth_chunk *)ch, m, *offset)) { /* auth HMAC failed so dump the packet */ *offset = length; return (stcb); @@ -5721,40 +5662,32 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, default: unknown_chunk: /* it's an unknown chunk! */ - if ((ch->chunk_type & 0x40) && (stcb != NULL)) { - struct mbuf *mm; - struct sctp_paramhdr *phd; + if ((ch->chunk_type & 0x40) && + (stcb != NULL) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_EMPTY) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_INUSE) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT)) { + struct sctp_gen_error_cause *cause; int len; - mm = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), - 0, M_NOWAIT, 1, MT_DATA); - if (mm) { + op_err = sctp_get_mbuf_for_msg(sizeof(struct sctp_gen_error_cause), + 0, M_NOWAIT, 1, MT_DATA); + if (op_err != NULL) { len = min(SCTP_SIZE32(chk_length), (uint32_t)(length - *offset)); - phd = mtod(mm, struct sctp_paramhdr *); - /* - * We cheat and use param type since - * we did not bother to define a - * error cause struct. They are the - * same basic format with different - * names. - */ - phd->param_type = htons(SCTP_CAUSE_UNRECOG_CHUNK); - phd->param_length = htons(len + sizeof(*phd)); - SCTP_BUF_LEN(mm) = sizeof(*phd); - SCTP_BUF_NEXT(mm) = SCTP_M_COPYM(m, *offset, len, M_NOWAIT); - if (SCTP_BUF_NEXT(mm)) { - if (sctp_pad_lastmbuf(SCTP_BUF_NEXT(mm), SCTP_SIZE32(len) - len, NULL) == NULL) { - sctp_m_freem(mm); - } else { + cause = mtod(op_err, struct sctp_gen_error_cause *); + cause->code = htons(SCTP_CAUSE_UNRECOG_CHUNK); + cause->length = htons((uint16_t)(len + sizeof(struct sctp_gen_error_cause))); + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_gen_error_cause); + SCTP_BUF_NEXT(op_err) = SCTP_M_COPYM(m, *offset, len, M_NOWAIT); + if (SCTP_BUF_NEXT(op_err) != NULL) { #ifdef SCTP_MBUF_LOGGING - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - sctp_log_mbc(SCTP_BUF_NEXT(mm), SCTP_MBUF_ICOPY); - } -#endif - sctp_queue_op_err(stcb, mm); + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { + sctp_log_mbc(SCTP_BUF_NEXT(op_err), SCTP_MBUF_ICOPY); } +#endif + sctp_queue_op_err(stcb, op_err); } else { - sctp_m_freem(mm); + sctp_m_freem(op_err); } } } @@ -5766,7 +5699,6 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, break; } /* switch (ch->chunk_type) */ - next_chunk: /* get the next chunk */ *offset += SCTP_SIZE32(chk_length); @@ -5775,48 +5707,19 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length, break; } ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_chunkhdr), chunk_buf); + sizeof(struct sctp_chunkhdr), chunk_buf); if (ch == NULL) { - if (locked_tcb) { - SCTP_TCB_UNLOCK(locked_tcb); - } *offset = length; - return (NULL); + return (stcb); } } /* while */ - if (asconf_cnt > 0 && stcb != NULL) { + if ((asconf_cnt > 0) && (stcb != NULL)) { sctp_send_asconf_ack(stcb); } return (stcb); } - -#ifdef INVARIANTS -#ifdef __GNUC__ -__attribute__((noinline)) -#endif -void -sctp_validate_no_locks(struct sctp_inpcb *inp) -{ -#ifndef __APPLE__ - struct sctp_tcb *lstcb; - - LIST_FOREACH(lstcb, &inp->sctp_asoc_list, sctp_tcblist) { - if (mtx_owned(&lstcb->tcb_mtx)) { - panic("Own lock on stcb at return from input"); - } - } - if (mtx_owned(&inp->inp_create_mtx)) { - panic("Own create lock on inp"); - } - if (mtx_owned(&inp->inp_mtx)) { - panic("Own inp lock on inp"); - } -#endif -} -#endif - /* * common input chunk processing (v4 and v6) */ @@ -5824,104 +5727,185 @@ void sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int length, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_chunkhdr *ch, -#if !defined(SCTP_WITH_NO_CSUM) uint8_t compute_crc, -#endif uint8_t ecn_bits, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { - uint32_t high_tsn; - int fwd_tsn_seen = 0, data_processed = 0; - struct mbuf *m = *mm, *op_err; char msg[SCTP_DIAG_INFO_LEN]; - int un_sent; - int cnt_ctrl_ready = 0; + struct mbuf *m = *mm, *op_err; struct sctp_inpcb *inp = NULL, *inp_decr = NULL; struct sctp_tcb *stcb = NULL; struct sctp_nets *net = NULL; +#if defined(__Userspace__) + struct socket *upcall_socket = NULL; +#endif + uint32_t high_tsn; + uint32_t cksum_in_hdr; + int un_sent; + int cnt_ctrl_ready = 0; + int fwd_tsn_seen = 0, data_processed = 0; + bool cksum_validated, stcb_looked_up; SCTP_STAT_INCR(sctps_recvdatagrams); #ifdef SCTP_AUDITING_ENABLED sctp_audit_log(0xE0, 1); sctp_auditing(0, inp, stcb, net); #endif -#if !defined(SCTP_WITH_NO_CSUM) + + stcb_looked_up = false; if (compute_crc != 0) { - uint32_t check, calc_check; - - check = sh->checksum; - sh->checksum = 0; - calc_check = sctp_calculate_cksum(m, iphlen); - sh->checksum = check; - if (calc_check != check) { - SCTPDBG(SCTP_DEBUG_INPUT1, "Bad CSUM on SCTP packet calc_check:%x check:%x m:%p mlen:%d iphlen:%d\n", - calc_check, check, (void *)m, length, iphlen); - stcb = sctp_findassociation_addr(m, offset, src, dst, - sh, ch, &inp, &net, vrf_id); + cksum_validated = false; + cksum_in_hdr = sh->checksum; + if (cksum_in_hdr != htonl(0)) { + uint32_t cksum_calculated; + +validate_cksum: + sh->checksum = 0; + cksum_calculated = sctp_calculate_cksum(m, iphlen); + sh->checksum = cksum_in_hdr; + if (cksum_calculated != cksum_in_hdr) { + if (stcb_looked_up) { + /* + * The packet has a zero checksum, which + * is not the correct CRC, no stcb has + * been found or an stcb has been found + * but an incorrect zero checksum is not + * acceptable. + */ + KASSERT(cksum_in_hdr == htonl(0), + ("cksum in header not zero: %x", + ntohl(cksum_in_hdr))); + if ((inp == NULL) && + (SCTP_BASE_SYSCTL(sctp_ootb_with_zero_cksum) == 1)) { + /* + * This is an OOTB packet, + * depending on the sysctl + * variable, pretend that the + * checksum is acceptable, + * to allow an appropriate + * response (ABORT, for examlpe) + * to be sent. + */ + KASSERT(stcb == NULL, + ("stcb is %p", stcb)); + SCTP_STAT_INCR(sctps_recvzerocrc); + goto cksum_validated; + } + } else { + stcb = sctp_findassociation_addr(m, offset, src, dst, + sh, ch, &inp, &net, vrf_id); + } + SCTPDBG(SCTP_DEBUG_INPUT1, "Bad cksum in SCTP packet:%x calculated:%x m:%p mlen:%d iphlen:%d\n", + ntohl(cksum_in_hdr), ntohl(cksum_calculated), (void *)m, length, iphlen); #if defined(INET) || defined(INET6) - if ((net != NULL) && (port != 0)) { - if (net->port == 0) { - sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr)); + if ((ch->chunk_type != SCTP_INITIATION) && + (net != NULL) && (net->port != port)) { + if (net->port == 0) { + /* UDP encapsulation turned on. */ + net->mtu -= sizeof(struct udphdr); + if (stcb->asoc.smallest_mtu > net->mtu) { + sctp_pathmtu_adjustment(stcb, net->mtu, true); + } + } else if (port == 0) { + /* UDP encapsulation turned off. */ + net->mtu += sizeof(struct udphdr); + /* XXX Update smallest_mtu */ + } + net->port = port; } - net->port = port; - } #endif -#if defined(__FreeBSD__) - if ((net != NULL) && (mflowtype != M_HASHTYPE_NONE)) { - net->flowtype = mflowtype; - } +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (net != NULL) { + net->flowtype = mflowtype; + net->flowid = mflowid; + } + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); #endif - if ((inp != NULL) && (stcb != NULL)) { - sctp_send_packet_dropped(stcb, net, m, length, iphlen, 1); - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_INPUT_ERROR, SCTP_SO_NOT_LOCKED); - } else if ((inp != NULL) && (stcb == NULL)) { - inp_decr = inp; + if ((inp != NULL) && (stcb != NULL)) { + if (stcb->asoc.pktdrop_supported) { + sctp_send_packet_dropped(stcb, net, m, length, iphlen, 1); + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_INPUT_ERROR, SCTP_SO_NOT_LOCKED); + } + } else if ((inp != NULL) && (stcb == NULL)) { + inp_decr = inp; + } + SCTP_STAT_INCR(sctps_badsum); + SCTP_STAT_INCR_COUNTER32(sctps_checksumerrors); + goto out; + } else { + cksum_validated = true; } - SCTP_STAT_INCR(sctps_badsum); - SCTP_STAT_INCR_COUNTER32(sctps_checksumerrors); - goto out; + } + KASSERT(cksum_validated || cksum_in_hdr == htonl(0), + ("cksum 0x%08x not zero and not validated", ntohl(cksum_in_hdr))); + if (!cksum_validated) { + stcb = sctp_findassociation_addr(m, offset, src, dst, + sh, ch, &inp, &net, vrf_id); + stcb_looked_up = true; + if ((stcb == NULL) || (stcb->asoc.zero_checksum == 0)) { + goto validate_cksum; + } + SCTP_STAT_INCR(sctps_recvzerocrc); } } -#endif +cksum_validated: /* Destination port of 0 is illegal, based on RFC4960. */ - if (sh->dest_port == 0) { + if (sh->dest_port == htons(0)) { SCTP_STAT_INCR(sctps_hdrops); + if ((stcb == NULL) && (inp != NULL)) { + inp_decr = inp; + } goto out; } - stcb = sctp_findassociation_addr(m, offset, src, dst, - sh, ch, &inp, &net, vrf_id); + if (!stcb_looked_up) { + stcb = sctp_findassociation_addr(m, offset, src, dst, + sh, ch, &inp, &net, vrf_id); + } #if defined(INET) || defined(INET6) - if ((net != NULL) && (port != 0)) { + if ((ch->chunk_type != SCTP_INITIATION) && + (net != NULL) && (net->port != port)) { if (net->port == 0) { - sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr)); + /* UDP encapsulation turned on. */ + net->mtu -= sizeof(struct udphdr); + if (stcb->asoc.smallest_mtu > net->mtu) { + sctp_pathmtu_adjustment(stcb, net->mtu, true); + } + } else if (port == 0) { + /* UDP encapsulation turned off. */ + net->mtu += sizeof(struct udphdr); + /* XXX Update smallest_mtu */ } net->port = port; } #endif -#if defined(__FreeBSD__) - if ((net != NULL) && (mflowtype != M_HASHTYPE_NONE)) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (net != NULL) { net->flowtype = mflowtype; + net->flowid = mflowid; } #endif if (inp == NULL) { SCTP_STAT_INCR(sctps_noport); -#if defined(__FreeBSD__) && (((__FreeBSD_version < 900000) && (__FreeBSD_version >= 804000)) || (__FreeBSD_version > 900000)) +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); if (badport_bandlim(BANDLIM_SCTP_OOTB) < 0) { goto out; } #endif if (ch->chunk_type == SCTP_SHUTDOWN_ACK) { + SCTP_STAT_INCR_COUNTER64(sctps_incontrolchunks); sctp_send_shutdown_complete2(src, dst, sh, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); goto out; } if (ch->chunk_type == SCTP_SHUTDOWN_COMPLETE) { + SCTP_STAT_INCR_COUNTER64(sctps_incontrolchunks); goto out; } if (ch->chunk_type != SCTP_ABORT_ASSOCIATION) { @@ -5932,8 +5916,8 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt "Out of the blue"); sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); } @@ -5942,34 +5926,6 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt } else if (stcb == NULL) { inp_decr = inp; } -#ifdef IPSEC - /*- - * I very much doubt any of the IPSEC stuff will work but I have no - * idea, so I will leave it in place. - */ - if (inp != NULL) { - switch (dst->sa_family) { -#ifdef INET - case AF_INET: - if (ipsec4_in_reject(m, &inp->ip_inp.inp)) { - SCTP_STAT_INCR(sctps_hdrops); - goto out; - } - break; -#endif -#ifdef INET6 - case AF_INET6: - if (ipsec6_in_reject(m, &inp->ip_inp.inp)) { - SCTP_STAT_INCR(sctps_hdrops); - goto out; - } - break; -#endif - default: - break; - } - } -#endif SCTPDBG(SCTP_DEBUG_INPUT1, "Ok, Common input processing called, m:%p iphlen:%d offset:%d length:%d stcb:%p\n", (void *)m, iphlen, offset, length, (void *)stcb); if (stcb) { @@ -5989,26 +5945,42 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt */ SCTP_TCB_UNLOCK(stcb); stcb = NULL; - snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); +#endif + SCTP_SNPRINTF(msg, sizeof(msg), "OOTB, %s:%d at %s", __FILE__, __LINE__, __func__); op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), msg); sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); goto out; } - } +#if defined(__Userspace__) + if ((stcb != NULL) && + ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + if (stcb->sctp_socket->so_head != NULL) { + upcall_socket = stcb->sctp_socket->so_head; + } else { + upcall_socket = stcb->sctp_socket; + } + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + } +#endif if (IS_SCTP_CONTROL(ch)) { /* process the control portion of the SCTP packet */ /* sa_ignore NO_NULL_CHK */ stcb = sctp_process_control(m, iphlen, &offset, length, src, dst, sh, ch, inp, stcb, &net, &fwd_tsn_seen, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); if (stcb) { @@ -6017,9 +5989,18 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt */ inp = stcb->sctp_ep; #if defined(INET) || defined(INET6) - if ((net) && (port)) { + if ((ch->chunk_type != SCTP_INITIATION) && + (net != NULL) && (net->port != port)) { if (net->port == 0) { - sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr)); + /* UDP encapsulation turned on. */ + net->mtu -= sizeof(struct udphdr); + if (stcb->asoc.smallest_mtu > net->mtu) { + sctp_pathmtu_adjustment(stcb, net->mtu, true); + } + } else if (port == 0) { + /* UDP encapsulation turned off. */ + net->mtu += sizeof(struct udphdr); + /* XXX Update smallest_mtu */ } net->port = port; } @@ -6037,31 +6018,42 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt * chunks */ if ((stcb != NULL) && - (stcb->asoc.auth_supported == 1) && sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.local_auth_chunks)) { /* "silently" ignore */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); +#endif SCTP_STAT_INCR(sctps_recvauthmissing); goto out; } if (stcb == NULL) { /* out of the blue DATA chunk */ - snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, NULL, m, NULL, sh); +#endif + SCTP_SNPRINTF(msg, sizeof(msg), "OOTB, %s:%d at %s", __FILE__, __LINE__, __func__); op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), msg); sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); goto out; } if (stcb->asoc.my_vtag != ntohl(sh->v_tag)) { /* v_tag mismatch! */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); +#endif SCTP_STAT_INCR(sctps_badvtag); goto out; } } +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(receive, NULL, stcb, m, stcb, sh); +#endif if (stcb == NULL) { /* * no valid TCB for this packet, or we found it's a bad @@ -6070,6 +6062,20 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt */ goto out; } +#if defined(__Userspace__) + if ((upcall_socket == NULL) && + ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + if (stcb->sctp_socket->so_head != NULL) { + upcall_socket = stcb->sctp_socket->so_head; + } else { + upcall_socket = stcb->sctp_socket; + } + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + } +#endif /* * DATA chunk processing @@ -6082,7 +6088,6 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt */ if ((length > offset) && (stcb != NULL) && - (stcb->asoc.auth_supported == 1) && sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.local_auth_chunks) && !stcb->asoc.authenticated) { /* "silently" ignore */ @@ -6099,33 +6104,25 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt * not get here unless we really did have a tag, so we don't * abort if this happens, just dump the chunk silently. */ - switch (SCTP_GET_STATE(&stcb->asoc)) { + switch (SCTP_GET_STATE(stcb)) { case SCTP_STATE_COOKIE_ECHOED: /* * we consider data with valid tags in this state * shows us the cookie-ack was lost. Imply it was * there. */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { - sctp_misc_ints(SCTP_THRESHOLD_CLEAR, - stcb->asoc.overall_error_count, - 0, - SCTP_FROM_SCTP_INPUT, - __LINE__); - } - stcb->asoc.overall_error_count = 0; sctp_handle_cookie_ack((struct sctp_cookie_ack_chunk *)ch, stcb, net); break; case SCTP_STATE_COOKIE_WAIT: /* * We consider OOTB any data sent during asoc setup. */ - snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); + SCTP_SNPRINTF(msg, sizeof(msg), "OOTB, %s:%d at %s", __FILE__, __LINE__, __func__); op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), msg); sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); goto out; @@ -6145,12 +6142,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt } /* plow through the data chunks while length > offset */ retval = sctp_process_data(mm, iphlen, &offset, length, - src, dst, sh, - inp, stcb, net, &high_tsn, -#if defined(__FreeBSD__) - mflowtype, mflowid, -#endif - vrf_id, port); + inp, stcb, net, &high_tsn); if (retval == 2) { /* * The association aborted, NO UNLOCK needed since @@ -6159,7 +6151,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt stcb = NULL; goto out; } - data_processed = 1; + if (retval == 0) { + data_processed = 1; + } /* * Anything important needs to have been m_copy'ed in * process_data @@ -6204,10 +6198,11 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt if (!TAILQ_EMPTY(&stcb->asoc.control_send_queue)) { cnt_ctrl_ready = stcb->asoc.ctrl_queue_cnt - stcb->asoc.ecn_echo_cnt_onq; } - if (cnt_ctrl_ready || - ((un_sent) && - (stcb->asoc.peers_rwnd > 0 || - (stcb->asoc.peers_rwnd <= 0 && stcb->asoc.total_flight == 0)))) { + if (!TAILQ_EMPTY(&stcb->asoc.asconf_send_queue) || + cnt_ctrl_ready || + stcb->asoc.trigger_reset || + ((un_sent > 0) && + (stcb->asoc.peers_rwnd > 0 || stcb->asoc.total_flight == 0))) { SCTPDBG(SCTP_DEBUG_INPUT3, "Calling chunk OUTPUT\n"); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CONTROL_PROC, SCTP_SO_NOT_LOCKED); SCTPDBG(SCTP_DEBUG_INPUT3, "chunk OUTPUT returns\n"); @@ -6220,37 +6215,33 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } +#if defined(__Userspace__) + if (upcall_socket != NULL) { + if (upcall_socket->so_upcall != NULL) { + if (soreadable(upcall_socket) || + sowriteable(upcall_socket) || + upcall_socket->so_error) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); + } +#endif if (inp_decr != NULL) { /* reduce ref-count */ SCTP_INP_WLOCK(inp_decr); SCTP_INP_DECR_REF(inp_decr); SCTP_INP_WUNLOCK(inp_decr); } -#ifdef INVARIANTS - if (inp != NULL) { - sctp_validate_no_locks(inp); - } -#endif return; } #ifdef INET #if !defined(__Userspace__) -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) void sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port) -#elif defined(__Panda__) -void -sctp_input(pakhandle_type i_pak) -#else -void -#if __STDC__ -sctp_input(struct mbuf *i_pak,...) -#else -sctp_input(i_pak, va_alist) - struct mbuf *i_pak; -#endif -#endif { struct mbuf *m; int iphlen; @@ -6261,32 +6252,22 @@ sctp_input(i_pak, va_alist) struct sctphdr *sh; struct sctp_chunkhdr *ch; int length, offset; -#if !defined(SCTP_WITH_NO_CSUM) uint8_t compute_crc; -#endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint32_t mflowid; uint8_t mflowtype; + uint16_t fibnum; #endif -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__)) +#if defined(__Userspace__) uint16_t port = 0; #endif -#if defined(__Panda__) - /* This is Evil, but its the only way to make panda work right. */ - iphlen = sizeof(struct ip); -#else iphlen = off; -#endif if (SCTP_GET_PKT_VRFID(i_pak, vrf_id)) { SCTP_RELEASE_PKT(i_pak); return; } m = SCTP_HEADER_TO_CHAIN(i_pak); -#ifdef __Panda__ - SCTP_DETACH_HEADER_FROM_CHAIN(i_pak); - (void)SCTP_RELEASE_HEADER(i_pak); -#endif #ifdef SCTP_MBUF_LOGGING /* Log in any input mbufs */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { @@ -6298,28 +6279,14 @@ sctp_input(i_pak, va_alist) sctp_packet_log(m); } #endif -#if defined(__FreeBSD__) -#if __FreeBSD_version > 1000049 +#if defined(__FreeBSD__) && !defined(__Userspace__) SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, "sctp_input(): Packet of length %d received on %s with csum_flags 0x%b.\n", m->m_pkthdr.len, if_name(m->m_pkthdr.rcvif), (int)m->m_pkthdr.csum_flags, CSUM_BITS); -#elif __FreeBSD_version >= 800000 - SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, - "sctp_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", - m->m_pkthdr.len, - if_name(m->m_pkthdr.rcvif), - m->m_pkthdr.csum_flags); -#else - SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, - "sctp_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", - m->m_pkthdr.len, - m->m_pkthdr.rcvif->if_xname, - m->m_pkthdr.csum_flags); -#endif #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, "sctp_input(): Packet of length %d received on %s%d with csum_flags 0x%x.\n", m->m_pkthdr.len, @@ -6327,16 +6294,17 @@ sctp_input(i_pak, va_alist) m->m_pkthdr.rcvif->if_unit, m->m_pkthdr.csum_flags); #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, "sctp_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", m->m_pkthdr.len, m->m_pkthdr.rcvif->if_xname, m->m_pkthdr.csum_flags); #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) mflowid = m->m_pkthdr.flowid; mflowtype = M_HASHTYPE_GET(m); + fibnum = M_GETFIB(m); #endif SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); @@ -6366,26 +6334,22 @@ sctp_input(i_pak, va_alist) #endif dst.sin_port = sh->dest_port; dst.sin_addr = ip->ip_dst; -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) NTOHS(ip->ip_len); #endif -#if defined(__Userspace_os_Linux) || defined(__Userspace_os_Windows) +#if defined(__linux__) || (defined(_WIN32) && defined(__Userspace__)) ip->ip_len = ntohs(ip->ip_len); #endif -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 1000000 - length = ntohs(ip->ip_len); +#if defined(__Userspace__) +#if defined(__linux__) || defined(_WIN32) + length = ip->ip_len; #else length = ip->ip_len + iphlen; #endif +#elif defined(__FreeBSD__) + length = ntohs(ip->ip_len); #elif defined(__APPLE__) length = ip->ip_len + iphlen; -#elif defined(__Userspace__) -#if defined(__Userspace_os_Linux) || defined(__Userspace_os_Windows) - length = ip->ip_len; -#else - length = ip->ip_len + iphlen; -#endif #else length = ip->ip_len; #endif @@ -6404,10 +6368,7 @@ sctp_input(i_pak, va_alist) goto out; } ecn_bits = ip->ip_tos; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (m->m_pkthdr.csum_flags & CSUM_SCTP_VALID) { SCTP_STAT_INCR(sctps_recvhwcrc); compute_crc = 0; @@ -6416,24 +6377,21 @@ sctp_input(i_pak, va_alist) if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && ((src.sin_addr.s_addr == dst.sin_addr.s_addr) || (SCTP_IS_IT_LOOPBACK(m)))) { - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); compute_crc = 0; } else { #endif SCTP_STAT_INCR(sctps_recvswcrc); compute_crc = 1; } -#endif sctp_common_input_processing(&m, iphlen, offset, length, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif ecn_bits, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); out: @@ -6443,11 +6401,13 @@ sctp_input(i_pak, va_alist) return; } -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) extern int *sctp_cpuarry; #endif +#endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 1100020 +#if defined(__FreeBSD__) && !defined(__Userspace__) int sctp_input(struct mbuf **mp, int *offp, int proto SCTP_UNUSED) { @@ -6461,7 +6421,8 @@ void sctp_input(struct mbuf *m, int off) { #endif -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) if (mp_ncpus > 1) { struct ip *ip; struct sctphdr *sh; @@ -6479,11 +6440,7 @@ sctp_input(struct mbuf *m, int off) if (SCTP_BUF_LEN(m) < offset) { if ((m = m_pullup(m, offset)) == NULL) { SCTP_STAT_INCR(sctps_hdrops); -#if defined(__FreeBSD__) && __FreeBSD_version >= 1100020 return (IPPROTO_DONE); -#else - return; -#endif } } ip = mtod(m, struct ip *); @@ -6491,19 +6448,16 @@ sctp_input(struct mbuf *m, int off) tag = htonl(sh->v_tag); flowid = tag ^ ntohs(sh->dest_port) ^ ntohs(sh->src_port); m->m_pkthdr.flowid = flowid; - M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE); + M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE_HASH); } cpu_to_use = sctp_cpuarry[flowid % mp_ncpus]; sctp_queue_to_mcore(m, off, cpu_to_use); -#if defined(__FreeBSD__) && __FreeBSD_version >= 1100020 return (IPPROTO_DONE); -#else - return; -#endif } +#endif #endif sctp_input_with_port(m, off, 0); -#if defined(__FreeBSD__) && __FreeBSD_version >= 1100020 +#if defined(__FreeBSD__) && !defined(__Userspace__) return (IPPROTO_DONE); #endif } diff --git a/netwerk/sctp/src/netinet/sctp_input.h b/netwerk/sctp/src/netinet/sctp_input.h index 5d45fef20c..d2cd215761 100755 --- a/netwerk/sctp/src/netinet/sctp_input.h +++ b/netwerk/sctp/src/netinet/sctp_input.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_input.h 273168 2014-10-16 15:36:04Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_INPUT_H_ @@ -43,12 +45,10 @@ void sctp_common_input_processing(struct mbuf **, int, int, int, struct sockaddr *, struct sockaddr *, struct sctphdr *, struct sctp_chunkhdr *, -#if !defined(SCTP_WITH_NO_CSUM) uint8_t, -#endif uint8_t, -#if defined(__FreeBSD__) - uint8_t, uint32_t, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t, uint32_t, uint16_t, #endif uint32_t, uint16_t); @@ -56,9 +56,9 @@ struct sctp_stream_reset_request * sctp_find_stream_reset(struct sctp_tcb *stcb, uint32_t seq, struct sctp_tmit_chunk **bchk); -void sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, - uint16_t *list); - +void +sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, + uint16_t *list); int sctp_is_there_unsent_data(struct sctp_tcb *stcb, int so_locked); diff --git a/netwerk/sctp/src/netinet/sctp_lock_userspace.h b/netwerk/sctp/src/netinet/sctp_lock_userspace.h index 83a565c371..f3b9b3d961 100755 --- a/netwerk/sctp/src/netinet/sctp_lock_userspace.h +++ b/netwerk/sctp/src/netinet/sctp_lock_userspace.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -31,7 +33,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include __FBSDID("$FreeBSD$"); #endif @@ -61,12 +63,15 @@ __FBSDID("$FreeBSD$"); #define SCTP_INP_INFO_TRYLOCK() 1 #define SCTP_INP_INFO_RUNLOCK() #define SCTP_INP_INFO_WUNLOCK() +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() #define SCTP_WQ_ADDR_INIT() #define SCTP_WQ_ADDR_DESTROY() #define SCTP_WQ_ADDR_LOCK() #define SCTP_WQ_ADDR_UNLOCK() - +#define SCTP_WQ_ADDR_LOCK_ASSERT() #define SCTP_IPI_ADDR_INIT() #define SCTP_IPI_ADDR_DESTROY() @@ -74,20 +79,19 @@ __FBSDID("$FreeBSD$"); #define SCTP_IPI_ADDR_WLOCK() #define SCTP_IPI_ADDR_RUNLOCK() #define SCTP_IPI_ADDR_WUNLOCK() +#define SCTP_IPI_ADDR_LOCK_ASSERT() +#define SCTP_IPI_ADDR_WLOCK_ASSERT() #define SCTP_IPI_ITERATOR_WQ_INIT() #define SCTP_IPI_ITERATOR_WQ_DESTROY() #define SCTP_IPI_ITERATOR_WQ_LOCK() #define SCTP_IPI_ITERATOR_WQ_UNLOCK() - #define SCTP_IP_PKTLOG_INIT() #define SCTP_IP_PKTLOG_LOCK() #define SCTP_IP_PKTLOG_UNLOCK() #define SCTP_IP_PKTLOG_DESTROY() - - #define SCTP_INP_READ_INIT(_inp) #define SCTP_INP_READ_DESTROY(_inp) #define SCTP_INP_READ_LOCK(_inp) @@ -98,9 +102,10 @@ __FBSDID("$FreeBSD$"); #define SCTP_INP_LOCK_DESTROY(_inp) #define SCTP_ASOC_CREATE_LOCK_DESTROY(_inp) - #define SCTP_INP_RLOCK(_inp) #define SCTP_INP_WLOCK(_inp) +#define SCTP_INP_RLOCK_ASSERT(_inp) +#define SCTP_INP_WLOCK_ASSERT(_inp) #define SCTP_INP_LOCK_CONTENDED(_inp) (0) /* Don't know if this is possible */ @@ -109,11 +114,6 @@ __FBSDID("$FreeBSD$"); #define SCTP_ASOC_CREATE_LOCK_CONTENDED(_inp) (0) /* Don't know if this is possible */ -#define SCTP_TCB_SEND_LOCK_INIT(_tcb) -#define SCTP_TCB_SEND_LOCK_DESTROY(_tcb) -#define SCTP_TCB_SEND_LOCK(_tcb) -#define SCTP_TCB_SEND_UNLOCK(_tcb) - #define SCTP_INP_INCR_REF(_inp) #define SCTP_INP_DECR_REF(_inp) @@ -212,14 +212,6 @@ __FBSDID("$FreeBSD$"); } while (0) -/* not sure if __Userspace__ needs these (but copied nonetheless...) */ -#if defined(SCTP_SO_LOCK_TESTING) -#define SCTP_INP_SO(sctpinp) (sctpinp)->ip_inp.inp.inp_socket -#define SCTP_SOCKET_LOCK(so, refcnt) -#define SCTP_SOCKET_UNLOCK(so, refcnt) -#endif - - /* these were in sctp_lock_empty.h but aren't in sctp_lock_bsd.h ... */ #if 0 #define SCTP_IPI_ADDR_LOCK() diff --git a/netwerk/sctp/src/netinet/sctp_os.h b/netwerk/sctp/src/netinet/sctp_os.h index 48883811a1..dae612bc57 100755 --- a/netwerk/sctp/src/netinet/sctp_os.h +++ b/netwerk/sctp/src/netinet/sctp_os.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2006-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_os.h 235828 2012-05-23 11:26:28Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_OS_H_ @@ -62,25 +64,18 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_os.h 235828 2012-05-23 11:26:28Z tuexe * SCTP_ZONE_DESTROY(zone) */ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #else #define MODULE_GLOBAL(_B) (_B) #endif - #if defined(__Userspace__) #include #endif - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #include #endif - -#if defined(__Panda__) -#include -#endif - -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) #include #endif diff --git a/netwerk/sctp/src/netinet/sctp_os_userspace.h b/netwerk/sctp/src/netinet/sctp_os_userspace.h index 456c7bd642..05f655aa94 100755 --- a/netwerk/sctp/src/netinet/sctp_os_userspace.h +++ b/netwerk/sctp/src/netinet/sctp_os_userspace.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2006-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2011, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2011, by Michael Tuexen. All rights reserved. @@ -41,15 +43,16 @@ #include -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #include #include #include -#include -#include +#include +#include #include "user_environment.h" typedef CRITICAL_SECTION userland_mutex_t; #if WINVER < 0x0600 +typedef CRITICAL_SECTION userland_rwlock_t; enum { C_SIGNAL = 0, C_BROADCAST = 1, @@ -70,6 +73,7 @@ void WakeAllXPConditionVariable(userland_cond_t *); #define SleepConditionVariableCS(cond, mtx, time) SleepXPConditionVariable(cond, mtx) #define WakeAllConditionVariable(cond) WakeAllXPConditionVariable(cond) #else +typedef SRWLOCK userland_rwlock_t; #define DeleteConditionVariable(cond) typedef CONDITION_VARIABLE userland_cond_t; #endif @@ -78,33 +82,30 @@ typedef HANDLE userland_thread_t; #define IPVERSION 4 #define MAXTTL 255 /* VS2010 comes with stdint.h */ -#if _MSC_VER >= 1600 +#if !defined(_MSC_VER) || (_MSC_VER >= 1600) #include #else -#define uint64_t unsigned __int64 -#define uint32_t unsigned __int32 -#define int32_t __int32 -#define uint16_t unsigned __int16 -#define int16_t __int16 -#define uint8_t unsigned __int8 -#define int8_t __int8 +typedef unsigned __int64 uint64_t; +typedef unsigned __int32 uint32_t; +typedef __int32 int32_t; +typedef unsigned __int16 uint16_t; +typedef __int16 int16_t; +typedef unsigned __int8 uint8_t; +typedef __int8 int8_t; #endif #ifndef _SIZE_T_DEFINED -#define size_t __int32 -#endif -#define u_long unsigned __int64 -#define u_int unsigned __int32 -#define u_int32_t unsigned __int32 -#define u_int16_t unsigned __int16 -#define u_int8_t unsigned __int8 -#define u_char unsigned char -#define n_short unsigned __int16 -#define u_short unsigned __int16 -#define n_time unsigned __int32 -#define sa_family_t unsigned __int8 -#define ssize_t __int64 +#typedef __int32 size_t; +#endif +typedef unsigned __int32 u_int; +typedef unsigned char u_char; +typedef unsigned __int16 u_short; +typedef unsigned __int8 sa_family_t; +#ifndef _SSIZE_T_DEFINED +typedef __int64 ssize_t; +#endif +#if !defined(__MINGW32__) #define __func__ __FUNCTION__ - +#endif #ifndef EWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK #endif @@ -218,9 +219,19 @@ typedef char* caddr_t; #define bzero(buf, len) memset(buf, 0, len) #define bcopy(srcKey, dstKey, len) memcpy(dstKey, srcKey, len) -#if _MSC_VER < 1900 -#define snprintf(data, size, format, ...) _snprintf_s(data, size, _TRUNCATE, format, __VA_ARGS__) + +#if defined(_MSC_VER) && (_MSC_VER < 1900) && !defined(__MINGW32__) +#define SCTP_SNPRINTF(data, size, format, ...) \ + if (_snprintf_s(data, size, _TRUNCATE, format, __VA_ARGS__) < 0) { \ + data[0] = '\0'; \ + } +#else +#define SCTP_SNPRINTF(data, ...) \ + if (snprintf(data, __VA_ARGS__) < 0 ) { \ + data[0] = '\0'; \ + } #endif + #define inline __inline #define __inline__ __inline #define MSG_EOR 0x8 /* data completes record */ @@ -273,18 +284,21 @@ typedef char* caddr_t; #endif #else /* !defined(Userspace_os_Windows) */ -#include #include -#include -#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_NaCl) -#include + +#if defined(__EMSCRIPTEN__) && !defined(__EMSCRIPTEN_PTHREADS__) +#error "Unsupported build configuration." #endif + +#include + typedef pthread_mutex_t userland_mutex_t; +typedef pthread_rwlock_t userland_rwlock_t; typedef pthread_cond_t userland_cond_t; typedef pthread_t userland_thread_t; #endif -#if defined(__Userspace_os_Windows) || defined(__Userspace_os_NaCl) +#if defined(_WIN32) || defined(__native_client__) #define IFNAMSIZ 64 @@ -326,7 +340,7 @@ struct ip { u_char ip_ttl; u_char ip_p; u_short ip_sum; - struct in_addr ip_src, ip_dst; + struct in_addr ip_src, ip_dst; }; struct ifaddrs { @@ -347,7 +361,7 @@ struct udphdr { }; struct iovec { - unsigned long len; + size_t len; char *buf; }; @@ -378,43 +392,9 @@ struct ifkpi { int ifk_value; } ifk_data; }; - -struct ifreq { - char ifr_name[16]; - union { - struct sockaddr ifru_addr; - struct sockaddr ifru_dstaddr; - struct sockaddr ifru_broadaddr; - short ifru_flags; - int ifru_metric; - int ifru_mtu; - int ifru_phys; - int ifru_media; - int ifru_intval; - char* ifru_data; - struct ifdevmtu ifru_devmtu; - struct ifkpi ifru_kpi; - uint32_t ifru_wake_flags; - } ifr_ifru; -#define ifr_addr ifr_ifru.ifru_addr -#define ifr_dstaddr ifr_ifru.ifru_dstaddr -#define ifr_broadaddr ifr_ifru.ifru_broadaddr -#define ifr_flags ifr_ifru.ifru_flags[0] -#define ifr_prevflags ifr_ifru.ifru_flags[1] -#define ifr_metric ifr_ifru.ifru_metric -#define ifr_mtu ifr_ifru.ifru_mtu -#define ifr_phys ifr_ifru.ifru_phys -#define ifr_media ifr_ifru.ifru_media -#define ifr_data ifr_ifru.ifru_data -#define ifr_devmtu ifr_ifru.ifru_devmtu -#define ifr_intval ifr_ifru.ifru_intval -#define ifr_kpi ifr_ifru.ifru_kpi -#define ifr_wake_flags ifr_ifru.ifru_wake_flags -}; - #endif -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) int Win_getifaddrs(struct ifaddrs**); #define getifaddrs(interfaces) (int)Win_getifaddrs(interfaces) int win_if_nametoindex(const char *); @@ -425,9 +405,9 @@ int win_if_nametoindex(const char *); #define mtx_unlock(arg1) #define mtx_assert(arg1,arg2) #define MA_OWNED 7 /* sys/mutex.h typically on FreeBSD */ -#if !defined(__Userspace_os_FreeBSD) +#if !defined(__FreeBSD__) struct mtx {int dummy;}; -#if !defined(__Userspace_os_NetBSD) +#if !defined(__NetBSD__) struct selinfo {int dummy;}; #endif struct sx {int dummy;}; @@ -435,10 +415,11 @@ struct sx {int dummy;}; #include #include +#include /* #include in FreeBSD defines MSIZE */ /* #include */ /* #include */ -#if 0 // 10.4 has an old one. // defined(HAVE_SYS_QUEUE_H) +#if defined(HAVE_SYS_QUEUE_H) #include #else #include @@ -457,22 +438,22 @@ struct sx {int dummy;}; #include /* #include */ /* #include */ -#if defined(__FreeBSD__) && __FreeBSD_version > 602000 +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif /* #include */ -#if defined(__FreeBSD__) && __FreeBSD_version > 602000 +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif /* #include */ -/* #include */ +#include /* #include */ -#if defined(__Userspace_os_Darwin) +#if defined(__APPLE__) /* was a 0 byte file. needed for structs if_data(64) and net_event_data */ #include #endif -#if defined(__Userspace_os_FreeBSD) +#if defined(__FreeBSD__) #include /* #include was a 0 byte file. causes struct mtx redefinition */ #endif @@ -480,7 +461,7 @@ struct sx {int dummy;}; * userspace as well? */ /* on FreeBSD, this results in a redefintion of struct route */ /* #include */ -#if !defined(__Userspace_os_Windows) && !defined(__Userspace_os_NaCl) +#if !defined(_WIN32) && !defined(__native_client__) #include #include #include @@ -496,8 +477,8 @@ struct sx {int dummy;}; /* for getifaddrs */ #include -#if !defined(__Userspace_os_Windows) -#if !defined(ANDROID) && (defined(INET) || defined(INET6)) +#if !defined(_WIN32) +#if defined(INET) || defined(INET6) #include #endif @@ -506,6 +487,8 @@ struct sx {int dummy;}; /* for close, etc. */ #include +/* for gettimeofday */ +#include #endif /* lots of errno's used and needed in userspace */ @@ -513,7 +496,7 @@ struct sx {int dummy;}; /* for offsetof */ #include -#if defined(SCTP_PROCESS_LEVEL_LOCKS) && !defined(__Userspace_os_Windows) +#if defined(SCTP_PROCESS_LEVEL_LOCKS) && !defined(_WIN32) /* for pthread_mutex_lock, pthread_mutex_unlock, etc. */ #include #endif @@ -524,22 +507,21 @@ struct sx {int dummy;}; #endif /* IPSEC */ #ifdef INET6 -#if defined(__Userspace_os_FreeBSD) +#if defined(__FreeBSD__) #include #endif #ifdef IPSEC #include #endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include -#include #endif -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_Windows) +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(_WIN32) || defined(__EMSCRIPTEN__) #include "user_ip6_var.h" #else #include #endif -#if defined(__Userspace_os_FreeBSD) +#if defined(__FreeBSD__) #include #include /* #include was a 0 byte file */ @@ -554,7 +536,7 @@ struct sx {int dummy;}; #include "netinet/sctp_sha1.h" -#if __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif @@ -563,11 +545,6 @@ struct sx {int dummy;}; SCTP_BASE_VAR(debug_printf)(__VA_ARGS__); \ } -#if defined(__FreeBSD__) -#ifndef in6pcb -#define in6pcb inpcb -#endif -#endif /* Declare all the malloc names for all the various mallocs */ MALLOC_DECLARE(SCTP_M_MAP); MALLOC_DECLARE(SCTP_M_STRMI); @@ -612,12 +589,12 @@ MALLOC_DECLARE(SCTP_M_SOCKOPT); /* * */ -#if !defined(__Userspace_os_Darwin) +#if !defined(__APPLE__) #define USER_ADDR_NULL (NULL) /* FIX ME: temp */ #endif -#if defined(SCTP_DEBUG) #include +#if defined(SCTP_DEBUG) #define SCTPDBG(level, ...) \ { \ do { \ @@ -671,7 +648,7 @@ MALLOC_DECLARE(SCTP_M_SOCKOPT); #define SCTP_VRF_IFN_HASH_SIZE 3 #define SCTP_INIT_VRF_TABLEID(vrf) -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #define SCTP_IFN_IS_IFT_LOOP(ifn) (strncmp((ifn)->ifn_name, "lo", 2) == 0) /* BSD definition */ /* #define SCTP_ROUTE_IS_REAL_LOOP(ro) ((ro)->ro_rt && (ro)->ro_rt->rt_ifa && (ro)->ro_rt->rt_ifa->ifa_ifp && (ro)->ro_rt->rt_ifa->ifa_ifp->if_type == IFT_LOOP) */ @@ -765,14 +742,6 @@ MALLOC_DECLARE(SCTP_M_SOCKOPT); umem_cache_destroy(zone); #endif -/* global struct ifaddrs used in sctp_init_ifns_for_vrf getifaddrs call - * but references to fields are needed to persist as the vrf is queried. - * getifaddrs allocates memory that needs to be freed with a freeifaddrs - * call; this global is used to call freeifaddrs upon in sctp_pcb_finish - */ -extern struct ifaddrs *g_interfaces; - - /* * __Userspace__ Defining sctp_hashinit_flags() and sctp_hashdestroy() for userland. */ @@ -812,10 +781,8 @@ sctp_hashfreedestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask); /*__Userspace__ defining KTR_SUBSYS 1 as done in sctp_os_macosx.h */ #define KTR_SUBSYS 1 -#define sctp_get_tick_count() (ticks) - /* The packed define for 64 bit platforms */ -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #define SCTP_PACKED __attribute__((packed)) #define SCTP_UNUSED __attribute__((unused)) #else @@ -844,6 +811,13 @@ sctp_hashfreedestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask); M_ALIGN(m, len); \ } +#if !defined(_WIN32) +#define SCTP_SNPRINTF(data, ...) \ + if (snprintf(data, __VA_ARGS__) < 0) { \ + data[0] = '\0'; \ + } +#endif + /* We make it so if you have up to 4 threads * writting based on the default size of * the packet log 65 k, that would be @@ -890,7 +864,7 @@ static inline void sctp_userspace_rtalloc(sctp_route_t *ro) * SCTP_GET_IF_INDEX_FROM_ROUTE macro. */ } -#define SCTP_RTALLOC(ro, vrf_id) sctp_userspace_rtalloc((sctp_route_t *)ro) +#define SCTP_RTALLOC(ro, vrf_id, fibnum) sctp_userspace_rtalloc((sctp_route_t *)ro) /* dummy rtfree needed once user_route.h is included */ static inline void sctp_userspace_rtfree(sctp_rtentry_t *rt) @@ -902,7 +876,6 @@ static inline void sctp_userspace_rtfree(sctp_rtentry_t *rt) return; } free(rt); - rt = NULL; } #define rtfree(arg1) sctp_userspace_rtfree(arg1) @@ -910,23 +883,17 @@ static inline void sctp_userspace_rtfree(sctp_rtentry_t *rt) /*************************/ /* MTU */ /*************************/ -int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); +int sctp_userspace_get_mtu_from_ifn(uint32_t if_index); -#define SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index, af) sctp_userspace_get_mtu_from_ifn(ifn_index, af) +#define SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index) sctp_userspace_get_mtu_from_ifn(ifn_index) #define SCTP_GATHER_MTU_FROM_ROUTE(sctp_ifa, sa, rt) ((rt != NULL) ? rt->rt_rmx.rmx_mtu : 0) -#define SCTP_GATHER_MTU_FROM_INTFC(sctp_ifn) sctp_userspace_get_mtu_from_ifn(if_nametoindex(((struct ifaddrs *) (sctp_ifn))->ifa_name), AF_INET) - #define SCTP_SET_MTU_OF_ROUTE(sa, rt, mtu) do { \ if (rt != NULL) \ rt->rt_rmx.rmx_mtu = mtu; \ } while(0) -/* (de-)register interface event notifications */ -#define SCTP_REGISTER_INTERFACE(ifhandle, af) -#define SCTP_DEREGISTER_INTERFACE(ifhandle, af) - /*************************/ /* These are for logging */ @@ -951,13 +918,6 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); #define SCTP_GET_HEADER_FOR_OUTPUT(o_pak) 0 #define SCTP_RELEASE_HEADER(m) #define SCTP_RELEASE_PKT(m) sctp_m_freem(m) -/* UDP __Userspace__ - dummy definition */ -#define SCTP_ENABLE_UDP_CSUM(m) m=m -/* BSD definition */ -/* #define SCTP_ENABLE_UDP_CSUM(m) do { \ */ -/* m->m_pkthdr.csum_flags = CSUM_UDP; \ */ -/* m->m_pkthdr.csum_data = offsetof(struct udphdr, uh_sum); \ */ -/* } while (0) */ #define SCTP_GET_PKT_VRFID(m, vrf_id) ((vrf_id = SCTP_DEFAULT_VRFID) != SCTP_DEFAULT_VRFID) @@ -983,11 +943,11 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); */ /* get the v6 hop limit */ -#define SCTP_GET_HLIM(inp, ro) 128 /* As done for __Windows__ */ +#define SCTP_GET_HLIM(inp, ro) 128 #define IPv6_HOP_LIMIT 128 /* is the endpoint v6only? */ -#define SCTP_IPV6_V6ONLY(inp) (((struct inpcb *)inp)->inp_flags & IN6P_IPV6_V6ONLY) +#define SCTP_IPV6_V6ONLY(sctp_inpcb) ((sctp_inpcb)->ip_inp.inp.inp_flags & IN6P_IPV6_V6ONLY) /* is the socket non-blocking? */ #define SCTP_SO_IS_NBIO(so) ((so)->so_state & SS_NBIO) #define SCTP_SET_SO_NBIO(so) ((so)->so_state |= SS_NBIO) @@ -1000,6 +960,8 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); /* wakeup a socket */ #define SCTP_SOWAKEUP(so) wakeup(&(so)->so_timeo, so) +/* number of bytes ready to read */ +#define SCTP_SBAVAIL(sb) (sb)->sb_cc /* clear the socket buffer state */ #define SCTP_SB_CLEAR(sb) \ (sb).sb_cc = 0; \ @@ -1009,11 +971,6 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); #define SCTP_SB_LIMIT_RCV(so) so->so_rcv.sb_hiwat #define SCTP_SB_LIMIT_SND(so) so->so_snd.sb_hiwat -/* Future zero copy wakeup/send function */ -#define SCTP_ZERO_COPY_EVENT(inp, so) -/* This is re-pulse ourselves for sendbuf */ -#define SCTP_ZERO_COPY_SENDQ_EVENT(inp, so) - #define SCTP_READ_RANDOM(buf, len) read_random(buf, len) #define SCTP_SHA1_CTX struct sctp_sha1_context @@ -1027,7 +984,7 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); /* sctp_pcb.h */ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define SHUT_RD 1 #define SHUT_WR 2 #define SHUT_RDWR 3 @@ -1046,12 +1003,22 @@ int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af); struct sockaddr_conn { #ifdef HAVE_SCONN_LEN uint8_t sconn_len; -#endif uint8_t sconn_family; +#else + uint16_t sconn_family; +#endif uint16_t sconn_port; void *sconn_addr; }; +typedef void *(*start_routine_t)(void *); + +extern int +sctp_userspace_thread_create(userland_thread_t *thread, start_routine_t start_routine); + +void +sctp_userspace_set_threadname(const char *name); + /* * SCTP protocol specific mbuf flags. */ @@ -1074,13 +1041,13 @@ extern void sctp_userspace_ip_output(int *result, struct mbuf *o_pak, sctp_route_t *ro, void *stcb, uint32_t vrf_id); -#define SCTP_IP_OUTPUT(result, o_pak, ro, stcb, vrf_id) sctp_userspace_ip_output(&result, o_pak, ro, stcb, vrf_id); +#define SCTP_IP_OUTPUT(result, o_pak, ro, inp, vrf_id) sctp_userspace_ip_output(&result, o_pak, ro, inp, vrf_id); #if defined(INET6) extern void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, struct route_in6 *ro, void *stcb, uint32_t vrf_id); -#define SCTP_IP6_OUTPUT(result, o_pak, ro, ifp, stcb, vrf_id) sctp_userspace_ip6_output(&result, o_pak, ro, stcb, vrf_id); +#define SCTP_IP6_OUTPUT(result, o_pak, ro, ifp, inp, vrf_id) sctp_userspace_ip6_output(&result, o_pak, ro, inp, vrf_id); #endif @@ -1090,7 +1057,7 @@ extern void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, { \ if (stcb && stcb->sctp_ep) \ result = ip6_output(o_pak, \ - ((struct in6pcb *)(stcb->sctp_ep))->in6p_outputopts, \ + ((struct inpcb *)(stcb->sctp_ep))->in6p_outputopts, \ (ro), 0, 0, ifp, NULL); \ else \ result = ip6_output(o_pak, NULL, (ro), 0, 0, ifp, NULL); \ @@ -1104,12 +1071,12 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a /* with the current included files, this is defined in Linux but * in FreeBSD, it is behind a _KERNEL in sys/socket.h ... */ -#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_NaCl) +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__native_client__) /* stolen from /usr/include/sys/socket.h */ #define CMSG_ALIGN(n) _ALIGN(n) -#elif defined(__Userspace_os_NetBSD) +#elif defined(__NetBSD__) #define CMSG_ALIGN(n) (((n) + __ALIGNBYTES) & ~__ALIGNBYTES) -#elif defined(__Userspace_os_Darwin) +#elif defined(__APPLE__) #if !defined(__DARWIN_ALIGNBYTES) #define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1) #endif @@ -1129,7 +1096,7 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a #endif #define I_AM_HERE \ do { \ - SCTP_PRINTF("%s:%d at %s\n", __FILE__, __LINE__ , __FUNCTION__); \ + SCTP_PRINTF("%s:%d at %s\n", __FILE__, __LINE__ , __func__); \ } while (0) #ifndef timevalsub @@ -1144,7 +1111,7 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a } while (0) #endif -#if defined(__Userspace_os_Linux) +#if defined(__linux__) #if !defined(TAILQ_FOREACH_SAFE) #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = ((head)->tqh_first); \ @@ -1158,16 +1125,23 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a (var) = (tvar)) #endif #endif -#if defined(__Userspace_os_DragonFly) +#if defined(__DragonFly__) #define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE #define LIST_FOREACH_SAFE LIST_FOREACH_MUTABLE #endif -#if defined(__Userspace_os_NaCl) +#if defined(__native_client__) #define timercmp(tvp, uvp, cmp) \ (((tvp)->tv_sec == (uvp)->tv_sec) ? \ ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ ((tvp)->tv_sec cmp (uvp)->tv_sec)) #endif +#define SCTP_IS_LISTENING(inp) ((inp->sctp_flags & SCTP_PCB_FLAGS_ACCEPTING) != 0) + +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__) +int +timingsafe_bcmp(const void *, const void *, size_t); +#endif + #endif diff --git a/netwerk/sctp/src/netinet/sctp_output.c b/netwerk/sctp/src/netinet/sctp_output.c index 3f1a9525d7..aa0aae260f 100755 --- a/netwerk/sctp/src/netinet/sctp_output.c +++ b/netwerk/sctp/src/netinet/sctp_output.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,13 +32,13 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_output.c 280371 2015-03-23 15:12:02Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif #include @@ -54,32 +56,30 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_output.c 280371 2015-03-23 15:12:02Z t #include #include #include -#if defined(__Userspace_os_Linux) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#endif +#if defined(__linux__) #define __FAVOR_BSD /* (on Ubuntu at least) enables UDP header field names like BSD in RFC 768 */ #endif #if defined(INET) || defined(INET6) -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include #endif #endif +#if !defined(__Userspace__) #if defined(__APPLE__) #include #endif -#if defined(__FreeBSD__) -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -#endif #include #endif +#endif #if defined(__Userspace__) && defined(INET6) #include #endif - -#if defined(__APPLE__) -#define APPLE_FILE_NO 3 -#endif - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if !(defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD)) #define SCTP_MAX_LINKHDR 16 #endif @@ -94,7 +94,7 @@ struct sack_track { struct sctp_gap_ack_block gaps[SCTP_MAX_GAPS_INARRAY]; }; -struct sack_track sack_array[256] = { +const struct sack_track sack_array[256] = { {0, 0, 0, 0, /* 0x00 */ {{0, 0}, {0, 0}, @@ -1889,7 +1889,6 @@ struct sack_track sack_array[256] = { } }; - int sctp_is_address_in_scope(struct sctp_ifa *ifa, struct sctp_scoping *scope, @@ -1928,21 +1927,19 @@ sctp_is_address_in_scope(struct sctp_ifa *ifa, if (scope->ipv6_addr_legal) { struct sockaddr_in6 *sin6; -#if !defined(__Panda__) /* Must update the flags, bummer, which * means any IFA locks must now be applied HERE <-> */ if (do_update) { sctp_gather_internal_ifa_flags(ifa); } -#endif if (ifa->localifa_flags & SCTP_ADDR_IFA_UNUSEABLE) { return (0); } /* ok to use deprecated addresses? */ sin6 = &ifa->address.sin6; if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - /* skip unspecifed addresses */ + /* skip unspecified addresses */ return (0); } if ( /* (local_scope == 0) && */ @@ -1975,7 +1972,7 @@ static struct mbuf * sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) { #if defined(INET) || defined(INET6) - struct sctp_paramhdr *parmh; + struct sctp_paramhdr *paramh; struct mbuf *mret; uint16_t plen; #endif @@ -1997,7 +1994,7 @@ sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) #if defined(INET) || defined(INET6) if (M_TRAILINGSPACE(m) >= plen) { /* easy side we just drop it on the end */ - parmh = (struct sctp_paramhdr *)(SCTP_BUF_AT(m, SCTP_BUF_LEN(m))); + paramh = (struct sctp_paramhdr *)(SCTP_BUF_AT(m, SCTP_BUF_LEN(m))); mret = m; } else { /* Need more space */ @@ -2011,7 +2008,7 @@ sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) return (m); } mret = SCTP_BUF_NEXT(mret); - parmh = mtod(mret, struct sctp_paramhdr *); + paramh = mtod(mret, struct sctp_paramhdr *); } /* now add the parameter */ switch (ifa->address.sa.sa_family) { @@ -2022,9 +2019,9 @@ sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) struct sockaddr_in *sin; sin = &ifa->address.sin; - ipv4p = (struct sctp_ipv4addr_param *)parmh; - parmh->param_type = htons(SCTP_IPV4_ADDRESS); - parmh->param_length = htons(plen); + ipv4p = (struct sctp_ipv4addr_param *)paramh; + paramh->param_type = htons(SCTP_IPV4_ADDRESS); + paramh->param_length = htons(plen); ipv4p->addr = sin->sin_addr.s_addr; SCTP_BUF_LEN(mret) += plen; break; @@ -2037,9 +2034,9 @@ sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) struct sockaddr_in6 *sin6; sin6 = &ifa->address.sin6; - ipv6p = (struct sctp_ipv6addr_param *)parmh; - parmh->param_type = htons(SCTP_IPV6_ADDRESS); - parmh->param_length = htons(plen); + ipv6p = (struct sctp_ipv6addr_param *)paramh; + paramh->param_type = htons(SCTP_IPV6_ADDRESS); + paramh->param_length = htons(plen); memcpy(ipv6p->addr, &sin6->sin6_addr, sizeof(ipv6p->addr)); #if defined(SCTP_EMBEDDED_V6_SCOPE) @@ -2060,7 +2057,6 @@ sctp_add_addr_to_mbuf(struct mbuf *m, struct sctp_ifa *ifa, uint16_t *len) #endif } - struct mbuf * sctp_add_addresses_to_i_ia(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_scoping *scope, @@ -2098,7 +2094,7 @@ sctp_add_addresses_to_i_ia(struct sctp_inpcb *inp, struct sctp_tcb *stcb, continue; } LIST_FOREACH(sctp_ifap, &sctp_ifnp->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifap->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2148,7 +2144,7 @@ sctp_add_addresses_to_i_ia(struct sctp_inpcb *inp, struct sctp_tcb *stcb, continue; } LIST_FOREACH(sctp_ifap, &sctp_ifnp->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifap->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2470,7 +2466,7 @@ sctp_is_addr_restricted(struct sctp_tcb *stcb, struct sctp_ifa *ifa) LIST_FOREACH(laddr, &stcb->asoc.sctp_restricted_addrs, sctp_nxt_addr) { if (laddr->ifa == NULL) { SCTPDBG(SCTP_DEBUG_OUTPUT1, "%s: NULL ifa\n", - __FUNCTION__); + __func__); continue; } if (laddr->ifa == ifa) { @@ -2481,7 +2477,6 @@ sctp_is_addr_restricted(struct sctp_tcb *stcb, struct sctp_ifa *ifa) return (0); } - int sctp_is_addr_in_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa) { @@ -2492,7 +2487,7 @@ sctp_is_addr_in_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa) LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { if (laddr->ifa == NULL) { SCTPDBG(SCTP_DEBUG_OUTPUT1, "%s: NULL ifa\n", - __FUNCTION__); + __func__); continue; } if ((laddr->ifa == ifa) && laddr->action == 0) @@ -2502,8 +2497,6 @@ sctp_is_addr_in_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa) return (0); } - - static struct sctp_ifa * sctp_choose_boundspecific_inp(struct sctp_inpcb *inp, sctp_route_t *ro, @@ -2536,7 +2529,7 @@ sctp_choose_boundspecific_inp(struct sctp_inpcb *inp, if (sctp_ifn) { /* is a preferred one on the interface we route out? */ LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2638,8 +2631,6 @@ sctp_choose_boundspecific_inp(struct sctp_inpcb *inp, return (NULL); } - - static struct sctp_ifa * sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, struct sctp_tcb *stcb, @@ -2668,7 +2659,7 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, ifn = SCTP_GET_IFN_VOID_FROM_ROUTE(ro); ifn_index = SCTP_GET_IF_INDEX_FROM_ROUTE(ro); - sctp_ifn = sctp_find_ifn( ifn, ifn_index); + sctp_ifn = sctp_find_ifn(ifn, ifn_index); /* * first question, is the ifn we will emit on in our list? If so, @@ -2678,7 +2669,7 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, if (sctp_ifn) { /* first try for a preferred address on the ep */ LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2714,7 +2705,7 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, } /* next try for an acceptable address on the ep */ LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2748,7 +2739,6 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, return (sifa); } } - } /* * if we can't find one like that then we must look at all @@ -2835,19 +2825,18 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, static struct sctp_ifa * sctp_select_nth_preferred_addr_from_ifn_boundall(struct sctp_ifn *ifn, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) struct sctp_inpcb *inp, #else struct sctp_inpcb *inp SCTP_UNUSED, #endif - struct sctp_tcb *stcb, - int non_asoc_addr_ok, - uint8_t dest_is_loop, - uint8_t dest_is_priv, - int addr_wanted, - sa_family_t fam, - sctp_route_t *ro - ) + struct sctp_tcb *stcb, + int non_asoc_addr_ok, + uint8_t dest_is_loop, + uint8_t dest_is_priv, + int addr_wanted, + sa_family_t fam, + sctp_route_t *ro) { struct sctp_ifa *ifa, *sifa; int num_eligible_addr = 0; @@ -2866,7 +2855,7 @@ sctp_select_nth_preferred_addr_from_ifn_boundall(struct sctp_ifn *ifn, #endif /* SCTP_EMBEDDED_V6_SCOPE */ #endif /* INET6 */ LIST_FOREACH(ifa, &ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -2926,8 +2915,7 @@ sctp_select_nth_preferred_addr_from_ifn_boundall(struct sctp_ifn *ifn, #ifdef INET6 if (stcb && fam == AF_INET6 && sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_BASE)) { - if (sctp_v6src_match_nexthop(&sifa->address.sin6, ro) - == 0) { + if (sctp_v6src_match_nexthop(&sifa->address.sin6, ro) == 0) { continue; } } @@ -2966,10 +2954,9 @@ sctp_select_nth_preferred_addr_from_ifn_boundall(struct sctp_ifn *ifn, return (NULL); } - static int sctp_count_num_preferred_boundall(struct sctp_ifn *ifn, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) struct sctp_inpcb *inp, #else struct sctp_inpcb *inp SCTP_UNUSED, @@ -2984,7 +2971,7 @@ sctp_count_num_preferred_boundall(struct sctp_ifn *ifn, int num_eligible_addr = 0; LIST_FOREACH(ifa, &ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -3151,7 +3138,7 @@ sctp_choose_boundall(struct sctp_inpcb *inp, ifn, num_preferred); if (num_preferred == 0) { /* None on this interface. */ - SCTPDBG(SCTP_DEBUG_OUTPUT2, "No prefered -- skipping to next\n"); + SCTPDBG(SCTP_DEBUG_OUTPUT2, "No preferred -- skipping to next\n"); continue; } SCTPDBG(SCTP_DEBUG_OUTPUT2, @@ -3194,7 +3181,7 @@ sctp_choose_boundall(struct sctp_inpcb *inp, } LIST_FOREACH(sctp_ifa, &emit_ifn->ifalist, next_ifa) { SCTPDBG(SCTP_DEBUG_OUTPUT2, "ifa:%p\n", (void *)sctp_ifa); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -3238,12 +3225,10 @@ sctp_choose_boundall(struct sctp_inpcb *inp, * It is restricted for some * reason.. probably not yet added. */ - SCTPDBG(SCTP_DEBUG_OUTPUT2, "Its resticted\n"); + SCTPDBG(SCTP_DEBUG_OUTPUT2, "Its restricted\n"); sifa = NULL; continue; } - } else { - SCTP_PRINTF("Stcb is null - no print\n"); } atomic_add_int(&sifa->refcount, 1); goto out; @@ -3262,7 +3247,7 @@ sctp_choose_boundall(struct sctp_inpcb *inp, continue; } LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -3308,12 +3293,14 @@ sctp_choose_boundall(struct sctp_inpcb *inp, } } #ifdef INET - if ((retried == 0) && (stcb->asoc.scope.ipv4_local_scope == 0)) { - stcb->asoc.scope.ipv4_local_scope = 1; - retried = 1; - goto again_with_private_addresses_allowed; - } else if (retried == 1) { - stcb->asoc.scope.ipv4_local_scope = 0; + if (stcb) { + if ((retried == 0) && (stcb->asoc.scope.ipv4_local_scope == 0)) { + stcb->asoc.scope.ipv4_local_scope = 1; + retried = 1; + goto again_with_private_addresses_allowed; + } else if (retried == 1) { + stcb->asoc.scope.ipv4_local_scope = 0; + } } #endif out: @@ -3328,7 +3315,7 @@ sctp_choose_boundall(struct sctp_inpcb *inp, LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { struct sctp_ifa *tmp_sifa; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET if ((sctp_ifa->address.sa.sa_family == AF_INET) && (prison_check_ip4(inp->ip_inp.inp.inp_cred, @@ -3386,8 +3373,6 @@ sctp_choose_boundall(struct sctp_inpcb *inp, return (sifa); } - - /* tcb may be NULL */ struct sctp_ifa * sctp_source_address_selection(struct sctp_inpcb *inp, @@ -3407,12 +3392,13 @@ sctp_source_address_selection(struct sctp_inpcb *inp, #endif /** - * Rules: - Find the route if needed, cache if I can. - Look at - * interface address in route, Is it in the bound list. If so we - * have the best source. - If not we must rotate amongst the - * addresses. + * Rules: + * - Find the route if needed, cache if I can. + * - Look at interface address in route, Is it in the bound list. If so we + * have the best source. + * - If not we must rotate amongst the addresses. * - * Cavets and issues + * Caveats and issues * * Do we need to pay attention to scope. We can have a private address * or a global address we are sourcing or sending to. So if we draw @@ -3468,16 +3454,24 @@ sctp_source_address_selection(struct sctp_inpcb *inp, * addresses. If the bound set is NOT assigned to the interface then * we must use rotation amongst the bound addresses.. */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ro->ro_nh == NULL) { +#else if (ro->ro_rt == NULL) { +#endif /* * Need a route to cache. */ - SCTP_RTALLOC(ro, vrf_id); + SCTP_RTALLOC(ro, vrf_id, inp->fibnum); } +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ro->ro_nh == NULL) { +#else if (ro->ro_rt == NULL) { +#endif return (NULL); } -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) /* On Windows the sa_family is U_SHORT or ADDRESS_FAMILY */ fam = (sa_family_t)ro->ro_dst.sa_family; #else @@ -3503,7 +3497,7 @@ sctp_source_address_selection(struct sctp_inpcb *inp, #ifdef INET6 case AF_INET6: /* Scope based on outbound address */ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) if (IN6_IS_ADDR_LOOPBACK(&to6->sin6_addr)) { #else if (IN6_IS_ADDR_LOOPBACK(&to6->sin6_addr) || @@ -3557,40 +3551,43 @@ sctp_source_address_selection(struct sctp_inpcb *inp, return (answer); } -static int +static bool sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) WSACMSGHDR cmh; #else struct cmsghdr cmh; #endif - int tlen, at, found; struct sctp_sndinfo sndinfo; struct sctp_prinfo prinfo; struct sctp_authinfo authinfo; + int tot_len, rem_len, cmsg_data_len, cmsg_data_off, off; + bool found; - tlen = SCTP_BUF_LEN(control); - at = 0; - found = 0; /* * Independent of how many mbufs, find the c_type inside the control * structure and copy out the data. */ - while (at < tlen) { - if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { + found = false; + tot_len = SCTP_BUF_LEN(control); + for (off = 0; off < tot_len; off += CMSG_ALIGN(cmh.cmsg_len)) { + rem_len = tot_len - off; + if (rem_len < (int)CMSG_ALIGN(sizeof(cmh))) { /* There is not enough room for one more. */ return (found); } - m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + m_copydata(control, off, sizeof(cmh), (caddr_t)&cmh); if (cmh.cmsg_len < CMSG_ALIGN(sizeof(cmh))) { /* We dont't have a complete CMSG header. */ return (found); } - if (((int)cmh.cmsg_len + at) > tlen) { + if ((cmh.cmsg_len > INT_MAX) || ((int)cmh.cmsg_len > rem_len)) { /* We don't have the complete CMSG. */ return (found); } + cmsg_data_len = (int)cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh)); + cmsg_data_off = off + CMSG_ALIGN(sizeof(cmh)); if ((cmh.cmsg_level == IPPROTO_SCTP) && ((c_type == cmh.cmsg_type) || ((c_type == SCTP_SNDRCV) && @@ -3598,17 +3595,20 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) (cmh.cmsg_type == SCTP_PRINFO) || (cmh.cmsg_type == SCTP_AUTHINFO))))) { if (c_type == cmh.cmsg_type) { - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < cpsize) { + if (cpsize > INT_MAX) { + return (found); + } + if (cmsg_data_len < (int)cpsize) { return (found); } /* It is exactly what we want. Copy it out. */ - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), cpsize, (caddr_t)data); + m_copydata(control, cmsg_data_off, (int)cpsize, (caddr_t)data); return (1); } else { struct sctp_sndrcvinfo *sndrcvinfo; sndrcvinfo = (struct sctp_sndrcvinfo *)data; - if (found == 0) { + if (!found) { if (cpsize < sizeof(struct sctp_sndrcvinfo)) { return (found); } @@ -3616,10 +3616,10 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) } switch (cmh.cmsg_type) { case SCTP_SNDINFO: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct sctp_sndinfo)) { + if (cmsg_data_len < (int)sizeof(struct sctp_sndinfo)) { return (found); } - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct sctp_sndinfo), (caddr_t)&sndinfo); + m_copydata(control, cmsg_data_off, sizeof(struct sctp_sndinfo), (caddr_t)&sndinfo); sndrcvinfo->sinfo_stream = sndinfo.snd_sid; sndrcvinfo->sinfo_flags = sndinfo.snd_flags; sndrcvinfo->sinfo_ppid = sndinfo.snd_ppid; @@ -3627,10 +3627,10 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) sndrcvinfo->sinfo_assoc_id = sndinfo.snd_assoc_id; break; case SCTP_PRINFO: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct sctp_prinfo)) { + if (cmsg_data_len < (int)sizeof(struct sctp_prinfo)) { return (found); } - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct sctp_prinfo), (caddr_t)&prinfo); + m_copydata(control, cmsg_data_off, sizeof(struct sctp_prinfo), (caddr_t)&prinfo); if (prinfo.pr_policy != SCTP_PR_SCTP_NONE) { sndrcvinfo->sinfo_timetolive = prinfo.pr_value; } else { @@ -3639,20 +3639,19 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) sndrcvinfo->sinfo_flags |= prinfo.pr_policy; break; case SCTP_AUTHINFO: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct sctp_authinfo)) { + if (cmsg_data_len < (int)sizeof(struct sctp_authinfo)) { return (found); } - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct sctp_authinfo), (caddr_t)&authinfo); + m_copydata(control, cmsg_data_off, sizeof(struct sctp_authinfo), (caddr_t)&authinfo); sndrcvinfo->sinfo_keynumber_valid = 1; sndrcvinfo->sinfo_keynumber = authinfo.auth_keynumber; break; default: return (found); } - found = 1; + found = true; } } - at += CMSG_ALIGN(cmh.cmsg_len); } return (found); } @@ -3660,12 +3659,11 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) static int sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *error) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) WSACMSGHDR cmh; #else struct cmsghdr cmh; #endif - int tlen, at; struct sctp_initmsg initmsg; #ifdef INET struct sockaddr_in sin; @@ -3673,34 +3671,37 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er #ifdef INET6 struct sockaddr_in6 sin6; #endif + int tot_len, rem_len, cmsg_data_len, cmsg_data_off, off; - tlen = SCTP_BUF_LEN(control); - at = 0; - while (at < tlen) { - if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { + tot_len = SCTP_BUF_LEN(control); + for (off = 0; off < tot_len; off += CMSG_ALIGN(cmh.cmsg_len)) { + rem_len = tot_len - off; + if (rem_len < (int)CMSG_ALIGN(sizeof(cmh))) { /* There is not enough room for one more. */ *error = EINVAL; return (1); } - m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + m_copydata(control, off, sizeof(cmh), (caddr_t)&cmh); if (cmh.cmsg_len < CMSG_ALIGN(sizeof(cmh))) { /* We dont't have a complete CMSG header. */ *error = EINVAL; return (1); } - if (((int)cmh.cmsg_len + at) > tlen) { + if ((cmh.cmsg_len > INT_MAX) || ((int)cmh.cmsg_len > rem_len)) { /* We don't have the complete CMSG. */ *error = EINVAL; return (1); } + cmsg_data_len = (int)cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh)); + cmsg_data_off = off + CMSG_ALIGN(sizeof(cmh)); if (cmh.cmsg_level == IPPROTO_SCTP) { switch (cmh.cmsg_type) { case SCTP_INIT: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct sctp_initmsg)) { + if (cmsg_data_len < (int)sizeof(struct sctp_initmsg)) { *error = EINVAL; return (1); } - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct sctp_initmsg), (caddr_t)&initmsg); + m_copydata(control, cmsg_data_off, sizeof(struct sctp_initmsg), (caddr_t)&initmsg); if (initmsg.sinit_max_attempts) stcb->asoc.max_init_times = initmsg.sinit_max_attempts; if (initmsg.sinit_num_ostreams) @@ -3734,8 +3735,8 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er } for (i = 0; i < stcb->asoc.streamoutcnt; i++) { TAILQ_INIT(&stcb->asoc.strmout[i].outqueue); + stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], NULL); stcb->asoc.strmout[i].chunks_on_queues = 0; - stcb->asoc.strmout[i].next_sequence_send = 0; #if defined(SCTP_DETAILED_STR_STATS) for (j = 0; j < SCTP_PR_SCTP_MAX + 1; j++) { stcb->asoc.strmout[i].abandoned_sent[j] = 0; @@ -3745,15 +3746,17 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er stcb->asoc.strmout[i].abandoned_sent[0] = 0; stcb->asoc.strmout[i].abandoned_unsent[0] = 0; #endif - stcb->asoc.strmout[i].stream_no = i; + stcb->asoc.strmout[i].next_mid_ordered = 0; + stcb->asoc.strmout[i].next_mid_unordered = 0; + stcb->asoc.strmout[i].sid = i; stcb->asoc.strmout[i].last_msg_incomplete = 0; - stcb->asoc.ss_functions.sctp_ss_init_stream(&stcb->asoc.strmout[i], NULL); + stcb->asoc.strmout[i].state = SCTP_STREAM_OPENING; } } break; #ifdef INET case SCTP_DSTADDRV4: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct in_addr)) { + if (cmsg_data_len < (int)sizeof(struct in_addr)) { *error = EINVAL; return (1); } @@ -3763,14 +3766,14 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er sin.sin_len = sizeof(struct sockaddr_in); #endif sin.sin_port = stcb->rport; - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct in_addr), (caddr_t)&sin.sin_addr); + m_copydata(control, cmsg_data_off, sizeof(struct in_addr), (caddr_t)&sin.sin_addr); if ((sin.sin_addr.s_addr == INADDR_ANY) || (sin.sin_addr.s_addr == INADDR_BROADCAST) || IN_MULTICAST(ntohl(sin.sin_addr.s_addr))) { *error = EINVAL; return (1); } - if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, NULL, + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, NULL, stcb->asoc.port, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { *error = ENOBUFS; return (1); @@ -3779,7 +3782,7 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er #endif #ifdef INET6 case SCTP_DSTADDRV6: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct in6_addr)) { + if (cmsg_data_len < (int)sizeof(struct in6_addr)) { *error = EINVAL; return (1); } @@ -3789,7 +3792,7 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er sin6.sin6_len = sizeof(struct sockaddr_in6); #endif sin6.sin6_port = stcb->rport; - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); + m_copydata(control, cmsg_data_off, sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); if (IN6_IS_ADDR_UNSPECIFIED(&sin6.sin6_addr) || IN6_IS_ADDR_MULTICAST(&sin6.sin6_addr)) { *error = EINVAL; @@ -3804,14 +3807,14 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er *error = EINVAL; return (1); } - if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, NULL, + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, NULL, stcb->asoc.port, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { *error = ENOBUFS; return (1); } } else #endif - if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin6, NULL, + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin6, NULL, stcb->asoc.port, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { *error = ENOBUFS; return (1); @@ -3822,11 +3825,11 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er break; } } - at += CMSG_ALIGN(cmh.cmsg_len); } return (0); } +#if defined(INET) || defined(INET6) static struct sctp_tcb * sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, uint16_t port, @@ -3834,12 +3837,11 @@ sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, struct sctp_nets **net_p, int *error) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) WSACMSGHDR cmh; #else struct cmsghdr cmh; #endif - int tlen, at; struct sctp_tcb *stcb; struct sockaddr *addr; #ifdef INET @@ -3848,31 +3850,34 @@ sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, #ifdef INET6 struct sockaddr_in6 sin6; #endif + int tot_len, rem_len, cmsg_data_len, cmsg_data_off, off; - tlen = SCTP_BUF_LEN(control); - at = 0; - while (at < tlen) { - if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { + tot_len = SCTP_BUF_LEN(control); + for (off = 0; off < tot_len; off += CMSG_ALIGN(cmh.cmsg_len)) { + rem_len = tot_len - off; + if (rem_len < (int)CMSG_ALIGN(sizeof(cmh))) { /* There is not enough room for one more. */ *error = EINVAL; return (NULL); } - m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + m_copydata(control, off, sizeof(cmh), (caddr_t)&cmh); if (cmh.cmsg_len < CMSG_ALIGN(sizeof(cmh))) { /* We dont't have a complete CMSG header. */ *error = EINVAL; return (NULL); } - if (((int)cmh.cmsg_len + at) > tlen) { + if ((cmh.cmsg_len > INT_MAX) || ((int)cmh.cmsg_len > rem_len)) { /* We don't have the complete CMSG. */ *error = EINVAL; return (NULL); } + cmsg_data_len = (int)cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh)); + cmsg_data_off = off + CMSG_ALIGN(sizeof(cmh)); if (cmh.cmsg_level == IPPROTO_SCTP) { switch (cmh.cmsg_type) { #ifdef INET case SCTP_DSTADDRV4: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct in_addr)) { + if (cmsg_data_len < (int)sizeof(struct in_addr)) { *error = EINVAL; return (NULL); } @@ -3882,13 +3887,13 @@ sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, sin.sin_len = sizeof(struct sockaddr_in); #endif sin.sin_port = port; - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct in_addr), (caddr_t)&sin.sin_addr); + m_copydata(control, cmsg_data_off, sizeof(struct in_addr), (caddr_t)&sin.sin_addr); addr = (struct sockaddr *)&sin; break; #endif #ifdef INET6 case SCTP_DSTADDRV6: - if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(cmh))) < sizeof(struct in6_addr)) { + if (cmsg_data_len < (int)sizeof(struct in6_addr)) { *error = EINVAL; return (NULL); } @@ -3898,7 +3903,7 @@ sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, sin6.sin6_len = sizeof(struct sockaddr_in6); #endif sin6.sin6_port = port; - m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); + m_copydata(control, cmsg_data_off, sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); #ifdef INET if (IN6_IS_ADDR_V4MAPPED(&sin6.sin6_addr)) { in6_sin6_2_sin(&sin, &sin6); @@ -3919,10 +3924,10 @@ sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, } } } - at += CMSG_ALIGN(cmh.cmsg_len); } return (NULL); } +#endif static struct mbuf * sctp_add_cookie(struct mbuf *init, int init_offset, @@ -3931,8 +3936,6 @@ sctp_add_cookie(struct mbuf *init, int init_offset, struct mbuf *copy_init, *copy_initack, *m_at, *sig, *mret; struct sctp_state_cookie *stc; struct sctp_paramhdr *ph; - uint8_t *foo; - int sig_offset; uint16_t cookie_sz; mret = sctp_get_mbuf_for_msg((sizeof(struct sctp_state_cookie) + @@ -3996,25 +3999,21 @@ sctp_add_cookie(struct mbuf *init, int init_offset, break; } } - sig = sctp_get_mbuf_for_msg(SCTP_SECRET_SIZE, 0, M_NOWAIT, 1, MT_DATA); + sig = sctp_get_mbuf_for_msg(SCTP_SIGNATURE_SIZE, 0, M_NOWAIT, 1, MT_DATA); if (sig == NULL) { /* no space, so free the entire chain */ sctp_m_freem(mret); return (NULL); } - SCTP_BUF_LEN(sig) = 0; SCTP_BUF_NEXT(m_at) = sig; - sig_offset = 0; - foo = (uint8_t *) (mtod(sig, caddr_t) + sig_offset); - memset(foo, 0, SCTP_SIGNATURE_SIZE); - *signature = foo; - SCTP_BUF_LEN(sig) += SCTP_SIGNATURE_SIZE; + SCTP_BUF_LEN(sig) = SCTP_SIGNATURE_SIZE; cookie_sz += SCTP_SIGNATURE_SIZE; ph->param_length = htons(cookie_sz); + *signature = (uint8_t *)mtod(sig, caddr_t); + memset(*signature, 0, SCTP_SIGNATURE_SIZE); return (mret); } - static uint8_t sctp_get_ect(struct sctp_tcb *stcb) { @@ -4088,15 +4087,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, uint32_t v_tag, uint16_t port, union sctp_sockstore *over_addr, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - int so_locked SCTP_UNUSED -#else - int so_locked -#endif - ) + bool use_zero_crc, + int so_locked) /* nofragment_flag to tell if IP_DF should be set (IPv4 only) */ { /** @@ -4112,9 +4107,6 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * interface and smallest_mtu size as well. */ /* Will need ifdefs around this */ -#ifdef __Panda__ - pakhandle_type o_pak; -#endif struct mbuf *newm; struct sctphdr *sctphdr; int packet_length; @@ -4123,18 +4115,16 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, uint32_t vrf_id; #endif #if defined(INET) || defined(INET6) -#if !defined(__Panda__) struct mbuf *o_pak; -#endif sctp_route_t *ro = NULL; struct udphdr *udp = NULL; #endif uint8_t tos_value; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so = NULL; #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); SCTP_TCB_LOCK_ASSERT(stcb); @@ -4175,7 +4165,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sctp_route_t iproute; int len; - len = sizeof(struct ip) + sizeof(struct sctphdr); + len = SCTP_MIN_V4_OVERHEAD; if (port) { len += sizeof(struct udphdr); } @@ -4189,7 +4179,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, SCTP_BUF_LEN(newm) = len; SCTP_BUF_NEXT(newm) = m; m = newm; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (net != NULL) { m->m_pkthdr.flowid = net->flowid; M_HASHTYPE_SET(m, net->flowtype); @@ -4207,53 +4197,44 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * This means especially, that it is not set at the * SCTP layer. So use the value from the IP layer. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Panda__) || defined(__Windows__) || defined(__Userspace__) tos_value = inp->ip_inp.inp.inp_ip_tos; -#else - tos_value = inp->inp_ip_tos; -#endif } tos_value &= 0xfc; if (ecn_ok) { tos_value |= sctp_get_ect(stcb); } - if ((nofragment_flag) && (port == 0)) { -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 1000000 + if ((nofragment_flag) && (port == 0)) { +#if defined(__FreeBSD__) && !defined(__Userspace__) ip->ip_off = htons(IP_DF); -#else - ip->ip_off = IP_DF; -#endif -#elif defined(WITH_CONVERT_IP_OFF) || defined(__APPLE__) || defined(__Userspace__) +#elif defined(WITH_CONVERT_IP_OFF) || defined(__APPLE__) ip->ip_off = IP_DF; #else ip->ip_off = htons(IP_DF); #endif } else { -#if defined(__FreeBSD__) && __FreeBSD_version >= 1000000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ip->ip_off = htons(0); #else ip->ip_off = 0; #endif } -#if defined(__FreeBSD__) +#if defined(__Userspace__) + ip->ip_id = htons(SCTP_IP_ID(inp)++); +#elif defined(__FreeBSD__) /* FreeBSD has a function for ip_id's */ - ip->ip_id = ip_newid(); -#elif defined(RANDOM_IP_ID) - /* Apple has RANDOM_IP_ID switch */ - ip->ip_id = htons(ip_randomid()); -#elif defined(__Userspace__) - ip->ip_id = htons(SCTP_IP_ID(inp)++); + ip_fillid(ip); +#elif defined(__APPLE__) +#if RANDOM_IP_ID + ip->ip_id = ip_randomid(); +#else + ip->ip_id = htons(ip_id++); +#endif #else ip->ip_id = SCTP_IP_ID(inp)++; #endif -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Panda__) || defined(__Windows__) || defined(__Userspace__) ip->ip_ttl = inp->ip_inp.inp.inp_ip_ttl; -#else - ip->ip_ttl = inp->inp_ip_ttl; -#endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 1000000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ip->ip_len = htons(packet_length); #else ip->ip_len = packet_length; @@ -4285,10 +4266,14 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; net->src_addr_selected = 0; +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(ro); +#else if (ro->ro_rt) { RTFREE(ro->ro_rt); ro->ro_rt = NULL; } +#endif } if (net->src_addr_selected == 0) { /* Cache the source address */ @@ -4324,7 +4309,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sctp_free_ifa(_lsrc); } else { ip->ip_src = over_addr->sin.sin_addr; - SCTP_RTALLOC(ro, vrf_id); + SCTP_RTALLOC(ro, vrf_id, inp->fibnum); } } if (port) { @@ -4337,9 +4322,9 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, udp = (struct udphdr *)((caddr_t)ip + sizeof(struct ip)); udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)); udp->uh_dport = port; - udp->uh_ulen = htons(packet_length - sizeof(struct ip)); -#if !defined(__Windows__) && !defined(__Userspace__) -#if defined(__FreeBSD__) && ((__FreeBSD_version > 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000) + udp->uh_ulen = htons((uint16_t)(packet_length - sizeof(struct ip))); +#if !defined(__Userspace__) +#if defined(__FreeBSD__) if (V_udp_cksum) { udp->uh_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr, udp->uh_ulen + htons(IPPROTO_UDP)); } else { @@ -4368,7 +4353,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * that somewhere and abort the association right away * (assuming this is an INIT being sent). */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ro->ro_nh == NULL) { +#else if (ro->ro_rt == NULL) { +#endif /* * src addr selection failed to find a route (or * valid source addr), so we can't get there from @@ -4386,8 +4375,13 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, (uint32_t) (ntohl(ip->ip_src.s_addr))); SCTPDBG(SCTP_DEBUG_OUTPUT3, "Destination is %x\n", (uint32_t)(ntohl(ip->ip_dst.s_addr))); +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTPDBG(SCTP_DEBUG_OUTPUT3, "RTP route is %p through\n", + (void *)ro->ro_nh); +#else SCTPDBG(SCTP_DEBUG_OUTPUT3, "RTP route is %p through\n", (void *)ro->ro_rt); +#endif if (SCTP_GET_HEADER_FOR_OUTPUT(o_pak)) { /* failed to prepend data, give up */ @@ -4397,51 +4391,56 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } SCTP_ATTACH_CHAIN(o_pak, m, packet_length); if (port) { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else - sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip) + sizeof(struct udphdr)); - SCTP_STAT_INCR(sctps_sendswcrc); -#endif -#if defined(__FreeBSD__) && ((__FreeBSD_version > 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000) + if (use_zero_crc) { + SCTP_STAT_INCR(sctps_sendzerocrc); + } else { + sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip) + sizeof(struct udphdr)); + SCTP_STAT_INCR(sctps_sendswcrc); + } +#if !defined(__Userspace__) +#if defined(__FreeBSD__) if (V_udp_cksum) { SCTP_ENABLE_UDP_CSUM(o_pak); } #else SCTP_ENABLE_UDP_CSUM(o_pak); +#endif #endif } else { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - m->m_pkthdr.csum_flags = CSUM_SCTP; - m->m_pkthdr.csum_data = offsetof(struct sctphdr, checksum); - SCTP_STAT_INCR(sctps_sendhwcrc); -#else - if (!(SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && - (stcb) && (stcb->asoc.scope.loopback_scope))) { - sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip)); - SCTP_STAT_INCR(sctps_sendswcrc); + if (use_zero_crc) { + SCTP_STAT_INCR(sctps_sendzerocrc); } else { - SCTP_STAT_INCR(sctps_sendnocrc); - } -#endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + m->m_pkthdr.csum_flags = CSUM_SCTP; + m->m_pkthdr.csum_data = offsetof(struct sctphdr, checksum); + SCTP_STAT_INCR(sctps_sendhwcrc); +#else + if (!(SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && + (stcb) && (stcb->asoc.scope.loopback_scope))) { + sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip)); + SCTP_STAT_INCR(sctps_sendswcrc); + } else { + SCTP_STAT_INCR(sctps_sendhwcrc); + } #endif + } } #ifdef SCTP_PACKET_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LAST_PACKET_TRACING) sctp_packet_log(o_pak); #endif /* send it out. table id is taken from stcb */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if ((SCTP_BASE_SYSCTL(sctp_output_unlocked)) && (so_locked)) { so = SCTP_INP_SO(inp); SCTP_SOCKET_UNLOCK(so, 0); } #endif - SCTP_IP_OUTPUT(ret, o_pak, ro, stcb, vrf_id); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(send, NULL, stcb, ip, stcb, sctphdr); +#endif + SCTP_IP_OUTPUT(ret, o_pak, ro, inp, vrf_id); +#if defined(__APPLE__) && !defined(__Userspace__) if ((SCTP_BASE_SYSCTL(sctp_output_unlocked)) && (so_locked)) { atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -4449,6 +4448,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); } +#endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (port) { + UDPSTAT_INC(udps_opackets); + } #endif SCTP_STAT_INCR(sctps_sendpackets); SCTP_STAT_INCR_COUNTER64(sctps_outpackets); @@ -4458,8 +4462,8 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, SCTPDBG(SCTP_DEBUG_OUTPUT3, "IP output returns %d\n", ret); if (net == NULL) { /* free tempy routes */ -#if defined(__FreeBSD__) && __FreeBSD_version > 901000 - RO_RTFREE(ro); +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(ro); #else if (ro->ro_rt) { RTFREE(ro->ro_rt); @@ -4467,19 +4471,35 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } #endif } else { - /* PMTU check versus smallest asoc MTU goes here */ - if ((ro->ro_rt != NULL) && - (net->ro._s_addr)) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if ((ro->ro_nh != NULL) && (net->ro._s_addr) && +#else + if ((ro->ro_rt != NULL) && (net->ro._s_addr) && +#endif + ((net->dest_state & SCTP_ADDR_NO_PMTUD) == 0)) { uint32_t mtu; + +#if defined(__FreeBSD__) && !defined(__Userspace__) + mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, ro->ro_nh); +#else mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, ro->ro_rt); - if (net->port) { - mtu -= sizeof(struct udphdr); - } - if (mtu && (stcb->asoc.smallest_mtu > mtu)) { - sctp_mtu_size_reset(inp, &stcb->asoc, mtu); - net->mtu = mtu; +#endif + if (mtu > 0) { + if (net->port) { + mtu -= sizeof(struct udphdr); + } + if (mtu < net->mtu) { + net->mtu = mtu; + if ((stcb != NULL) && (stcb->asoc.smallest_mtu > mtu)) { + sctp_pathmtu_adjustment(stcb, mtu, true); + } + } } +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if (ro->ro_nh == NULL) { +#else } else if (ro->ro_rt == NULL) { +#endif /* route was freed */ if (net->ro._s_addr && net->src_addr_selected) { @@ -4498,7 +4518,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, uint32_t flowlabel, flowinfo; struct ip6_hdr *ip6h; struct route_in6 ip6route; -#if !(defined(__Panda__) || defined(__Userspace__)) +#if !defined(__Userspace__) struct ifnet *ifp; #endif struct sockaddr_in6 *sin6, tmp, *lsa6, lsa6_tmp; @@ -4522,14 +4542,14 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * This means especially, that it is not set at the * SCTP layer. So use the value from the IP layer. */ -#if defined(__APPLE__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) +#if defined(__APPLE__) && !defined(__Userspace__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) flowlabel = ntohl(inp->ip_inp.inp.inp_flow); #else - flowlabel = ntohl(((struct in6pcb *)inp)->in6p_flowinfo); + flowlabel = ntohl(((struct inpcb *)inp)->inp_flow); #endif } flowlabel &= 0x000fffff; - len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr); + len = SCTP_MIN_OVERHEAD; if (port) { len += sizeof(struct udphdr); } @@ -4543,7 +4563,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, SCTP_BUF_LEN(newm) = len; SCTP_BUF_NEXT(newm) = m; m = newm; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (net != NULL) { m->m_pkthdr.flowid = net->flowid; M_HASHTYPE_SET(m, net->flowtype); @@ -4562,7 +4582,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #ifdef SCTP_EMBEDDED_V6_SCOPE /* KAME hack: embed scopeid */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) if (in6_embedscope(&sin6->sin6_addr, sin6, NULL, NULL) != 0) #else @@ -4575,6 +4595,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #endif { SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); + sctp_m_freem(m); return (EINVAL); } #endif /* SCTP_EMBEDDED_V6_SCOPE */ @@ -4598,12 +4619,10 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * This means especially, that it is not set at the * SCTP layer. So use the value from the IP layer. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Panda__) || defined(__Windows__) || defined(__Userspace__) -#if defined(__APPLE__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) +#if defined(__APPLE__) && !defined(__Userspace__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) tos_value = (ntohl(inp->ip_inp.inp.inp_flow) >> 20) & 0xff; #else - tos_value = (ntohl(((struct in6pcb *)inp)->in6p_flowinfo) >> 20) & 0xff; -#endif + tos_value = (ntohl(((struct inpcb *)inp)->inp_flow) >> 20) & 0xff; #endif } tos_value &= 0xfc; @@ -4621,7 +4640,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } else { ip6h->ip6_nxt = IPPROTO_SCTP; } - ip6h->ip6_plen = (packet_length - sizeof(struct ip6_hdr)); + ip6h->ip6_plen = htons((uint16_t)(packet_length - sizeof(struct ip6_hdr))); ip6h->ip6_dst = sin6->sin6_addr; /* @@ -4629,7 +4648,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * limited degree the kame src-addr-sel, since we can try * their selection but it may not be bound. */ - bzero(&lsa6_tmp, sizeof(lsa6_tmp)); + memset(&lsa6_tmp, 0, sizeof(lsa6_tmp)); lsa6_tmp.sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN lsa6_tmp.sin6_len = sizeof(lsa6_tmp); @@ -4640,16 +4659,20 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; net->src_addr_selected = 0; +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(ro); +#else if (ro->ro_rt) { RTFREE(ro->ro_rt); ro->ro_rt = NULL; } +#endif } if (net->src_addr_selected == 0) { #ifdef SCTP_EMBEDDED_V6_SCOPE sin6 = (struct sockaddr_in6 *)&net->ro._l_addr; /* KAME hack: embed scopeid */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) if (in6_embedscope(&sin6->sin6_addr, sin6, NULL, NULL) != 0) #else @@ -4662,6 +4685,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #endif { SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); + sctp_m_freem(m); return (EINVAL); } #endif /* SCTP_EMBEDDED_V6_SCOPE */ @@ -4694,7 +4718,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #ifdef SCTP_EMBEDDED_V6_SCOPE sin6 = (struct sockaddr_in6 *)&ro->ro_dst; /* KAME hack: embed scopeid */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) if (in6_embedscope(&sin6->sin6_addr, sin6, NULL, NULL) != 0) #else @@ -4707,6 +4731,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #endif { SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); + sctp_m_freem(m); return (EINVAL); } #endif /* SCTP_EMBEDDED_V6_SCOPE */ @@ -4727,7 +4752,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sctp_free_ifa(_lsrc); } else { lsa6->sin6_addr = over_addr->sin6.sin6_addr; - SCTP_RTALLOC(ro, vrf_id); + SCTP_RTALLOC(ro, vrf_id, inp->fibnum); } #ifdef SCTP_EMBEDDED_V6_SCOPE #ifdef SCTP_KAME @@ -4739,7 +4764,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } lsa6->sin6_port = inp->sctp_lport; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ro->ro_nh == NULL) { +#else if (ro->ro_rt == NULL) { +#endif /* * src addr selection failed to find a route (or * valid source addr), so we can't get there from @@ -4756,7 +4785,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * XXX: sa6 may not have a valid sin6_scope_id in the * non-SCOPEDROUTING case. */ - bzero(&lsa6_storage, sizeof(lsa6_storage)); + memset(&lsa6_storage, 0, sizeof(lsa6_storage)); lsa6_storage.sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN lsa6_storage.sin6_len = sizeof(lsa6_storage); @@ -4790,7 +4819,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, udp = (struct udphdr *)((caddr_t)ip6h + sizeof(struct ip6_hdr)); udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)); udp->uh_dport = port; - udp->uh_ulen = htons(packet_length - sizeof(struct ip6_hdr)); + udp->uh_ulen = htons((uint16_t)(packet_length - sizeof(struct ip6_hdr))); udp->uh_sum = 0; sctphdr = (struct sctphdr *)((caddr_t)udp + sizeof(struct udphdr)); } else { @@ -4807,7 +4836,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, * that our ro pointer is now filled */ ip6h->ip6_hlim = SCTP_GET_HLIM(inp, ro); -#if !(defined(__Panda__) || defined(__Userspace__)) +#if !defined(__Userspace__) ifp = SCTP_GET_IFN_VOID_FROM_ROUTE(ro); #endif @@ -4837,49 +4866,34 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } SCTP_ATTACH_CHAIN(o_pak, m, packet_length); if (port) { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip6_hdr) + sizeof(struct udphdr)); SCTP_STAT_INCR(sctps_sendswcrc); -#endif -#if defined(__Windows__) +#if !defined(__Userspace__) +#if defined(_WIN32) udp->uh_sum = 0; -#elif !defined(__Userspace__) +#else if ((udp->uh_sum = in6_cksum(o_pak, IPPROTO_UDP, sizeof(struct ip6_hdr), packet_length - sizeof(struct ip6_hdr))) == 0) { udp->uh_sum = 0xffff; } +#endif #endif } else { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 -#if __FreeBSD_version < 900000 - sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip6_hdr)); - SCTP_STAT_INCR(sctps_sendswcrc); -#else -#if __FreeBSD_version > 901000 +#if defined(__FreeBSD__) && !defined(__Userspace__) m->m_pkthdr.csum_flags = CSUM_SCTP_IPV6; -#else - m->m_pkthdr.csum_flags = CSUM_SCTP; -#endif m->m_pkthdr.csum_data = offsetof(struct sctphdr, checksum); SCTP_STAT_INCR(sctps_sendhwcrc); -#endif #else if (!(SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && (stcb) && (stcb->asoc.scope.loopback_scope))) { sctphdr->checksum = sctp_calculate_cksum(m, sizeof(struct ip6_hdr)); SCTP_STAT_INCR(sctps_sendswcrc); } else { - SCTP_STAT_INCR(sctps_sendnocrc); + SCTP_STAT_INCR(sctps_sendhwcrc); } -#endif #endif } /* send it out. table id is taken from stcb */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if ((SCTP_BASE_SYSCTL(sctp_output_unlocked)) && (so_locked)) { so = SCTP_INP_SO(inp); SCTP_SOCKET_UNLOCK(so, 0); @@ -4889,12 +4903,15 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LAST_PACKET_TRACING) sctp_packet_log(o_pak); #endif -#if !(defined(__Panda__) || defined(__Userspace__)) - SCTP_IP6_OUTPUT(ret, o_pak, (struct route_in6 *)ro, &ifp, stcb, vrf_id); +#if !defined(__Userspace__) +#if defined(__FreeBSD__) + SCTP_PROBE5(send, NULL, stcb, ip6h, stcb, sctphdr); +#endif + SCTP_IP6_OUTPUT(ret, o_pak, (struct route_in6 *)ro, &ifp, inp, vrf_id); #else - SCTP_IP6_OUTPUT(ret, o_pak, (struct route_in6 *)ro, NULL, stcb, vrf_id); + SCTP_IP6_OUTPUT(ret, o_pak, (struct route_in6 *)ro, NULL, inp, vrf_id); #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if ((SCTP_BASE_SYSCTL(sctp_output_unlocked)) && (so_locked)) { atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -4909,6 +4926,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, sin6->sin6_port = prev_port; } SCTPDBG(SCTP_DEBUG_OUTPUT3, "return from send is %d\n", ret); +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (port) { + UDPSTAT_INC(udps_opackets); + } +#endif SCTP_STAT_INCR(sctps_sendpackets); SCTP_STAT_INCR_COUNTER64(sctps_outpackets); if (ret) { @@ -4916,8 +4938,8 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } if (net == NULL) { /* Now if we had a temp route free it */ -#if defined(__FreeBSD__) && __FreeBSD_version > 901000 - RO_RTFREE(ro); +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(ro); #else if (ro->ro_rt) { RTFREE(ro->ro_rt); @@ -4926,7 +4948,11 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, #endif } else { /* PMTU check versus smallest asoc MTU goes here */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ro->ro_nh == NULL) { +#else if (ro->ro_rt == NULL) { +#endif /* Route was freed */ if (net->ro._s_addr && net->src_addr_selected) { @@ -4935,30 +4961,40 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } net->src_addr_selected = 0; } - if ((ro->ro_rt != NULL) && - (net->ro._s_addr)) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if ((ro->ro_nh != NULL) && (net->ro._s_addr) && +#else + if ((ro->ro_rt != NULL) && (net->ro._s_addr) && +#endif + ((net->dest_state & SCTP_ADDR_NO_PMTUD) == 0)) { uint32_t mtu; + +#if defined(__FreeBSD__) && !defined(__Userspace__) + mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, ro->ro_nh); +#else mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, ro->ro_rt); - if (mtu && - (stcb->asoc.smallest_mtu > mtu)) { - sctp_mtu_size_reset(inp, &stcb->asoc, mtu); - net->mtu = mtu; +#endif + if (mtu > 0) { if (net->port) { - net->mtu -= sizeof(struct udphdr); + mtu -= sizeof(struct udphdr); + } + if (mtu < net->mtu) { + net->mtu = mtu; + if ((stcb != NULL) && (stcb->asoc.smallest_mtu > mtu)) { + sctp_pathmtu_adjustment(stcb, mtu, false); + } } } } -#if !defined(__Panda__) && !defined(__Userspace__) - else if (ifp) { -#if defined(__Windows__) +#if !defined(__Userspace__) + else if (ifp != NULL) { +#if defined(_WIN32) #define ND_IFINFO(ifp) (ifp) #define linkmtu if_mtu #endif - if (ND_IFINFO(ifp)->linkmtu && + if ((ND_IFINFO(ifp)->linkmtu > 0) && (stcb->asoc.smallest_mtu > ND_IFINFO(ifp)->linkmtu)) { - sctp_mtu_size_reset(inp, - &stcb->asoc, - ND_IFINFO(ifp)->linkmtu); + sctp_pathmtu_adjustment(stcb, ND_IFINFO(ifp)->linkmtu, false); } } #endif @@ -4986,17 +5022,18 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, SCTP_BUF_NEXT(newm) = m; m = newm; packet_length = sctp_calculate_len(m); + m->m_pkthdr.len = packet_length; sctphdr = mtod(m, struct sctphdr *); sctphdr->src_port = src_port; sctphdr->dest_port = dest_port; sctphdr->v_tag = v_tag; sctphdr->checksum = 0; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else - sctphdr->checksum = sctp_calculate_cksum(m, 0); - SCTP_STAT_INCR(sctps_sendswcrc); -#endif + if (SCTP_BASE_VAR(crc32c_offloaded) == 0) { + sctphdr->checksum = sctp_calculate_cksum(m, 0); + SCTP_STAT_INCR(sctps_sendswcrc); + } else { + SCTP_STAT_INCR(sctps_sendhwcrc); + } if (tos_value == 0) { tos_value = inp->ip_inp.inp.inp_ip_tos; } @@ -5025,13 +5062,8 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp, } } - void -sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) +sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked) { struct mbuf *m, *m_last; struct sctp_nets *net; @@ -5041,10 +5073,10 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked struct sctp_supported_chunk_types_param *pr_supported; struct sctp_paramhdr *ph; int cnt_inits_to = 0; - int ret; + int error; uint16_t num_ext, chunk_len, padding_len, parameter_len; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { @@ -5137,6 +5169,15 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked chunk_len += parameter_len; } + /* Zero checksum acceptable parameter */ + if (stcb->asoc.zero_checksum > 0) { + parameter_len = (uint16_t)sizeof(struct sctp_paramhdr); + ph = (struct sctp_paramhdr *)(mtod(m, caddr_t) + chunk_len); + ph->param_type = htons(SCTP_ZERO_CHECKSUM_ACCEPTABLE); + ph->param_length = htons(parameter_len); + chunk_len += parameter_len; + } + /* Add NAT friendly parameter. */ if (SCTP_BASE_SYSCTL(sctp_inits_include_nat_friendly)) { parameter_len = (uint16_t)sizeof(struct sctp_paramhdr); @@ -5151,6 +5192,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked pr_supported = (struct sctp_supported_chunk_types_param *)(mtod(m, caddr_t) + chunk_len); if (stcb->asoc.prsctp_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (stcb->asoc.auth_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_AUTHENTICATION; @@ -5162,6 +5206,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked if (stcb->asoc.reconfig_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (stcb->asoc.nrsack_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; } @@ -5232,7 +5279,7 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked } /* now any cookie time extensions */ - if (stcb->asoc.cookie_preserve_req) { + if (stcb->asoc.cookie_preserve_req > 0) { struct sctp_cookie_perserve_param *cookie_preserve; if (padding_len > 0) { @@ -5298,23 +5345,33 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked } } SCTPDBG(SCTP_DEBUG_OUTPUT4, "Sending INIT - calls lowlevel_output\n"); - ret = sctp_lowlevel_chunk_output(inp, stcb, net, - (struct sockaddr *)&net->ro._l_addr, - m, 0, NULL, 0, 0, 0, 0, - inp->sctp_lport, stcb->rport, htonl(0), - net->port, NULL, -#if defined(__FreeBSD__) - 0, 0, -#endif - so_locked); - SCTPDBG(SCTP_DEBUG_OUTPUT4, "lowlevel_output - %d\n", ret); + if ((error = sctp_lowlevel_chunk_output(inp, stcb, net, + (struct sockaddr *)&net->ro._l_addr, + m, 0, NULL, 0, 0, 0, 0, + inp->sctp_lport, stcb->rport, htonl(0), + net->port, NULL, +#if defined(__FreeBSD__) && !defined(__Userspace__) + 0, 0, +#endif + false, so_locked))) { + SCTPDBG(SCTP_DEBUG_OUTPUT4, "Gak send error %d\n", error); + if (error == ENOBUFS) { + stcb->asoc.ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); + } + } else { + stcb->asoc.ifp_had_enobuf = 0; + } SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); } struct mbuf * sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, - int param_offset, int *abort_processing, struct sctp_chunkhdr *cp, int *nat_friendly) + int param_offset, int *abort_processing, + struct sctp_chunkhdr *cp, + int *nat_friendly, + int *cookie_found) { /* * Given a mbuf containing an INIT or INIT-ACK with the param_offset @@ -5332,18 +5389,20 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, */ struct sctp_paramhdr *phdr, params; - struct mbuf *mat, *op_err; - char tempbuf[SCTP_PARAM_BUFFER_SIZE]; + struct mbuf *mat, *m_tmp, *op_err, *op_err_last; int at, limit, pad_needed; uint16_t ptype, plen, padded_size; - int err_at; *abort_processing = 0; + if (cookie_found != NULL) { + *cookie_found = 0; + } mat = in_initpkt; - err_at = 0; limit = ntohs(cp->chunk_length) - sizeof(struct sctp_init_chunk); at = param_offset; op_err = NULL; + op_err_last = NULL; + pad_needed = 0; SCTPDBG(SCTP_DEBUG_OUTPUT1, "Check for unrecognized param's\n"); phdr = sctp_get_next_param(mat, at, ¶ms, sizeof(params)); while ((phdr != NULL) && ((size_t)limit >= sizeof(struct sctp_paramhdr))) { @@ -5366,12 +5425,17 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, switch (ptype) { /* Param's with variable size */ case SCTP_HEARTBEAT_INFO: - case SCTP_STATE_COOKIE: case SCTP_UNRECOG_PARAM: case SCTP_ERROR_CAUSE_IND: /* ok skip fwd */ at += padded_size; break; + case SCTP_STATE_COOKIE: + if (cookie_found != NULL) { + *cookie_found = 1; + } + at += padded_size; + break; /* Param's with variable size within a range */ case SCTP_CHUNK_LIST: case SCTP_SUPPORTED_CHUNK_EXT: @@ -5460,66 +5524,47 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, break; case SCTP_HOSTNAME_ADDRESS: { - /* We can NOT handle HOST NAME addresses!! */ + /* Hostname parameters are deprecated. */ + struct sctp_gen_error_cause *cause; int l_len; SCTPDBG(SCTP_DEBUG_OUTPUT1, "Can't handle hostname addresses.. abort processing\n"); *abort_processing = 1; - if (op_err == NULL) { - /* Ok need to try to get a mbuf */ + sctp_m_freem(op_err); + op_err = NULL; + op_err_last = NULL; #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif - l_len += plen; - l_len += sizeof(struct sctp_paramhdr); - op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); - if (op_err) { - SCTP_BUF_LEN(op_err) = 0; - /* - * pre-reserve space for ip and sctp - * header and chunk hdr - */ + l_len += sizeof(struct sctp_chunkhdr); + l_len += sizeof(struct sctp_gen_error_cause); + op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); + if (op_err != NULL) { + /* + * Pre-reserve space for IP, SCTP, and + * chunk header. + */ #ifdef INET6 - SCTP_BUF_RESV_UF(op_err, sizeof(struct ip6_hdr)); -#else - SCTP_BUF_RESV_UF(op_err, sizeof(struct ip)); -#endif - SCTP_BUF_RESV_UF(op_err, sizeof(struct sctphdr)); - SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); - } - } - if (op_err) { - /* If we have space */ - struct sctp_paramhdr s; - - if (err_at % 4) { - uint32_t cpthis = 0; - - pad_needed = 4 - (err_at % 4); - m_copyback(op_err, err_at, pad_needed, (caddr_t)&cpthis); - err_at += pad_needed; - } - s.param_type = htons(SCTP_CAUSE_UNRESOLVABLE_ADDR); - s.param_length = htons(sizeof(s) + plen); - m_copyback(op_err, err_at, sizeof(s), (caddr_t)&s); - err_at += sizeof(s); - phdr = sctp_get_next_param(mat, at, (struct sctp_paramhdr *)tempbuf, min(sizeof(tempbuf),plen)); - if (phdr == NULL) { + SCTP_BUF_RESV_UF(op_err, sizeof(struct ip6_hdr)); +#else + SCTP_BUF_RESV_UF(op_err, sizeof(struct ip)); +#endif + SCTP_BUF_RESV_UF(op_err, sizeof(struct sctphdr)); + SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); + SCTP_BUF_LEN(op_err) = sizeof(struct sctp_gen_error_cause); + cause = mtod(op_err, struct sctp_gen_error_cause *); + cause->code = htons(SCTP_CAUSE_UNRESOLVABLE_ADDR); + cause->length = htons((uint16_t)(sizeof(struct sctp_gen_error_cause) + plen)); + SCTP_BUF_NEXT(op_err) = SCTP_M_COPYM(mat, at, plen, M_NOWAIT); + if (SCTP_BUF_NEXT(op_err) == NULL) { sctp_m_freem(op_err); - /* - * we are out of memory but we still - * need to have a look at what to do - * (the system is in trouble - * though). - */ - return (NULL); + op_err = NULL; + op_err_last = NULL; } - m_copyback(op_err, err_at, plen, (caddr_t)phdr); } return (op_err); - break; } default: /* @@ -5534,11 +5579,11 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, int l_len; /* Ok need to try to get an mbuf */ #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif - l_len += plen; + l_len += sizeof(struct sctp_chunkhdr); l_len += sizeof(struct sctp_paramhdr); op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); if (op_err) { @@ -5550,41 +5595,55 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, #endif SCTP_BUF_RESV_UF(op_err, sizeof(struct sctphdr)); SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); + op_err_last = op_err; } } - if (op_err) { + if (op_err != NULL) { /* If we have space */ - struct sctp_paramhdr s; - - if (err_at % 4) { - uint32_t cpthis = 0; + struct sctp_paramhdr *param; - pad_needed = 4 - (err_at % 4); - m_copyback(op_err, err_at, pad_needed, (caddr_t)&cpthis); - err_at += pad_needed; + if (pad_needed > 0) { + op_err_last = sctp_add_pad_tombuf(op_err_last, pad_needed); + } + if (op_err_last == NULL) { + sctp_m_freem(op_err); + op_err = NULL; + op_err_last = NULL; + goto more_processing; } - s.param_type = htons(SCTP_UNRECOG_PARAM); - s.param_length = htons(sizeof(s) + plen); - m_copyback(op_err, err_at, sizeof(s), (caddr_t)&s); - err_at += sizeof(s); - if (plen > sizeof(tempbuf)) { - plen = sizeof(tempbuf); + if (M_TRAILINGSPACE(op_err_last) < (int)sizeof(struct sctp_paramhdr)) { + m_tmp = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), 0, M_NOWAIT, 1, MT_DATA); + if (m_tmp == NULL) { + sctp_m_freem(op_err); + op_err = NULL; + op_err_last = NULL; + goto more_processing; + } + SCTP_BUF_LEN(m_tmp) = 0; + SCTP_BUF_NEXT(m_tmp) = NULL; + SCTP_BUF_NEXT(op_err_last) = m_tmp; + op_err_last = m_tmp; } - phdr = sctp_get_next_param(mat, at, (struct sctp_paramhdr *)tempbuf, min(sizeof(tempbuf),plen)); - if (phdr == NULL) { + param = (struct sctp_paramhdr *)(mtod(op_err_last, caddr_t) + SCTP_BUF_LEN(op_err_last)); + param->param_type = htons(SCTP_UNRECOG_PARAM); + param->param_length = htons((uint16_t)sizeof(struct sctp_paramhdr) + plen); + SCTP_BUF_LEN(op_err_last) += sizeof(struct sctp_paramhdr); + SCTP_BUF_NEXT(op_err_last) = SCTP_M_COPYM(mat, at, plen, M_NOWAIT); + if (SCTP_BUF_NEXT(op_err_last) == NULL) { sctp_m_freem(op_err); - /* - * we are out of memory but - * we still need to have a - * look at what to do (the - * system is in trouble - * though). - */ op_err = NULL; + op_err_last = NULL; goto more_processing; + } else { + while (SCTP_BUF_NEXT(op_err_last) != NULL) { + op_err_last = SCTP_BUF_NEXT(op_err_last); + } + } + if (plen % 4 != 0) { + pad_needed = 4 - (plen % 4); + } else { + pad_needed = 0; } - m_copyback(op_err, err_at, plen, (caddr_t)phdr); - err_at += plen; } } more_processing: @@ -5597,7 +5656,6 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, at += SCTP_SIZE32(plen); } break; - } phdr = sctp_get_next_param(mat, at, ¶ms, sizeof(params)); } @@ -5605,13 +5663,18 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, invalid_size: SCTPDBG(SCTP_DEBUG_OUTPUT1, "abort flag set\n"); *abort_processing = 1; - if ((op_err == NULL) && phdr) { + sctp_m_freem(op_err); + op_err = NULL; + op_err_last = NULL; + if (phdr != NULL) { + struct sctp_paramhdr *param; int l_len; #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif + l_len += sizeof(struct sctp_chunkhdr); l_len += (2 * sizeof(struct sctp_paramhdr)); op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); if (op_err) { @@ -5623,44 +5686,34 @@ sctp_arethere_unrecognized_parameters(struct mbuf *in_initpkt, #endif SCTP_BUF_RESV_UF(op_err, sizeof(struct sctphdr)); SCTP_BUF_RESV_UF(op_err, sizeof(struct sctp_chunkhdr)); + SCTP_BUF_LEN(op_err) = 2 * sizeof(struct sctp_paramhdr); + param = mtod(op_err, struct sctp_paramhdr *); + param->param_type = htons(SCTP_CAUSE_PROTOCOL_VIOLATION); + param->param_length = htons(2 * sizeof(struct sctp_paramhdr)); + param++; + param->param_type = htons(ptype); + param->param_length = htons(plen); } } - if ((op_err) && phdr) { - struct sctp_paramhdr s; - - if (err_at % 4) { - uint32_t cpthis = 0; - - pad_needed = 4 - (err_at % 4); - m_copyback(op_err, err_at, pad_needed, (caddr_t)&cpthis); - err_at += pad_needed; - } - s.param_type = htons(SCTP_CAUSE_PROTOCOL_VIOLATION); - s.param_length = htons(sizeof(s) + sizeof(struct sctp_paramhdr)); - m_copyback(op_err, err_at, sizeof(s), (caddr_t)&s); - err_at += sizeof(s); - /* Only copy back the p-hdr that caused the issue */ - m_copyback(op_err, err_at, sizeof(struct sctp_paramhdr), (caddr_t)phdr); - } return (op_err); } -static int +/* + * Given a INIT chunk, look through the parameters to verify that there + * are no new addresses. + * Return true, if there is a new address or there is a problem parsing + the parameters. Provide an optional error cause used when sending an ABORT. + * Return false, if there are no new addresses and there is no problem in + parameter processing. + */ +static bool sctp_are_there_new_addresses(struct sctp_association *asoc, - struct mbuf *in_initpkt, int offset, struct sockaddr *src) + struct mbuf *in_initpkt, int offset, int limit, struct sockaddr *src, + struct mbuf **op_err) { - /* - * Given a INIT packet, look through the packet to verify that there - * are NO new addresses. As we go through the parameters add reports - * of any un-understood parameters that require an error. Also we - * must return (1) to drop the packet if we see a un-understood - * parameter that tells us to drop the chunk. - */ struct sockaddr *sa_touse; struct sockaddr *sa; struct sctp_paramhdr *phdr, params; - uint16_t ptype, plen; - uint8_t fnd; struct sctp_nets *net; #ifdef INET struct sockaddr_in sin4, *sa4; @@ -5668,7 +5721,13 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, #ifdef INET6 struct sockaddr_in6 sin6, *sa6; #endif +#if defined(__Userspace__) + struct sockaddr_conn *sac; +#endif + uint16_t ptype, plen; + bool fnd, check_src; + *op_err = NULL; #ifdef INET memset(&sin4, 0, sizeof(sin4)); sin4.sin_family = AF_INET; @@ -5684,62 +5743,123 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, #endif #endif /* First what about the src address of the pkt ? */ - fnd = 0; - TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - sa = (struct sockaddr *)&net->ro._l_addr; - if (sa->sa_family == src->sa_family) { + check_src = false; + switch (src->sa_family) { #ifdef INET - if (sa->sa_family == AF_INET) { - struct sockaddr_in *src4; - - sa4 = (struct sockaddr_in *)sa; - src4 = (struct sockaddr_in *)src; - if (sa4->sin_addr.s_addr == src4->sin_addr.s_addr) { - fnd = 1; - break; - } - } + case AF_INET: + if (asoc->scope.ipv4_addr_legal) { + check_src = true; + } + break; #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { - struct sockaddr_in6 *src6; - - sa6 = (struct sockaddr_in6 *)sa; - src6 = (struct sockaddr_in6 *)src; - if (SCTP6_ARE_ADDR_EQUAL(sa6, src6)) { - fnd = 1; - break; - } - } + case AF_INET6: + if (asoc->scope.ipv6_addr_legal) { + check_src = true; + } + break; #endif +#if defined(__Userspace__) + case AF_CONN: + if (asoc->scope.conn_addr_legal) { + check_src = true; } + break; +#endif + default: + /* TSNH */ + break; } - if (fnd == 0) { - /* New address added! no need to look futher. */ - return (1); - } - /* Ok so far lets munge through the rest of the packet */ - offset += sizeof(struct sctp_init_chunk); + if (check_src) { + fnd = false; + TAILQ_FOREACH(net, &asoc->nets, sctp_next) { + sa = (struct sockaddr *)&net->ro._l_addr; + if (sa->sa_family == src->sa_family) { +#ifdef INET + if (sa->sa_family == AF_INET) { + struct sockaddr_in *src4; + + sa4 = (struct sockaddr_in *)sa; + src4 = (struct sockaddr_in *)src; + if (sa4->sin_addr.s_addr == src4->sin_addr.s_addr) { + fnd = true; + break; + } + } +#endif +#ifdef INET6 + if (sa->sa_family == AF_INET6) { + struct sockaddr_in6 *src6; + + sa6 = (struct sockaddr_in6 *)sa; + src6 = (struct sockaddr_in6 *)src; + if (SCTP6_ARE_ADDR_EQUAL(sa6, src6)) { + fnd = true; + break; + } + } +#endif +#if defined(__Userspace__) + if (sa->sa_family == AF_CONN) { + struct sockaddr_conn *srcc; + + sac = (struct sockaddr_conn *)sa; + srcc = (struct sockaddr_conn *)src; + if (sac->sconn_addr == srcc->sconn_addr) { + fnd = true; + break; + } + } +#endif + } + } + if (!fnd) { + /* + * If sending an ABORT in case of an additional address, + * don't use the new address error cause. + * This looks no different than if no listener was + * present. + */ + *op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Address added"); + return (true); + } + } + /* Ok so far lets munge through the rest of the packet */ + offset += sizeof(struct sctp_init_chunk); phdr = sctp_get_next_param(in_initpkt, offset, ¶ms, sizeof(params)); while (phdr) { sa_touse = NULL; ptype = ntohs(phdr->param_type); plen = ntohs(phdr->param_length); + if (offset + plen > limit) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Partial parameter"); + return (true); + } + if (plen < sizeof(struct sctp_paramhdr)) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Parameter length too small"); + return (true); + } switch (ptype) { #ifdef INET case SCTP_IPV4_ADDRESS: { struct sctp_ipv4addr_param *p4, p4_buf; + if (plen != sizeof(struct sctp_ipv4addr_param)) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Parameter length illegal"); + return (true); + } phdr = sctp_get_next_param(in_initpkt, offset, (struct sctp_paramhdr *)&p4_buf, sizeof(p4_buf)); - if (plen != sizeof(struct sctp_ipv4addr_param) || - phdr == NULL) { - return (1); + if (phdr == NULL) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, ""); + return (true); + } + if (asoc->scope.ipv4_addr_legal) { + p4 = (struct sctp_ipv4addr_param *)phdr; + sin4.sin_addr.s_addr = p4->addr; + sa_touse = (struct sockaddr *)&sin4; } - p4 = (struct sctp_ipv4addr_param *)phdr; - sin4.sin_addr.s_addr = p4->addr; - sa_touse = (struct sockaddr *)&sin4; break; } #endif @@ -5748,16 +5868,22 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, { struct sctp_ipv6addr_param *p6, p6_buf; + if (plen != sizeof(struct sctp_ipv6addr_param)) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Parameter length illegal"); + return (true); + } phdr = sctp_get_next_param(in_initpkt, offset, (struct sctp_paramhdr *)&p6_buf, sizeof(p6_buf)); - if (plen != sizeof(struct sctp_ipv6addr_param) || - phdr == NULL) { - return (1); + if (phdr == NULL) { + *op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, ""); + return (true); + } + if (asoc->scope.ipv6_addr_legal) { + p6 = (struct sctp_ipv6addr_param *)phdr; + memcpy((caddr_t)&sin6.sin6_addr, p6->addr, + sizeof(p6->addr)); + sa_touse = (struct sockaddr *)&sin6; } - p6 = (struct sctp_ipv6addr_param *)phdr; - memcpy((caddr_t)&sin6.sin6_addr, p6->addr, - sizeof(p6->addr)); - sa_touse = (struct sockaddr *)&sin6; break; } #endif @@ -5767,7 +5893,7 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, } if (sa_touse) { /* ok, sa_touse points to one to check */ - fnd = 0; + fnd = false; TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sa = (struct sockaddr *)&net->ro._l_addr; if (sa->sa_family != sa_touse->sa_family) { @@ -5778,7 +5904,7 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, sa4 = (struct sockaddr_in *)sa; if (sa4->sin_addr.s_addr == sin4.sin_addr.s_addr) { - fnd = 1; + fnd = true; break; } } @@ -5788,21 +5914,31 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, sa6 = (struct sockaddr_in6 *)sa; if (SCTP6_ARE_ADDR_EQUAL( sa6, &sin6)) { - fnd = 1; + fnd = true; break; } } #endif } if (!fnd) { - /* New addr added! no need to look further */ - return (1); + /* + * If sending an ABORT in case of an additional + * address, don't use the new address error + * cause. + * This looks no different than if no listener + * was present. + */ + *op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Address added"); + return (true); } } offset += SCTP_SIZE32(plen); + if (offset >= limit) { + break; + } phdr = sctp_get_next_param(in_initpkt, offset, ¶ms, sizeof(params)); } - return (0); + return (false); } /* @@ -5813,13 +5949,14 @@ sctp_are_there_new_addresses(struct sctp_association *asoc, */ void sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct mbuf *init_pkt, int iphlen, int offset, + struct sctp_nets *src_net, struct mbuf *init_pkt, + int iphlen, int offset, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_init_chunk *init_chk, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, #endif - uint32_t vrf_id, uint16_t port, int hold_inp_lock) + uint32_t vrf_id, uint16_t port) { struct sctp_association *asoc; struct mbuf *m, *m_tmp, *m_last, *m_cookie, *op_err; @@ -5829,6 +5966,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_paramhdr *ph; union sctp_sockstore *over_addr; struct sctp_scoping scp; + struct timeval now; #ifdef INET struct sockaddr_in *dst4 = (struct sockaddr_in *)dst; struct sockaddr_in *src4 = (struct sockaddr_in *)src; @@ -5852,6 +5990,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint16_t his_limit, i_want; int abort_flag; int nat_friendly = 0; + int error; struct socket *so; uint16_t num_ext, chunk_len, padding_len, parameter_len; @@ -5861,40 +6000,56 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc = NULL; } if ((asoc != NULL) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_COOKIE_WAIT) && - (sctp_are_there_new_addresses(asoc, init_pkt, offset, src))) { - /* new addresses, out of here in non-cookie-wait states */ - /* - * Send a ABORT, we don't add the new address error clause - * though we even set the T bit and copy in the 0 tag.. this - * looks no different than if no listener was present. - */ - op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), - "Address added"); - sctp_send_abort(init_pkt, iphlen, src, dst, sh, 0, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, + (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT)) { + if (sctp_are_there_new_addresses(asoc, init_pkt, offset, offset + ntohs(init_chk->ch.chunk_length), src, &op_err)) { + /* + * new addresses, out of here in non-cookie-wait states + */ + sctp_send_abort(init_pkt, iphlen, src, dst, sh, 0, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif - vrf_id, port); - return; + vrf_id, port); + return; + } + if (src_net != NULL && (src_net->port != port)) { + /* + * change of remote encapsulation port, out of here in + * non-cookie-wait states + * + * Send an ABORT, without an specific error cause. + * This looks no different than if no listener + * was present. + */ + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + "Remote encapsulation port changed"); + sctp_send_abort(init_pkt, iphlen, src, dst, sh, 0, op_err, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, +#endif + vrf_id, port); + return; + } } abort_flag = 0; op_err = sctp_arethere_unrecognized_parameters(init_pkt, - (offset + sizeof(struct sctp_init_chunk)), - &abort_flag, (struct sctp_chunkhdr *)init_chk, &nat_friendly); + (offset + sizeof(struct sctp_init_chunk)), + &abort_flag, + (struct sctp_chunkhdr *)init_chk, + &nat_friendly, NULL); if (abort_flag) { do_a_abort: if (op_err == NULL) { char msg[SCTP_DIAG_INFO_LEN]; - snprintf(msg, sizeof(msg), "%s:%d at %s\n", __FILE__, __LINE__, __FUNCTION__); + SCTP_SNPRINTF(msg, sizeof(msg), "%s:%d at %s", __FILE__, __LINE__, __func__); op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), msg); } sctp_send_abort(init_pkt, iphlen, src, dst, sh, init_chk->init.initiate_tag, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); return; @@ -5902,8 +6057,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, m = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_NOWAIT, 1, MT_DATA); if (m == NULL) { /* No memory, INIT timer will re-attempt. */ - if (op_err) - sctp_m_freem(op_err); + sctp_m_freem(op_err); return; } chunk_len = (uint16_t)sizeof(struct sctp_init_ack_chunk); @@ -5918,7 +6072,9 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, memset(&stc, 0, sizeof(struct sctp_state_cookie)); /* the time I built cookie */ - (void)SCTP_GETTIME_TIMEVAL(&stc.time_entered); + (void)SCTP_GETTIME_TIMEVAL(&now); + stc.time_entered.tv_sec = now.tv_sec; + stc.time_entered.tv_usec = now.tv_usec; /* populate any tie tags */ if (asoc != NULL) { @@ -5939,7 +6095,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, stc.peerport = sh->src_port; /* - * If we wanted to honor cookie life extentions, we would add to + * If we wanted to honor cookie life extensions, we would add to * stc.cookie_life. For now we should NOT honor any extension */ stc.site_scope = stc.local_scope = stc.loopback_scope = 0; @@ -5967,11 +6123,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, stc.ipv4_addr_legal = 1; #endif } -#ifdef SCTP_DONT_DO_PRIVADDR_SCOPE - stc.ipv4_scope = 1; -#else stc.ipv4_scope = 0; -#endif if (net == NULL) { to = src; switch (dst->sa_family) { @@ -5992,13 +6144,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, stc.laddr_type = SCTP_IPV4_ADDRESS; /* scope_id is only for v6 */ stc.scope_id = 0; -#ifndef SCTP_DONT_DO_PRIVADDR_SCOPE - if (IN4_ISPRIVATE_ADDRESS(&src4->sin_addr)) { + if ((IN4_ISPRIVATE_ADDRESS(&src4->sin_addr)) || + (IN4_ISPRIVATE_ADDRESS(&dst4->sin_addr))) { stc.ipv4_scope = 1; } -#else - stc.ipv4_scope = 1; -#endif /* SCTP_DONT_DO_PRIVADDR_SCOPE */ /* Must use the address in this case */ if (sctp_is_address_on_local_host(src, vrf_id)) { stc.loopback_scope = 1; @@ -6014,8 +6163,8 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, { stc.addr_type = SCTP_IPV6_ADDRESS; memcpy(&stc.address, &src6->sin6_addr, sizeof(struct in6_addr)); -#if defined(__FreeBSD__) && (((__FreeBSD_version < 900000) && (__FreeBSD_version >= 804000)) || (__FreeBSD_version > 900000)) - stc.scope_id = in6_getscope(&src6->sin6_addr); +#if defined(__FreeBSD__) && !defined(__Userspace__) + stc.scope_id = ntohs(in6_getscope(&src6->sin6_addr)); #else stc.scope_id = 0; #endif @@ -6024,17 +6173,18 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, stc.local_scope = 0; stc.site_scope = 1; stc.ipv4_scope = 1; - } else if (IN6_IS_ADDR_LINKLOCAL(&src6->sin6_addr)) { + } else if (IN6_IS_ADDR_LINKLOCAL(&src6->sin6_addr) || + IN6_IS_ADDR_LINKLOCAL(&dst6->sin6_addr)) { /* - * If the new destination is a LINK_LOCAL we - * must have common both site and local - * scope. Don't set local scope though since - * we must depend on the source to be added - * implicitly. We cannot assure just because - * we share one link that all links are + * If the new destination or source is a + * LINK_LOCAL we must have common both site and + * local scope. Don't set local scope though + * since we must depend on the source to be + * added implicitly. We cannot assure just + * because we share one link that all links are * common. */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) /* Mac OS X currently doesn't have in6_getscope() */ stc.scope_id = src6->sin6_addr.s6_addr16[1]; #endif @@ -6049,10 +6199,12 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, */ cnt_inits_to = 1; /* pull out the scope_id from incoming pkt */ - } else if (IN6_IS_ADDR_SITELOCAL(&src6->sin6_addr)) { + } else if (IN6_IS_ADDR_SITELOCAL(&src6->sin6_addr) || + IN6_IS_ADDR_SITELOCAL(&dst6->sin6_addr)) { /* - * If the new destination is SITE_LOCAL then - * we must have site scope in common. + * If the new destination or source is + * SITE_LOCAL then we must have site scope in + * common. */ stc.site_scope = 1; } @@ -6132,11 +6284,13 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, net->ro._s_addr = sctp_source_address_selection(inp, stcb, (sctp_route_t *)&net->ro, net, 0, vrf_id); - if (net->ro._s_addr == NULL) + if (net->ro._s_addr == NULL) { + sctp_m_freem(op_err); + sctp_m_freem(m); return; + } net->src_addr_selected = 1; - } stc.laddress[0] = net->ro._s_addr->address.sin.sin_addr.s_addr; stc.laddress[1] = 0; @@ -6162,8 +6316,11 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, net->ro._s_addr = sctp_source_address_selection(inp, stcb, (sctp_route_t *)&net->ro, net, 0, vrf_id); - if (net->ro._s_addr == NULL) + if (net->ro._s_addr == NULL) { + sctp_m_freem(op_err); + sctp_m_freem(m); return; + } net->src_addr_selected = 1; } @@ -6192,10 +6349,15 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, #endif } } + if (asoc != NULL) { + stc.zero_checksum = asoc->zero_checksum > 0 ? 1 : 0; + } else { + stc.zero_checksum = inp->zero_checksum; + } /* Now lets put the SCTP header in place */ initack = mtod(m, struct sctp_init_ack_chunk *); /* Save it off for quick ref */ - stc.peers_vtag = init_chk->init.initiate_tag; + stc.peers_vtag = ntohl(init_chk->init.initiate_tag); /* who are we */ memcpy(stc.identification, SCTP_VERSION_STRING, min(strlen(SCTP_VERSION_STRING), sizeof(stc.identification))); @@ -6207,24 +6369,23 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, initack->ch.chunk_length = 0; /* place in my tag */ if ((asoc != NULL) && - ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_INUSE) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED))) { + ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_INUSE) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED))) { /* re-use the v-tags and init-seq here */ initack->init.initiate_tag = htonl(asoc->my_vtag); initack->init.initial_tsn = htonl(asoc->init_seq_number); } else { uint32_t vtag, itsn; - if (hold_inp_lock) { - SCTP_INP_INCR_REF(inp); - SCTP_INP_RUNLOCK(inp); - } + if (asoc) { atomic_add_int(&asoc->refcnt, 1); SCTP_TCB_UNLOCK(stcb); new_tag: + SCTP_INP_INFO_RLOCK(); vtag = sctp_select_a_tag(inp, inp->sctp_lport, sh->src_port, 1); - if ((asoc->peer_supports_nat) && (vtag == asoc->my_vtag)) { + SCTP_INP_INFO_RUNLOCK(); + if ((asoc->peer_supports_nat) && (vtag == asoc->my_vtag)) { /* Got a duplicate vtag on some guy behind a nat * make sure we don't use it. */ @@ -6235,14 +6396,16 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, itsn = sctp_select_initial_TSN(&inp->sctp_ep); initack->init.initial_tsn = htonl(itsn); SCTP_TCB_LOCK(stcb); - atomic_add_int(&asoc->refcnt, -1); + atomic_subtract_int(&asoc->refcnt, 1); } else { + SCTP_INP_INCR_REF(inp); + SCTP_INP_RUNLOCK(inp); + SCTP_INP_INFO_RLOCK(); vtag = sctp_select_a_tag(inp, inp->sctp_lport, sh->src_port, 1); + SCTP_INP_INFO_RUNLOCK(); initack->init.initiate_tag = htonl(vtag); /* get a TSN to use too */ initack->init.initial_tsn = htonl(sctp_select_initial_TSN(&inp->sctp_ep)); - } - if (hold_inp_lock) { SCTP_INP_RLOCK(inp); SCTP_INP_DECR_REF(inp); } @@ -6254,6 +6417,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, so = inp->sctp_socket; if (so == NULL) { /* memory problem */ + sctp_m_freem(op_err); sctp_m_freem(m); return; } else { @@ -6263,10 +6427,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, his_limit = ntohs(init_chk->init.num_inbound_streams); /* choose what I want */ if (asoc != NULL) { - if (asoc->streamoutcnt > inp->sctp_ep.pre_open_stream_count) { + if (asoc->streamoutcnt > asoc->pre_open_streams) { i_want = asoc->streamoutcnt; } else { - i_want = inp->sctp_ep.pre_open_stream_count; + i_want = asoc->pre_open_streams; } } else { i_want = inp->sctp_ep.pre_open_stream_count; @@ -6312,6 +6476,16 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, chunk_len += parameter_len; } + /* Zero checksum acceptable parameter */ + if (((asoc != NULL) && (asoc->zero_checksum > 0)) || + ((asoc == NULL) && (inp->zero_checksum == 1))) { + parameter_len = (uint16_t)sizeof(struct sctp_paramhdr); + ph = (struct sctp_paramhdr *)(mtod(m, caddr_t) + chunk_len); + ph->param_type = htons(SCTP_ZERO_CHECKSUM_ACCEPTABLE); + ph->param_length = htons(parameter_len); + chunk_len += parameter_len; + } + /* Add NAT friendly parameter */ if (nat_friendly) { parameter_len = (uint16_t)sizeof(struct sctp_paramhdr); @@ -6327,6 +6501,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if (((asoc != NULL) && (asoc->prsctp_supported == 1)) || ((asoc == NULL) && (inp->prsctp_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (((asoc != NULL) && (asoc->auth_supported == 1)) || ((asoc == NULL) && (inp->auth_supported == 1))) { @@ -6341,6 +6519,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, ((asoc == NULL) && (inp->reconfig_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (((asoc != NULL) && (asoc->nrsack_supported == 1)) || ((asoc == NULL) && (inp->nrsack_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; @@ -6356,7 +6538,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, padding_len = SCTP_SIZE32(parameter_len) - parameter_len; chunk_len += parameter_len; } - + /* add authentication parameters */ if (((asoc != NULL) && (asoc->auth_supported == 1)) || ((asoc == NULL) && (inp->auth_supported == 1))) { @@ -6529,22 +6711,34 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, over_addr = NULL; } - (void)sctp_lowlevel_chunk_output(inp, NULL, NULL, to, m, 0, NULL, 0, 0, - 0, 0, - inp->sctp_lport, sh->src_port, init_chk->init.initiate_tag, - port, over_addr, -#if defined(__FreeBSD__) - mflowtype, mflowid, + if ((error = sctp_lowlevel_chunk_output(inp, NULL, NULL, to, m, 0, NULL, 0, 0, + 0, 0, + inp->sctp_lport, sh->src_port, init_chk->init.initiate_tag, + port, over_addr, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, #endif - SCTP_SO_NOT_LOCKED); + false, /* XXXMT: Improve this! */ + SCTP_SO_NOT_LOCKED))) { + SCTPDBG(SCTP_DEBUG_OUTPUT4, "Gak send error %d\n", error); + if (error == ENOBUFS) { + if (asoc != NULL) { + asoc->ifp_had_enobuf = 1; + } + SCTP_STAT_INCR(sctps_lowlevelerr); + } + } else { + if (asoc != NULL) { + asoc->ifp_had_enobuf = 0; + } + } SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); } - static void sctp_prune_prsctp(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_sndrcvinfo *srcv, + struct sctp_nonpad_sndrcvinfo *srcv, int dataout) { int freed_spc = 0; @@ -6565,13 +6759,13 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, * This one is PR-SCTP AND buffer space * limited type */ - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { /* * Lower numbers equates to higher - * priority so if the one we are - * looking at has a larger or equal - * priority we want to drop the data - * and NOT retransmit it. + * priority. So if the one we are + * looking at has a larger priority, + * we want to drop the data and NOT + * retransmit it. */ if (chk->data) { /* @@ -6593,14 +6787,14 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, return; } } /* if chunk was present */ - } /* if of sufficent priority */ + } /* if of sufficient priority */ } /* if chunk has enabled */ } /* tailqforeach */ TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { /* Here we must move to the sent queue and mark */ if (PR_SCTP_BUF_ENABLED(chk->flags)) { - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { if (chk->data) { /* * We release the book_size @@ -6622,43 +6816,57 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, } /* if enabled in asoc */ } -int -sctp_get_frag_point(struct sctp_tcb *stcb, - struct sctp_association *asoc) +uint32_t +sctp_get_frag_point(struct sctp_tcb *stcb) { - int siz, ovh; + struct sctp_association *asoc; + uint32_t frag_point, overhead; - /* - * For endpoints that have both v6 and v4 addresses we must reserve - * room for the ipv6 header, for those that are only dealing with V4 - * we use a larger frag point. - */ + asoc = &stcb->asoc; + /* Consider IP header and SCTP common header. */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; + overhead = SCTP_MIN_OVERHEAD; } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - - if (stcb->asoc.sctp_frag_point > asoc->smallest_mtu) - siz = asoc->smallest_mtu - ovh; - else - siz = (stcb->asoc.sctp_frag_point - ovh); - /* - * if (siz > (MCLBYTES-sizeof(struct sctp_data_chunk))) { - */ - /* A data chunk MUST fit in a cluster */ - /* siz = (MCLBYTES - sizeof(struct sctp_data_chunk)); */ - /* } */ - - /* adjust for an AUTH chunk if DATA requires auth */ - if (sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.peer_auth_chunks)) - siz -= sctp_get_auth_chunk_len(stcb->asoc.peer_hmac_id); - - if (siz % 4) { - /* make it an even word boundary please */ - siz -= (siz % 4); +#if defined(__Userspace__) + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) { + overhead = sizeof(struct sctphdr); + } else { + overhead = SCTP_MIN_V4_OVERHEAD; + } +#else + overhead = SCTP_MIN_V4_OVERHEAD; +#endif } - return (siz); + /* Consider DATA/IDATA chunk header and AUTH header, if needed. */ + if (asoc->idata_supported) { + overhead += sizeof(struct sctp_idata_chunk); + if (sctp_auth_is_required_chunk(SCTP_IDATA, asoc->peer_auth_chunks)) { + overhead += sctp_get_auth_chunk_len(asoc->peer_hmac_id); + } + } else { + overhead += sizeof(struct sctp_data_chunk); + if (sctp_auth_is_required_chunk(SCTP_DATA, asoc->peer_auth_chunks)) { + overhead += sctp_get_auth_chunk_len(asoc->peer_hmac_id); + } + } + KASSERT(overhead % 4 == 0, + ("overhead (%u) not a multiple of 4", overhead)); + /* Consider padding. */ + if (asoc->smallest_mtu % 4 > 0) { + overhead += (asoc->smallest_mtu % 4); + } + KASSERT(asoc->smallest_mtu > overhead, + ("Association MTU (%u) too small for overhead (%u)", + asoc->smallest_mtu, overhead)); + frag_point = asoc->smallest_mtu - overhead; + KASSERT(frag_point % 4 == 0, + ("frag_point (%u) not a multiple of 4", frag_point)); + /* Honor MAXSEG socket option. */ + if ((asoc->sctp_frag_point > 0) && + (asoc->sctp_frag_point < frag_point)) { + frag_point = asoc->sctp_frag_point; + } + return (frag_point); } static void @@ -6695,7 +6903,7 @@ sctp_set_prsctp_policy(struct sctp_stream_queue_pending *sp) /* TODO sctp_constants.h needs alternative time macros when * _KERNEL is undefined. */ -#ifndef __FreeBSD__ +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) timeradd(&sp->ts, &tv, &sp->ts); #else timevaladd(&sp->ts, &tv); @@ -6722,13 +6930,15 @@ static int sctp_msg_append(struct sctp_tcb *stcb, struct sctp_nets *net, struct mbuf *m, - struct sctp_sndrcvinfo *srcv, int hold_stcb_lock) + struct sctp_nonpad_sndrcvinfo *srcv) { int error = 0; struct mbuf *at; struct sctp_stream_queue_pending *sp = NULL; struct sctp_stream_out *strm; + SCTP_TCB_LOCK_ASSERT(stcb); + /* Given an mbuf chain, put it * into the association send queue and * place it on the wheel @@ -6745,15 +6955,26 @@ sctp_msg_append(struct sctp_tcb *stcb, error = EINVAL; goto out_now; } - strm = &stcb->asoc.strmout[srcv->sinfo_stream]; + if ((stcb->asoc.strmout[srcv->sinfo_stream].state != SCTP_STREAM_OPEN) && + (stcb->asoc.strmout[srcv->sinfo_stream].state != SCTP_STREAM_OPENING)) { + /* + * Can't queue any data while stream reset is underway. + */ + if (stcb->asoc.strmout[srcv->sinfo_stream].state > SCTP_STREAM_OPEN) { + error = EAGAIN; + } else { + error = EINVAL; + } + goto out_now; + } /* Now can we send this? */ - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_SENT) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) || + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) || (stcb->asoc.state & SCTP_STATE_SHUTDOWN_PENDING)) { /* got data while shutting down */ - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ECONNRESET); - error = ECONNRESET; + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EPIPE); + error = EPIPE; goto out_now; } sctp_alloc_a_strmoq(stcb, sp); @@ -6766,6 +6987,7 @@ sctp_msg_append(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; if (sp->sinfo_flags & SCTP_ADDR_OVER) { sp->net = net; atomic_add_int(&sp->net->ref_count, 1); @@ -6773,7 +6995,7 @@ sctp_msg_append(struct sctp_tcb *stcb, sp->net = NULL; } (void)SCTP_GETTIME_TIMEVAL(&sp->ts); - sp->stream = srcv->sinfo_stream; + sp->sid = srcv->sinfo_stream; sp->msg_is_complete = 1; sp->sender_all_done = 1; sp->some_taken = 0; @@ -6799,17 +7021,12 @@ sctp_msg_append(struct sctp_tcb *stcb, sctp_auth_key_acquire(stcb, sp->auth_keyid); sp->holds_key_ref = 1; } - if (hold_stcb_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + strm = &stcb->asoc.strmout[srcv->sinfo_stream]; sctp_snd_sb_alloc(stcb, sp->length); atomic_add_int(&stcb->asoc.stream_queue_cnt, 1); TAILQ_INSERT_TAIL(&strm->outqueue, sp, next); - stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, &stcb->asoc, strm, sp, 1); + stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, &stcb->asoc, strm, sp); m = NULL; - if (hold_stcb_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); - } out_now: if (m) { sctp_m_freem(m); @@ -6817,7 +7034,6 @@ sctp_msg_append(struct sctp_tcb *stcb, return (error); } - static struct mbuf * sctp_copy_mbufchain(struct mbuf *clonechain, struct mbuf *outchain, @@ -6842,12 +7058,7 @@ sctp_copy_mbufchain(struct mbuf *clonechain, appendchain = clonechain; } else { if (!copy_by_ref && -#if defined(__Panda__) - 0 -#else - (sizeofcpy <= (int)((((SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count) - 1) * MLEN) + MHLEN))) -#endif - ) { + (sizeofcpy <= (int)((((SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count) - 1) * MLEN) + MHLEN)))) { /* Its not in a cluster */ if (*endofchain == NULL) { /* lets get a mbuf cluster */ @@ -6881,10 +7092,10 @@ sctp_copy_mbufchain(struct mbuf *clonechain, } } /* get the new end of length */ - len = M_TRAILINGSPACE(*endofchain); + len = (int)M_TRAILINGSPACE(*endofchain); } else { /* how much is left at the end? */ - len = M_TRAILINGSPACE(*endofchain); + len = (int)M_TRAILINGSPACE(*endofchain); } /* Find the end of the data, for appending */ cp = (mtod((*endofchain), caddr_t) + SCTP_BUF_LEN((*endofchain))); @@ -6946,7 +7157,7 @@ sctp_copy_mbufchain(struct mbuf *clonechain, } /* * save off the end and update the end-chain - * postion + * position */ m = appendchain; while (m) { @@ -6958,7 +7169,7 @@ sctp_copy_mbufchain(struct mbuf *clonechain, } return (outchain); } else { - /* save off the end and update the end-chain postion */ + /* save off the end and update the end-chain position */ m = appendchain; while (m) { if (SCTP_BUF_NEXT(m) == NULL) { @@ -6978,11 +7189,8 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, int *num_out, int *reason_code, int control_only, int from_where, - struct timeval *now, int *now_filled, int frag_point, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); + struct timeval *now, int *now_filled, + uint32_t frag_point, int so_locked); static void sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, @@ -7039,13 +7247,13 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, ph = mtod(m, struct sctp_paramhdr *); ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT); - ph->param_length = htons(sizeof(struct sctp_paramhdr) + ca->sndlen); + ph->param_length = htons((uint16_t)(sizeof(struct sctp_paramhdr) + ca->sndlen)); } /* We add one here to keep the assoc from * dis-appearing on us. */ atomic_add_int(&stcb->asoc.refcnt, 1); - sctp_abort_an_association(inp, stcb, m, SCTP_SO_NOT_LOCKED); + sctp_abort_an_association(inp, stcb, m, false, SCTP_SO_NOT_LOCKED); /* sctp_abort_an_association calls sctp_free_asoc() * free association will NOT free it since we * incremented the refcnt .. we do this to prevent @@ -7058,41 +7266,36 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, * must relock.. to unlock in the iterator timer :-0 */ SCTP_TCB_LOCK(stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); goto no_chunk_output; } else { - if (m) { - ret = sctp_msg_append(stcb, net, m, - &ca->sndrcv, 1); + if (m != NULL) { + ret = sctp_msg_append(stcb, net, m, &ca->sndrcv); } asoc = &stcb->asoc; if (ca->sndrcv.sinfo_flags & SCTP_EOF) { /* shutdown this assoc */ - int cnt; - cnt = sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED); - if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && - (cnt == 0)) { - if (asoc->locked_on_sending) { + sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED) == 0) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { goto abort_anyway; } /* there is nothing queued to send, so I'm done... */ - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { /* only send SHUTDOWN the first time through */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); sctp_stop_timers_for_shutdown(stcb); sctp_send_shutdown(stcb, net); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - asoc->primary_destination); + NULL); added_control = 1; do_chunk_output = 0; } @@ -7107,38 +7310,38 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, * data to be sent first and move to * SHUTDOWN-PENDING */ - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { - if (asoc->locked_on_sending) { - /* Locked to send out the data */ - struct sctp_stream_queue_pending *sp; - sp = TAILQ_LAST(&asoc->locked_on_sending->outqueue, sctp_streamhead); - if (sp) { - if ((sp->length == 0) && (sp->msg_is_complete == 0)) - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - } + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); } - asoc->state |= SCTP_STATE_SHUTDOWN_PENDING; + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + abort_anyway: + SCTP_SNPRINTF(msg, sizeof(msg), + "%s:%d at %s", __FILE__, __LINE__, __func__); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + msg); atomic_add_int(&stcb->asoc.refcnt, 1); sctp_abort_an_association(stcb->sctp_ep, stcb, - NULL, SCTP_SO_NOT_LOCKED); - atomic_add_int(&stcb->asoc.refcnt, -1); + op_err, false, SCTP_SO_NOT_LOCKED); + atomic_subtract_int(&stcb->asoc.refcnt, 1); goto no_chunk_output; } sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - asoc->primary_destination); + NULL); } } - } } un_sent = ((stcb->asoc.total_output_queue_size - stcb->asoc.total_flight) + - (stcb->asoc.stream_queue_cnt * sizeof(struct sctp_data_chunk))); + (stcb->asoc.stream_queue_cnt * SCTP_DATA_CHUNK_OVERHEAD(stcb))); if ((sctp_is_feature_off(inp, SCTP_PCB_FLAGS_NODELAY)) && (stcb->asoc.total_flight > 0) && @@ -7148,13 +7351,13 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, if (do_chunk_output) sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_NOT_LOCKED); else if (added_control) { - int num_out, reason, now_filled = 0; struct timeval now; - int frag_point; + int num_out, reason, now_filled = 0; - frag_point = sctp_get_frag_point(stcb, &stcb->asoc); (void)sctp_med_chunk_output(inp, stcb, &stcb->asoc, &num_out, - &reason, 1, 1, &now, &now_filled, frag_point, SCTP_SO_NOT_LOCKED); + &reason, 1, 1, &now, &now_filled, + sctp_get_frag_point(stcb), + SCTP_SO_NOT_LOCKED); } no_chunk_output: if (ret) { @@ -7173,22 +7376,28 @@ sctp_sendall_completes(void *ptr, uint32_t val SCTP_UNUSED) /* * Do a notify here? Kacheong suggests that the notify be done at * the send time.. so you would push up a notification if any send - * failed. Don't know if this is feasable since the only failures we + * failed. Don't know if this is feasible since the only failures we * have is "memory" related and if you cannot get an mbuf to send * the data you surely can't get an mbuf to send up to notify the * user you can't send the data :-> */ /* now free everything */ + if (ca->inp) { + /* Lets clear the flag to allow others to run. */ + SCTP_INP_WLOCK(ca->inp); + ca->inp->sctp_flags &= ~SCTP_PCB_FLAGS_SND_ITERATOR_UP; + SCTP_INP_WUNLOCK(ca->inp); + } sctp_m_freem(ca->m); SCTP_FREE(ca, SCTP_M_COPYAL); } static struct mbuf * -sctp_copy_out_all(struct uio *uio, int len) +sctp_copy_out_all(struct uio *uio, ssize_t len) { struct mbuf *ret, *at; - int left, willcpy, cancpy, error; + ssize_t left, willcpy, cancpy, error; ret = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_WAITOK, 1, MT_DATA); if (ret == NULL) { @@ -7198,28 +7407,28 @@ sctp_copy_out_all(struct uio *uio, int len) left = len; SCTP_BUF_LEN(ret) = 0; /* save space for the data chunk header */ - cancpy = M_TRAILINGSPACE(ret); + cancpy = (int)M_TRAILINGSPACE(ret); willcpy = min(cancpy, left); at = ret; while (left > 0) { /* Align data to the end */ - error = uiomove(mtod(at, caddr_t), willcpy, uio); + error = uiomove(mtod(at, caddr_t), (int)willcpy, uio); if (error) { err_out_now: sctp_m_freem(at); return (NULL); } - SCTP_BUF_LEN(at) = willcpy; + SCTP_BUF_LEN(at) = (int)willcpy; SCTP_BUF_NEXT_PKT(at) = SCTP_BUF_NEXT(at) = 0; left -= willcpy; if (left > 0) { - SCTP_BUF_NEXT(at) = sctp_get_mbuf_for_msg(left, 0, M_WAITOK, 1, MT_DATA); + SCTP_BUF_NEXT(at) = sctp_get_mbuf_for_msg((unsigned int)left, 0, M_WAITOK, 1, MT_DATA); if (SCTP_BUF_NEXT(at) == NULL) { goto err_out_now; } at = SCTP_BUF_NEXT(at); SCTP_BUF_LEN(at) = 0; - cancpy = M_TRAILINGSPACE(at); + cancpy = (int)M_TRAILINGSPACE(at); willcpy = min(cancpy, left); } } @@ -7228,11 +7437,23 @@ sctp_copy_out_all(struct uio *uio, int len) static int sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, - struct sctp_sndrcvinfo *srcv) + struct sctp_nonpad_sndrcvinfo *srcv) { int ret; struct sctp_copy_all *ca; +#if defined(__APPLE__) && !defined(__Userspace__) +#if defined(APPLE_LEOPARD) + if (uio->uio_resid > SCTP_BASE_SYSCTL(sctp_sendall_limit)) { +#else + if (uio_resid(uio) > SCTP_BASE_SYSCTL(sctp_sendall_limit)) { +#endif +#else + if (uio->uio_resid > (ssize_t)SCTP_BASE_SYSCTL(sctp_sendall_limit)) { +#endif + /* You must not be larger than the limit! */ + return (EMSGSIZE); + } SCTP_MALLOC(ca, struct sctp_copy_all *, sizeof(struct sctp_copy_all), SCTP_M_COPYAL); if (ca == NULL) { @@ -7243,9 +7464,21 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, memset(ca, 0, sizeof(struct sctp_copy_all)); ca->inp = inp; - if (srcv) { + if (srcv != NULL) { memcpy(&ca->sndrcv, srcv, sizeof(struct sctp_nonpad_sndrcvinfo)); } + + /* Serialize. */ + SCTP_INP_WLOCK(inp); + if ((inp->sctp_flags & SCTP_PCB_FLAGS_SND_ITERATOR_UP) != 0) { + SCTP_INP_WUNLOCK(inp); + sctp_m_freem(m); + SCTP_FREE(ca, SCTP_M_COPYAL); + return (EBUSY); + } + inp->sctp_flags |= SCTP_PCB_FLAGS_SND_ITERATOR_UP; + SCTP_INP_WUNLOCK(inp); + /* * take off the sendall flag, it would be bad if we failed to do * this :-0 @@ -7253,7 +7486,7 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, ca->sndrcv.sinfo_flags &= ~SCTP_SENDALL; /* get length and mbuf chain */ if (uio) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) ca->sndlen = uio->uio_resid; #else @@ -7262,15 +7495,19 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, #else ca->sndlen = uio->uio_resid; #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(SCTP_INP_SO(inp), 0); #endif ca->m = sctp_copy_out_all(uio, ca->sndlen); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(SCTP_INP_SO(inp), 0); #endif if (ca->m == NULL) { SCTP_FREE(ca, SCTP_M_COPYAL); + sctp_m_freem(m); + SCTP_INP_WLOCK(inp); + inp->sctp_flags &= ~SCTP_PCB_FLAGS_SND_ITERATOR_UP; + SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); return (ENOMEM); } @@ -7289,7 +7526,9 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, (void *)ca, 0, sctp_sendall_completes, inp, 1); if (ret) { - SCTP_PRINTF("Failed to initiate iterator for sendall\n"); + SCTP_INP_WLOCK(inp); + inp->sctp_flags &= ~SCTP_PCB_FLAGS_SND_ITERATOR_UP; + SCTP_INP_WUNLOCK(inp); SCTP_FREE(ca, SCTP_M_COPYAL); SCTP_LTRACE_ERR_RET_PKT(m, inp, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); return (EFAULT); @@ -7297,7 +7536,6 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m, return (0); } - void sctp_toss_old_cookies(struct sctp_tcb *stcb, struct sctp_association *asoc) { @@ -7306,11 +7544,11 @@ sctp_toss_old_cookies(struct sctp_tcb *stcb, struct sctp_association *asoc) TAILQ_FOREACH_SAFE(chk, &asoc->control_send_queue, sctp_next, nchk) { if (chk->rec.chunk_id.id == SCTP_COOKIE_ECHO) { TAILQ_REMOVE(&asoc->control_send_queue, chk, sctp_next); + asoc->ctrl_queue_cnt--; if (chk->data) { sctp_m_freem(chk->data); chk->data = NULL; } - asoc->ctrl_queue_cnt--; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); } } @@ -7335,17 +7573,16 @@ sctp_toss_old_asconf(struct sctp_tcb *stcb) } } TAILQ_REMOVE(&asoc->asconf_send_queue, chk, sctp_next); + asoc->ctrl_queue_cnt--; if (chk->data) { sctp_m_freem(chk->data); chk->data = NULL; } - asoc->ctrl_queue_cnt--; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); } } } - static void sctp_clean_up_datalist(struct sctp_tcb *stcb, struct sctp_association *asoc, @@ -7363,7 +7600,7 @@ sctp_clean_up_datalist(struct sctp_tcb *stcb, if (i > 0) { /* * Any chunk NOT 0 you zap the time chunk 0 gets - * zapped or set based on if a RTO measurment is + * zapped or set based on if a RTO measurement is * needed. */ data_list[i]->do_rtt = 0; @@ -7371,14 +7608,14 @@ sctp_clean_up_datalist(struct sctp_tcb *stcb, /* record time */ data_list[i]->sent_rcv_time = net->last_sent_time; data_list[i]->rec.data.cwnd_at_send = net->cwnd; - data_list[i]->rec.data.fast_retran_tsn = data_list[i]->rec.data.TSN_seq; + data_list[i]->rec.data.fast_retran_tsn = data_list[i]->rec.data.tsn; if (data_list[i]->whoTo == NULL) { data_list[i]->whoTo = net; atomic_add_int(&net->ref_count, 1); } /* on to the sent queue */ tp1 = TAILQ_LAST(&asoc->sent_queue, sctpchunk_listhead); - if ((tp1) && SCTP_TSN_GT(tp1->rec.data.TSN_seq, data_list[i]->rec.data.TSN_seq)) { + if ((tp1) && SCTP_TSN_GT(tp1->rec.data.tsn, data_list[i]->rec.data.tsn)) { struct sctp_tmit_chunk *tpp; /* need to move back */ @@ -7389,7 +7626,7 @@ sctp_clean_up_datalist(struct sctp_tcb *stcb, goto all_done; } tp1 = tpp; - if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, data_list[i]->rec.data.TSN_seq)) { + if (SCTP_TSN_GT(tp1->rec.data.tsn, data_list[i]->rec.data.tsn)) { goto back_up_more; } TAILQ_INSERT_AFTER(&asoc->sent_queue, tp1, data_list[i], sctp_next); @@ -7417,8 +7654,8 @@ sctp_clean_up_datalist(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_UP, data_list[i]->whoTo->flight_size, data_list[i]->book_size, - (uintptr_t)data_list[i]->whoTo, - data_list[i]->rec.data.TSN_seq); + (uint32_t)(uintptr_t)data_list[i]->whoTo, + data_list[i]->rec.data.tsn); } sctp_flight_size_increase(data_list[i]); sctp_total_flight_increase(stcb, data_list[i]); @@ -7439,11 +7676,7 @@ sctp_clean_up_datalist(struct sctp_tcb *stcb, } static void -sctp_clean_up_ctl(struct sctp_tcb *stcb, struct sctp_association *asoc, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_clean_up_ctl(struct sctp_tcb *stcb, struct sctp_association *asoc, int so_locked) { struct sctp_tmit_chunk *chk, *nchk; @@ -7463,13 +7696,14 @@ sctp_clean_up_ctl(struct sctp_tcb *stcb, struct sctp_association *asoc, int so_l /* Stray chunks must be cleaned up */ clean_up_anyway: TAILQ_REMOVE(&asoc->control_send_queue, chk, sctp_next); + asoc->ctrl_queue_cnt--; if (chk->data) { sctp_m_freem(chk->data); chk->data = NULL; } - asoc->ctrl_queue_cnt--; - if (chk->rec.chunk_id.id == SCTP_FORWARD_CUM_TSN) + if (chk->rec.chunk_id.id == SCTP_FORWARD_CUM_TSN) { asoc->fwd_tsn_cnt--; + } sctp_free_a_chunk(stcb, chk, so_locked); } else if (chk->rec.chunk_id.id == SCTP_STREAM_RESET) { /* special handling, we must look into the param */ @@ -7480,11 +7714,9 @@ sctp_clean_up_ctl(struct sctp_tcb *stcb, struct sctp_association *asoc, int so_l } } - -static int -sctp_can_we_split_this(struct sctp_tcb *stcb, - uint32_t length, - uint32_t goal_mtu, uint32_t frag_point, int eeor_on) +static uint32_t +sctp_can_we_split_this(struct sctp_tcb *stcb, uint32_t length, + uint32_t space_left, uint32_t frag_point, int eeor_on) { /* Make a decision on if I should split a * msg into multiple parts. This is only asked of @@ -7495,7 +7727,7 @@ sctp_can_we_split_this(struct sctp_tcb *stcb, * it if its the entire thing, since it might * be all the guy is putting in the hopper. */ - if (goal_mtu >= length) { + if (space_left >= length) { /*- * If we have data outstanding, * we get another chance when the sack @@ -7511,7 +7743,7 @@ sctp_can_we_split_this(struct sctp_tcb *stcb, } else { /* You can fill the rest */ - return (goal_mtu); + return (space_left); } } /*- @@ -7522,49 +7754,44 @@ sctp_can_we_split_this(struct sctp_tcb *stcb, if (SCTP_SB_LIMIT_SND(stcb->sctp_socket) < frag_point) { return (length); } - - if ((length <= goal_mtu) || - ((length - goal_mtu) < SCTP_BASE_SYSCTL(sctp_min_residual))) { - /* Sub-optimial residual don't split in non-eeor mode. */ + if ((length <= space_left) || + ((length - space_left) < SCTP_BASE_SYSCTL(sctp_min_residual))) { + /* Sub-optimal residual don't split in non-eeor mode. */ return (0); } /* If we reach here length is larger - * than the goal_mtu. Do we wish to split + * than the space_left. Do we wish to split * it for the sake of packet putting together? */ - if (goal_mtu >= min(SCTP_BASE_SYSCTL(sctp_min_split_point), frag_point)) { + if (space_left >= min(SCTP_BASE_SYSCTL(sctp_min_split_point), frag_point)) { /* Its ok to split it */ - return (min(goal_mtu, frag_point)); + return (min(space_left, frag_point)); } /* Nope, can't split */ return (0); - } static uint32_t sctp_move_to_outqueue(struct sctp_tcb *stcb, + struct sctp_nets *net, struct sctp_stream_out *strq, - uint32_t goal_mtu, + uint32_t space_left, uint32_t frag_point, - int *locked, int *giveup, int eeor_mode, int *bail, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + int so_locked) { /* Move from the stream to the send_queue keeping track of the total */ struct sctp_association *asoc; struct sctp_stream_queue_pending *sp; struct sctp_tmit_chunk *chk; - struct sctp_data_chunk *dchkh; + struct sctp_data_chunk *dchkh=NULL; + struct sctp_idata_chunk *ndchkh=NULL; uint32_t to_move, length; + int leading; uint8_t rcv_flags = 0; uint8_t some_taken; - uint8_t send_lock_up = 0; SCTP_TCB_LOCK_ASSERT(stcb); asoc = &stcb->asoc; @@ -7572,50 +7799,43 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, /*sa_ignore FREED_MEMORY*/ sp = TAILQ_FIRST(&strq->outqueue); if (sp == NULL) { - *locked = 0; - if (send_lock_up == 0) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; - } sp = TAILQ_FIRST(&strq->outqueue); if (sp) { goto one_more_time; } - if (strq->last_msg_incomplete) { + if ((sctp_is_feature_on(stcb->sctp_ep, SCTP_PCB_FLAGS_EXPLICIT_EOR) == 0) && + (stcb->asoc.idata_supported == 0) && + (strq->last_msg_incomplete)) { SCTP_PRINTF("Huh? Stream:%d lm_in_c=%d but queue is NULL\n", - strq->stream_no, + strq->sid, strq->last_msg_incomplete); strq->last_msg_incomplete = 0; } to_move = 0; - if (send_lock_up) { - SCTP_TCB_SEND_UNLOCK(stcb); - send_lock_up = 0; - } goto out_of; } if ((sp->msg_is_complete) && (sp->length == 0)) { if (sp->sender_all_done) { - /* We are doing differed cleanup. Last + /* We are doing deferred cleanup. Last * time through when we took all the data * the sender_all_done was not set. */ if ((sp->put_last_out == 0) && (sp->discard_rest == 0)) { SCTP_PRINTF("Gak, put out entire msg with NO end!-1\n"); - SCTP_PRINTF("sender_done:%d len:%d msg_comp:%d put_last_out:%d send_lock:%d\n", + SCTP_PRINTF("sender_done:%d len:%d msg_comp:%d put_last_out:%d\n", sp->sender_all_done, sp->length, sp->msg_is_complete, - sp->put_last_out, - send_lock_up); - } - if ((TAILQ_NEXT(sp, next) == NULL) && (send_lock_up == 0)) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; + sp->put_last_out); } atomic_subtract_int(&asoc->stream_queue_cnt, 1); TAILQ_REMOVE(&strq->outqueue, sp, next); - stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, strq, sp, send_lock_up); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, strq, sp); + if ((strq->state == SCTP_STREAM_RESET_PENDING) && + (strq->chunks_on_queues == 0) && + TAILQ_EMPTY(&strq->outqueue)) { + stcb->asoc.trigger_reset = 1; + } if (sp->net) { sctp_free_remote_addr(sp->net); sp->net = NULL; @@ -7625,20 +7845,12 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, sp->data = NULL; } sctp_free_a_strmoq(stcb, sp, so_locked); - /* we can't be locked to it */ - *locked = 0; - stcb->asoc.locked_on_sending = NULL; - if (send_lock_up) { - SCTP_TCB_SEND_UNLOCK(stcb); - send_lock_up = 0; - } /* back to get the next msg */ goto one_more_time; } else { /* sender just finished this but * still holds a reference */ - *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7647,18 +7859,13 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, /* is there some to get */ if (sp->length == 0) { /* no */ - *locked = 1; *giveup = 1; to_move = 0; goto out_of; } else if (sp->discard_rest) { - if (send_lock_up == 0) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; - } /* Whack down the size */ atomic_subtract_int(&stcb->asoc.total_output_queue_size, sp->length); - if ((stcb->sctp_socket != NULL) && \ + if ((stcb->sctp_socket != NULL) && ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { atomic_subtract_int(&stcb->sctp_socket->so_snd.sb_cc, sp->length); @@ -7670,17 +7877,12 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } sp->length = 0; sp->some_taken = 1; - *locked = 1; *giveup = 1; to_move = 0; goto out_of; } } some_taken = sp->some_taken; - if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { - sp->msg_is_complete = 1; - } -re_look: length = sp->length; if (sp->msg_is_complete) { /* The message is complete */ @@ -7689,10 +7891,12 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, /* All of it fits in the MTU */ if (sp->some_taken) { rcv_flags |= SCTP_DATA_LAST_FRAG; - sp->put_last_out = 1; } else { rcv_flags |= SCTP_DATA_NOT_FRAG; - sp->put_last_out = 1; + } + sp->put_last_out = 1; + if (sp->sinfo_flags & SCTP_SACK_IMMEDIATELY) { + rcv_flags |= SCTP_DATA_SACK_IMMEDIATELY; } } else { /* Not all of it fits, we fragment */ @@ -7702,29 +7906,10 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, sp->some_taken = 1; } } else { - to_move = sctp_can_we_split_this(stcb, length, goal_mtu, frag_point, eeor_mode); - if (to_move) { - /*- - * We use a snapshot of length in case it - * is expanding during the compare. - */ - uint32_t llen; - - llen = length; - if (to_move >= llen) { - to_move = llen; - if (send_lock_up == 0) { - /*- - * We are taking all of an incomplete msg - * thus we need a send lock. - */ - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; - if (sp->msg_is_complete) { - /* the sender finished the msg */ - goto re_look; - } - } + to_move = sctp_can_we_split_this(stcb, length, space_left, frag_point, eeor_mode); + if (to_move > 0) { + if (to_move >= length) { + to_move = length; } if (sp->some_taken == 0) { rcv_flags |= SCTP_DATA_FIRST_FRAG; @@ -7732,9 +7917,6 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } } else { /* Nothing to take. */ - if (sp->some_taken) { - *locked = 1; - } *giveup = 1; to_move = 0; goto out_of; @@ -7755,8 +7937,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, if (sp->sinfo_flags & SCTP_UNORDERED) { rcv_flags |= SCTP_DATA_UNORDERED; } - if ((SCTP_BASE_SYSCTL(sctp_enable_sack_immediately) && ((sp->sinfo_flags & SCTP_EOF) == SCTP_EOF)) || - ((sp->sinfo_flags & SCTP_SACK_IMMEDIATELY) == SCTP_SACK_IMMEDIATELY)) { + if (SCTP_BASE_SYSCTL(sctp_enable_sack_immediately) && + (sp->sinfo_flags & SCTP_EOF) == SCTP_EOF) { rcv_flags |= SCTP_DATA_SACK_IMMEDIATELY; } /* clear out the chunk before setting up */ @@ -7765,10 +7947,6 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, if (to_move >= length) { /* we think we can steal the whole thing */ - if ((sp->sender_all_done == 0) && (send_lock_up == 0)) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; - } if (to_move < sp->length) { /* bail, it changed */ goto dont_do_it; @@ -7799,7 +7977,7 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, /* Now lets work our way down and compact it */ m = sp->data; while (m && (SCTP_BUF_LEN(m) == 0)) { - sp->data = SCTP_BUF_NEXT(m); + sp->data = SCTP_BUF_NEXT(m); SCTP_BUF_NEXT(m) = NULL; if (sp->tail_mbuf == m) { /*- @@ -7808,13 +7986,12 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, * than the sp->length. */ #ifdef INVARIANTS - panic("Huh, freing tail? - TSNH"); + panic("Huh, freeing tail? - TSNH"); #else SCTP_PRINTF("Huh, freeing tail? - TSNH\n"); sp->tail_mbuf = sp->data = NULL; sp->length = 0; #endif - } sctp_m_free(m); m = sp->data; @@ -7825,7 +8002,7 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } else { chk->copy_by_ref = 0; } - /* get last_mbuf and counts of mb useage + /* get last_mbuf and counts of mb usage * This is ugly but hopefully its only one mbuf. */ if (chk->last_mbuf == NULL) { @@ -7849,21 +8026,18 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } else { atomic_subtract_int(&sp->length, to_move); } - if (M_LEADINGSPACE(chk->data) < (int)sizeof(struct sctp_data_chunk)) { + leading = SCTP_DATA_CHUNK_OVERHEAD(stcb); + if (M_LEADINGSPACE(chk->data) < leading) { /* Not enough room for a chunk header, get some */ struct mbuf *m; - m = sctp_get_mbuf_for_msg(1, 0, M_NOWAIT, 0, MT_DATA); + m = sctp_get_mbuf_for_msg(1, 0, M_NOWAIT, 1, MT_DATA); if (m == NULL) { /* * we're in trouble here. _PREPEND below will free * all the data if there is no leading space, so we * must put the data back and restore. */ - if (send_lock_up == 0) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; - } if (sp->data == NULL) { /* unsteal the data */ sp->data = chk->data; @@ -7889,11 +8063,11 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, M_ALIGN(chk->data, 4); } } - SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_data_chunk), M_NOWAIT); + SCTP_BUF_PREPEND(chk->data, SCTP_DATA_CHUNK_OVERHEAD(stcb), M_NOWAIT); if (chk->data == NULL) { /* HELP, TSNH since we assured it would not above? */ #ifdef INVARIANTS - panic("prepend failes HELP?"); + panic("prepend fails HELP?"); #else SCTP_PRINTF("prepend fails HELP?\n"); sctp_free_a_chunk(stcb, chk, so_locked); @@ -7902,8 +8076,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, to_move = 0; goto out_of; } - sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk)); - chk->book_size = chk->send_size = (to_move + sizeof(struct sctp_data_chunk)); + sctp_snd_sb_alloc(stcb, SCTP_DATA_CHUNK_OVERHEAD(stcb)); + chk->book_size = chk->send_size = (uint16_t)(to_move + SCTP_DATA_CHUNK_OVERHEAD(stcb)); chk->book_size_scale = 0; chk->sent = SCTP_DATAGRAM_UNSENT; @@ -7911,13 +8085,31 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, chk->asoc = &stcb->asoc; chk->pad_inplace = 0; chk->no_fr_allowed = 0; - chk->rec.data.stream_seq = strq->next_sequence_send; - if ((rcv_flags & SCTP_DATA_LAST_FRAG) && - !(rcv_flags & SCTP_DATA_UNORDERED)) { - strq->next_sequence_send++; + if (stcb->asoc.idata_supported == 0) { + if (rcv_flags & SCTP_DATA_UNORDERED) { + /* Just use 0. The receiver ignores the values. */ + chk->rec.data.mid = 0; + } else { + chk->rec.data.mid = strq->next_mid_ordered; + if (rcv_flags & SCTP_DATA_LAST_FRAG) { + strq->next_mid_ordered++; + } + } + } else { + if (rcv_flags & SCTP_DATA_UNORDERED) { + chk->rec.data.mid = strq->next_mid_unordered; + if (rcv_flags & SCTP_DATA_LAST_FRAG) { + strq->next_mid_unordered++; + } + } else { + chk->rec.data.mid = strq->next_mid_ordered; + if (rcv_flags & SCTP_DATA_LAST_FRAG) { + strq->next_mid_ordered++; + } + } } - chk->rec.data.stream_number = sp->stream; - chk->rec.data.payloadtype = sp->ppid; + chk->rec.data.sid = sp->sid; + chk->rec.data.ppid = sp->ppid; chk->rec.data.context = sp->context; chk->rec.data.doing_fast_retransmit = 0; @@ -7935,32 +8127,37 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, sctp_auth_key_acquire(stcb, chk->auth_keyid); chk->holds_key_ref = 1; } -#if defined(__FreeBSD__) || defined(__Panda__) - chk->rec.data.TSN_seq = atomic_fetchadd_int(&asoc->sending_seq, 1); + stcb->asoc.ss_functions.sctp_ss_scheduled(stcb, net, asoc, strq, to_move); +#if defined(__FreeBSD__) && !defined(__Userspace__) + chk->rec.data.tsn = atomic_fetchadd_int(&asoc->sending_seq, 1); #else - chk->rec.data.TSN_seq = asoc->sending_seq++; + chk->rec.data.tsn = asoc->sending_seq++; #endif if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_AT_SEND_2_OUTQ) { sctp_misc_ints(SCTP_STRMOUT_LOG_SEND, - (uintptr_t)stcb, sp->length, - (uint32_t)((chk->rec.data.stream_number << 16) | chk->rec.data.stream_seq), - chk->rec.data.TSN_seq); + (uint32_t)(uintptr_t)stcb, sp->length, + (uint32_t)((chk->rec.data.sid << 16) | (0x0000ffff & chk->rec.data.mid)), + chk->rec.data.tsn); + } + if (stcb->asoc.idata_supported == 0) { + dchkh = mtod(chk->data, struct sctp_data_chunk *); + } else { + ndchkh = mtod(chk->data, struct sctp_idata_chunk *); } - dchkh = mtod(chk->data, struct sctp_data_chunk *); /* * Put the rest of the things in place now. Size was done * earlier in previous loop prior to padding. */ -#ifdef SCTP_ASOCLOG_OF_TSNS SCTP_TCB_LOCK_ASSERT(stcb); +#ifdef SCTP_ASOCLOG_OF_TSNS if (asoc->tsn_out_at >= SCTP_TSN_LOG_SIZE) { asoc->tsn_out_at = 0; asoc->tsn_out_wrapped = 1; } - asoc->out_tsnlog[asoc->tsn_out_at].tsn = chk->rec.data.TSN_seq; - asoc->out_tsnlog[asoc->tsn_out_at].strm = chk->rec.data.stream_number; - asoc->out_tsnlog[asoc->tsn_out_at].seq = chk->rec.data.stream_seq; + asoc->out_tsnlog[asoc->tsn_out_at].tsn = chk->rec.data.tsn; + asoc->out_tsnlog[asoc->tsn_out_at].strm = chk->rec.data.sid; + asoc->out_tsnlog[asoc->tsn_out_at].seq = chk->rec.data.mid; asoc->out_tsnlog[asoc->tsn_out_at].sz = chk->send_size; asoc->out_tsnlog[asoc->tsn_out_at].flgs = chk->rec.data.rcv_flags; asoc->out_tsnlog[asoc->tsn_out_at].stcb = (void *)stcb; @@ -7968,14 +8165,28 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, asoc->out_tsnlog[asoc->tsn_out_at].in_out = 2; asoc->tsn_out_at++; #endif - - dchkh->ch.chunk_type = SCTP_DATA; - dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; - dchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); - dchkh->dp.stream_id = htons(strq->stream_no); - dchkh->dp.stream_sequence = htons(chk->rec.data.stream_seq); - dchkh->dp.protocol_id = chk->rec.data.payloadtype; - dchkh->ch.chunk_length = htons(chk->send_size); + if (stcb->asoc.idata_supported == 0) { + dchkh->ch.chunk_type = SCTP_DATA; + dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + dchkh->dp.tsn = htonl(chk->rec.data.tsn); + dchkh->dp.sid = htons(strq->sid); + dchkh->dp.ssn = htons((uint16_t)chk->rec.data.mid); + dchkh->dp.ppid = chk->rec.data.ppid; + dchkh->ch.chunk_length = htons(chk->send_size); + } else { + ndchkh->ch.chunk_type = SCTP_IDATA; + ndchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + ndchkh->dp.tsn = htonl(chk->rec.data.tsn); + ndchkh->dp.sid = htons(strq->sid); + ndchkh->dp.reserved = htons(0); + ndchkh->dp.mid = htonl(chk->rec.data.mid); + if (sp->fsn == 0) + ndchkh->dp.ppid_fsn.ppid = chk->rec.data.ppid; + else + ndchkh->dp.ppid_fsn.fsn = htonl(sp->fsn); + sp->fsn++; + ndchkh->ch.chunk_length = htons(chk->send_size); + } /* Now advance the chk->send_size by the actual pad needed. */ if (chk->send_size < SCTP_SIZE32(chk->book_size)) { /* need a pad */ @@ -7995,22 +8206,22 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } if (sp->msg_is_complete && (sp->length == 0) && (sp->sender_all_done)) { /* All done pull and kill the message */ - atomic_subtract_int(&asoc->stream_queue_cnt, 1); if (sp->put_last_out == 0) { SCTP_PRINTF("Gak, put out entire msg with NO end!-2\n"); - SCTP_PRINTF("sender_done:%d len:%d msg_comp:%d put_last_out:%d send_lock:%d\n", + SCTP_PRINTF("sender_done:%d len:%d msg_comp:%d put_last_out:%d\n", sp->sender_all_done, sp->length, sp->msg_is_complete, - sp->put_last_out, - send_lock_up); - } - if ((send_lock_up == 0) && (TAILQ_NEXT(sp, next) == NULL)) { - SCTP_TCB_SEND_LOCK(stcb); - send_lock_up = 1; + sp->put_last_out); } + atomic_subtract_int(&asoc->stream_queue_cnt, 1); TAILQ_REMOVE(&strq->outqueue, sp, next); - stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, strq, sp, send_lock_up); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, strq, sp); + if ((strq->state == SCTP_STREAM_RESET_PENDING) && + (strq->chunks_on_queues == 0) && + TAILQ_EMPTY(&strq->outqueue)) { + stcb->asoc.trigger_reset = 1; + } if (sp->net) { sctp_free_remote_addr(sp->net); sp->net = NULL; @@ -8020,103 +8231,79 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, sp->data = NULL; } sctp_free_a_strmoq(stcb, sp, so_locked); - - /* we can't be locked to it */ - *locked = 0; - stcb->asoc.locked_on_sending = NULL; - } else { - /* more to go, we are locked */ - *locked = 1; } asoc->chunks_on_out_queue++; strq->chunks_on_queues++; TAILQ_INSERT_TAIL(&asoc->send_queue, chk, sctp_next); asoc->send_queue_cnt++; out_of: - if (send_lock_up) { - SCTP_TCB_SEND_UNLOCK(stcb); - } return (to_move); } - static void -sctp_fill_outqueue(struct sctp_tcb *stcb, - struct sctp_nets *net, int frag_point, int eeor_mode, int *quit_now, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_fill_outqueue(struct sctp_tcb *stcb, struct sctp_nets *net, + uint32_t frag_point, int eeor_mode, int *quit_now, + int so_locked) { struct sctp_association *asoc; struct sctp_stream_out *strq; - int goal_mtu, moved_how_much, total_moved = 0, bail = 0; - int locked, giveup; + uint32_t space_left, moved, total_moved; + int bail, giveup; SCTP_TCB_LOCK_ASSERT(stcb); asoc = &stcb->asoc; + total_moved = 0; switch (net->ro._l_addr.sa.sa_family) { #ifdef INET case AF_INET: - goal_mtu = net->mtu - SCTP_MIN_V4_OVERHEAD; + space_left = net->mtu - SCTP_MIN_V4_OVERHEAD; break; #endif #ifdef INET6 case AF_INET6: - goal_mtu = net->mtu - SCTP_MIN_OVERHEAD; + space_left = net->mtu - SCTP_MIN_OVERHEAD; break; #endif #if defined(__Userspace__) case AF_CONN: - goal_mtu = net->mtu - sizeof(struct sctphdr); + space_left = net->mtu - sizeof(struct sctphdr); break; #endif default: /* TSNH */ - goal_mtu = net->mtu; + space_left = net->mtu; break; } /* Need an allowance for the data chunk header too */ - goal_mtu -= sizeof(struct sctp_data_chunk); + space_left -= SCTP_DATA_CHUNK_OVERHEAD(stcb); /* must make even word boundary */ - goal_mtu &= 0xfffffffc; - if (asoc->locked_on_sending) { - /* We are stuck on one stream until the message completes. */ - strq = asoc->locked_on_sending; - locked = 1; - } else { + space_left &= 0xfffffffc; + strq = stcb->asoc.ss_functions.sctp_ss_select_stream(stcb, net, asoc); + giveup = 0; + bail = 0; + while ((space_left > 0) && (strq != NULL)) { + moved = sctp_move_to_outqueue(stcb, net, strq, space_left, + frag_point, &giveup, eeor_mode, + &bail, so_locked); + if ((giveup != 0) || (bail != 0)) { + break; + } strq = stcb->asoc.ss_functions.sctp_ss_select_stream(stcb, net, asoc); - locked = 0; - } - while ((goal_mtu > 0) && strq) { - giveup = 0; - bail = 0; - moved_how_much = sctp_move_to_outqueue(stcb, strq, goal_mtu, frag_point, &locked, - &giveup, eeor_mode, &bail, so_locked); - if (moved_how_much) - stcb->asoc.ss_functions.sctp_ss_scheduled(stcb, net, asoc, strq, moved_how_much); - - if (locked) { - asoc->locked_on_sending = strq; - if ((moved_how_much == 0) || (giveup) || bail) - /* no more to move for now */ - break; + total_moved += moved; + if (space_left >= moved) { + space_left -= moved; } else { - asoc->locked_on_sending = NULL; - if ((giveup) || bail) { - break; - } - strq = stcb->asoc.ss_functions.sctp_ss_select_stream(stcb, net, asoc); - if (strq == NULL) { - break; - } + space_left = 0; + } + if (space_left >= SCTP_DATA_CHUNK_OVERHEAD(stcb)) { + space_left -= SCTP_DATA_CHUNK_OVERHEAD(stcb); + } else { + space_left = 0; } - total_moved += moved_how_much; - goal_mtu -= (moved_how_much + sizeof(struct sctp_data_chunk)); - goal_mtu &= 0xfffffffc; + space_left &= 0xfffffffc; } - if (bail) + if (bail != 0) *quit_now = 1; stcb->asoc.ss_functions.sctp_ss_packet_done(stcb, net, asoc); @@ -8175,25 +8362,25 @@ sctp_move_chunks_from_net(struct sctp_tcb *stcb, struct sctp_nets *net) int sctp_med_chunk_output(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - struct sctp_association *asoc, - int *num_out, - int *reason_code, - int control_only, int from_where, - struct timeval *now, int *now_filled, int frag_point, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + struct sctp_tcb *stcb, + struct sctp_association *asoc, + int *num_out, + int *reason_code, + int control_only, int from_where, + struct timeval *now, int *now_filled, + uint32_t frag_point, int so_locked) { /** * Ok this is the generic chunk service queue. we must do the - * following: - Service the stream queue that is next, moving any - * message (note I must get a complete message i.e. FIRST/MIDDLE and - * LAST to the out queue in one pass) and assigning TSN's - Check to - * see if the cwnd/rwnd allows any output, if so we go ahead and - * fomulate and send the low level chunks. Making sure to combine - * any control in the control chunk queue also. + * following: + * - Service the stream queue that is next, moving any + * message (note I must get a complete message i.e. FIRST/MIDDLE and + * LAST to the out queue in one pass) and assigning TSN's. This + * only applies though if the peer does not support NDATA. For NDATA + * chunks its ok to not send the entire message ;-) + * - Check to see if the cwnd/rwnd allows any output, if so we go ahead and + * formulate and send the low level chunks. Making sure to combine + * any control in the control chunk queue also. */ struct sctp_nets *net, *start_at, *sack_goes_to = NULL, *old_start_at = NULL; struct mbuf *outchain, *endoutchain; @@ -8208,8 +8395,8 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, int bundle_at, ctl_cnt, no_data_chunks, eeor_mode; unsigned int mtu, r_mtu, omtu, mx_mtu, to_out; int tsns_sent = 0; - uint32_t auth_offset = 0; - struct sctp_auth_chunk *auth = NULL; + uint32_t auth_offset; + struct sctp_auth_chunk *auth; uint16_t auth_keyid; int override_ok = 1; int skip_fill_up = 0; @@ -8217,8 +8404,9 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, /* JRS 5/14/07 - Add flag for whether a heartbeat is sent to the destination. */ int quit_now = 0; + bool use_zero_crc; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { @@ -8229,7 +8417,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, *reason_code = 0; auth_keyid = stcb->asoc.authinfo.active_keyid; if ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || - (asoc->state & SCTP_STATE_SHUTDOWN_RECEIVED) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) || (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR))) { eeor_mode = 1; } else { @@ -8246,7 +8434,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, #endif SCTP_TCB_LOCK_ASSERT(stcb); hbflag = 0; - if ((control_only) || (asoc->stream_reset_outstanding)) + if (control_only) no_data_chunks = 1; else no_data_chunks = 0; @@ -8256,7 +8444,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, (asoc->ctrl_queue_cnt == stcb->asoc.ecn_echo_cnt_onq)) && TAILQ_EMPTY(&asoc->asconf_send_queue) && TAILQ_EMPTY(&asoc->send_queue) && - stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, asoc)) { + sctp_is_there_unsent_data(stcb, so_locked) == 0) { nothing_to_send: *reason_code = 9; return (0); @@ -8301,7 +8489,6 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, break; } } - } if ((no_data_chunks == 0) && (skip_fill_up == 0) && @@ -8321,13 +8508,13 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, net->window_probe = 0; if ((net != stcb->asoc.alternate) && ((net->dest_state & SCTP_ADDR_PF) || - (!(net->dest_state & SCTP_ADDR_REACHABLE)) || + ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) || (net->dest_state & SCTP_ADDR_UNCONFIRMED))) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { sctp_log_cwnd(stcb, net, 1, - SCTP_CWND_LOG_FILL_OUTQ_CALLED); + SCTP_CWND_LOG_FILL_OUTQ_CALLED); } - continue; + continue; } if ((stcb->asoc.cc_functions.sctp_cwnd_new_transmission_begins) && (net->flight_size == 0)) { @@ -8337,7 +8524,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, /* skip this network, no room - can't fill */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { sctp_log_cwnd(stcb, net, 3, - SCTP_CWND_LOG_FILL_OUTQ_CALLED); + SCTP_CWND_LOG_FILL_OUTQ_CALLED); } continue; } @@ -8389,11 +8576,11 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } old_start_at = NULL; again_one_more_time: - for (net = start_at ; net != NULL; net = TAILQ_NEXT(net, sctp_next)) { + for (net = start_at; net != NULL; net = TAILQ_NEXT(net, sctp_next)) { /* how much can we send? */ /* SCTPDBG("Examine for sending net:%x\n", (uint32_t)net); */ if (old_start_at && (old_start_at == net)) { - /* through list ocmpletely. */ + /* through list completely. */ break; } tsns_sent = 0xa; @@ -8407,6 +8594,8 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } bundle_at = 0; endoutchain = outchain = NULL; + auth = NULL; + auth_offset = 0; no_fragmentflg = 1; one_chunk = 0; if (net->dest_state & SCTP_ADDR_UNCONFIRMED) { @@ -8417,12 +8606,12 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { #ifdef INET case AF_INET: - mtu = net->mtu - (sizeof(struct ip) + sizeof(struct sctphdr)); + mtu = net->mtu - SCTP_MIN_V4_OVERHEAD; break; #endif #ifdef INET6 case AF_INET6: - mtu = net->mtu - (sizeof(struct ip6_hdr) + sizeof(struct sctphdr)); + mtu = net->mtu - SCTP_MIN_OVERHEAD; break; #endif #if defined(__Userspace__) @@ -8449,6 +8638,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } else { r_mtu = mtu; } + error = 0; /************************/ /* ASCONF transmission */ /************************/ @@ -8574,6 +8764,12 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, * appropriate source address * selection. */ + if (*now_filled == 0) { + (void)SCTP_GETTIME_TIMEVAL(now); + *now_filled = 1; + } + net->last_sent_time = *now; + hbflag = 0; if ((error = sctp_lowlevel_chunk_output(inp, stcb, net, (struct sockaddr *)&net->ro._l_addr, outchain, auth_offset, auth, @@ -8582,25 +8778,19 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, inp->sctp_lport, stcb->rport, htonl(stcb->asoc.peer_vtag), net->port, NULL, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) 0, 0, #endif - so_locked))) { - if (error == ENOBUFS) { - asoc->ifp_had_enobuf = 1; - SCTP_STAT_INCR(sctps_lowlevelerr); - } + false, so_locked))) { + /* error, we could not output */ + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); if (from_where == 0) { SCTP_STAT_INCR(sctps_lowlevelerrusr); } - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; - } else { - net->last_sent_time = *now; + if (error == ENOBUFS) { + asoc->ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); } - hbflag = 0; /* error, could not output */ if (error == EHOSTUNREACH) { /* @@ -8610,18 +8800,12 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, */ sctp_move_chunks_from_net(stcb, net); } + asconf = 0; *reason_code = 7; - continue; - } else - asoc->ifp_had_enobuf = 0; - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; + break; } else { - net->last_sent_time = *now; + asoc->ifp_had_enobuf = 0; } - hbflag = 0; /* * increase the number we sent, if a * cookie is sent we don't tell them @@ -8630,6 +8814,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, outchain = endoutchain = NULL; auth = NULL; auth_offset = 0; + asconf = 0; if (!no_out_cnt) *num_out += ctl_cnt; /* recalc a clean slate and setup */ @@ -8659,6 +8844,10 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } } } + if (error != 0) { + /* try next net */ + continue; + } /************************/ /* Control transmission */ /************************/ @@ -8790,7 +8979,8 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, /* turn off the timer */ if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - inp, stcb, net, SCTP_FROM_SCTP_OUTPUT+SCTP_LOC_1); + inp, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_1); } } ctl_cnt++; @@ -8830,8 +9020,10 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, * flight size since this little guy * is a control only packet. */ + use_zero_crc = asoc->zero_checksum == 2; if (asconf) { sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp, stcb, net); + use_zero_crc = false; /* * do NOT clear the asconf * flag as it is used to do @@ -8841,8 +9033,18 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } if (cookie) { sctp_timer_start(SCTP_TIMER_TYPE_COOKIE, inp, stcb, net); + use_zero_crc = false; cookie = 0; } + /* Only HB or ASCONF advances time */ + if (hbflag) { + if (*now_filled == 0) { + (void)SCTP_GETTIME_TIMEVAL(now); + *now_filled = 1; + } + net->last_sent_time = *now; + hbflag = 0; + } if ((error = sctp_lowlevel_chunk_output(inp, stcb, net, (struct sockaddr *)&net->ro._l_addr, outchain, @@ -8852,27 +9054,18 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, inp->sctp_lport, stcb->rport, htonl(stcb->asoc.peer_vtag), net->port, NULL, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) 0, 0, #endif - so_locked))) { - if (error == ENOBUFS) { - asoc->ifp_had_enobuf = 1; - SCTP_STAT_INCR(sctps_lowlevelerr); - } + use_zero_crc, so_locked))) { + /* error, we could not output */ + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); if (from_where == 0) { SCTP_STAT_INCR(sctps_lowlevelerrusr); } - /* error, could not output */ - if (hbflag) { - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; - } else { - net->last_sent_time = *now; - } - hbflag = 0; + if (error == ENOBUFS) { + asoc->ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); } if (error == EHOSTUNREACH) { /* @@ -8882,20 +9075,11 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, */ sctp_move_chunks_from_net(stcb, net); } + asconf = 0; *reason_code = 7; - continue; - } else + break; + } else { asoc->ifp_had_enobuf = 0; - /* Only HB or ASCONF advances time */ - if (hbflag) { - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; - } else { - net->last_sent_time = *now; - } - hbflag = 0; } /* * increase the number we sent, if a @@ -8905,6 +9089,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, outchain = endoutchain = NULL; auth = NULL; auth_offset = 0; + asconf = 0; if (!no_out_cnt) *num_out += ctl_cnt; /* recalc a clean slate and setup */ @@ -8934,6 +9119,10 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } } } + if (error != 0) { + /* try next net */ + continue; + } /* JRI: if dest is in PF state, do not send data to it */ if ((asoc->sctp_cmt_on_off > 0) && (net != stcb->asoc.alternate) && @@ -8978,16 +9167,16 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { #ifdef INET case AF_INET: - if (net->mtu > (sizeof(struct ip) + sizeof(struct sctphdr))) - omtu = net->mtu - (sizeof(struct ip) + sizeof(struct sctphdr)); + if (net->mtu > SCTP_MIN_V4_OVERHEAD) + omtu = net->mtu - SCTP_MIN_V4_OVERHEAD; else omtu = 0; break; #endif #ifdef INET6 case AF_INET6: - if (net->mtu > (sizeof(struct ip6_hdr) + sizeof(struct sctphdr))) - omtu = net->mtu - (sizeof(struct ip6_hdr) + sizeof(struct sctphdr)); + if (net->mtu > SCTP_MIN_OVERHEAD) + omtu = net->mtu - SCTP_MIN_OVERHEAD; else omtu = 0; break; @@ -9006,7 +9195,8 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, omtu = 0; break; } - if ((((asoc->state & SCTP_STATE_OPEN) == SCTP_STATE_OPEN) && + if ((((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) && (skip_data_for_this_net == 0)) || (cookie)) { TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { @@ -9055,7 +9245,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; } if (SCTP_BASE_SYSCTL(sctp_enable_sack_immediately) && - ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) == SCTP_STATE_SHUTDOWN_PENDING)) { + (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) { struct sctp_data_chunk *dchkh; dchkh = mtod(chk->data, struct sctp_data_chunk *); @@ -9101,7 +9291,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); return (ENOMEM); } - /* upate our MTU size */ + /* update our MTU size */ /* Do clear IP_DF ? */ if (chk->flags & CHUNK_FLAGS_FRAGMENT_OK) { no_fragmentflg = 0; @@ -9165,9 +9355,11 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, /* Is there something to send for this destination? */ if (outchain) { /* We may need to start a control timer or two */ + use_zero_crc = asoc->zero_checksum == 2; if (asconf) { sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp, stcb, net); + use_zero_crc = false; /* * do NOT clear the asconf flag as it is used * to do appropriate source address selection. @@ -9175,6 +9367,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, } if (cookie) { sctp_timer_start(SCTP_TIMER_TYPE_COOKIE, inp, stcb, net); + use_zero_crc = false; cookie = 0; } /* must start a send timer if data is being sent */ @@ -9185,6 +9378,14 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net); } + if (bundle_at || hbflag) { + /* For data/asconf and hb set time */ + if (*now_filled == 0) { + (void)SCTP_GETTIME_TIMEVAL(now); + *now_filled = 1; + } + net->last_sent_time = *now; + } /* Now send it, if there is anything to send :> */ if ((error = sctp_lowlevel_chunk_output(inp, stcb, @@ -9200,28 +9401,19 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, inp->sctp_lport, stcb->rport, htonl(stcb->asoc.peer_vtag), net->port, NULL, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) 0, 0, #endif + use_zero_crc, so_locked))) { /* error, we could not output */ - if (error == ENOBUFS) { - SCTP_STAT_INCR(sctps_lowlevelerr); - asoc->ifp_had_enobuf = 1; - } + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); if (from_where == 0) { SCTP_STAT_INCR(sctps_lowlevelerrusr); } - SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); - if (hbflag) { - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; - } else { - net->last_sent_time = *now; - } - hbflag = 0; + if (error == ENOBUFS) { + asoc->ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); } if (error == EHOSTUNREACH) { /* @@ -9230,6 +9422,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, */ sctp_move_chunks_from_net(stcb, net); } + asconf = 0; *reason_code = 6; /*- * I add this line to be paranoid. As far as @@ -9237,7 +9430,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, * the top of the for, but just to make sure * I will reset these again here. */ - ctl_cnt = bundle_at = 0; + ctl_cnt = 0; continue; /* This takes us back to the for() for the nets. */ } else { asoc->ifp_had_enobuf = 0; @@ -9245,22 +9438,13 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, endoutchain = NULL; auth = NULL; auth_offset = 0; - if (bundle_at || hbflag) { - /* For data/asconf and hb set time */ - if (*now_filled == 0) { - (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); - *now_filled = 1; - *now = net->last_sent_time; - } else { - net->last_sent_time = *now; - } - } + asconf = 0; if (!no_out_cnt) { *num_out += (ctl_cnt + bundle_at); } if (bundle_at) { /* setup for a RTO measurement */ - tsns_sent = data_list[0]->rec.data.TSN_seq; + tsns_sent = data_list[0]->rec.data.tsn; /* fill time if not already filled */ if (*now_filled == 0) { (void)SCTP_GETTIME_TIMEVAL(&asoc->time_last_sent); @@ -9316,9 +9500,37 @@ sctp_queue_op_err(struct sctp_tcb *stcb, struct mbuf *op_err) */ struct sctp_chunkhdr *hdr; struct sctp_tmit_chunk *chk; - struct mbuf *mat; + struct mbuf *mat, *last_mbuf; + uint32_t chunk_length; + uint16_t padding_length; SCTP_TCB_LOCK_ASSERT(stcb); + SCTP_BUF_PREPEND(op_err, sizeof(struct sctp_chunkhdr), M_NOWAIT); + if (op_err == NULL) { + return; + } + last_mbuf = NULL; + chunk_length = 0; + for (mat = op_err; mat != NULL; mat = SCTP_BUF_NEXT(mat)) { + chunk_length += SCTP_BUF_LEN(mat); + if (SCTP_BUF_NEXT(mat) == NULL) { + last_mbuf = mat; + } + } + if (chunk_length > SCTP_MAX_CHUNK_LENGTH) { + sctp_m_freem(op_err); + return; + } + padding_length = chunk_length % 4; + if (padding_length != 0) { + padding_length = 4 - padding_length; + } + if (padding_length != 0) { + if (sctp_add_pad_tombuf(last_mbuf, padding_length) == NULL) { + sctp_m_freem(op_err); + return; + } + } sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { /* no memory */ @@ -9326,15 +9538,10 @@ sctp_queue_op_err(struct sctp_tcb *stcb, struct mbuf *op_err) return; } chk->copy_by_ref = 0; - SCTP_BUF_PREPEND(op_err, sizeof(struct sctp_chunkhdr), M_NOWAIT); - if (op_err == NULL) { - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - return; - } - chk->send_size = 0; - for (mat = op_err; mat != NULL; mat = SCTP_BUF_NEXT(mat)) { - chk->send_size += SCTP_BUF_LEN(mat); - } + chk->rec.chunk_id.id = SCTP_OPERATION_ERROR; + chk->rec.chunk_id.can_take_data = 0; + chk->flags = 0; + chk->send_size = (uint16_t)chunk_length; chk->sent = SCTP_DATAGRAM_UNSENT; chk->snd_count = 0; chk->asoc = &stcb->asoc; @@ -9344,15 +9551,13 @@ sctp_queue_op_err(struct sctp_tcb *stcb, struct mbuf *op_err) hdr->chunk_type = SCTP_OPERATION_ERROR; hdr->chunk_flags = 0; hdr->chunk_length = htons(chk->send_size); - TAILQ_INSERT_TAIL(&chk->asoc->control_send_queue, - chk, - sctp_next); + TAILQ_INSERT_TAIL(&chk->asoc->control_send_queue, chk, sctp_next); chk->asoc->ctrl_queue_cnt++; } int sctp_send_cookie_echo(struct mbuf *m, - int offset, + int offset, int limit, struct sctp_tcb *stcb, struct sctp_nets *net) { @@ -9362,7 +9567,7 @@ sctp_send_cookie_echo(struct mbuf *m, */ int at; struct mbuf *cookie; - struct sctp_paramhdr parm, *phdr; + struct sctp_paramhdr param, *phdr; struct sctp_chunkhdr *hdr; struct sctp_tmit_chunk *chk; uint16_t ptype, plen; @@ -9372,24 +9577,35 @@ sctp_send_cookie_echo(struct mbuf *m, cookie = NULL; at = offset + sizeof(struct sctp_init_chunk); for (;;) { - phdr = sctp_get_next_param(m, at, &parm, sizeof(parm)); + phdr = sctp_get_next_param(m, at, ¶m, sizeof(param)); if (phdr == NULL) { return (-3); } ptype = ntohs(phdr->param_type); plen = ntohs(phdr->param_length); + if (plen < sizeof(struct sctp_paramhdr)) { + return (-6); + } if (ptype == SCTP_STATE_COOKIE) { int pad; /* found the cookie */ - if ((pad = (plen % 4))) { - plen += 4 - pad; + if (at + plen > limit) { + return (-7); } cookie = SCTP_M_COPYM(m, at, plen, M_NOWAIT); if (cookie == NULL) { /* No memory */ return (-2); } + if ((pad = (plen % 4)) > 0) { + pad = 4 - pad; + } + if (pad > 0) { + if (sctp_pad_lastmbuf(cookie, pad, NULL) == NULL) { + return (-8); + } + } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { sctp_log_mbc(cookie, SCTP_MBUF_ICOPY); @@ -9415,7 +9631,7 @@ sctp_send_cookie_echo(struct mbuf *m, chk->rec.chunk_id.id = SCTP_COOKIE_ECHO; chk->rec.chunk_id.can_take_data = 0; chk->flags = CHUNK_FLAGS_FRAGMENT_OK; - chk->send_size = plen; + chk->send_size = SCTP_SIZE32(plen); chk->sent = SCTP_DATAGRAM_UNSENT; chk->snd_count = 0; chk->asoc = &stcb->asoc; @@ -9441,7 +9657,6 @@ sctp_send_heartbeat_ack(struct sctp_tcb *stcb, struct sctp_chunkhdr *chdr; struct sctp_tmit_chunk *chk; - if (net == NULL) /* must have a net pointer */ return; @@ -9459,13 +9674,8 @@ sctp_send_heartbeat_ack(struct sctp_tcb *stcb, chdr = mtod(outchain, struct sctp_chunkhdr *); chdr->chunk_type = SCTP_HEARTBEAT_ACK; chdr->chunk_flags = 0; - if (chk_length % 4) { - /* need pad */ - uint32_t cpthis = 0; - int padlen; - - padlen = 4 - (chk_length % 4); - m_copyback(outchain, chk_length, padlen, (caddr_t)&cpthis); + if (chk_length % 4 != 0) { + sctp_pad_lastmbuf(outchain, 4 - (chk_length % 4), NULL); } sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { @@ -9535,7 +9745,6 @@ sctp_send_cookie_ack(struct sctp_tcb *stcb) return; } - void sctp_send_shutdown_ack(struct sctp_tcb *stcb, struct sctp_nets *net) { @@ -9563,7 +9772,6 @@ sctp_send_shutdown_ack(struct sctp_tcb *stcb, struct sctp_nets *net) chk->send_size = sizeof(struct sctp_chunkhdr); chk->sent = SCTP_DATAGRAM_UNSENT; chk->snd_count = 0; - chk->flags = 0; chk->asoc = &stcb->asoc; chk->data = m_shutdown_ack; chk->whoTo = net; @@ -9588,40 +9796,60 @@ sctp_send_shutdown(struct sctp_tcb *stcb, struct sctp_nets *net) struct sctp_shutdown_chunk *shutdown_cp; struct sctp_tmit_chunk *chk; - m_shutdown = sctp_get_mbuf_for_msg(sizeof(struct sctp_shutdown_chunk), 0, M_NOWAIT, 1, MT_HEADER); - if (m_shutdown == NULL) { - /* no mbuf's */ - return; + TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { + if (chk->rec.chunk_id.id == SCTP_SHUTDOWN) { + /* We already have a SHUTDOWN queued. Reuse it. */ + if (chk->whoTo) { + sctp_free_remote_addr(chk->whoTo); + chk->whoTo = NULL; + } + break; + } } - SCTP_BUF_RESV_UF(m_shutdown, SCTP_MIN_OVERHEAD); - sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { - /* no memory */ - sctp_m_freem(m_shutdown); - return; - } - chk->copy_by_ref = 0; - chk->rec.chunk_id.id = SCTP_SHUTDOWN; - chk->rec.chunk_id.can_take_data = 1; - chk->flags = 0; - chk->send_size = sizeof(struct sctp_shutdown_chunk); - chk->sent = SCTP_DATAGRAM_UNSENT; - chk->snd_count = 0; - chk->flags = 0; - chk->asoc = &stcb->asoc; - chk->data = m_shutdown; - chk->whoTo = net; - if (chk->whoTo) { - atomic_add_int(&chk->whoTo->ref_count, 1); + m_shutdown = sctp_get_mbuf_for_msg(sizeof(struct sctp_shutdown_chunk), 0, M_NOWAIT, 1, MT_HEADER); + if (m_shutdown == NULL) { + /* no mbuf's */ + return; + } + SCTP_BUF_RESV_UF(m_shutdown, SCTP_MIN_OVERHEAD); + sctp_alloc_a_chunk(stcb, chk); + if (chk == NULL) { + /* no memory */ + sctp_m_freem(m_shutdown); + return; + } + chk->copy_by_ref = 0; + chk->rec.chunk_id.id = SCTP_SHUTDOWN; + chk->rec.chunk_id.can_take_data = 1; + chk->flags = 0; + chk->send_size = sizeof(struct sctp_shutdown_chunk); + chk->sent = SCTP_DATAGRAM_UNSENT; + chk->snd_count = 0; + chk->asoc = &stcb->asoc; + chk->data = m_shutdown; + chk->whoTo = net; + if (chk->whoTo) { + atomic_add_int(&chk->whoTo->ref_count, 1); + } + shutdown_cp = mtod(m_shutdown, struct sctp_shutdown_chunk *); + shutdown_cp->ch.chunk_type = SCTP_SHUTDOWN; + shutdown_cp->ch.chunk_flags = 0; + shutdown_cp->ch.chunk_length = htons(chk->send_size); + shutdown_cp->cumulative_tsn_ack = htonl(stcb->asoc.cumulative_tsn); + SCTP_BUF_LEN(m_shutdown) = chk->send_size; + TAILQ_INSERT_TAIL(&chk->asoc->control_send_queue, chk, sctp_next); + chk->asoc->ctrl_queue_cnt++; + } else { + TAILQ_REMOVE(&stcb->asoc.control_send_queue, chk, sctp_next); + chk->whoTo = net; + if (chk->whoTo) { + atomic_add_int(&chk->whoTo->ref_count, 1); + } + shutdown_cp = mtod(chk->data, struct sctp_shutdown_chunk *); + shutdown_cp->cumulative_tsn_ack = htonl(stcb->asoc.cumulative_tsn); + TAILQ_INSERT_TAIL(&stcb->asoc.control_send_queue, chk, sctp_next); } - shutdown_cp = mtod(m_shutdown, struct sctp_shutdown_chunk *); - shutdown_cp->ch.chunk_type = SCTP_SHUTDOWN; - shutdown_cp->ch.chunk_flags = 0; - shutdown_cp->ch.chunk_length = htons(chk->send_size); - shutdown_cp->cumulative_tsn_ack = htonl(stcb->asoc.cumulative_tsn); - SCTP_BUF_LEN(m_shutdown) = chk->send_size; - TAILQ_INSERT_TAIL(&chk->asoc->control_send_queue, chk, sctp_next); - chk->asoc->ctrl_queue_cnt++; return; } @@ -9767,16 +9995,11 @@ sctp_send_asconf_ack(struct sctp_tcb *stcb) return; } - static int sctp_chunk_retransmission(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_association *asoc, - int *cnt_out, struct timeval *now, int *now_filled, int *fr_done, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + int *cnt_out, struct timeval *now, int *now_filled, int *fr_done, int so_locked) { /*- * send out one MTU of retransmission. If fast_retransmit is @@ -9795,7 +10018,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, struct mbuf *m, *endofchain; struct sctp_nets *net = NULL; uint32_t tsns_sent = 0; - int no_fragmentflg, bundle_at, cnt_thru; + int no_fragmentflg, bundle_at; unsigned int mtu; int error, i, one_chunk, fwd_tsn, ctl_cnt, tmr_started; struct sctp_auth_chunk *auth = NULL; @@ -9804,8 +10027,9 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, int override_ok = 1; int data_auth_reqd = 0; uint32_t dmtu = 0; + bool use_zero_crc; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { @@ -9813,7 +10037,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, } #endif SCTP_TCB_LOCK_ASSERT(stcb); - tmr_started = ctl_cnt = bundle_at = error = 0; + tmr_started = ctl_cnt = 0; no_fragmentflg = 1; fwd_tsn = 0; *cnt_out = 0; @@ -9871,14 +10095,18 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, } } one_chunk = 0; - cnt_thru = 0; /* do we have control chunks to retransmit? */ if (m != NULL) { - /* Start a timer no matter if we suceed or fail */ + /* Start a timer no matter if we succeed or fail */ + use_zero_crc = asoc->zero_checksum == 2; if (chk->rec.chunk_id.id == SCTP_COOKIE_ECHO) { sctp_timer_start(SCTP_TIMER_TYPE_COOKIE, inp, stcb, chk->whoTo); - } else if (chk->rec.chunk_id.id == SCTP_ASCONF) + use_zero_crc = false; + } else if (chk->rec.chunk_id.id == SCTP_ASCONF) { + /* XXXMT: Can this happen? */ sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp, stcb, chk->whoTo); + use_zero_crc = false; + } chk->snd_count++; /* update our count */ if ((error = sctp_lowlevel_chunk_output(inp, stcb, chk->whoTo, (struct sockaddr *)&chk->whoTo->ro._l_addr, m, @@ -9886,12 +10114,19 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, no_fragmentflg, 0, 0, inp->sctp_lport, stcb->rport, htonl(stcb->asoc.peer_vtag), chk->whoTo->port, NULL, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) 0, 0, #endif + use_zero_crc, so_locked))) { - SCTP_STAT_INCR(sctps_lowlevelerr); + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); + if (error == ENOBUFS) { + asoc->ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); + } return (error); + } else { + asoc->ifp_had_enobuf = 0; } endofchain = NULL; auth = NULL; @@ -9919,8 +10154,8 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, if (TAILQ_EMPTY(&asoc->sent_queue)) { return (SCTP_RETRAN_DONE); } - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT)) { /* not yet open, resend the cookie and that is it */ return (1); } @@ -9935,17 +10170,21 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, } if (chk->data == NULL) { SCTP_PRINTF("TSN:%x chk->snd_count:%d chk->sent:%d can't retran - no data\n", - chk->rec.data.TSN_seq, chk->snd_count, chk->sent); + chk->rec.data.tsn, chk->snd_count, chk->sent); continue; } if ((SCTP_BASE_SYSCTL(sctp_max_retran_chunk)) && (chk->snd_count >= SCTP_BASE_SYSCTL(sctp_max_retran_chunk))) { - /* Gak, we have exceeded max unlucky retran, abort! */ - SCTP_PRINTF("Gak, chk->snd_count:%d >= max:%d - send abort\n", - chk->snd_count, - SCTP_BASE_SYSCTL(sctp_max_retran_chunk)); + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + SCTP_SNPRINTF(msg, sizeof(msg), "TSN %8.8x retransmitted %d times, giving up", + chk->rec.data.tsn, chk->snd_count); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + msg); atomic_add_int(&stcb->asoc.refcnt, 1); - sctp_abort_an_association(stcb->sctp_ep, stcb, NULL, so_locked); + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, + false, so_locked); SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); return (SCTP_RETRAN_EXIT); @@ -9979,7 +10218,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, uint32_t tsn; tsn = asoc->last_acked_seq + 1; - if (tsn == chk->rec.data.TSN_seq) { + if (tsn == chk->rec.data.tsn) { /* * we make a special exception for this * case. The peer has no rwnd but is missing @@ -10064,7 +10303,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, if (chk->flags & CHUNK_FLAGS_FRAGMENT_OK) { no_fragmentflg = 0; } - /* upate our MTU size */ + /* update our MTU size */ if (mtu > (chk->send_size + dmtu)) mtu -= (chk->send_size + dmtu); else @@ -10121,7 +10360,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, if (fwd->flags & CHUNK_FLAGS_FRAGMENT_OK) { no_fragmentflg = 0; } - /* upate our MTU size */ + /* update our MTU size */ if (mtu > (fwd->send_size + dmtu)) mtu -= (fwd->send_size + dmtu); else @@ -10139,7 +10378,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, /* Is there something to send for this destination? */ if (m) { /* - * No matter if we fail/or suceed we should start a + * No matter if we fail/or succeed we should start a * timer. A failure is like a lost IP packet :-) */ if (!SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { @@ -10157,13 +10396,20 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, no_fragmentflg, 0, 0, inp->sctp_lport, stcb->rport, htonl(stcb->asoc.peer_vtag), net->port, NULL, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) 0, 0, #endif + asoc->zero_checksum == 2, so_locked))) { /* error, we could not output */ - SCTP_STAT_INCR(sctps_lowlevelerr); + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); + if (error == ENOBUFS) { + asoc->ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); + } return (error); + } else { + asoc->ifp_had_enobuf = 0; } endofchain = NULL; auth = NULL; @@ -10177,7 +10423,6 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, /* (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time); */ /* For auto-close */ - cnt_thru++; if (*now_filled == 0) { (void)SCTP_GETTIME_TIMEVAL(&asoc->time_last_sent); *now = asoc->time_last_sent; @@ -10190,7 +10435,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, sctp_audit_log(0xC4, bundle_at); #endif if (bundle_at) { - tsns_sent = data_list[0]->rec.data.TSN_seq; + tsns_sent = data_list[0]->rec.data.tsn; } for (i = 0; i < bundle_at; i++) { SCTP_STAT_INCR(sctps_sendretransdata); @@ -10220,10 +10465,8 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, * also double the output queue size, since this * get shrunk when we free by this amount. */ - atomic_add_int(&((asoc)->total_output_queue_size),data_list[i]->book_size); + atomic_add_int(&((asoc)->total_output_queue_size), data_list[i]->book_size); data_list[i]->book_size *= 2; - - } else { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_RWND_ENABLE) { sctp_log_rwnd(SCTP_DECREASE_PEER_RWND, @@ -10237,8 +10480,8 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, sctp_misc_ints(SCTP_FLIGHT_LOG_UP_RSND, data_list[i]->whoTo->flight_size, data_list[i]->book_size, - (uintptr_t)data_list[i]->whoTo, - data_list[i]->rec.data.TSN_seq); + (uint32_t)(uintptr_t)data_list[i]->whoTo, + data_list[i]->rec.data.tsn); } sctp_flight_size_increase(data_list[i]); sctp_total_flight_increase(stcb, data_list[i]); @@ -10261,7 +10504,7 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp, * t3-expiring. */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, inp, stcb, net, - SCTP_FROM_SCTP_OUTPUT+SCTP_LOC_4); + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_2); sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net); } } @@ -10317,14 +10560,10 @@ sctp_timer_validation(struct sctp_inpcb *inp, } void -sctp_chunk_output (struct sctp_inpcb *inp, +sctp_chunk_output(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_where, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + int so_locked) { /*- * Ok this is the generic chunk service queue. we must do the @@ -10336,7 +10575,7 @@ sctp_chunk_output (struct sctp_inpcb *inp, * FIRST/MIDDLE and LAST to the out queue in one pass) and assigning * TSN's * - Check to see if the cwnd/rwnd allows any output, if so we - * go ahead and fomulate and send the low level chunks. Making sure + * go ahead and formulate and send the low level chunks. Making sure * to combine any control in the control chunk queue also. */ struct sctp_association *asoc; @@ -10346,12 +10585,12 @@ sctp_chunk_output (struct sctp_inpcb *inp, struct timeval now; int now_filled = 0; int nagle_on; - int frag_point = sctp_get_frag_point(stcb, &stcb->asoc); + uint32_t frag_point = sctp_get_frag_point(stcb); int un_sent = 0; int fr_done; unsigned int tot_frs = 0; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { @@ -10359,6 +10598,7 @@ sctp_chunk_output (struct sctp_inpcb *inp, } #endif asoc = &stcb->asoc; +do_it_again: /* The Nagle algorithm is only applied when handling a send call. */ if (from_where == SCTP_OUTPUT_FROM_USR_SEND) { if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NODELAY)) { @@ -10376,7 +10616,8 @@ sctp_chunk_output (struct sctp_inpcb *inp, if ((un_sent <= 0) && (TAILQ_EMPTY(&asoc->control_send_queue)) && (TAILQ_EMPTY(&asoc->asconf_send_queue)) && - (asoc->sent_queue_retran_cnt == 0)) { + (asoc->sent_queue_retran_cnt == 0) && + (asoc->trigger_reset == 0)) { /* Nothing to do unless there is something to be sent left */ return; } @@ -10385,7 +10626,8 @@ sctp_chunk_output (struct sctp_inpcb *inp, */ if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_send_sack(stcb, so_locked); - (void)SCTP_OS_TIMER_STOP(&stcb->asoc.dack_timer.timer); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_3); } while (asoc->sent_queue_retran_cnt) { /*- @@ -10394,13 +10636,13 @@ sctp_chunk_output (struct sctp_inpcb *inp, */ if (from_where == SCTP_OUTPUT_FROM_COOKIE_ACK) { /*- - * Special hook for handling cookiess discarded + * Special hook for handling cookies discarded * by peer that carried data. Send cookie-ack only * and then the next call with get the retran's. */ (void)sctp_med_chunk_output(inp, stcb, asoc, &num_out, &reason_code, 1, - from_where, - &now, &now_filled, frag_point, so_locked); + from_where, + &now, &now_filled, frag_point, so_locked); return; } else if (from_where != SCTP_OUTPUT_FROM_HB_TMR) { /* if its not from a HB then do it */ @@ -10424,8 +10666,8 @@ sctp_chunk_output (struct sctp_inpcb *inp, * if queued too. */ (void)sctp_med_chunk_output(inp, stcb, asoc, &num_out, &reason_code, 1, - from_where, - &now, &now_filled, frag_point, so_locked); + from_where, + &now, &now_filled, frag_point, so_locked); #ifdef SCTP_AUDITING_ENABLED sctp_auditing(8, inp, stcb, NULL); #endif @@ -10452,7 +10694,7 @@ sctp_chunk_output (struct sctp_inpcb *inp, #endif /* Push out any control */ (void)sctp_med_chunk_output(inp, stcb, asoc, &num_out, &reason_code, 1, from_where, - &now, &now_filled, frag_point, so_locked); + &now, &now_filled, frag_point, so_locked); return; } if ((asoc->fr_max_burst > 0) && (tot_frs >= asoc->fr_max_burst)) { @@ -10469,7 +10711,7 @@ sctp_chunk_output (struct sctp_inpcb *inp, #endif /* Check for bad destinations, if they exist move chunks around. */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - if (!(net->dest_state & SCTP_ADDR_REACHABLE)) { + if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) { /*- * if possible move things off of this address we * still may send below due to the dormant state but @@ -10504,13 +10746,12 @@ sctp_chunk_output (struct sctp_inpcb *inp, } } } - } burst_cnt = 0; do { error = sctp_med_chunk_output(inp, stcb, asoc, &num_out, - &reason_code, 0, from_where, - &now, &now_filled, frag_point, so_locked); + &reason_code, 0, from_where, + &now, &now_filled, frag_point, so_locked); if (error) { SCTPDBG(SCTP_DEBUG_OUTPUT1, "Error %d was returned from med-c-op\n", error); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_MAXBURST_ENABLE) { @@ -10539,18 +10780,16 @@ sctp_chunk_output (struct sctp_inpcb *inp, * have data in flight we stop, except if we are * handling a fragmented user message. */ - un_sent = ((stcb->asoc.total_output_queue_size - stcb->asoc.total_flight) + - (stcb->asoc.stream_queue_cnt * sizeof(struct sctp_data_chunk))); + un_sent = stcb->asoc.total_output_queue_size - stcb->asoc.total_flight; if ((un_sent < (int)(stcb->asoc.smallest_mtu - SCTP_MIN_OVERHEAD)) && - (stcb->asoc.total_flight > 0) && - ((stcb->asoc.locked_on_sending == NULL) || - sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR))) { + (stcb->asoc.total_flight > 0)) { +/* && sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR))) {*/ break; } } if (TAILQ_EMPTY(&asoc->control_send_queue) && TAILQ_EMPTY(&asoc->send_queue) && - stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, asoc)) { + sctp_is_there_unsent_data(stcb, so_locked) == 0) { /* Nothing left to send */ break; } @@ -10587,30 +10826,27 @@ sctp_chunk_output (struct sctp_inpcb *inp, */ if (stcb->asoc.ecn_echo_cnt_onq) sctp_fix_ecn_echo(asoc); + + if (stcb->asoc.trigger_reset) { + if (sctp_send_stream_reset_out_if_possible(stcb, so_locked) == 0) { + goto do_it_again; + } + } return; } - int sctp_output( struct sctp_inpcb *inp, -#if defined(__Panda__) - pakhandle_type m, -#else struct mbuf *m, -#endif struct sockaddr *addr, -#if defined(__Panda__) - pakhandle_type control, -#else struct mbuf *control, -#endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) struct thread *p, -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) PKTHREAD p, #else -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) struct proc *p SCTP_UNUSED, #else struct proc *p, @@ -10632,7 +10868,7 @@ sctp_output( (struct uio *)NULL, m, control, -#if defined(__APPLE__) || defined(__Panda__) +#if defined(__APPLE__) && !defined(__Userspace__) flags #else flags, p @@ -10644,11 +10880,16 @@ void send_forward_tsn(struct sctp_tcb *stcb, struct sctp_association *asoc) { - struct sctp_tmit_chunk *chk; + struct sctp_tmit_chunk *chk, *at, *tp1, *last; struct sctp_forward_tsn_chunk *fwdtsn; + struct sctp_strseq *strseq; + struct sctp_strseq_mid *strseq_m; uint32_t advance_peer_ack_point; + unsigned int cnt_of_space, i, ovh; + unsigned int space_needed; + unsigned int cnt_of_skipped = 0; - SCTP_TCB_LOCK_ASSERT(stcb); + SCTP_TCB_LOCK_ASSERT(stcb); TAILQ_FOREACH(chk, &asoc->control_send_queue, sctp_next) { if (chk->rec.chunk_id.id == SCTP_FORWARD_CUM_TSN) { /* mark it to unsent */ @@ -10669,6 +10910,13 @@ send_forward_tsn(struct sctp_tcb *stcb, } asoc->fwd_tsn_cnt++; chk->copy_by_ref = 0; + /* + * We don't do the old thing here since + * this is used not for on-wire but to + * tell if we are sending a fwd-tsn by + * the stack during output. And if its + * a IFORWARD or a FORWARD it is a fwd-tsn. + */ chk->rec.chunk_id.id = SCTP_FORWARD_CUM_TSN; chk->rec.chunk_id.can_take_data = 0; chk->flags = 0; @@ -10690,142 +10938,162 @@ send_forward_tsn(struct sctp_tcb *stcb, * stream/seq of the ones we skip. */ SCTP_BUF_LEN(chk->data) = 0; - { - struct sctp_tmit_chunk *at, *tp1, *last; - struct sctp_strseq *strseq; - unsigned int cnt_of_space, i, ovh; - unsigned int space_needed; - unsigned int cnt_of_skipped = 0; - - TAILQ_FOREACH(at, &asoc->sent_queue, sctp_next) { - if ((at->sent != SCTP_FORWARD_TSN_SKIP) && - (at->sent != SCTP_DATAGRAM_NR_ACKED)) { - /* no more to look at */ - break; - } - if (at->rec.data.rcv_flags & SCTP_DATA_UNORDERED) { - /* We don't report these */ - continue; - } - cnt_of_skipped++; + TAILQ_FOREACH(at, &asoc->sent_queue, sctp_next) { + if ((at->sent != SCTP_FORWARD_TSN_SKIP) && + (at->sent != SCTP_DATAGRAM_NR_ACKED)) { + /* no more to look at */ + break; + } + if (!asoc->idata_supported && (at->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { + /* We don't report these */ + continue; } + cnt_of_skipped++; + } + if (asoc->idata_supported) { space_needed = (sizeof(struct sctp_forward_tsn_chunk) + - (cnt_of_skipped * sizeof(struct sctp_strseq))); - - cnt_of_space = M_TRAILINGSPACE(chk->data); + (cnt_of_skipped * sizeof(struct sctp_strseq_mid))); + } else { + space_needed = (sizeof(struct sctp_forward_tsn_chunk) + + (cnt_of_skipped * sizeof(struct sctp_strseq))); + } + cnt_of_space = (unsigned int)M_TRAILINGSPACE(chk->data); - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MIN_OVERHEAD; - } else { - ovh = SCTP_MIN_V4_OVERHEAD; - } - if (cnt_of_space > (asoc->smallest_mtu - ovh)) { - /* trim to a mtu size */ - cnt_of_space = asoc->smallest_mtu - ovh; - } + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { + ovh = SCTP_MIN_OVERHEAD; + } else { + ovh = SCTP_MIN_V4_OVERHEAD; + } + if (cnt_of_space > (asoc->smallest_mtu - ovh)) { + /* trim to a mtu size */ + cnt_of_space = asoc->smallest_mtu - ovh; + } + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_TRY_ADVANCE) { + sctp_misc_ints(SCTP_FWD_TSN_CHECK, + 0xff, 0, cnt_of_skipped, + asoc->advanced_peer_ack_point); + } + advance_peer_ack_point = asoc->advanced_peer_ack_point; + if (cnt_of_space < space_needed) { + /*- + * ok we must trim down the chunk by lowering the + * advance peer ack point. + */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_TRY_ADVANCE) { sctp_misc_ints(SCTP_FWD_TSN_CHECK, - 0xff, 0, cnt_of_skipped, - asoc->advanced_peer_ack_point); - + 0xff, 0xff, cnt_of_space, + space_needed); } - advance_peer_ack_point = asoc->advanced_peer_ack_point; - if (cnt_of_space < space_needed) { - /*- - * ok we must trim down the chunk by lowering the - * advance peer ack point. - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_TRY_ADVANCE) { - sctp_misc_ints(SCTP_FWD_TSN_CHECK, - 0xff, 0xff, cnt_of_space, - space_needed); - } - cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + if (asoc->idata_supported) { + cnt_of_skipped /= sizeof(struct sctp_strseq_mid); + } else { cnt_of_skipped /= sizeof(struct sctp_strseq); - /*- - * Go through and find the TSN that will be the one - * we report. - */ - at = TAILQ_FIRST(&asoc->sent_queue); - if (at != NULL) { - for (i = 0; i < cnt_of_skipped; i++) { - tp1 = TAILQ_NEXT(at, sctp_next); - if (tp1 == NULL) { - break; - } - at = tp1; + } + /*- + * Go through and find the TSN that will be the one + * we report. + */ + at = TAILQ_FIRST(&asoc->sent_queue); + if (at != NULL) { + for (i = 0; i < cnt_of_skipped; i++) { + tp1 = TAILQ_NEXT(at, sctp_next); + if (tp1 == NULL) { + break; } + at = tp1; } - if (at && SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_TRY_ADVANCE) { - sctp_misc_ints(SCTP_FWD_TSN_CHECK, - 0xff, cnt_of_skipped, at->rec.data.TSN_seq, - asoc->advanced_peer_ack_point); - } - last = at; - /*- - * last now points to last one I can report, update - * peer ack point - */ - if (last) - advance_peer_ack_point = last->rec.data.TSN_seq; + } + if (at && SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_TRY_ADVANCE) { + sctp_misc_ints(SCTP_FWD_TSN_CHECK, + 0xff, cnt_of_skipped, at->rec.data.tsn, + asoc->advanced_peer_ack_point); + } + last = at; + /*- + * last now points to last one I can report, update + * peer ack point + */ + if (last) { + advance_peer_ack_point = last->rec.data.tsn; + } + if (asoc->idata_supported) { + space_needed = sizeof(struct sctp_forward_tsn_chunk) + + cnt_of_skipped * sizeof(struct sctp_strseq_mid); + } else { space_needed = sizeof(struct sctp_forward_tsn_chunk) + cnt_of_skipped * sizeof(struct sctp_strseq); } - chk->send_size = space_needed; - /* Setup the chunk */ - fwdtsn = mtod(chk->data, struct sctp_forward_tsn_chunk *); - fwdtsn->ch.chunk_length = htons(chk->send_size); - fwdtsn->ch.chunk_flags = 0; + } + chk->send_size = space_needed; + /* Setup the chunk */ + fwdtsn = mtod(chk->data, struct sctp_forward_tsn_chunk *); + fwdtsn->ch.chunk_length = htons(chk->send_size); + fwdtsn->ch.chunk_flags = 0; + if (asoc->idata_supported) { + fwdtsn->ch.chunk_type = SCTP_IFORWARD_CUM_TSN; + } else { fwdtsn->ch.chunk_type = SCTP_FORWARD_CUM_TSN; - fwdtsn->new_cumulative_tsn = htonl(advance_peer_ack_point); - SCTP_BUF_LEN(chk->data) = chk->send_size; - fwdtsn++; - /*- - * Move pointer to after the fwdtsn and transfer to the - * strseq pointer. - */ + } + fwdtsn->new_cumulative_tsn = htonl(advance_peer_ack_point); + SCTP_BUF_LEN(chk->data) = chk->send_size; + fwdtsn++; + /*- + * Move pointer to after the fwdtsn and transfer to the + * strseq pointer. + */ + if (asoc->idata_supported) { + strseq_m = (struct sctp_strseq_mid *)fwdtsn; + strseq = NULL; + } else { strseq = (struct sctp_strseq *)fwdtsn; - /*- - * Now populate the strseq list. This is done blindly - * without pulling out duplicate stream info. This is - * inefficent but won't harm the process since the peer will - * look at these in sequence and will thus release anything. - * It could mean we exceed the PMTU and chop off some that - * we could have included.. but this is unlikely (aka 1432/4 - * would mean 300+ stream seq's would have to be reported in - * one FWD-TSN. With a bit of work we can later FIX this to - * optimize and pull out duplcates.. but it does add more - * overhead. So for now... not! - */ - at = TAILQ_FIRST(&asoc->sent_queue); - for (i = 0; i < cnt_of_skipped; i++) { - tp1 = TAILQ_NEXT(at, sctp_next); - if (tp1 == NULL) - break; + strseq_m = NULL; + } + /*- + * Now populate the strseq list. This is done blindly + * without pulling out duplicate stream info. This is + * inefficient but won't harm the process since the peer will + * look at these in sequence and will thus release anything. + * It could mean we exceed the PMTU and chop off some that + * we could have included.. but this is unlikely (aka 1432/4 + * would mean 300+ stream seq's would have to be reported in + * one FWD-TSN. With a bit of work we can later FIX this to + * optimize and pull out duplicates.. but it does add more + * overhead. So for now... not! + */ + i = 0; + TAILQ_FOREACH(at, &asoc->sent_queue, sctp_next) { + if (i >= cnt_of_skipped) { + break; + } + if (!asoc->idata_supported && (at->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { + /* We don't report these */ + continue; + } + if (at->rec.data.tsn == advance_peer_ack_point) { + at->rec.data.fwd_tsn_cnt = 0; + } + if (asoc->idata_supported) { + strseq_m->sid = htons(at->rec.data.sid); if (at->rec.data.rcv_flags & SCTP_DATA_UNORDERED) { - /* We don't report these */ - i--; - at = tp1; - continue; - } - if (at->rec.data.TSN_seq == advance_peer_ack_point) { - at->rec.data.fwd_tsn_cnt = 0; + strseq_m->flags = htons(PR_SCTP_UNORDERED_FLAG); + } else { + strseq_m->flags = 0; } - strseq->stream = ntohs(at->rec.data.stream_number); - strseq->sequence = ntohs(at->rec.data.stream_seq); + strseq_m->mid = htonl(at->rec.data.mid); + strseq_m++; + } else { + strseq->sid = htons(at->rec.data.sid); + strseq->ssn = htons((uint16_t)at->rec.data.mid); strseq++; - at = tp1; } + i++; } return; } void -sctp_send_sack(struct sctp_tcb *stcb, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_send_sack(struct sctp_tcb *stcb, int so_locked) { /*- * Queue up a SACK or NR-SACK in the control queue. @@ -10838,7 +11106,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked struct sctp_sack_chunk *sack; struct sctp_nr_sack_chunk *nr_sack; struct sctp_gap_ack_block *gap_descriptor; - struct sack_track *selector; + const struct sack_track *selector; int mergeable = 0; int offset; caddr_t limit; @@ -10890,7 +11158,8 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked /* No memory so we drop the idea, and set a timer */ if (stcb->asoc.delayed_ack) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_5); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_4); sctp_timer_start(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL); } else { @@ -10912,32 +11181,17 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked a_chk->sent = SCTP_DATAGRAM_UNSENT; a_chk->whoTo = NULL; - if ((asoc->numduptsns) || - (!(asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE))) { + if ((asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE) == 0) { /*- - * Ok, we have some duplicates or the destination for the - * sack is unreachable, lets see if we can select an - * alternate than asoc->last_data_chunk_from + * Ok, the destination for the SACK is unreachable, lets see if + * we can select an alternate to asoc->last_data_chunk_from */ - if ((asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE) && - (asoc->used_alt_onsack > asoc->numnets)) { - /* We used an alt last time, don't this time */ - a_chk->whoTo = NULL; - } else { - asoc->used_alt_onsack++; - a_chk->whoTo = sctp_find_alternate_net(stcb, asoc->last_data_chunk_from, 0); - } + a_chk->whoTo = sctp_find_alternate_net(stcb, asoc->last_data_chunk_from, 0); if (a_chk->whoTo == NULL) { /* Nope, no alternate */ a_chk->whoTo = asoc->last_data_chunk_from; - asoc->used_alt_onsack = 0; } } else { - /* - * No duplicates so we use the last place we received data - * from. - */ - asoc->used_alt_onsack = 0; a_chk->whoTo = asoc->last_data_chunk_from; } if (a_chk->whoTo) { @@ -10973,7 +11227,8 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked /* sa_ignore NO_NULL_CHK */ if (stcb->asoc.delayed_ack) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_6); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_5); sctp_timer_start(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL); } else { @@ -10983,7 +11238,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked } /* ok, lets go through and fill it in */ SCTP_BUF_RESV_UF(a_chk->data, SCTP_MIN_OVERHEAD); - space = M_TRAILINGSPACE(a_chk->data); + space = (unsigned int)M_TRAILINGSPACE(a_chk->data); if (space > (a_chk->whoTo->mtu - SCTP_MIN_OVERHEAD)) { space = (a_chk->whoTo->mtu - SCTP_MIN_OVERHEAD); } @@ -11019,7 +11274,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked if (highest_tsn > asoc->mapping_array_base_tsn) { siz = (((highest_tsn - asoc->mapping_array_base_tsn) + 1) + 7) / 8; } else { - siz = (((MAX_TSN - highest_tsn) + 1) + highest_tsn + 7) / 8; + siz = (((MAX_TSN - asoc->mapping_array_base_tsn) + 1) + highest_tsn + 7) / 8; } } else { sack = NULL; @@ -11052,7 +11307,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked * Clear all bits corresponding to TSNs * smaller or equal to the cumulative TSN. */ - tsn_map &= (~0 << (1 - offset)); + tsn_map &= (~0U << (1 - offset)); } selector = &sack_array[tsn_map]; if (mergeable && selector->right_edge) { @@ -11103,7 +11358,6 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked } if ((type == SCTP_NR_SELECTIVE_ACK) && (limit_reached == 0)) { - mergeable = 0; if (asoc->highest_tsn_inside_nr_map > asoc->mapping_array_base_tsn) { @@ -11126,7 +11380,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked * Clear all bits corresponding to TSNs * smaller or equal to the cumulative TSN. */ - tsn_map &= (~0 << (1 - offset)); + tsn_map &= (~0U << (1 - offset)); } selector = &sack_array[tsn_map]; if (mergeable && selector->right_edge) { @@ -11195,9 +11449,9 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked * queue. */ if (type == SCTP_SELECTIVE_ACK) { - a_chk->send_size = sizeof(struct sctp_sack_chunk) + - (num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) + - num_dups * sizeof(int32_t); + a_chk->send_size = (uint16_t)(sizeof(struct sctp_sack_chunk) + + (num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) + + num_dups * sizeof(int32_t)); SCTP_BUF_LEN(a_chk->data) = a_chk->send_size; sack->sack.cum_tsn_ack = htonl(asoc->cumulative_tsn); sack->sack.a_rwnd = htonl(asoc->my_rwnd); @@ -11207,9 +11461,9 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked sack->ch.chunk_flags = flags; sack->ch.chunk_length = htons(a_chk->send_size); } else { - a_chk->send_size = sizeof(struct sctp_nr_sack_chunk) + - (num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) + - num_dups * sizeof(int32_t); + a_chk->send_size = (uint16_t)(sizeof(struct sctp_nr_sack_chunk) + + (num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) + + num_dups * sizeof(int32_t)); SCTP_BUF_LEN(a_chk->data) = a_chk->send_size; nr_sack->nr_sack.cum_tsn_ack = htonl(asoc->cumulative_tsn); nr_sack->nr_sack.a_rwnd = htonl(asoc->my_rwnd); @@ -11230,11 +11484,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked } void -sctp_send_abort_tcb(struct sctp_tcb *stcb, struct mbuf *operr, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) +sctp_send_abort_tcb(struct sctp_tcb *stcb, struct mbuf *operr, int so_locked) { struct mbuf *m_abort, *m, *m_last; struct mbuf *m_out, *m_end = NULL; @@ -11243,9 +11493,10 @@ sctp_send_abort_tcb(struct sctp_tcb *stcb, struct mbuf *operr, int so_locked struct sctp_nets *net; uint32_t vtag; uint32_t auth_offset = 0; + int error; uint16_t cause_len, chunk_len, padding_len; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(stcb->sctp_ep)); } else { @@ -11321,15 +11572,24 @@ sctp_send_abort_tcb(struct sctp_tcb *stcb, struct mbuf *operr, int so_locked return; } } - (void)sctp_lowlevel_chunk_output(stcb->sctp_ep, stcb, net, - (struct sockaddr *)&net->ro._l_addr, - m_out, auth_offset, auth, stcb->asoc.authinfo.active_keyid, 1, 0, 0, - stcb->sctp_ep->sctp_lport, stcb->rport, htonl(vtag), - stcb->asoc.primary_destination->port, NULL, -#if defined(__FreeBSD__) - 0, 0, + if ((error = sctp_lowlevel_chunk_output(stcb->sctp_ep, stcb, net, + (struct sockaddr *)&net->ro._l_addr, + m_out, auth_offset, auth, stcb->asoc.authinfo.active_keyid, 1, 0, 0, + stcb->sctp_ep->sctp_lport, stcb->rport, htonl(vtag), + stcb->asoc.primary_destination->port, NULL, +#if defined(__FreeBSD__) && !defined(__Userspace__) + 0, 0, #endif - so_locked); + stcb->asoc.zero_checksum == 2, + so_locked))) { + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); + if (error == ENOBUFS) { + stcb->asoc.ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); + } + } else { + stcb->asoc.ifp_had_enobuf = 0; + } SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); } @@ -11342,6 +11602,7 @@ sctp_send_shutdown_complete(struct sctp_tcb *stcb, struct mbuf *m_shutdown_comp; struct sctp_shutdown_complete_chunk *shutdown_complete; uint32_t vtag; + int error; uint8_t flags; m_shutdown_comp = sctp_get_mbuf_for_msg(sizeof(struct sctp_chunkhdr), 0, M_NOWAIT, 1, MT_HEADER); @@ -11361,26 +11622,35 @@ sctp_send_shutdown_complete(struct sctp_tcb *stcb, shutdown_complete->ch.chunk_flags = flags; shutdown_complete->ch.chunk_length = htons(sizeof(struct sctp_shutdown_complete_chunk)); SCTP_BUF_LEN(m_shutdown_comp) = sizeof(struct sctp_shutdown_complete_chunk); - (void)sctp_lowlevel_chunk_output(stcb->sctp_ep, stcb, net, - (struct sockaddr *)&net->ro._l_addr, - m_shutdown_comp, 0, NULL, 0, 1, 0, 0, - stcb->sctp_ep->sctp_lport, stcb->rport, - htonl(vtag), - net->port, NULL, -#if defined(__FreeBSD__) - 0, 0, -#endif - SCTP_SO_NOT_LOCKED); + if ((error = sctp_lowlevel_chunk_output(stcb->sctp_ep, stcb, net, + (struct sockaddr *)&net->ro._l_addr, + m_shutdown_comp, 0, NULL, 0, 1, 0, 0, + stcb->sctp_ep->sctp_lport, stcb->rport, + htonl(vtag), + net->port, NULL, +#if defined(__FreeBSD__) && !defined(__Userspace__) + 0, 0, +#endif + stcb->asoc.zero_checksum == 2, + SCTP_SO_NOT_LOCKED))) { + SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error); + if (error == ENOBUFS) { + stcb->asoc.ifp_had_enobuf = 1; + SCTP_STAT_INCR(sctps_lowlevelerr); + } + } else { + stcb->asoc.ifp_had_enobuf = 0; + } SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); return; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) static void sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, uint32_t vtag, uint8_t type, struct mbuf *cause, - uint8_t mflowtype, uint32_t mflowid, + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, uint32_t vrf_id, uint16_t port) #else static void @@ -11390,21 +11660,16 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, uint32_t vrf_id SCTP_UNUSED, uint16_t port) #endif { -#ifdef __Panda__ - pakhandle_type o_pak; -#else struct mbuf *o_pak; -#endif struct mbuf *mout; struct sctphdr *shout; struct sctp_chunkhdr *ch; #if defined(INET) || defined(INET6) struct udphdr *udp; - int ret; #endif - int len, cause_len, padding_len; + int ret, len, cause_len, padding_len; #ifdef INET -#if defined(__APPLE__) || defined(__Panda__) +#if defined(__APPLE__) && !defined(__Userspace__) sctp_route_t ro; #endif struct sockaddr_in *src_sin, *dst_sin; @@ -11459,7 +11724,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, len += sizeof(struct udphdr); } #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) mout = sctp_get_mbuf_for_msg(len + max_linkhdr, 1, M_NOWAIT, 1, MT_DATA); #else @@ -11474,7 +11739,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, } return; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) SCTP_BUF_RESV_UF(mout, max_linkhdr); #else @@ -11485,7 +11750,8 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, #endif SCTP_BUF_LEN(mout) = len; SCTP_BUF_NEXT(mout) = cause; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) + M_SETFIB(mout, fibnum); mout->m_pkthdr.flowid = mflowid; M_HASHTYPE_SET(mout, mflowtype); #endif @@ -11504,8 +11770,17 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, ip->ip_v = IPVERSION; ip->ip_hl = (sizeof(struct ip) >> 2); ip->ip_tos = 0; -#if defined(__FreeBSD__) - ip->ip_id = ip_newid(); +#if defined(__FreeBSD__) && !defined(__Userspace__) + ip->ip_off = htons(IP_DF); +#elif defined(WITH_CONVERT_IP_OFF) || defined(__APPLE__) + ip->ip_off = IP_DF; +#else + ip->ip_off = htons(IP_DF); +#endif +#if defined(__Userspace__) + ip->ip_id = htons(ip_id++); +#elif defined(__FreeBSD__) + ip_fillid(ip); #elif defined(__APPLE__) #if RANDOM_IP_ID ip->ip_id = ip_randomid(); @@ -11513,9 +11788,8 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, ip->ip_id = htons(ip_id++); #endif #else - ip->ip_id = htons(ip_id++); + ip->ip_id = ip_id++; #endif - ip->ip_off = 0; ip->ip_ttl = MODULE_GLOBAL(ip_defttl); if (port) { ip->ip_p = IPPROTO_UDP; @@ -11535,7 +11809,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, dst_sin6 = (struct sockaddr_in6 *)dst; ip6 = mtod(mout, struct ip6_hdr *); ip6->ip6_flow = htonl(0x60000000); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (V_ip6_auto_flowlabel) { ip6->ip6_flow |= (htonl(ip6_randomflowlabel()) & IPV6_FLOWLABEL_MASK); } @@ -11571,10 +11845,10 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)); udp->uh_dport = port; udp->uh_sum = 0; - udp->uh_ulen = htons(sizeof(struct udphdr) + - sizeof(struct sctphdr) + - sizeof(struct sctp_chunkhdr) + - cause_len + padding_len); + udp->uh_ulen = htons((uint16_t)(sizeof(struct udphdr) + + sizeof(struct sctphdr) + + sizeof(struct sctp_chunkhdr) + + cause_len + padding_len)); len += sizeof(struct udphdr); shout = (struct sctphdr *)((caddr_t)shout + sizeof(struct udphdr)); } else { @@ -11597,7 +11871,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, } else { ch->chunk_flags = SCTP_HAD_NO_TCB; } - ch->chunk_length = htons(sizeof(struct sctp_chunkhdr) + cause_len); + ch->chunk_length = htons((uint16_t)(sizeof(struct sctp_chunkhdr) + cause_len)); len += sizeof(struct sctp_chunkhdr); len += cause_len + padding_len; @@ -11609,16 +11883,13 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, switch (dst->sa_family) { #ifdef INET case AF_INET: -#if defined(__APPLE__) || defined(__Panda__) +#if defined(__APPLE__) && !defined(__Userspace__) /* zap the stack pointer to the route */ - bzero(&ro, sizeof(sctp_route_t)); -#if defined(__Panda__) - ro._l_addr.sa.sa_family = AF_INET; -#endif + memset(&ro, 0, sizeof(sctp_route_t)); #endif if (port) { -#if !defined(__Windows__) && !defined(__Userspace__) -#if defined(__FreeBSD__) && ((__FreeBSD_version > 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000) +#if !defined(_WIN32) && !defined(__Userspace__) +#if defined(__FreeBSD__) if (V_udp_cksum) { udp->uh_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr, udp->uh_ulen + htons(IPPROTO_UDP)); } else { @@ -11631,43 +11902,33 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, udp->uh_sum = 0; #endif } -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 1000000 +#if defined(__FreeBSD__) && !defined(__Userspace__) ip->ip_len = htons(len); -#else - ip->ip_len = len; -#endif #elif defined(__APPLE__) || defined(__Userspace__) ip->ip_len = len; #else ip->ip_len = htons(len); #endif if (port) { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else shout->checksum = sctp_calculate_cksum(mout, sizeof(struct ip) + sizeof(struct udphdr)); SCTP_STAT_INCR(sctps_sendswcrc); -#endif -#if defined(__FreeBSD__) && ((__FreeBSD_version > 803000 && __FreeBSD_version < 900000) || __FreeBSD_version > 900000) +#if !defined(_WIN32) && !defined(__Userspace__) +#if defined(__FreeBSD__) if (V_udp_cksum) { SCTP_ENABLE_UDP_CSUM(o_pak); } #else SCTP_ENABLE_UDP_CSUM(o_pak); +#endif #endif } else { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) mout->m_pkthdr.csum_flags = CSUM_SCTP; mout->m_pkthdr.csum_data = offsetof(struct sctphdr, checksum); SCTP_STAT_INCR(sctps_sendhwcrc); #else shout->checksum = sctp_calculate_cksum(mout, sizeof(struct ip)); SCTP_STAT_INCR(sctps_sendswcrc); -#endif #endif } #ifdef SCTP_PACKET_LOGGING @@ -11675,7 +11936,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, sctp_packet_log(o_pak); } #endif -#if defined(__APPLE__) || defined(__Panda__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_IP_OUTPUT(ret, o_pak, &ro, NULL, vrf_id); /* Free the route if we got one back */ if (ro.ro_rt) { @@ -11683,49 +11944,45 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, ro.ro_rt = NULL; } #else +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(send, NULL, NULL, ip, NULL, shout); +#endif SCTP_IP_OUTPUT(ret, o_pak, NULL, NULL, vrf_id); #endif break; #endif #ifdef INET6 case AF_INET6: - ip6->ip6_plen = len - sizeof(struct ip6_hdr); + ip6->ip6_plen = htons((uint16_t)(len - sizeof(struct ip6_hdr))); if (port) { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else shout->checksum = sctp_calculate_cksum(mout, sizeof(struct ip6_hdr) + sizeof(struct udphdr)); SCTP_STAT_INCR(sctps_sendswcrc); -#endif -#if defined(__Windows__) +#if !defined(__Userspace__) +#if defined(_WIN32) udp->uh_sum = 0; -#elif !defined(__Userspace__) +#else if ((udp->uh_sum = in6_cksum(o_pak, IPPROTO_UDP, sizeof(struct ip6_hdr), len - sizeof(struct ip6_hdr))) == 0) { udp->uh_sum = 0xffff; } +#endif #endif } else { -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 900000 -#if __FreeBSD_version > 901000 +#if defined(__FreeBSD__) && !defined(__Userspace__) mout->m_pkthdr.csum_flags = CSUM_SCTP_IPV6; -#else - mout->m_pkthdr.csum_flags = CSUM_SCTP; -#endif mout->m_pkthdr.csum_data = offsetof(struct sctphdr, checksum); SCTP_STAT_INCR(sctps_sendhwcrc); #else shout->checksum = sctp_calculate_cksum(mout, sizeof(struct ip6_hdr)); SCTP_STAT_INCR(sctps_sendswcrc); -#endif #endif } #ifdef SCTP_PACKET_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LAST_PACKET_TRACING) { sctp_packet_log(o_pak); } +#endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_PROBE5(send, NULL, NULL, ip6, NULL, shout); #endif SCTP_IP6_OUTPUT(ret, o_pak, NULL, NULL, NULL, vrf_id); break; @@ -11737,12 +11994,12 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, struct sockaddr_conn *sconn; sconn = (struct sockaddr_conn *)src; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_sendnocrc); -#else - shout->checksum = sctp_calculate_cksum(mout, 0); - SCTP_STAT_INCR(sctps_sendswcrc); -#endif + if (SCTP_BASE_VAR(crc32c_offloaded) == 0) { + shout->checksum = sctp_calculate_cksum(o_pak, 0); + SCTP_STAT_INCR(sctps_sendswcrc); + } else { + SCTP_STAT_INCR(sctps_sendhwcrc); + } #ifdef SCTP_PACKET_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LAST_PACKET_TRACING) { sctp_packet_log(mout); @@ -11750,11 +12007,13 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, #endif /* Don't alloc/free for each packet */ if ((buffer = malloc(len)) != NULL) { - m_copydata(mout, 0, len, buffer); - SCTP_BASE_VAR(conn_output)(sconn->sconn_addr, buffer, len, 0, 0); + m_copydata(o_pak, 0, len, buffer); + ret = SCTP_BASE_VAR(conn_output)(sconn->sconn_addr, buffer, len, 0, 0); free(buffer); + } else { + ret = ENOMEM; } - sctp_m_freem(mout); + sctp_m_freem(o_pak); break; } #endif @@ -11765,33 +12024,38 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, SCTP_LTRACE_ERR_RET_PKT(mout, NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); return; } + SCTPDBG(SCTP_DEBUG_OUTPUT3, "return from send is %d\n", ret); +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (port) { + UDPSTAT_INC(udps_opackets); + } +#endif SCTP_STAT_INCR(sctps_sendpackets); SCTP_STAT_INCR_COUNTER64(sctps_outpackets); SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); + if (ret) { + SCTP_STAT_INCR(sctps_senderrors); + } return; } void sctp_send_shutdown_complete2(struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { sctp_send_resp_msg(src, dst, sh, 0, SCTP_SHUTDOWN_COMPLETE, NULL, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); } void -sctp_send_hb(struct sctp_tcb *stcb, struct sctp_nets *net,int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) +sctp_send_hb(struct sctp_tcb *stcb, struct sctp_nets *net,int so_locked) { struct sctp_tmit_chunk *chk; struct sctp_heartbeat_chunk *hb; @@ -11852,7 +12116,7 @@ sctp_send_hb(struct sctp_tcb *stcb, struct sctp_nets *net,int so_locked /* Fill out hb parameter */ hb->heartbeat.hb_info.ph.param_type = htons(SCTP_HEARTBEAT_INFO); hb->heartbeat.hb_info.ph.param_length = htons(sizeof(struct sctp_heartbeat_info_param)); - hb->heartbeat.hb_info.time_value_1 = now.tv_sec; + hb->heartbeat.hb_info.time_value_1 = (uint32_t)now.tv_sec; hb->heartbeat.hb_info.time_value_2 = now.tv_usec; /* Did our user request this one, put it in */ hb->heartbeat.hb_info.addr_family = (uint8_t)net->ro._l_addr.sa.sa_family; @@ -11914,6 +12178,11 @@ sctp_send_hb(struct sctp_tcb *stcb, struct sctp_nets *net,int so_locked break; #endif default: + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, so_locked); return; break; } @@ -12027,7 +12296,7 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net, chk->flags = 0; len -= iphlen; chk->send_size = len; - /* Validate that we do not have an ABORT in here. */ + /* Validate that we do not have an ABORT in here. */ offset = iphlen + sizeof(struct sctphdr); ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, offset, sizeof(*ch), (uint8_t *) & chunk_buf); @@ -12089,7 +12358,7 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net, /* Len is already adjusted to size minus overhead above * take out the pkt_drop chunk itself from it. */ - chk->send_size = len - sizeof(struct sctp_pktdrop_chunk); + chk->send_size = (uint16_t)(len - sizeof(struct sctp_pktdrop_chunk)); len = chk->send_size; } else { /* no truncation needed */ @@ -12121,7 +12390,7 @@ sctp_send_packet_dropped(struct sctp_tcb *stcb, struct sctp_nets *net, drp->current_onq = htonl(asoc->size_on_reasm_queue + asoc->size_on_all_streams + asoc->my_rwnd_control_len + - stcb->sctp_socket->so_rcv.sb_cc); + SCTP_SBAVAIL(&stcb->sctp_socket->so_rcv)); } else { /*- * If my rwnd is 0, possibly from mbuf depletion as well as @@ -12172,7 +12441,7 @@ sctp_send_cwr(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t high_tsn, u chk->rec.chunk_id.id = SCTP_ECN_CWR; chk->rec.chunk_id.can_take_data = 1; chk->flags = 0; - chk->asoc = &stcb->asoc; + chk->asoc = asoc; chk->send_size = sizeof(struct sctp_cwr_chunk); chk->data = sctp_get_mbuf_for_msg(chk->send_size, 0, M_NOWAIT, 1, MT_HEADER); if (chk->data == NULL) { @@ -12190,34 +12459,64 @@ sctp_send_cwr(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t high_tsn, u cwr->ch.chunk_flags = override; cwr->ch.chunk_length = htons(sizeof(struct sctp_cwr_chunk)); cwr->tsn = htonl(high_tsn); - TAILQ_INSERT_TAIL(&stcb->asoc.control_send_queue, chk, sctp_next); + TAILQ_INSERT_TAIL(&asoc->control_send_queue, chk, sctp_next); asoc->ctrl_queue_cnt++; } -void -sctp_add_stream_reset_out(struct sctp_tmit_chunk *chk, - int number_entries, uint16_t * list, +static int +sctp_add_stream_reset_out(struct sctp_tcb *stcb, struct sctp_tmit_chunk *chk, uint32_t seq, uint32_t resp_seq, uint32_t last_sent) { uint16_t len, old_len, i; struct sctp_stream_reset_out_request *req_out; struct sctp_chunkhdr *ch; + int at; + int number_entries=0; ch = mtod(chk->data, struct sctp_chunkhdr *); old_len = len = SCTP_SIZE32(ntohs(ch->chunk_length)); - /* get to new offset for the param. */ req_out = (struct sctp_stream_reset_out_request *)((caddr_t)ch + len); /* now how long will this param be? */ - len = (sizeof(struct sctp_stream_reset_out_request) + (sizeof(uint16_t) * number_entries)); + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + if ((stcb->asoc.strmout[i].state == SCTP_STREAM_RESET_PENDING) && + (stcb->asoc.strmout[i].chunks_on_queues == 0) && + TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) { + number_entries++; + } + } + if (number_entries == 0) { + return (0); + } + if (number_entries == stcb->asoc.streamoutcnt) { + number_entries = 0; + } + if (number_entries > SCTP_MAX_STREAMS_AT_ONCE_RESET) { + number_entries = SCTP_MAX_STREAMS_AT_ONCE_RESET; + } + len = (uint16_t)(sizeof(struct sctp_stream_reset_out_request) + (sizeof(uint16_t) * number_entries)); req_out->ph.param_type = htons(SCTP_STR_RESET_OUT_REQUEST); req_out->ph.param_length = htons(len); req_out->request_seq = htonl(seq); req_out->response_seq = htonl(resp_seq); req_out->send_reset_at_tsn = htonl(last_sent); + at = 0; if (number_entries) { - for (i = 0; i < number_entries; i++) { - req_out->list_of_streams[i] = htons(list[i]); + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + if ((stcb->asoc.strmout[i].state == SCTP_STREAM_RESET_PENDING) && + (stcb->asoc.strmout[i].chunks_on_queues == 0) && + TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) { + req_out->list_of_streams[at] = htons(i); + at++; + stcb->asoc.strmout[i].state = SCTP_STREAM_RESET_IN_FLIGHT; + if (at >= number_entries) { + break; + } + } + } + } else { + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + stcb->asoc.strmout[i].state = SCTP_STREAM_RESET_IN_FLIGHT; } } if (SCTP_SIZE32(len) > len) { @@ -12234,7 +12533,7 @@ sctp_add_stream_reset_out(struct sctp_tmit_chunk *chk, chk->book_size_scale = 0; chk->send_size = SCTP_SIZE32(chk->book_size); SCTP_BUF_LEN(chk->data) = chk->send_size; - return; + return (1); } static void @@ -12252,7 +12551,7 @@ sctp_add_stream_reset_in(struct sctp_tmit_chunk *chk, /* get to new offset for the param. */ req_in = (struct sctp_stream_reset_in_request *)((caddr_t)ch + len); /* now how long will this param be? */ - len = (sizeof(struct sctp_stream_reset_in_request) + (sizeof(uint16_t) * number_entries)); + len = (uint16_t)(sizeof(struct sctp_stream_reset_in_request) + (sizeof(uint16_t) * number_entries)); req_in->ph.param_type = htons(SCTP_STR_RESET_IN_REQUEST); req_in->ph.param_length = htons(len); req_in->request_seq = htonl(seq); @@ -12335,6 +12634,68 @@ sctp_add_stream_reset_result(struct sctp_tmit_chunk *chk, return; } +void +sctp_send_deferred_reset_response(struct sctp_tcb *stcb, + struct sctp_stream_reset_list *ent, + int response) +{ + struct sctp_association *asoc; + struct sctp_tmit_chunk *chk; + struct sctp_chunkhdr *ch; + + asoc = &stcb->asoc; + + /* + * Reset our last reset action to the new one IP -> response + * (PERFORMED probably). This assures that if we fail to send, a + * retran from the peer will get the new response. + */ + asoc->last_reset_action[0] = response; + if (asoc->stream_reset_outstanding) { + return; + } + sctp_alloc_a_chunk(stcb, chk); + if (chk == NULL) { + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); + return; + } + chk->copy_by_ref = 0; + chk->rec.chunk_id.id = SCTP_STREAM_RESET; + chk->rec.chunk_id.can_take_data = 0; + chk->flags = 0; + chk->asoc = &stcb->asoc; + chk->book_size = sizeof(struct sctp_chunkhdr); + chk->send_size = SCTP_SIZE32(chk->book_size); + chk->book_size_scale = 0; + chk->data = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_NOWAIT, 1, MT_DATA); + if (chk->data == NULL) { + sctp_free_a_chunk(stcb, chk, SCTP_SO_LOCKED); + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); + return; + } + SCTP_BUF_RESV_UF(chk->data, SCTP_MIN_OVERHEAD); + /* setup chunk parameters */ + chk->sent = SCTP_DATAGRAM_UNSENT; + chk->snd_count = 0; + if (stcb->asoc.alternate) { + chk->whoTo = stcb->asoc.alternate; + } else { + chk->whoTo = stcb->asoc.primary_destination; + } + ch = mtod(chk->data, struct sctp_chunkhdr *); + ch->chunk_type = SCTP_STREAM_RESET; + ch->chunk_flags = 0; + ch->chunk_length = htons(chk->book_size); + atomic_add_int(&chk->whoTo->ref_count, 1); + SCTP_BUF_LEN(chk->data) = chk->send_size; + sctp_add_stream_reset_result(chk, ent->seq, response); + /* insert the chunk for sending */ + TAILQ_INSERT_TAIL(&asoc->control_send_queue, + chk, + sctp_next); + asoc->ctrl_queue_cnt++; +} + void sctp_add_stream_reset_result_tsn(struct sctp_tmit_chunk *chk, uint32_t resp_seq, uint32_t result, @@ -12433,47 +12794,17 @@ sctp_add_an_in_stream(struct sctp_tmit_chunk *chk, } int -sctp_send_str_reset_req(struct sctp_tcb *stcb, - uint16_t number_entries, uint16_t *list, - uint8_t send_out_req, - uint8_t send_in_req, - uint8_t send_tsn_req, - uint8_t add_stream, - uint16_t adding_o, - uint16_t adding_i, uint8_t peer_asked) +sctp_send_stream_reset_out_if_possible(struct sctp_tcb *stcb, int so_locked) { - struct sctp_association *asoc; struct sctp_tmit_chunk *chk; struct sctp_chunkhdr *ch; uint32_t seq; asoc = &stcb->asoc; + asoc->trigger_reset = 0; if (asoc->stream_reset_outstanding) { - /*- - * Already one pending, must get ACK back to clear the flag. - */ - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EBUSY); - return (EBUSY); - } - if ((send_out_req == 0) && (send_in_req == 0) && (send_tsn_req == 0) && - (add_stream == 0)) { - /* nothing to do */ - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); - return (EINVAL); - } - if (send_tsn_req && (send_out_req || send_in_req)) { - /* error, can't do that */ - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); - return (EINVAL); - } - if (number_entries > (MCLBYTES - - SCTP_MIN_OVERHEAD - - sizeof(struct sctp_chunkhdr) - - sizeof(struct sctp_stream_reset_out_request)) / - sizeof(uint16_t)) { - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); - return (ENOMEM); + return (EALREADY); } sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { @@ -12488,10 +12819,9 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb, chk->book_size = sizeof(struct sctp_chunkhdr); chk->send_size = SCTP_SIZE32(chk->book_size); chk->book_size_scale = 0; - chk->data = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_NOWAIT, 1, MT_DATA); if (chk->data == NULL) { - sctp_free_a_chunk(stcb, chk, SCTP_SO_LOCKED); + sctp_free_a_chunk(stcb, chk, so_locked); SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); return (ENOMEM); } @@ -12505,71 +12835,183 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb, } else { chk->whoTo = stcb->asoc.primary_destination; } - atomic_add_int(&chk->whoTo->ref_count, 1); ch = mtod(chk->data, struct sctp_chunkhdr *); ch->chunk_type = SCTP_STREAM_RESET; ch->chunk_flags = 0; ch->chunk_length = htons(chk->book_size); + atomic_add_int(&chk->whoTo->ref_count, 1); SCTP_BUF_LEN(chk->data) = chk->send_size; - seq = stcb->asoc.str_reset_seq_out; - if (send_out_req) { - sctp_add_stream_reset_out(chk, number_entries, list, - seq, (stcb->asoc.str_reset_seq_in - 1), (stcb->asoc.sending_seq - 1)); - asoc->stream_reset_out_is_outstanding = 1; + if (sctp_add_stream_reset_out(stcb, chk, seq, (stcb->asoc.str_reset_seq_in - 1), (stcb->asoc.sending_seq - 1))) { seq++; asoc->stream_reset_outstanding++; + } else { + m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, so_locked); + return (ENOENT); } - if ((add_stream & 1) && - ((stcb->asoc.strm_realoutsize - stcb->asoc.streamoutcnt) < adding_o)) { - /* Need to allocate more */ - struct sctp_stream_out *oldstream; - struct sctp_stream_queue_pending *sp, *nsp; - int i; -#if defined(SCTP_DETAILED_STR_STATS) - int j; -#endif + asoc->str_reset = chk; + /* insert the chunk for sending */ + TAILQ_INSERT_TAIL(&asoc->control_send_queue, + chk, + sctp_next); + asoc->ctrl_queue_cnt++; - oldstream = stcb->asoc.strmout; - /* get some more */ - SCTP_MALLOC(stcb->asoc.strmout, struct sctp_stream_out *, - ((stcb->asoc.streamoutcnt+adding_o) * sizeof(struct sctp_stream_out)), - SCTP_M_STRMO); - if (stcb->asoc.strmout == NULL) { - uint8_t x; - stcb->asoc.strmout = oldstream; - /* Turn off the bit */ - x = add_stream & 0xfe; - add_stream = x; + if (stcb->asoc.send_sack) { + sctp_send_sack(stcb, so_locked); + } + sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, chk->whoTo); + return (0); +} + +int +sctp_send_str_reset_req(struct sctp_tcb *stcb, + uint16_t number_entries, uint16_t *list, + uint8_t send_in_req, + uint8_t send_tsn_req, + uint8_t add_stream, + uint16_t adding_o, + uint16_t adding_i, uint8_t peer_asked) +{ + struct sctp_association *asoc; + struct sctp_tmit_chunk *chk; + struct sctp_chunkhdr *ch; + int can_send_out_req=0; + uint32_t seq; + + SCTP_TCB_LOCK_ASSERT(stcb); + + asoc = &stcb->asoc; + if (asoc->stream_reset_outstanding) { + /*- + * Already one pending, must get ACK back to clear the flag. + */ + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EBUSY); + return (EBUSY); + } + if ((send_in_req == 0) && (send_tsn_req == 0) && + (add_stream == 0)) { + /* nothing to do */ + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); + return (EINVAL); + } + if (send_tsn_req && send_in_req) { + /* error, can't do that */ + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); + return (EINVAL); + } else if (send_in_req) { + can_send_out_req = 1; + } + if (number_entries > (MCLBYTES - + SCTP_MIN_OVERHEAD - + sizeof(struct sctp_chunkhdr) - + sizeof(struct sctp_stream_reset_out_request)) / + sizeof(uint16_t)) { + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); + return (ENOMEM); + } + sctp_alloc_a_chunk(stcb, chk); + if (chk == NULL) { + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); + return (ENOMEM); + } + chk->copy_by_ref = 0; + chk->rec.chunk_id.id = SCTP_STREAM_RESET; + chk->rec.chunk_id.can_take_data = 0; + chk->flags = 0; + chk->asoc = &stcb->asoc; + chk->book_size = sizeof(struct sctp_chunkhdr); + chk->send_size = SCTP_SIZE32(chk->book_size); + chk->book_size_scale = 0; + chk->data = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_NOWAIT, 1, MT_DATA); + if (chk->data == NULL) { + sctp_free_a_chunk(stcb, chk, SCTP_SO_LOCKED); + SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ENOMEM); + return (ENOMEM); + } + SCTP_BUF_RESV_UF(chk->data, SCTP_MIN_OVERHEAD); + + /* setup chunk parameters */ + chk->sent = SCTP_DATAGRAM_UNSENT; + chk->snd_count = 0; + if (stcb->asoc.alternate) { + chk->whoTo = stcb->asoc.alternate; + } else { + chk->whoTo = stcb->asoc.primary_destination; + } + atomic_add_int(&chk->whoTo->ref_count, 1); + ch = mtod(chk->data, struct sctp_chunkhdr *); + ch->chunk_type = SCTP_STREAM_RESET; + ch->chunk_flags = 0; + ch->chunk_length = htons(chk->book_size); + SCTP_BUF_LEN(chk->data) = chk->send_size; + + seq = stcb->asoc.str_reset_seq_out; + if (can_send_out_req) { + int ret; + + ret = sctp_add_stream_reset_out(stcb, chk, seq, (stcb->asoc.str_reset_seq_in - 1), (stcb->asoc.sending_seq - 1)); + if (ret) { + seq++; + asoc->stream_reset_outstanding++; + } + } + if ((add_stream & 1) && + ((stcb->asoc.strm_realoutsize - stcb->asoc.streamoutcnt) < adding_o)) { + /* Need to allocate more */ + struct sctp_stream_out *oldstream; + struct sctp_stream_queue_pending *sp, *nsp; + int i; +#if defined(SCTP_DETAILED_STR_STATS) + int j; +#endif + + oldstream = stcb->asoc.strmout; + /* get some more */ + SCTP_MALLOC(stcb->asoc.strmout, struct sctp_stream_out *, + (stcb->asoc.streamoutcnt + adding_o) * sizeof(struct sctp_stream_out), + SCTP_M_STRMO); + if (stcb->asoc.strmout == NULL) { + uint8_t x; + stcb->asoc.strmout = oldstream; + /* Turn off the bit */ + x = add_stream & 0xfe; + add_stream = x; goto skip_stuff; } /* Ok now we proceed with copying the old out stuff and * initializing the new stuff. */ - SCTP_TCB_SEND_LOCK(stcb); - stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, 0, 1); + stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, false); for (i = 0; i < stcb->asoc.streamoutcnt; i++) { TAILQ_INIT(&stcb->asoc.strmout[i].outqueue); + /* FIX ME FIX ME */ + /* This should be a SS_COPY operation FIX ME STREAM SCHEDULER EXPERT */ + stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], &oldstream[i]); stcb->asoc.strmout[i].chunks_on_queues = oldstream[i].chunks_on_queues; - stcb->asoc.strmout[i].next_sequence_send = oldstream[i].next_sequence_send; +#if defined(SCTP_DETAILED_STR_STATS) + for (j = 0; j < SCTP_PR_SCTP_MAX + 1; j++) { + stcb->asoc.strmout[i].abandoned_sent[j] = oldstream[i].abandoned_sent[j]; + stcb->asoc.strmout[i].abandoned_unsent[j] = oldstream[i].abandoned_unsent[j]; + } +#else + stcb->asoc.strmout[i].abandoned_sent[0] = oldstream[i].abandoned_sent[0]; + stcb->asoc.strmout[i].abandoned_unsent[0] = oldstream[i].abandoned_unsent[0]; +#endif + stcb->asoc.strmout[i].next_mid_ordered = oldstream[i].next_mid_ordered; + stcb->asoc.strmout[i].next_mid_unordered = oldstream[i].next_mid_unordered; stcb->asoc.strmout[i].last_msg_incomplete = oldstream[i].last_msg_incomplete; - stcb->asoc.strmout[i].stream_no = i; - stcb->asoc.ss_functions.sctp_ss_init_stream(&stcb->asoc.strmout[i], &oldstream[i]); + stcb->asoc.strmout[i].sid = i; + stcb->asoc.strmout[i].state = oldstream[i].state; /* now anything on those queues? */ TAILQ_FOREACH_SAFE(sp, &oldstream[i].outqueue, next, nsp) { TAILQ_REMOVE(&oldstream[i].outqueue, sp, next); TAILQ_INSERT_TAIL(&stcb->asoc.strmout[i].outqueue, sp, next); } - /* Now move assoc pointers too */ - if (stcb->asoc.last_out_stream == &oldstream[i]) { - stcb->asoc.last_out_stream = &stcb->asoc.strmout[i]; - } - if (stcb->asoc.locked_on_sending == &oldstream[i]) { - stcb->asoc.locked_on_sending = &stcb->asoc.strmout[i]; - } } /* now the new streams */ - stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc, 1); + stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc); for (i = stcb->asoc.streamoutcnt; i < (stcb->asoc.streamoutcnt + adding_o); i++) { TAILQ_INIT(&stcb->asoc.strmout[i].outqueue); stcb->asoc.strmout[i].chunks_on_queues = 0; @@ -12582,14 +13024,15 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb, stcb->asoc.strmout[i].abandoned_sent[0] = 0; stcb->asoc.strmout[i].abandoned_unsent[0] = 0; #endif - stcb->asoc.strmout[i].next_sequence_send = 0x0; - stcb->asoc.strmout[i].stream_no = i; + stcb->asoc.strmout[i].next_mid_ordered = 0; + stcb->asoc.strmout[i].next_mid_unordered = 0; + stcb->asoc.strmout[i].sid = i; stcb->asoc.strmout[i].last_msg_incomplete = 0; - stcb->asoc.ss_functions.sctp_ss_init_stream(&stcb->asoc.strmout[i], NULL); + stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], NULL); + stcb->asoc.strmout[i].state = SCTP_STREAM_CLOSED; } stcb->asoc.strm_realoutsize = stcb->asoc.streamoutcnt + adding_o; SCTP_FREE(oldstream, SCTP_M_STRMO); - SCTP_TCB_SEND_UNLOCK(stcb); } skip_stuff: if ((add_stream & 1) && (adding_o > 0)) { @@ -12619,6 +13062,9 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb, chk, sctp_next); asoc->ctrl_queue_cnt++; + if (stcb->asoc.send_sack) { + sctp_send_sack(stcb, SCTP_SO_LOCKED); + } sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, chk->whoTo); return (0); } @@ -12626,8 +13072,8 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb, void sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, uint32_t vtag, struct mbuf *cause, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { @@ -12638,8 +13084,8 @@ sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockadd return; } sctp_send_resp_msg(src, dst, sh, vtag, SCTP_ABORT_ASSOCIATION, cause, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); return; @@ -12648,14 +13094,14 @@ sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockadd void sctp_send_operr_to(struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, uint32_t vtag, struct mbuf *cause, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { sctp_send_resp_msg(src, dst, sh, vtag, SCTP_OPERATION_ERROR, cause, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); return; @@ -12664,34 +13110,22 @@ sctp_send_operr_to(struct sockaddr *src, struct sockaddr *dst, static struct mbuf * sctp_copy_resume(struct uio *uio, int max_send_len, -#if defined(__FreeBSD__) && __FreeBSD_version > 602000 +#if defined(__FreeBSD__) || defined(__Userspace__) int user_marks_eor, #endif int *error, uint32_t *sndout, struct mbuf **new_tail) { -#if defined(__Panda__) - struct mbuf *m; - - m = m_uiotombuf(uio, M_WAITOK, max_send_len, 0, - (user_marks_eor ? M_EOR : 0)); - if (m == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - *error = ENOBUFS; - } else { - *sndout = m_length(m, NULL); - *new_tail = m_last(m); - } - return (m); -#elif defined(__FreeBSD__) && __FreeBSD_version > 602000 +#if defined(__FreeBSD__) || defined(__Userspace__) struct mbuf *m; m = m_uiotombuf(uio, M_WAITOK, max_send_len, 0, (M_PKTHDR | (user_marks_eor ? M_EOR : 0))); if (m == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - *error = ENOBUFS; + /* The only possible error is EFAULT. */ + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); + *error = EFAULT; } else { *sndout = m_length(m, NULL); *new_tail = m_last(m); @@ -12701,14 +13135,14 @@ sctp_copy_resume(struct uio *uio, int left, cancpy, willcpy; struct mbuf *m, *head; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - left = min(uio->uio_resid, max_send_len); + left = (int)min(uio->uio_resid, max_send_len); #else - left = min(uio_resid(uio), max_send_len); + left = (int)min(uio_resid(uio), max_send_len); #endif #else - left = min(uio->uio_resid, max_send_len); + left = (int)min(uio->uio_resid, max_send_len); #endif /* Always get a header just in case */ head = sctp_get_mbuf_for_msg(left, 0, M_WAITOK, 0, MT_DATA); @@ -12717,10 +13151,10 @@ sctp_copy_resume(struct uio *uio, *error = ENOBUFS; return (NULL); } - cancpy = M_TRAILINGSPACE(head); + cancpy = (int)M_TRAILINGSPACE(head); willcpy = min(cancpy, left); *error = uiomove(mtod(head, caddr_t), willcpy, uio); - if (*error) { + if (*error != 0) { sctp_m_freem(head); return (NULL); } @@ -12740,14 +13174,13 @@ sctp_copy_resume(struct uio *uio, return (NULL); } m = SCTP_BUF_NEXT(m); - cancpy = M_TRAILINGSPACE(m); + cancpy = (int)M_TRAILINGSPACE(m); willcpy = min(cancpy, left); *error = uiomove(mtod(m, caddr_t), willcpy, uio); - if (*error) { + if (*error != 0) { sctp_m_freem(head); *new_tail = NULL; - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); - *error = EFAULT; + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, *error); return (NULL); } SCTP_BUF_LEN(m) = willcpy; @@ -12767,31 +13200,17 @@ sctp_copy_one(struct sctp_stream_queue_pending *sp, struct uio *uio, int resv_upfront) { - int left; -#if defined(__Panda__) - left = sp->length; - sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, - resv_upfront, 0); - if (sp->data == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - return (ENOBUFS); - } - - sp->tail_mbuf = m_last(sp->data); - return (0); - -#elif defined(__FreeBSD__) && __FreeBSD_version > 602000 - left = sp->length; - sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, - resv_upfront, 0); +#if defined(__FreeBSD__) || defined(__Userspace__) + sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, resv_upfront, 0); if (sp->data == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - return (ENOBUFS); + /* The only possible error is EFAULT. */ + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); + return (EFAULT); } - sp->tail_mbuf = m_last(sp->data); return (0); #else + int left; int cancpy, willcpy, error; struct mbuf *m, *head; int cpsz = 0; @@ -12808,7 +13227,7 @@ sctp_copy_one(struct sctp_stream_queue_pending *sp, * have a bad cnt. */ SCTP_BUF_RESV_UF(m, resv_upfront); - cancpy = M_TRAILINGSPACE(m); + cancpy = (int)M_TRAILINGSPACE(m); willcpy = min(cancpy, left); while (left > 0) { /* move in user data */ @@ -12832,7 +13251,7 @@ sctp_copy_one(struct sctp_stream_queue_pending *sp, return (ENOBUFS); } m = SCTP_BUF_NEXT(m); - cancpy = M_TRAILINGSPACE(m); + cancpy = (int)M_TRAILINGSPACE(m); willcpy = min(cancpy, left); } else { sp->tail_mbuf = m; @@ -12845,15 +13264,13 @@ sctp_copy_one(struct sctp_stream_queue_pending *sp, #endif } - - static struct sctp_stream_queue_pending * sctp_copy_it_in(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_sndrcvinfo *srcv, + struct sctp_nonpad_sndrcvinfo *srcv, struct uio *uio, struct sctp_nets *net, - int max_send_len, + ssize_t max_send_len, int user_marks_eor, int *error) @@ -12865,20 +13282,10 @@ sctp_copy_it_in(struct sctp_tcb *stcb, * sb is locked however. When data is copied the protocol processing * should be enabled since this is a slower operation... */ - struct sctp_stream_queue_pending *sp = NULL; + struct sctp_stream_queue_pending *sp; int resv_in_first; *error = 0; - /* Now can we send this? */ - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) || - (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) { - /* got data while shutting down */ - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ECONNRESET); - *error = ECONNRESET; - goto out_now; - } sctp_alloc_a_strmoq(stcb, sp); if (sp == NULL) { SCTP_LTRACE_ERR_RET(NULL, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOMEM); @@ -12891,19 +13298,19 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; (void)SCTP_GETTIME_TIMEVAL(&sp->ts); - - sp->stream = srcv->sinfo_stream; -#if defined(__APPLE__) + sp->sid = srcv->sinfo_stream; +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - sp->length = min(uio->uio_resid, max_send_len); + sp->length = (uint32_t)min(uio->uio_resid, max_send_len); #else - sp->length = min(uio_resid(uio), max_send_len); + sp->length = (uint32_t)min(uio_resid(uio), max_send_len); #endif #else - sp->length = min(uio->uio_resid, max_send_len); + sp->length = (uint32_t)min(uio->uio_resid, max_send_len); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if ((sp->length == (uint32_t)uio->uio_resid) && #else @@ -12922,10 +13329,9 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sp->sender_all_done = 0; sp->some_taken = 0; sp->put_last_out = 0; - resv_in_first = sizeof(struct sctp_data_chunk); + resv_in_first = SCTP_DATA_CHUNK_OVERHEAD(stcb); sp->data = sp->tail_mbuf = NULL; if (sp->length == 0) { - *error = 0; goto skip_copy; } if (srcv->sinfo_keynumber_valid) { @@ -12937,16 +13343,22 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sctp_auth_key_acquire(stcb, sp->auth_keyid); sp->holds_key_ref = 1; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(SCTP_INP_SO(stcb->sctp_ep), 0); #endif *error = sctp_copy_one(sp, uio, resv_in_first); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(SCTP_INP_SO(stcb->sctp_ep), 0); #endif skip_copy: if (*error) { +#if defined(__Userspace__) + SCTP_TCB_LOCK(stcb); +#endif sctp_free_a_strmoq(stcb, sp, SCTP_SO_LOCKED); +#if defined(__Userspace__) + SCTP_TCB_UNLOCK(stcb); +#endif sp = NULL; } else { if (sp->sinfo_flags & SCTP_ADDR_OVER) { @@ -12961,26 +13373,20 @@ sctp_copy_it_in(struct sctp_tcb *stcb, return (sp); } - int sctp_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, -#ifdef __Panda__ - pakhandle_type top, - pakhandle_type icontrol, -#else struct mbuf *top, struct mbuf *control, -#endif -#if defined(__APPLE__) || defined(__Panda__) - int flags +#if defined(__APPLE__) && !defined(__Userspace__) + int flags) #else int flags, -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - struct thread *p -#elif defined(__Windows__) - PKTHREAD p +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct thread *p) +#elif defined(_WIN32) && !defined(__Userspace__) + PKTHREAD p) #else #if defined(__Userspace__) /* @@ -12988,235 +13394,146 @@ sctp_sosend(struct socket *so, * to sctp_lower_sosend */ #endif - struct proc *p + struct proc *p) #endif #endif -) { -#ifdef __Panda__ - struct mbuf *control = NULL; -#endif -#if defined(__APPLE__) - struct proc *p = current_proc(); -#endif - int error, use_sndinfo = 0; struct sctp_sndrcvinfo sndrcvninfo; - struct sockaddr *addr_to_use; #if defined(INET) && defined(INET6) struct sockaddr_in sin; #endif - -#if defined(__APPLE__) - SCTP_SOCKET_LOCK(so, 1); -#endif -#ifdef __Panda__ - control = SCTP_HEADER_TO_CHAIN(icontrol); + struct sockaddr *addr_to_use; +#if defined(__APPLE__) && !defined(__Userspace__) + struct proc *p = current_proc(); #endif - if (control) { + int error; + bool use_sndinfo; + + if (control != NULL) { /* process cmsg snd/rcv info (maybe a assoc-id) */ - if (sctp_find_cmsg(SCTP_SNDRCV, (void *)&sndrcvninfo, control, - sizeof(sndrcvninfo))) { - /* got one */ - use_sndinfo = 1; - } + use_sndinfo = sctp_find_cmsg(SCTP_SNDRCV, (void *)&sndrcvninfo, control, sizeof(sndrcvninfo)); + } else { + use_sndinfo = false; } - addr_to_use = addr; #if defined(INET) && defined(INET6) - if ((addr) && (addr->sa_family == AF_INET6)) { + if ((addr != NULL) && (addr->sa_family == AF_INET6)) { struct sockaddr_in6 *sin6; +#ifdef HAVE_SA_LEN + if (addr->sa_len != sizeof(struct sockaddr_in6)) { + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); + return (EINVAL); + } +#endif sin6 = (struct sockaddr_in6 *)addr; if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { in6_sin6_2_sin(&sin, sin6); addr_to_use = (struct sockaddr *)&sin; + } else { + addr_to_use = addr; } + } else { + addr_to_use = addr; } -#endif - error = sctp_lower_sosend(so, addr_to_use, uio, top, -#ifdef __Panda__ - icontrol, #else - control, + addr_to_use = addr; #endif - flags, - use_sndinfo ? &sndrcvninfo: NULL -#if !(defined(__Panda__) || defined(__Userspace__)) - , p +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_LOCK(so, 1); #endif - ); -#if defined(__APPLE__) + error = sctp_lower_sosend(so, addr_to_use, uio, top, control, flags, +#if defined(__Userspace__) + use_sndinfo ? &sndrcvninfo : NULL); +#else + use_sndinfo ? &sndrcvninfo : NULL, p); +#endif +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif return (error); } - int sctp_lower_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, -#ifdef __Panda__ - pakhandle_type i_pak, - pakhandle_type i_control, -#else - struct mbuf *i_pak, + struct mbuf *top, struct mbuf *control, -#endif int flags, - struct sctp_sndrcvinfo *srcv -#if !(defined( __Panda__) || defined(__Userspace__)) - , -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - struct thread *p -#elif defined(__Windows__) - PKTHREAD p +#if defined(__Userspace__) + struct sctp_sndrcvinfo *srcv) +#else + struct sctp_sndrcvinfo *srcv, +#if defined(__FreeBSD__) + struct thread *p) +#elif defined(_WIN32) + PKTHREAD p) #else - struct proc *p + struct proc *p) #endif #endif - ) { - unsigned int sndlen = 0, max_len; - int error, len; - struct mbuf *top = NULL; -#ifdef __Panda__ - struct mbuf *control = NULL; + struct sctp_nonpad_sndrcvinfo sndrcvninfo_buf; +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; #endif - int queue_only = 0, queue_only_for_init = 0; - int free_cnt_applied = 0; - int un_sent; - int now_filled = 0; - unsigned int inqueue_bytes = 0; + struct timeval now; struct sctp_block_entry be; struct sctp_inpcb *inp; struct sctp_tcb *stcb = NULL; - struct timeval now; struct sctp_nets *net; struct sctp_association *asoc; struct sctp_inpcb *t_inp; + struct sctp_nonpad_sndrcvinfo *sndrcvninfo; + ssize_t sndlen = 0, max_len, local_add_more; + ssize_t local_soresv = 0; + sctp_assoc_t sinfo_assoc_id; int user_marks_eor; - int create_lock_applied = 0; int nagle_applies = 0; - int some_on_control = 0; - int got_all_of_the_send = 0; - int hold_tcblock = 0; - int non_blocking = 0; - uint32_t local_add_more, local_soresv = 0; + int error; + int queue_only = 0, queue_only_for_init = 0; + int un_sent; + int now_filled = 0; + unsigned int inqueue_bytes = 0; uint16_t port; uint16_t sinfo_flags; - sctp_assoc_t sinfo_assoc_id; + uint16_t sinfo_stream; + bool create_lock_applied = false; + bool free_cnt_applied = false; + bool some_on_control; + bool got_all_of_the_send = false; + bool non_blocking = false; error = 0; net = NULL; stcb = NULL; - asoc = NULL; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sctp_lock_assert(so); #endif - t_inp = inp = (struct sctp_inpcb *)so->so_pcb; - if (inp == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); + if ((uio == NULL) && (top == NULL)) { error = EINVAL; - if (i_pak) { - SCTP_RELEASE_PKT(i_pak); - } - return (error); - } - if ((uio == NULL) && (i_pak == NULL)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - return (EINVAL); + goto out_unlocked; } - user_marks_eor = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR); - atomic_add_int(&inp->total_sends, 1); - if (uio) { -#if defined(__APPLE__) -#if defined(APPLE_LEOPARD) - if (uio->uio_resid < 0) { -#else - if (uio_resid(uio) < 0) { + if (addr != NULL) { + union sctp_sockstore *raddr = (union sctp_sockstore *)addr; + + switch (raddr->sa.sa_family) { +#ifdef INET + case AF_INET: +#ifdef HAVE_SIN_LEN + if (raddr->sin.sin_len != sizeof(struct sockaddr_in)) { + error = EINVAL; + goto out_unlocked; + } #endif -#else - if (uio->uio_resid < 0) { -#endif - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - return (EINVAL); - } -#if defined(__APPLE__) -#if defined(APPLE_LEOPARD) - sndlen = uio->uio_resid; -#else - sndlen = uio_resid(uio); -#endif -#else - sndlen = uio->uio_resid; -#endif - } else { - top = SCTP_HEADER_TO_CHAIN(i_pak); -#ifdef __Panda__ - /*- - * app len indicates the datalen, dgsize for cases - * of SCTP_EOF/ABORT will not have the right len - */ - sndlen = SCTP_APP_DATA_LEN(i_pak); - /*- - * Set the particle len also to zero to match - * up with app len. We only have one particle - * if app len is zero for Panda. This is ensured - * in the socket lib - */ - if (sndlen == 0) { - SCTP_BUF_LEN(top) = 0; - } - /*- - * We delink the chain from header, but keep - * the header around as we will need it in - * EAGAIN case - */ - SCTP_DETACH_HEADER_FROM_CHAIN(i_pak); -#else - sndlen = SCTP_HEADER_LEN(i_pak); -#endif - } - SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %d\n", - (void *)addr, - sndlen); -#ifdef __Panda__ - if (i_control) { - control = SCTP_HEADER_TO_CHAIN(i_control); - } -#endif - if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && - (inp->sctp_socket->so_qlimit)) { - /* The listener can NOT send */ - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOTCONN); - error = ENOTCONN; - goto out_unlocked; - } - /** - * Pre-screen address, if one is given the sin-len - * must be set correctly! - */ - if (addr) { - union sctp_sockstore *raddr = (union sctp_sockstore *)addr; - switch (raddr->sa.sa_family) { -#ifdef INET - case AF_INET: -#ifdef HAVE_SIN_LEN - if (raddr->sin.sin_len != sizeof(struct sockaddr_in)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - error = EINVAL; - goto out_unlocked; - } -#endif - port = raddr->sin.sin_port; - break; + port = raddr->sin.sin_port; + break; #endif #ifdef INET6 case AF_INET6: #ifdef HAVE_SIN6_LEN if (raddr->sin6.sin6_len != sizeof(struct sockaddr_in6)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; } @@ -13228,7 +13545,6 @@ sctp_lower_sosend(struct socket *so, case AF_CONN: #ifdef HAVE_SCONN_LEN if (raddr->sconn.sconn_len != sizeof(struct sockaddr_conn)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; } @@ -13237,84 +13553,150 @@ sctp_lower_sosend(struct socket *so, break; #endif default: - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EAFNOSUPPORT); error = EAFNOSUPPORT; goto out_unlocked; } - } else + } else { port = 0; + } + if (uio != NULL) { +#if defined(__APPLE__) && !defined(__Userspace__) +#if defined(APPLE_LEOPARD) + if (uio->uio_resid < 0) { +#else + if (uio_resid(uio) < 0) { +#endif +#else + if (uio->uio_resid < 0) { +#endif + error = EINVAL; + goto out_unlocked; + } +#if defined(__APPLE__) && !defined(__Userspace__) +#if defined(APPLE_LEOPARD) + sndlen = uio->uio_resid; +#else + sndlen = uio_resid(uio); +#endif +#else + sndlen = uio->uio_resid; +#endif + } else { + sndlen = SCTP_HEADER_LEN(top); + } + SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %zd\n", + (void *)addr, sndlen); + + t_inp = inp = (struct sctp_inpcb *)so->so_pcb; + if (inp == NULL) { + error = EINVAL; + goto out_unlocked; + } + user_marks_eor = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR); + if ((uio == NULL) && (user_marks_eor != 0)) { + /*- + * We do not support eeor mode for + * sending with mbuf chains (like sendfile). + */ + error = EINVAL; + goto out_unlocked; + } + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && + SCTP_IS_LISTENING(inp)) { + /* The listener can NOT send. */ + error = EINVAL; + goto out_unlocked; + } + atomic_add_int(&inp->total_sends, 1); - if (srcv) { - sinfo_flags = srcv->sinfo_flags; - sinfo_assoc_id = srcv->sinfo_assoc_id; + if (srcv != NULL) { + sndrcvninfo = (struct sctp_nonpad_sndrcvinfo *)srcv; + sinfo_assoc_id = sndrcvninfo->sinfo_assoc_id; + sinfo_flags = sndrcvninfo->sinfo_flags; if (INVALID_SINFO_FLAG(sinfo_flags) || PR_SCTP_INVALID_POLICY(sinfo_flags)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; } - if (srcv->sinfo_flags) + if (sinfo_flags != 0) { SCTP_STAT_INCR(sctps_sends_with_flags); + } } else { + sndrcvninfo = NULL; sinfo_flags = inp->def_send.sinfo_flags; sinfo_assoc_id = inp->def_send.sinfo_assoc_id; } - if (sinfo_flags & SCTP_SENDALL) { - /* its a sendall */ - error = sctp_sendall(inp, uio, top, srcv); - top = NULL; - goto out_unlocked; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (flags & MSG_EOR) { + sinfo_flags |= SCTP_EOR; + } + if (flags & MSG_EOF) { + sinfo_flags |= SCTP_EOF; } +#endif if ((sinfo_flags & SCTP_ADDR_OVER) && (addr == NULL)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; } - /* now we must find the assoc */ + SCTP_INP_RLOCK(inp); + if ((sinfo_flags & SCTP_SENDALL) && + (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE)) { + SCTP_INP_RUNLOCK(inp); + error = sctp_sendall(inp, uio, top, sndrcvninfo); + top = NULL; + goto out_unlocked; + } + /* Now we must find the association. */ if ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { - SCTP_INP_RLOCK(inp); stcb = LIST_FIRST(&inp->sctp_asoc_list); - if (stcb) { + if (stcb != NULL) { SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; } SCTP_INP_RUNLOCK(inp); - } else if (sinfo_assoc_id) { - stcb = sctp_findassociation_ep_asocid(inp, sinfo_assoc_id, 0); - } else if (addr) { + } else if (sinfo_assoc_id > SCTP_ALL_ASSOC) { + stcb = sctp_findasoc_ep_asocid_locked(inp, sinfo_assoc_id, 1); + SCTP_INP_RUNLOCK(inp); + if (stcb != NULL) { + SCTP_TCB_LOCK_ASSERT(stcb); + } + } else if (addr != NULL) { /*- * Since we did not use findep we must * increment it, and if we don't find a tcb * decrement it. */ - SCTP_INP_WLOCK(inp); SCTP_INP_INCR_REF(inp); - SCTP_INP_WUNLOCK(inp); + SCTP_INP_RUNLOCK(inp); stcb = sctp_findassociation_ep_addr(&t_inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); SCTP_INP_WUNLOCK(inp); } else { - hold_tcblock = 1; + SCTP_TCB_LOCK_ASSERT(stcb); } + } else { + SCTP_INP_RUNLOCK(inp); + } + +#ifdef INVARIANTS + if (stcb != NULL) { + SCTP_TCB_LOCK_ASSERT(stcb); } - if ((stcb == NULL) && (addr)) { +#endif + + if ((stcb == NULL) && (addr != NULL)) { /* Possible implicit send? */ SCTP_ASOC_CREATE_LOCK(inp); - create_lock_applied = 1; + create_lock_applied = true; if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { - /* Should I really unlock ? */ - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; - } if (((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) == 0) && (addr->sa_family == AF_INET6)) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); error = EINVAL; goto out_unlocked; } @@ -13323,28 +13705,30 @@ sctp_lower_sosend(struct socket *so, SCTP_INP_WUNLOCK(inp); /* With the lock applied look again */ stcb = sctp_findassociation_ep_addr(&t_inp, addr, &net, NULL, NULL); +#if defined(INET) || defined(INET6) if ((stcb == NULL) && (control != NULL) && (port > 0)) { stcb = sctp_findassociation_cmsgs(&t_inp, port, control, &net, &error); } +#endif if (stcb == NULL) { SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); SCTP_INP_WUNLOCK(inp); } else { - hold_tcblock = 1; + SCTP_TCB_LOCK_ASSERT(stcb); + SCTP_ASOC_CREATE_UNLOCK(inp); + create_lock_applied = false; } - if (error) { + if (error != 0) { goto out_unlocked; } if (t_inp != inp) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOTCONN); error = ENOTCONN; goto out_unlocked; } } if (stcb == NULL) { if (addr == NULL) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOENT); error = ENOENT; goto out_unlocked; } else { @@ -13354,57 +13738,43 @@ sctp_lower_sosend(struct socket *so, if ((sinfo_flags & SCTP_ABORT) || ((sinfo_flags & SCTP_EOF) && (sndlen == 0))) { /*- - * User asks to abort a non-existant assoc, - * or EOF a non-existant assoc with no data + * User asks to abort a non-existent assoc, + * or EOF a non-existent assoc with no data */ - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOENT); error = ENOENT; goto out_unlocked; } /* get an asoc/stcb struct */ vrf_id = inp->def_vrf_id; -#ifdef INVARIANTS - if (create_lock_applied == 0) { - panic("Error, should hold create lock and I don't?"); - } -#endif - stcb = sctp_aloc_assoc(inp, addr, &error, 0, vrf_id, -#if !(defined( __Panda__) || defined(__Userspace__)) - p + KASSERT(create_lock_applied, ("create_lock_applied is false")); + stcb = sctp_aloc_assoc_connected(inp, addr, &error, 0, 0, vrf_id, + inp->sctp_ep.pre_open_stream_count, + inp->sctp_ep.port, +#if !defined(__Userspace__) + p, #else - (struct proc *)NULL + (struct proc *)NULL, #endif - ); + SCTP_INITIALIZE_AUTH_PARAMS); if (stcb == NULL) { - /* Error is setup for us in the call */ + /* error is setup for us in the call. */ + KASSERT(error != 0, ("error is 0 although stcb is NULL")); goto out_unlocked; } - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } - hold_tcblock = 1; - if (create_lock_applied) { - SCTP_ASOC_CREATE_UNLOCK(inp); - create_lock_applied = 0; - } else { - SCTP_PRINTF("Huh-3? create lock should have been on??\n"); - } + SCTP_TCB_LOCK_ASSERT(stcb); + SCTP_ASOC_CREATE_UNLOCK(inp); + create_lock_applied = false; /* Turn on queue only flag to prevent data from being sent */ queue_only = 1; - asoc = &stcb->asoc; - SCTP_SET_STATE(asoc, SCTP_STATE_COOKIE_WAIT); - (void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered); - - /* initialize authentication params for the assoc */ - sctp_initialize_auth_params(inp, stcb); - - if (control) { + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); + (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); + if (control != NULL) { if (sctp_process_cmsgs_for_init(stcb, control, &error)) { - sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_7); - hold_tcblock = 0; + sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_6); stcb = NULL; + KASSERT(error != 0, + ("error is 0 although sctp_process_cmsgs_for_init() indicated an error")); goto out_unlocked; } } @@ -13417,215 +13787,137 @@ sctp_lower_sosend(struct socket *so, * change it BEFORE we append the message. */ } - } else - asoc = &stcb->asoc; - if (srcv == NULL) - srcv = (struct sctp_sndrcvinfo *)&asoc->def_send; - if (srcv->sinfo_flags & SCTP_ADDR_OVER) { - if (addr) - net = sctp_findnet(stcb, addr); - else - net = NULL; - if ((net == NULL) || - ((port != 0) && (port != stcb->rport))) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - error = EINVAL; - goto out_unlocked; - } - } else { - if (stcb->asoc.alternate) { - net = stcb->asoc.alternate; - } else { - net = stcb->asoc.primary_destination; - } } - atomic_add_int(&stcb->total_sends, 1); - /* Keep the stcb from being freed under our feet */ - atomic_add_int(&asoc->refcnt, 1); - free_cnt_applied = 1; - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NO_FRAGMENT)) { - if (sndlen > asoc->smallest_mtu) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EMSGSIZE); - error = EMSGSIZE; - goto out_unlocked; - } - } -#if defined(__Userspace__) - if (inp->recv_callback) { - non_blocking = 1; - } -#endif - if (SCTP_SO_IS_NBIO(so) -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - || (flags & MSG_NBIO) -#endif - ) { - non_blocking = 1; - } - /* would we block? */ - if (non_blocking) { - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); - if ((SCTP_SB_LIMIT_SND(so) < (sndlen + inqueue_bytes + stcb->asoc.sb_send_resv)) || - (stcb->asoc.chunks_on_out_queue >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EWOULDBLOCK); - if (sndlen > SCTP_SB_LIMIT_SND(so)) - error = EMSGSIZE; - else - error = EWOULDBLOCK; - goto out_unlocked; + KASSERT(!create_lock_applied, ("create_lock_applied is true")); + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + + asoc = &stcb->asoc; + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ + error = ECONNRESET; + } else { + error = ENOTCONN; } - stcb->asoc.sb_send_resv += sndlen; - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; - } else { - atomic_add_int(&stcb->asoc.sb_send_resv, sndlen); - } - local_soresv = sndlen; - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ECONNRESET); - error = ECONNRESET; - goto out_unlocked; - } - if (create_lock_applied) { - SCTP_ASOC_CREATE_UNLOCK(inp); - create_lock_applied = 0; - } - if (asoc->stream_reset_outstanding) { - /* - * Can't queue any data while stream reset is underway. - */ - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EAGAIN); - error = EAGAIN; goto out_unlocked; } - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { queue_only = 1; } - /* we are now done with all control */ - if (control) { - sctp_m_freem(control); - control = NULL; - } - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) || - (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) { - if (srcv->sinfo_flags & SCTP_ABORT) { - ; - } else { - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ECONNRESET); - error = ECONNRESET; - goto out_unlocked; + /* Keep the stcb from being freed under our feet. */ + atomic_add_int(&asoc->refcnt, 1); + free_cnt_applied = true; + if (sndrcvninfo == NULL) { + /* Use a local copy to have a consistent view. */ + sndrcvninfo_buf = asoc->def_send; + sndrcvninfo = &sndrcvninfo_buf; + sinfo_flags = sndrcvninfo->sinfo_flags; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (flags & MSG_EOR) { + sinfo_flags |= SCTP_EOR; + } + if (flags & MSG_EOF) { + sinfo_flags |= SCTP_EOF; } - } - /* Ok, we will attempt a msgsnd :> */ -#if !(defined(__Panda__) || defined(__Windows__) || defined(__Userspace__)) - if (p) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 603000 - p->td_ru.ru_msgsnd++; -#elif defined(__FreeBSD__) && __FreeBSD_version >= 500000 - p->td_proc->p_stats->p_ru.ru_msgsnd++; -#else - p->p_stats->p_ru.ru_msgsnd++; #endif } -#endif /* Are we aborting? */ - if (srcv->sinfo_flags & SCTP_ABORT) { + if (sinfo_flags & SCTP_ABORT) { struct mbuf *mm; - int tot_demand, tot_out = 0, max_out; + struct sctp_paramhdr *ph; + ssize_t tot_demand, tot_out = 0, max_out; SCTP_STAT_INCR(sctps_sends_with_abort); - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) { - /* It has to be up before we abort */ - /* how big is the user initiated abort? */ - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + /* It has to be up before we abort. */ error = EINVAL; - goto out; - } - if (hold_tcblock) { - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; + goto out_unlocked; } - if (top) { - struct mbuf *cntm = NULL; + /* How big is the user initiated abort? */ + if (top != NULL) { + struct mbuf *cntm; - mm = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), 0, M_WAITOK, 1, MT_DATA); if (sndlen != 0) { for (cntm = top; cntm; cntm = SCTP_BUF_NEXT(cntm)) { tot_out += SCTP_BUF_LEN(cntm); } } + mm = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), 0, M_NOWAIT, 1, MT_DATA); } else { /* Must fit in a MTU */ tot_out = sndlen; tot_demand = (tot_out + sizeof(struct sctp_paramhdr)); if (tot_demand > SCTP_DEFAULT_ADD_MORE) { - /* To big */ - SCTP_LTRACE_ERR_RET(NULL, stcb, net, SCTP_FROM_SCTP_OUTPUT, EMSGSIZE); error = EMSGSIZE; - goto out; + goto out_unlocked; } - mm = sctp_get_mbuf_for_msg(tot_demand, 0, M_WAITOK, 1, MT_DATA); + mm = sctp_get_mbuf_for_msg((unsigned int)tot_demand, 0, M_NOWAIT, 1, MT_DATA); } if (mm == NULL) { - SCTP_LTRACE_ERR_RET(NULL, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOMEM); error = ENOMEM; - goto out; + goto out_unlocked; } max_out = asoc->smallest_mtu - sizeof(struct sctp_paramhdr); max_out -= sizeof(struct sctp_abort_msg); if (tot_out > max_out) { tot_out = max_out; } - if (mm) { - struct sctp_paramhdr *ph; - - /* now move forward the data pointer */ - ph = mtod(mm, struct sctp_paramhdr *); - ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT); - ph->param_length = htons(sizeof(struct sctp_paramhdr) + tot_out); - ph++; - SCTP_BUF_LEN(mm) = tot_out + sizeof(struct sctp_paramhdr); - if (top == NULL) { -#if defined(__APPLE__) - SCTP_SOCKET_UNLOCK(so, 0); + ph = mtod(mm, struct sctp_paramhdr *); + ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT); + ph->param_length = htons((uint16_t)(sizeof(struct sctp_paramhdr) + tot_out)); + ph++; + SCTP_BUF_LEN(mm) = (int)(tot_out + sizeof(struct sctp_paramhdr)); + if (top == NULL) { + SCTP_TCB_UNLOCK(stcb); +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_UNLOCK(so, 0); #endif - error = uiomove((caddr_t)ph, (int)tot_out, uio); -#if defined(__APPLE__) - SCTP_SOCKET_LOCK(so, 0); + error = uiomove((caddr_t)ph, (int)tot_out, uio); +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_LOCK(so, 0); #endif - if (error) { - /*- - * Here if we can't get his data we - * still abort we just don't get to - * send the users note :-0 - */ - sctp_m_freem(mm); - mm = NULL; - } - } else { - if (sndlen != 0) { - SCTP_BUF_NEXT(mm) = top; + SCTP_TCB_LOCK(stcb); + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + sctp_m_freem(mm); + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ + error = ECONNRESET; + } else { + error = ENOTCONN; } + goto out_unlocked; + } + if (error != 0) { + /*- + * Here if we can't get his data we + * still abort we just don't get to + * send the users note :-0 + */ + sctp_m_freem(mm); + mm = NULL; + error = 0; + } + } else { + if (sndlen != 0) { + SCTP_BUF_NEXT(mm) = top; } } - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - } - atomic_add_int(&stcb->asoc.refcnt, -1); - free_cnt_applied = 0; + atomic_subtract_int(&asoc->refcnt, 1); + free_cnt_applied = false; /* release this lock, otherwise we hang on ourselves */ - sctp_abort_an_association(stcb->sctp_ep, stcb, mm, SCTP_SO_LOCKED); - /* now relock the stcb so everything is sane */ - hold_tcblock = 0; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif + sctp_abort_an_association(stcb->sctp_ep, stcb, mm, false, SCTP_SO_LOCKED); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif stcb = NULL; /* In this case top is already chained to mm * avoid double free, since we free it below if @@ -13637,56 +13929,135 @@ sctp_lower_sosend(struct socket *so, } goto out_unlocked; } + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + + if (sinfo_flags & SCTP_ADDR_OVER) { + if (addr != NULL) { + net = sctp_findnet(stcb, addr); + } else { + net = NULL; + } + if ((net == NULL) || + ((port != 0) && (port != stcb->rport))) { + error = EINVAL; + goto out_unlocked; + } + } else { + if (asoc->alternate != NULL) { + net = asoc->alternate; + } else { + net = asoc->primary_destination; + } + } + if (sndlen == 0) { + if (sinfo_flags & SCTP_EOF) { + got_all_of_the_send = true; + goto dataless_eof; + } else { + error = EINVAL; + goto out_unlocked; + } + } + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NO_FRAGMENT)) { + if (sndlen > (ssize_t)asoc->smallest_mtu) { + error = EMSGSIZE; + goto out_unlocked; + } + } + sinfo_stream = sndrcvninfo->sinfo_stream; + /* Is the stream no. valid? */ + if (sinfo_stream >= asoc->streamoutcnt) { + /* Invalid stream number */ + error = EINVAL; + goto out_unlocked; + } + if ((asoc->strmout[sinfo_stream].state != SCTP_STREAM_OPEN) && + (asoc->strmout[sinfo_stream].state != SCTP_STREAM_OPENING)) { + /* + * Can't queue any data while stream reset is underway. + */ + if (asoc->strmout[sinfo_stream].state > SCTP_STREAM_OPEN) { + error = EAGAIN; + } else { + error = EINVAL; + } + goto out_unlocked; + } + atomic_add_int(&stcb->total_sends, 1); +#if defined(__Userspace__) + if (inp->recv_callback != NULL) { + non_blocking = true; + } +#endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (SCTP_SO_IS_NBIO(so) || (flags & (MSG_NBIO | MSG_DONTWAIT)) != 0) { +#else + if (SCTP_SO_IS_NBIO(so)) { +#endif + non_blocking = true; + } + if (non_blocking) { + ssize_t amount; + + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); + if (user_marks_eor == 0) { + amount = sndlen; + } else { + amount = 1; + } + if ((SCTP_SB_LIMIT_SND(so) < (amount + inqueue_bytes + asoc->sb_send_resv)) || + (asoc->chunks_on_out_queue >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { + if ((sndlen > (ssize_t)SCTP_SB_LIMIT_SND(so)) && + (user_marks_eor == 0)) { + error = EMSGSIZE; + } else { + error = EWOULDBLOCK; + } + goto out_unlocked; + } + } + atomic_add_int(&asoc->sb_send_resv, (int)sndlen); + local_soresv = sndlen; + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + + /* Ok, we will attempt a msgsnd :> */ +#if !(defined(_WIN32) || defined(__Userspace__)) + if (p != NULL) { +#if defined(__FreeBSD__) + p->td_ru.ru_msgsnd++; +#else + p->p_stats->p_ru.ru_msgsnd++; +#endif + } +#endif /* Calculate the maximum we can send */ - inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); if (SCTP_SB_LIMIT_SND(so) > inqueue_bytes) { - if (non_blocking) { - /* we already checked for non-blocking above. */ - max_len = sndlen; - } else { - max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; - } + max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; } else { max_len = 0; } - if (hold_tcblock) { - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; - } - /* Is the stream no. valid? */ - if (srcv->sinfo_stream >= asoc->streamoutcnt) { - /* Invalid stream number */ - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - error = EINVAL; - goto out_unlocked; - } - if (asoc->strmout == NULL) { - /* huh? software error */ - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EFAULT); - error = EFAULT; - goto out_unlocked; - } - /* Unless E_EOR mode is on, we must make a send FIT in one call. */ if ((user_marks_eor == 0) && - (sndlen > SCTP_SB_LIMIT_SND(stcb->sctp_socket))) { - /* It will NEVER fit */ - SCTP_LTRACE_ERR_RET(NULL, stcb, net, SCTP_FROM_SCTP_OUTPUT, EMSGSIZE); + (sndlen > (ssize_t)SCTP_SB_LIMIT_SND(stcb->sctp_socket))) { + /* It will NEVER fit. */ error = EMSGSIZE; goto out_unlocked; } - if ((uio == NULL) && user_marks_eor) { - /*- - * We do not support eeor mode for - * sending with mbuf chains (like sendfile). - */ - SCTP_LTRACE_ERR_RET(NULL, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - error = EINVAL; - goto out_unlocked; - } - - if (user_marks_eor) { - local_add_more = min(SCTP_SB_LIMIT_SND(so), SCTP_BASE_SYSCTL(sctp_add_more_threshold)); + if (user_marks_eor != 0) { + local_add_more = (ssize_t)min(SCTP_SB_LIMIT_SND(so), SCTP_BASE_SYSCTL(sctp_add_more_threshold)); } else { /*- * For non-eeor the whole message must fit in @@ -13694,57 +14065,70 @@ sctp_lower_sosend(struct socket *so, */ local_add_more = sndlen; } - len = 0; if (non_blocking) { goto skip_preblock; } - if (((max_len <= local_add_more) && - (SCTP_SB_LIMIT_SND(so) >= local_add_more)) || + if (((max_len <= local_add_more) && ((ssize_t)SCTP_SB_LIMIT_SND(so) >= local_add_more)) || (max_len == 0) || - ((stcb->asoc.chunks_on_out_queue+stcb->asoc.stream_queue_cnt) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { - /* No room right now ! */ + ((asoc->chunks_on_out_queue + asoc->stream_queue_cnt) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { + /* No room right now! */ + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); SOCKBUF_LOCK(&so->so_snd); - inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); while ((SCTP_SB_LIMIT_SND(so) < (inqueue_bytes + local_add_more)) || - ((stcb->asoc.stream_queue_cnt+stcb->asoc.chunks_on_out_queue) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { - SCTPDBG(SCTP_DEBUG_OUTPUT1,"pre_block limit:%u <(inq:%d + %d) || (%d+%d > %d)\n", + ((asoc->stream_queue_cnt + asoc->chunks_on_out_queue) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue))) { + SCTPDBG(SCTP_DEBUG_OUTPUT1,"pre_block limit:%u <(inq:%d + %zd) || (%d+%d > %d)\n", (unsigned int)SCTP_SB_LIMIT_SND(so), inqueue_bytes, local_add_more, - stcb->asoc.stream_queue_cnt, - stcb->asoc.chunks_on_out_queue, + asoc->stream_queue_cnt, + asoc->chunks_on_out_queue, SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { sctp_log_block(SCTP_BLOCK_LOG_INTO_BLKA, asoc, sndlen); } be.error = 0; -#if !defined(__Panda__) && !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) stcb->block_entry = &be; #endif + SCTP_TCB_UNLOCK(stcb); +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = sbwait(so, SO_SND); +#else error = sbwait(&so->so_snd); +#endif + if (error == 0) { + if (so->so_error != 0) { + error = so->so_error; + } + if (be.error != 0) { + error = be.error; + } + } + SOCKBUF_UNLOCK(&so->so_snd); + SCTP_TCB_LOCK(stcb); stcb->block_entry = NULL; - if (error || so->so_error || be.error) { - if (error == 0) { - if (so->so_error) - error = so->so_error; - if (be.error) { - error = be.error; - } + if (error != 0) { + goto out_unlocked; + } + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ + error = ECONNRESET; + } else { + error = ENOTCONN; } - SOCKBUF_UNLOCK(&so->so_snd); goto out_unlocked; } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { sctp_log_block(SCTP_BLOCK_LOG_OUTOF_BLK, - asoc, stcb->asoc.total_output_queue_size); - } - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - goto out_unlocked; + asoc, asoc->total_output_queue_size); } - inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); + SOCKBUF_LOCK(&so->so_snd); } if (SCTP_SB_LIMIT_SND(so) > inqueue_bytes) { - max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; + max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; } else { max_len = 0; } @@ -13752,49 +14136,76 @@ sctp_lower_sosend(struct socket *so, } skip_preblock: - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + +#if defined(__APPLE__) && !defined(__Userspace__) + error = sblock(&so->so_snd, SBLOCKWAIT(flags)); + if (error != 0) { goto out_unlocked; } -#if defined(__APPLE__) - error = sblock(&so->so_snd, SBLOCKWAIT(flags)); #endif /* sndlen covers for mbuf case * uio_resid covers for the non-mbuf case * NOTE: uio will be null when top/mbuf is passed */ - if (sndlen == 0) { - if (srcv->sinfo_flags & SCTP_EOF) { - got_all_of_the_send = 1; - goto dataless_eof; - } else { - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); - error = EINVAL; - goto out; - } - } if (top == NULL) { struct sctp_stream_queue_pending *sp; struct sctp_stream_out *strm; uint32_t sndout; - SCTP_TCB_SEND_LOCK(stcb); if ((asoc->stream_locked) && - (asoc->stream_locked_on != srcv->sinfo_stream)) { - SCTP_TCB_SEND_UNLOCK(stcb); - SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL); + (asoc->stream_locked_on != sinfo_stream)) { error = EINVAL; goto out; } - SCTP_TCB_SEND_UNLOCK(stcb); - - strm = &stcb->asoc.strmout[srcv->sinfo_stream]; + strm = &asoc->strmout[sinfo_stream]; if (strm->last_msg_incomplete == 0) { do_a_copy_in: - sp = sctp_copy_it_in(stcb, asoc, srcv, uio, net, max_len, user_marks_eor, &error); - if ((sp == NULL) || (error)) { + SCTP_TCB_UNLOCK(stcb); + sp = sctp_copy_it_in(stcb, asoc, sndrcvninfo, uio, net, max_len, user_marks_eor, &error); + SCTP_TCB_LOCK(stcb); + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ + error = ECONNRESET; + } else { + error = ENOTCONN; + } + goto out; + } + if (error != 0) { goto out; } - SCTP_TCB_SEND_LOCK(stcb); + /* + * Reject the sending of a new user message, if the + * association is about to be shut down. + */ + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) || + (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) { + if (sp->data != 0) { + sctp_m_freem(sp->data); + sp->data = NULL; + sp->tail_mbuf = NULL; + sp->length = 0; + } + if (sp->net != NULL) { + sctp_free_remote_addr(sp->net); + sp->net = NULL; + } + sctp_free_a_strmoq(stcb, sp, SCTP_SO_LOCKED); + error = EPIPE; + goto out_unlocked; + } + /* The out streams might be reallocated. */ + strm = &asoc->strmout[sinfo_stream]; if (sp->msg_is_complete) { strm->last_msg_incomplete = 0; asoc->stream_locked = 0; @@ -13803,22 +14214,22 @@ sctp_lower_sosend(struct socket *so, * case of an interrupt. */ strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (asoc->idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = sinfo_stream; + } sp->sender_all_done = 0; } sctp_snd_sb_alloc(stcb, sp->length); atomic_add_int(&asoc->stream_queue_cnt, 1); - if (srcv->sinfo_flags & SCTP_UNORDERED) { + if (sinfo_flags & SCTP_UNORDERED) { SCTP_STAT_INCR(sctps_sends_with_unord); } + sp->processing = 1; TAILQ_INSERT_TAIL(&strm->outqueue, sp, next); - stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, asoc, strm, sp, 1); - SCTP_TCB_SEND_UNLOCK(stcb); + asoc->ss_functions.sctp_ss_add_to_stream(stcb, asoc, strm, sp); } else { - SCTP_TCB_SEND_LOCK(stcb); sp = TAILQ_LAST(&strm->outqueue, sctp_streamhead); - SCTP_TCB_SEND_UNLOCK(stcb); if (sp == NULL) { /* ???? Huh ??? last msg is gone */ #ifdef INVARIANTS @@ -13828,10 +14239,23 @@ sctp_lower_sosend(struct socket *so, strm->last_msg_incomplete = 0; #endif goto do_a_copy_in; - + } + if (sp->processing != 0) { + error = EINVAL; + goto out; + } else { + sp->processing = 1; } } -#if defined(__APPLE__) + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) while (uio->uio_resid > 0) { #else @@ -13843,74 +14267,78 @@ sctp_lower_sosend(struct socket *so, /* How much room do we have? */ struct mbuf *new_tail, *mm; - if (SCTP_SB_LIMIT_SND(so) > stcb->asoc.total_output_queue_size) - max_len = SCTP_SB_LIMIT_SND(so) - stcb->asoc.total_output_queue_size; - else + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); + if (SCTP_SB_LIMIT_SND(so) > inqueue_bytes) { + max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; + } else { max_len = 0; - - if ((max_len > SCTP_BASE_SYSCTL(sctp_add_more_threshold)) || - (max_len && (SCTP_SB_LIMIT_SND(so) < SCTP_BASE_SYSCTL(sctp_add_more_threshold))) || -#if defined(__APPLE__) + } + if ((max_len > (ssize_t)SCTP_BASE_SYSCTL(sctp_add_more_threshold)) || + ((max_len > 0 ) && (SCTP_SB_LIMIT_SND(so) < SCTP_BASE_SYSCTL(sctp_add_more_threshold))) || +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - (uio->uio_resid && (uio->uio_resid <= (int)max_len))) { + (uio->uio_resid <= max_len)) { #else - (uio_resid(uio) && (uio_resid(uio) <= (int)max_len))) { + (uio_resid(uio) <= max_len)) { #endif #else - (uio->uio_resid && (uio->uio_resid <= (int)max_len))) { + (uio->uio_resid <= max_len)) { #endif - sndout = 0; - new_tail = NULL; - if (hold_tcblock) { - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; - } -#if defined(__APPLE__) + SCTP_TCB_UNLOCK(stcb); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 0); #endif -#if defined(__FreeBSD__) && __FreeBSD_version > 602000 - mm = sctp_copy_resume(uio, max_len, user_marks_eor, &error, &sndout, &new_tail); + sndout = 0; + new_tail = NULL; +#if defined(__FreeBSD__) || defined(__Userspace__) + mm = sctp_copy_resume(uio, (int)max_len, user_marks_eor, &error, &sndout, &new_tail); #else - mm = sctp_copy_resume(uio, max_len, &error, &sndout, &new_tail); + mm = sctp_copy_resume(uio, (int)max_len, &error, &sndout, &new_tail); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(so, 0); #endif - if ((mm == NULL) || error) { - if (mm) { - sctp_m_freem(mm); - } - goto out; - } - /* Update the mbuf and count */ - SCTP_TCB_SEND_LOCK(stcb); - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - /* we need to get out. + SCTP_TCB_LOCK(stcb); + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + /* We need to get out. * Peer probably aborted. */ sctp_m_freem(mm); - if (stcb->asoc.state & SCTP_PCB_FLAGS_WAS_ABORTED) { - SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, ECONNRESET); + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ error = ECONNRESET; + } else { + error = ENOTCONN; + } + goto out; + } + if ((mm == NULL) || (error != 0)) { + if (mm != NULL) { + sctp_m_freem(mm); + } + if (sp != NULL) { + sp->processing = 0; } - SCTP_TCB_SEND_UNLOCK(stcb); goto out; } - if (sp->tail_mbuf) { - /* tack it to the end */ + /* Update the mbuf and count */ + if (sp->tail_mbuf != NULL) { + /* Tack it to the end. */ SCTP_BUF_NEXT(sp->tail_mbuf) = mm; - sp->tail_mbuf = new_tail; } else { - /* A stolen mbuf */ + /* A stolen mbuf. */ sp->data = mm; - sp->tail_mbuf = new_tail; } + sp->tail_mbuf = new_tail; sctp_snd_sb_alloc(stcb, sndout); - atomic_add_int(&sp->length,sndout); - len += sndout; + atomic_add_int(&sp->length, sndout); + if (sinfo_flags & SCTP_SACK_IMMEDIATELY) { + sp->sinfo_flags |= SCTP_SACK_IMMEDIATELY; + } /* Did we reach EOR? */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if ((uio->uio_resid == 0) && #else @@ -13920,15 +14348,22 @@ sctp_lower_sosend(struct socket *so, if ((uio->uio_resid == 0) && #endif ((user_marks_eor == 0) || - (srcv->sinfo_flags & SCTP_EOF) || - (user_marks_eor && (srcv->sinfo_flags & SCTP_EOR)))) { + (sinfo_flags & SCTP_EOF) || + (user_marks_eor && (sinfo_flags & SCTP_EOR)))) { sp->msg_is_complete = 1; } else { sp->msg_is_complete = 0; } - SCTP_TCB_SEND_UNLOCK(stcb); } -#if defined(__APPLE__) + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if (uio->uio_resid == 0) { #else @@ -13943,39 +14378,38 @@ sctp_lower_sosend(struct socket *so, /* PR-SCTP? */ if ((asoc->prsctp_supported) && (asoc->sent_queue_cnt_removeable > 0)) { /* This is ugly but we must assure locking order */ - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - sctp_prune_prsctp(stcb, asoc, srcv, sndlen); - inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk)); - if (SCTP_SB_LIMIT_SND(so) > stcb->asoc.total_output_queue_size) + sctp_prune_prsctp(stcb, asoc, sndrcvninfo, (int)sndlen); + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); + if (SCTP_SB_LIMIT_SND(so) > inqueue_bytes) max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes; else max_len = 0; if (max_len > 0) { continue; } - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; } /* wait for space now */ if (non_blocking) { /* Non-blocking io in place out */ + if (sp != NULL) { + sp->processing = 0; + } goto skip_out_eof; } /* What about the INIT, send it maybe */ if (queue_only_for_init) { - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { /* a collision took us forward? */ queue_only = 0; } else { +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); - SCTP_SET_STATE(asoc, SCTP_STATE_COOKIE_WAIT); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); queue_only = 1; } } @@ -13990,17 +14424,15 @@ sctp_lower_sosend(struct socket *so, } asoc->ifp_had_enobuf = 0; } - un_sent = ((stcb->asoc.total_output_queue_size - stcb->asoc.total_flight) + - (stcb->asoc.stream_queue_cnt * sizeof(struct sctp_data_chunk))); + un_sent = asoc->total_output_queue_size - asoc->total_flight; if ((sctp_is_feature_off(inp, SCTP_PCB_FLAGS_NODELAY)) && - (stcb->asoc.total_flight > 0) && - (stcb->asoc.stream_queue_cnt < SCTP_MAX_DATA_BUNDLING) && - (un_sent < (int)(stcb->asoc.smallest_mtu - SCTP_MIN_OVERHEAD))) { - + (asoc->total_flight > 0) && + (asoc->stream_queue_cnt < SCTP_MAX_DATA_BUNDLING) && + (un_sent < (int)(asoc->smallest_mtu - SCTP_MIN_OVERHEAD))) { /*- * Ok, Nagle is set on and we have data outstanding. * Don't send anything and let SACKs drive out the - * data unless wen have a "full" segment to send. + * data unless we have a "full" segment to send. */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_NAGLE_LOGGING_ENABLE) { sctp_log_nagle_event(stcb, SCTP_NAGLE_APPLIED); @@ -14016,15 +14448,15 @@ sctp_lower_sosend(struct socket *so, nagle_applies = 0; } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { - sctp_misc_ints(SCTP_CWNDLOG_PRESEND, queue_only_for_init, queue_only, - nagle_applies, un_sent); - sctp_misc_ints(SCTP_CWNDLOG_PRESEND, stcb->asoc.total_output_queue_size, - stcb->asoc.total_flight, - stcb->asoc.chunks_on_out_queue, stcb->asoc.total_flight_count); + nagle_applies, un_sent); + sctp_misc_ints(SCTP_CWNDLOG_PRESEND, asoc->total_output_queue_size, + asoc->total_flight, + asoc->chunks_on_out_queue, asoc->total_flight_count); } - if (queue_only_for_init) + if (queue_only_for_init) { queue_only_for_init = 0; + } if ((queue_only == 0) && (nagle_applies == 0)) { /*- * need to start chunk output @@ -14033,24 +14465,15 @@ sctp_lower_sosend(struct socket *so, * the input via the net is happening * and I don't need to start output :-D */ - if (hold_tcblock == 0) { - if (SCTP_TCB_TRYLOCK(stcb)) { - hold_tcblock = 1; - sctp_chunk_output(inp, - stcb, - SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); - } - } else { - sctp_chunk_output(inp, - stcb, - SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); - } - if (hold_tcblock == 1) { - SCTP_TCB_UNLOCK(stcb); - hold_tcblock = 0; - } +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif + sctp_chunk_output(inp, stcb, + SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif } - SOCKBUF_LOCK(&so->so_snd); /*- * This is a bit strange, but I think it will * work. The total_output_queue_size is locked and @@ -14065,75 +14488,106 @@ sctp_lower_sosend(struct socket *so, * size we KNOW we will get to sleep safely with the * wakeup flag in place. */ - if (SCTP_SB_LIMIT_SND(so) <= (stcb->asoc.total_output_queue_size + - min(SCTP_BASE_SYSCTL(sctp_add_more_threshold), SCTP_SB_LIMIT_SND(so)))) { + inqueue_bytes = asoc->total_output_queue_size - (asoc->chunks_on_out_queue * SCTP_DATA_CHUNK_OVERHEAD(stcb)); + SOCKBUF_LOCK(&so->so_snd); + if (SCTP_SB_LIMIT_SND(so) <= (inqueue_bytes + + min(SCTP_BASE_SYSCTL(sctp_add_more_threshold), SCTP_SB_LIMIT_SND(so)))) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) sctp_log_block(SCTP_BLOCK_LOG_INTO_BLK, - asoc, uio->uio_resid); + asoc, uio->uio_resid); #else sctp_log_block(SCTP_BLOCK_LOG_INTO_BLK, - asoc, uio_resid(uio)); + asoc, uio_resid(uio)); #endif #else sctp_log_block(SCTP_BLOCK_LOG_INTO_BLK, - asoc, uio->uio_resid); + asoc, uio->uio_resid); #endif } be.error = 0; -#if !defined(__Panda__) && !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) stcb->block_entry = &be; #endif -#if defined(__APPLE__) + SCTP_TCB_UNLOCK(stcb); +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&so->so_snd, 1); #endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = sbwait(so, SO_SND); +#else error = sbwait(&so->so_snd); +#endif + if (error == 0) { + if (so->so_error != 0) + error = so->so_error; + if (be.error != 0) { + error = be.error; + } + } + SOCKBUF_UNLOCK(&so->so_snd); + SCTP_TCB_LOCK(stcb); stcb->block_entry = NULL; - - if (error || so->so_error || be.error) { - if (error == 0) { - if (so->so_error) - error = so->so_error; - if (be.error) { - error = be.error; - } + if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) || + (asoc->state & SCTP_STATE_WAS_ABORTED)) { + if (asoc->state & SCTP_STATE_WAS_ABORTED) { + /* XXX: Could also be ECONNABORTED, not enough info. */ + error = ECONNRESET; + } else { + error = ENOTCONN; } - SOCKBUF_UNLOCK(&so->so_snd); goto out_unlocked; } - -#if defined(__APPLE__) + if (error != 0) { + if (sp != NULL) { + sp->processing = 0; + } + goto out_unlocked; + } +#if defined(__APPLE__) && !defined(__Userspace__) error = sblock(&so->so_snd, SBLOCKWAIT(flags)); -#endif - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { - sctp_log_block(SCTP_BLOCK_LOG_OUTOF_BLK, - asoc, stcb->asoc.total_output_queue_size); + if (error != 0) { + goto out_unlocked; } +#endif + } else { + SOCKBUF_UNLOCK(&so->so_snd); } - SOCKBUF_UNLOCK(&so->so_snd); - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - goto out_unlocked; + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { + sctp_log_block(SCTP_BLOCK_LOG_OUTOF_BLK, + asoc, asoc->total_output_queue_size); } } - SCTP_TCB_SEND_LOCK(stcb); - if (sp) { + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + + /* The out streams might be reallocated. */ + strm = &asoc->strmout[sinfo_stream]; + if (sp != NULL) { if (sp->msg_is_complete == 0) { strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (asoc->idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = sinfo_stream; + } } else { sp->sender_all_done = 1; strm->last_msg_incomplete = 0; asoc->stream_locked = 0; } + sp->processing = 0; } else { SCTP_PRINTF("Huh no sp TSNH?\n"); strm->last_msg_incomplete = 0; asoc->stream_locked = 0; } - SCTP_TCB_SEND_UNLOCK(stcb); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if (uio->uio_resid == 0) { #else @@ -14142,66 +14596,59 @@ sctp_lower_sosend(struct socket *so, #else if (uio->uio_resid == 0) { #endif - got_all_of_the_send = 1; + got_all_of_the_send = true; } } else { - /* We send in a 0, since we do NOT have any locks */ - error = sctp_msg_append(stcb, net, top, srcv, 0); + error = sctp_msg_append(stcb, net, top, sndrcvninfo); top = NULL; - if (srcv->sinfo_flags & SCTP_EOF) { - /* - * This should only happen for Panda for the mbuf - * send case, which does NOT yet support EEOR mode. - * Thus, we can just set this flag to do the proper - * EOF handling. - */ - got_all_of_the_send = 1; + if ((sinfo_flags & SCTP_EOF) != 0) { + got_all_of_the_send = true; } } - if (error) { + if (error != 0) { goto out; } + dataless_eof: + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + /* EOF thing ? */ - if ((srcv->sinfo_flags & SCTP_EOF) && - (got_all_of_the_send == 1)) { - int cnt; + if ((sinfo_flags & SCTP_EOF) && got_all_of_the_send) { SCTP_STAT_INCR(sctps_sends_with_eof); error = 0; - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - cnt = sctp_is_there_unsent_data(stcb, SCTP_SO_LOCKED); if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && - (cnt == 0)) { - if (asoc->locked_on_sending) { + sctp_is_there_unsent_data(stcb, SCTP_SO_LOCKED) == 0) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { goto abort_anyway; } /* there is nothing queued to send, so I'm done... */ - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { struct sctp_nets *netp; /* only send SHUTDOWN the first time through */ - if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); sctp_stop_timers_for_shutdown(stcb); - if (stcb->asoc.alternate) { - netp = stcb->asoc.alternate; + if (asoc->alternate != NULL) { + netp = asoc->alternate; } else { - netp = stcb->asoc.primary_destination; + netp = asoc->primary_destination; } sctp_send_shutdown(stcb, netp); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, netp); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - asoc->primary_destination); + NULL); } } else { /*- @@ -14214,64 +14661,82 @@ sctp_lower_sosend(struct socket *so, * data to be sent first and move to * SHUTDOWN-PENDING */ - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - if (asoc->locked_on_sending) { - /* Locked to send out the data */ - struct sctp_stream_queue_pending *sp; - sp = TAILQ_LAST(&asoc->locked_on_sending->outqueue, sctp_streamhead); - if (sp) { - if ((sp->length == 0) && (sp->msg_is_complete == 0)) - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - } + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); } - asoc->state |= SCTP_STATE_SHUTDOWN_PENDING; + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + abort_anyway: if (free_cnt_applied) { - atomic_add_int(&stcb->asoc.refcnt, -1); - free_cnt_applied = 0; + atomic_subtract_int(&asoc->refcnt, 1); + free_cnt_applied = false; } + SCTP_SNPRINTF(msg, sizeof(msg), + "%s:%d at %s", __FILE__, __LINE__, __func__); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + msg); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_abort_an_association(stcb->sctp_ep, stcb, - NULL, SCTP_SO_LOCKED); - /* now relock the stcb so everything is sane */ - hold_tcblock = 0; + op_err, false, SCTP_SO_LOCKED); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif stcb = NULL; + error = ECONNABORTED; goto out; } sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - asoc->primary_destination); + NULL); sctp_feature_off(inp, SCTP_PCB_FLAGS_NODELAY); } } } + skip_out_eof: - if (!TAILQ_EMPTY(&stcb->asoc.control_send_queue)) { - some_on_control = 1; - } + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + + some_on_control = !TAILQ_EMPTY(&asoc->control_send_queue); if (queue_only_for_init) { - if (hold_tcblock == 0) { - SCTP_TCB_LOCK(stcb); - hold_tcblock = 1; - } - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { /* a collision took us forward? */ queue_only = 0; } else { +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); queue_only = 1; } } + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + if ((net->flight_size > net->cwnd) && - (stcb->asoc.sctp_cmt_on_off == 0)) { + (asoc->sctp_cmt_on_off == 0)) { SCTP_STAT_INCR(sctps_send_cwnd_avoid); queue_only = 1; } else if (asoc->ifp_had_enobuf) { @@ -14281,12 +14746,11 @@ sctp_lower_sosend(struct socket *so, } asoc->ifp_had_enobuf = 0; } - un_sent = ((stcb->asoc.total_output_queue_size - stcb->asoc.total_flight) + - (stcb->asoc.stream_queue_cnt * sizeof(struct sctp_data_chunk))); + un_sent = asoc->total_output_queue_size - asoc->total_flight; if ((sctp_is_feature_off(inp, SCTP_PCB_FLAGS_NODELAY)) && - (stcb->asoc.total_flight > 0) && - (stcb->asoc.stream_queue_cnt < SCTP_MAX_DATA_BUNDLING) && - (un_sent < (int)(stcb->asoc.smallest_mtu - SCTP_MIN_OVERHEAD))) { + (asoc->total_flight > 0) && + (asoc->stream_queue_cnt < SCTP_MAX_DATA_BUNDLING) && + (un_sent < (int)(asoc->smallest_mtu - SCTP_MIN_OVERHEAD))) { /*- * Ok, Nagle is set on and we have data outstanding. * Don't send anything and let SACKs drive out the @@ -14308,121 +14772,79 @@ sctp_lower_sosend(struct socket *so, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) { sctp_misc_ints(SCTP_CWNDLOG_PRESEND, queue_only_for_init, queue_only, nagle_applies, un_sent); - sctp_misc_ints(SCTP_CWNDLOG_PRESEND, stcb->asoc.total_output_queue_size, - stcb->asoc.total_flight, - stcb->asoc.chunks_on_out_queue, stcb->asoc.total_flight_count); - } - if ((queue_only == 0) && (nagle_applies == 0) && (stcb->asoc.peers_rwnd && un_sent)) { - /* we can attempt to send too. */ - if (hold_tcblock == 0) { - /* If there is activity recv'ing sacks no need to send */ - if (SCTP_TCB_TRYLOCK(stcb)) { - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); - hold_tcblock = 1; - } - } else { - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); - } + sctp_misc_ints(SCTP_CWNDLOG_PRESEND, asoc->total_output_queue_size, + asoc->total_flight, + asoc->chunks_on_out_queue, asoc->total_flight_count); + } + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); + +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif + if ((queue_only == 0) && (nagle_applies == 0) && (asoc->peers_rwnd && un_sent)) { + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); } else if ((queue_only == 0) && - (stcb->asoc.peers_rwnd == 0) && - (stcb->asoc.total_flight == 0)) { + (asoc->peers_rwnd == 0) && + (asoc->total_flight == 0)) { /* We get to have a probe outstanding */ - if (hold_tcblock == 0) { - hold_tcblock = 1; - SCTP_TCB_LOCK(stcb); - } sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_LOCKED); } else if (some_on_control) { - int num_out, reason, frag_point; + int num_out, reason; /* Here we do control only */ - if (hold_tcblock == 0) { - hold_tcblock = 1; - SCTP_TCB_LOCK(stcb); - } - frag_point = sctp_get_frag_point(stcb, &stcb->asoc); - (void)sctp_med_chunk_output(inp, stcb, &stcb->asoc, &num_out, - &reason, 1, 1, &now, &now_filled, frag_point, SCTP_SO_LOCKED); + (void)sctp_med_chunk_output(inp, stcb, asoc, &num_out, + &reason, 1, 1, &now, &now_filled, + sctp_get_frag_point(stcb), + SCTP_SO_LOCKED); } +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif SCTPDBG(SCTP_DEBUG_OUTPUT1, "USR Send complete qo:%d prw:%d unsent:%d tf:%d cooq:%d toqs:%d err:%d\n", - queue_only, stcb->asoc.peers_rwnd, un_sent, - stcb->asoc.total_flight, stcb->asoc.chunks_on_out_queue, - stcb->asoc.total_output_queue_size, error); + queue_only, asoc->peers_rwnd, un_sent, + asoc->total_flight, asoc->chunks_on_out_queue, + asoc->total_output_queue_size, error); + + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0, + ("Association about to be freed")); + KASSERT((asoc->state & SCTP_STATE_WAS_ABORTED) == 0, + ("Association was aborted")); out: -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&so->so_snd, 1); #endif out_unlocked: - - if (local_soresv && stcb) { - atomic_subtract_int(&stcb->asoc.sb_send_resv, sndlen); - } if (create_lock_applied) { SCTP_ASOC_CREATE_UNLOCK(inp); } - if ((stcb) && hold_tcblock) { - SCTP_TCB_UNLOCK(stcb); - } - if (stcb && free_cnt_applied) { - atomic_add_int(&stcb->asoc.refcnt, -1); - } -#ifdef INVARIANTS -#if !defined(__APPLE__) - if (stcb) { - if (mtx_owned(&stcb->tcb_mtx)) { - panic("Leaving with tcb mtx owned?"); - } - if (mtx_owned(&stcb->tcb_send_mtx)) { - panic("Leaving with tcb send mtx owned?"); - } - } -#endif -#endif -#ifdef __Panda__ - /* - * Handle the EAGAIN/ENOMEM cases to reattach the pak header - * to particle when pak is passed in, so that caller - * can try again with this pak - * - * NOTE: For other cases, including success case, - * we simply want to return the header back to free - * pool - */ - if (top) { - if ((error == EAGAIN) || (error == ENOMEM)) { - SCTP_ATTACH_CHAIN(i_pak, top, sndlen); - top = NULL; - } else { - (void)SCTP_RELEASE_HEADER(i_pak); + if (stcb != NULL) { + if (local_soresv) { + atomic_subtract_int(&asoc->sb_send_resv, (int)sndlen); } - } else { - /* This is to handle cases when top has - * been reset to NULL but pak might not - * be freed - */ - if (i_pak) { - (void)SCTP_RELEASE_HEADER(i_pak); + if (free_cnt_applied) { + atomic_subtract_int(&asoc->refcnt, 1); } + SCTP_TCB_UNLOCK(stcb); } -#endif -#ifdef INVARIANTS - if (inp) { - sctp_validate_no_locks(inp); - } else { - SCTP_PRINTF("Warning - inp is NULL so cant validate locks\n"); - } -#endif - if (top) { + if (top != NULL) { sctp_m_freem(top); } - if (control) { + if (control != NULL) { sctp_m_freem(control); } + SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, error); return (error); } - /* * generate an AUTHentication chunk, if required */ @@ -14457,7 +14879,7 @@ sctp_add_auth_chunk(struct mbuf *m, struct mbuf **m_end, SCTP_BUF_RESV_UF(m_auth, SCTP_MIN_OVERHEAD); /* fill in the AUTH chunk details */ auth = mtod(m_auth, struct sctp_auth_chunk *); - bzero(auth, sizeof(*auth)); + memset(auth, 0, sizeof(*auth)); auth->ch.chunk_type = SCTP_AUTHENTICATION; auth->ch.chunk_flags = 0; chunk_len = sizeof(*auth) + @@ -14481,7 +14903,7 @@ sctp_add_auth_chunk(struct mbuf *m, struct mbuf **m_end, return (m); } -#if defined(__FreeBSD__) || defined(__APPLE__) +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) #ifdef INET6 int sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro) @@ -14490,10 +14912,17 @@ sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro) struct nd_pfxrouter *pfxrtr = NULL; struct sockaddr_in6 gw6; +#if defined(__FreeBSD__) + if (ro == NULL || ro->ro_nh == NULL || src6->sin6_family != AF_INET6) +#else if (ro == NULL || ro->ro_rt == NULL || src6->sin6_family != AF_INET6) +#endif return (0); /* get prefix entry of address */ +#if defined(__FreeBSD__) + ND6_RLOCK(); +#endif LIST_FOREACH(pfx, &MODULE_GLOBAL(nd_prefix), ndpr_entry) { if (pfx->ndpr_stateflags & NDPRF_DETACHED) continue; @@ -14503,6 +14932,9 @@ sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro) } /* no prefix entry in the prefix list */ if (pfx == NULL) { +#if defined(__FreeBSD__) + ND6_RUNLOCK(); +#endif SCTPDBG(SCTP_DEBUG_OUTPUT2, "No prefix entry for "); SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, (struct sockaddr *)src6); return (0); @@ -14523,13 +14955,24 @@ sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro) SCTPDBG(SCTP_DEBUG_OUTPUT2, "prefix router is "); SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, (struct sockaddr *)&gw6); SCTPDBG(SCTP_DEBUG_OUTPUT2, "installed router is "); +#if defined(__FreeBSD__) + SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, &ro->ro_nh->gw_sa); +#else SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, ro->ro_rt->rt_gateway); - if (sctp_cmpaddr((struct sockaddr *)&gw6, - ro->ro_rt->rt_gateway)) { +#endif +#if defined(__FreeBSD__) + if (sctp_cmpaddr((struct sockaddr *)&gw6, &ro->ro_nh->gw_sa)) { + ND6_RUNLOCK(); +#else + if (sctp_cmpaddr((struct sockaddr *)&gw6, ro->ro_rt->rt_gateway)) { +#endif SCTPDBG(SCTP_DEBUG_OUTPUT2, "pfxrouter is installed\n"); return (1); } } +#if defined(__FreeBSD__) + ND6_RUNLOCK(); +#endif SCTPDBG(SCTP_DEBUG_OUTPUT2, "pfxrouter is not installed\n"); return (0); } @@ -14543,7 +14986,11 @@ sctp_v4src_match_nexthop(struct sctp_ifa *sifa, sctp_route_t *ro) struct ifaddr *ifa; struct in_addr srcnetaddr, gwnetaddr; +#if defined(__FreeBSD__) + if (ro == NULL || ro->ro_nh == NULL || +#else if (ro == NULL || ro->ro_rt == NULL || +#endif sifa->address.sa.sa_family != AF_INET) { return (0); } @@ -14555,10 +15002,18 @@ sctp_v4src_match_nexthop(struct sctp_ifa *sifa, sctp_route_t *ro) SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, &sifa->address.sa); SCTPDBG(SCTP_DEBUG_OUTPUT1, "network address is %x\n", srcnetaddr.s_addr); +#if defined(__FreeBSD__) + sin = &ro->ro_nh->gw4_sa; +#else sin = (struct sockaddr_in *)ro->ro_rt->rt_gateway; +#endif gwnetaddr.s_addr = (sin->sin_addr.s_addr & mask->sin_addr.s_addr); SCTPDBG(SCTP_DEBUG_OUTPUT1, "match_nexthop4: nexthop is "); +#if defined(__FreeBSD__) + SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, &ro->ro_nh->gw_sa); +#else SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, ro->ro_rt->rt_gateway); +#endif SCTPDBG(SCTP_DEBUG_OUTPUT1, "network address is %x\n", gwnetaddr.s_addr); if (srcnetaddr.s_addr == gwnetaddr.s_addr) { return (1); diff --git a/netwerk/sctp/src/netinet/sctp_output.h b/netwerk/sctp/src/netinet/sctp_output.h index d03bead046..56858d880e 100755 --- a/netwerk/sctp/src/netinet/sctp_output.h +++ b/netwerk/sctp/src/netinet/sctp_output.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_output.h 272751 2014-10-08 15:30:59Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_OUTPUT_H_ @@ -42,76 +44,68 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_output.h 272751 2014-10-08 15:30:59Z t #if defined(_KERNEL) || defined(__Userspace__) - struct mbuf * sctp_add_addresses_to_i_ia(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct sctp_scoping *scope, - struct mbuf *m_at, - int cnt_inits_to, - uint16_t *padding_len, uint16_t *chunk_len); - + struct sctp_scoping *scope, + struct mbuf *m_at, + int cnt_inits_to, + uint16_t *padding_len, uint16_t *chunk_len); int sctp_is_addr_restricted(struct sctp_tcb *, struct sctp_ifa *); - int sctp_is_address_in_scope(struct sctp_ifa *ifa, struct sctp_scoping *scope, - int do_update); + int do_update); int sctp_is_addr_in_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa); struct sctp_ifa * sctp_source_address_selection(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - sctp_route_t *ro, struct sctp_nets *net, - int non_asoc_addr_ok, uint32_t vrf_id); + struct sctp_tcb *stcb, + sctp_route_t *ro, struct sctp_nets *net, + int non_asoc_addr_ok, uint32_t vrf_id); #if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Userspace__) -int -sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro); -int -sctp_v4src_match_nexthop(struct sctp_ifa *sifa, sctp_route_t *ro); -#endif +int sctp_v6src_match_nexthop(struct sockaddr_in6 *src6, sctp_route_t *ro); -void sctp_send_initiate(struct sctp_inpcb *, struct sctp_tcb *, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED +int sctp_v4src_match_nexthop(struct sctp_ifa *sifa, sctp_route_t *ro); #endif - ); + +void sctp_send_initiate(struct sctp_inpcb *, struct sctp_tcb *, int); void -sctp_send_initiate_ack(struct sctp_inpcb *, struct sctp_tcb *, struct mbuf *, +sctp_send_initiate_ack(struct sctp_inpcb *, struct sctp_tcb *, + struct sctp_nets *, struct mbuf *, int, int, struct sockaddr *, struct sockaddr *, struct sctphdr *, struct sctp_init_chunk *, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t, uint32_t, #endif - uint32_t, uint16_t, int); + uint32_t, uint16_t); struct mbuf * sctp_arethere_unrecognized_parameters(struct mbuf *, int, int *, - struct sctp_chunkhdr *, int *); + struct sctp_chunkhdr *, int *, int *); void sctp_queue_op_err(struct sctp_tcb *, struct mbuf *); int -sctp_send_cookie_echo(struct mbuf *, int, struct sctp_tcb *, - struct sctp_nets *); +sctp_send_cookie_echo(struct mbuf *, int, int, struct sctp_tcb *, + struct sctp_nets *); void sctp_send_cookie_ack(struct sctp_tcb *); void sctp_send_heartbeat_ack(struct sctp_tcb *, struct mbuf *, int, int, - struct sctp_nets *); + struct sctp_nets *); void sctp_remove_from_wheel(struct sctp_tcb *stcb, - struct sctp_association *asoc, - struct sctp_stream_out *strq, int holds_lock); - + struct sctp_association *asoc, + struct sctp_stream_out *strq, int holds_lock); void sctp_send_shutdown(struct sctp_tcb *, struct sctp_nets *); @@ -121,8 +115,8 @@ void sctp_send_shutdown_complete(struct sctp_tcb *, struct sctp_nets *, int); void sctp_send_shutdown_complete2(struct sockaddr *, struct sockaddr *, struct sctphdr *, -#if defined(__FreeBSD__) - uint8_t, uint32_t, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t, uint32_t, uint16_t, #endif uint32_t, uint16_t); @@ -130,7 +124,7 @@ void sctp_send_asconf(struct sctp_tcb *, struct sctp_nets *, int addr_locked); void sctp_send_asconf_ack(struct sctp_tcb *); -int sctp_get_frag_point(struct sctp_tcb *, struct sctp_association *); +uint32_t sctp_get_frag_point(struct sctp_tcb *); void sctp_toss_old_cookies(struct sctp_tcb *, struct sctp_association *); @@ -140,11 +134,15 @@ void sctp_fix_ecn_echo(struct sctp_association *); void sctp_move_chunks_from_net(struct sctp_tcb *stcb, struct sctp_nets *net); -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#define SCTP_DATA_CHUNK_OVERHEAD(stcb) ((stcb)->asoc.idata_supported ? \ + sizeof(struct sctp_idata_chunk) : \ + sizeof(struct sctp_data_chunk)) + +#if defined(__FreeBSD__) && !defined(__Userspace__) int sctp_output(struct sctp_inpcb *, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *, int); -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) sctp_output(struct sctp_inpcb *, struct mbuf *, struct sockaddr *, struct mbuf *, PKTHREAD, int); #else @@ -153,30 +151,15 @@ sctp_output(struct sctp_inpcb *, struct mbuf *, struct sockaddr *, #endif int sctp_output(struct sctp_inpcb *, -#if defined(__Panda__) - pakhandle_type, -#else struct mbuf *, -#endif struct sockaddr *, -#if defined(__Panda__) - pakhandle_type, -#else struct mbuf *, -#endif struct proc *, int); #endif -void sctp_chunk_output(struct sctp_inpcb *, struct sctp_tcb *, int, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); -void sctp_send_abort_tcb(struct sctp_tcb *, struct mbuf *, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); +void sctp_chunk_output(struct sctp_inpcb *, struct sctp_tcb *, int, int); + +void sctp_send_abort_tcb(struct sctp_tcb *, struct mbuf *, int); void send_forward_tsn(struct sctp_tcb *, struct sctp_association *); @@ -186,45 +169,45 @@ void sctp_send_hb(struct sctp_tcb *, struct sctp_nets *, int); void sctp_send_ecn_echo(struct sctp_tcb *, struct sctp_nets *, uint32_t); - void sctp_send_packet_dropped(struct sctp_tcb *, struct sctp_nets *, struct mbuf *, int, int, int); - - void sctp_send_cwr(struct sctp_tcb *, struct sctp_nets *, uint32_t, uint8_t); - void -sctp_add_stream_reset_out(struct sctp_tmit_chunk *, - int, uint16_t *, uint32_t, uint32_t, uint32_t); +sctp_add_stream_reset_result(struct sctp_tmit_chunk *, uint32_t, uint32_t); void -sctp_add_stream_reset_result(struct sctp_tmit_chunk *, uint32_t, uint32_t); +sctp_send_deferred_reset_response(struct sctp_tcb *, + struct sctp_stream_reset_list *, + int); void sctp_add_stream_reset_result_tsn(struct sctp_tmit_chunk *, uint32_t, uint32_t, uint32_t, uint32_t); +int +sctp_send_stream_reset_out_if_possible(struct sctp_tcb *, int); int -sctp_send_str_reset_req(struct sctp_tcb *, uint16_t , uint16_t *, uint8_t, +sctp_send_str_reset_req(struct sctp_tcb *, uint16_t , uint16_t *, uint8_t, uint8_t, uint8_t, uint16_t, uint16_t, uint8_t); void sctp_send_abort(struct mbuf *, int, struct sockaddr *, struct sockaddr *, struct sctphdr *, uint32_t, struct mbuf *, -#if defined(__FreeBSD__) - uint8_t, uint32_t, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t, uint32_t, uint16_t, #endif uint32_t, uint16_t); -void sctp_send_operr_to(struct sockaddr *, struct sockaddr *, - struct sctphdr *, uint32_t, struct mbuf *, -#if defined(__FreeBSD__) - uint8_t, uint32_t, +void +sctp_send_operr_to(struct sockaddr *, struct sockaddr *, + struct sctphdr *, uint32_t, struct mbuf *, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t, uint32_t, uint16_t, #endif - uint32_t, uint16_t); + uint32_t, uint16_t); #endif /* _KERNEL || __Userspace__ */ @@ -233,20 +216,15 @@ int sctp_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, -#ifdef __Panda__ - pakhandle_type top, - pakhandle_type control, -#else struct mbuf *top, struct mbuf *control, -#endif -#if defined(__APPLE__) || defined(__Panda__) +#if defined(__APPLE__) && !defined(__Userspace__) int flags #else int flags, -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) struct thread *p -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) PKTHREAD p #else #if defined(__Userspace__) diff --git a/netwerk/sctp/src/netinet/sctp_pcb.c b/netwerk/sctp/src/netinet/sctp_pcb.c index d2ae458e0d..233ba5dbf3 100755 --- a/netwerk/sctp/src/netinet/sctp_pcb.c +++ b/netwerk/sctp/src/netinet/sctp_pcb.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,13 +32,13 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 280459 2015-03-24 21:12:45Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif #include @@ -49,11 +51,8 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 280459 2015-03-24 21:12:45Z tuex #include #include #include -#if defined(__FreeBSD__) && __FreeBSD_version >= 803000 -#include -#endif #if defined(INET) || defined(INET6) -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include #endif #endif @@ -64,32 +63,22 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 280459 2015-03-24 21:12:45Z tuex #include #endif #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #include #include #endif #if defined(__Userspace__) #include -#if !defined(__Userspace_os_Windows) +#include +#if !defined(_WIN32) #include #endif #endif -#if defined(__APPLE__) -#define APPLE_FILE_NO 4 -#endif - -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 -VNET_DEFINE(struct sctp_base_info, system_base_info); -#else +#if !defined(__FreeBSD__) || defined(__Userspace__) struct sctp_base_info system_base_info; -#endif -#if defined(__Userspace__) -#if defined(INET) || defined(INET6) -struct ifaddrs *g_interfaces; -#endif #endif /* FIX: we don't handle multiple link local scopes */ /* "scopeless" replacement IN6_ARE_ADDR_EQUAL */ @@ -98,7 +87,7 @@ int SCTP6_ARE_ADDR_EQUAL(struct sockaddr_in6 *a, struct sockaddr_in6 *b) { #ifdef SCTP_EMBEDDED_V6_SCOPE -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) struct in6_addr tmp_a, tmp_b; tmp_a = a->sin6_addr; @@ -261,7 +250,6 @@ sctp_allocate_vrf(int vrf_id) return (vrf); } - struct sctp_ifn * sctp_find_ifn(void *ifn, uint32_t ifn_index) { @@ -271,6 +259,7 @@ sctp_find_ifn(void *ifn, uint32_t ifn_index) /* We assume the lock is held for the addresses * if that's wrong problems could occur :-) */ + SCTP_IPI_ADDR_LOCK_ASSERT(); hash_ifn_head = &SCTP_BASE_INFO(vrf_ifn_hash)[(ifn_index & SCTP_BASE_INFO(vrf_ifn_hashmark))]; LIST_FOREACH(sctp_ifnp, hash_ifn_head, next_bucket) { if (sctp_ifnp->ifn_index == ifn_index) { @@ -283,7 +272,6 @@ sctp_find_ifn(void *ifn, uint32_t ifn_index) return (NULL); } - struct sctp_vrf * sctp_find_vrf(uint32_t vrf_id) { @@ -299,7 +287,6 @@ sctp_find_vrf(uint32_t vrf_id) return (NULL); } - void sctp_free_vrf(struct sctp_vrf *vrf) { @@ -315,7 +302,6 @@ sctp_free_vrf(struct sctp_vrf *vrf) } } - void sctp_free_ifn(struct sctp_ifn *sctp_ifnp) { @@ -329,7 +315,6 @@ sctp_free_ifn(struct sctp_ifn *sctp_ifnp) } } - void sctp_update_ifn_mtu(uint32_t ifn_index, uint32_t mtu) { @@ -341,7 +326,6 @@ sctp_update_ifn_mtu(uint32_t ifn_index, uint32_t mtu) } } - void sctp_free_ifa(struct sctp_ifa *sctp_ifap) { @@ -355,7 +339,6 @@ sctp_free_ifa(struct sctp_ifa *sctp_ifap) } } - static void sctp_delete_ifn(struct sctp_ifn *sctp_ifnp, int hold_addr_lock) { @@ -366,19 +349,20 @@ sctp_delete_ifn(struct sctp_ifn *sctp_ifnp, int hold_addr_lock) /* Not in the list.. sorry */ return; } - if (hold_addr_lock == 0) + if (hold_addr_lock == 0) { SCTP_IPI_ADDR_WLOCK(); + } else { + SCTP_IPI_ADDR_WLOCK_ASSERT(); + } LIST_REMOVE(sctp_ifnp, next_bucket); LIST_REMOVE(sctp_ifnp, next_ifn); - SCTP_DEREGISTER_INTERFACE(sctp_ifnp->ifn_index, - sctp_ifnp->registered_af); - if (hold_addr_lock == 0) + if (hold_addr_lock == 0) { SCTP_IPI_ADDR_WUNLOCK(); + } /* Take away the reference, and possibly free it */ sctp_free_ifn(sctp_ifnp); } - void sctp_mark_ifa_addr_down(uint32_t vrf_id, struct sockaddr *addr, const char *if_name, uint32_t ifn_index) @@ -391,7 +375,6 @@ sctp_mark_ifa_addr_down(uint32_t vrf_id, struct sockaddr *addr, if (vrf == NULL) { SCTPDBG(SCTP_DEBUG_PCB4, "Can't find vrf_id 0x%x\n", vrf_id); goto out; - } sctp_ifap = sctp_find_ifa_by_addr(addr, vrf->vrf_id, SCTP_ADDR_LOCKED); if (sctp_ifap == NULL) { @@ -399,7 +382,7 @@ sctp_mark_ifa_addr_down(uint32_t vrf_id, struct sockaddr *addr, goto out; } if (sctp_ifap->ifn_p == NULL) { - SCTPDBG(SCTP_DEBUG_PCB4, "IFA has no IFN - can't mark unuseable\n"); + SCTPDBG(SCTP_DEBUG_PCB4, "IFA has no IFN - can't mark unusable\n"); goto out; } if (if_name) { @@ -422,7 +405,6 @@ sctp_mark_ifa_addr_down(uint32_t vrf_id, struct sockaddr *addr, SCTP_IPI_ADDR_RUNLOCK(); } - void sctp_mark_ifa_addr_up(uint32_t vrf_id, struct sockaddr *addr, const char *if_name, uint32_t ifn_index) @@ -435,7 +417,6 @@ sctp_mark_ifa_addr_up(uint32_t vrf_id, struct sockaddr *addr, if (vrf == NULL) { SCTPDBG(SCTP_DEBUG_PCB4, "Can't find vrf_id 0x%x\n", vrf_id); goto out; - } sctp_ifap = sctp_find_ifa_by_addr(addr, vrf->vrf_id, SCTP_ADDR_LOCKED); if (sctp_ifap == NULL) { @@ -443,7 +424,7 @@ sctp_mark_ifa_addr_up(uint32_t vrf_id, struct sockaddr *addr, goto out; } if (sctp_ifap->ifn_p == NULL) { - SCTPDBG(SCTP_DEBUG_PCB4, "IFA has no IFN - can't mark unuseable\n"); + SCTPDBG(SCTP_DEBUG_PCB4, "IFA has no IFN - can't mark unusable\n"); goto out; } if (if_name) { @@ -466,7 +447,6 @@ sctp_mark_ifa_addr_up(uint32_t vrf_id, struct sockaddr *addr, SCTP_IPI_ADDR_RUNLOCK(); } - /*- * Add an ifa to an ifn. * Register the interface as necessary. @@ -499,12 +479,10 @@ sctp_add_ifa_to_ifn(struct sctp_ifn *sctp_ifnp, struct sctp_ifa *sctp_ifap) } if (sctp_ifnp->ifa_count == 1) { /* register the new interface */ - SCTP_REGISTER_INTERFACE(sctp_ifnp->ifn_index, ifa_af); sctp_ifnp->registered_af = ifa_af; } } - /*- * Remove an ifa from its ifn. * If no more addresses exist, remove the ifn too. Otherwise, re-register @@ -540,13 +518,9 @@ sctp_remove_ifa_from_ifn(struct sctp_ifa *sctp_ifap) /* re-register address family type, if needed */ if ((sctp_ifap->ifn_p->num_v6 == 0) && (sctp_ifap->ifn_p->registered_af == AF_INET6)) { - SCTP_DEREGISTER_INTERFACE(sctp_ifap->ifn_p->ifn_index, AF_INET6); - SCTP_REGISTER_INTERFACE(sctp_ifap->ifn_p->ifn_index, AF_INET); sctp_ifap->ifn_p->registered_af = AF_INET; } else if ((sctp_ifap->ifn_p->num_v4 == 0) && (sctp_ifap->ifn_p->registered_af == AF_INET)) { - SCTP_DEREGISTER_INTERFACE(sctp_ifap->ifn_p->ifn_index, AF_INET); - SCTP_REGISTER_INTERFACE(sctp_ifap->ifn_p->ifn_index, AF_INET6); sctp_ifap->ifn_p->registered_af = AF_INET6; } /* free the ifn refcount */ @@ -556,7 +530,6 @@ sctp_remove_ifa_from_ifn(struct sctp_ifa *sctp_ifap) } } - struct sctp_ifa * sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, uint32_t ifn_type, const char *if_name, void *ifa, @@ -564,8 +537,8 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, int dynamic_add) { struct sctp_vrf *vrf; - struct sctp_ifn *sctp_ifnp = NULL; - struct sctp_ifa *sctp_ifap = NULL; + struct sctp_ifn *sctp_ifnp, *new_sctp_ifnp; + struct sctp_ifa *sctp_ifap, *new_sctp_ifap; struct sctp_ifalist *hash_addr_head; struct sctp_ifnlist *hash_ifn_head; uint32_t hash_of_addr; @@ -575,6 +548,23 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, SCTPDBG(SCTP_DEBUG_PCB4, "vrf_id 0x%x: adding address: ", vrf_id); SCTPDBG_ADDR(SCTP_DEBUG_PCB4, addr); #endif + SCTP_MALLOC(new_sctp_ifnp, struct sctp_ifn *, + sizeof(struct sctp_ifn), SCTP_M_IFN); + if (new_sctp_ifnp == NULL) { +#ifdef INVARIANTS + panic("No memory for IFN"); +#endif + return (NULL); + } + SCTP_MALLOC(new_sctp_ifap, struct sctp_ifa *, sizeof(struct sctp_ifa), SCTP_M_IFA); + if (new_sctp_ifap == NULL) { +#ifdef INVARIANTS + panic("No memory for IFA"); +#endif + SCTP_FREE(new_sctp_ifnp, SCTP_M_IFN); + return (NULL); + } + SCTP_IPI_ADDR_WLOCK(); sctp_ifnp = sctp_find_ifn(ifn, ifn_index); if (sctp_ifnp) { @@ -585,6 +575,8 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, vrf = sctp_allocate_vrf(vrf_id); if (vrf == NULL) { SCTP_IPI_ADDR_WUNLOCK(); + SCTP_FREE(new_sctp_ifnp, SCTP_M_IFN); + SCTP_FREE(new_sctp_ifap, SCTP_M_IFA); return (NULL); } } @@ -593,15 +585,8 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, /* build one and add it, can't hold lock * until after malloc done though. */ - SCTP_IPI_ADDR_WUNLOCK(); - SCTP_MALLOC(sctp_ifnp, struct sctp_ifn *, - sizeof(struct sctp_ifn), SCTP_M_IFN); - if (sctp_ifnp == NULL) { -#ifdef INVARIANTS - panic("No memory for IFN"); -#endif - return (NULL); - } + sctp_ifnp = new_sctp_ifnp; + new_sctp_ifnp = NULL; memset(sctp_ifnp, 0, sizeof(struct sctp_ifn)); sctp_ifnp->ifn_index = ifn_index; sctp_ifnp->ifn_p = ifn; @@ -609,15 +594,14 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, sctp_ifnp->refcount = 0; sctp_ifnp->vrf = vrf; atomic_add_int(&vrf->refcount, 1); - sctp_ifnp->ifn_mtu = SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index, addr->sa_family); + sctp_ifnp->ifn_mtu = SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index); if (if_name != NULL) { - snprintf(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", if_name); + SCTP_SNPRINTF(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", if_name); } else { - snprintf(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", "unknown"); + SCTP_SNPRINTF(sctp_ifnp->ifn_name, SCTP_IFNAMSIZ, "%s", "unknown"); } hash_ifn_head = &SCTP_BASE_INFO(vrf_ifn_hash)[(ifn_index & SCTP_BASE_INFO(vrf_ifn_hashmark))]; LIST_INIT(&sctp_ifnp->ifalist); - SCTP_IPI_ADDR_WLOCK(); LIST_INSERT_HEAD(hash_ifn_head, sctp_ifnp, next_bucket); LIST_INSERT_HEAD(&vrf->ifnlist, sctp_ifnp, next_ifn); atomic_add_int(&SCTP_BASE_INFO(ipi_count_ifns), 1); @@ -644,6 +628,10 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, } exit_stage_left: SCTP_IPI_ADDR_WUNLOCK(); + if (new_sctp_ifnp != NULL) { + SCTP_FREE(new_sctp_ifnp, SCTP_M_IFN); + } + SCTP_FREE(new_sctp_ifap, SCTP_M_IFA); return (sctp_ifap); } else { if (sctp_ifap->ifn_p) { @@ -670,14 +658,7 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, goto exit_stage_left; } } - SCTP_IPI_ADDR_WUNLOCK(); - SCTP_MALLOC(sctp_ifap, struct sctp_ifa *, sizeof(struct sctp_ifa), SCTP_M_IFA); - if (sctp_ifap == NULL) { -#ifdef INVARIANTS - panic("No memory for IFA"); -#endif - return (NULL); - } + sctp_ifap = new_sctp_ifap; memset(sctp_ifap, 0, sizeof(struct sctp_ifa)); sctp_ifap->ifn_p = sctp_ifnp; atomic_add_int(&sctp_ifnp->refcount, 1); @@ -766,7 +747,6 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, (sctp_ifap->src_is_loop == 0)) { sctp_ifap->src_is_glob = 1; } - SCTP_IPI_ADDR_WLOCK(); hash_addr_head = &vrf->vrf_addr_hash[(hash_of_addr & vrf->vrf_addr_hashmark)]; LIST_INSERT_HEAD(hash_addr_head, sctp_ifap, next_bucket); sctp_ifap->refcount = 1; @@ -775,10 +755,13 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, vrf->total_ifa_count++; atomic_add_int(&SCTP_BASE_INFO(ipi_count_ifas), 1); if (new_ifn_af) { - SCTP_REGISTER_INTERFACE(ifn_index, new_ifn_af); sctp_ifnp->registered_af = new_ifn_af; } SCTP_IPI_ADDR_WUNLOCK(); + if (new_sctp_ifnp != NULL) { + SCTP_FREE(new_sctp_ifnp, SCTP_M_IFN); + } + if (dynamic_add) { /* Bump up the refcount so that when the timer * completes it will drop back down. @@ -799,19 +782,18 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, void *ifn, uint32_t ifn_index, return (NULL); } SCTP_INCR_LADDR_COUNT(); - bzero(wi, sizeof(*wi)); + memset(wi, 0, sizeof(*wi)); (void)SCTP_GETTIME_TIMEVAL(&wi->start_time); wi->ifa = sctp_ifap; wi->action = SCTP_ADD_IP_ADDRESS; SCTP_WQ_ADDR_LOCK(); LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); - SCTP_WQ_ADDR_UNLOCK(); - sctp_timer_start(SCTP_TIMER_TYPE_ADDR_WQ, (struct sctp_inpcb *)NULL, (struct sctp_tcb *)NULL, (struct sctp_nets *)NULL); + SCTP_WQ_ADDR_UNLOCK(); } else { /* it's ready for use */ sctp_ifap->localifa_flags &= ~SCTP_ADDR_DEFER_USE; @@ -844,8 +826,7 @@ sctp_del_addr_from_vrf(uint32_t vrf_id, struct sockaddr *addr, int valid = 0; /*- * The name has priority over the ifn_index - * if its given. We do this especially for - * panda who might recycle indexes fast. + * if its given. */ if (if_name) { if (strncmp(if_name, sctp_ifap->ifn_p->ifn_name, SCTP_IFNAMSIZ) == 0) { @@ -870,7 +851,7 @@ sctp_del_addr_from_vrf(uint32_t vrf_id, struct sockaddr *addr, } SCTPDBG(SCTP_DEBUG_PCB4, "Deleting ifa %p\n", (void *)sctp_ifap); sctp_ifap->localifa_flags &= SCTP_ADDR_VALID; - /* + /* * We don't set the flag. This means that the structure will * hang around in EP's that have bound specific to it until * they close. This gives us TCP like behavior if someone @@ -907,7 +888,7 @@ sctp_del_addr_from_vrf(uint32_t vrf_id, struct sockaddr *addr, return; } SCTP_INCR_LADDR_COUNT(); - bzero(wi, sizeof(*wi)); + memset(wi, 0, sizeof(*wi)); (void)SCTP_GETTIME_TIMEVAL(&wi->start_time); wi->ifa = sctp_ifap; wi->action = SCTP_DEL_IP_ADDRESS; @@ -917,17 +898,15 @@ sctp_del_addr_from_vrf(uint32_t vrf_id, struct sockaddr *addr, * newest first :-0 */ LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); - SCTP_WQ_ADDR_UNLOCK(); - sctp_timer_start(SCTP_TIMER_TYPE_ADDR_WQ, (struct sctp_inpcb *)NULL, (struct sctp_tcb *)NULL, (struct sctp_nets *)NULL); + SCTP_WQ_ADDR_UNLOCK(); } return; } - static int sctp_does_stcb_own_this_addr(struct sctp_tcb *stcb, struct sockaddr *to) { @@ -997,7 +976,7 @@ sctp_does_stcb_own_this_addr(struct sctp_tcb *stcb, struct sockaddr *to) IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)) { continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -1019,7 +998,7 @@ sctp_does_stcb_own_this_addr(struct sctp_tcb *stcb, struct sockaddr *to) #endif sin6 = &sctp_ifa->address.sin6; rsin6 = (struct sockaddr_in6 *)to; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -1142,14 +1121,12 @@ sctp_does_stcb_own_this_addr(struct sctp_tcb *stcb, struct sockaddr *to) /* TSNH */ break; } - } } SCTP_IPI_ADDR_RUNLOCK(); return (0); } - static struct sctp_tcb * sctp_tcb_special_locate(struct sctp_inpcb **inp_p, struct sockaddr *from, struct sockaddr *to, struct sctp_nets **netp, uint32_t vrf_id) @@ -1224,7 +1201,7 @@ sctp_tcb_special_locate(struct sctp_inpcb **inp_p, struct sockaddr *from, SCTP_INP_RUNLOCK(inp); continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) switch (to->sa_family) { #ifdef INET case AF_INET: @@ -1283,9 +1260,8 @@ sctp_tcb_special_locate(struct sctp_inpcb **inp_p, struct sockaddr *from, int match = 0; LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { - if (laddr->ifa == NULL) { - SCTPDBG(SCTP_DEBUG_PCB1, "%s: NULL ifa\n", __FUNCTION__); + SCTPDBG(SCTP_DEBUG_PCB1, "%s: NULL ifa\n", __func__); continue; } if (laddr->ifa->localifa_flags & SCTP_BEING_DELETED) { @@ -1379,7 +1355,6 @@ sctp_tcb_special_locate(struct sctp_inpcb **inp_p, struct sockaddr *from, } /* Does this TCB have a matching address? */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (net->ro._l_addr.sa.sa_family != from->sa_family) { /* not the same family, can't be a match */ continue; @@ -1458,7 +1433,6 @@ sctp_tcb_special_locate(struct sctp_inpcb **inp_p, struct sockaddr *from, return (NULL); } - /* * rules for use * @@ -1492,7 +1466,7 @@ sctp_findassociation_ep_addr(struct sctp_inpcb **inp_p, struct sockaddr *remote, #endif #if defined(__Userspace__) case AF_CONN: - rport = (((struct sockaddr_in6 *)remote)->sin6_port); + rport = (((struct sockaddr_conn *)remote)->sconn_port); break; #endif default: @@ -1516,7 +1490,7 @@ sctp_findassociation_ep_addr(struct sctp_inpcb **inp_p, struct sockaddr *remote, * it is the acceptor, then do the special_lookup to hash * and find the real inp. */ - if ((inp->sctp_socket) && (inp->sctp_socket->so_qlimit)) { + if ((inp->sctp_socket) && SCTP_IS_LISTENING(inp)) { /* to is peer addr, from is my addr */ #ifndef SCTP_MVRF stcb = sctp_tcb_special_locate(inp_p, remote, local, @@ -1825,7 +1799,6 @@ sctp_findassociation_ep_addr(struct sctp_inpcb **inp_p, struct sockaddr *remote, return (NULL); } - /* * Find an association for a specific endpoint using the association id given * out in the COMM_UP notification @@ -1840,10 +1813,6 @@ sctp_findasoc_ep_asocid_locked(struct sctp_inpcb *inp, sctp_assoc_t asoc_id, int struct sctp_tcb *stcb; uint32_t id; - if (inp == NULL) { - SCTP_PRINTF("TSNH ep_associd\n"); - return (NULL); - } if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { SCTP_PRINTF("TSNH ep_associd0\n"); return (NULL); @@ -1877,7 +1846,6 @@ sctp_findasoc_ep_asocid_locked(struct sctp_inpcb *inp, sctp_assoc_t asoc_id, int return (NULL); } - struct sctp_tcb * sctp_findassociation_ep_asocid(struct sctp_inpcb *inp, sctp_assoc_t asoc_id, int want_lock) { @@ -1889,7 +1857,6 @@ sctp_findassociation_ep_asocid(struct sctp_inpcb *inp, sctp_assoc_t asoc_id, int return (stcb); } - /* * Endpoint probe expects that the INP_INFO is locked. */ @@ -1965,7 +1932,7 @@ sctp_endpoint_probe(struct sockaddr *nam, struct sctppcbhead *head, SCTP_INP_RUNLOCK(inp); continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { SCTP_INP_RUNLOCK(inp); @@ -1981,7 +1948,7 @@ sctp_endpoint_probe(struct sockaddr *nam, struct sctppcbhead *head, SCTP_INP_RUNLOCK(inp); continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { SCTP_INP_RUNLOCK(inp); @@ -2084,7 +2051,7 @@ sctp_endpoint_probe(struct sockaddr *nam, struct sctppcbhead *head, LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { if (laddr->ifa == NULL) { SCTPDBG(SCTP_DEBUG_PCB1, "%s: NULL ifa\n", - __FUNCTION__); + __func__); continue; } SCTPDBG(SCTP_DEBUG_PCB1, "Ok laddr->ifa:%p is possible, ", @@ -2098,7 +2065,7 @@ sctp_endpoint_probe(struct sockaddr *nam, struct sctppcbhead *head, switch (nam->sa_family) { #ifdef INET case AF_INET: -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (sin == NULL) { /* TSNH */ break; @@ -2137,7 +2104,6 @@ sctp_endpoint_probe(struct sockaddr *nam, struct sctppcbhead *head, return (NULL); } - static struct sctp_inpcb * sctp_isport_inuse(struct sctp_inpcb *inp, uint16_t lport, uint32_t vrf_id) { @@ -2198,7 +2164,6 @@ sctp_isport_inuse(struct sctp_inpcb *inp, uint16_t lport, uint32_t vrf_id) return (NULL); } - int sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp) { @@ -2206,6 +2171,9 @@ sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp) struct sctppcbhead *head; struct sctp_inpcb *tinp, *ninp; + SCTP_INP_INFO_WLOCK_ASSERT(); + SCTP_INP_WLOCK_ASSERT(inp); + if (sctp_is_feature_off(inp, SCTP_PCB_FLAGS_PORTREUSE)) { /* only works with port reuse on */ return (-1); @@ -2213,8 +2181,7 @@ sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp) if ((inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) == 0) { return (0); } - SCTP_INP_RUNLOCK(inp); - SCTP_INP_INFO_WLOCK(); + SCTP_INP_WUNLOCK(inp); head = &SCTP_BASE_INFO(sctp_ephash)[SCTP_PCBHASH_ALLADDR(inp->sctp_lport, SCTP_BASE_INFO(hashmark))]; /* Kick out all non-listeners to the TCP hash */ @@ -2228,7 +2195,7 @@ sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp) if (tinp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { continue; } - if (tinp->sctp_socket->so_qlimit) { + if (SCTP_IS_LISTENING(tinp)) { continue; } SCTP_INP_WLOCK(tinp); @@ -2244,13 +2211,9 @@ sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp) inp->sctp_flags &= ~SCTP_PCB_FLAGS_IN_TCPPOOL; head = &SCTP_BASE_INFO(sctp_ephash)[SCTP_PCBHASH_ALLADDR(inp->sctp_lport, SCTP_BASE_INFO(hashmark))]; LIST_INSERT_HEAD(head, inp, sctp_hash); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_RLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); return (0); } - struct sctp_inpcb * sctp_pcb_findep(struct sockaddr *nam, int find_tcp_pool, int have_lock, uint32_t vrf_id) @@ -2336,7 +2299,6 @@ sctp_pcb_findep(struct sockaddr *nam, int find_tcp_pool, int have_lock, return (inp); } - /* * Find an association for an endpoint with the pointer to whom you want to * send to and the endpoint pointer. The address can be IPv4 or IPv6. We may @@ -2388,7 +2350,6 @@ sctp_findassociation_addr_sa(struct sockaddr *from, struct sockaddr *to, return (stcb); } - /* * This routine will grub through the mbuf that is a INIT or INIT-ACK and * find all addresses that the sender has specified in any address list. Each @@ -2399,7 +2360,7 @@ sctp_findassociation_special_addr(struct mbuf *m, int offset, struct sctphdr *sh, struct sctp_inpcb **inp_p, struct sctp_nets **netp, struct sockaddr *dst) { - struct sctp_paramhdr *phdr, parm_buf; + struct sctp_paramhdr *phdr, param_buf; #if defined(INET) || defined(INET6) struct sctp_tcb *stcb; uint16_t ptype; @@ -2431,7 +2392,7 @@ sctp_findassociation_special_addr(struct mbuf *m, int offset, offset += sizeof(struct sctp_init_chunk); - phdr = sctp_get_next_param(m, offset, &parm_buf, sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, sizeof(param_buf)); while (phdr != NULL) { /* now we must see if we want the parameter */ #if defined(INET) || defined(INET6) @@ -2445,10 +2406,10 @@ sctp_findassociation_special_addr(struct mbuf *m, int offset, if (ptype == SCTP_IPV4_ADDRESS && plen == sizeof(struct sctp_ipv4addr_param)) { /* Get the rest of the address */ - struct sctp_ipv4addr_param ip4_parm, *p4; + struct sctp_ipv4addr_param ip4_param, *p4; phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)&ip4_parm, min(plen, sizeof(ip4_parm))); + (struct sctp_paramhdr *)&ip4_param, sizeof(ip4_param)); if (phdr == NULL) { return (NULL); } @@ -2466,10 +2427,10 @@ sctp_findassociation_special_addr(struct mbuf *m, int offset, if (ptype == SCTP_IPV6_ADDRESS && plen == sizeof(struct sctp_ipv6addr_param)) { /* Get the rest of the address */ - struct sctp_ipv6addr_param ip6_parm, *p6; + struct sctp_ipv6addr_param ip6_param, *p6; phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)&ip6_parm, min(plen,sizeof(ip6_parm))); + (struct sctp_paramhdr *)&ip6_param, sizeof(ip6_param)); if (phdr == NULL) { return (NULL); } @@ -2484,8 +2445,8 @@ sctp_findassociation_special_addr(struct mbuf *m, int offset, } #endif offset += SCTP_SIZE32(plen); - phdr = sctp_get_next_param(m, offset, &parm_buf, - sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, + sizeof(param_buf)); } return (NULL); } @@ -2597,7 +2558,6 @@ sctp_findassoc_by_vtag(struct sockaddr *from, struct sockaddr *to, uint32_t vtag return (NULL); } - /* * Find an association with the pointer to the inbound IP packet. This can be * a IPv4 or IPv6 packet. @@ -2608,7 +2568,6 @@ sctp_findassociation_addr(struct mbuf *m, int offset, struct sctphdr *sh, struct sctp_chunkhdr *ch, struct sctp_inpcb **inp_p, struct sctp_nets **netp, uint32_t vrf_id) { - int find_tcp_pool; struct sctp_tcb *stcb; struct sctp_inpcb *inp; @@ -2621,21 +2580,13 @@ sctp_findassociation_addr(struct mbuf *m, int offset, } } - find_tcp_pool = 0; - if ((ch->chunk_type != SCTP_INITIATION) && - (ch->chunk_type != SCTP_INITIATION_ACK) && - (ch->chunk_type != SCTP_COOKIE_ACK) && - (ch->chunk_type != SCTP_COOKIE_ECHO)) { - /* Other chunk types go to the tcp pool. */ - find_tcp_pool = 1; - } if (inp_p) { stcb = sctp_findassociation_addr_sa(src, dst, inp_p, netp, - find_tcp_pool, vrf_id); + 1, vrf_id); inp = *inp_p; } else { stcb = sctp_findassociation_addr_sa(src, dst, &inp, netp, - find_tcp_pool, vrf_id); + 1, vrf_id); } SCTPDBG(SCTP_DEBUG_PCB1, "stcb:%p inp:%p\n", (void *)stcb, (void *)inp); if (stcb == NULL && inp) { @@ -2678,7 +2629,7 @@ sctp_findassociation_ep_asconf(struct mbuf *m, int offset, { struct sctp_tcb *stcb; union sctp_sockstore remote_store; - struct sctp_paramhdr parm_buf, *phdr; + struct sctp_paramhdr param_buf, *phdr; int ptype; int zero_address = 0; #ifdef INET @@ -2690,10 +2641,10 @@ sctp_findassociation_ep_asconf(struct mbuf *m, int offset, memset(&remote_store, 0, sizeof(remote_store)); phdr = sctp_get_next_param(m, offset + sizeof(struct sctp_asconf_chunk), - &parm_buf, sizeof(struct sctp_paramhdr)); + ¶m_buf, sizeof(struct sctp_paramhdr)); if (phdr == NULL) { SCTPDBG(SCTP_DEBUG_INPUT3, "%s: failed to get asconf lookup addr\n", - __FUNCTION__); + __func__); return NULL; } ptype = (int)((uint32_t) ntohs(phdr->param_type)); @@ -2710,10 +2661,10 @@ sctp_findassociation_ep_asconf(struct mbuf *m, int offset, } p6 = (struct sctp_ipv6addr_param *)sctp_get_next_param(m, offset + sizeof(struct sctp_asconf_chunk), - &p6_buf.ph, sizeof(*p6)); + &p6_buf.ph, sizeof(p6_buf)); if (p6 == NULL) { SCTPDBG(SCTP_DEBUG_INPUT3, "%s: failed to get asconf v6 lookup addr\n", - __FUNCTION__); + __func__); return (NULL); } sin6 = &remote_store.sin6; @@ -2739,10 +2690,10 @@ sctp_findassociation_ep_asconf(struct mbuf *m, int offset, } p4 = (struct sctp_ipv4addr_param *)sctp_get_next_param(m, offset + sizeof(struct sctp_asconf_chunk), - &p4_buf.ph, sizeof(*p4)); + &p4_buf.ph, sizeof(p4_buf)); if (p4 == NULL) { SCTPDBG(SCTP_DEBUG_INPUT3, "%s: failed to get asconf v4 lookup addr\n", - __FUNCTION__); + __func__); return (NULL); } sin = &remote_store.sin; @@ -2776,7 +2727,6 @@ sctp_findassociation_ep_asconf(struct mbuf *m, int offset, return (stcb); } - /* * allocate a sctp_inpcb and setup a temporary binding to a port/all * addresses. This way if we don't get a bind we by default pick a ephemeral @@ -2810,20 +2760,20 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) return (ENOBUFS); } /* zap it */ - bzero(inp, sizeof(*inp)); + memset(inp, 0, sizeof(*inp)); /* bump generations */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) inp->ip_inp.inp.inp_state = INPCB_STATE_INUSE; #endif /* setup socket pointers */ inp->sctp_socket = so; inp->ip_inp.inp.inp_socket = so; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) inp->ip_inp.inp.inp_cred = crhold(so->so_cred); #endif #ifdef INET6 -#if !defined(__Userspace__) && !defined(__Windows__) +#if !defined(__Userspace__) && !defined(_WIN32) if (INP_SOCKAF(so) == AF_INET6) { if (MODULE_GLOBAL(ip6_auto_flowlabel)) { inp->ip_inp.inp.inp_flags |= IN6P_AUTOFLOWLABEL; @@ -2836,7 +2786,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) #endif inp->sctp_associd_counter = 1; inp->partial_delivery_point = SCTP_SB_LIMIT_RCV(so) >> SCTP_PARTIAL_DELIVERY_SHIFT; - inp->sctp_frag_point = SCTP_DEFAULT_MAXSEGMENT; + inp->sctp_frag_point = 0; inp->max_cwnd = 0; inp->sctp_cmt_on_off = SCTP_BASE_SYSCTL(sctp_cmt_on_off); inp->ecn_supported = (uint8_t)SCTP_BASE_SYSCTL(sctp_ecn_enable); @@ -2846,6 +2796,14 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) inp->reconfig_supported = (uint8_t)SCTP_BASE_SYSCTL(sctp_reconfig_enable); inp->nrsack_supported = (uint8_t)SCTP_BASE_SYSCTL(sctp_nrsack_enable); inp->pktdrop_supported = (uint8_t)SCTP_BASE_SYSCTL(sctp_pktdrop_enable); + inp->idata_supported = 0; + inp->zero_checksum = 0; + +#if defined(__FreeBSD__) && !defined(__Userspace__) + inp->fibnum = so->so_fibnum; +#else + inp->fibnum = 0; +#endif #if defined(__Userspace__) inp->ulp_info = NULL; inp->recv_callback = NULL; @@ -2855,48 +2813,20 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) /* init the small hash table we use to track asocid <-> tcb */ inp->sctp_asocidhash = SCTP_HASH_INIT(SCTP_STACK_VTAG_HASH_SIZE, &inp->hashasocidmark); if (inp->sctp_asocidhash == NULL) { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) crfree(inp->ip_inp.inp.inp_cred); #endif SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); SCTP_INP_INFO_WUNLOCK(); return (ENOBUFS); } -#ifdef IPSEC -#if !(defined(__APPLE__)) - { - struct inpcbpolicy *pcb_sp = NULL; - - error = ipsec_init_policy(so, &pcb_sp); - /* Arrange to share the policy */ - inp->ip_inp.inp.inp_sp = pcb_sp; - ((struct in6pcb *)(&inp->ip_inp.inp))->in6p_sp = pcb_sp; - } -#else - /* not sure what to do for openbsd here */ - error = 0; -#endif - if (error != 0) { -#if defined(__FreeBSD__) - crfree(inp->ip_inp.inp.inp_cred); -#endif - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); - SCTP_INP_INFO_WUNLOCK(); - return error; - } -#endif /* IPSEC */ SCTP_INCR_EP_COUNT(); inp->ip_inp.inp.inp_ip_ttl = MODULE_GLOBAL(ip_defttl); SCTP_INP_INFO_WUNLOCK(); so->so_pcb = (caddr_t)inp; -#if defined(__FreeBSD__) && __FreeBSD_version < 803000 - if ((SCTP_SO_TYPE(so) == SOCK_DGRAM) || - (SCTP_SO_TYPE(so) == SOCK_SEQPACKET)) { -#else if (SCTP_SO_TYPE(so) == SOCK_SEQPACKET) { -#endif /* UDP style socket */ inp->sctp_flags = (SCTP_PCB_FLAGS_UDPTYPE | SCTP_PCB_FLAGS_UNBOUND); @@ -2907,17 +2837,9 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) inp->sctp_flags = (SCTP_PCB_FLAGS_TCPTYPE | SCTP_PCB_FLAGS_UNBOUND); /* Be sure we have blocking IO by default */ + SOCK_LOCK(so); SCTP_CLEAR_SO_NBIO(so); -#if defined(__Panda__) - } else if (SCTP_SO_TYPE(so) == SOCK_FASTSEQPACKET) { - inp->sctp_flags = (SCTP_PCB_FLAGS_UDPTYPE | - SCTP_PCB_FLAGS_UNBOUND); - sctp_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE); - } else if (SCTP_SO_TYPE(so) == SOCK_FASTSTREAM) { - inp->sctp_flags = (SCTP_PCB_FLAGS_TCPTYPE | - SCTP_PCB_FLAGS_UNBOUND); - sctp_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE); -#endif + SOCK_UNLOCK(so); } else { /* * unsupported socket type (RAW, etc)- in case we missed it @@ -2925,7 +2847,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) */ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EOPNOTSUPP); so->so_pcb = NULL; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) crfree(inp->ip_inp.inp.inp_cred); #endif SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); @@ -2947,7 +2869,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) SCTP_PRINTF("Out of SCTP-INPCB->hashinit - no resources\n"); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOBUFS); so->so_pcb = NULL; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) crfree(inp->ip_inp.inp.inp_cred); #endif SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); @@ -2961,7 +2883,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOBUFS); so->so_pcb = NULL; SCTP_HASH_FREE(inp->sctp_tcbhash, inp->sctp_hashmark); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) crfree(inp->ip_inp.inp.inp_cred); #endif SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); @@ -2972,7 +2894,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) #endif inp->def_vrf_id = vrf_id; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) inp->ip_inp.inp.inpcb_mtx = lck_mtx_alloc_init(SCTP_BASE_INFO(sctbinfo).mtx_grp, SCTP_BASE_INFO(sctbinfo).mtx_attr); if (inp->ip_inp.inp.inpcb_mtx == NULL) { @@ -2982,9 +2904,6 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) #endif SCTP_HASH_FREE(inp->sctp_tcbhash, inp->sctp_hashmark); so->so_pcb = NULL; -#if defined(__FreeBSD__) - crfree(inp->ip_inp.inp.inp_cred); -#endif SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); SCTP_UNLOCK_EXC(SCTP_BASE_INFO(sctbinfo).ipi_lock); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOMEM); @@ -2998,8 +2917,9 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) #endif SCTP_INP_INFO_WLOCK(); SCTP_INP_LOCK_INIT(inp); -#if defined(__FreeBSD__) - INP_LOCK_INIT(&inp->ip_inp.inp, "inp", "sctpinp"); +#if defined(__FreeBSD__) && !defined(__Userspace__) + rw_init_flags(&inp->ip_inp.inp.inp_lock, "sctpinp", + RW_RECURSE | RW_DUPOK); #endif SCTP_INP_READ_INIT(inp); SCTP_ASOC_CREATE_LOCK_INIT(inp); @@ -3008,7 +2928,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) /* add it to the info area */ LIST_INSERT_HEAD(&SCTP_BASE_INFO(listhead), inp, sctp_list); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) inp->ip_inp.inp.inp_pcbinfo = &SCTP_BASE_INFO(sctbinfo); #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) || defined(APPLE_LION) || defined(APPLE_MOUNTAINLION) LIST_INSERT_HEAD(SCTP_BASE_INFO(sctbinfo).listhead, &inp->ip_inp.inp, inp_list); @@ -3035,13 +2955,13 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) m = &inp->sctp_ep; /* setup the base timeout information */ - m->sctp_timeoutticks[SCTP_TIMER_SEND] = SEC_TO_TICKS(SCTP_SEND_SEC); /* needed ? */ - m->sctp_timeoutticks[SCTP_TIMER_INIT] = SEC_TO_TICKS(SCTP_INIT_SEC); /* needed ? */ - m->sctp_timeoutticks[SCTP_TIMER_RECV] = MSEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default)); - m->sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = MSEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_heartbeat_interval_default)); - m->sctp_timeoutticks[SCTP_TIMER_PMTU] = SEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_pmtu_raise_time_default)); - m->sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN] = SEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_shutdown_guard_time_default)); - m->sctp_timeoutticks[SCTP_TIMER_SIGNATURE] = SEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_secret_lifetime_default)); + m->sctp_timeoutticks[SCTP_TIMER_SEND] = sctp_secs_to_ticks(SCTP_SEND_SEC); /* needed ? */ + m->sctp_timeoutticks[SCTP_TIMER_INIT] = sctp_secs_to_ticks(SCTP_INIT_SEC); /* needed ? */ + m->sctp_timeoutticks[SCTP_TIMER_RECV] = sctp_msecs_to_ticks(SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default)); + m->sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = sctp_msecs_to_ticks(SCTP_BASE_SYSCTL(sctp_heartbeat_interval_default)); + m->sctp_timeoutticks[SCTP_TIMER_PMTU] = sctp_secs_to_ticks(SCTP_BASE_SYSCTL(sctp_pmtu_raise_time_default)); + m->sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN] = sctp_secs_to_ticks(SCTP_BASE_SYSCTL(sctp_shutdown_guard_time_default)); + m->sctp_timeoutticks[SCTP_TIMER_SIGNATURE] = sctp_secs_to_ticks(SCTP_BASE_SYSCTL(sctp_secret_lifetime_default)); /* all max/min max are in ms */ m->sctp_maxrto = SCTP_BASE_SYSCTL(sctp_rto_max_default); m->sctp_minrto = SCTP_BASE_SYSCTL(sctp_rto_min_default); @@ -3063,6 +2983,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) /* number of streams to pre-open on a association */ m->pre_open_stream_count = SCTP_BASE_SYSCTL(sctp_nr_outgoing_streams_default); + m->default_mtu = 0; /* Add adaptation cookie */ m->adaptation_layer_indicator = 0; m->adaptation_layer_indicator_provided = 0; @@ -3080,7 +3001,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) /* Setup the initial secret */ (void)SCTP_GETTIME_TIMEVAL(&time); - m->time_of_secret_change = time.tv_sec; + m->time_of_secret_change = (unsigned int)time.tv_sec; for (i = 0; i < SCTP_NUMBER_OF_SECRETS; i++) { m->secret_key[0][i] = sctp_select_initial_TSN(m); @@ -3088,7 +3009,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) sctp_timer_start(SCTP_TIMER_TYPE_NEWCOOKIE, inp, NULL, NULL); /* How long is a cookie good for ? */ - m->def_cookie_life = MSEC_TO_TICKS(SCTP_BASE_SYSCTL(sctp_valid_cookie_life_default)); + m->def_cookie_life = sctp_msecs_to_ticks(SCTP_BASE_SYSCTL(sctp_valid_cookie_life_default)); /* * Initialize authentication parameters */ @@ -3114,7 +3035,6 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) return (error); } - void sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, struct sctp_tcb *stcb) @@ -3132,6 +3052,25 @@ sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); +#if defined(__FreeBSD__) && !defined(__Userspace__) +#ifdef INET6 + if (old_inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { + new_inp->ip_inp.inp.inp_flags |= old_inp->ip_inp.inp.inp_flags & INP_CONTROLOPTS; + if (old_inp->ip_inp.inp.in6p_outputopts) { + new_inp->ip_inp.inp.in6p_outputopts = ip6_copypktopts(old_inp->ip_inp.inp.in6p_outputopts, M_NOWAIT); + } + } +#endif +#if defined(INET) && defined(INET6) + else +#endif +#ifdef INET + { + new_inp->ip_inp.inp.inp_ip_tos = old_inp->ip_inp.inp.inp_ip_tos; + new_inp->ip_inp.inp.inp_ip_ttl = old_inp->ip_inp.inp.inp_ip_ttl; + } +#endif +#endif new_inp->sctp_ep.time_of_secret_change = old_inp->sctp_ep.time_of_secret_change; memcpy(new_inp->sctp_ep.secret_key, old_inp->sctp_ep.secret_key, @@ -3200,7 +3139,7 @@ sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, continue; } SCTP_INCR_LADDR_COUNT(); - bzero(laddr, sizeof(*laddr)); + memset(laddr, 0, sizeof(*laddr)); (void)SCTP_GETTIME_TIMEVAL(&laddr->start_time); laddr->ifa = oladdr->ifa; atomic_add_int(&laddr->ifa->refcount, 1); @@ -3212,31 +3151,100 @@ sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, } } } - /* Now any running timers need to be adjusted - * since we really don't care if they are running - * or not just blast in the new_inp into all of - * them. - */ - - stcb->asoc.dack_timer.ep = (void *)new_inp; - stcb->asoc.asconf_timer.ep = (void *)new_inp; - stcb->asoc.strreset_timer.ep = (void *)new_inp; - stcb->asoc.shut_guard_timer.ep = (void *)new_inp; - stcb->asoc.autoclose_timer.ep = (void *)new_inp; - stcb->asoc.delayed_event_timer.ep = (void *)new_inp; - stcb->asoc.delete_prim_timer.ep = (void *)new_inp; + /* Now any running timers need to be adjusted. */ + if (stcb->asoc.dack_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.dack_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (stcb->asoc.asconf_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.asconf_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (stcb->asoc.strreset_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.strreset_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (stcb->asoc.shut_guard_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.shut_guard_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (stcb->asoc.autoclose_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.autoclose_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (stcb->asoc.delete_prim_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + stcb->asoc.delete_prim_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } /* now what about the nets? */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - net->pmtu_timer.ep = (void *)new_inp; - net->hb_timer.ep = (void *)new_inp; - net->rxt_timer.ep = (void *)new_inp; + if (net->pmtu_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + net->pmtu_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (net->hb_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + net->hb_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } + if (net->rxt_timer.ep == old_inp) { + SCTP_INP_DECR_REF(old_inp); + net->rxt_timer.ep = new_inp; + SCTP_INP_INCR_REF(new_inp); + } } SCTP_INP_WUNLOCK(new_inp); SCTP_INP_WUNLOCK(old_inp); } +/* + * insert an laddr entry with the given ifa for the desired list + */ +static int +sctp_insert_laddr(struct sctpladdr *list, struct sctp_ifa *ifa, uint32_t act) +{ + struct sctp_laddr *laddr; + + laddr = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_laddr), struct sctp_laddr); + if (laddr == NULL) { + /* out of memory? */ + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); + return (EINVAL); + } + SCTP_INCR_LADDR_COUNT(); + memset(laddr, 0, sizeof(*laddr)); + (void)SCTP_GETTIME_TIMEVAL(&laddr->start_time); + laddr->ifa = ifa; + laddr->action = act; + atomic_add_int(&ifa->refcount, 1); + /* insert it */ + LIST_INSERT_HEAD(list, laddr, sctp_nxt_addr); + + return (0); +} + +/* + * Remove an laddr entry from the local address list (on an assoc) + */ +static void +sctp_remove_laddr(struct sctp_laddr *laddr) +{ + /* remove from the list */ + LIST_REMOVE(laddr, sctp_nxt_addr); + sctp_free_ifa(laddr->ifa); + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_laddr), laddr); + SCTP_DECR_LADDR_COUNT(); +} #if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Userspace__)) + /* * Don't know why, but without this there is an unknown reference when * compiling NetBSD... hmm @@ -3244,24 +3252,28 @@ sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, extern void in6_sin6_2_sin(struct sockaddr_in *, struct sockaddr_in6 *sin6); #endif - -/* sctp_ifap is used to bypass normal local address validation checks */ +/* + * Bind the socket, with the PCB and global info locks held. Note, if a + * socket address is specified, the PCB lock may be dropped and re-acquired. + * + * sctp_ifap is used to bypass normal local address validation checks. + */ int -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, - struct sctp_ifa *sctp_ifap, struct thread *p) -#elif defined(__Windows__) -sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, - struct sctp_ifa *sctp_ifap, PKTHREAD p) +#if defined(__FreeBSD__) && !defined(__Userspace__) +sctp_inpcb_bind_locked(struct sctp_inpcb *inp, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, struct thread *td) +#elif defined(_WIN32) && !defined(__Userspace__) +sctp_inpcb_bind_locked(struct sctp_inpcb *inp, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, PKTHREAD p) #else -sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, - struct sctp_ifa *sctp_ifap, struct proc *p) +sctp_inpcb_bind_locked(struct sctp_inpcb *inp, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, struct proc *p) #endif { /* bind a ep to a socket address */ struct sctppcbhead *head; - struct sctp_inpcb *inp, *inp_tmp; -#if defined(INET) || (defined(INET6) && defined(__APPLE__)) || defined(__FreeBSD__) || defined(__APPLE__) + struct sctp_inpcb *inp_tmp; +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) struct inpcb *ip_inp; #endif int port_reuse_active = 0; @@ -3273,12 +3285,20 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, int error; uint32_t vrf_id; +#if defined(__FreeBSD__) && !defined(__Userspace__) + KASSERT(td != NULL, ("%s: null thread", __func__)); + +#endif + error = 0; lport = 0; bindall = 1; - inp = (struct sctp_inpcb *)so->so_pcb; -#if defined(INET) || (defined(INET6) && defined(__APPLE__)) || defined(__FreeBSD__) || defined(__APPLE__) - ip_inp = (struct inpcb *)so->so_pcb; +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) + ip_inp = &inp->ip_inp.inp; #endif + + SCTP_INP_INFO_WLOCK_ASSERT(); + SCTP_INP_WLOCK_ASSERT(inp); + #ifdef SCTP_DEBUG if (addr) { SCTPDBG(SCTP_DEBUG_PCB1, "Bind called port: %d\n", @@ -3288,16 +3308,11 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, } #endif if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == 0) { + error = EINVAL; /* already did a bind, subsequent binds NOT allowed ! */ - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -#ifdef INVARIANTS - if (p == NULL) - panic("null proc/thread"); -#endif -#endif if (addr != NULL) { switch (addr->sa_family) { #ifdef INET @@ -3306,27 +3321,29 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, struct sockaddr_in *sin; /* IPV6_V6ONLY socket? */ - if (SCTP_IPV6_V6ONLY(ip_inp)) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + if (SCTP_IPV6_V6ONLY(inp)) { + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #ifdef HAVE_SA_LEN if (addr->sa_len != sizeof(*sin)) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #endif sin = (struct sockaddr_in *)addr; lport = sin->sin_port; -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* * For LOOPBACK the prison_local_ip4() call will transmute the ip address * to the proper value. */ - if (p && (error = prison_local_ip4(p->td_ucred, &sin->sin_addr)) != 0) { + if ((error = prison_local_ip4(td->td_ucred, &sin->sin_addr)) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); - return (error); + goto out; } #endif if (sin->sin_addr.s_addr != INADDR_ANY) { @@ -3342,23 +3359,23 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, struct sockaddr_in6 *sin6; sin6 = (struct sockaddr_in6 *)addr; - #ifdef HAVE_SA_LEN if (addr->sa_len != sizeof(*sin6)) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #endif lport = sin6->sin6_port; -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) /* * For LOOPBACK the prison_local_ip6() call will transmute the ipv6 address * to the proper value. */ - if (p && (error = prison_local_ip6(p->td_ucred, &sin6->sin6_addr, + if ((error = prison_local_ip6(td->td_ucred, &sin6->sin6_addr, (SCTP_IPV6_V6ONLY(inp) != 0))) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); - return (error); + goto out; } #endif if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { @@ -3367,28 +3384,32 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, /* KAME hack: embed scopeid */ #if defined(SCTP_KAME) if (sa6_embedscope(sin6, MODULE_GLOBAL(ip6_use_defzone)) != 0) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) if (in6_embedscope(&sin6->sin6_addr, sin6, ip_inp, NULL) != 0) { #else if (in6_embedscope(&sin6->sin6_addr, sin6, ip_inp, NULL, NULL) != 0) { #endif - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) && !defined(__Userspace__) error = scope6_check_id(sin6, MODULE_GLOBAL(ip6_use_defzone)); if (error != 0) { + error = EINVAL; SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); - return (error); + goto out; } #else if (in6_embedscope(&sin6->sin6_addr, sin6) != 0) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #endif #endif /* SCTP_EMBEDDED_V6_SCOPE */ @@ -3407,8 +3428,9 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, #ifdef HAVE_SA_LEN if (addr->sa_len != sizeof(struct sockaddr_conn)) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #endif sconn = (struct sockaddr_conn *)addr; @@ -3420,58 +3442,36 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, } #endif default: - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EAFNOSUPPORT); - return (EAFNOSUPPORT); + error = EAFNOSUPPORT; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } } - SCTP_INP_INFO_WLOCK(); - SCTP_INP_WLOCK(inp); /* Setup a vrf_id to be the default for the non-bind-all case. */ vrf_id = inp->def_vrf_id; - /* increase our count due to the unlock we do */ - SCTP_INP_INCR_REF(inp); if (lport) { /* * Did the caller specify a port? if so we must see if an ep * already has this one bound. */ /* got to be root to get at low ports */ -#if !defined(__Windows__) - if (ntohs(lport) < IPPORT_RESERVED) { - if (p && (error = -#ifdef __FreeBSD__ -#if __FreeBSD_version > 602000 - priv_check(p, PRIV_NETINET_RESERVEDPORT) -#elif __FreeBSD_version >= 500000 - suser_cred(p->td_ucred, 0) +#if !(defined(_WIN32) && !defined(__Userspace__)) + if (ntohs(lport) < IPPORT_RESERVED && +#if defined(__FreeBSD__) && !defined(__Userspace__) + (error = priv_check(td, PRIV_NETINET_RESERVEDPORT)) != 0) { +#elif defined(__APPLE__) && !defined(__Userspace__) + (error = suser(p->p_ucred, &p->p_acflag)) != 0) { +#elif defined(__Userspace__) + /* TODO ensure uid is 0, etc... */ + 0) { #else - suser(p) -#endif -#elif defined(__APPLE__) - suser(p->p_ucred, &p->p_acflag) -#elif defined(__Userspace__) /* must be true to use raw socket */ - 1 -#else - suser(p, 0) -#endif - )) { - SCTP_INP_DECR_REF(inp); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - return (error); - } -#if defined(__Panda__) - if (!SCTP_IS_PRIVILEDGED(so)) { - SCTP_INP_DECR_REF(inp); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EACCES); - return (EACCES); - } + (error = suser(p, 0)) != 0) { #endif + goto out; } -#endif /* __Windows__ */ +#endif + SCTP_INP_INCR_REF(inp); SCTP_INP_WUNLOCK(inp); if (bindall) { #ifdef SCTP_MVRF @@ -3498,10 +3498,11 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, port_reuse_active = 1; goto continue_anyway; } + SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE); - return (EADDRINUSE); + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #ifdef SCTP_MVRF } @@ -3524,14 +3525,16 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, port_reuse_active = 1; goto continue_anyway; } + SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE); - return (EADDRINUSE); + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } } continue_anyway: SCTP_INP_WLOCK(inp); + SCTP_INP_DECR_REF(inp); if (bindall) { /* verify that no lport is not used by a singleton */ if ((port_reuse_active == 0) && @@ -3541,61 +3544,42 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, (sctp_is_feature_on(inp_tmp, SCTP_PCB_FLAGS_PORTREUSE))) { port_reuse_active = 1; } else { - SCTP_INP_DECR_REF(inp); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE); - return (EADDRINUSE); + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } } } } else { uint16_t first, last, candidate; uint16_t count; - int done; -#if defined(__Windows__) +#if defined(__Userspace__) + first = MODULE_GLOBAL(ipport_firstauto); + last = MODULE_GLOBAL(ipport_lastauto); +#elif defined(_WIN32) first = 1; last = 0xffff; -#else -#if defined(__Userspace__) - /* TODO ensure uid is 0, etc... */ #elif defined(__FreeBSD__) || defined(__APPLE__) if (ip_inp->inp_flags & INP_HIGHPORT) { first = MODULE_GLOBAL(ipport_hifirstauto); last = MODULE_GLOBAL(ipport_hilastauto); } else if (ip_inp->inp_flags & INP_LOWPORT) { - if (p && (error = -#ifdef __FreeBSD__ -#if __FreeBSD_version > 602000 - priv_check(p, PRIV_NETINET_RESERVEDPORT) -#elif __FreeBSD_version >= 500000 - suser_cred(p->td_ucred, 0) -#else - suser(p) -#endif -#elif defined(__APPLE__) - suser(p->p_ucred, &p->p_acflag) +#if defined(__FreeBSD__) + if ((error = priv_check(td, PRIV_NETINET_RESERVEDPORT)) != 0) { #else - suser(p, 0) + if ((error = suser(p->p_ucred, &p->p_acflag)) != 0) { #endif - )) { - SCTP_INP_DECR_REF(inp); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); - return (error); + goto out; } first = MODULE_GLOBAL(ipport_lowfirstauto); last = MODULE_GLOBAL(ipport_lowlastauto); } else { -#endif first = MODULE_GLOBAL(ipport_firstauto); last = MODULE_GLOBAL(ipport_lastauto); -#if defined(__FreeBSD__) || defined(__APPLE__) } #endif -#endif /* __Windows__ */ if (first > last) { uint16_t temp; @@ -3606,8 +3590,7 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, count = last - first + 1; /* number of candidates */ candidate = first + sctp_select_initial_TSN(&inp->sctp_ep) % (count); - done = 0; - while (!done) { + for (;;) { #ifdef SCTP_MVRF for (i = 0; i < inp->num_vrfs; i++) { if (sctp_isport_inuse(inp, htons(candidate), inp->m_vrf_ids[i]) != NULL) { @@ -3615,40 +3598,35 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, } } if (i == inp->num_vrfs) { - done = 1; + lport = htons(candidate); + break; } #else if (sctp_isport_inuse(inp, htons(candidate), inp->def_vrf_id) == NULL) { - done = 1; + lport = htons(candidate); + break; } #endif - if (!done) { - if (--count == 0) { - SCTP_INP_DECR_REF(inp); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE); - return (EADDRINUSE); - } - if (candidate == last) - candidate = first; - else - candidate = candidate + 1; + if (--count == 0) { + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } + if (candidate == last) + candidate = first; + else + candidate = candidate + 1; } - lport = htons(candidate); } - SCTP_INP_DECR_REF(inp); if (inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { /* * this really should not happen. The guy did a non-blocking * bind and then did a close at the same time. */ - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } /* ok we look clear to give out this port, so lets setup the binding */ if (bindall) { @@ -3734,27 +3712,25 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, } else { /* Note for BSD we hit here always other * O/S's will pass things in via the - * sctp_ifap argument (Panda). + * sctp_ifap argument. */ ifa = sctp_find_ifa_by_addr(&store.sa, vrf_id, SCTP_ADDR_NOT_LOCKED); } if (ifa == NULL) { + error = EADDRNOTAVAIL; /* Can't find an interface with that address */ - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRNOTAVAIL); - return (EADDRNOTAVAIL); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } #ifdef INET6 if (addr->sa_family == AF_INET6) { /* GAK, more FIXME IFA lock? */ if (ifa->localifa_flags & SCTP_ADDR_IFA_UNUSEABLE) { /* Can't bind a non-existent addr. */ - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, error); + goto out; } } #endif @@ -3767,11 +3743,8 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, /* add this address to the endpoint list */ error = sctp_insert_laddr(&inp->sctp_addr_list, ifa, 0); - if (error != 0) { - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - return (error); - } + if (error != 0) + goto out; inp->laddr_count++; } /* find the bucket */ @@ -3790,13 +3763,41 @@ sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, inp->sctp_lport = lport; /* turn off just the unbound flag */ + KASSERT((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) != 0, + ("%s: inp %p is already bound", __func__, inp)); inp->sctp_flags &= ~SCTP_PCB_FLAGS_UNBOUND; +out: + return (error); +} + +int +#if defined(__FreeBSD__) && !defined(__Userspace__) +sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, struct thread *td) +#elif defined(_WIN32) && !defined(__Userspace__) +sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, PKTHREAD p) +#else +sctp_inpcb_bind(struct socket *so, struct sockaddr *addr, + struct sctp_ifa *sctp_ifap, struct proc *p) +#endif +{ + struct sctp_inpcb *inp; + int error; + + inp = so->so_pcb; + SCTP_INP_INFO_WLOCK(); + SCTP_INP_WLOCK(inp); +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = sctp_inpcb_bind_locked(inp, addr, sctp_ifap, td); +#else + error = sctp_inpcb_bind_locked(inp, addr, sctp_ifap, p); +#endif SCTP_INP_WUNLOCK(inp); SCTP_INP_INFO_WUNLOCK(); - return (0); + return (error); } - static void sctp_iterator_inp_being_freed(struct sctp_inpcb *inp) { @@ -3807,7 +3808,7 @@ sctp_iterator_inp_being_freed(struct sctp_inpcb *inp) * lock on the inp_info stuff. */ it = sctp_it_ctl.cur_it; -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (it && (it->vn != curvnet)) { /* Its not looking at our VNET */ return; @@ -3838,7 +3839,7 @@ sctp_iterator_inp_being_freed(struct sctp_inpcb *inp) */ SCTP_IPI_ITERATOR_WQ_LOCK(); TAILQ_FOREACH_SAFE(it, &sctp_it_ctl.iteratorhead, sctp_nxt_itr, nit) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (it->vn != curvnet) { continue; } @@ -3878,22 +3879,21 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * freeing. a) Any local lists. b) Any associations. c) The hash of * all associations. d) finally the ep itself. */ - struct sctp_tcb *asoc, *nasoc; + struct sctp_tcb *stcb, *nstcb; struct sctp_laddr *laddr, *nladdr; struct inpcb *ip_pcb; struct socket *so; int being_refed = 0; struct sctp_queued_to_read *sq, *nsq; -#if !defined(__Panda__) && !defined(__Userspace__) -#if !defined(__FreeBSD__) || __FreeBSD_version < 500000 +#if !defined(__Userspace__) +#if !defined(__FreeBSD__) sctp_rtentry_t *rt; #endif #endif int cnt; sctp_sharedkey_t *shared_key, *nshared_key; - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sctp_lock_assert(SCTP_INP_SO(inp)); #endif #ifdef SCTP_LOG_CLOSING @@ -3903,30 +3903,25 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) /* mark any iterators on the list or being processed */ sctp_iterator_inp_being_freed(inp); SCTP_ITERATOR_UNLOCK(); - so = inp->sctp_socket; - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { - /* been here before.. eeks.. get out of here */ - SCTP_PRINTF("This conflict in free SHOULD not be happening! from %d, imm %d\n", from, immediate); -#ifdef SCTP_LOG_CLOSING - sctp_log_closing(inp, NULL, 1); -#endif - return; - } + SCTP_ASOC_CREATE_LOCK(inp); SCTP_INP_INFO_WLOCK(); - SCTP_INP_WLOCK(inp); + so = inp->sctp_socket; + KASSERT((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) != 0, + ("%s: inp %p still has socket", __func__, inp)); + KASSERT((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) == 0, + ("%s: double free of inp %p", __func__, inp)); if (from == SCTP_CALLED_AFTER_CMPSET_OFCLOSE) { inp->sctp_flags &= ~SCTP_PCB_FLAGS_CLOSE_IP; /* socket is gone, so no more wakeups allowed */ inp->sctp_flags |= SCTP_PCB_FLAGS_DONT_WAKE; inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEINPUT; inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEOUTPUT; - } /* First time through we have the socket lock, after that no more. */ sctp_timer_stop(SCTP_TIMER_TYPE_NEWCOOKIE, inp, NULL, NULL, - SCTP_FROM_SCTP_PCB+SCTP_LOC_1); + SCTP_FROM_SCTP_PCB + SCTP_LOC_1); if (inp->control) { sctp_m_freem(inp->control); @@ -3943,138 +3938,124 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) int cnt_in_sd; cnt_in_sd = 0; - LIST_FOREACH_SAFE(asoc, &inp->sctp_asoc_list, sctp_tcblist, nasoc) { - SCTP_TCB_LOCK(asoc); - if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + LIST_FOREACH_SAFE(stcb, &inp->sctp_asoc_list, sctp_tcblist, nstcb) { + SCTP_TCB_LOCK(stcb); + /* Disconnect the socket please. */ + stcb->sctp_socket = NULL; + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_CLOSED_SOCKET); + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { /* Skip guys being freed */ cnt_in_sd++; - if (asoc->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) { + if (stcb->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) { /* * Special case - we did not start a kill * timer on the asoc due to it was not * closed. So go ahead and start it now. */ - asoc->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE; - sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, asoc, NULL); + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE); + sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL); } - SCTP_TCB_UNLOCK(asoc); + SCTP_TCB_UNLOCK(stcb); continue; } - if (((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_COOKIE_ECHOED)) && - (asoc->asoc.total_output_queue_size == 0)) { + if (((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) && + (stcb->asoc.total_output_queue_size == 0)) { /* If we have data in queue, we don't want to just * free since the app may have done, send()/close * or connect/send/close. And it wants the data * to get across first. */ /* Just abandon things in the front states */ - if (sctp_free_assoc(inp, asoc, SCTP_PCBFREE_NOFORCE, - SCTP_FROM_SCTP_PCB+SCTP_LOC_2) == 0) { + if (sctp_free_assoc(inp, stcb, SCTP_PCBFREE_NOFORCE, + SCTP_FROM_SCTP_PCB + SCTP_LOC_2) == 0) { cnt_in_sd++; } continue; } - /* Disconnect the socket please */ - asoc->sctp_socket = NULL; - asoc->asoc.state |= SCTP_STATE_CLOSED_SOCKET; - if ((asoc->asoc.size_on_reasm_queue > 0) || - (asoc->asoc.control_pdapi) || - (asoc->asoc.size_on_all_streams > 0) || - (so && (so->so_rcv.sb_cc > 0))) { + if ((stcb->asoc.size_on_reasm_queue > 0) || + (stcb->asoc.control_pdapi) || + (stcb->asoc.size_on_all_streams > 0) || + ((so != NULL) && (SCTP_SBAVAIL(&so->so_rcv) > 0))) { /* Left with Data unread */ struct mbuf *op_err; op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - asoc->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB+SCTP_LOC_3; - sctp_send_abort_tcb(asoc, op_err, SCTP_SO_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB + SCTP_LOC_3; + sctp_send_abort_tcb(stcb, op_err, SCTP_SO_LOCKED); SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - if (sctp_free_assoc(inp, asoc, - SCTP_PCBFREE_NOFORCE, SCTP_FROM_SCTP_PCB+SCTP_LOC_4) == 0) { + if (sctp_free_assoc(inp, stcb, + SCTP_PCBFREE_NOFORCE, SCTP_FROM_SCTP_PCB + SCTP_LOC_4) == 0) { cnt_in_sd++; } continue; - } else if (TAILQ_EMPTY(&asoc->asoc.send_queue) && - TAILQ_EMPTY(&asoc->asoc.sent_queue) && - (asoc->asoc.stream_queue_cnt == 0)) { - if (asoc->asoc.locked_on_sending) { + } else if (TAILQ_EMPTY(&stcb->asoc.send_queue) && + TAILQ_EMPTY(&stcb->asoc.sent_queue) && + (stcb->asoc.stream_queue_cnt == 0)) { + if ((*stcb->asoc.ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, &stcb->asoc)) { goto abort_anyway; } - if ((SCTP_GET_STATE(&asoc->asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(&asoc->asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { struct sctp_nets *netp; /* * there is nothing queued to send, * so I send shutdown */ - if ((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(&asoc->asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(&asoc->asoc, SCTP_STATE_SHUTDOWN_PENDING); - sctp_stop_timers_for_shutdown(asoc); - if (asoc->asoc.alternate) { - netp = asoc->asoc.alternate; + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); + sctp_stop_timers_for_shutdown(stcb); + if (stcb->asoc.alternate) { + netp = stcb->asoc.alternate; } else { - netp = asoc->asoc.primary_destination; + netp = stcb->asoc.primary_destination; } - sctp_send_shutdown(asoc, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, asoc->sctp_ep, asoc, + sctp_send_shutdown(stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc, - asoc->asoc.primary_destination); - sctp_chunk_output(inp, asoc, SCTP_OUTPUT_FROM_SHUT_TMR, SCTP_SO_LOCKED); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL); + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SHUT_TMR, SCTP_SO_LOCKED); } } else { /* mark into shutdown pending */ - struct sctp_stream_queue_pending *sp; - - asoc->asoc.state |= SCTP_STATE_SHUTDOWN_PENDING; - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc, - asoc->asoc.primary_destination); - if (asoc->asoc.locked_on_sending) { - sp = TAILQ_LAST(&((asoc->asoc.locked_on_sending)->outqueue), - sctp_streamhead); - if (sp == NULL) { - SCTP_PRINTF("Error, sp is NULL, locked on sending is %p strm:%d\n", - (void *)asoc->asoc.locked_on_sending, - asoc->asoc.locked_on_sending->stream_no); - } else { - if ((sp->length == 0) && (sp->msg_is_complete == 0)) - asoc->asoc.state |= SCTP_STATE_PARTIAL_MSG_LEFT; - } + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL); + if ((*stcb->asoc.ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, &stcb->asoc)) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); } - if (TAILQ_EMPTY(&asoc->asoc.send_queue) && - TAILQ_EMPTY(&asoc->asoc.sent_queue) && - (asoc->asoc.state & SCTP_STATE_PARTIAL_MSG_LEFT)) { + if (TAILQ_EMPTY(&stcb->asoc.send_queue) && + TAILQ_EMPTY(&stcb->asoc.sent_queue) && + (stcb->asoc.state & SCTP_STATE_PARTIAL_MSG_LEFT)) { struct mbuf *op_err; abort_anyway: op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - asoc->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB+SCTP_LOC_5; - sctp_send_abort_tcb(asoc, op_err, SCTP_SO_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB + SCTP_LOC_5; + sctp_send_abort_tcb(stcb, op_err, SCTP_SO_LOCKED); SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - if (sctp_free_assoc(inp, asoc, + if (sctp_free_assoc(inp, stcb, SCTP_PCBFREE_NOFORCE, - SCTP_FROM_SCTP_PCB+SCTP_LOC_6) == 0) { + SCTP_FROM_SCTP_PCB + SCTP_LOC_6) == 0) { cnt_in_sd++; } continue; } else { - sctp_chunk_output(inp, asoc, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); } } cnt_in_sd++; - SCTP_TCB_UNLOCK(asoc); + SCTP_TCB_UNLOCK(stcb); } /* now is there some left in our SHUTDOWN state? */ if (cnt_in_sd) { @@ -4089,8 +4070,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) } } inp->sctp_socket = NULL; - if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) != - SCTP_PCB_FLAGS_UNBOUND) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == 0) { /* * ok, this guy has been bound. It's port is * somewhere in the SCTP_BASE_INFO(hash table). Remove @@ -4106,42 +4086,47 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * to die ... */ cnt = 0; - LIST_FOREACH_SAFE(asoc, &inp->sctp_asoc_list, sctp_tcblist, nasoc) { - SCTP_TCB_LOCK(asoc); - if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - if (asoc->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) { - asoc->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE; - sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, asoc, NULL); - } - cnt++; - SCTP_TCB_UNLOCK(asoc); + LIST_FOREACH_SAFE(stcb, &inp->sctp_asoc_list, sctp_tcblist, nstcb) { + SCTP_TCB_LOCK(stcb); + if (immediate != SCTP_FREE_SHOULD_USE_GRACEFUL_CLOSE) { + /* Disconnect the socket please */ + stcb->sctp_socket = NULL; + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_CLOSED_SOCKET); + } + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + if (stcb->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) { + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE); + sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL); + } + cnt++; + SCTP_TCB_UNLOCK(stcb); continue; } /* Free associations that are NOT killing us */ - if ((SCTP_GET_STATE(&asoc->asoc) != SCTP_STATE_COOKIE_WAIT) && - ((asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) && + ((stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0)) { struct mbuf *op_err; op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - asoc->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB+SCTP_LOC_7; - sctp_send_abort_tcb(asoc, op_err, SCTP_SO_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_PCB + SCTP_LOC_7; + sctp_send_abort_tcb(stcb, op_err, SCTP_SO_LOCKED); SCTP_STAT_INCR_COUNTER32(sctps_aborted); - } else if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + } else if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { cnt++; - SCTP_TCB_UNLOCK(asoc); + SCTP_TCB_UNLOCK(stcb); continue; } - if ((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - if (sctp_free_assoc(inp, asoc, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_PCB+SCTP_LOC_8) == 0) { + if (sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, + SCTP_FROM_SCTP_PCB + SCTP_LOC_8) == 0) { cnt++; } } if (cnt) { /* Ok we have someone out there that will kill us */ - (void)SCTP_OS_TIMER_STOP(&inp->sctp_ep.signature_change.timer); #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 3); #endif @@ -4156,11 +4141,10 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) being_refed++; if (SCTP_ASOC_CREATE_LOCK_CONTENDED(inp)) being_refed++; - + /* NOTE: 0 refcount also means no timers are referencing us. */ if ((inp->refcount) || (being_refed) || (inp->sctp_flags & SCTP_PCB_FLAGS_CLOSE_IP)) { - (void)SCTP_OS_TIMER_STOP(&inp->sctp_ep.signature_change.timer); #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 4); #endif @@ -4179,41 +4163,14 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) SCTP_INP_WUNLOCK(inp); SCTP_ASOC_CREATE_UNLOCK(inp); SCTP_INP_INFO_WUNLOCK(); - /* Now we release all locks. Since this INP - * cannot be found anymore except possibly by the - * kill timer that might be running. We call - * the drain function here. It should hit the case - * were it sees the ACTIVE flag cleared and exit - * out freeing us to proceed and destroy everything. - */ - if (from != SCTP_CALLED_FROM_INPKILL_TIMER) { - (void)SCTP_OS_TIMER_STOP_DRAIN(&inp->sctp_ep.signature_change.timer); - } else { - /* Probably un-needed */ - (void)SCTP_OS_TIMER_STOP(&inp->sctp_ep.signature_change.timer); - } #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 5); #endif - -#if !(defined(__Panda__) || defined(__Windows__) || defined(__Userspace__)) -#if !defined(__FreeBSD__) || __FreeBSD_version < 500000 +#if !(defined(_WIN32) || defined(__Userspace__)) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) rt = ip_pcb->inp_route.ro_rt; #endif -#endif - -#if defined(__Panda__) - if (inp->pak_to_read) { - (void)SCTP_OS_TIMER_STOP(&inp->sctp_ep.zero_copy_timer.timer); - SCTP_RELEASE_PKT(inp->pak_to_read); - inp->pak_to_read = NULL; - } - if (inp->pak_to_read_sendq) { - (void)SCTP_OS_TIMER_STOP(&inp->sctp_ep.zero_copy_sendq_timer.timer); - SCTP_RELEASE_PKT(inp->pak_to_read_sendq); - inp->pak_to_read_sendq = NULL; - } #endif if ((inp->sctp_asocidhash) != NULL) { SCTP_HASH_FREE(inp->sctp_asocidhash, inp->hashasocidmark); @@ -4237,8 +4194,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * no need to free the net count, since at this point all * assoc's are gone. */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(NULL, sq); } /* Now the sctp_pcb things */ /* @@ -4246,56 +4202,30 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * macro here since le_next will get freed as part of the * sctp_free_assoc() call. */ - if (so) { -#ifdef IPSEC - ipsec_delete_pcbpolicy(ip_pcb); -#endif /* IPSEC */ - - /* Unlocks not needed since the socket is gone now */ - } -#ifndef __Panda__ if (ip_pcb->inp_options) { (void)sctp_m_free(ip_pcb->inp_options); ip_pcb->inp_options = 0; } -#endif - -#if !(defined(__Panda__) || defined(__Windows__) || defined(__Userspace__)) -#if !defined(__FreeBSD__) || __FreeBSD_version < 500000 +#if !(defined(_WIN32) || defined(__Userspace__)) +#if !defined(__FreeBSD__) if (rt) { RTFREE(rt); ip_pcb->inp_route.ro_rt = 0; } #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 803000 -#ifdef INET - if (ip_pcb->inp_moptions) { - inp_freemoptions(ip_pcb->inp_moptions); - ip_pcb->inp_moptions = 0; - } -#endif -#endif #endif - #ifdef INET6 -#if !(defined(__Panda__) || defined(__Windows__) || defined(__Userspace__)) -#if defined(__FreeBSD__) || defined(__APPLE__) +#if !(defined(_WIN32) || defined(__Userspace__)) +#if (defined(__FreeBSD__) || defined(__APPLE__) && !defined(__Userspace__)) if (ip_pcb->inp_vflag & INP_IPV6) { #else if (inp->inp_vflag & INP_IPV6) { #endif - struct in6pcb *in6p; - - in6p = (struct in6pcb *)inp; - ip6_freepcbopts(in6p->in6p_outputopts); + ip6_freepcbopts(ip_pcb->in6p_outputopts); } #endif #endif /* INET6 */ -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag = 0; -#else ip_pcb->inp_vflag = 0; -#endif /* free up authentication fields */ if (inp->sctp_ep.local_auth_chunks != NULL) sctp_free_chunklist(inp->sctp_ep.local_auth_chunks); @@ -4308,11 +4238,11 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) /*sa_ignore FREED_MEMORY*/ } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) inp->ip_inp.inp.inp_state = INPCB_STATE_DEAD; if (in_pcb_checkstate(&inp->ip_inp.inp, WNT_STOPUSING, 1) != WNT_STOPUSING) { #ifdef INVARIANTS - panic("sctp_inpcb_free inp = %p couldn't set to STOPUSING\n", (void *)inp); + panic("sctp_inpcb_free inp = %p couldn't set to STOPUSING", (void *)inp); #else SCTP_PRINTF("sctp_inpcb_free inp = %p couldn't set to STOPUSING\n", (void *)inp); #endif @@ -4330,9 +4260,9 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) #ifdef SCTP_TRACK_FREED_ASOCS /* TEMP CODE */ - LIST_FOREACH_SAFE(asoc, &inp->sctp_asoc_free_list, sctp_tcblist, nasoc) { - LIST_REMOVE(asoc, sctp_tcblist); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), asoc); + LIST_FOREACH_SAFE(stcb, &inp->sctp_asoc_free_list, sctp_tcblist, nstcb) { + LIST_REMOVE(stcb, sctp_tcblist); + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); SCTP_DECR_ASOC_COUNT(); } /* *** END TEMP CODE ****/ @@ -4346,14 +4276,14 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) inp->sctp_tcbhash = NULL; } /* Now we must put the ep memory back into the zone pool */ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) crfree(inp->ip_inp.inp.inp_cred); INP_LOCK_DESTROY(&inp->ip_inp.inp); #endif SCTP_INP_LOCK_DESTROY(inp); SCTP_INP_READ_DESTROY(inp); SCTP_ASOC_CREATE_LOCK_DESTROY(inp); -#if !defined(__APPLE__) +#if !(defined(__APPLE__) && !defined(__Userspace__)) SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_ep), inp); SCTP_DECR_EP_COUNT(); #else @@ -4361,7 +4291,6 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) #endif } - struct sctp_nets * sctp_findnet(struct sctp_tcb *stcb, struct sockaddr *addr) { @@ -4374,13 +4303,9 @@ sctp_findnet(struct sctp_tcb *stcb, struct sockaddr *addr) return (NULL); } - int sctp_is_address_on_local_host(struct sockaddr *addr, uint32_t vrf_id) { -#ifdef __Panda__ - return (0); -#else struct sctp_ifa *sctp_ifa; sctp_ifa = sctp_find_ifa_by_addr(addr, vrf_id, SCTP_ADDR_NOT_LOCKED); if (sctp_ifa) { @@ -4388,7 +4313,6 @@ sctp_is_address_on_local_host(struct sockaddr *addr, uint32_t vrf_id) } else { return (0); } -#endif } /* @@ -4398,7 +4322,7 @@ sctp_is_address_on_local_host(struct sockaddr *addr, uint32_t vrf_id) */ int sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, - struct sctp_nets **netp, int set_scope, int from) + struct sctp_nets **netp, uint16_t port, int set_scope, int from) { /* * The following is redundant to the same lines in the @@ -4445,7 +4369,7 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, /* Invalid address */ return (-1); } - /* zero out the bzero area */ + /* zero out the zero area */ memset(&sin->sin_zero, 0, sizeof(sin->sin_zero)); /* assure len is set */ @@ -4453,13 +4377,9 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, sin->sin_len = sizeof(struct sockaddr_in); #endif if (set_scope) { -#ifdef SCTP_DONT_DO_PRIVADDR_SCOPE - stcb->asoc.scope.ipv4_local_scope = 1; -#else if (IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)) { stcb->asoc.scope.ipv4_local_scope = 1; } -#endif /* SCTP_DONT_DO_PRIVADDR_SCOPE */ } else { /* Validate the address is in scope */ if ((IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)) && @@ -4549,7 +4469,7 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, return (-1); } SCTP_INCR_RADDR_COUNT(); - bzero(net, sizeof(struct sctp_nets)); + memset(net, 0, sizeof(struct sctp_nets)); (void)SCTP_GETTIME_TIMEVAL(&net->start_time); #ifdef HAVE_SA_LEN memcpy(&net->ro._l_addr, newaddr, newaddr->sa_len); @@ -4612,7 +4532,7 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, stcb->asoc.numnets++; net->ref_count = 1; net->cwr_window_tsn = net->last_cwr_tsn = stcb->asoc.sending_seq - 1; - net->port = stcb->asoc.port; + net->port = port; net->dscp = stcb->asoc.default_dscp; #ifdef INET6 net->flowlabel = stcb->asoc.default_flowlabel; @@ -4641,7 +4561,7 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, struct sockaddr_in6 *sin6; sin6 = (struct sockaddr_in6 *)&net->ro._l_addr; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) (void)in6_embedscope(&sin6->sin6_addr, sin6, &stcb->sctp_ep->ip_inp.inp, NULL); #else @@ -4658,67 +4578,127 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, } #endif /* SCTP_EMBEDDED_V6_SCOPE */ #endif - SCTP_RTALLOC((sctp_route_t *)&net->ro, stcb->asoc.vrf_id); + SCTP_RTALLOC((sctp_route_t *)&net->ro, + stcb->asoc.vrf_id, + stcb->sctp_ep->fibnum); -#if defined(__Userspace__) net->src_addr_selected = 0; -#else +#if !defined(__Userspace__) if (SCTP_ROUTE_HAS_VALID_IFN(&net->ro)) { /* Get source address */ net->ro._s_addr = sctp_source_address_selection(stcb->sctp_ep, - stcb, - (sctp_route_t *)&net->ro, - net, - 0, - stcb->asoc.vrf_id); - if (net->ro._s_addr != NULL) { + stcb, + (sctp_route_t *)&net->ro, + net, + 0, + stcb->asoc.vrf_id); + if (stcb->asoc.default_mtu > 0) { + net->mtu = stcb->asoc.default_mtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + net->mtu += sizeof(struct sctphdr); + break; +#endif + default: + break; + } +#if defined(INET) || defined(INET6) + if (net->port) { + net->mtu += (uint32_t)sizeof(struct udphdr); + } +#endif + } else if (net->ro._s_addr != NULL) { + uint32_t imtu, rmtu, hcmtu; + net->src_addr_selected = 1; /* Now get the interface MTU */ if (net->ro._s_addr->ifn_p != NULL) { - net->mtu = SCTP_GATHER_MTU_FROM_INTFC(net->ro._s_addr->ifn_p); + /* + * XXX: Should we here just use + * net->ro._s_addr->ifn_p->ifn_mtu + */ + imtu = SCTP_GATHER_MTU_FROM_IFN_INFO(net->ro._s_addr->ifn_p->ifn_p, + net->ro._s_addr->ifn_p->ifn_index); + } else { + imtu = 0; } - } else { - net->src_addr_selected = 0; - } - if (net->mtu > 0) { - uint32_t rmtu; - +#if defined(__FreeBSD__) && !defined(__Userspace__) + rmtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, net->ro.ro_nh); + hcmtu = sctp_hc_get_mtu(&net->ro._l_addr, stcb->sctp_ep->fibnum); +#else rmtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, net->ro.ro_rt); + hcmtu = 0; +#endif + net->mtu = sctp_min_mtu(hcmtu, rmtu, imtu); +#if defined(__FreeBSD__) && !defined(__Userspace__) +#else if (rmtu == 0) { /* Start things off to match mtu of interface please. */ SCTP_SET_MTU_OF_ROUTE(&net->ro._l_addr.sa, - net->ro.ro_rt, net->mtu); - } else { - /* we take the route mtu over the interface, since - * the route may be leading out the loopback, or - * a different interface. - */ - net->mtu = rmtu; + net->ro.ro_rt, net->mtu); } +#endif } - } else { - net->src_addr_selected = 0; } #endif if (net->mtu == 0) { - switch (newaddr->sa_family) { + if (stcb->asoc.default_mtu > 0) { + net->mtu = stcb->asoc.default_mtu; + switch (net->ro._l_addr.sa.sa_family) { #ifdef INET - case AF_INET: - net->mtu = SCTP_DEFAULT_MTU; - break; + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; #endif #ifdef INET6 - case AF_INET6: - net->mtu = 1280; - break; + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; #endif #if defined(__Userspace__) - case AF_CONN: - net->mtu = 1280; - break; + case AF_CONN: + net->mtu += sizeof(struct sctphdr); + break; #endif - default: - break; + default: + break; + } +#if defined(INET) || defined(INET6) + if (net->port) { + net->mtu += (uint32_t)sizeof(struct udphdr); + } +#endif + } else { + switch (newaddr->sa_family) { +#ifdef INET + case AF_INET: + net->mtu = SCTP_DEFAULT_MTU; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu = 1280; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + net->mtu = 1280; + break; +#endif + default: + break; + } } } #if defined(INET) || defined(INET6) @@ -4730,7 +4710,7 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, stcb->asoc.smallest_mtu = net->mtu; } if (stcb->asoc.smallest_mtu > net->mtu) { - stcb->asoc.smallest_mtu = net->mtu; + sctp_pathmtu_adjustment(stcb, net->mtu, true); } #ifdef INET6 #ifdef SCTP_EMBEDDED_V6_SCOPE @@ -4757,37 +4737,47 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, */ net->find_pseudo_cumack = 1; net->find_rtx_pseudo_cumack = 1; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) /* Choose an initial flowid. */ net->flowid = stcb->asoc.my_vtag ^ ntohs(stcb->rport) ^ ntohs(stcb->sctp_ep->sctp_lport); - net->flowtype = M_HASHTYPE_OPAQUE; + net->flowtype = M_HASHTYPE_OPAQUE_HASH; #endif if (netp) { *netp = net; } netfirst = TAILQ_FIRST(&stcb->asoc.nets); +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (net->ro.ro_nh == NULL) { +#else if (net->ro.ro_rt == NULL) { +#endif /* Since we have no route put it at the back */ TAILQ_INSERT_TAIL(&stcb->asoc.nets, net, sctp_next); } else if (netfirst == NULL) { /* We are the first one in the pool. */ TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next); +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if (netfirst->ro.ro_nh == NULL) { +#else } else if (netfirst->ro.ro_rt == NULL) { +#endif /* * First one has NO route. Place this one ahead of the first * one. */ TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next); -#ifndef __Panda__ +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if (net->ro.ro_nh->nh_ifp != netfirst->ro.ro_nh->nh_ifp) { +#else } else if (net->ro.ro_rt->rt_ifp != netfirst->ro.ro_rt->rt_ifp) { +#endif /* * This one has a different interface than the one at the * top of the list. Place it ahead. */ TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next); -#endif } else { /* * Ok we have the same interface as the first one. Move @@ -4803,34 +4793,39 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, /* End of the list */ TAILQ_INSERT_TAIL(&stcb->asoc.nets, net, sctp_next); break; +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if (netlook->ro.ro_nh == NULL) { +#else } else if (netlook->ro.ro_rt == NULL) { +#endif /* next one has NO route */ TAILQ_INSERT_BEFORE(netfirst, net, sctp_next); break; - } -#ifndef __Panda__ - else if (netlook->ro.ro_rt->rt_ifp != net->ro.ro_rt->rt_ifp) +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if (netlook->ro.ro_nh->nh_ifp != net->ro.ro_nh->nh_ifp) { #else - else + } else if (netlook->ro.ro_rt->rt_ifp != net->ro.ro_rt->rt_ifp) { #endif - { TAILQ_INSERT_AFTER(&stcb->asoc.nets, netlook, - net, sctp_next); + net, sctp_next); break; } -#ifndef __Panda__ /* Shift forward */ netfirst = netlook; -#endif } while (netlook != NULL); } /* got to have a primary set */ if (stcb->asoc.primary_destination == 0) { stcb->asoc.primary_destination = net; +#if defined(__FreeBSD__) && !defined(__Userspace__) + } else if ((stcb->asoc.primary_destination->ro.ro_nh == NULL) && + (net->ro.ro_nh) && +#else } else if ((stcb->asoc.primary_destination->ro.ro_rt == NULL) && - (net->ro.ro_rt) && - ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0)) { + (net->ro.ro_rt) && +#endif + ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0)) { /* No route to current primary adopt new primary */ stcb->asoc.primary_destination = net; } @@ -4851,7 +4846,6 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr, return (0); } - static uint32_t sctp_aloc_a_assoc_id(struct sctp_inpcb *inp, struct sctp_tcb *stcb) { @@ -4859,11 +4853,9 @@ sctp_aloc_a_assoc_id(struct sctp_inpcb *inp, struct sctp_tcb *stcb) struct sctpasochead *head; struct sctp_tcb *lstcb; - SCTP_INP_WLOCK(inp); try_again: if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { /* TSNH */ - SCTP_INP_WUNLOCK(inp); return (0); } /* @@ -4882,8 +4874,7 @@ sctp_aloc_a_assoc_id(struct sctp_inpcb *inp, struct sctp_tcb *stcb) head = &inp->sctp_asocidhash[SCTP_PCBHASH_ASOC(id, inp->hashasocidmark)]; LIST_INSERT_HEAD(head, stcb, sctp_tcbasocidhash); stcb->asoc.in_asocid_hash = 1; - SCTP_INP_WUNLOCK(inp); - return id; + return (id); } /* @@ -4891,20 +4882,21 @@ sctp_aloc_a_assoc_id(struct sctp_inpcb *inp, struct sctp_tcb *stcb) * careful to add all additional addresses once they are know right away or * else the assoc will be may experience a blackout scenario. */ -struct sctp_tcb * -sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, - int *error, uint32_t override_tag, uint32_t vrf_id, -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - struct thread *p -#elif defined(__Windows__) - PKTHREAD p +static struct sctp_tcb * +sctp_aloc_assoc_locked(struct sctp_inpcb *inp, struct sockaddr *firstaddr, + int *error, uint32_t override_tag, uint32_t initial_tsn, + uint32_t vrf_id, uint16_t o_streams, uint16_t port, +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct thread *p, +#elif defined(_WIN32) && !defined(__Userspace__) + PKTHREAD p, #else #if defined(__Userspace__) - /* __Userspace__ NULL proc is going to be passed here. See sctp_lower_sosend */ + /* __Userspace__ NULL proc is going to be passed here. See sctp_lower_sosend */ #endif - struct proc *p + struct proc *p, #endif -) + int initialize_auth_params) { /* note the p argument is only valid in unbound sockets */ @@ -4914,6 +4906,9 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, uint16_t rport; int err; + SCTP_INP_INFO_WLOCK_ASSERT(); + SCTP_INP_WLOCK_ASSERT(inp); + /* * Assumption made here: Caller has done a * sctp_findassociation_ep_addr(ep, addr's); to make sure the @@ -4930,7 +4925,11 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, *error = EINVAL; return (NULL); } - SCTP_INP_RLOCK(inp); + if (inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); + *error = EINVAL; + return (NULL); + } if ((inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) && ((sctp_is_feature_off(inp, SCTP_PCB_FLAGS_PORTREUSE)) || (inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED))) { @@ -4940,7 +4939,6 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, * sctp_aloc_assoc.. or the one-2-many socket. If a peeled * off, or connected one does this.. its an error. */ - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); @@ -4949,7 +4947,6 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, (inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE)) { if ((inp->sctp_flags & SCTP_PCB_FLAGS_WAS_CONNECTED) || (inp->sctp_flags & SCTP_PCB_FLAGS_WAS_ABORTED)) { - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); @@ -4997,15 +4994,14 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, (sin->sin_addr.s_addr == INADDR_BROADCAST) || IN_MULTICAST(ntohl(sin->sin_addr.s_addr)) || #if defined(__Userspace__) - (((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) != 0) || - (((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) != 0) && + ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) || + ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && (SCTP_IPV6_V6ONLY(inp) != 0)))) { #else - (((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) != 0) && + ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && (SCTP_IPV6_V6ONLY(inp) != 0))) { #endif /* Invalid address */ - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); @@ -5025,7 +5021,6 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr) || ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) == 0)) { /* Invalid address */ - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); @@ -5044,7 +5039,6 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, (sconn->sconn_addr == NULL) || ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) == 0)) { /* Invalid address */ - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); @@ -5055,26 +5049,16 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, #endif default: /* not supported family type */ - SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); *error = EINVAL; return (NULL); } - SCTP_INP_RUNLOCK(inp); if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { /* * If you have not performed a bind, then we need to do the * ephemeral bind for you. */ - if ((err = sctp_inpcb_bind(inp->sctp_socket, - (struct sockaddr *)NULL, - (struct sctp_ifa *)NULL, -#ifndef __Panda__ - p -#else - (struct proc *)NULL -#endif - ))) { + if ((err = sctp_inpcb_bind_locked(inp, NULL, NULL, p))) { /* bind error, probably perm */ *error = err; return (NULL); @@ -5089,51 +5073,31 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, } SCTP_INCR_ASOC_COUNT(); - bzero(stcb, sizeof(*stcb)); + memset(stcb, 0, sizeof(*stcb)); asoc = &stcb->asoc; - asoc->assoc_id = sctp_aloc_a_assoc_id(inp, stcb); SCTP_TCB_LOCK_INIT(stcb); - SCTP_TCB_SEND_LOCK_INIT(stcb); stcb->rport = rport; /* setup back pointer's */ stcb->sctp_ep = inp; stcb->sctp_socket = inp->sctp_socket; - if ((err = sctp_init_asoc(inp, stcb, override_tag, vrf_id))) { + if ((err = sctp_init_asoc(inp, stcb, override_tag, initial_tsn, vrf_id, o_streams))) { /* failed */ SCTP_TCB_LOCK_DESTROY(stcb); - SCTP_TCB_SEND_LOCK_DESTROY(stcb); - LIST_REMOVE(stcb, sctp_tcbasocidhash); SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); SCTP_DECR_ASOC_COUNT(); *error = err; return (NULL); } - /* and the port */ - SCTP_INP_INFO_WLOCK(); - SCTP_INP_WLOCK(inp); - if (inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { - /* inpcb freed while alloc going on */ - SCTP_TCB_LOCK_DESTROY(stcb); - SCTP_TCB_SEND_LOCK_DESTROY(stcb); - LIST_REMOVE(stcb, sctp_tcbasocidhash); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); - SCTP_INP_WUNLOCK(inp); - SCTP_INP_INFO_WUNLOCK(); - SCTP_DECR_ASOC_COUNT(); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - *error = EINVAL; - return (NULL); - } SCTP_TCB_LOCK(stcb); + asoc->assoc_id = sctp_aloc_a_assoc_id(inp, stcb); /* now that my_vtag is set, add it to the hash */ head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, SCTP_BASE_INFO(hashasocmark))]; /* put it in the bucket in the vtag hash of assoc's for the system */ LIST_INSERT_HEAD(head, stcb, sctp_asocs); - SCTP_INP_INFO_WUNLOCK(); - if ((err = sctp_add_remote_addr(stcb, firstaddr, NULL, SCTP_DO_SETSCOPE, SCTP_ALLOC_ASOC))) { + if (sctp_add_remote_addr(stcb, firstaddr, NULL, port, SCTP_DO_SETSCOPE, SCTP_ALLOC_ASOC)) { /* failure.. memory error? */ if (asoc->strmout) { SCTP_FREE(asoc->strmout, SCTP_M_STRMO); @@ -5150,7 +5114,7 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, SCTP_DECR_ASOC_COUNT(); SCTP_TCB_UNLOCK(stcb); SCTP_TCB_LOCK_DESTROY(stcb); - SCTP_TCB_SEND_LOCK_DESTROY(stcb); + LIST_REMOVE(stcb, sctp_asocs); LIST_REMOVE(stcb, sctp_tcbasocidhash); SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); SCTP_INP_WUNLOCK(inp); @@ -5164,7 +5128,6 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, SCTP_OS_TIMER_INIT(&asoc->asconf_timer.timer); SCTP_OS_TIMER_INIT(&asoc->shut_guard_timer.timer); SCTP_OS_TIMER_INIT(&asoc->autoclose_timer.timer); - SCTP_OS_TIMER_INIT(&asoc->delayed_event_timer.timer); SCTP_OS_TIMER_INIT(&asoc->delete_prim_timer.timer); LIST_INSERT_HEAD(&inp->sctp_asoc_list, stcb, sctp_tcblist); @@ -5174,17 +5137,79 @@ sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, inp->sctp_hashmark)]; LIST_INSERT_HEAD(head, stcb, sctp_tcbhash); } - SCTP_INP_WUNLOCK(inp); + if (initialize_auth_params == SCTP_INITIALIZE_AUTH_PARAMS) { + sctp_initialize_auth_params(inp, stcb); + } SCTPDBG(SCTP_DEBUG_PCB1, "Association %p now allocated\n", (void *)stcb); return (stcb); } +struct sctp_tcb * +sctp_aloc_assoc(struct sctp_inpcb *inp, struct sockaddr *firstaddr, + int *error, uint32_t override_tag, uint32_t initial_tsn, + uint32_t vrf_id, uint16_t o_streams, uint16_t port, +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct thread *p, +#elif defined(_WIN32) && !defined(__Userspace__) + PKTHREAD p, +#else + struct proc *p, +#endif + int initialize_auth_params) +{ + struct sctp_tcb *stcb; + + SCTP_INP_INFO_WLOCK(); + SCTP_INP_WLOCK(inp); + stcb = sctp_aloc_assoc_locked(inp, firstaddr, error, override_tag, + initial_tsn, vrf_id, o_streams, port, p, initialize_auth_params); + SCTP_INP_INFO_WUNLOCK(); + SCTP_INP_WUNLOCK(inp); + return (stcb); +} + +struct sctp_tcb * +sctp_aloc_assoc_connected(struct sctp_inpcb *inp, struct sockaddr *firstaddr, + int *error, uint32_t override_tag, uint32_t initial_tsn, + uint32_t vrf_id, uint16_t o_streams, uint16_t port, +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct thread *p, +#elif defined(_WIN32) && !defined(__Userspace__) + PKTHREAD p, +#else + struct proc *p, +#endif + int initialize_auth_params) +{ + struct sctp_tcb *stcb; + + SCTP_INP_INFO_WLOCK(); + SCTP_INP_WLOCK(inp); + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && + SCTP_IS_LISTENING(inp)) { + SCTP_INP_INFO_WUNLOCK(); + SCTP_INP_WUNLOCK(inp); + *error = EINVAL; + return (NULL); + } + stcb = sctp_aloc_assoc_locked(inp, firstaddr, error, override_tag, + initial_tsn, vrf_id, o_streams, port, p, initialize_auth_params); + SCTP_INP_INFO_WUNLOCK(); + if (stcb != NULL && (inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE)) { + inp->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; + soisconnecting(inp->sctp_socket); + } + SCTP_INP_WUNLOCK(inp); + return (stcb); +} void sctp_remove_net(struct sctp_tcb *stcb, struct sctp_nets *net) { + struct sctp_inpcb *inp; struct sctp_association *asoc; + inp = stcb->sctp_ep; asoc = &stcb->asoc; asoc->numnets--; TAILQ_REMOVE(&asoc->nets, net, sctp_next); @@ -5228,10 +5253,19 @@ sctp_remove_net(struct sctp_tcb *stcb, struct sctp_nets *net) /* Clear net */ asoc->last_control_chunk_from = NULL; } + if (net == asoc->last_net_cmt_send_started) { + /* Clear net */ + asoc->last_net_cmt_send_started = NULL; + } if (net == stcb->asoc.alternate) { sctp_free_remote_addr(stcb->asoc.alternate); stcb->asoc.alternate = NULL; } + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, + SCTP_FROM_SCTP_PCB + SCTP_LOC_9); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTP_PCB + SCTP_LOC_10); + net->dest_state |= SCTP_ADDR_BEING_DELETED; sctp_free_remote_addr(net); } @@ -5275,100 +5309,70 @@ sctp_del_remote_addr(struct sctp_tcb *stcb, struct sockaddr *remaddr) return (-2); } -void -sctp_delete_from_timewait(uint32_t tag, uint16_t lport, uint16_t rport) +static bool +sctp_is_in_timewait(uint32_t tag, uint16_t lport, uint16_t rport, uint32_t now) { struct sctpvtaghead *chain; struct sctp_tagblock *twait_block; - int found = 0; int i; + SCTP_INP_INFO_LOCK_ASSERT(); chain = &SCTP_BASE_INFO(vtag_timewait)[(tag % SCTP_STACK_VTAG_HASH_SIZE)]; LIST_FOREACH(twait_block, chain, sctp_nxt_tagblock) { for (i = 0; i < SCTP_NUMBER_IN_VTAG_BLOCK; i++) { - if ((twait_block->vtag_block[i].v_tag == tag) && - (twait_block->vtag_block[i].lport == lport) && - (twait_block->vtag_block[i].rport == rport)) { - twait_block->vtag_block[i].tv_sec_at_expire = 0; - twait_block->vtag_block[i].v_tag = 0; - twait_block->vtag_block[i].lport = 0; - twait_block->vtag_block[i].rport = 0; - found = 1; - break; + if ((twait_block->vtag_block[i].tv_sec_at_expire >= now) && + (twait_block->vtag_block[i].v_tag == tag) && + (twait_block->vtag_block[i].lport == lport) && + (twait_block->vtag_block[i].rport == rport)) { + return (true); } } - if (found) - break; } + return (false); } -int -sctp_is_in_timewait(uint32_t tag, uint16_t lport, uint16_t rport) +static void +sctp_set_vtag_block(struct sctp_timewait *vtag_block, uint32_t time, + uint32_t tag, uint16_t lport, uint16_t rport) { - struct sctpvtaghead *chain; - struct sctp_tagblock *twait_block; - int found = 0; - int i; - - SCTP_INP_INFO_WLOCK(); - chain = &SCTP_BASE_INFO(vtag_timewait)[(tag % SCTP_STACK_VTAG_HASH_SIZE)]; - LIST_FOREACH(twait_block, chain, sctp_nxt_tagblock) { - for (i = 0; i < SCTP_NUMBER_IN_VTAG_BLOCK; i++) { - if ((twait_block->vtag_block[i].v_tag == tag) && - (twait_block->vtag_block[i].lport == lport) && - (twait_block->vtag_block[i].rport == rport)) { - found = 1; - break; - } - } - if (found) - break; - } - SCTP_INP_INFO_WUNLOCK(); - return (found); + vtag_block->tv_sec_at_expire = time; + vtag_block->v_tag = tag; + vtag_block->lport = lport; + vtag_block->rport = rport; } - -void -sctp_add_vtag_to_timewait(uint32_t tag, uint32_t time, uint16_t lport, uint16_t rport) +static void +sctp_add_vtag_to_timewait(uint32_t tag, uint16_t lport, uint16_t rport) { struct sctpvtaghead *chain; struct sctp_tagblock *twait_block; struct timeval now; - int set, i; + uint32_t time; + int i; + bool set; - if (time == 0) { - /* Its disabled */ - return; - } + SCTP_INP_INFO_WLOCK_ASSERT(); (void)SCTP_GETTIME_TIMEVAL(&now); + time = (uint32_t)now.tv_sec + SCTP_BASE_SYSCTL(sctp_vtag_time_wait); chain = &SCTP_BASE_INFO(vtag_timewait)[(tag % SCTP_STACK_VTAG_HASH_SIZE)]; - set = 0; + set = false; LIST_FOREACH(twait_block, chain, sctp_nxt_tagblock) { /* Block(s) present, lets find space, and expire on the fly */ for (i = 0; i < SCTP_NUMBER_IN_VTAG_BLOCK; i++) { - if ((twait_block->vtag_block[i].v_tag == 0) && - !set) { - twait_block->vtag_block[i].tv_sec_at_expire = - now.tv_sec + time; - twait_block->vtag_block[i].v_tag = tag; - twait_block->vtag_block[i].lport = lport; - twait_block->vtag_block[i].rport = rport; - set = 1; - } else if ((twait_block->vtag_block[i].v_tag) && - ((long)twait_block->vtag_block[i].tv_sec_at_expire < now.tv_sec)) { - /* Audit expires this guy */ - twait_block->vtag_block[i].tv_sec_at_expire = 0; - twait_block->vtag_block[i].v_tag = 0; - twait_block->vtag_block[i].lport = 0; - twait_block->vtag_block[i].rport = 0; - if (set == 0) { - /* Reuse it for my new tag */ - twait_block->vtag_block[i].tv_sec_at_expire = now.tv_sec + time; - twait_block->vtag_block[i].v_tag = tag; - twait_block->vtag_block[i].lport = lport; - twait_block->vtag_block[i].rport = rport; - set = 1; + if ((twait_block->vtag_block[i].v_tag == 0) && !set) { + sctp_set_vtag_block(twait_block->vtag_block + i, time, tag, lport, rport); + set = true; + continue; + } + if ((twait_block->vtag_block[i].v_tag != 0) && + (twait_block->vtag_block[i].tv_sec_at_expire < (uint32_t)now.tv_sec)) { + if (set) { + /* Audit expires this guy */ + sctp_set_vtag_block(twait_block->vtag_block + i, 0, 0, 0, 0); + } else { + /* Reuse it for the new tag */ + sctp_set_vtag_block(twait_block->vtag_block + i, time, tag, lport, rport); + set = true; } } } @@ -5385,24 +5389,54 @@ sctp_add_vtag_to_timewait(uint32_t tag, uint32_t time, uint16_t lport, uint16_t SCTP_MALLOC(twait_block, struct sctp_tagblock *, sizeof(struct sctp_tagblock), SCTP_M_TIMW); if (twait_block == NULL) { -#ifdef INVARIANTS - panic("Can not alloc tagblock"); -#endif return; } memset(twait_block, 0, sizeof(struct sctp_tagblock)); LIST_INSERT_HEAD(chain, twait_block, sctp_nxt_tagblock); - twait_block->vtag_block[0].tv_sec_at_expire = now.tv_sec + time; - twait_block->vtag_block[0].v_tag = tag; - twait_block->vtag_block[0].lport = lport; - twait_block->vtag_block[0].rport = rport; + sctp_set_vtag_block(twait_block->vtag_block, time, tag, lport, rport); } } +void +sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh) +{ + struct sctp_tmit_chunk *chk, *nchk; + struct sctp_queued_to_read *control, *ncontrol; -#ifdef __Panda__ -void panda_wakeup_socket(struct socket *so); -#endif + TAILQ_FOREACH_SAFE(control, rh, next_instrm, ncontrol) { + TAILQ_REMOVE(rh, control, next_instrm); + control->on_strm_q = 0; + if (control->on_read_q == 0) { + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + } + /* Reassembly free? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + if (chk->holds_key_ref) + sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); + sctp_free_remote_addr(chk->whoTo); + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); + SCTP_DECR_CHK_COUNT(); + /*sa_ignore FREED_MEMORY*/ + } + /* + * We don't free the address here + * since all the net's were freed + * above. + */ + if (control->on_read_q == 0) { + sctp_free_a_readq(stcb, control); + } + } +} /*- * Free the association after un-hashing the remote port. This @@ -5429,9 +5463,10 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre struct socket *so; /* first, lets purge the entry from the hash table. */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sctp_lock_assert(SCTP_INP_SO(inp)); #endif + SCTP_TCB_LOCK_ASSERT(stcb); #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, stcb, 6); @@ -5447,13 +5482,13 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre sctp_free_remote_addr(stcb->asoc.alternate); stcb->asoc.alternate = NULL; } -#if !defined(__APPLE__) /* TEMP: moved to below */ - /* TEMP CODE */ +#if !(defined(__APPLE__) && !defined(__Userspace__)) + /* TEMP CODE */ if (stcb->freed_from_where == 0) { /* Only record the first place free happened from */ stcb->freed_from_where = from_location; } - /* TEMP CODE */ + /* TEMP CODE */ #endif asoc = &stcb->asoc; @@ -5486,40 +5521,11 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre return (0); } } - /* now clean up any other timers */ - (void)SCTP_OS_TIMER_STOP(&asoc->dack_timer.timer); - asoc->dack_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&asoc->strreset_timer.timer); - /*- - * For stream reset we don't blast this unless - * it is a str-reset timer, it might be the - * free-asoc timer which we DON'T want to - * disturb. - */ - if (asoc->strreset_timer.type == SCTP_TIMER_TYPE_STRRESET) - asoc->strreset_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&asoc->asconf_timer.timer); - asoc->asconf_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&asoc->autoclose_timer.timer); - asoc->autoclose_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&asoc->shut_guard_timer.timer); - asoc->shut_guard_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&asoc->delayed_event_timer.timer); - asoc->delayed_event_timer.self = NULL; - /* Mobility adaptation */ - (void)SCTP_OS_TIMER_STOP(&asoc->delete_prim_timer.timer); - asoc->delete_prim_timer.self = NULL; - TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - (void)SCTP_OS_TIMER_STOP(&net->rxt_timer.timer); - net->rxt_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&net->pmtu_timer.timer); - net->pmtu_timer.self = NULL; - (void)SCTP_OS_TIMER_STOP(&net->hb_timer.timer); - net->hb_timer.self = NULL; - } + /* Now clean up any other timers */ + sctp_stop_association_timers(stcb, false); /* Now the read queue needs to be cleaned up (only once) */ if ((stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0) { - stcb->asoc.state |= SCTP_STATE_ABOUT_TO_BE_FREED; + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_ABOUT_TO_BE_FREED); SCTP_INP_READ_LOCK(inp); TAILQ_FOREACH(sq, &inp->read_queue, next) { if (sq->stcb == stcb) { @@ -5540,7 +5546,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre */ uint32_t strseq; stcb->asoc.control_pdapi = sq; - strseq = (sq->sinfo_stream << 16) | sq->sinfo_ssn; + strseq = (sq->sinfo_stream << 16) | (sq->mid & 0x0000ffff); sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION, stcb, SCTP_PARTIAL_DELIVERY_ABORTED, @@ -5563,13 +5569,12 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre if ((stcb->asoc.refcnt) || (stcb->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE)) { /* Someone holds a reference OR the socket is unaccepted yet. */ - if ((stcb->asoc.refcnt) || + if ((stcb->asoc.refcnt) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) { - stcb->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE; + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE); sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL); } - SCTP_TCB_UNLOCK(stcb); if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) /* nothing around */ @@ -5579,6 +5584,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre sctp_sorwakeup(inp, so); sctp_sowwakeup(inp, so); } + SCTP_TCB_UNLOCK(stcb); #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, stcb, 9); @@ -5628,18 +5634,18 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre inp->sctp_flags &= ~SCTP_PCB_FLAGS_CONNECTED; inp->sctp_flags |= SCTP_PCB_FLAGS_WAS_CONNECTED; if (so) { - SOCK_LOCK(so); - if (so->so_rcv.sb_cc == 0) { - so->so_state &= ~(SS_ISCONNECTING | - SS_ISDISCONNECTING | - SS_ISCONFIRMING | - SS_ISCONNECTED); - } -#if defined(__APPLE__) + SOCKBUF_LOCK(&so->so_rcv); + so->so_state &= ~(SS_ISCONNECTING | + SS_ISDISCONNECTING | + SS_ISCONFIRMING | + SS_ISCONNECTED); + so->so_state |= SS_ISDISCONNECTED; +#if defined(__APPLE__) && !defined(__Userspace__) socantrcvmore(so); #else socantrcvmore_locked(so); #endif + socantsendmore(so); sctp_sowwakeup(inp, so); sctp_sorwakeup(inp, so); SCTP_SOWAKEUP(so); @@ -5652,10 +5658,10 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre */ /* re-increment the lock */ if (from_inpcbfree == SCTP_NORMAL_PROC) { - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); } if (stcb->asoc.refcnt) { - stcb->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE; + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE); sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL); if (from_inpcbfree == SCTP_NORMAL_PROC) { SCTP_INP_INFO_WUNLOCK(); @@ -5671,6 +5677,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre if (stcb->asoc.in_asocid_hash) { LIST_REMOVE(stcb, sctp_tcbasocidhash); } + if (inp->sctp_socket == NULL) { + stcb->sctp_socket = NULL; + } /* Now lets remove it from the list of ALL associations in the EP */ LIST_REMOVE(stcb, sctp_tcblist); if (from_inpcbfree == SCTP_NORMAL_PROC) { @@ -5679,26 +5688,13 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre } /* pull from vtag hash */ LIST_REMOVE(stcb, sctp_asocs); - sctp_add_vtag_to_timewait(asoc->my_vtag, SCTP_BASE_SYSCTL(sctp_vtag_time_wait), - inp->sctp_lport, stcb->rport); + sctp_add_vtag_to_timewait(asoc->my_vtag, inp->sctp_lport, stcb->rport); /* Now restop the timers to be sure * this is paranoia at is finest! */ - (void)SCTP_OS_TIMER_STOP(&asoc->strreset_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->dack_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->strreset_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->asconf_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->shut_guard_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->autoclose_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->delayed_event_timer.timer); - TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - (void)SCTP_OS_TIMER_STOP(&net->rxt_timer.timer); - (void)SCTP_OS_TIMER_STOP(&net->pmtu_timer.timer); - (void)SCTP_OS_TIMER_STOP(&net->hb_timer.timer); - } - - asoc->strreset_timer.type = SCTP_TIMER_TYPE_NONE; + sctp_stop_association_timers(stcb, true); + /* * The chunk lists and such SHOULD be empty but we check them just * in case. @@ -5710,7 +5706,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre outs = &asoc->strmout[i]; /* now clean up any chunks here */ TAILQ_FOREACH_SAFE(sp, &outs->outqueue, next, nsp) { + atomic_subtract_int(&asoc->stream_queue_cnt, 1); TAILQ_REMOVE(&outs->outqueue, sp, next); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, outs, sp); sctp_free_spbufspace(stcb, asoc, sp); if (sp->data) { if (so) { @@ -5747,8 +5745,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre sq->whoFrom = NULL; sq->stcb = NULL; /* Free the ctl entry */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(stcb, sq); /*sa_ignore FREED_MEMORY*/ } TAILQ_FOREACH_SAFE(chk, &asoc->free_chunks, sctp_next, nchk) { @@ -5767,11 +5764,11 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre } /* pending send queue SHOULD be empty */ TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", chk->rec.data.sid); #endif } TAILQ_REMOVE(&asoc->send_queue, chk, sctp_next); @@ -5799,11 +5796,11 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre /* sent queue SHOULD be empty */ TAILQ_FOREACH_SAFE(chk, &asoc->sent_queue, sctp_next, nchk) { if (chk->sent != SCTP_DATAGRAM_NR_ACKED) { - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", chk->rec.data.sid); #endif } } @@ -5861,20 +5858,6 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre SCTP_DECR_CHK_COUNT(); /*sa_ignore FREED_MEMORY*/ } - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - if (chk->holds_key_ref) - sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); - sctp_free_remote_addr(chk->whoTo); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); - SCTP_DECR_CHK_COUNT(); - /*sa_ignore FREED_MEMORY*/ - } - if (asoc->mapping_array) { SCTP_FREE(asoc->mapping_array, SCTP_M_MAP); asoc->mapping_array = NULL; @@ -5890,24 +5873,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre } asoc->strm_realoutsize = asoc->streamoutcnt = 0; if (asoc->strmin) { - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - if (ctl->data) { - sctp_m_freem(ctl->data); - ctl->data = NULL; - } - /* - * We don't free the address here - * since all the net's were freed - * above. - */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); asoc->strmin = NULL; @@ -5965,12 +5933,12 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre /* Get rid of LOCK */ SCTP_TCB_UNLOCK(stcb); SCTP_TCB_LOCK_DESTROY(stcb); - SCTP_TCB_SEND_LOCK_DESTROY(stcb); if (from_inpcbfree == SCTP_NORMAL_PROC) { SCTP_INP_INFO_WUNLOCK(); SCTP_INP_RLOCK(inp); } -#if defined(__APPLE__) /* TEMP CODE */ +#if defined(__APPLE__) && !defined(__Userspace__) + /* TEMP CODE */ stcb->freed_from_where = from_location; #endif #ifdef SCTP_TRACK_FREED_ASOCS @@ -6003,16 +5971,12 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre SCTP_FREE_SHOULD_USE_GRACEFUL_CLOSE, SCTP_CALLED_DIRECTLY_NOCMPSET); SCTP_INP_DECR_REF(inp); - goto out_of; } else { /* The socket is still open. */ SCTP_INP_DECR_REF(inp); - } - } - if (from_inpcbfree == SCTP_NORMAL_PROC) { - SCTP_INP_RUNLOCK(inp); + SCTP_INP_RUNLOCK(inp); + } } - out_of: /* destroyed the asoc */ #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 11); @@ -6020,8 +5984,6 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre return (1); } - - /* * determine if a destination is "reachable" based upon the addresses bound * to the current endpoint (e.g. only v4 or v6 currently bound) @@ -6061,20 +6023,12 @@ sctp_destination_is_reachable(struct sctp_tcb *stcb, struct sockaddr *destaddr) switch (destaddr->sa_family) { #ifdef INET6 case AF_INET6: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - answer = inp->inp_vflag & INP_IPV6; -#else answer = inp->ip_inp.inp.inp_vflag & INP_IPV6; -#endif break; #endif #ifdef INET case AF_INET: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - answer = inp->inp_vflag & INP_IPV4; -#else answer = inp->ip_inp.inp.inp_vflag & INP_IPV4; -#endif break; #endif #if defined(__Userspace__) @@ -6099,16 +6053,12 @@ sctp_update_ep_vflag(struct sctp_inpcb *inp) struct sctp_laddr *laddr; /* first clear the flag */ -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag = 0; -#else inp->ip_inp.inp.inp_vflag = 0; -#endif /* set the flag based on addresses on the ep list */ LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { if (laddr->ifa == NULL) { SCTPDBG(SCTP_DEBUG_PCB1, "%s: NULL ifa\n", - __FUNCTION__); + __func__); continue; } @@ -6118,20 +6068,12 @@ sctp_update_ep_vflag(struct sctp_inpcb *inp) switch (laddr->ifa->address.sa.sa_family) { #ifdef INET6 case AF_INET6: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag |= INP_IPV6; -#else inp->ip_inp.inp.inp_vflag |= INP_IPV6; -#endif break; #endif #ifdef INET case AF_INET: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag |= INP_IPV4; -#else inp->ip_inp.inp.inp_vflag |= INP_IPV4; -#endif break; #endif #if defined(__Userspace__) @@ -6153,6 +6095,7 @@ void sctp_add_local_addr_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa, uint32_t action) { struct sctp_laddr *laddr; + struct sctp_tcb *stcb; int fnd, error = 0; fnd = 0; @@ -6187,20 +6130,12 @@ sctp_add_local_addr_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa, uint32_t ac switch (ifa->address.sa.sa_family) { #ifdef INET6 case AF_INET6: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag |= INP_IPV6; -#else inp->ip_inp.inp.inp_vflag |= INP_IPV6; -#endif break; #endif #ifdef INET case AF_INET: -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) - inp->inp_vflag |= INP_IPV4; -#else inp->ip_inp.inp.inp_vflag |= INP_IPV4; -#endif break; #endif #if defined(__Userspace__) @@ -6211,11 +6146,13 @@ sctp_add_local_addr_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa, uint32_t ac default: break; } + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + sctp_add_local_addr_restricted(stcb, ifa); + } } return; } - /* * select a new (hopefully reachable) destination net (should only be used * when we deleted an ep addr that is the only usable source address to reach @@ -6239,9 +6176,8 @@ sctp_select_primary_destination(struct sctp_tcb *stcb) /* I can't there from here! ...we're gonna die shortly... */ } - /* - * Delete the address from the endpoint local address list There is nothing + * Delete the address from the endpoint local address list. There is nothing * to be done if we are bound to all addresses */ void @@ -6282,15 +6218,18 @@ sctp_del_local_addr_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa) /* clean up "last_used_address" */ LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { struct sctp_nets *net; + SCTP_TCB_LOCK(stcb); if (stcb->asoc.last_used_address == laddr) /* delete this address */ stcb->asoc.last_used_address = NULL; /* Now spin through all the nets and purge any ref to laddr */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (net->ro._s_addr && - (net->ro._s_addr->ifa == laddr->ifa)) { + if (net->ro._s_addr == laddr->ifa) { /* Yep, purge src address selected */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else sctp_rtentry_t *rt; /* delete this address if cached */ @@ -6299,6 +6238,7 @@ sctp_del_local_addr_ep(struct sctp_inpcb *inp, struct sctp_ifa *ifa) RTFREE(rt); net->ro.ro_rt = NULL; } +#endif sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; net->src_addr_selected = 0; @@ -6352,46 +6292,6 @@ sctp_add_local_addr_restricted(struct sctp_tcb *stcb, struct sctp_ifa *ifa) return; } -/* - * insert an laddr entry with the given ifa for the desired list - */ -int -sctp_insert_laddr(struct sctpladdr *list, struct sctp_ifa *ifa, uint32_t act) -{ - struct sctp_laddr *laddr; - - laddr = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_laddr), struct sctp_laddr); - if (laddr == NULL) { - /* out of memory? */ - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL); - return (EINVAL); - } - SCTP_INCR_LADDR_COUNT(); - bzero(laddr, sizeof(*laddr)); - (void)SCTP_GETTIME_TIMEVAL(&laddr->start_time); - laddr->ifa = ifa; - laddr->action = act; - atomic_add_int(&ifa->refcount, 1); - /* insert it */ - LIST_INSERT_HEAD(list, laddr, sctp_nxt_addr); - - return (0); -} - -/* - * Remove an laddr entry from the local address list (on an assoc) - */ -void -sctp_remove_laddr(struct sctp_laddr *laddr) -{ - - /* remove from the list */ - LIST_REMOVE(laddr, sctp_nxt_addr); - sctp_free_ifa(laddr->ifa); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_laddr), laddr); - SCTP_DECR_LADDR_COUNT(); -} - /* * Remove a local address from the TCB local address restricted list */ @@ -6434,20 +6334,17 @@ sctp_del_local_addr_restricted(struct sctp_tcb *stcb, struct sctp_ifa *ifa) return; } -#if defined(__FreeBSD__) -/* - * Temporarily remove for __APPLE__ until we use the Tiger equivalents - */ +#if defined(__FreeBSD__) && !defined(__Userspace__) /* sysctl */ static int sctp_max_number_of_assoc = SCTP_MAX_NUM_OF_ASOC; static int sctp_scale_up_for_address = SCTP_SCALE_FOR_ADDR; -#endif /* FreeBSD || APPLE */ - - +#endif -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) struct sctp_mcore_ctrl *sctp_mcore_workers = NULL; int *sctp_cpuarry = NULL; + void sctp_queue_to_mcore(struct mbuf *m, int off, int cpu_to_use) { @@ -6455,6 +6352,7 @@ sctp_queue_to_mcore(struct mbuf *m, int off, int cpu_to_use) struct sctp_mcore_queue *qent; struct sctp_mcore_ctrl *wkq; int need_wake = 0; + if (sctp_mcore_workers == NULL) { /* Something went way bad during setup */ sctp_input_with_port(m, off, 0); @@ -6468,9 +6366,7 @@ sctp_queue_to_mcore(struct mbuf *m, int off, int cpu_to_use) sctp_input_with_port(m, off, 0); return; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 qent->vn = curvnet; -#endif qent->m = m; qent->off = off; qent->v6 = 0; @@ -6522,9 +6418,7 @@ sctp_mcore_thread(void *arg) if (qent) { TAILQ_REMOVE(&wkq->que, qent, next); SCTP_MCORE_QUNLOCK(wkq); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 CURVNET_SET(qent->vn); -#endif m = qent->m; off = qent->off; v6 = qent->v6; @@ -6535,9 +6429,7 @@ sctp_mcore_thread(void *arg) SCTP_PRINTF("V6 not yet supported\n"); sctp_m_freem(m); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 CURVNET_RESTORE(); -#endif SCTP_MCORE_QLOCK(wkq); } wkq->running = 0; @@ -6591,30 +6483,21 @@ sctp_startup_mcore_threads(void) i++; } } - /* Now start them all */ CPU_FOREACH(cpu) { -#if __FreeBSD_version <= 701000 - (void)kthread_create(sctp_mcore_thread, - (void *)&sctp_mcore_workers[cpu], - &sctp_mcore_workers[cpu].thread_proc, - RFPROC, - SCTP_KTHREAD_PAGES, - SCTP_MCORE_NAME); - -#else (void)kproc_create(sctp_mcore_thread, (void *)&sctp_mcore_workers[cpu], &sctp_mcore_workers[cpu].thread_proc, - RFPROC, + 0, SCTP_KTHREAD_PAGES, SCTP_MCORE_NAME); -#endif - } } #endif -#if defined(__FreeBSD__) && __FreeBSD_cc_version >= 1200000 +#endif + +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_NOT_YET) static struct mbuf * sctp_netisr_hdlr(struct mbuf *m, uintptr_t source) { @@ -6640,17 +6523,23 @@ sctp_netisr_hdlr(struct mbuf *m, uintptr_t source) tag = htonl(sh->v_tag); flowid = tag ^ ntohs(sh->dest_port) ^ ntohs(sh->src_port); m->m_pkthdr.flowid = flowid; + /* FIX ME */ m->m_flags |= M_FLOWID; return (m); } -#endif +#endif +#endif void -sctp_pcb_init() +#if defined(__Userspace__) +sctp_pcb_init(int start_threads) +#else +sctp_pcb_init(void) +#endif { /* * SCTP initialization for the PCB structures should be called by - * the sctp_init() funciton. + * the sctp_init() function. */ int i; struct timeval tv; @@ -6661,33 +6550,50 @@ sctp_pcb_init() } SCTP_BASE_VAR(sctp_pcb_initialized) = 1; +#if defined(SCTP_PROCESS_LEVEL_LOCKS) +#if !defined(_WIN32) + pthread_mutexattr_init(&SCTP_BASE_VAR(mtx_attr)); + pthread_rwlockattr_init(&SCTP_BASE_VAR(rwlock_attr)); +#ifdef INVARIANTS + pthread_mutexattr_settype(&SCTP_BASE_VAR(mtx_attr), PTHREAD_MUTEX_ERRORCHECK); +#endif +#endif +#endif #if defined(SCTP_LOCAL_TRACE_BUF) -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) if (SCTP_BASE_SYSCTL(sctp_log) != NULL) { - bzero(SCTP_BASE_SYSCTL(sctp_log), sizeof(struct sctp_log)); + memset(SCTP_BASE_SYSCTL(sctp_log), 0, sizeof(struct sctp_log)); } #else - bzero(&SCTP_BASE_SYSCTL(sctp_log), sizeof(struct sctp_log)); + memset(&SCTP_BASE_SYSCTL(sctp_log), 0, sizeof(struct sctp_log)); #endif #endif -#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) SCTP_MALLOC(SCTP_BASE_STATS, struct sctpstat *, ((mp_maxid+1) * sizeof(struct sctpstat)), SCTP_M_MCORE); +#endif #endif (void)SCTP_GETTIME_TIMEVAL(&tv); -#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) - bzero(SCTP_BASE_STATS, (sizeof(struct sctpstat) * (mp_maxid+1))); +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) + memset(SCTP_BASE_STATS, 0, sizeof(struct sctpstat) * (mp_maxid+1)); SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.tv_sec = (uint32_t)tv.tv_sec; SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.tv_usec = (uint32_t)tv.tv_usec; #else - bzero(&SCTP_BASE_STATS, sizeof(struct sctpstat)); + memset(&SCTP_BASE_STATS, 0, sizeof(struct sctpstat)); + SCTP_BASE_STAT(sctps_discontinuitytime).tv_sec = (uint32_t)tv.tv_sec; + SCTP_BASE_STAT(sctps_discontinuitytime).tv_usec = (uint32_t)tv.tv_usec; +#endif +#else + memset(&SCTP_BASE_STATS, 0, sizeof(struct sctpstat)); SCTP_BASE_STAT(sctps_discontinuitytime).tv_sec = (uint32_t)tv.tv_sec; SCTP_BASE_STAT(sctps_discontinuitytime).tv_usec = (uint32_t)tv.tv_usec; #endif /* init the empty list of (All) Endpoints */ LIST_INIT(&SCTP_BASE_INFO(listhead)); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) LIST_INIT(&SCTP_BASE_INFO(inplisthead)); #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) || defined(APPLE_LION) || defined(APPLE_MOUNTAINLION) SCTP_BASE_INFO(sctbinfo).listhead = &SCTP_BASE_INFO(inplisthead); @@ -6710,21 +6616,11 @@ sctp_pcb_init() #endif #endif - /* init the hash table of endpoints */ -#if defined(__FreeBSD__) -#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 440000 +#if defined(__FreeBSD__) && !defined(__Userspace__) TUNABLE_INT_FETCH("net.inet.sctp.tcbhashsize", &SCTP_BASE_SYSCTL(sctp_hashtblsize)); TUNABLE_INT_FETCH("net.inet.sctp.pcbhashsize", &SCTP_BASE_SYSCTL(sctp_pcbtblsize)); TUNABLE_INT_FETCH("net.inet.sctp.chunkscale", &SCTP_BASE_SYSCTL(sctp_chunkscale)); -#else - TUNABLE_INT_FETCH("net.inet.sctp.tcbhashsize", SCTP_TCBHASHSIZE, - SCTP_BASE_SYSCTL(sctp_hashtblsize)); - TUNABLE_INT_FETCH("net.inet.sctp.pcbhashsize", SCTP_PCBHASHSIZE, - SCTP_BASE_SYSCTL(sctp_pcbtblsize)); - TUNABLE_INT_FETCH("net.inet.sctp.chunkscale", SCTP_CHUNKQUEUE_SCALE, - SCTP_BASE_SYSCTL(sctp_chunkscale)); -#endif #endif SCTP_BASE_INFO(sctp_asochash) = SCTP_HASH_INIT((SCTP_BASE_SYSCTL(sctp_hashtblsize) * 31), &SCTP_BASE_INFO(hashasocmark)); @@ -6733,8 +6629,6 @@ sctp_pcb_init() SCTP_BASE_INFO(sctp_tcpephash) = SCTP_HASH_INIT(SCTP_BASE_SYSCTL(sctp_hashtblsize), &SCTP_BASE_INFO(hashtcpmark)); SCTP_BASE_INFO(hashtblsize) = SCTP_BASE_SYSCTL(sctp_hashtblsize); - - SCTP_BASE_INFO(sctp_vrfhash) = SCTP_HASH_INIT(SCTP_SIZE_OF_VRF_HASH, &SCTP_BASE_INFO(hashvrfmark)); @@ -6779,7 +6673,6 @@ sctp_pcb_init() sizeof(struct sctp_asconf_ack), (sctp_max_number_of_assoc * SCTP_BASE_SYSCTL(sctp_chunkscale))); - /* Master Lock INIT for info structure */ SCTP_INP_INFO_LOCK_INIT(); SCTP_STATLOG_INIT_LOCK(); @@ -6819,7 +6712,7 @@ sctp_pcb_init() LIST_INIT(&SCTP_BASE_INFO(vtag_timewait)[i]); } #if defined(SCTP_PROCESS_LEVEL_LOCKS) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) InitializeConditionVariable(&sctp_it_ctl.iterator_wakeup); #else (void)pthread_cond_init(&sctp_it_ctl.iterator_wakeup, NULL); @@ -6827,19 +6720,19 @@ sctp_pcb_init() #endif sctp_startup_iterator(); -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) sctp_startup_mcore_threads(); +#endif #endif -#ifndef __Panda__ /* * INIT the default VRF which for BSD is the only one, other O/S's * may have more. But initially they must start with one and then * add the VRF's as addresses are added. */ sctp_init_vrf_list(SCTP_DEFAULT_VRF); -#endif -#if defined(__FreeBSD__) && __FreeBSD_cc_version >= 1200000 +#if defined(__FreeBSD__) && !defined(__Userspace__) && defined(SCTP_NOT_YET) if (ip_register_flow_handler(sctp_netisr_hdlr, IPPROTO_SCTP)) { SCTP_PRINTF("***SCTP- Error can't register netisr handler***\n"); } @@ -6850,10 +6743,11 @@ sctp_pcb_init() TAILQ_INIT(&SCTP_BASE_INFO(callqueue)); #endif #if defined(__Userspace__) - mbuf_init(NULL); + mbuf_initialize(NULL); atomic_init(); #if defined(INET) || defined(INET6) - recv_thread_init(); + if (start_threads) + recv_thread_init(); #endif #endif } @@ -6873,15 +6767,20 @@ sctp_pcb_finish(void) struct sctp_laddr *wi, *nwi; int i; struct sctp_iterator *it, *nit; - -#if !defined(__FreeBSD__) + + if (SCTP_BASE_VAR(sctp_pcb_initialized) == 0) { + SCTP_PRINTF("%s: race condition on teardown.\n", __func__); + return; + } + SCTP_BASE_VAR(sctp_pcb_initialized) = 0; +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) /* Notify the iterator to exit. */ SCTP_IPI_ITERATOR_WQ_LOCK(); sctp_it_ctl.iterator_flags |= SCTP_ITERATOR_MUST_EXIT; sctp_wakeup_iterator(); SCTP_IPI_ITERATOR_WQ_UNLOCK(); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) in_pcbinfo_detach(&SCTP_BASE_INFO(sctbinfo)); #endif @@ -6894,7 +6793,7 @@ sctp_pcb_finish(void) thread_deallocate(sctp_it_ctl.thread_proc); SCTP_IPI_ITERATOR_WQ_UNLOCK(); #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) if (sctp_it_ctl.iterator_thread_obj != NULL) { NTSTATUS status = STATUS_SUCCESS; @@ -6908,8 +6807,8 @@ sctp_pcb_finish(void) } #endif #if defined(__Userspace__) - if (sctp_it_ctl.thread_proc) { -#if defined(__Userspace_os_Windows) + if (SCTP_BASE_VAR(iterator_thread_started)) { +#if defined(_WIN32) WaitForSingleObject(sctp_it_ctl.thread_proc, INFINITE); CloseHandle(sctp_it_ctl.thread_proc); sctp_it_ctl.thread_proc = NULL; @@ -6920,10 +6819,12 @@ sctp_pcb_finish(void) } #endif #if defined(SCTP_PROCESS_LEVEL_LOCKS) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) DeleteConditionVariable(&sctp_it_ctl.iterator_wakeup); #else pthread_cond_destroy(&sctp_it_ctl.iterator_wakeup); + pthread_mutexattr_destroy(&SCTP_BASE_VAR(mtx_attr)); + pthread_rwlockattr_destroy(&SCTP_BASE_VAR(rwlock_attr)); #endif #endif /* In FreeBSD the iterator thread never exits @@ -6931,9 +6832,28 @@ sctp_pcb_finish(void) * The only way FreeBSD reaches here is if we have VRF's * but we still add the ifdef to make it compile on old versions. */ +#if defined(__FreeBSD__) && !defined(__Userspace__) +retry: +#endif SCTP_IPI_ITERATOR_WQ_LOCK(); +#if defined(__FreeBSD__) && !defined(__Userspace__) + /* + * sctp_iterator_worker() might be working on an it entry without + * holding the lock. We won't find it on the list either and + * continue and free/destroy it. While holding the lock, spin, to + * avoid the race condition as sctp_iterator_worker() will have to + * wait to re-acquire the lock. + */ + if (sctp_it_ctl.iterator_running != 0 || sctp_it_ctl.cur_it != NULL) { + SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_PRINTF("%s: Iterator running while we held the lock. Retry. " + "cur_it=%p\n", __func__, sctp_it_ctl.cur_it); + DELAY(10); + goto retry; + } +#endif TAILQ_FOREACH_SAFE(it, &sctp_it_ctl.iteratorhead, sctp_nxt_itr, nit) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (it->vn != curvnet) { continue; } @@ -6945,7 +6865,7 @@ sctp_pcb_finish(void) SCTP_FREE(it,SCTP_M_ITER); } SCTP_IPI_ITERATOR_WQ_UNLOCK(); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) SCTP_ITERATOR_LOCK(); if ((sctp_it_ctl.cur_it) && (sctp_it_ctl.cur_it->vn == curvnet)) { @@ -6953,11 +6873,11 @@ sctp_pcb_finish(void) } SCTP_ITERATOR_UNLOCK(); #endif -#if !defined(__FreeBSD__) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) SCTP_IPI_ITERATOR_WQ_DESTROY(); SCTP_ITERATOR_LOCK_DESTROY(); #endif - SCTP_OS_TIMER_STOP(&SCTP_BASE_INFO(addr_wq_timer.timer)); + SCTP_OS_TIMER_STOP_DRAIN(&SCTP_BASE_INFO(addr_wq_timer.timer)); SCTP_WQ_ADDR_LOCK(); LIST_FOREACH_SAFE(wi, &SCTP_BASE_INFO(addr_wq), sctp_nxt_addr, nwi) { LIST_REMOVE(wi, sctp_nxt_addr); @@ -6973,6 +6893,7 @@ sctp_pcb_finish(void) * free the vrf/ifn/ifa lists and hashes (be sure address monitor * is destroyed first). */ + SCTP_IPI_ADDR_WLOCK(); vrf_bucket = &SCTP_BASE_INFO(sctp_vrfhash)[(SCTP_DEFAULT_VRFID & SCTP_BASE_INFO(hashvrfmark))]; LIST_FOREACH_SAFE(vrf, vrf_bucket, next_vrf, nvrf) { LIST_FOREACH_SAFE(ifn, &vrf->ifnlist, next_ifn, nifn) { @@ -6992,15 +6913,10 @@ sctp_pcb_finish(void) LIST_REMOVE(vrf, next_vrf); SCTP_FREE(vrf, SCTP_M_VRF); } + SCTP_IPI_ADDR_WUNLOCK(); /* free the vrf hashes */ SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_vrfhash), SCTP_BASE_INFO(hashvrfmark)); SCTP_HASH_FREE(SCTP_BASE_INFO(vrf_ifn_hash), SCTP_BASE_INFO(vrf_ifn_hashmark)); -#if defined(__Userspace__) && !defined(__Userspace_os_Windows) - /* free memory allocated by getifaddrs call */ -#if defined(INET) || defined(INET6) - freeifaddrs(g_interfaces); -#endif -#endif /* free the TIMEWAIT list elements malloc'd in the function * sctp_add_vtag_to_timewait()... @@ -7020,14 +6936,14 @@ sctp_pcb_finish(void) } /* free the locks and mutexes */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_TIMERQ_LOCK_DESTROY(); #endif #ifdef SCTP_PACKET_LOGGING SCTP_IP_PKTLOG_DESTROY(); #endif SCTP_IPI_ADDR_DESTROY(); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_IPI_COUNT_DESTROY(); #endif SCTP_STATLOG_DESTROY(); @@ -7035,7 +6951,7 @@ sctp_pcb_finish(void) SCTP_WQ_ADDR_DESTROY(); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) || defined(APPLE_LION) || defined(APPLE_MOUNTAINLION) lck_grp_attr_free(SCTP_BASE_INFO(sctbinfo).mtx_grp_attr); lck_grp_free(SCTP_BASE_INFO(sctbinfo).mtx_grp); @@ -7052,7 +6968,15 @@ sctp_pcb_finish(void) SCTP_ZONE_DESTROY(zone_clust); SCTP_ZONE_DESTROY(zone_ext_refcnt); #endif -#if defined(__Windows__) || defined(__FreeBSD__) || defined(__Userspace__) + /* Get rid of other stuff too. */ + if (SCTP_BASE_INFO(sctp_asochash) != NULL) + SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_asochash), SCTP_BASE_INFO(hashasocmark)); + if (SCTP_BASE_INFO(sctp_ephash) != NULL) + SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_ephash), SCTP_BASE_INFO(hashmark)); + if (SCTP_BASE_INFO(sctp_tcpephash) != NULL) + SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_tcpephash), SCTP_BASE_INFO(hashtcpmark)); + +#if defined(_WIN32) || defined(__FreeBSD__) || defined(__Userspace__) SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_ep)); SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asoc)); SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_laddr)); @@ -7063,24 +6987,18 @@ sctp_pcb_finish(void) SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asconf)); SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asconf_ack)); #endif - /* Get rid of other stuff to */ - if (SCTP_BASE_INFO(sctp_asochash) != NULL) - SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_asochash), SCTP_BASE_INFO(hashasocmark)); - if (SCTP_BASE_INFO(sctp_ephash) != NULL) - SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_ephash), SCTP_BASE_INFO(hashmark)); - if (SCTP_BASE_INFO(sctp_tcpephash) != NULL) - SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_tcpephash), SCTP_BASE_INFO(hashtcpmark)); -#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) SCTP_FREE(SCTP_BASE_STATS, SCTP_M_MCORE); #endif +#endif } - int sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, int offset, int limit, struct sockaddr *src, struct sockaddr *dst, - struct sockaddr *altsa) + struct sockaddr *altsa, uint16_t port) { /* * grub through the INIT pulling addresses and loading them to the @@ -7091,7 +7009,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, */ struct sctp_inpcb *inp; struct sctp_nets *net, *nnet, *net_tmp; - struct sctp_paramhdr *phdr, parm_buf; + struct sctp_paramhdr *phdr, param_buf; struct sctp_tcb *stcb_tmp; uint16_t ptype, plen; struct sockaddr *sa; @@ -7117,6 +7035,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, uint8_t peer_supports_reconfig; uint8_t peer_supports_nrsack; uint8_t peer_supports_pktdrop; + uint8_t peer_supports_idata; #ifdef INET struct sockaddr_in sin; #endif @@ -7146,10 +7065,12 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } else { sa = src; } + peer_supports_idata = 0; peer_supports_ecn = 0; peer_supports_prsctp = 0; peer_supports_auth = 0; peer_supports_asconf = 0; + peer_supports_asconf_ack = 0; peer_supports_reconfig = 0; peer_supports_nrsack = 0; peer_supports_pktdrop = 0; @@ -7161,7 +7082,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, inp = stcb->sctp_ep; atomic_add_int(&stcb->asoc.refcnt, 1); stcb_tmp = sctp_findassociation_ep_addr(&inp, sa, &net_tmp, dst, stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); if ((stcb_tmp == NULL && inp == stcb->sctp_ep) || inp == NULL) { /* we must add the source address */ @@ -7170,7 +7091,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, #ifdef INET case AF_INET: if (stcb->asoc.scope.ipv4_addr_legal) { - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_2)) { + if (sctp_add_remote_addr(stcb, sa, NULL, port, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_2)) { return (-1); } } @@ -7179,7 +7100,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, #ifdef INET6 case AF_INET6: if (stcb->asoc.scope.ipv6_addr_legal) { - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_3)) { + if (sctp_add_remote_addr(stcb, sa, NULL, port, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_3)) { return (-2); } } @@ -7188,7 +7109,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, #if defined(__Userspace__) case AF_CONN: if (stcb->asoc.scope.conn_addr_legal) { - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_3)) { + if (sctp_add_remote_addr(stcb, sa, NULL, port, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_3)) { return (-2); } } @@ -7212,7 +7133,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, return (-4); } /* now we must go through each of the params. */ - phdr = sctp_get_next_param(m, offset, &parm_buf, sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, sizeof(param_buf)); while (phdr) { ptype = ntohs(phdr->param_type); plen = ntohs(phdr->param_length); @@ -7254,7 +7175,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, atomic_add_int(&stcb->asoc.refcnt, 1); stcb_tmp = sctp_findassociation_ep_addr(&inp, sa, &net, dst, stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); if ((stcb_tmp == NULL && inp == stcb->sctp_ep) || inp == NULL) { @@ -7273,7 +7194,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, /* the assoc was freed? */ return (-7); } - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_4)) { + if (sctp_add_remote_addr(stcb, sa, NULL, port, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_4)) { return (-8); } } else if (stcb_tmp == stcb) { @@ -7292,10 +7213,18 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, * assoc? straighten out locks. */ if (stcb_tmp) { - if (SCTP_GET_STATE(&stcb_tmp->asoc) & SCTP_STATE_COOKIE_WAIT) { + if (SCTP_GET_STATE(stcb_tmp) == SCTP_STATE_COOKIE_WAIT) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + /* in setup state we abort this guy */ + SCTP_SNPRINTF(msg, sizeof(msg), + "%s:%d at %s", __FILE__, __LINE__, __func__); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + msg); sctp_abort_an_association(stcb_tmp->sctp_ep, - stcb_tmp, NULL, SCTP_SO_NOT_LOCKED); + stcb_tmp, op_err, false, + SCTP_SO_NOT_LOCKED); goto add_it_now; } SCTP_TCB_UNLOCK(stcb_tmp); @@ -7339,7 +7268,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, atomic_add_int(&stcb->asoc.refcnt, 1); stcb_tmp = sctp_findassociation_ep_addr(&inp, sa, &net, dst, stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); if (stcb_tmp == NULL && (inp == stcb->sctp_ep || inp == NULL)) { /* @@ -7355,7 +7284,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, * we must add the address, no scope * set */ - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_5)) { + if (sctp_add_remote_addr(stcb, sa, NULL, port, SCTP_DONOT_SETSCOPE, SCTP_LOAD_ADDR_5)) { return (-17); } } else if (stcb_tmp == stcb) { @@ -7377,15 +7306,23 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, * strange, address is in another * assoc? straighten out locks. */ - if (stcb_tmp) - if (SCTP_GET_STATE(&stcb_tmp->asoc) & SCTP_STATE_COOKIE_WAIT) { + if (stcb_tmp) { + if (SCTP_GET_STATE(stcb_tmp) == SCTP_STATE_COOKIE_WAIT) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + /* in setup state we abort this guy */ + SCTP_SNPRINTF(msg, sizeof(msg), + "%s:%d at %s", __FILE__, __LINE__, __func__); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + msg); sctp_abort_an_association(stcb_tmp->sctp_ep, - stcb_tmp, NULL, SCTP_SO_NOT_LOCKED); + stcb_tmp, op_err, false, + SCTP_SO_NOT_LOCKED); goto add_it_now6; } - SCTP_TCB_UNLOCK(stcb_tmp); - + SCTP_TCB_UNLOCK(stcb_tmp); + } if (stcb->asoc.state == 0) { /* the assoc was freed? */ return (-21); @@ -7428,7 +7365,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } phdr = sctp_get_next_param(m, offset, (struct sctp_paramhdr *)&lstore, - min(plen,sizeof(lstore))); + plen); if (phdr == NULL) { return (-24); } @@ -7475,14 +7412,25 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } else if (ptype == SCTP_PRSCTP_SUPPORTED) { /* Peer supports pr-sctp */ peer_supports_prsctp = 1; + } else if (ptype == SCTP_ZERO_CHECKSUM_ACCEPTABLE) { + /* + * Only send zero checksums if the upper layer has + * also enabled the support for this. + */ + if (stcb->asoc.zero_checksum == 1) { + stcb->asoc.zero_checksum = 2; + } } else if (ptype == SCTP_SUPPORTED_CHUNK_EXT) { /* A supported extension chunk */ struct sctp_supported_chunk_types_param *pr_supported; uint8_t local_store[SCTP_PARAM_BUFFER_SIZE]; int num_ent, i; + if (plen > sizeof(local_store)) { + return (-35); + } phdr = sctp_get_next_param(m, offset, - (struct sctp_paramhdr *)&local_store, min(sizeof(local_store),plen)); + (struct sctp_paramhdr *)&local_store, plen); if (phdr == NULL) { return (-25); } @@ -7511,10 +7459,12 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, case SCTP_AUTHENTICATION: peer_supports_auth = 1; break; + case SCTP_IDATA: + peer_supports_idata = 1; + break; default: /* one I have not learned yet */ break; - } } } else if (ptype == SCTP_RANDOM) { @@ -7526,7 +7476,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } phdr = sctp_get_next_param(m, offset, (struct sctp_paramhdr *)random_store, - min(sizeof(random_store),plen)); + plen); if (phdr == NULL) return (-26); p_random = (struct sctp_auth_random *)phdr; @@ -7549,7 +7499,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } phdr = sctp_get_next_param(m, offset, (struct sctp_paramhdr *)hmacs_store, - min(plen,sizeof(hmacs_store))); + plen); if (phdr == NULL) return (-28); hmacs = (struct sctp_auth_hmac_algo *)phdr; @@ -7580,7 +7530,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } phdr = sctp_get_next_param(m, offset, (struct sctp_paramhdr *)chunks_store, - min(plen,sizeof(chunks_store))); + plen); if (phdr == NULL) return (-30); chunks = (struct sctp_auth_chunk_list *)phdr; @@ -7597,7 +7547,6 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, saw_asconf = 1; if (chunks->chunk_types[i] == SCTP_ASCONF_ACK) saw_asconf_ack = 1; - } got_chklist = 1; } else if ((ptype == SCTP_HEARTBEAT_INFO) || @@ -7609,7 +7558,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, (ptype == SCTP_DEL_IP_ADDRESS) || (ptype == SCTP_ERROR_CAUSE_IND) || (ptype == SCTP_SUCCESS_REPORT)) { - /* don't care */ ; + /* don't care */ } else { if ((ptype & 0x8000) == 0x0000) { /* @@ -7628,8 +7577,8 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, if (offset >= limit) { break; } - phdr = sctp_get_next_param(m, offset, &parm_buf, - sizeof(parm_buf)); + phdr = sctp_get_next_param(m, offset, ¶m_buf, + sizeof(param_buf)); } /* Now check to see if we need to purge any addresses */ TAILQ_FOREACH_SAFE(net, &stcb->asoc.nets, sctp_next, nnet) { @@ -7639,11 +7588,15 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, /* remove and free it */ stcb->asoc.numnets--; TAILQ_REMOVE(&stcb->asoc.nets, net, sctp_next); - sctp_free_remote_addr(net); + if (net == stcb->asoc.alternate) { + sctp_free_remote_addr(stcb->asoc.alternate); + stcb->asoc.alternate = NULL; + } if (net == stcb->asoc.primary_destination) { stcb->asoc.primary_destination = NULL; sctp_select_primary_destination(stcb); } + sctp_free_remote_addr(net); } } if ((stcb->asoc.ecn_supported == 1) && @@ -7669,12 +7622,16 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, (peer_supports_reconfig == 0)) { stcb->asoc.reconfig_supported = 0; } + if ((stcb->asoc.idata_supported == 1) && + (peer_supports_idata == 0)) { + stcb->asoc.idata_supported = 0; + } if ((stcb->asoc.nrsack_supported == 1) && (peer_supports_nrsack == 0)) { stcb->asoc.nrsack_supported = 0; } if ((stcb->asoc.pktdrop_supported == 1) && - (peer_supports_pktdrop == 0)){ + (peer_supports_pktdrop == 0)) { stcb->asoc.pktdrop_supported = 0; } /* validate authentication required parameters */ @@ -7700,20 +7657,20 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, /* copy in the RANDOM */ if (p_random != NULL) { keylen = sizeof(*p_random) + random_len; - bcopy(p_random, new_key->key, keylen); + memcpy(new_key->key, p_random, keylen); } else { keylen = 0; } /* append in the AUTH chunks */ if (chunks != NULL) { - bcopy(chunks, new_key->key + keylen, - sizeof(*chunks) + num_chunks); + memcpy(new_key->key + keylen, chunks, + sizeof(*chunks) + num_chunks); keylen += sizeof(*chunks) + num_chunks; } /* append in the HMACs */ if (hmacs != NULL) { - bcopy(hmacs, new_key->key + keylen, - sizeof(*hmacs) + hmacs_len); + memcpy(new_key->key + keylen, hmacs, + sizeof(*hmacs) + hmacs_len); } } else { /* failed to get memory for the key */ @@ -7747,7 +7704,8 @@ sctp_set_primary_addr(struct sctp_tcb *stcb, struct sockaddr *sa, return (0); } stcb->asoc.primary_destination = net; - if (!(net->dest_state & SCTP_ADDR_PF) && (stcb->asoc.alternate)) { + if (((net->dest_state & SCTP_ADDR_PF) == 0) && + (stcb->asoc.alternate != NULL)) { sctp_free_remote_addr(stcb->asoc.alternate); stcb->asoc.alternate = NULL; } @@ -7765,24 +7723,15 @@ sctp_set_primary_addr(struct sctp_tcb *stcb, struct sockaddr *sa, } } -int +bool sctp_is_vtag_good(uint32_t tag, uint16_t lport, uint16_t rport, struct timeval *now) { - /* - * This function serves two purposes. It will see if a TAG can be - * re-used and return 1 for yes it is ok and 0 for don't use that - * tag. A secondary function it will do is purge out old tags that - * can be removed. - */ - struct sctpvtaghead *chain; - struct sctp_tagblock *twait_block; struct sctpasochead *head; struct sctp_tcb *stcb; - int i; - SCTP_INP_INFO_RLOCK(); - head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(tag, - SCTP_BASE_INFO(hashasocmark))]; + SCTP_INP_INFO_LOCK_ASSERT(); + + head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(tag, SCTP_BASE_INFO(hashasocmark))]; LIST_FOREACH(stcb, head, sctp_asocs) { /* We choose not to lock anything here. TCB's can't be * removed since we have the read lock, so they can't @@ -7801,40 +7750,11 @@ sctp_is_vtag_good(uint32_t tag, uint16_t lport, uint16_t rport, struct timeval * if (stcb->sctp_ep->sctp_lport != lport) { continue; } - /* Its a used tag set */ - SCTP_INP_INFO_RUNLOCK(); - return (0); - } - } - chain = &SCTP_BASE_INFO(vtag_timewait)[(tag % SCTP_STACK_VTAG_HASH_SIZE)]; - /* Now what about timed wait ? */ - LIST_FOREACH(twait_block, chain, sctp_nxt_tagblock) { - /* - * Block(s) are present, lets see if we have this tag in the - * list - */ - for (i = 0; i < SCTP_NUMBER_IN_VTAG_BLOCK; i++) { - if (twait_block->vtag_block[i].v_tag == 0) { - /* not used */ - continue; - } else if ((long)twait_block->vtag_block[i].tv_sec_at_expire < - now->tv_sec) { - /* Audit expires this guy */ - twait_block->vtag_block[i].tv_sec_at_expire = 0; - twait_block->vtag_block[i].v_tag = 0; - twait_block->vtag_block[i].lport = 0; - twait_block->vtag_block[i].rport = 0; - } else if ((twait_block->vtag_block[i].v_tag == tag) && - (twait_block->vtag_block[i].lport == lport) && - (twait_block->vtag_block[i].rport == rport)) { - /* Bad tag, sorry :< */ - SCTP_INP_INFO_RUNLOCK(); - return (0); - } + /* The tag is currently used, so don't use it. */ + return (false); } } - SCTP_INP_INFO_RUNLOCK(); - return (1); + return (!sctp_is_in_timewait(tag, lport, rport, (uint32_t)now->tv_sec)); } static void @@ -7847,7 +7767,7 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) struct sctp_association *asoc; struct sctp_tmit_chunk *chk, *nchk; uint32_t cumulative_tsn_p1; - struct sctp_queued_to_read *ctl, *nctl; + struct sctp_queued_to_read *control, *ncontrol; int cnt, strmat; uint32_t gap, i; int fnd = 0; @@ -7862,41 +7782,126 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) SCTP_STAT_INCR(sctps_protocol_drains_done); cumulative_tsn_p1 = asoc->cumulative_tsn + 1; cnt = 0; - /* First look in the re-assembly queue */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, cumulative_tsn_p1)) { - /* Yep it is above cum-ack */ - cnt++; - SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); - asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } - } /* Ok that was fun, now we will drain all the inbound streams? */ for (strmat = 0; strmat < asoc->streamincnt; strmat++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].inqueue, next, nctl) { - if (SCTP_TSN_GT(ctl->sinfo_tsn, cumulative_tsn_p1)) { + TAILQ_FOREACH_SAFE(control, &asoc->strmin[strmat].inqueue, next_instrm, ncontrol) { +#ifdef INVARIANTS + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control: %p on_q: %d -- not ordered?", + control, control->on_strm_q); + } +#endif + if (SCTP_TSN_GT(control->sinfo_tsn, cumulative_tsn_p1)) { + /* Yep it is above cum-ack */ + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, control->sinfo_tsn, asoc->mapping_array_base_tsn); + KASSERT(control->length > 0, ("control has zero length")); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_all_streams); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + if (control->on_read_q) { + TAILQ_REMOVE(&stcb->sctp_ep->read_queue, control, next); + control->on_read_q = 0; + } + TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, control, next_instrm); + control->on_strm_q = 0; + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + sctp_free_remote_addr(control->whoFrom); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.tsn, asoc->mapping_array_base_tsn); + KASSERT(chk->send_size > 0, ("chunk has zero length")); + if (asoc->size_on_reasm_queue >= chk->send_size) { + asoc->size_on_reasm_queue -= chk->send_size; + } else { +#ifdef INVARIANTS + panic("size_on_reasm_queue = %u smaller than chunk length %u", asoc->size_on_reasm_queue, chk->send_size); +#else + asoc->size_on_reasm_queue = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, control); + } + } + TAILQ_FOREACH_SAFE(control, &asoc->strmin[strmat].uno_inqueue, next_instrm, ncontrol) { +#ifdef INVARIANTS + if (control->on_strm_q != SCTP_ON_UNORDERED) { + panic("Huh control: %p on_q: %d -- not unordered?", + control, control->on_strm_q); + } +#endif + if (SCTP_TSN_GT(control->sinfo_tsn, cumulative_tsn_p1)) { /* Yep it is above cum-ack */ cnt++; - SCTP_CALC_TSN_TO_GAP(gap, ctl->sinfo_tsn, asoc->mapping_array_base_tsn); - asoc->size_on_all_streams = sctp_sbspace_sub(asoc->size_on_all_streams, ctl->length); + SCTP_CALC_TSN_TO_GAP(gap, control->sinfo_tsn, asoc->mapping_array_base_tsn); + KASSERT(control->length > 0, ("control has zero length")); + if (asoc->size_on_all_streams >= control->length) { + asoc->size_on_all_streams -= control->length; + } else { +#ifdef INVARIANTS + panic("size_on_all_streams = %u smaller than control length %u", asoc->size_on_all_streams, control->length); +#else + asoc->size_on_all_streams = 0; +#endif + } sctp_ucount_decr(asoc->cnt_on_all_streams); SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, ctl, next); - if (ctl->data) { - sctp_m_freem(ctl->data); - ctl->data = NULL; + if (control->on_read_q) { + TAILQ_REMOVE(&stcb->sctp_ep->read_queue, control, next); + control->on_read_q = 0; + } + TAILQ_REMOVE(&asoc->strmin[strmat].uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + sctp_free_remote_addr(control->whoFrom); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.tsn, asoc->mapping_array_base_tsn); + KASSERT(chk->send_size > 0, ("chunk has zero length")); + if (asoc->size_on_reasm_queue >= chk->send_size) { + asoc->size_on_reasm_queue -= chk->send_size; + } else { +#ifdef INVARIANTS + panic("size_on_reasm_queue = %u smaller than chunk length %u", asoc->size_on_reasm_queue, chk->send_size); +#else + asoc->size_on_reasm_queue = 0; +#endif + } + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); } - sctp_free_remote_addr(ctl->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(stcb, control); } } } @@ -7936,7 +7941,8 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) * asoc->highest_tsn_inside_map? */ asoc->last_revoke_count = cnt; - (void)SCTP_OS_TIMER_STOP(&stcb->asoc.dack_timer.timer); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_PCB + SCTP_LOC_11); /*sa_ignore NO_NULL_CHK*/ sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED); sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_DRAIN, SCTP_SO_NOT_LOCKED); @@ -7952,16 +7958,18 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) */ } +#if defined(__FreeBSD__) && !defined(__Userspace__) +static void +#else void -sctp_drain() +#endif +sctp_drain(void) { - /* - * We must walk the PCB lists for ALL associations here. The system - * is LOW on MBUF's and needs help. This is where reneging will - * occur. We really hope this does NOT happen! - */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; VNET_ITERATOR_DECL(vnet_iter); + + NET_EPOCH_ENTER(et); #else struct sctp_inpcb *inp; struct sctp_tcb *stcb; @@ -7971,7 +7979,12 @@ sctp_drain() return; } #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 + /* + * We must walk the PCB lists for ALL associations here. The system + * is LOW on MBUF's and needs help. This is where reneging will + * occur. We really hope this does NOT happen! + */ +#if defined(__FreeBSD__) && !defined(__Userspace__) VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); @@ -7979,12 +7992,13 @@ sctp_drain() struct sctp_tcb *stcb; #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) SCTP_STAT_INCR(sctps_protocol_drain_calls); if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { #ifdef VIMAGE continue; #else + NET_EPOCH_EXIT(et); return; #endif } @@ -8002,12 +8016,17 @@ sctp_drain() SCTP_INP_RUNLOCK(inp); } SCTP_INP_INFO_RUNLOCK(); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_RESTORE(); } VNET_LIST_RUNLOCK_NOSLEEP(); + NET_EPOCH_EXIT(et); #endif } +#if defined(__FreeBSD__) && !defined(__Userspace__) +EVENTHANDLER_DEFINE(vm_lowmem, sctp_drain, NULL, LOWMEM_PRI_DEFAULT); +EVENTHANDLER_DEFINE(mbuf_lowmem, sctp_drain, NULL, LOWMEM_PRI_DEFAULT); +#endif /* * start a new iterator @@ -8036,11 +8055,16 @@ sctp_initiate_iterator(inp_func inpf, if (af == NULL) { return (-1); } + if (SCTP_BASE_VAR(sctp_pcb_initialized) == 0) { + SCTP_PRINTF("%s: abort on initialize being %d\n", __func__, + SCTP_BASE_VAR(sctp_pcb_initialized)); + return (-1); + } SCTP_MALLOC(it, struct sctp_iterator *, sizeof(struct sctp_iterator), SCTP_M_ITER); if (it == NULL) { SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOMEM); - return (ENOMEM); + return (-1); } memset(it, 0, sizeof(*it)); it->function_assoc = af; @@ -8057,7 +8081,7 @@ sctp_initiate_iterator(inp_func inpf, it->asoc_state = asoc_state; it->function_inp_end = inpe; it->no_chunk_output = chunk_output_off; -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) it->vn = curvnet; #endif if (s_inp) { @@ -8073,10 +8097,15 @@ sctp_initiate_iterator(inp_func inpf, } SCTP_INP_INFO_RUNLOCK(); it->iterator_flags = SCTP_ITERATOR_DO_ALL_INP; - } SCTP_IPI_ITERATOR_WQ_LOCK(); - + if (SCTP_BASE_VAR(sctp_pcb_initialized) == 0) { + SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_PRINTF("%s: rollback on initialize being %d it=%p\n", __func__, + SCTP_BASE_VAR(sctp_pcb_initialized), it); + SCTP_FREE(it, SCTP_M_ITER); + return (-1); + } TAILQ_INSERT_TAIL(&sctp_it_ctl.iteratorhead, it, sctp_nxt_itr); if (sctp_it_ctl.iterator_running == 0) { sctp_wakeup_iterator(); @@ -8085,3 +8114,18 @@ sctp_initiate_iterator(inp_func inpf, /* sa_ignore MEMLEAK {memory is put on the tailq for the iterator} */ return (0); } + +/* + * Atomically add flags to the sctp_flags of an inp. + * To be used when the write lock of the inp is not held. + */ +void +sctp_pcb_add_flags(struct sctp_inpcb *inp, uint32_t flags) +{ + uint32_t old_flags, new_flags; + + do { + old_flags = inp->sctp_flags; + new_flags = old_flags | flags; + } while (atomic_cmpset_int(&inp->sctp_flags, old_flags, new_flags) == 0); +} diff --git a/netwerk/sctp/src/netinet/sctp_pcb.h b/netwerk/sctp/src/netinet/sctp_pcb.h index cab584bb47..71c21886fe 100755 --- a/netwerk/sctp/src/netinet/sctp_pcb.h +++ b/netwerk/sctp/src/netinet/sctp_pcb.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.h 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_PCB_H_ @@ -109,7 +111,7 @@ struct sctp_ifa { * appropriate locks. This is for V6. */ union sctp_sockstore address; - uint32_t refcount; /* number of folks refering to this */ + uint32_t refcount; /* number of folks referring to this */ uint32_t flags; uint32_t localifa_flags; uint32_t vrf_id; /* vrf_id of this addr (for deleting) */ @@ -145,9 +147,8 @@ struct sctp_tagblock { struct sctp_timewait vtag_block[SCTP_NUMBER_IN_VTAG_BLOCK]; }; - struct sctp_epinfo { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #ifdef INET struct socket *udp4_tun_socket; #endif @@ -187,7 +188,7 @@ struct sctp_epinfo { struct sctppcbhead listhead; struct sctpladdr addr_wq; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) struct inpcbhead inplisthead; struct inpcbinfo sctbinfo; #endif @@ -202,27 +203,19 @@ struct sctp_epinfo { sctp_zone_t ipi_zone_asconf; sctp_zone_t ipi_zone_asconf_ack; -#if defined(__FreeBSD__) && __FreeBSD_version >= 503000 -#if __FreeBSD_version <= 602000 - struct mtx ipi_ep_mtx; -#else +#if defined(__FreeBSD__) && !defined(__Userspace__) struct rwlock ipi_ep_mtx; -#endif struct mtx ipi_iterator_wq_mtx; -#if __FreeBSD_version <= 602000 - struct mtx ipi_addr_mtx; -#else struct rwlock ipi_addr_mtx; -#endif struct mtx ipi_pktlog_mtx; struct mtx wq_addr_mtx; #elif defined(SCTP_PROCESS_LEVEL_LOCKS) - userland_mutex_t ipi_ep_mtx; - userland_mutex_t ipi_addr_mtx; + userland_rwlock_t ipi_ep_mtx; + userland_rwlock_t ipi_addr_mtx; userland_mutex_t ipi_count_mtx; userland_mutex_t ipi_pktlog_mtx; userland_mutex_t wq_addr_mtx; -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) #ifdef _KERN_LOCKS_H_ lck_mtx_t *ipi_addr_mtx; lck_mtx_t *ipi_count_mtx; @@ -233,13 +226,12 @@ struct sctp_epinfo { void *ipi_count_mtx; void *logging_mtx; #endif /* _KERN_LOCKS_H_ */ -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) struct rwlock ipi_ep_lock; struct rwlock ipi_addr_lock; struct spinlock ipi_pktlog_mtx; struct rwlock wq_addr_mtx; #elif defined(__Userspace__) - /* TODO decide on __Userspace__ locks */ #endif uint32_t ipi_count_ep; @@ -284,14 +276,17 @@ struct sctp_epinfo { #endif }; - struct sctp_base_info { /* All static structures that * anchor the system must be here. */ struct sctp_epinfo sctppcbinfo; -#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) struct sctpstat *sctpstat; +#else + struct sctpstat sctpstat; +#endif #else struct sctpstat sctpstat; #endif @@ -303,33 +298,51 @@ struct sctp_base_info { int packet_log_end; uint8_t packet_log_buffer[SCTP_PACKET_LOG_SIZE]; #endif -#if defined(__APPLE__) +#if defined(__FreeBSD__) && !defined(__Userspace__) + eventhandler_tag eh_tag; +#endif +#if defined(__APPLE__) && !defined(__Userspace__) int sctp_main_timer_ticks; #endif #if defined(__Userspace__) userland_mutex_t timer_mtx; userland_thread_t timer_thread; - uint8_t timer_thread_should_exit; -#if !defined(__Userspace_os_Windows) + int timer_thread_should_exit; + int iterator_thread_started; + int timer_thread_started; +#if !defined(_WIN32) + pthread_mutexattr_t mtx_attr; + pthread_rwlockattr_t rwlock_attr; #if defined(INET) || defined(INET6) int userspace_route; userland_thread_t recvthreadroute; #endif #endif #ifdef INET +#if defined(_WIN32) && !defined(__MINGW32__) + SOCKET userspace_rawsctp; + SOCKET userspace_udpsctp; +#else int userspace_rawsctp; int userspace_udpsctp; +#endif userland_thread_t recvthreadraw; userland_thread_t recvthreadudp; #endif #ifdef INET6 +#if defined(_WIN32) && !defined(__MINGW32__) + SOCKET userspace_rawsctp6; + SOCKET userspace_udpsctp6; +#else int userspace_rawsctp6; int userspace_udpsctp6; +#endif userland_thread_t recvthreadraw6; userland_thread_t recvthreadudp6; #endif int (*conn_output)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df); void (*debug_printf)(const char *format, ...); + int crc32c_offloaded; #endif }; @@ -344,11 +357,11 @@ struct sctp_pcb { uint32_t secret_key[SCTP_HOW_MANY_SECRETS][SCTP_NUMBER_OF_SECRETS]; unsigned int size_of_a_cookie; - unsigned int sctp_timeoutticks[SCTP_NUM_TMRS]; - unsigned int sctp_minrto; - unsigned int sctp_maxrto; - unsigned int initial_rto; - int initial_init_rto_max; + uint32_t sctp_timeoutticks[SCTP_NUM_TMRS]; + uint32_t sctp_minrto; + uint32_t sctp_maxrto; + uint32_t initial_rto; + uint32_t initial_init_rto_max; unsigned int sctp_sack_freq; uint32_t sctp_sws_sender; @@ -361,6 +374,7 @@ struct sctp_pcb { sctp_auth_chklist_t *local_auth_chunks; sctp_hmaclist_t *local_hmacs; uint16_t default_keyid; + uint32_t default_mtu; /* various thresholds */ /* Max times I will init at a guy */ @@ -388,13 +402,9 @@ struct sctp_pcb { */ struct sctp_timer signature_change; - /* Zero copy full buffer timer */ - struct sctp_timer zero_copy_timer; - /* Zero copy app to transport (sendq) read repulse timer */ - struct sctp_timer zero_copy_sendq_timer; uint32_t def_cookie_life; /* defaults to 0 */ - int auto_close_time; + uint32_t auto_close_time; uint32_t initial_sequence_debug; uint32_t adaptation_layer_indicator; uint8_t adaptation_layer_indicator_provided; @@ -429,19 +439,17 @@ struct sctp_pcbtsn_rlog { }; #define SCTP_READ_LOG_SIZE 135 /* we choose the number to make a pcb a page */ - struct sctp_inpcb { /*- * put an inpcb in front of it all, kind of a waste but we need to - * for compatability with all the other stuff. + * for compatibility with all the other stuff. */ union { struct inpcb inp; - char align[(sizeof(struct in6pcb) + SCTP_ALIGNM1) & + char align[(sizeof(struct inpcb) + SCTP_ALIGNM1) & ~SCTP_ALIGNM1]; } ip_inp; - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) /* leave some space in case i386 inpcb is bigger than ppc */ uint8_t padding[128]; #endif @@ -450,7 +458,7 @@ struct sctp_inpcb { struct sctp_readhead read_queue; LIST_ENTRY(sctp_inpcb) sctp_list; /* lists all endpoints */ - /* hash of all endpoints for model */ + /* hash of all endpoints for model */ LIST_ENTRY(sctp_inpcb) sctp_hash; /* count of local addresses bound, 0 if bound all */ int laddr_count; @@ -474,7 +482,6 @@ struct sctp_inpcb { #ifdef SCTP_TRACK_FREED_ASOCS struct sctpasochead sctp_asoc_free_list; #endif - struct sctp_iterator *inp_starting_point_for_iterator; uint32_t sctp_frag_point; uint32_t partial_delivery_point; uint32_t sctp_context; @@ -484,10 +491,12 @@ struct sctp_inpcb { uint8_t ecn_supported; uint8_t prsctp_supported; uint8_t auth_supported; + uint8_t idata_supported; uint8_t asconf_supported; uint8_t reconfig_supported; uint8_t nrsack_supported; uint8_t pktdrop_supported; + uint8_t zero_checksum; struct sctp_nonpad_sndrcvinfo def_send; /*- * These three are here for the sosend_dgram @@ -497,26 +506,9 @@ struct sctp_inpcb { * they are candidates with sctp_sendm for * de-supporting. */ -#ifdef __Panda__ - pakhandle_type pak_to_read; - pakhandle_type pak_to_read_sendq; -#endif struct mbuf *pkt, *pkt_last; struct mbuf *control; -#if !(defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__)) -#ifndef INP_IPV6 -#define INP_IPV6 0x1 -#endif -#ifndef INP_IPV4 -#define INP_IPV4 0x2 -#endif - uint8_t inp_vflag; - /* TODO __Userspace__ where is our inp_vlag going to be? */ - uint8_t inp_ip_ttl; - uint8_t inp_ip_tos; /* defined as macro in user_inpcb.h */ - uint8_t inp_ip_resv; -#endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 503000 +#if defined(__FreeBSD__) && !defined(__Userspace__) struct mtx inp_mtx; struct mtx inp_create_mtx; struct mtx inp_rdata_mtx; @@ -526,7 +518,7 @@ struct sctp_inpcb { userland_mutex_t inp_create_mtx; userland_mutex_t inp_rdata_mtx; int32_t refcount; -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) #if defined(SCTP_APPLE_RWLOCK) lck_rw_t *inp_mtx; #else @@ -534,16 +526,15 @@ struct sctp_inpcb { #endif lck_mtx_t *inp_create_mtx; lck_mtx_t *inp_rdata_mtx; -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) struct rwlock inp_lock; struct spinlock inp_create_lock; struct spinlock inp_rdata_lock; int32_t refcount; #elif defined(__Userspace__) - /* TODO decide on __Userspace__ locks */ int32_t refcount; #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) int32_t refcount; uint32_t lock_caller1; @@ -564,6 +555,7 @@ struct sctp_inpcb { uint32_t i_am_here_line; #endif uint32_t def_vrf_id; + uint16_t fibnum; #ifdef SCTP_MVRF uint32_t *m_vrf_ids; uint32_t num_vrfs; @@ -586,7 +578,7 @@ struct sctp_inpcb { int (*recv_callback)(struct socket *, union sctp_sockstore, void *, size_t, struct sctp_rcvinfo, int, void *); uint32_t send_sb_threshold; - int (*send_callback)(struct socket *, uint32_t); + int (*send_callback)(struct socket *, uint32_t, void *); #endif }; @@ -594,8 +586,9 @@ struct sctp_inpcb { int register_recv_cb (struct socket *, int (*)(struct socket *, union sctp_sockstore, void *, size_t, struct sctp_rcvinfo, int, void *)); -int register_send_cb (struct socket *, uint32_t, int (*)(struct socket *, uint32_t)); +int register_send_cb (struct socket *, uint32_t, int (*)(struct socket *, uint32_t, void *)); int register_ulp_info (struct socket *, void *); +int retrieve_ulp_info (struct socket *, void **); #endif struct sctp_tcb { @@ -623,34 +616,26 @@ struct sctp_tcb { int freed_from_where; uint16_t rport; /* remote port in network format */ uint16_t resv; -#if defined(__FreeBSD__) && __FreeBSD_version >= 503000 +#if defined(__FreeBSD__) && !defined(__Userspace__) struct mtx tcb_mtx; - struct mtx tcb_send_mtx; #elif defined(SCTP_PROCESS_LEVEL_LOCKS) userland_mutex_t tcb_mtx; - userland_mutex_t tcb_send_mtx; -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) lck_mtx_t* tcb_mtx; - lck_mtx_t* tcb_send_mtx; -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) struct spinlock tcb_lock; - struct spinlock tcb_send_lock; #elif defined(__Userspace__) - /* TODO decide on __Userspace__ locks */ #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) uint32_t caller1; uint32_t caller2; uint32_t caller3; #endif }; - -#if defined(__FreeBSD__) && __FreeBSD_version >= 503000 - +#if defined(__FreeBSD__) && !defined(__Userspace__) #include - -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) /* * Apple MacOS X 10.4 "Tiger" */ @@ -661,7 +646,7 @@ struct sctp_tcb { #include -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) #include @@ -676,15 +661,14 @@ struct sctp_tcb { #include #endif -/* TODO where to put non-_KERNEL things for __Userspace__? */ #if defined(_KERNEL) || defined(__Userspace__) /* Attention Julian, this is the extern that * goes with the base info. sctp_pcb.c has * the real definition. */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 -VNET_DECLARE(struct sctp_base_info, system_base_info) ; +#if defined(__FreeBSD__) && !defined(__Userspace__) +VNET_DECLARE(struct sctp_base_info, system_base_info); #else extern struct sctp_base_info system_base_info; #endif @@ -726,26 +710,35 @@ void sctp_update_ifn_mtu(uint32_t ifn_index, uint32_t mtu); void sctp_free_ifn(struct sctp_ifn *sctp_ifnp); void sctp_free_ifa(struct sctp_ifa *sctp_ifap); - void sctp_del_addr_from_vrf(uint32_t vrfid, struct sockaddr *addr, uint32_t ifn_index, const char *if_name); - - struct sctp_nets *sctp_findnet(struct sctp_tcb *, struct sockaddr *); struct sctp_inpcb *sctp_pcb_findep(struct sockaddr *, int, int, uint32_t); -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -int sctp_inpcb_bind(struct socket *, struct sockaddr *, - struct sctp_ifa *,struct thread *); -#elif defined(__Windows__) -int sctp_inpcb_bind(struct socket *, struct sockaddr *, - struct sctp_ifa *,PKTHREAD); +#if defined(__FreeBSD__) && !defined(__Userspace__) +int +sctp_inpcb_bind(struct socket *, struct sockaddr *, + struct sctp_ifa *, struct thread *); +int +sctp_inpcb_bind_locked(struct sctp_inpcb *, struct sockaddr *, + struct sctp_ifa *, struct thread *); +#elif defined(_WIN32) && !defined(__Userspace__) +int +sctp_inpcb_bind(struct socket *, struct sockaddr *, + struct sctp_ifa *, PKTHREAD); +int +sctp_inpcb_bind_locked(struct sctp_inpcb *, struct sockaddr *, + struct sctp_ifa *, PKTHREAD); #else /* struct proc is a dummy for __Userspace__ */ -int sctp_inpcb_bind(struct socket *, struct sockaddr *, - struct sctp_ifa *, struct proc *); +int +sctp_inpcb_bind(struct socket *, struct sockaddr *, + struct sctp_ifa *, struct proc *); +int +sctp_inpcb_bind_locked(struct sctp_inpcb *, struct sockaddr *, + struct sctp_ifa *, struct proc *); #endif struct sctp_tcb * @@ -790,46 +783,52 @@ int sctp_is_address_on_local_host(struct sockaddr *addr, uint32_t vrf_id); void sctp_inpcb_free(struct sctp_inpcb *, int, int); -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#define SCTP_DONT_INITIALIZE_AUTH_PARAMS 0 +#define SCTP_INITIALIZE_AUTH_PARAMS 1 + +#if defined(__FreeBSD__) && !defined(__Userspace__) struct sctp_tcb * sctp_aloc_assoc(struct sctp_inpcb *, struct sockaddr *, - int *, uint32_t, uint32_t, struct thread *); -#elif defined(__Windows__) + int *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, + struct thread *, int); struct sctp_tcb * -sctp_aloc_assoc(struct sctp_inpcb *, struct sockaddr *, - int *, uint32_t, uint32_t, PKTHREAD); +sctp_aloc_assoc_connected(struct sctp_inpcb *, struct sockaddr *, + int *, uint32_t, uint32_t, uint32_t, uint16_t, uint16_t, + struct thread *, int); +#elif defined(_WIN32) && !defined(__Userspace__) +struct sctp_tcb * +sctp_aloc_assoc(struct sctp_inpcb *, struct sockaddr *, int *, uint32_t, + uint32_t, uint32_t, uint16_t, uint16_t, PKTHREAD, int); +struct sctp_tcb * +sctp_aloc_assoc_connected(struct sctp_inpcb *, struct sockaddr *, int *, uint32_t, + uint32_t, uint32_t, uint16_t, uint16_t, PKTHREAD, int); #else /* proc will be NULL for __Userspace__ */ struct sctp_tcb * -sctp_aloc_assoc(struct sctp_inpcb *, struct sockaddr *, - int *, uint32_t, uint32_t, struct proc *); +sctp_aloc_assoc(struct sctp_inpcb *, struct sockaddr *, int *, uint32_t, + uint32_t, uint32_t, uint16_t, uint16_t, struct proc *, int); +struct sctp_tcb * +sctp_aloc_assoc_connected(struct sctp_inpcb *, struct sockaddr *, int *, uint32_t, + uint32_t, uint32_t, uint16_t, uint16_t, struct proc *, int); #endif int sctp_free_assoc(struct sctp_inpcb *, struct sctp_tcb *, int, int); - -void sctp_delete_from_timewait(uint32_t, uint16_t, uint16_t); - -int sctp_is_in_timewait(uint32_t tag, uint16_t lport, uint16_t rport); - -void -sctp_add_vtag_to_timewait(uint32_t tag, uint32_t time, uint16_t lport, uint16_t rport); - void sctp_add_local_addr_ep(struct sctp_inpcb *, struct sctp_ifa *, uint32_t); -int sctp_insert_laddr(struct sctpladdr *, struct sctp_ifa *, uint32_t); - -void sctp_remove_laddr(struct sctp_laddr *); - void sctp_del_local_addr_ep(struct sctp_inpcb *, struct sctp_ifa *); -int sctp_add_remote_addr(struct sctp_tcb *, struct sockaddr *, struct sctp_nets **, int, int); +int sctp_add_remote_addr(struct sctp_tcb *, struct sockaddr *, struct sctp_nets **, uint16_t, int, int); void sctp_remove_net(struct sctp_tcb *, struct sctp_nets *); int sctp_del_remote_addr(struct sctp_tcb *, struct sockaddr *); +#if defined(__Userspace__) +void sctp_pcb_init(int); +#else void sctp_pcb_init(void); +#endif void sctp_pcb_finish(void); @@ -838,19 +837,24 @@ void sctp_del_local_addr_restricted(struct sctp_tcb *, struct sctp_ifa *); int sctp_load_addresses_from_init(struct sctp_tcb *, struct mbuf *, int, int, - struct sockaddr *, struct sockaddr *, struct sockaddr *); + struct sockaddr *, struct sockaddr *, struct sockaddr *, uint16_t); int sctp_set_primary_addr(struct sctp_tcb *, struct sockaddr *, struct sctp_nets *); -int sctp_is_vtag_good(uint32_t, uint16_t lport, uint16_t rport, struct timeval *); - +bool +sctp_is_vtag_good(uint32_t, uint16_t lport, uint16_t rport, struct timeval *); int sctp_destination_is_reachable(struct sctp_tcb *, struct sockaddr *); int sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp); +void sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh); + +void +sctp_pcb_add_flags(struct sctp_inpcb *, uint32_t); + /*- * Null in last arg inpcb indicate run on ALL ep's. Specific inp in last arg * indicates run on ONLY assoc's of the specified endpoint. @@ -865,15 +869,12 @@ sctp_initiate_iterator(inp_func inpf, end_func ef, struct sctp_inpcb *, uint8_t co_off); -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) void sctp_queue_to_mcore(struct mbuf *m, int off, int cpu_to_use); #endif - -#ifdef INVARIANTS -void -sctp_validate_no_locks(struct sctp_inpcb *inp); #endif #endif /* _KERNEL */ diff --git a/netwerk/sctp/src/netinet/sctp_peeloff.c b/netwerk/sctp/src/netinet/sctp_peeloff.c index 7f21f86f98..548c3d82b2 100755 --- a/netwerk/sctp/src/netinet/sctp_peeloff.c +++ b/netwerk/sctp/src/netinet/sctp_peeloff.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_peeloff.c 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -47,10 +49,6 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_peeloff.c 279859 2015-03-10 19:49:25Z #include #include -#if defined(__APPLE__) -#define APPLE_FILE_NO 5 -#endif - int sctp_can_peel_off(struct socket *head, sctp_assoc_t assoc_id) { @@ -77,7 +75,7 @@ sctp_can_peel_off(struct socket *head, sctp_assoc_t assoc_id) SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_PEELOFF, ENOENT); return (ENOENT); } - state = SCTP_GET_STATE((&stcb->asoc)); + state = SCTP_GET_STATE(stcb); if ((state == SCTP_STATE_EMPTY) || (state == SCTP_STATE_INUSE)) { SCTP_TCB_UNLOCK(stcb); @@ -107,7 +105,7 @@ sctp_do_peeloff(struct socket *head, struct socket *so, sctp_assoc_t assoc_id) return (ENOTCONN); } - state = SCTP_GET_STATE((&stcb->asoc)); + state = SCTP_GET_STATE(stcb); if ((state == SCTP_STATE_EMPTY) || (state == SCTP_STATE_INUSE)) { SCTP_TCB_UNLOCK(stcb); @@ -136,7 +134,6 @@ sctp_do_peeloff(struct socket *head, struct socket *so, sctp_assoc_t assoc_id) n_inp->sctp_context = inp->sctp_context; n_inp->max_cwnd = inp->max_cwnd; n_inp->local_strreset_support = inp->local_strreset_support; - n_inp->inp_starting_point_for_iterator = NULL; /* copy in the authentication parameters from the original endpoint */ if (n_inp->sctp_ep.local_hmacs) sctp_free_hmaclist(n_inp->sctp_ep.local_hmacs); @@ -162,7 +159,7 @@ sctp_do_peeloff(struct socket *head, struct socket *so, sctp_assoc_t assoc_id) atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_pull_off_control_to_new_inp(inp, n_inp, stcb, SBL_WAIT); #else sctp_pull_off_control_to_new_inp(inp, n_inp, stcb, M_WAITOK); @@ -176,14 +173,6 @@ sctp_do_peeloff(struct socket *head, struct socket *so, sctp_assoc_t assoc_id) struct socket * sctp_get_peeloff(struct socket *head, sctp_assoc_t assoc_id, int *error) { -#if defined(__Userspace__) - /* if __Userspace__ chooses to originally not support peeloff, put it here... */ -#endif -#if defined(__Panda__) - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_PEELOFF, EINVAL); - *error = EINVAL; - return (NULL); -#else struct socket *newso; struct sctp_inpcb *inp, *n_inp; struct sctp_tcb *stcb; @@ -203,18 +192,15 @@ sctp_get_peeloff(struct socket *head, sctp_assoc_t assoc_id, int *error) } atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_SET(head->so_vnet); #endif newso = sonewconn(head, SS_ISCONNECTED -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) , NULL -#elif defined(__Panda__) - /* place this socket in the assoc's vrf id */ - , NULL, stcb->asoc.vrf_id #endif ); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_RESTORE(); #endif if (newso == NULL) { @@ -225,7 +211,7 @@ sctp_get_peeloff(struct socket *head, sctp_assoc_t assoc_id, int *error) return (NULL); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) else { SCTP_SOCKET_LOCK(newso, 1); } @@ -277,14 +263,15 @@ sctp_get_peeloff(struct socket *head, sctp_assoc_t assoc_id, int *error) sctp_feature_off(n_inp, SCTP_PCB_FLAGS_AUTOCLOSE); n_inp->sctp_ep.auto_close_time = 0; sctp_timer_stop(SCTP_TIMER_TYPE_AUTOCLOSE, n_inp, stcb, NULL, - SCTP_FROM_SCTP_PEELOFF+SCTP_LOC_1); + SCTP_FROM_SCTP_PEELOFF + SCTP_LOC_1); } /* Turn off any non-blocking semantic. */ + SOCK_LOCK(newso); SCTP_CLEAR_SO_NBIO(newso); - newso->so_state |= SS_ISCONNECTED; + newso->so_state |= SS_ISCONNECTED; + SOCK_UNLOCK(newso); /* We remove it right away */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) #ifdef SCTP_LOCK_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) { sctp_log_lock(inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_SOCK); @@ -293,34 +280,23 @@ sctp_get_peeloff(struct socket *head, sctp_assoc_t assoc_id, int *error) TAILQ_REMOVE(&head->so_comp, newso, so_list); head->so_qlen--; SOCK_UNLOCK(head); -#else - newso = TAILQ_FIRST(&head->so_q); - if (soqremque(newso, 1) == 0) { - SCTP_PRINTF("soremque failed, peeloff-fails (invarients would panic)\n"); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PEELOFF, ENOTCONN); - *error = ENOTCONN; - return (NULL); - - } -#endif /* * Now we must move it from one hash table to another and get the * stcb in the right place. */ - sctp_move_pcb_and_assoc(inp, n_inp, stcb); + sctp_move_pcb_and_assoc(inp, n_inp, stcb); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); /* * And now the final hack. We move data in the pending side i.e. * head to the new socket buffer. Let the GRUBBING begin :-0 */ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_pull_off_control_to_new_inp(inp, n_inp, stcb, SBL_WAIT); #else sctp_pull_off_control_to_new_inp(inp, n_inp, stcb, M_WAITOK); #endif atomic_subtract_int(&stcb->asoc.refcnt, 1); return (newso); -#endif } #endif diff --git a/netwerk/sctp/src/netinet/sctp_peeloff.h b/netwerk/sctp/src/netinet/sctp_peeloff.h index 69f48065cd..c22bfca929 100755 --- a/netwerk/sctp/src/netinet/sctp_peeloff.h +++ b/netwerk/sctp/src/netinet/sctp_peeloff.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_peeloff.h 243516 2012-11-25 14:25:08Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_PEELOFF_H_ @@ -40,13 +42,13 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_peeloff.h 243516 2012-11-25 14:25:08Z #if defined(HAVE_SCTP_PEELOFF_SOCKOPT) /* socket option peeloff */ struct sctp_peeloff_opt { -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) int s; #else HANDLE s; #endif sctp_assoc_t assoc_id; -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) int new_sd; #else HANDLE new_sd; diff --git a/netwerk/sctp/src/netinet/sctp_process_lock.h b/netwerk/sctp/src/netinet/sctp_process_lock.h index 1d109857a2..165c6e4eab 100755 --- a/netwerk/sctp/src/netinet/sctp_process_lock.h +++ b/netwerk/sctp/src/netinet/sctp_process_lock.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2011, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2011, by Michael Tuexen. All rights reserved. @@ -51,13 +53,16 @@ * per socket level locking */ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) /* Lock for INFO stuff */ #define SCTP_INP_INFO_LOCK_INIT() #define SCTP_INP_INFO_RLOCK() #define SCTP_INP_INFO_RUNLOCK() #define SCTP_INP_INFO_WLOCK() #define SCTP_INP_INFO_WUNLOCK() +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() #define SCTP_INP_INFO_LOCK_DESTROY() #define SCTP_IPI_COUNT_INIT() #define SCTP_IPI_COUNT_DESTROY() @@ -67,16 +72,14 @@ #define SCTP_INP_INFO_RUNLOCK() #define SCTP_INP_INFO_WLOCK() #define SCTP_INP_INFO_WUNLOCK() +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() #define SCTP_INP_INFO_LOCK_DESTROY() #define SCTP_IPI_COUNT_INIT() #define SCTP_IPI_COUNT_DESTROY() #endif -#define SCTP_TCB_SEND_LOCK_INIT(_tcb) -#define SCTP_TCB_SEND_LOCK_DESTROY(_tcb) -#define SCTP_TCB_SEND_LOCK(_tcb) -#define SCTP_TCB_SEND_UNLOCK(_tcb) - /* Lock for INP */ #define SCTP_INP_LOCK_INIT(_inp) #define SCTP_INP_LOCK_DESTROY(_inp) @@ -84,7 +87,9 @@ #define SCTP_INP_RLOCK(_inp) #define SCTP_INP_RUNLOCK(_inp) #define SCTP_INP_WLOCK(_inp) -#define SCTP_INP_WUNLOCK(_inep) +#define SCTP_INP_WUNLOCK(_inp) +#define SCTP_INP_RLOCK_ASSERT(_inp) +#define SCTP_INP_WLOCK_ASSERT(_inp) #define SCTP_INP_INCR_REF(_inp) #define SCTP_INP_DECR_REF(_inp) @@ -113,17 +118,18 @@ */ #define SCTP_IPI_COUNT_INIT() -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define SCTP_WQ_ADDR_INIT() \ - InitializeCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) + InitializeCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) #define SCTP_WQ_ADDR_DESTROY() \ DeleteCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) #define SCTP_WQ_ADDR_LOCK() \ - EnterCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) + EnterCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) #define SCTP_WQ_ADDR_UNLOCK() \ - LeaveCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) - + LeaveCriticalSection(&SCTP_BASE_INFO(wq_addr_mtx)) +#define SCTP_WQ_ADDR_LOCK_ASSERT() +#if WINVER < 0x0600 #define SCTP_INP_INFO_LOCK_INIT() \ InitializeCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) #define SCTP_INP_INFO_LOCK_DESTROY() \ @@ -131,20 +137,41 @@ #define SCTP_INP_INFO_RLOCK() \ EnterCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) #define SCTP_INP_INFO_TRYLOCK() \ - TryEnterCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) + TryEnterCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) #define SCTP_INP_INFO_WLOCK() \ EnterCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) #define SCTP_INP_INFO_RUNLOCK() \ - LeaveCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) + LeaveCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) #define SCTP_INP_INFO_WUNLOCK() \ LeaveCriticalSection(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() +#else +#define SCTP_INP_INFO_LOCK_INIT() \ + InitializeSRWLock(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_LOCK_DESTROY() +#define SCTP_INP_INFO_RLOCK() \ + AcquireSRWLockShared(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_TRYLOCK() \ + TryAcquireSRWLockShared(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_WLOCK() \ + AcquireSRWLockExclusive(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_RUNLOCK() \ + ReleaseSRWLockShared(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_WUNLOCK() \ + ReleaseSRWLockExclusive(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() +#endif #define SCTP_IP_PKTLOG_INIT() \ - InitializeCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) + InitializeCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) #define SCTP_IP_PKTLOG_DESTROY () \ DeleteCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) #define SCTP_IP_PKTLOG_LOCK() \ - EnterCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) + EnterCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) #define SCTP_IP_PKTLOG_UNLOCK() \ LeaveCriticalSection(&SCTP_BASE_INFO(ipi_pktlog_mtx)) @@ -164,63 +191,44 @@ #define SCTP_INP_LOCK_INIT(_inp) \ InitializeCriticalSection(&(_inp)->inp_mtx) - -#define SCTP_ASOC_CREATE_LOCK_INIT(_inp) \ - InitializeCriticalSection(&(_inp)->inp_create_mtx) - #define SCTP_INP_LOCK_DESTROY(_inp) \ DeleteCriticalSection(&(_inp)->inp_mtx) - -#define SCTP_ASOC_CREATE_LOCK_DESTROY(_inp) \ - DeleteCriticalSection(&(_inp)->inp_create_mtx) - #ifdef SCTP_LOCK_LOGGING -#define SCTP_INP_RLOCK(_inp) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_INP);\ - EnterCriticalSection(&(_inp)->inp_mtx); \ +#define SCTP_INP_RLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + EnterCriticalSection(&(_inp)->inp_mtx); \ } while (0) - -#define SCTP_INP_WLOCK(_inp) do { \ - sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_INP);\ - EnterCriticalSection(&(_inp)->inp_mtx); \ +#define SCTP_INP_WLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + EnterCriticalSection(&(_inp)->inp_mtx); \ } while (0) #else - -#define SCTP_INP_RLOCK(_inp) do { \ - EnterCriticalSection(&(_inp)->inp_mtx); \ -} while (0) - -#define SCTP_INP_WLOCK(_inp) do { \ - EnterCriticalSection(&(_inp)->inp_mtx); \ -} while (0) +#define SCTP_INP_RLOCK(_inp) \ + EnterCriticalSection(&(_inp)->inp_mtx) +#define SCTP_INP_WLOCK(_inp) \ + EnterCriticalSection(&(_inp)->inp_mtx) #endif - - -#define SCTP_TCB_SEND_LOCK_INIT(_tcb) \ - InitializeCriticalSection(&(_tcb)->tcb_send_mtx) - -#define SCTP_TCB_SEND_LOCK_DESTROY(_tcb) \ - DeleteCriticalSection(&(_tcb)->tcb_send_mtx) - -#define SCTP_TCB_SEND_LOCK(_tcb) do { \ - EnterCriticalSection(&(_tcb)->tcb_send_mtx); \ -} while (0) - -#define SCTP_TCB_SEND_UNLOCK(_tcb) \ - LeaveCriticalSection(&(_tcb)->tcb_send_mtx) +#define SCTP_INP_RLOCK_ASSERT(_tcb) +#define SCTP_INP_WLOCK_ASSERT(_tcb) #define SCTP_INP_INCR_REF(_inp) atomic_add_int(&((_inp)->refcount), 1) -#define SCTP_INP_DECR_REF(_inp) atomic_add_int(&((_inp)->refcount), -1) +#define SCTP_INP_DECR_REF(_inp) atomic_subtract_int(&((_inp)->refcount), 1) +#define SCTP_ASOC_CREATE_LOCK_INIT(_inp) \ + InitializeCriticalSection(&(_inp)->inp_create_mtx) +#define SCTP_ASOC_CREATE_LOCK_DESTROY(_inp) \ + DeleteCriticalSection(&(_inp)->inp_create_mtx) #ifdef SCTP_LOCK_LOGGING -#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_CREATE); \ - EnterCriticalSection(&(_inp)->inp_create_mtx); \ +#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_CREATE); \ + EnterCriticalSection(&(_inp)->inp_create_mtx); \ } while (0) #else -#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ - EnterCriticalSection(&(_inp)->inp_create_mtx); \ -} while (0) +#define SCTP_ASOC_CREATE_LOCK(_inp) \ + EnterCriticalSection(&(_inp)->inp_create_mtx) #endif #define SCTP_INP_RUNLOCK(_inp) \ @@ -240,65 +248,86 @@ #define SCTP_TCB_LOCK_INIT(_tcb) \ InitializeCriticalSection(&(_tcb)->tcb_mtx) - #define SCTP_TCB_LOCK_DESTROY(_tcb) \ DeleteCriticalSection(&(_tcb)->tcb_mtx) - #ifdef SCTP_LOCK_LOGGING -#define SCTP_TCB_LOCK(_tcb) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_tcb->sctp_ep, _tcb, SCTP_LOG_LOCK_TCB); \ - EnterCriticalSection(&(_tcb)->tcb_mtx); \ +#define SCTP_TCB_LOCK(_tcb) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_tcb->sctp_ep, _tcb, SCTP_LOG_LOCK_TCB); \ + EnterCriticalSection(&(_tcb)->tcb_mtx); \ } while (0) - #else -#define SCTP_TCB_LOCK(_tcb) do { \ - EnterCriticalSection(&(_tcb)->tcb_mtx); \ -} while (0) +#define SCTP_TCB_LOCK(_tcb) \ + EnterCriticalSection(&(_tcb)->tcb_mtx) #endif - #define SCTP_TCB_TRYLOCK(_tcb) ((TryEnterCriticalSection(&(_tcb)->tcb_mtx))) - -#define SCTP_TCB_UNLOCK(_tcb) do { \ - LeaveCriticalSection(&(_tcb)->tcb_mtx); \ -} while (0) - +#define SCTP_TCB_UNLOCK(_tcb) \ + LeaveCriticalSection(&(_tcb)->tcb_mtx) #define SCTP_TCB_LOCK_ASSERT(_tcb) #else /* all Userspaces except Windows */ #define SCTP_WQ_ADDR_INIT() \ - (void)pthread_mutex_init(&SCTP_BASE_INFO(wq_addr_mtx), NULL) + (void)pthread_mutex_init(&SCTP_BASE_INFO(wq_addr_mtx), &SCTP_BASE_VAR(mtx_attr)) #define SCTP_WQ_ADDR_DESTROY() \ (void)pthread_mutex_destroy(&SCTP_BASE_INFO(wq_addr_mtx)) +#ifdef INVARIANTS #define SCTP_WQ_ADDR_LOCK() \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(wq_addr_mtx)) + KASSERT(pthread_mutex_lock(&SCTP_BASE_INFO(wq_addr_mtx)) == 0, ("%s:%d: wq_addr_mtx already locked", __FILE__, __LINE__)) #define SCTP_WQ_ADDR_UNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(wq_addr_mtx)) - + KASSERT(pthread_mutex_unlock(&SCTP_BASE_INFO(wq_addr_mtx)) == 0, ("%s:%d: wq_addr_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_WQ_ADDR_LOCK() \ + (void)pthread_mutex_lock(&SCTP_BASE_INFO(wq_addr_mtx)) +#define SCTP_WQ_ADDR_UNLOCK() \ + (void)pthread_mutex_unlock(&SCTP_BASE_INFO(wq_addr_mtx)) +#endif +#define SCTP_WQ_ADDR_LOCK_ASSERT() \ + KASSERT(pthread_mutex_trylock(&SCTP_BASE_INFO(wq_addr_mtx)) == EBUSY, ("%s:%d: wq_addr_mtx not locked", __FILE__, __LINE__)) #define SCTP_INP_INFO_LOCK_INIT() \ - (void)pthread_mutex_init(&SCTP_BASE_INFO(ipi_ep_mtx), NULL) + (void)pthread_rwlock_init(&SCTP_BASE_INFO(ipi_ep_mtx), &SCTP_BASE_VAR(rwlock_attr)) #define SCTP_INP_INFO_LOCK_DESTROY() \ - (void)pthread_mutex_destroy(&SCTP_BASE_INFO(ipi_ep_mtx)) + (void)pthread_rwlock_destroy(&SCTP_BASE_INFO(ipi_ep_mtx)) +#ifdef INVARIANTS #define SCTP_INP_INFO_RLOCK() \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_ep_mtx)) -#define SCTP_INP_INFO_TRYLOCK() \ - (!(pthread_mutex_trylock(&SCTP_BASE_INFO(ipi_ep_mtx)))) + KASSERT(pthread_rwlock_rdlock(&SCTP_BASE_INFO(ipi_ep_mtx)) == 0, ("%s%d: ipi_ep_mtx already locked", __FILE__, __LINE__)) #define SCTP_INP_INFO_WLOCK() \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_ep_mtx)) -#define SCTP_INP_INFO_RUNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) -#define SCTP_INP_INFO_WUNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) + KASSERT(pthread_rwlock_wrlock(&SCTP_BASE_INFO(ipi_ep_mtx)) == 0, ("%s:%d: ipi_ep_mtx already locked", __FILE__, __LINE__)) +#define SCTP_INP_INFO_RUNLOCK() \ + KASSERT(pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) == 0, ("%s:%d: ipi_ep_mtx not locked", __FILE__, __LINE__)) +#define SCTP_INP_INFO_WUNLOCK() \ + KASSERT(pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) == 0, ("%s:%d: ipi_ep_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_INP_INFO_RLOCK() \ + (void)pthread_rwlock_rdlock(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_WLOCK() \ + (void)pthread_rwlock_wrlock(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_RUNLOCK() \ + (void)pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) +#define SCTP_INP_INFO_WUNLOCK() \ + (void)pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_ep_mtx)) +#endif +#define SCTP_INP_INFO_LOCK_ASSERT() +#define SCTP_INP_INFO_RLOCK_ASSERT() +#define SCTP_INP_INFO_WLOCK_ASSERT() +#define SCTP_INP_INFO_TRYLOCK() \ + (!(pthread_rwlock_tryrdlock(&SCTP_BASE_INFO(ipi_ep_mtx)))) #define SCTP_IP_PKTLOG_INIT() \ - (void)pthread_mutex_init(&SCTP_BASE_INFO(ipi_pktlog_mtx), NULL) + (void)pthread_mutex_init(&SCTP_BASE_INFO(ipi_pktlog_mtx), &SCTP_BASE_VAR(mtx_attr)) #define SCTP_IP_PKTLOG_DESTROY() \ (void)pthread_mutex_destroy(&SCTP_BASE_INFO(ipi_pktlog_mtx)) +#ifdef INVARIANTS #define SCTP_IP_PKTLOG_LOCK() \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) -#define SCTP_IP_PKTLOG_UNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) - + KASSERT(pthread_mutex_lock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) == 0, ("%s:%d: ipi_pktlog_mtx already locked", __FILE__, __LINE__)) +#define SCTP_IP_PKTLOG_UNLOCK() \ + KASSERT(pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) == 0, ("%s:%d: ipi_pktlog_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_IP_PKTLOG_LOCK() \ + (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) +#define SCTP_IP_PKTLOG_UNLOCK() \ + (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_pktlog_mtx)) +#endif /* @@ -307,88 +336,108 @@ * or cookie secrets we lock the INP level. */ #define SCTP_INP_READ_INIT(_inp) \ - (void)pthread_mutex_init(&(_inp)->inp_rdata_mtx, NULL) - + (void)pthread_mutex_init(&(_inp)->inp_rdata_mtx, &SCTP_BASE_VAR(mtx_attr)) #define SCTP_INP_READ_DESTROY(_inp) \ (void)pthread_mutex_destroy(&(_inp)->inp_rdata_mtx) - -#define SCTP_INP_READ_LOCK(_inp) do { \ - (void)pthread_mutex_lock(&(_inp)->inp_rdata_mtx); \ -} while (0) - - +#ifdef INVARIANTS +#define SCTP_INP_READ_LOCK(_inp) \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_rdata_mtx) == 0, ("%s:%d: inp_rdata_mtx already locked", __FILE__, __LINE__)) +#define SCTP_INP_READ_UNLOCK(_inp) \ + KASSERT(pthread_mutex_unlock(&(_inp)->inp_rdata_mtx) == 0, ("%s:%d: inp_rdata_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_INP_READ_LOCK(_inp) \ + (void)pthread_mutex_lock(&(_inp)->inp_rdata_mtx) #define SCTP_INP_READ_UNLOCK(_inp) \ (void)pthread_mutex_unlock(&(_inp)->inp_rdata_mtx) +#endif #define SCTP_INP_LOCK_INIT(_inp) \ - (void)pthread_mutex_init(&(_inp)->inp_mtx, NULL) - -#define SCTP_ASOC_CREATE_LOCK_INIT(_inp) \ - (void)pthread_mutex_init(&(_inp)->inp_create_mtx, NULL) - + (void)pthread_mutex_init(&(_inp)->inp_mtx, &SCTP_BASE_VAR(mtx_attr)) #define SCTP_INP_LOCK_DESTROY(_inp) \ (void)pthread_mutex_destroy(&(_inp)->inp_mtx) - -#define SCTP_ASOC_CREATE_LOCK_DESTROY(_inp) \ - (void)pthread_mutex_destroy(&(_inp)->inp_create_mtx) - +#ifdef INVARIANTS #ifdef SCTP_LOCK_LOGGING -#define SCTP_INP_RLOCK(_inp) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_INP);\ - (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ +#define SCTP_INP_RLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx already locked", __FILE__, __LINE__)); \ } while (0) - -#define SCTP_INP_WLOCK(_inp) do { \ - sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_INP);\ - (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ +#define SCTP_INP_WLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx already locked", __FILE__, __LINE__)); \ } while (0) - #else - -#define SCTP_INP_RLOCK(_inp) do { \ - (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ +#define SCTP_INP_RLOCK(_inp) \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx already locked", __FILE__, __LINE__)) +#define SCTP_INP_WLOCK(_inp) \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx already locked", __FILE__, __LINE__)) +#endif +#define SCTP_INP_RUNLOCK(_inp) \ + KASSERT(pthread_mutex_unlock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx not locked", __FILE__, __LINE__)) +#define SCTP_INP_WUNLOCK(_inp) \ + KASSERT(pthread_mutex_unlock(&(_inp)->inp_mtx) == 0, ("%s:%d: inp_mtx not locked", __FILE__, __LINE__)) +#else +#ifdef SCTP_LOCK_LOGGING +#define SCTP_INP_RLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ } while (0) - -#define SCTP_INP_WLOCK(_inp) do { \ - (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ +#define SCTP_INP_WLOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_INP); \ + (void)pthread_mutex_lock(&(_inp)->inp_mtx); \ } while (0) +#else +#define SCTP_INP_RLOCK(_inp) \ + (void)pthread_mutex_lock(&(_inp)->inp_mtx) +#define SCTP_INP_WLOCK(_inp) \ + (void)pthread_mutex_lock(&(_inp)->inp_mtx) #endif - - -#define SCTP_TCB_SEND_LOCK_INIT(_tcb) \ - (void)pthread_mutex_init(&(_tcb)->tcb_send_mtx, NULL) - -#define SCTP_TCB_SEND_LOCK_DESTROY(_tcb) \ - (void)pthread_mutex_destroy(&(_tcb)->tcb_send_mtx) - -#define SCTP_TCB_SEND_LOCK(_tcb) do { \ - (void)pthread_mutex_lock(&(_tcb)->tcb_send_mtx); \ -} while (0) - -#define SCTP_TCB_SEND_UNLOCK(_tcb) \ - (void)pthread_mutex_unlock(&(_tcb)->tcb_send_mtx) - +#define SCTP_INP_RUNLOCK(_inp) \ + (void)pthread_mutex_unlock(&(_inp)->inp_mtx) +#define SCTP_INP_WUNLOCK(_inp) \ + (void)pthread_mutex_unlock(&(_inp)->inp_mtx) +#endif +#define SCTP_INP_RLOCK_ASSERT(_inp) \ + KASSERT(pthread_mutex_trylock(&(_inp)->inp_mtx) == EBUSY, ("%s:%d: inp_mtx not locked", __FILE__, __LINE__)) +#define SCTP_INP_WLOCK_ASSERT(_inp) \ + KASSERT(pthread_mutex_trylock(&(_inp)->inp_mtx) == EBUSY, ("%s:%d: inp_mtx not locked", __FILE__, __LINE__)) #define SCTP_INP_INCR_REF(_inp) atomic_add_int(&((_inp)->refcount), 1) -#define SCTP_INP_DECR_REF(_inp) atomic_add_int(&((_inp)->refcount), -1) +#define SCTP_INP_DECR_REF(_inp) atomic_subtract_int(&((_inp)->refcount), 1) +#define SCTP_ASOC_CREATE_LOCK_INIT(_inp) \ + (void)pthread_mutex_init(&(_inp)->inp_create_mtx, &SCTP_BASE_VAR(mtx_attr)) +#define SCTP_ASOC_CREATE_LOCK_DESTROY(_inp) \ + (void)pthread_mutex_destroy(&(_inp)->inp_create_mtx) +#ifdef INVARIANTS #ifdef SCTP_LOCK_LOGGING -#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_CREATE); \ - (void)pthread_mutex_lock(&(_inp)->inp_create_mtx); \ +#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_CREATE); \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_create_mtx) == 0, ("%s:%d: inp_create_mtx already locked", __FILE__, __LINE__)); \ } while (0) #else -#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ - (void)pthread_mutex_lock(&(_inp)->inp_create_mtx); \ +#define SCTP_ASOC_CREATE_LOCK(_inp) \ + KASSERT(pthread_mutex_lock(&(_inp)->inp_create_mtx) == 0, ("%s:%d: inp_create_mtx already locked", __FILE__, __LINE__)) +#endif +#define SCTP_ASOC_CREATE_UNLOCK(_inp) \ + KASSERT(pthread_mutex_unlock(&(_inp)->inp_create_mtx) == 0, ("%s:%d: inp_create_mtx not locked", __FILE__, __LINE__)) +#else +#ifdef SCTP_LOCK_LOGGING +#define SCTP_ASOC_CREATE_LOCK(_inp) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_inp, NULL, SCTP_LOG_LOCK_CREATE); \ + (void)pthread_mutex_lock(&(_inp)->inp_create_mtx); \ } while (0) +#else +#define SCTP_ASOC_CREATE_LOCK(_inp) \ + (void)pthread_mutex_lock(&(_inp)->inp_create_mtx) #endif - -#define SCTP_INP_RUNLOCK(_inp) \ - (void)pthread_mutex_unlock(&(_inp)->inp_mtx) -#define SCTP_INP_WUNLOCK(_inp) \ - (void)pthread_mutex_unlock(&(_inp)->inp_mtx) #define SCTP_ASOC_CREATE_UNLOCK(_inp) \ (void)pthread_mutex_unlock(&(_inp)->inp_create_mtx) - +#endif /* * For the majority of things (once we have found the association) we will * lock the actual association mutex. This will protect all the assoiciation @@ -398,28 +447,38 @@ */ #define SCTP_TCB_LOCK_INIT(_tcb) \ - (void)pthread_mutex_init(&(_tcb)->tcb_mtx, NULL) - + (void)pthread_mutex_init(&(_tcb)->tcb_mtx, &SCTP_BASE_VAR(mtx_attr)) #define SCTP_TCB_LOCK_DESTROY(_tcb) \ (void)pthread_mutex_destroy(&(_tcb)->tcb_mtx) - +#ifdef INVARIANTS #ifdef SCTP_LOCK_LOGGING -#define SCTP_TCB_LOCK(_tcb) do { \ - if(SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) sctp_log_lock(_tcb->sctp_ep, _tcb, SCTP_LOG_LOCK_TCB); \ - (void)pthread_mutex_lock(&(_tcb)->tcb_mtx); \ +#define SCTP_TCB_LOCK(_tcb) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_tcb->sctp_ep, _tcb, SCTP_LOG_LOCK_TCB); \ + KASSERT(pthread_mutex_lock(&(_tcb)->tcb_mtx) == 0, ("%s:%d: tcb_mtx already locked", __FILE__, __LINE__)) \ } while (0) - #else -#define SCTP_TCB_LOCK(_tcb) do { \ - (void)pthread_mutex_lock(&(_tcb)->tcb_mtx); \ +#define SCTP_TCB_LOCK(_tcb) \ + KASSERT(pthread_mutex_lock(&(_tcb)->tcb_mtx) == 0, ("%s:%d: tcb_mtx already locked", __FILE__, __LINE__)) +#endif +#define SCTP_TCB_UNLOCK(_tcb) \ + KASSERT(pthread_mutex_unlock(&(_tcb)->tcb_mtx) == 0, ("%s:%d: tcb_mtx not locked", __FILE__, __LINE__)) +#else +#ifdef SCTP_LOCK_LOGGING +#define SCTP_TCB_LOCK(_tcb) do { \ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) \ + sctp_log_lock(_tcb->sctp_ep, _tcb, SCTP_LOG_LOCK_TCB); \ + (void)pthread_mutex_lock(&(_tcb)->tcb_mtx); \ } while (0) +#else +#define SCTP_TCB_LOCK(_tcb) \ + (void)pthread_mutex_lock(&(_tcb)->tcb_mtx) #endif - -#define SCTP_TCB_TRYLOCK(_tcb) (!(pthread_mutex_trylock(&(_tcb)->tcb_mtx))) - -#define SCTP_TCB_UNLOCK(_tcb) (void)pthread_mutex_unlock(&(_tcb)->tcb_mtx) - -#define SCTP_TCB_LOCK_ASSERT(_tcb) +#define SCTP_TCB_UNLOCK(_tcb) (void)pthread_mutex_unlock(&(_tcb)->tcb_mtx) +#endif +#define SCTP_TCB_LOCK_ASSERT(_tcb) \ + KASSERT(pthread_mutex_trylock(&(_tcb)->tcb_mtx) == EBUSY, ("%s:%d: tcb_mtx not locked", __FILE__, __LINE__)) +#define SCTP_TCB_TRYLOCK(_tcb) (!(pthread_mutex_trylock(&(_tcb)->tcb_mtx))) #endif #endif /* SCTP_PER_SOCKET_LOCKING */ @@ -434,29 +493,36 @@ #define SCTP_INP_READ_CONTENDED(_inp) (0) /* Don't know if this is possible */ #define SCTP_ASOC_CREATE_LOCK_CONTENDED(_inp) (0) /* Don't know if this is possible */ - /* socket locks */ -#if defined(__Userspace__) -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define SOCKBUF_LOCK_ASSERT(_so_buf) -#define SOCKBUF_LOCK(_so_buf) EnterCriticalSection(&(_so_buf)->sb_mtx) -#define SOCKBUF_UNLOCK(_so_buf) LeaveCriticalSection(&(_so_buf)->sb_mtx) -#define SOCK_LOCK(_so) SOCKBUF_LOCK(&(_so)->so_rcv) -#define SOCK_UNLOCK(_so) SOCKBUF_UNLOCK(&(_so)->so_rcv) +#define SOCKBUF_LOCK(_so_buf) \ + EnterCriticalSection(&(_so_buf)->sb_mtx) +#define SOCKBUF_UNLOCK(_so_buf) \ + LeaveCriticalSection(&(_so_buf)->sb_mtx) +#define SOCK_LOCK(_so) \ + SOCKBUF_LOCK(&(_so)->so_rcv) +#define SOCK_UNLOCK(_so) \ + SOCKBUF_UNLOCK(&(_so)->so_rcv) #else -#define SOCKBUF_LOCK_ASSERT(_so_buf) KASSERT(pthread_mutex_trylock(SOCKBUF_MTX(_so_buf)) == EBUSY, ("%s: socket buffer not locked", __func__)) -#define SOCKBUF_LOCK(_so_buf) pthread_mutex_lock(SOCKBUF_MTX(_so_buf)) -#define SOCKBUF_UNLOCK(_so_buf) pthread_mutex_unlock(SOCKBUF_MTX(_so_buf)) -#define SOCK_LOCK(_so) SOCKBUF_LOCK(&(_so)->so_rcv) -#define SOCK_UNLOCK(_so) SOCKBUF_UNLOCK(&(_so)->so_rcv) -#endif +#define SOCKBUF_LOCK_ASSERT(_so_buf) \ + KASSERT(pthread_mutex_trylock(SOCKBUF_MTX(_so_buf)) == EBUSY, ("%s:%d: socket buffer not locked", __FILE__, __LINE__)) +#ifdef INVARIANTS +#define SOCKBUF_LOCK(_so_buf) \ + KASSERT(pthread_mutex_lock(SOCKBUF_MTX(_so_buf)) == 0, ("%s:%d: sockbuf_mtx already locked", __FILE__, __LINE__)) +#define SOCKBUF_UNLOCK(_so_buf) \ + KASSERT(pthread_mutex_unlock(SOCKBUF_MTX(_so_buf)) == 0, ("%s:%d: sockbuf_mtx not locked", __FILE__, __LINE__)) #else -#define SOCK_LOCK(_so) -#define SOCK_UNLOCK(_so) -#define SOCKBUF_LOCK(_so_buf) -#define SOCKBUF_UNLOCK(_so_buf) -#define SOCKBUF_LOCK_ASSERT(_so_buf) +#define SOCKBUF_LOCK(_so_buf) \ + pthread_mutex_lock(SOCKBUF_MTX(_so_buf)) +#define SOCKBUF_UNLOCK(_so_buf) \ + pthread_mutex_unlock(SOCKBUF_MTX(_so_buf)) +#endif +#define SOCK_LOCK(_so) \ + SOCKBUF_LOCK(&(_so)->so_rcv) +#define SOCK_UNLOCK(_so) \ + SOCKBUF_UNLOCK(&(_so)->so_rcv) #endif #define SCTP_STATLOG_INIT_LOCK() @@ -464,179 +530,160 @@ #define SCTP_STATLOG_UNLOCK() #define SCTP_STATLOG_DESTROY() -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) /* address list locks */ +#if WINVER < 0x0600 #define SCTP_IPI_ADDR_INIT() \ InitializeCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) #define SCTP_IPI_ADDR_DESTROY() \ DeleteCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) - -#define SCTP_IPI_ADDR_RLOCK() \ - do { \ - EnterCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)); \ - } while (0) +#define SCTP_IPI_ADDR_RLOCK() \ + EnterCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) #define SCTP_IPI_ADDR_RUNLOCK() \ LeaveCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) - -#define SCTP_IPI_ADDR_WLOCK() \ - do { \ - EnterCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)); \ - } while (0) +#define SCTP_IPI_ADDR_WLOCK() \ + EnterCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) #define SCTP_IPI_ADDR_WUNLOCK() \ LeaveCriticalSection(&SCTP_BASE_INFO(ipi_addr_mtx)) - +#define SCTP_IPI_ADDR_LOCK_ASSERT() +#define SCTP_IPI_ADDR_WLOCK_ASSERT() +#else +#define SCTP_IPI_ADDR_INIT() \ + InitializeSRWLock(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_DESTROY() +#define SCTP_IPI_ADDR_RLOCK() \ + AcquireSRWLockShared(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_RUNLOCK() \ + ReleaseSRWLockShared(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_WLOCK() \ + AcquireSRWLockExclusive(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_WUNLOCK() \ + ReleaseSRWLockExclusive(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_LOCK_ASSERT() +#define SCTP_IPI_ADDR_WLOCK_ASSERT() +#endif /* iterator locks */ #define SCTP_ITERATOR_LOCK_INIT() \ InitializeCriticalSection(&sctp_it_ctl.it_mtx) - -#define SCTP_ITERATOR_LOCK() \ - do { \ - EnterCriticalSection(&sctp_it_ctl.it_mtx); \ - } while (0) - -#define SCTP_ITERATOR_UNLOCK() \ - LeaveCriticalSection(&sctp_it_ctl.it_mtx) - #define SCTP_ITERATOR_LOCK_DESTROY() \ DeleteCriticalSection(&sctp_it_ctl.it_mtx) - +#define SCTP_ITERATOR_LOCK() \ + EnterCriticalSection(&sctp_it_ctl.it_mtx) +#define SCTP_ITERATOR_UNLOCK() \ + LeaveCriticalSection(&sctp_it_ctl.it_mtx) #define SCTP_IPI_ITERATOR_WQ_INIT() \ InitializeCriticalSection(&sctp_it_ctl.ipi_iterator_wq_mtx) - #define SCTP_IPI_ITERATOR_WQ_DESTROY() \ DeleteCriticalSection(&sctp_it_ctl.ipi_iterator_wq_mtx) - #define SCTP_IPI_ITERATOR_WQ_LOCK() \ - do { \ - EnterCriticalSection(&sctp_it_ctl.ipi_iterator_wq_mtx); \ - } while (0) - + EnterCriticalSection(&sctp_it_ctl.ipi_iterator_wq_mtx) #define SCTP_IPI_ITERATOR_WQ_UNLOCK() \ LeaveCriticalSection(&sctp_it_ctl.ipi_iterator_wq_mtx) -#else /* end of __Userspace_os_Windows */ +#else /* address list locks */ #define SCTP_IPI_ADDR_INIT() \ - (void)pthread_mutex_init(&SCTP_BASE_INFO(ipi_addr_mtx), NULL) + (void)pthread_rwlock_init(&SCTP_BASE_INFO(ipi_addr_mtx), &SCTP_BASE_VAR(rwlock_attr)) #define SCTP_IPI_ADDR_DESTROY() \ - (void)pthread_mutex_destroy(&SCTP_BASE_INFO(ipi_addr_mtx)) - -#define SCTP_IPI_ADDR_RLOCK() \ - do { \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_addr_mtx)); \ - } while (0) + (void)pthread_rwlock_destroy(&SCTP_BASE_INFO(ipi_addr_mtx)) +#ifdef INVARIANTS +#define SCTP_IPI_ADDR_RLOCK() \ + KASSERT(pthread_rwlock_rdlock(&SCTP_BASE_INFO(ipi_addr_mtx)) == 0, ("%s:%d: ipi_addr_mtx already locked", __FILE__, __LINE__)) #define SCTP_IPI_ADDR_RUNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) - -#define SCTP_IPI_ADDR_WLOCK() \ - do { \ - (void)pthread_mutex_lock(&SCTP_BASE_INFO(ipi_addr_mtx)); \ - } while (0) + KASSERT(pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) == 0, ("%s:%d: ipi_addr_mtx not locked", __FILE__, __LINE__)) +#define SCTP_IPI_ADDR_WLOCK() \ + KASSERT(pthread_rwlock_wrlock(&SCTP_BASE_INFO(ipi_addr_mtx)) == 0, ("%s:%d: ipi_addr_mtx already locked", __FILE__, __LINE__)) #define SCTP_IPI_ADDR_WUNLOCK() \ - (void)pthread_mutex_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) - + KASSERT(pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) == 0, ("%s:%d: ipi_addr_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_IPI_ADDR_RLOCK() \ + (void)pthread_rwlock_rdlock(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_RUNLOCK() \ + (void)pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_WLOCK() \ + (void)pthread_rwlock_wrlock(&SCTP_BASE_INFO(ipi_addr_mtx)) +#define SCTP_IPI_ADDR_WUNLOCK() \ + (void)pthread_rwlock_unlock(&SCTP_BASE_INFO(ipi_addr_mtx)) +#endif +#define SCTP_IPI_ADDR_LOCK_ASSERT() +#define SCTP_IPI_ADDR_WLOCK_ASSERT() /* iterator locks */ #define SCTP_ITERATOR_LOCK_INIT() \ - (void)pthread_mutex_init(&sctp_it_ctl.it_mtx, NULL) - -#define SCTP_ITERATOR_LOCK() \ - do { \ - (void)pthread_mutex_lock(&sctp_it_ctl.it_mtx); \ - } while (0) - -#define SCTP_ITERATOR_UNLOCK() \ - (void)pthread_mutex_unlock(&sctp_it_ctl.it_mtx) - + (void)pthread_mutex_init(&sctp_it_ctl.it_mtx, &SCTP_BASE_VAR(mtx_attr)) #define SCTP_ITERATOR_LOCK_DESTROY() \ (void)pthread_mutex_destroy(&sctp_it_ctl.it_mtx) - +#ifdef INVARIANTS +#define SCTP_ITERATOR_LOCK() \ + KASSERT(pthread_mutex_lock(&sctp_it_ctl.it_mtx) == 0, ("%s:%d: it_mtx already locked", __FILE__, __LINE__)) +#define SCTP_ITERATOR_UNLOCK() \ + KASSERT(pthread_mutex_unlock(&sctp_it_ctl.it_mtx) == 0, ("%s:%d: it_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_ITERATOR_LOCK() \ + (void)pthread_mutex_lock(&sctp_it_ctl.it_mtx) +#define SCTP_ITERATOR_UNLOCK() \ + (void)pthread_mutex_unlock(&sctp_it_ctl.it_mtx) +#endif #define SCTP_IPI_ITERATOR_WQ_INIT() \ - (void)pthread_mutex_init(&sctp_it_ctl.ipi_iterator_wq_mtx, NULL) - + (void)pthread_mutex_init(&sctp_it_ctl.ipi_iterator_wq_mtx, &SCTP_BASE_VAR(mtx_attr)) #define SCTP_IPI_ITERATOR_WQ_DESTROY() \ (void)pthread_mutex_destroy(&sctp_it_ctl.ipi_iterator_wq_mtx) - +#ifdef INVARIANTS #define SCTP_IPI_ITERATOR_WQ_LOCK() \ - do { \ - (void)pthread_mutex_lock(&sctp_it_ctl.ipi_iterator_wq_mtx); \ - } while (0) - + KASSERT(pthread_mutex_lock(&sctp_it_ctl.ipi_iterator_wq_mtx) == 0, ("%s:%d: ipi_iterator_wq_mtx already locked", __FILE__, __LINE__)) +#define SCTP_IPI_ITERATOR_WQ_UNLOCK() \ + KASSERT(pthread_mutex_unlock(&sctp_it_ctl.ipi_iterator_wq_mtx) == 0, ("%s:%d: ipi_iterator_wq_mtx not locked", __FILE__, __LINE__)) +#else +#define SCTP_IPI_ITERATOR_WQ_LOCK() \ + (void)pthread_mutex_lock(&sctp_it_ctl.ipi_iterator_wq_mtx) #define SCTP_IPI_ITERATOR_WQ_UNLOCK() \ (void)pthread_mutex_unlock(&sctp_it_ctl.ipi_iterator_wq_mtx) #endif +#endif #define SCTP_INCR_EP_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_ep), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_ep), 1) #define SCTP_DECR_EP_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_ep), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_ep), 1) #define SCTP_INCR_ASOC_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_asoc), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_asoc), 1) #define SCTP_DECR_ASOC_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_asoc), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_asoc), 1) #define SCTP_INCR_LADDR_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_laddr), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_laddr), 1) #define SCTP_DECR_LADDR_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_laddr), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_laddr), 1) #define SCTP_INCR_RADDR_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_raddr), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_raddr), 1) #define SCTP_DECR_RADDR_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_raddr), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_raddr), 1) #define SCTP_INCR_CHK_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_chunk), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_chunk), 1) #define SCTP_DECR_CHK_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_chunk), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_chunk), 1) #define SCTP_INCR_READQ_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_readq), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_readq), 1) #define SCTP_DECR_READQ_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_readq), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_readq), 1) #define SCTP_INCR_STRMOQ_COUNT() \ - do { \ - atomic_add_int(&SCTP_BASE_INFO(ipi_count_strmoq), 1); \ - } while (0) + atomic_add_int(&SCTP_BASE_INFO(ipi_count_strmoq), 1) #define SCTP_DECR_STRMOQ_COUNT() \ - do { \ - atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_strmoq), 1); \ - } while (0) + atomic_subtract_int(&SCTP_BASE_INFO(ipi_count_strmoq), 1) #endif diff --git a/netwerk/sctp/src/netinet/sctp_sha1.c b/netwerk/sctp/src/netinet/sctp_sha1.c index c86517f91c..8472c3a1c0 100755 --- a/netwerk/sctp/src/netinet/sctp_sha1.c +++ b/netwerk/sctp/src/netinet/sctp_sha1.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2013, by Michael Tuexen. All rights reserved. @@ -78,13 +80,31 @@ sctp_sha1_final(unsigned char *digest, struct sctp_sha1_context *ctx) { SHA1_Final(digest, &ctx->sha_ctx); } +#elif defined(SCTP_USE_MBEDTLS_SHA1) +void +sctp_sha1_init(struct sctp_sha1_context *ctx) +{ + mbedtls_sha1_init(&ctx->sha1_ctx); + mbedtls_sha1_starts_ret(&ctx->sha1_ctx); +} + +void +sctp_sha1_update(struct sctp_sha1_context *ctx, const unsigned char *ptr, unsigned int siz) +{ + mbedtls_sha1_update_ret(&ctx->sha1_ctx, ptr, siz); +} +void +sctp_sha1_final(unsigned char *digest, struct sctp_sha1_context *ctx) +{ + mbedtls_sha1_finish_ret(&ctx->sha1_ctx, digest); +} #else #include -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) && defined(__Userspace__) #include -#elif !defined(__Windows__) +#elif !(defined(_WIN32) && !defined(__Userspace__)) #include #endif diff --git a/netwerk/sctp/src/netinet/sctp_sha1.h b/netwerk/sctp/src/netinet/sctp_sha1.h index 01e3c2edc4..9ff4ff7bdc 100755 --- a/netwerk/sctp/src/netinet/sctp_sha1.h +++ b/netwerk/sctp/src/netinet/sctp_sha1.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,7 +32,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include __FBSDID("$FreeBSD$"); #endif @@ -41,18 +43,11 @@ __FBSDID("$FreeBSD$"); #include #if defined(SCTP_USE_NSS_SHA1) -#if defined(__Userspace_os_Darwin) -/* The NSS sources require __APPLE__ to be defined. - * XXX: Remove this ugly hack once the platform defines have been cleaned up. - */ -#define __APPLE__ -#endif #include -#if defined(__Userspace_os_Darwin) -#undef __APPLE__ -#endif #elif defined(SCTP_USE_OPENSSL_SHA1) #include +#elif defined(SCTP_USE_MBEDTLS_SHA1) +#include #endif struct sctp_sha1_context { @@ -60,6 +55,8 @@ struct sctp_sha1_context { struct PK11Context *pk11_ctx; #elif defined(SCTP_USE_OPENSSL_SHA1) SHA_CTX sha_ctx; +#elif defined(SCTP_USE_MBEDTLS_SHA1) + mbedtls_sha1_context sha1_ctx; #else unsigned int A; unsigned int B; @@ -81,7 +78,7 @@ struct sctp_sha1_context { #endif }; -#if (defined(__APPLE__) && defined(KERNEL)) +#if (defined(__APPLE__) && !defined(__Userspace__) && defined(KERNEL)) #ifndef _KERNEL #define _KERNEL #endif diff --git a/netwerk/sctp/src/netinet/sctp_ss_functions.c b/netwerk/sctp/src/netinet/sctp_ss_functions.c index d6ccd933a9..0bc083b580 100755 --- a/netwerk/sctp/src/netinet/sctp_ss_functions.c +++ b/netwerk/sctp/src/netinet/sctp_ss_functions.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * * Copyright (c) 2010-2012, by Michael Tuexen. All rights reserved. * Copyright (c) 2010-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2010-2012, by Robin Seggelmann. All rights reserved. @@ -26,9 +28,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_ss_functions.c 235828 2012-05-23 11:26:28Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -38,151 +40,161 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_ss_functions.c 235828 2012-05-23 11:26 /* * Default simple round-robin algorithm. - * Just interates the streams in the order they appear. + * Just iterates the streams in the order they appear. */ static void sctp_ss_default_add(struct sctp_tcb *, struct sctp_association *, struct sctp_stream_out *, - struct sctp_stream_queue_pending *, int); + struct sctp_stream_queue_pending *); static void sctp_ss_default_remove(struct sctp_tcb *, struct sctp_association *, struct sctp_stream_out *, - struct sctp_stream_queue_pending *, int); + struct sctp_stream_queue_pending *); static void -sctp_ss_default_init(struct sctp_tcb *stcb, struct sctp_association *asoc, - int holds_lock) +sctp_ss_default_init(struct sctp_tcb *stcb, struct sctp_association *asoc) { uint16_t i; - TAILQ_INIT(&asoc->ss_data.out_wheel); + SCTP_TCB_LOCK_ASSERT(stcb); + + asoc->ss_data.locked_on_sending = NULL; + asoc->ss_data.last_out_stream = NULL; + TAILQ_INIT(&asoc->ss_data.out.wheel); /* * If there is data in the stream queues already, * the scheduler of an existing association has * been changed. We need to add all stream queues * to the wheel. */ - for (i = 0; i < stcb->asoc.streamoutcnt; i++) { - stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, &stcb->asoc, - &stcb->asoc.strmout[i], - NULL, holds_lock); + for (i = 0; i < asoc->streamoutcnt; i++) { + stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, asoc, + &asoc->strmout[i], + NULL); } return; } static void sctp_ss_default_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, - int clear_values SCTP_UNUSED, int holds_lock) + bool clear_values SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - while (!TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - struct sctp_stream_out *strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); - TAILQ_REMOVE(&asoc->ss_data.out_wheel, TAILQ_FIRST(&asoc->ss_data.out_wheel), ss_params.rr.next_spoke); - strq->ss_params.rr.next_spoke.tqe_next = NULL; - strq->ss_params.rr.next_spoke.tqe_prev = NULL; - } - asoc->last_out_stream = NULL; - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + SCTP_TCB_LOCK_ASSERT(stcb); + + while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) { + struct sctp_stream_out *strq; + + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); + KASSERT(strq->ss_params.scheduled, ("strq %p not scheduled", (void *)strq)); + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke); + strq->ss_params.scheduled = false; } + asoc->ss_data.last_out_stream = NULL; return; } static void -sctp_ss_default_init_stream(struct sctp_stream_out *strq, struct sctp_stream_out *with_strq SCTP_UNUSED) +sctp_ss_default_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) { - strq->ss_params.rr.next_spoke.tqe_next = NULL; - strq->ss_params.rr.next_spoke.tqe_prev = NULL; + SCTP_TCB_LOCK_ASSERT(stcb); + + if (with_strq != NULL) { + if (stcb->asoc.ss_data.locked_on_sending == with_strq) { + stcb->asoc.ss_data.locked_on_sending = strq; + } + if (stcb->asoc.ss_data.last_out_stream == with_strq) { + stcb->asoc.ss_data.last_out_stream = strq; + } + } + strq->ss_params.scheduled = false; return; } static void sctp_ss_default_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, - struct sctp_stream_queue_pending *sp SCTP_UNUSED, int holds_lock) + struct sctp_stream_queue_pending *sp SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + SCTP_TCB_LOCK_ASSERT(stcb); + /* Add to wheel if not already on it and stream queue not empty */ - if (!TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.rr.next_spoke.tqe_next == NULL) && - (strq->ss_params.rr.next_spoke.tqe_prev == NULL)) { - TAILQ_INSERT_TAIL(&asoc->ss_data.out_wheel, - strq, ss_params.rr.next_spoke); - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + if (!TAILQ_EMPTY(&strq->outqueue) && !strq->ss_params.scheduled) { + TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, + strq, ss_params.ss.rr.next_spoke); + strq->ss_params.scheduled = true; } return; } -static int +static bool sctp_ss_default_is_empty(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc) { - if (TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - return (1); - } else { - return (0); - } + SCTP_TCB_LOCK_ASSERT(stcb); + + return (TAILQ_EMPTY(&asoc->ss_data.out.wheel)); } static void sctp_ss_default_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, - struct sctp_stream_queue_pending *sp SCTP_UNUSED, int holds_lock) + struct sctp_stream_queue_pending *sp SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + SCTP_TCB_LOCK_ASSERT(stcb); + /* Remove from wheel if stream queue is empty and actually is on the wheel */ - if (TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.rr.next_spoke.tqe_next != NULL || - strq->ss_params.rr.next_spoke.tqe_prev != NULL)) { - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = TAILQ_PREV(asoc->last_out_stream, - sctpwheel_listhead, - ss_params.rr.next_spoke); - if (asoc->last_out_stream == NULL) { - asoc->last_out_stream = TAILQ_LAST(&asoc->ss_data.out_wheel, - sctpwheel_listhead); + if (TAILQ_EMPTY(&strq->outqueue) && strq->ss_params.scheduled) { + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream, + sctpwheel_listhead, + ss_params.ss.rr.next_spoke); + if (asoc->ss_data.last_out_stream == NULL) { + asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel, + sctpwheel_listhead); } - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = NULL; + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = NULL; } } - TAILQ_REMOVE(&asoc->ss_data.out_wheel, strq, ss_params.rr.next_spoke); - strq->ss_params.rr.next_spoke.tqe_next = NULL; - strq->ss_params.rr.next_spoke.tqe_prev = NULL; - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + if (asoc->ss_data.locked_on_sending == strq) { + asoc->ss_data.locked_on_sending = NULL; + } + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke); + strq->ss_params.scheduled = false; } return; } - static struct sctp_stream_out * sctp_ss_default_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc) { struct sctp_stream_out *strq, *strqt; - strqt = asoc->last_out_stream; + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->ss_data.locked_on_sending != NULL) { + KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, + ("locked_on_sending %p not scheduled", + (void *)asoc->ss_data.locked_on_sending)); + return (asoc->ss_data.locked_on_sending); + } + strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); default_again: /* Find the next stream to use */ if (strqt == NULL) { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - strq = TAILQ_NEXT(strqt, ss_params.rr.next_spoke); + strq = TAILQ_NEXT(strqt, ss_params.ss.rr.next_spoke); if (strq == NULL) { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } } + KASSERT(strq == NULL || strq->ss_params.scheduled, + ("strq %p not scheduled", (void *)strq)); /* If CMT is off, we must validate that * the stream in question has the first @@ -200,7 +212,7 @@ sctp_ss_default_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, if (TAILQ_FIRST(&strq->outqueue) && TAILQ_FIRST(&strq->outqueue)->net != NULL && TAILQ_FIRST(&strq->outqueue)->net != net) { - if (strq == asoc->last_out_stream) { + if (strq == asoc->ss_data.last_out_stream) { return (NULL); } else { strqt = strq; @@ -212,11 +224,29 @@ sctp_ss_default_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, } static void -sctp_ss_default_scheduled(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, - struct sctp_association *asoc SCTP_UNUSED, - struct sctp_stream_out *strq, int moved_how_much SCTP_UNUSED) +sctp_ss_default_scheduled(struct sctp_tcb *stcb, + struct sctp_nets *net SCTP_UNUSED, + struct sctp_association *asoc, + struct sctp_stream_out *strq, + int moved_how_much SCTP_UNUSED) { - asoc->last_out_stream = strq; + struct sctp_stream_queue_pending *sp; + + KASSERT(strq != NULL, ("strq is NULL")); + KASSERT(strq->ss_params.scheduled, ("strq %p is not scheduled", (void *)strq)); + SCTP_TCB_LOCK_ASSERT(stcb); + + asoc->ss_data.last_out_stream = strq; + if (asoc->idata_supported == 0) { + sp = TAILQ_FIRST(&strq->outqueue); + if ((sp != NULL) && (sp->some_taken == 1)) { + asoc->ss_data.locked_on_sending = strq; + } else { + asoc->ss_data.locked_on_sending = NULL; + } + } else { + asoc->ss_data.locked_on_sending = NULL; + } return; } @@ -224,6 +254,8 @@ static void sctp_ss_default_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED) { + SCTP_TCB_LOCK_ASSERT(stcb); + /* Nothing to be done here */ return; } @@ -232,6 +264,8 @@ static int sctp_ss_default_get_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq SCTP_UNUSED, uint16_t *value SCTP_UNUSED) { + SCTP_TCB_LOCK_ASSERT(stcb); + /* Nothing to be done here */ return (-1); } @@ -240,57 +274,78 @@ static int sctp_ss_default_set_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq SCTP_UNUSED, uint16_t value SCTP_UNUSED) { + SCTP_TCB_LOCK_ASSERT(stcb); + /* Nothing to be done here */ return (-1); } +static bool +sctp_ss_default_is_user_msgs_incomplete(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc) +{ + struct sctp_stream_out *strq; + struct sctp_stream_queue_pending *sp; + + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->stream_queue_cnt != 1) { + return (false); + } + strq = asoc->ss_data.locked_on_sending; + if (strq == NULL) { + return (false); + } + sp = TAILQ_FIRST(&strq->outqueue); + if (sp == NULL) { + return (false); + } + return (sp->msg_is_complete == 0); +} + /* * Real round-robin algorithm. - * Always interates the streams in ascending order. + * Always iterates the streams in ascending order. */ static void sctp_ss_rr_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, - struct sctp_stream_queue_pending *sp SCTP_UNUSED, int holds_lock) + struct sctp_stream_queue_pending *sp SCTP_UNUSED) { struct sctp_stream_out *strqt; - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - if (!TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.rr.next_spoke.tqe_next == NULL) && - (strq->ss_params.rr.next_spoke.tqe_prev == NULL)) { - if (TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - TAILQ_INSERT_HEAD(&asoc->ss_data.out_wheel, strq, ss_params.rr.next_spoke); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (!TAILQ_EMPTY(&strq->outqueue) && !strq->ss_params.scheduled) { + if (TAILQ_EMPTY(&asoc->ss_data.out.wheel)) { + TAILQ_INSERT_HEAD(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke); } else { - strqt = TAILQ_FIRST(&asoc->ss_data.out_wheel); - while (strqt != NULL && (strqt->stream_no < strq->stream_no)) { - strqt = TAILQ_NEXT(strqt, ss_params.rr.next_spoke); + strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel); + while (strqt != NULL && (strqt->sid < strq->sid)) { + strqt = TAILQ_NEXT(strqt, ss_params.ss.rr.next_spoke); } if (strqt != NULL) { - TAILQ_INSERT_BEFORE(strqt, strq, ss_params.rr.next_spoke); + TAILQ_INSERT_BEFORE(strqt, strq, ss_params.ss.rr.next_spoke); } else { - TAILQ_INSERT_TAIL(&asoc->ss_data.out_wheel, strq, ss_params.rr.next_spoke); + TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke); } } - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + strq->ss_params.scheduled = true; } return; } /* * Real round-robin per packet algorithm. - * Always interates the streams in ascending order and + * Always iterates the streams in ascending order and * only fills messages of the same stream in a packet. */ static struct sctp_stream_out * sctp_ss_rrp_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc) { - return (asoc->last_out_stream); + SCTP_TCB_LOCK_ASSERT(stcb); + + return (asoc->ss_data.last_out_stream); } static void @@ -299,17 +354,23 @@ sctp_ss_rrp_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net { struct sctp_stream_out *strq, *strqt; - strqt = asoc->last_out_stream; + SCTP_TCB_LOCK_ASSERT(stcb); + + strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); rrp_again: /* Find the next stream to use */ if (strqt == NULL) { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - strq = TAILQ_NEXT(strqt, ss_params.rr.next_spoke); + strq = TAILQ_NEXT(strqt, ss_params.ss.rr.next_spoke); if (strq == NULL) { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } } + KASSERT(strq == NULL || strq->ss_params.scheduled, + ("strq %p not scheduled", (void *)strq)); /* If CMT is off, we must validate that * the stream in question has the first @@ -327,7 +388,7 @@ sctp_ss_rrp_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net if (TAILQ_FIRST(&strq->outqueue) && TAILQ_FIRST(&strq->outqueue)->net != NULL && TAILQ_FIRST(&strq->outqueue)->net != net) { - if (strq == asoc->last_out_stream) { + if (strq == asoc->ss_data.last_out_stream) { strq = NULL; } else { strqt = strq; @@ -335,115 +396,110 @@ sctp_ss_rrp_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net } } } - asoc->last_out_stream = strq; + asoc->ss_data.last_out_stream = strq; return; } - /* * Priority algorithm. * Always prefers streams based on their priority id. */ static void sctp_ss_prio_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, - int clear_values, int holds_lock) + bool clear_values) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - while (!TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - struct sctp_stream_out *strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + SCTP_TCB_LOCK_ASSERT(stcb); + + while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) { + struct sctp_stream_out *strq; + + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); + KASSERT(strq->ss_params.scheduled, ("strq %p not scheduled", (void *)strq)); if (clear_values) { - strq->ss_params.prio.priority = 0; + strq->ss_params.ss.prio.priority = 0; } - TAILQ_REMOVE(&asoc->ss_data.out_wheel, TAILQ_FIRST(&asoc->ss_data.out_wheel), ss_params.prio.next_spoke); - strq->ss_params.prio.next_spoke.tqe_next = NULL; - strq->ss_params.prio.next_spoke.tqe_prev = NULL; - - } - asoc->last_out_stream = NULL; - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke); + strq->ss_params.scheduled = false; } + asoc->ss_data.last_out_stream = NULL; return; } static void -sctp_ss_prio_init_stream(struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) +sctp_ss_prio_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) { - strq->ss_params.prio.next_spoke.tqe_next = NULL; - strq->ss_params.prio.next_spoke.tqe_prev = NULL; + SCTP_TCB_LOCK_ASSERT(stcb); + if (with_strq != NULL) { - strq->ss_params.prio.priority = with_strq->ss_params.prio.priority; + if (stcb->asoc.ss_data.locked_on_sending == with_strq) { + stcb->asoc.ss_data.locked_on_sending = strq; + } + if (stcb->asoc.ss_data.last_out_stream == with_strq) { + stcb->asoc.ss_data.last_out_stream = strq; + } + } + strq->ss_params.scheduled = false; + if (with_strq != NULL) { + strq->ss_params.ss.prio.priority = with_strq->ss_params.ss.prio.priority; } else { - strq->ss_params.prio.priority = 0; + strq->ss_params.ss.prio.priority = 0; } return; } static void sctp_ss_prio_add(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED, - int holds_lock) + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED) { struct sctp_stream_out *strqt; - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + SCTP_TCB_LOCK_ASSERT(stcb); + /* Add to wheel if not already on it and stream queue not empty */ - if (!TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.prio.next_spoke.tqe_next == NULL) && - (strq->ss_params.prio.next_spoke.tqe_prev == NULL)) { - if (TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - TAILQ_INSERT_HEAD(&asoc->ss_data.out_wheel, strq, ss_params.prio.next_spoke); + if (!TAILQ_EMPTY(&strq->outqueue) && !strq->ss_params.scheduled) { + if (TAILQ_EMPTY(&asoc->ss_data.out.wheel)) { + TAILQ_INSERT_HEAD(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke); } else { - strqt = TAILQ_FIRST(&asoc->ss_data.out_wheel); - while (strqt != NULL && strqt->ss_params.prio.priority < strq->ss_params.prio.priority) { - strqt = TAILQ_NEXT(strqt, ss_params.prio.next_spoke); + strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel); + while (strqt != NULL && strqt->ss_params.ss.prio.priority < strq->ss_params.ss.prio.priority) { + strqt = TAILQ_NEXT(strqt, ss_params.ss.prio.next_spoke); } if (strqt != NULL) { - TAILQ_INSERT_BEFORE(strqt, strq, ss_params.prio.next_spoke); + TAILQ_INSERT_BEFORE(strqt, strq, ss_params.ss.prio.next_spoke); } else { - TAILQ_INSERT_TAIL(&asoc->ss_data.out_wheel, strq, ss_params.prio.next_spoke); + TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke); } } - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + strq->ss_params.scheduled = true; } return; } static void sctp_ss_prio_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED, - int holds_lock) + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + SCTP_TCB_LOCK_ASSERT(stcb); + /* Remove from wheel if stream queue is empty and actually is on the wheel */ - if (TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.prio.next_spoke.tqe_next != NULL || - strq->ss_params.prio.next_spoke.tqe_prev != NULL)) { - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = TAILQ_PREV(asoc->last_out_stream, sctpwheel_listhead, - ss_params.prio.next_spoke); - if (asoc->last_out_stream == NULL) { - asoc->last_out_stream = TAILQ_LAST(&asoc->ss_data.out_wheel, - sctpwheel_listhead); + if (TAILQ_EMPTY(&strq->outqueue) && strq->ss_params.scheduled) { + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream, + sctpwheel_listhead, + ss_params.ss.prio.next_spoke); + if (asoc->ss_data.last_out_stream == NULL) { + asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel, + sctpwheel_listhead); } - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = NULL; + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = NULL; } } - TAILQ_REMOVE(&asoc->ss_data.out_wheel, strq, ss_params.prio.next_spoke); - strq->ss_params.prio.next_spoke.tqe_next = NULL; - strq->ss_params.prio.next_spoke.tqe_prev = NULL; - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + if (asoc->ss_data.locked_on_sending == strq) { + asoc->ss_data.locked_on_sending = NULL; + } + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke); + strq->ss_params.scheduled = false; } return; } @@ -454,20 +510,32 @@ sctp_ss_prio_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, { struct sctp_stream_out *strq, *strqt, *strqn; - strqt = asoc->last_out_stream; + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->ss_data.locked_on_sending != NULL) { + KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, + ("locked_on_sending %p not scheduled", + (void *)asoc->ss_data.locked_on_sending)); + return (asoc->ss_data.locked_on_sending); + } + strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); prio_again: /* Find the next stream to use */ if (strqt == NULL) { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - strqn = TAILQ_NEXT(strqt, ss_params.prio.next_spoke); + strqn = TAILQ_NEXT(strqt, ss_params.ss.prio.next_spoke); if (strqn != NULL && - strqn->ss_params.prio.priority == strqt->ss_params.prio.priority) { + strqn->ss_params.ss.prio.priority == strqt->ss_params.ss.prio.priority) { strq = strqn; } else { - strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } } + KASSERT(strq == NULL || strq->ss_params.scheduled, + ("strq %p not scheduled", (void *)strq)); /* If CMT is off, we must validate that * the stream in question has the first @@ -485,7 +553,7 @@ sctp_ss_prio_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, if (TAILQ_FIRST(&strq->outqueue) && TAILQ_FIRST(&strq->outqueue)->net != NULL && TAILQ_FIRST(&strq->outqueue)->net != net) { - if (strq == asoc->last_out_stream) { + if (strq == asoc->ss_data.last_out_stream) { return (NULL); } else { strqt = strq; @@ -500,10 +568,12 @@ static int sctp_ss_prio_get_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq, uint16_t *value) { + SCTP_TCB_LOCK_ASSERT(stcb); + if (strq == NULL) { return (-1); } - *value = strq->ss_params.prio.priority; + *value = strq->ss_params.ss.prio.priority; return (1); } @@ -511,105 +581,104 @@ static int sctp_ss_prio_set_value(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, uint16_t value) { + SCTP_TCB_LOCK_ASSERT(stcb); + if (strq == NULL) { return (-1); } - strq->ss_params.prio.priority = value; - sctp_ss_prio_remove(stcb, asoc, strq, NULL, 1); - sctp_ss_prio_add(stcb, asoc, strq, NULL, 1); + strq->ss_params.ss.prio.priority = value; + sctp_ss_prio_remove(stcb, asoc, strq, NULL); + sctp_ss_prio_add(stcb, asoc, strq, NULL); return (1); } /* * Fair bandwidth algorithm. - * Maintains an equal troughput per stream. + * Maintains an equal throughput per stream. */ static void sctp_ss_fb_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, - int clear_values, int holds_lock) + bool clear_values) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - while (!TAILQ_EMPTY(&asoc->ss_data.out_wheel)) { - struct sctp_stream_out *strq = TAILQ_FIRST(&asoc->ss_data.out_wheel); + SCTP_TCB_LOCK_ASSERT(stcb); + + while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) { + struct sctp_stream_out *strq; + + strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); + KASSERT(strq->ss_params.scheduled, ("strq %p not scheduled", (void *)strq)); if (clear_values) { - strq->ss_params.fb.rounds = -1; + strq->ss_params.ss.fb.rounds = -1; } - TAILQ_REMOVE(&asoc->ss_data.out_wheel, TAILQ_FIRST(&asoc->ss_data.out_wheel), ss_params.fb.next_spoke); - strq->ss_params.fb.next_spoke.tqe_next = NULL; - strq->ss_params.fb.next_spoke.tqe_prev = NULL; - } - asoc->last_out_stream = NULL; - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke); + strq->ss_params.scheduled = false; } + asoc->ss_data.last_out_stream = NULL; return; } static void -sctp_ss_fb_init_stream(struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) +sctp_ss_fb_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) { - strq->ss_params.fb.next_spoke.tqe_next = NULL; - strq->ss_params.fb.next_spoke.tqe_prev = NULL; + SCTP_TCB_LOCK_ASSERT(stcb); + if (with_strq != NULL) { - strq->ss_params.fb.rounds = with_strq->ss_params.fb.rounds; + if (stcb->asoc.ss_data.locked_on_sending == with_strq) { + stcb->asoc.ss_data.locked_on_sending = strq; + } + if (stcb->asoc.ss_data.last_out_stream == with_strq) { + stcb->asoc.ss_data.last_out_stream = strq; + } + } + strq->ss_params.scheduled = false; + if (with_strq != NULL) { + strq->ss_params.ss.fb.rounds = with_strq->ss_params.ss.fb.rounds; } else { - strq->ss_params.fb.rounds = -1; + strq->ss_params.ss.fb.rounds = -1; } return; } static void sctp_ss_fb_add(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED, - int holds_lock) + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - if (!TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.fb.next_spoke.tqe_next == NULL) && - (strq->ss_params.fb.next_spoke.tqe_prev == NULL)) { - if (strq->ss_params.fb.rounds < 0) - strq->ss_params.fb.rounds = TAILQ_FIRST(&strq->outqueue)->length; - TAILQ_INSERT_TAIL(&asoc->ss_data.out_wheel, strq, ss_params.fb.next_spoke); - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (!TAILQ_EMPTY(&strq->outqueue) && !strq->ss_params.scheduled) { + if (strq->ss_params.ss.fb.rounds < 0) + strq->ss_params.ss.fb.rounds = TAILQ_FIRST(&strq->outqueue)->length; + TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke); + strq->ss_params.scheduled = true; } return; } static void sctp_ss_fb_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED, - int holds_lock) + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } + SCTP_TCB_LOCK_ASSERT(stcb); + /* Remove from wheel if stream queue is empty and actually is on the wheel */ - if (TAILQ_EMPTY(&strq->outqueue) && - (strq->ss_params.fb.next_spoke.tqe_next != NULL || - strq->ss_params.fb.next_spoke.tqe_prev != NULL)) { - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = TAILQ_PREV(asoc->last_out_stream, sctpwheel_listhead, - ss_params.fb.next_spoke); - if (asoc->last_out_stream == NULL) { - asoc->last_out_stream = TAILQ_LAST(&asoc->ss_data.out_wheel, - sctpwheel_listhead); + if (TAILQ_EMPTY(&strq->outqueue) && strq->ss_params.scheduled) { + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream, + sctpwheel_listhead, + ss_params.ss.fb.next_spoke); + if (asoc->ss_data.last_out_stream == NULL) { + asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel, + sctpwheel_listhead); } - if (asoc->last_out_stream == strq) { - asoc->last_out_stream = NULL; + if (asoc->ss_data.last_out_stream == strq) { + asoc->ss_data.last_out_stream = NULL; } } - TAILQ_REMOVE(&asoc->ss_data.out_wheel, strq, ss_params.fb.next_spoke); - strq->ss_params.fb.next_spoke.tqe_next = NULL; - strq->ss_params.fb.next_spoke.tqe_prev = NULL; - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + if (asoc->ss_data.locked_on_sending == strq) { + asoc->ss_data.locked_on_sending = NULL; + } + TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke); + strq->ss_params.scheduled = false; } return; } @@ -620,11 +689,19 @@ sctp_ss_fb_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, { struct sctp_stream_out *strq = NULL, *strqt; - if (asoc->last_out_stream == NULL || - TAILQ_FIRST(&asoc->ss_data.out_wheel) == TAILQ_LAST(&asoc->ss_data.out_wheel, sctpwheel_listhead)) { - strqt = TAILQ_FIRST(&asoc->ss_data.out_wheel); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->ss_data.locked_on_sending != NULL) { + KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, + ("locked_on_sending %p not scheduled", + (void *)asoc->ss_data.locked_on_sending)); + return (asoc->ss_data.locked_on_sending); + } + if (asoc->ss_data.last_out_stream == NULL || + TAILQ_FIRST(&asoc->ss_data.out.wheel) == TAILQ_LAST(&asoc->ss_data.out.wheel, sctpwheel_listhead)) { + strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - strqt = TAILQ_NEXT(asoc->last_out_stream, ss_params.fb.next_spoke); + strqt = TAILQ_NEXT(asoc->ss_data.last_out_stream, ss_params.ss.fb.next_spoke); } do { if ((strqt != NULL) && @@ -633,40 +710,54 @@ sctp_ss_fb_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, (net == NULL || (TAILQ_FIRST(&strqt->outqueue) && TAILQ_FIRST(&strqt->outqueue)->net == NULL) || (net != NULL && TAILQ_FIRST(&strqt->outqueue) && TAILQ_FIRST(&strqt->outqueue)->net != NULL && TAILQ_FIRST(&strqt->outqueue)->net == net))))) { - if ((strqt->ss_params.fb.rounds >= 0) && (strq == NULL || - strqt->ss_params.fb.rounds < strq->ss_params.fb.rounds)) { + if ((strqt->ss_params.ss.fb.rounds >= 0) && + ((strq == NULL) || + (strqt->ss_params.ss.fb.rounds < strq->ss_params.ss.fb.rounds))) { strq = strqt; } } if (strqt != NULL) { - strqt = TAILQ_NEXT(strqt, ss_params.fb.next_spoke); + strqt = TAILQ_NEXT(strqt, ss_params.ss.fb.next_spoke); } else { - strqt = TAILQ_FIRST(&asoc->ss_data.out_wheel); + strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel); } } while (strqt != strq); return (strq); } static void -sctp_ss_fb_scheduled(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, +sctp_ss_fb_scheduled(struct sctp_tcb *stcb, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc, struct sctp_stream_out *strq, int moved_how_much SCTP_UNUSED) { + struct sctp_stream_queue_pending *sp; struct sctp_stream_out *strqt; int subtract; - subtract = strq->ss_params.fb.rounds; - TAILQ_FOREACH(strqt, &asoc->ss_data.out_wheel, ss_params.fb.next_spoke) { - strqt->ss_params.fb.rounds -= subtract; - if (strqt->ss_params.fb.rounds < 0) - strqt->ss_params.fb.rounds = 0; + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->idata_supported == 0) { + sp = TAILQ_FIRST(&strq->outqueue); + if ((sp != NULL) && (sp->some_taken == 1)) { + asoc->ss_data.locked_on_sending = strq; + } else { + asoc->ss_data.locked_on_sending = NULL; + } + } else { + asoc->ss_data.locked_on_sending = NULL; + } + subtract = strq->ss_params.ss.fb.rounds; + TAILQ_FOREACH(strqt, &asoc->ss_data.out.wheel, ss_params.ss.fb.next_spoke) { + strqt->ss_params.ss.fb.rounds -= subtract; + if (strqt->ss_params.ss.fb.rounds < 0) + strqt->ss_params.ss.fb.rounds = 0; } if (TAILQ_FIRST(&strq->outqueue)) { - strq->ss_params.fb.rounds = TAILQ_FIRST(&strq->outqueue)->length; + strq->ss_params.ss.fb.rounds = TAILQ_FIRST(&strq->outqueue)->length; } else { - strq->ss_params.fb.rounds = -1; + strq->ss_params.ss.fb.rounds = -1; } - asoc->last_out_stream = strq; + asoc->ss_data.last_out_stream = strq; return; } @@ -676,18 +767,19 @@ sctp_ss_fb_scheduled(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SC */ static void sctp_ss_fcfs_add(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp, - int holds_lock); + struct sctp_stream_out *strq SCTP_UNUSED, + struct sctp_stream_queue_pending *sp); static void -sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc, - int holds_lock) +sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc) { uint32_t x, n = 0, add_more = 1; struct sctp_stream_queue_pending *sp; uint16_t i; - TAILQ_INIT(&asoc->ss_data.out_list); + SCTP_TCB_LOCK_ASSERT(stcb); + + TAILQ_INIT(&asoc->ss_data.out.list); /* * If there is data in the stream queues already, * the scheduler of an existing association has @@ -697,8 +789,8 @@ sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc, */ while (add_more) { add_more = 0; - for (i = 0; i < stcb->asoc.streamoutcnt; i++) { - sp = TAILQ_FIRST(&stcb->asoc.strmout[i].outqueue); + for (i = 0; i < asoc->streamoutcnt; i++) { + sp = TAILQ_FIRST(&asoc->strmout[i].outqueue); x = 0; /* Find n. message in current stream queue */ while (sp != NULL && x < n) { @@ -706,7 +798,7 @@ sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc, x++; } if (sp != NULL) { - sctp_ss_fcfs_add(stcb, &stcb->asoc, &stcb->asoc.strmout[i], sp, holds_lock); + sctp_ss_fcfs_add(stcb, asoc, &asoc->strmout[i], sp); add_more = 1; } } @@ -717,77 +809,73 @@ sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc, static void sctp_ss_fcfs_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, - int clear_values, int holds_lock) + bool clear_values SCTP_UNUSED) { - if (clear_values) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - while (!TAILQ_EMPTY(&asoc->ss_data.out_list)) { - TAILQ_REMOVE(&asoc->ss_data.out_list, TAILQ_FIRST(&asoc->ss_data.out_list), ss_next); - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); - } + struct sctp_stream_queue_pending *sp; + + SCTP_TCB_LOCK_ASSERT(stcb); + + while (!TAILQ_EMPTY(&asoc->ss_data.out.list)) { + sp = TAILQ_FIRST(&asoc->ss_data.out.list); + KASSERT(sp->scheduled, ("sp %p not scheduled", (void *)sp)); + TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next); + sp->scheduled = false; } + asoc->ss_data.last_out_stream = NULL; return; } static void -sctp_ss_fcfs_init_stream(struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_out *with_strq SCTP_UNUSED) +sctp_ss_fcfs_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq) { - /* Nothing to be done here */ + SCTP_TCB_LOCK_ASSERT(stcb); + + if (with_strq != NULL) { + if (stcb->asoc.ss_data.locked_on_sending == with_strq) { + stcb->asoc.ss_data.locked_on_sending = strq; + } + if (stcb->asoc.ss_data.last_out_stream == with_strq) { + stcb->asoc.ss_data.last_out_stream = strq; + } + } + strq->ss_params.scheduled = false; return; } static void sctp_ss_fcfs_add(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp, - int holds_lock) + struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - if (sp && (sp->ss_next.tqe_next == NULL) && - (sp->ss_next.tqe_prev == NULL)) { - TAILQ_INSERT_TAIL(&asoc->ss_data.out_list, sp, ss_next); - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (!sp->scheduled) { + TAILQ_INSERT_TAIL(&asoc->ss_data.out.list, sp, ss_next); + sp->scheduled = true; } return; } -static int +static bool sctp_ss_fcfs_is_empty(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc) { - if (TAILQ_EMPTY(&asoc->ss_data.out_list)) { - return (1); - } else { - return (0); - } + SCTP_TCB_LOCK_ASSERT(stcb); + + return (TAILQ_EMPTY(&asoc->ss_data.out.list)); } static void sctp_ss_fcfs_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp, - int holds_lock) + struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp) { - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } - if (sp && - ((sp->ss_next.tqe_next != NULL) || - (sp->ss_next.tqe_prev != NULL))) { - TAILQ_REMOVE(&asoc->ss_data.out_list, sp, ss_next); - } - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (sp->scheduled) { + TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next); + sp->scheduled = false; } return; } - static struct sctp_stream_out * sctp_ss_fcfs_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc) @@ -795,10 +883,15 @@ sctp_ss_fcfs_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_stream_out *strq; struct sctp_stream_queue_pending *sp; - sp = TAILQ_FIRST(&asoc->ss_data.out_list); + SCTP_TCB_LOCK_ASSERT(stcb); + + if (asoc->ss_data.locked_on_sending) { + return (asoc->ss_data.locked_on_sending); + } + sp = TAILQ_FIRST(&asoc->ss_data.out.list); default_again: if (sp != NULL) { - strq = &asoc->strmout[sp->stream]; + strq = &asoc->strmout[sp->sid]; } else { strq = NULL; } @@ -827,10 +920,34 @@ sctp_ss_fcfs_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, return (strq); } -struct sctp_ss_functions sctp_ss_functions[] = { +static void +sctp_ss_fcfs_scheduled(struct sctp_tcb *stcb, + struct sctp_nets *net SCTP_UNUSED, + struct sctp_association *asoc, + struct sctp_stream_out *strq, + int moved_how_much SCTP_UNUSED) +{ + struct sctp_stream_queue_pending *sp; + + KASSERT(strq != NULL, ("strq is NULL")); + asoc->ss_data.last_out_stream = strq; + if (asoc->idata_supported == 0) { + sp = TAILQ_FIRST(&strq->outqueue); + if ((sp != NULL) && (sp->some_taken == 1)) { + asoc->ss_data.locked_on_sending = strq; + } else { + asoc->ss_data.locked_on_sending = NULL; + } + } else { + asoc->ss_data.locked_on_sending = NULL; + } + return; +} + +const struct sctp_ss_functions sctp_ss_functions[] = { /* SCTP_SS_DEFAULT */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_default_init, sctp_ss_default_clear, sctp_ss_default_init_stream, @@ -841,7 +958,8 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_default_scheduled, sctp_ss_default_packet_done, sctp_ss_default_get_value, - sctp_ss_default_set_value + sctp_ss_default_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_default_init, .sctp_ss_clear = sctp_ss_default_clear, @@ -853,12 +971,13 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_scheduled = sctp_ss_default_scheduled, .sctp_ss_packet_done = sctp_ss_default_packet_done, .sctp_ss_get_value = sctp_ss_default_get_value, - .sctp_ss_set_value = sctp_ss_default_set_value + .sctp_ss_set_value = sctp_ss_default_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif }, /* SCTP_SS_ROUND_ROBIN */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_default_init, sctp_ss_default_clear, sctp_ss_default_init_stream, @@ -869,7 +988,8 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_default_scheduled, sctp_ss_default_packet_done, sctp_ss_default_get_value, - sctp_ss_default_set_value + sctp_ss_default_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_default_init, .sctp_ss_clear = sctp_ss_default_clear, @@ -881,12 +1001,13 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_scheduled = sctp_ss_default_scheduled, .sctp_ss_packet_done = sctp_ss_default_packet_done, .sctp_ss_get_value = sctp_ss_default_get_value, - .sctp_ss_set_value = sctp_ss_default_set_value + .sctp_ss_set_value = sctp_ss_default_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif }, /* SCTP_SS_ROUND_ROBIN_PACKET */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_default_init, sctp_ss_default_clear, sctp_ss_default_init_stream, @@ -897,7 +1018,8 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_default_scheduled, sctp_ss_rrp_packet_done, sctp_ss_default_get_value, - sctp_ss_default_set_value + sctp_ss_default_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_default_init, .sctp_ss_clear = sctp_ss_default_clear, @@ -909,12 +1031,13 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_scheduled = sctp_ss_default_scheduled, .sctp_ss_packet_done = sctp_ss_rrp_packet_done, .sctp_ss_get_value = sctp_ss_default_get_value, - .sctp_ss_set_value = sctp_ss_default_set_value + .sctp_ss_set_value = sctp_ss_default_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif }, /* SCTP_SS_PRIORITY */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_default_init, sctp_ss_prio_clear, sctp_ss_prio_init_stream, @@ -925,7 +1048,8 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_default_scheduled, sctp_ss_default_packet_done, sctp_ss_prio_get_value, - sctp_ss_prio_set_value + sctp_ss_prio_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_default_init, .sctp_ss_clear = sctp_ss_prio_clear, @@ -937,12 +1061,13 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_scheduled = sctp_ss_default_scheduled, .sctp_ss_packet_done = sctp_ss_default_packet_done, .sctp_ss_get_value = sctp_ss_prio_get_value, - .sctp_ss_set_value = sctp_ss_prio_set_value + .sctp_ss_set_value = sctp_ss_prio_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif }, /* SCTP_SS_FAIR_BANDWITH */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_default_init, sctp_ss_fb_clear, sctp_ss_fb_init_stream, @@ -953,7 +1078,8 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_fb_scheduled, sctp_ss_default_packet_done, sctp_ss_default_get_value, - sctp_ss_default_set_value + sctp_ss_default_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_default_init, .sctp_ss_clear = sctp_ss_fb_clear, @@ -965,12 +1091,13 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_scheduled = sctp_ss_fb_scheduled, .sctp_ss_packet_done = sctp_ss_default_packet_done, .sctp_ss_get_value = sctp_ss_default_get_value, - .sctp_ss_set_value = sctp_ss_default_set_value + .sctp_ss_set_value = sctp_ss_default_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif }, /* SCTP_SS_FIRST_COME */ { -#if defined(__Windows__) || defined(__Userspace_os_Windows) +#if defined(_WIN32) sctp_ss_fcfs_init, sctp_ss_fcfs_clear, sctp_ss_fcfs_init_stream, @@ -978,10 +1105,11 @@ struct sctp_ss_functions sctp_ss_functions[] = { sctp_ss_fcfs_is_empty, sctp_ss_fcfs_remove, sctp_ss_fcfs_select, - sctp_ss_default_scheduled, + sctp_ss_fcfs_scheduled, sctp_ss_default_packet_done, sctp_ss_default_get_value, - sctp_ss_default_set_value + sctp_ss_default_set_value, + sctp_ss_default_is_user_msgs_incomplete #else .sctp_ss_init = sctp_ss_fcfs_init, .sctp_ss_clear = sctp_ss_fcfs_clear, @@ -990,10 +1118,11 @@ struct sctp_ss_functions sctp_ss_functions[] = { .sctp_ss_is_empty = sctp_ss_fcfs_is_empty, .sctp_ss_remove_from_stream = sctp_ss_fcfs_remove, .sctp_ss_select_stream = sctp_ss_fcfs_select, - .sctp_ss_scheduled = sctp_ss_default_scheduled, + .sctp_ss_scheduled = sctp_ss_fcfs_scheduled, .sctp_ss_packet_done = sctp_ss_default_packet_done, .sctp_ss_get_value = sctp_ss_default_get_value, - .sctp_ss_set_value = sctp_ss_default_set_value + .sctp_ss_set_value = sctp_ss_default_set_value, + .sctp_ss_is_user_msgs_incomplete = sctp_ss_default_is_user_msgs_incomplete #endif } }; diff --git a/netwerk/sctp/src/netinet/sctp_structs.h b/netwerk/sctp/src/netinet/sctp_structs.h index 7047b41886..e96c2c0e2a 100755 --- a/netwerk/sctp/src/netinet/sctp_structs.h +++ b/netwerk/sctp/src/netinet/sctp_structs.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_structs.h 279859 2015-03-10 19:49:25Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_STRUCTS_H_ @@ -53,7 +55,7 @@ struct sctp_timer { void *ep; void *tcb; void *net; -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) void *vnet; #endif @@ -63,7 +65,6 @@ struct sctp_timer { uint32_t stopped_from; }; - struct sctp_foo_stuff { struct sctp_inpcb *inp; uint32_t lineno; @@ -71,7 +72,6 @@ struct sctp_foo_stuff { int updown; }; - /* * This is the information we track on each interface that we know about from * the distant end. @@ -80,6 +80,7 @@ TAILQ_HEAD(sctpnetlisthead, sctp_nets); struct sctp_stream_reset_list { TAILQ_ENTRY(sctp_stream_reset_list) next_resp; + uint32_t seq; uint32_t tsn; uint32_t number_entries; uint16_t list_of_streams[]; @@ -110,13 +111,12 @@ typedef void (*asoc_func) (struct sctp_inpcb *, struct sctp_tcb *, void *ptr, typedef int (*inp_func) (struct sctp_inpcb *, void *ptr, uint32_t val); typedef void (*end_func) (void *ptr, uint32_t val); -#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SCTP_MCORE_INPUT) && defined(SMP) /* whats on the mcore control struct */ struct sctp_mcore_queue { TAILQ_ENTRY(sctp_mcore_queue) next; -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 struct vnet *vn; -#endif struct mbuf *m; int off; int v6; @@ -132,14 +132,32 @@ struct sctp_mcore_ctrl { int running; int cpuid; }; - - +#endif #endif +/* This struct is here to cut out the compatiabilty + * pad that bulks up both the inp and stcb. The non + * pad portion MUST stay in complete sync with + * sctp_sndrcvinfo... i.e. if sinfo_xxxx is added + * this must be done here too. + */ +struct sctp_nonpad_sndrcvinfo { + uint16_t sinfo_stream; + uint16_t sinfo_ssn; + uint16_t sinfo_flags; + uint32_t sinfo_ppid; + uint32_t sinfo_context; + uint32_t sinfo_timetolive; + uint32_t sinfo_tsn; + uint32_t sinfo_cumtsn; + sctp_assoc_t sinfo_assoc_id; + uint16_t sinfo_keynumber; + uint16_t sinfo_keynumber_valid; +}; struct sctp_iterator { TAILQ_ENTRY(sctp_iterator) sctp_nxt_itr; -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) struct vnet *vn; #endif struct sctp_timer tmr; @@ -163,14 +181,13 @@ struct sctp_iterator { #define SCTP_ITERATOR_DO_ALL_INP 0x00000001 #define SCTP_ITERATOR_DO_SINGLE_INP 0x00000002 - TAILQ_HEAD(sctpiterators, sctp_iterator); struct sctp_copy_all { struct sctp_inpcb *inp; /* ep */ struct mbuf *m; - struct sctp_sndrcvinfo sndrcv; - int sndlen; + struct sctp_nonpad_sndrcvinfo sndrcv; + ssize_t sndlen; int cnt_sent; int cnt_failed; }; @@ -181,10 +198,10 @@ struct sctp_asconf_iterator { }; struct iterator_control { -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) struct mtx ipi_iterator_wq_mtx; struct mtx it_mtx; -#elif defined(__APPLE__) +#elif defined(__APPLE__) && !defined(__Userspace__) lck_mtx_t *ipi_iterator_wq_mtx; lck_mtx_t *it_mtx; #elif defined(SCTP_PROCESS_LEVEL_LOCKS) @@ -197,7 +214,7 @@ struct iterator_control { pthread_mutex_t it_mtx; pthread_cond_t iterator_wakeup; #endif -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) struct spinlock it_lock; struct spinlock ipi_iterator_wq_lock; KEVENT iterator_wakeup[2]; @@ -205,7 +222,7 @@ struct iterator_control { #else void *it_mtx; #endif -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) #if !defined(__Userspace__) SCTP_PROCESS_STRUCT thread_proc; #else @@ -217,7 +234,7 @@ struct iterator_control { uint32_t iterator_running; uint32_t iterator_flags; }; -#if !defined(__FreeBSD__) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) #define SCTP_ITERATOR_MUST_EXIT 0x00000001 #define SCTP_ITERATOR_EXITED 0x00000002 #endif @@ -225,17 +242,21 @@ struct iterator_control { #define SCTP_ITERATOR_STOP_CUR_INP 0x00000008 struct sctp_net_route { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct nhop_object *ro_nh; + struct llentry *ro_lle; + char *ro_prepend; + uint16_t ro_plen; + uint16_t ro_flags; + uint16_t ro_mtu; + uint16_t spare; +#else sctp_rtentry_t *ro_rt; -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800000 - void *ro_lle; #endif -#if __FreeBSD_version >= 900000 - void *ro_ia; - int ro_flags; +#if defined(__APPLE__) && !defined(__Userspace__) +#if !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) && !defined(APPLE_ELCAPITAN) + struct llentry *ro_lle; #endif -#endif -#if defined(__APPLE__) #if !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) struct ifaddr *ro_srcia; #endif @@ -289,7 +310,6 @@ struct rtcc_cc { uint8_t last_inst_ind; /* Last saved inst indication */ }; - struct sctp_nets { TAILQ_ENTRY(sctp_nets) sctp_next; /* next link */ @@ -317,7 +337,7 @@ struct sctp_nets { int lastsa; int lastsv; uint64_t rtt; /* last measured rtt value in us */ - unsigned int RTO; + uint32_t RTO; /* This is used for SHUTDOWN/SHUTDOWN-ACK/SEND or INIT timers */ struct sctp_timer rxt_timer; @@ -426,18 +446,17 @@ struct sctp_nets { uint8_t last_hs_used; /* index into the last HS table entry we used */ uint8_t lan_type; uint8_t rto_needed; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint32_t flowid; uint8_t flowtype; #endif }; - struct sctp_data_chunkrec { - uint32_t TSN_seq; /* the TSN of this transmit */ - uint16_t stream_seq; /* the stream sequence number of this transmit */ - uint16_t stream_number; /* the stream number of this guy */ - uint32_t payloadtype; + uint32_t tsn; /* the TSN of this transmit */ + uint32_t mid; /* the message identifier of this transmit */ + uint16_t sid; /* the stream number of this guy */ + uint32_t ppid; uint32_t context; /* from send */ uint32_t cwnd_at_send; /* @@ -446,6 +465,7 @@ struct sctp_data_chunkrec { */ uint32_t fast_retran_tsn; /* sending_seq at the time of FR */ struct timeval timetodrop; /* time we drop it from queue */ + uint32_t fsn; /* Fragment Sequence Number */ uint8_t doing_fast_retransmit; uint8_t rcv_flags; /* flags pulled from data chunk on inbound for * outbound holds sending flags for PR-SCTP. @@ -470,7 +490,6 @@ struct chk_id { uint8_t can_take_data; }; - struct sctp_tmit_chunk { union { struct sctp_data_chunkrec data; @@ -498,14 +517,8 @@ struct sctp_tmit_chunk { uint8_t window_probe; }; -/* - * The first part of this structure MUST be the entire sinfo structure. Maybe - * I should have made it a sub structure... we can circle back later and do - * that if we want. - */ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint16_t sinfo_stream; /* off the wire */ - uint16_t sinfo_ssn; /* off the wire */ uint16_t sinfo_flags; /* SCTP_UNORDERED from wire use SCTP_EOF for * EOR */ uint32_t sinfo_ppid; /* off the wire */ @@ -515,8 +528,11 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint32_t sinfo_cumtsn; /* Use this in reassembly as last TSN */ sctp_assoc_t sinfo_assoc_id; /* our assoc id */ /* Non sinfo stuff */ + uint32_t mid; /* Fragment Index */ uint32_t length; /* length of data */ uint32_t held_length; /* length held in sb */ + uint32_t top_fsn; /* Highest FSN in queue */ + uint32_t fsn_included; /* Highest FSN in *data portion */ struct sctp_nets *whoFrom; /* where it came from */ struct mbuf *data; /* front of the mbuf chain of data with * PKT_HDR */ @@ -524,14 +540,24 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ struct mbuf *aux_data; /* used to hold/cache control if o/s does not take it from us */ struct sctp_tcb *stcb; /* assoc, used for window update */ TAILQ_ENTRY(sctp_queued_to_read) next; + TAILQ_ENTRY(sctp_queued_to_read) next_instrm; + struct sctpchunk_listhead reasm; uint16_t port_from; uint16_t spec_flags; /* Flags to hold the notification field */ uint8_t do_not_ref_stcb; uint8_t end_added; uint8_t pdapi_aborted; + uint8_t pdapi_started; uint8_t some_taken; + uint8_t last_frag_seen; + uint8_t first_frag_seen; + uint8_t on_read_q; + uint8_t on_strm_q; }; +#define SCTP_ON_ORDERED 1 +#define SCTP_ON_UNORDERED 2 + /* This data structure will be on the outbound * stream queues. Data will be pulled off from * the front of the mbuf data and chunk-ified @@ -549,6 +575,7 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ * the user is in the explict MSG_EOR mode * and wrote some data, but has not completed * sending. + * ss_next and scheduled are only used by the FCFS stream scheduler. */ struct sctp_stream_queue_pending { struct mbuf *data; @@ -557,12 +584,13 @@ struct sctp_stream_queue_pending { struct sctp_nets *net; TAILQ_ENTRY (sctp_stream_queue_pending) next; TAILQ_ENTRY (sctp_stream_queue_pending) ss_next; + uint32_t fsn; uint32_t length; uint32_t timetolive; uint32_t ppid; uint32_t context; uint16_t sinfo_flags; - uint16_t stream; + uint16_t sid; uint16_t act_flags; uint16_t auth_keyid; uint8_t holds_key_ref; @@ -571,6 +599,8 @@ struct sctp_stream_queue_pending { uint8_t sender_all_done; uint8_t put_last_out; uint8_t discard_rest; + uint8_t processing; + bool scheduled; }; /* @@ -580,14 +610,30 @@ struct sctp_stream_queue_pending { TAILQ_HEAD(sctpwheelunrel_listhead, sctp_stream_in); struct sctp_stream_in { struct sctp_readhead inqueue; - uint16_t stream_no; - uint16_t last_sequence_delivered; /* used for re-order */ + struct sctp_readhead uno_inqueue; + uint32_t last_mid_delivered; /* used for re-order */ + uint16_t sid; uint8_t delivery_started; + uint8_t pd_api_started; }; TAILQ_HEAD(sctpwheel_listhead, sctp_stream_out); TAILQ_HEAD(sctplist_listhead, sctp_stream_queue_pending); +/* + * This union holds all data necessary for + * different stream schedulers. + */ +struct scheduling_data { + struct sctp_stream_out *locked_on_sending; + /* circular looking for output selection */ + struct sctp_stream_out *last_out_stream; + union { + struct sctpwheel_listhead wheel; + struct sctplist_listhead list; + } out; +}; + /* Round-robin schedulers */ struct ss_rr { /* next link in wheel */ @@ -610,30 +656,31 @@ struct ss_fb { int32_t rounds; }; -/* - * This union holds all data necessary for - * different stream schedulers. - */ -union scheduling_data { - struct sctpwheel_listhead out_wheel; - struct sctplist_listhead out_list; -}; - /* * This union holds all parameters per stream * necessary for different stream schedulers. */ -union scheduling_parameters { - struct ss_rr rr; - struct ss_prio prio; - struct ss_fb fb; +struct scheduling_parameters { + union { + struct ss_rr rr; + struct ss_prio prio; + struct ss_fb fb; + } ss; + bool scheduled; }; +/* States for outgoing streams */ +#define SCTP_STREAM_CLOSED 0x00 +#define SCTP_STREAM_OPENING 0x01 +#define SCTP_STREAM_OPEN 0x02 +#define SCTP_STREAM_RESET_PENDING 0x03 +#define SCTP_STREAM_RESET_IN_FLIGHT 0x04 + /* This struct is used to track the traffic on outbound streams */ struct sctp_stream_out { struct sctp_streamhead outqueue; - union scheduling_parameters ss_params; - uint32_t chunks_on_queues; + struct scheduling_parameters ss_params; + uint32_t chunks_on_queues; /* send queue and sent queue */ #if defined(SCTP_DETAILED_STR_STATS) uint32_t abandoned_unsent[SCTP_PR_SCTP_MAX + 1]; uint32_t abandoned_sent[SCTP_PR_SCTP_MAX + 1]; @@ -642,11 +689,18 @@ struct sctp_stream_out { uint32_t abandoned_unsent[1]; uint32_t abandoned_sent[1]; #endif - uint16_t stream_no; - uint16_t next_sequence_send; /* next one I expect to send out */ + /* For associations using DATA chunks, the lower 16-bit of + * next_mid_ordered are used as the next SSN. + */ + uint32_t next_mid_ordered; + uint32_t next_mid_unordered; + uint16_t sid; uint8_t last_msg_incomplete; + uint8_t state; }; +#define SCTP_MAX_STREAMS_AT_ONCE_RESET 200 + /* used to keep track of the addresses yet to try to add/delete */ TAILQ_HEAD(sctp_asconf_addrhead, sctp_asconf_addr); struct sctp_asconf_addr { @@ -674,12 +728,13 @@ struct sctp_scoping { struct sctp_tsn_log { void *stcb; uint32_t tsn; + uint32_t seq; uint16_t strm; - uint16_t seq; uint16_t sz; uint16_t flgs; uint16_t in_pos; uint16_t in_out; + uint16_t resv; }; #define SCTP_FS_SPEC_LOG_SIZE 200 @@ -692,26 +747,6 @@ struct sctp_fs_spec_log { uint8_t decr; }; -/* This struct is here to cut out the compatiabilty - * pad that bulks up both the inp and stcb. The non - * pad portion MUST stay in complete sync with - * sctp_sndrcvinfo... i.e. if sinfo_xxxx is added - * this must be done here too. - */ -struct sctp_nonpad_sndrcvinfo { - uint16_t sinfo_stream; - uint16_t sinfo_ssn; - uint16_t sinfo_flags; - uint32_t sinfo_ppid; - uint32_t sinfo_context; - uint32_t sinfo_timetolive; - uint32_t sinfo_tsn; - uint32_t sinfo_cumtsn; - sctp_assoc_t sinfo_assoc_id; - uint16_t sinfo_keynumber; - uint16_t sinfo_keynumber_valid; -}; - /* * JRS - Structure to hold function pointers to the functions responsible * for congestion control. @@ -751,16 +786,15 @@ struct sctp_cc_functions { * for stream scheduling. */ struct sctp_ss_functions { - void (*sctp_ss_init)(struct sctp_tcb *stcb, struct sctp_association *asoc, - int holds_lock); + void (*sctp_ss_init)(struct sctp_tcb *stcb, struct sctp_association *asoc); void (*sctp_ss_clear)(struct sctp_tcb *stcb, struct sctp_association *asoc, - int clear_values, int holds_lock); - void (*sctp_ss_init_stream)(struct sctp_stream_out *strq, struct sctp_stream_out *with_strq); + bool clear_values); + void (*sctp_ss_init_stream)(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq); void (*sctp_ss_add_to_stream)(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp, int holds_lock); - int (*sctp_ss_is_empty)(struct sctp_tcb *stcb, struct sctp_association *asoc); + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp); + bool (*sctp_ss_is_empty)(struct sctp_tcb *stcb, struct sctp_association *asoc); void (*sctp_ss_remove_from_stream)(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp, int holds_lock); + struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp); struct sctp_stream_out* (*sctp_ss_select_stream)(struct sctp_tcb *stcb, struct sctp_nets *net, struct sctp_association *asoc); void (*sctp_ss_scheduled)(struct sctp_tcb *stcb, struct sctp_nets *net, @@ -771,6 +805,7 @@ struct sctp_ss_functions { struct sctp_stream_out *strq, uint16_t *value); int (*sctp_ss_set_value)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, uint16_t value); + bool (*sctp_ss_is_user_msgs_incomplete)(struct sctp_tcb *stcb, struct sctp_association *asoc); }; /* used to save ASCONF chunks for retransmission */ @@ -818,7 +853,6 @@ struct sctp_association { struct sctp_timer strreset_timer; /* stream reset */ struct sctp_timer shut_guard_timer; /* shutdown guard */ struct sctp_timer autoclose_timer; /* automatic close timer */ - struct sctp_timer delayed_event_timer; /* timer for delayed events */ struct sctp_timer delete_prim_timer; /* deleting primary dst */ /* list of restricted local addresses */ @@ -850,20 +884,8 @@ struct sctp_association { struct sctpchunk_listhead sent_queue; struct sctpchunk_listhead send_queue; - /* re-assembly queue for fragmented chunks on the inbound path */ - struct sctpchunk_listhead reasmqueue; - /* Scheduling queues */ - union scheduling_data ss_data; - - /* This pointer will be set to NULL - * most of the time. But when we have - * a fragmented message, where we could - * not get out all of the message at - * the last send then this will point - * to the stream to go get data from. - */ - struct sctp_stream_out *locked_on_sending; + struct scheduling_data ss_data; /* If an iterator is looking at me, this is it */ struct sctp_iterator *stcb_starting_point_for_iterator; @@ -896,9 +918,6 @@ struct sctp_association { /* last place I got a control from */ struct sctp_nets *last_control_chunk_from; - /* circular looking for output selection */ - struct sctp_stream_out *last_out_stream; - /* * wait to the point the cum-ack passes req->send_reset_at_tsn for * any req on the list. @@ -918,7 +937,6 @@ struct sctp_association { uint32_t stream_scheduling_module; uint32_t vrf_id; - uint32_t cookie_preserve_req; /* ASCONF next seq I am sending out, inits at init-tsn */ uint32_t asconf_seq_out; @@ -963,7 +981,6 @@ struct sctp_association { /* Original seq number I used ??questionable to keep?? */ uint32_t init_seq_number; - /* The Advanced Peer Ack Point, as required by the PR-SCTP */ /* (A1 in Section 4.2) */ uint32_t advanced_peer_ack_point; @@ -992,7 +1009,7 @@ struct sctp_association { uint32_t sat_t3_recovery_tsn; uint32_t tsn_last_delivered; /* - * For the pd-api we should re-write this a bit more efficent. We + * For the pd-api we should re-write this a bit more efficient. We * could have multiple sctp_queued_to_read's that we are building at * once. Now we only do this when we get ready to deliver to the * socket buffer. Note that we depend on the fact that the struct is @@ -1087,7 +1104,7 @@ struct sctp_association { uint32_t heart_beat_delay; /* autoclose */ - unsigned int sctp_autoclose_ticks; + uint32_t sctp_autoclose_ticks; /* how many preopen streams we have */ unsigned int pre_open_streams; @@ -1096,7 +1113,7 @@ struct sctp_association { unsigned int max_inbound_streams; /* the cookie life I award for any cookie, in seconds */ - unsigned int cookie_life; + uint32_t cookie_life; /* time to delay acks for */ unsigned int delayed_ack; unsigned int old_delayed_ack; @@ -1105,10 +1122,10 @@ struct sctp_association { unsigned int numduptsns; int dup_tsns[SCTP_MAX_DUP_TSNS]; - unsigned int initial_init_rto_max; /* initial RTO for INIT's */ - unsigned int initial_rto; /* initial send RTO */ - unsigned int minrto; /* per assoc RTO-MIN */ - unsigned int maxrto; /* per assoc RTO-MAX */ + uint32_t initial_init_rto_max; /* initial RTO for INIT's */ + uint32_t initial_rto; /* initial send RTO */ + uint32_t minrto; /* per assoc RTO-MIN */ + uint32_t maxrto; /* per assoc RTO-MAX */ /* authentication fields */ sctp_auth_chklist_t *local_auth_chunks; @@ -1125,6 +1142,7 @@ struct sctp_association { uint32_t chunks_on_out_queue; /* total chunks floating around, * locked by send socket buffer */ uint32_t peers_adaptation; + uint32_t default_mtu; uint16_t peer_hmac_id; /* peer HMAC id to send */ /* @@ -1198,7 +1216,7 @@ struct sctp_association { uint8_t hb_random_idx; uint8_t default_dscp; uint8_t asconf_del_pending; /* asconf delete last addr pending */ - + uint8_t trigger_reset; /* * This value, plus all other ack'd but above cum-ack is added * together to cross check against the bit that we have yet to @@ -1214,17 +1232,23 @@ struct sctp_association { uint8_t reconfig_supported; uint8_t nrsack_supported; uint8_t pktdrop_supported; + uint8_t idata_supported; + + /* Zero checksum supported information: + * 0: disabled + * 1: enabled for rcv + * 2: enabled for snd/rcv + */ + uint8_t zero_checksum; /* Did the peer make the stream config (add out) request */ uint8_t peer_req_out; uint8_t local_strreset_support; - uint8_t peer_supports_nat; struct sctp_scoping scope; /* flags to handle send alternate net tracking */ - uint8_t used_alt_onsack; uint8_t used_alt_asconfack; uint8_t fast_retran_loss_recovery; uint8_t sat_t3_loss_recovery; diff --git a/netwerk/sctp/src/netinet/sctp_sysctl.c b/netwerk/sctp/src/netinet/sctp_sysctl.c index 43f59313e1..ffbe49e080 100755 --- a/netwerk/sctp/src/netinet/sctp_sysctl.c +++ b/netwerk/sctp/src/netinet/sctp_sysctl.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_sysctl.c 277424 2015-01-20 19:08:55Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -42,15 +44,15 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_sysctl.c 277424 2015-01-20 19:08:55Z t #include #include #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #include #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #include #endif -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) FEATURE(sctp, "Stream Control Transmission Protocol"); #endif @@ -59,7 +61,7 @@ FEATURE(sctp, "Stream Control Transmission Protocol"); */ void -sctp_init_sysctls() +sctp_init_sysctls(void) { SCTP_BASE_SYSCTL(sctp_sendspace) = SCTPCTL_MAXDGRAM_DEFAULT; SCTP_BASE_SYSCTL(sctp_recvspace) = SCTPCTL_RECVSPACE_DEFAULT; @@ -72,20 +74,35 @@ sctp_init_sysctls() SCTP_BASE_SYSCTL(sctp_reconfig_enable) = SCTPCTL_RECONFIG_ENABLE_DEFAULT; SCTP_BASE_SYSCTL(sctp_nrsack_enable) = SCTPCTL_NRSACK_ENABLE_DEFAULT; SCTP_BASE_SYSCTL(sctp_pktdrop_enable) = SCTPCTL_PKTDROP_ENABLE_DEFAULT; - SCTP_BASE_SYSCTL(sctp_strict_sacks) = SCTPCTL_STRICT_SACKS_DEFAULT; -#if !(defined(__FreeBSD__) && __FreeBSD_version >= 800000) -#if !defined(SCTP_WITH_NO_CSUM) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) = SCTPCTL_LOOPBACK_NOCSUM_DEFAULT; -#endif #endif SCTP_BASE_SYSCTL(sctp_peer_chunk_oh) = SCTPCTL_PEER_CHKOH_DEFAULT; SCTP_BASE_SYSCTL(sctp_max_burst_default) = SCTPCTL_MAXBURST_DEFAULT; SCTP_BASE_SYSCTL(sctp_fr_max_burst_default) = SCTPCTL_FRMAXBURST_DEFAULT; SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue) = SCTPCTL_MAXCHUNKS_DEFAULT; +#if defined(__Userspace__) + if (SCTP_BASE_SYSCTL(sctp_hashtblsize) == 0) { + SCTP_BASE_SYSCTL(sctp_hashtblsize) = SCTPCTL_TCBHASHSIZE_DEFAULT; + } +#else SCTP_BASE_SYSCTL(sctp_hashtblsize) = SCTPCTL_TCBHASHSIZE_DEFAULT; +#endif +#if defined(__Userspace__) + if (SCTP_BASE_SYSCTL(sctp_pcbtblsize) == 0) { + SCTP_BASE_SYSCTL(sctp_pcbtblsize) = SCTPCTL_PCBHASHSIZE_DEFAULT; + } +#else SCTP_BASE_SYSCTL(sctp_pcbtblsize) = SCTPCTL_PCBHASHSIZE_DEFAULT; +#endif SCTP_BASE_SYSCTL(sctp_min_split_point) = SCTPCTL_MIN_SPLIT_POINT_DEFAULT; +#if defined(__Userspace__) + if (SCTP_BASE_SYSCTL(sctp_chunkscale) == 0) { + SCTP_BASE_SYSCTL(sctp_chunkscale) = SCTPCTL_CHUNKSCALE_DEFAULT; + } +#else SCTP_BASE_SYSCTL(sctp_chunkscale) = SCTPCTL_CHUNKSCALE_DEFAULT; +#endif SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default) = SCTPCTL_DELAYED_SACK_TIME_DEFAULT; SCTP_BASE_SYSCTL(sctp_sack_freq_default) = SCTPCTL_SACK_FREQ_DEFAULT; SCTP_BASE_SYSCTL(sctp_system_free_resc_limit) = SCTPCTL_SYS_RESOURCE_DEFAULT; @@ -115,7 +132,6 @@ sctp_init_sysctls() SCTP_BASE_SYSCTL(sctp_do_drain) = SCTPCTL_DO_SCTP_DRAIN_DEFAULT; SCTP_BASE_SYSCTL(sctp_hb_maxburst) = SCTPCTL_HB_MAX_BURST_DEFAULT; SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit) = SCTPCTL_ABORT_AT_LIMIT_DEFAULT; - SCTP_BASE_SYSCTL(sctp_strict_data_order) = SCTPCTL_STRICT_DATA_ORDER_DEFAULT; SCTP_BASE_SYSCTL(sctp_min_residual) = SCTPCTL_MIN_RESIDUAL_DEFAULT; SCTP_BASE_SYSCTL(sctp_max_retran_chunk) = SCTPCTL_MAX_RETRAN_CHUNK_DEFAULT; SCTP_BASE_SYSCTL(sctp_logging_level) = SCTPCTL_LOGGING_LEVEL_DEFAULT; @@ -133,9 +149,11 @@ sctp_init_sysctls() SCTP_BASE_SYSCTL(sctp_steady_step) = SCTPCTL_RTTVAR_STEADYS_DEFAULT; SCTP_BASE_SYSCTL(sctp_use_dccc_ecn) = SCTPCTL_RTTVAR_DCCCECN_DEFAULT; SCTP_BASE_SYSCTL(sctp_blackhole) = SCTPCTL_BLACKHOLE_DEFAULT; + SCTP_BASE_SYSCTL(sctp_sendall_limit) = SCTPCTL_SENDALL_LIMIT_DEFAULT; SCTP_BASE_SYSCTL(sctp_diag_info_code) = SCTPCTL_DIAG_INFO_CODE_DEFAULT; + SCTP_BASE_SYSCTL(sctp_ootb_with_zero_cksum) = SCTPCTL_OOTB_WITH_ZERO_CKSUM_DEFAULT; #if defined(SCTP_LOCAL_TRACE_BUF) -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) /* On Windows, the resource for global variables is limited. */ MALLOC(SCTP_BASE_SYSCTL(sctp_log), struct sctp_log *, sizeof(struct sctp_log), M_SYSCTL, M_ZERO); #else @@ -148,18 +166,18 @@ sctp_init_sysctls() #if defined(SCTP_DEBUG) SCTP_BASE_SYSCTL(sctp_debug_on) = SCTPCTL_DEBUG_DEFAULT; #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_BASE_SYSCTL(sctp_ignore_vmware_interfaces) = SCTPCTL_IGNORE_VMWARE_INTERFACES_DEFAULT; SCTP_BASE_SYSCTL(sctp_main_timer) = SCTPCTL_MAIN_TIMER_DEFAULT; SCTP_BASE_SYSCTL(sctp_addr_watchdog_limit) = SCTPCTL_ADDR_WATCHDOG_LIMIT_DEFAULT; SCTP_BASE_SYSCTL(sctp_vtag_watchdog_limit) = SCTPCTL_VTAG_WATCHDOG_LIMIT_DEFAULT; #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_BASE_SYSCTL(sctp_output_unlocked) = SCTPCTL_OUTPUT_UNLOCKED_DEFAULT; #endif } +#if defined(_WIN32) && !defined(__Userspace__) -#if defined(__Windows__) void sctp_finish_sysctls() { @@ -172,7 +190,7 @@ sctp_finish_sysctls() } #endif -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__Windows__) +#if !defined(__Userspace__) /* It returns an upper limit. No filtering is done here */ static unsigned int sctp_sysctl_number_of_addresses(struct sctp_inpcb *inp) @@ -184,7 +202,7 @@ sctp_sysctl_number_of_addresses(struct sctp_inpcb *inp) struct sctp_laddr *laddr; cnt = 0; - /* neither Mac OS X nor FreeBSD support mulitple routing functions */ + /* neither Mac OS X nor FreeBSD support multiple routing functions */ if ((vrf = sctp_find_vrf(inp->def_vrf_id)) == NULL) { return (0); } @@ -229,8 +247,15 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st { struct sctp_ifn *sctp_ifn; struct sctp_ifa *sctp_ifa; - int loopback_scope, ipv4_local_scope, local_scope, site_scope; - int ipv4_addr_legal, ipv6_addr_legal; + int loopback_scope; +#ifdef INET + int ipv4_local_scope; + int ipv4_addr_legal; +#endif +#ifdef INET6 + int local_scope, site_scope; + int ipv6_addr_legal; +#endif #if defined(__Userspace__) int conn_addr_legal; #endif @@ -240,68 +265,90 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st int error; /* Turn on all the appropriate scope */ - if (stcb) { + if (stcb != NULL) { /* use association specific values */ loopback_scope = stcb->asoc.scope.loopback_scope; +#ifdef INET ipv4_local_scope = stcb->asoc.scope.ipv4_local_scope; + ipv4_addr_legal = stcb->asoc.scope.ipv4_addr_legal; +#endif +#ifdef INET6 local_scope = stcb->asoc.scope.local_scope; site_scope = stcb->asoc.scope.site_scope; - ipv4_addr_legal = stcb->asoc.scope.ipv4_addr_legal; ipv6_addr_legal = stcb->asoc.scope.ipv6_addr_legal; +#endif #if defined(__Userspace__) conn_addr_legal = stcb->asoc.scope.conn_addr_legal; #endif } else { /* Use generic values for endpoints. */ loopback_scope = 1; +#ifdef INET ipv4_local_scope = 1; +#endif +#ifdef INET6 local_scope = 1; site_scope = 1; +#endif if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { +#ifdef INET6 ipv6_addr_legal = 1; +#endif +#ifdef INET if (SCTP_IPV6_V6ONLY(inp)) { ipv4_addr_legal = 0; } else { ipv4_addr_legal = 1; } +#endif #if defined(__Userspace__) conn_addr_legal = 0; #endif } else { +#ifdef INET6 ipv6_addr_legal = 0; +#endif #if defined(__Userspace__) if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) { conn_addr_legal = 1; +#ifdef INET ipv4_addr_legal = 0; +#endif } else { conn_addr_legal = 0; +#ifdef INET ipv4_addr_legal = 1; +#endif } #else +#ifdef INET ipv4_addr_legal = 1; +#endif #endif } } - /* neither Mac OS X nor FreeBSD support mulitple routing functions */ + /* Neither Mac OS X nor FreeBSD support multiple routing functions. */ if ((vrf = sctp_find_vrf(inp->def_vrf_id)) == NULL) { SCTP_INP_RUNLOCK(inp); SCTP_INP_INFO_RUNLOCK(); - return (-1); + return (ENOENT); } if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { LIST_FOREACH(sctp_ifn, &vrf->ifnlist, next_ifn) { - if ((loopback_scope == 0) && SCTP_IFN_IS_IFT_LOOP(sctp_ifn)) - /* Skip loopback if loopback_scope not set */ + if ((loopback_scope == 0) && SCTP_IFN_IS_IFT_LOOP(sctp_ifn)) { + /* Skip loopback if loopback_scope not set. */ continue; + } LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) { - if (stcb) { + if (stcb != NULL) { /* - * ignore if blacklisted at - * association level + * Ignore if blacklisted at + * association level. */ - if (sctp_is_addr_restricted(stcb, sctp_ifa)) + if (sctp_is_addr_restricted(stcb, sctp_ifa)) { continue; + } } switch (sctp_ifa->address.sa.sa_family) { #ifdef INET @@ -310,16 +357,18 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st struct sockaddr_in *sin; sin = &sctp_ifa->address.sin; - if (sin->sin_addr.s_addr == 0) + if (sin->sin_addr.s_addr == 0) { continue; -#if defined(__FreeBSD__) + } +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; } #endif - if ((ipv4_local_scope == 0) && (IN4_ISPRIVATE_ADDRESS(&sin->sin_addr))) + if ((ipv4_local_scope == 0) && (IN4_ISPRIVATE_ADDRESS(&sin->sin_addr))) { continue; + } } else { continue; } @@ -330,39 +379,24 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st if (ipv6_addr_legal) { struct sockaddr_in6 *sin6; -#if defined(SCTP_EMBEDDED_V6_SCOPE) && !defined(SCTP_KAME) - struct sockaddr_in6 lsa6; -#endif sin6 = &sctp_ifa->address.sin6; - if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) + if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { continue; -#if defined(__FreeBSD__) + } +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; } #endif if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) { - if (local_scope == 0) + if (local_scope == 0) { continue; -#if defined(SCTP_EMBEDDED_V6_SCOPE) - if (sin6->sin6_scope_id == 0) { -#ifdef SCTP_KAME - /* bad link local address */ - if (sa6_recoverscope(sin6) != 0) - continue; -#else - lsa6 = *sin6; - /* bad link local address */ - if (in6_recoverscope(&lsa6, &lsa6.sin6_addr, NULL)) - continue; - sin6 = &lsa6; -#endif /* SCTP_KAME */ } -#endif /* SCTP_EMBEDDED_V6_SCOPE */ } - if ((site_scope == 0) && (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr))) + if ((site_scope == 0) && (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr))) { continue; + } } else { continue; } @@ -383,7 +417,7 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st SCTP_INP_RUNLOCK(inp); SCTP_INP_INFO_RUNLOCK(); error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr)); - if (error) { + if (error != 0) { return (error); } else { SCTP_INP_INFO_RLOCK(); @@ -394,7 +428,7 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st } else { LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { /* ignore if blacklisted at association level */ - if (stcb && sctp_is_addr_restricted(stcb, laddr->ifa)) + if (stcb != NULL && sctp_is_addr_restricted(stcb, laddr->ifa)) continue; memset((void *)&xladdr, 0, sizeof(struct xsctp_laddr)); memcpy((void *)&xladdr.address, (const void *)&laddr->ifa->address, sizeof(union sctp_sockstore)); @@ -403,7 +437,7 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st SCTP_INP_RUNLOCK(inp); SCTP_INP_INFO_RUNLOCK(); error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr)); - if (error) { + if (error != 0) { return (error); } else { SCTP_INP_INFO_RLOCK(); @@ -417,7 +451,7 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st SCTP_INP_INFO_RUNLOCK(); error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr)); - if (error) { + if (error != 0) { return (error); } else { SCTP_INP_INFO_RLOCK(); @@ -429,7 +463,7 @@ sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *st /* * sysctl functions */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_assoclist SYSCTL_HANDLER_ARGS { @@ -459,7 +493,7 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) number_of_remote_addresses = 0; SCTP_INP_INFO_RLOCK(); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (req->oldptr == USER_ADDR_NULL) { #else if (req->oldptr == NULL) { @@ -484,14 +518,14 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) (number_of_remote_addresses + number_of_associations) * sizeof(struct xsctp_raddr); /* request some more memory than needed */ -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) req->oldidx = (n + n / 8); #else req->dataidx = (n + n / 8); #endif return (0); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (req->newptr != USER_ADDR_NULL) { #else if (req->newptr != NULL) { @@ -500,6 +534,9 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_SYSCTL, EPERM); return (EPERM); } + memset(&xinpcb, 0, sizeof(xinpcb)); + memset(&xstcb, 0, sizeof(xstcb)); + memset(&xraddr, 0, sizeof(xraddr)); LIST_FOREACH(inp, &SCTP_BASE_INFO(listhead), sctp_list) { SCTP_INP_RLOCK(inp); if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { @@ -509,23 +546,34 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) xinpcb.last = 0; xinpcb.local_port = ntohs(inp->sctp_lport); xinpcb.flags = inp->sctp_flags; -#if defined(__FreeBSD__) && __FreeBSD_version < 1000048 - xinpcb.features = (uint32_t)inp->sctp_features; -#else xinpcb.features = inp->sctp_features; -#endif xinpcb.total_sends = inp->total_sends; xinpcb.total_recvs = inp->total_recvs; xinpcb.total_nospaces = inp->total_nospaces; xinpcb.fragmentation_point = inp->sctp_frag_point; +#if defined(__FreeBSD__) && !defined(__Userspace__) + xinpcb.socket = (uintptr_t)inp->sctp_socket; +#else + xinpcb.socket = inp->sctp_socket; +#endif so = inp->sctp_socket; if ((so == NULL) || + (!SCTP_IS_LISTENING(inp)) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) { xinpcb.qlen = 0; xinpcb.maxqlen = 0; } else { +#if defined(__FreeBSD__) && !defined(__Userspace__) + xinpcb.qlen = so->sol_qlen; + xinpcb.qlen_old = so->sol_qlen > USHRT_MAX ? + USHRT_MAX : (uint16_t) so->sol_qlen; + xinpcb.maxqlen = so->sol_qlimit; + xinpcb.maxqlen_old = so->sol_qlimit > USHRT_MAX ? + USHRT_MAX : (uint16_t) so->sol_qlimit; +#else xinpcb.qlen = so->so_qlen; xinpcb.maxqlen = so->so_qlimit; +#endif } SCTP_INP_INCR_REF(inp); SCTP_INP_RUNLOCK(inp); @@ -552,17 +600,9 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) if (stcb->asoc.primary_destination != NULL) xstcb.primary_addr = stcb->asoc.primary_destination->ro._l_addr; xstcb.heartbeat_interval = stcb->asoc.heart_beat_delay; - xstcb.state = SCTP_GET_STATE(&stcb->asoc); /* FIXME */ -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800000 - /* 7.0 does not support these */ + xstcb.state = (uint32_t)sctp_map_assoc_state(stcb->asoc.state); xstcb.assoc_id = sctp_get_associd(stcb); xstcb.peers_rwnd = stcb->asoc.peers_rwnd; -#endif -#else - xstcb.assoc_id = sctp_get_associd(stcb); - xstcb.peers_rwnd = stcb->asoc.peers_rwnd; -#endif xstcb.in_streams = stcb->asoc.streamincnt; xstcb.out_streams = stcb->asoc.streamoutcnt; xstcb.max_nr_retrans = stcb->asoc.overall_error_count; @@ -614,15 +654,17 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) xraddr.cwnd = net->cwnd; xraddr.flight_size = net->flight_size; xraddr.mtu = net->mtu; -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800000 - xraddr.rtt = net->rtt / 1000; - xraddr.heartbeat_interval = net->heart_beat_delay; -#endif -#else xraddr.rtt = net->rtt / 1000; xraddr.heartbeat_interval = net->heart_beat_delay; -#endif + xraddr.ssthresh = net->ssthresh; + xraddr.encaps_port = net->port; + if (net->dest_state & SCTP_ADDR_UNCONFIRMED) { + xraddr.state = SCTP_UNCONFIRMED; + } else if (net->dest_state & SCTP_ADDR_REACHABLE) { + xraddr.state = SCTP_ACTIVE; + } else { + xraddr.state = SCTP_INACTIVE; + } xraddr.start_time.tv_sec = (uint32_t)net->start_time.tv_sec; xraddr.start_time.tv_usec = (uint32_t)net->start_time.tv_usec; SCTP_INP_RUNLOCK(inp); @@ -669,7 +711,7 @@ sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS) return (error); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_udp_tunneling SYSCTL_HANDLER_ARGS { @@ -686,22 +728,14 @@ sctp_sysctl_handle_udp_tunneling(SYSCTL_HANDLER_ARGS) old = SCTP_BASE_SYSCTL(sctp_udp_tunneling_port); SCTP_INP_INFO_RUNLOCK(); new = old; -#if defined(__FreeBSD__) && __FreeBSD_version >= 800056 && __FreeBSD_version < 1000100 -#ifdef VIMAGE - error = vnet_sysctl_handle_int(oidp, &new, 0, req); -#else error = sysctl_handle_int(oidp, &new, 0, req); -#endif -#else - error = sysctl_handle_int(oidp, &new, 0, req); -#endif if ((error == 0) && -#if defined (__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) (req->newptr != USER_ADDR_NULL)) { #else (req->newptr != NULL)) { #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) SCTP_INP_INFO_WLOCK(); sctp_over_udp_restart(); SCTP_INP_INFO_WUNLOCK(); @@ -728,8 +762,8 @@ sctp_sysctl_handle_udp_tunneling(SYSCTL_HANDLER_ARGS) } return (error); } +#if defined(__APPLE__) && !defined(__Userspace__) -#if defined(__APPLE__) int sctp_is_vmware_interface(struct ifnet *); static int @@ -762,7 +796,7 @@ sctp_sysctl_handle_vmware_interfaces SYSCTL_HANDLER_ARGS } #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_auth SYSCTL_HANDLER_ARGS { @@ -776,17 +810,9 @@ sctp_sysctl_handle_auth(SYSCTL_HANDLER_ARGS) uint32_t new; new = SCTP_BASE_SYSCTL(sctp_auth_enable); -#if defined(__FreeBSD__) && __FreeBSD_version >= 800056 && __FreeBSD_version < 1000100 -#ifdef VIMAGE - error = vnet_sysctl_handle_int(oidp, &new, 0, req); -#else - error = sysctl_handle_int(oidp, &new, 0, req); -#endif -#else error = sysctl_handle_int(oidp, &new, 0, req); -#endif if ((error == 0) && -#if defined (__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) (req->newptr != USER_ADDR_NULL)) { #else (req->newptr != NULL)) { @@ -807,7 +833,7 @@ sctp_sysctl_handle_auth(SYSCTL_HANDLER_ARGS) return (error); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_asconf SYSCTL_HANDLER_ARGS { @@ -821,17 +847,9 @@ sctp_sysctl_handle_asconf(SYSCTL_HANDLER_ARGS) uint32_t new; new = SCTP_BASE_SYSCTL(sctp_asconf_enable); -#if defined(__FreeBSD__) && __FreeBSD_version >= 800056 && __FreeBSD_version < 1000100 -#ifdef VIMAGE - error = vnet_sysctl_handle_int(oidp, &new, 0, req); -#else error = sysctl_handle_int(oidp, &new, 0, req); -#endif -#else - error = sysctl_handle_int(oidp, &new, 0, req); -#endif if ((error == 0) && -#if defined (__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) (req->newptr != USER_ADDR_NULL)) { #else (req->newptr != NULL)) { @@ -852,7 +870,7 @@ sctp_sysctl_handle_asconf(SYSCTL_HANDLER_ARGS) return (error); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_stats SYSCTL_HANDLER_ARGS { @@ -863,7 +881,7 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) { #endif int error; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) struct sctpstat *sarry; struct sctpstat sb; @@ -872,7 +890,7 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) struct sctpstat sb_temp; #endif -#if defined (__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if ((req->newptr != USER_ADDR_NULL) && #else if ((req->newptr != NULL) && @@ -880,7 +898,7 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) (req->newlen != sizeof(struct sctpstat))) { return (EINVAL); } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) memset(&sb_temp, 0, sizeof(struct sctpstat)); if (req->newptr != NULL) { @@ -932,7 +950,6 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) sb.sctps_recvauthfailed += sarry->sctps_recvauthfailed; sb.sctps_recvexpress += sarry->sctps_recvexpress; sb.sctps_recvexpressm += sarry->sctps_recvexpressm; - sb.sctps_recvnocrc += sarry->sctps_recvnocrc; sb.sctps_recvswcrc += sarry->sctps_recvswcrc; sb.sctps_recvhwcrc += sarry->sctps_recvhwcrc; sb.sctps_sendpackets += sarry->sctps_sendpackets; @@ -945,7 +962,6 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) sb.sctps_sendecne += sarry->sctps_sendecne; sb.sctps_sendauth += sarry->sctps_sendauth; sb.sctps_senderrors += sarry->sctps_senderrors; - sb.sctps_sendnocrc += sarry->sctps_sendnocrc; sb.sctps_sendswcrc += sarry->sctps_sendswcrc; sb.sctps_sendhwcrc += sarry->sctps_sendhwcrc; sb.sctps_pdrpfmbox += sarry->sctps_pdrpfmbox; @@ -1018,6 +1034,9 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) sb.sctps_send_burst_avoid += sarry->sctps_send_burst_avoid; sb.sctps_send_cwnd_avoid += sarry->sctps_send_cwnd_avoid; sb.sctps_fwdtsn_map_over += sarry->sctps_fwdtsn_map_over; + sb.sctps_queue_upd_ecne += sarry->sctps_queue_upd_ecne; + sb.sctps_recvzerocrc += sarry->sctps_recvzerocrc; + sb.sctps_sendzerocrc += sarry->sctps_sendzerocrc; if (req->newptr != NULL) { memcpy(sarry, &sb_temp, sizeof(struct sctpstat)); } @@ -1039,7 +1058,7 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS) } #if defined(SCTP_LOCAL_TRACE_BUF) -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_trace_log SYSCTL_HANDLER_ARGS { @@ -1051,7 +1070,7 @@ sctp_sysctl_handle_trace_log(SYSCTL_HANDLER_ARGS) #endif int error; -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) error = SYSCTL_OUT(req, SCTP_BASE_SYSCTL(sctp_log), sizeof(struct sctp_log)); #else error = SYSCTL_OUT(req, &SCTP_BASE_SYSCTL(sctp_log), sizeof(struct sctp_log)); @@ -1059,7 +1078,7 @@ sctp_sysctl_handle_trace_log(SYSCTL_HANDLER_ARGS) return (error); } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) static int sctp_sysctl_handle_trace_log_clear SYSCTL_HANDLER_ARGS { @@ -1070,7 +1089,7 @@ sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS) { #endif int error = 0; -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) int value = 0; if (req->new_data == NULL) { @@ -1088,33 +1107,8 @@ sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS) } #endif -#if defined(__APPLE__) || defined(__FreeBSD__) +#if (defined(__APPLE__) || defined(__FreeBSD__)) && !defined(__Userspace__) #if defined(__FreeBSD__) -#if __FreeBSD_version >= 800056 && __FreeBSD_version < 1000100 -#ifdef VIMAGE -#define SCTP_UINT_SYSCTL(name, var_name, prefix) \ - static int \ - sctp_sysctl_handle_##mib_name(SYSCTL_HANDLER_ARGS) \ - { \ - int error; \ - uint32_t new; \ - \ - new = SCTP_BASE_SYSCTL(var_name); \ - error = vnet_sysctl_handle_int(oidp, &new, 0, req); \ - if ((error == 0) && (req->newptr != NULL)) { \ - if ((new < prefix##_MIN) || \ - (new > prefix##_MAX)) { \ - error = EINVAL; \ - } else { \ - SCTP_BASE_SYSCTL(var_name) = new; \ - } \ - } \ - return (error); \ - } \ - SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, \ - CTLTYPE_UINT|CTLFLAG_RW, NULL, 0, \ - sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC); -#else #define SCTP_UINT_SYSCTL(mib_name, var_name, prefix) \ static int \ sctp_sysctl_handle_##mib_name(SYSCTL_HANDLER_ARGS) \ @@ -1137,31 +1131,6 @@ sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, \ CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW, NULL, 0, \ sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC); -#endif -#else -#define SCTP_UINT_SYSCTL(mib_name, var_name, prefix) \ - static int \ - sctp_sysctl_handle_##mib_name(SYSCTL_HANDLER_ARGS) \ - { \ - int error; \ - uint32_t new; \ - \ - new = SCTP_BASE_SYSCTL(var_name); \ - error = sysctl_handle_int(oidp, &new, 0, req); \ - if ((error == 0) && (req->newptr != NULL)) { \ - if ((new < prefix##_MIN) || \ - (new > prefix##_MAX)) { \ - error = EINVAL; \ - } else { \ - SCTP_BASE_SYSCTL(var_name) = new; \ - } \ - } \ - return (error); \ - } \ - SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, \ - CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW, NULL, 0, \ - sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC); -#endif #else #define SCTP_UINT_SYSCTL(mib_name, var_name, prefix) \ static int \ @@ -1208,12 +1177,9 @@ SYSCTL_PROC(_net_inet_sctp, OID_AUTO, asconf_enable, CTLFLAG_VNET|CTLTYPE_UINT|C SCTP_UINT_SYSCTL(reconfig_enable, sctp_reconfig_enable, SCTPCTL_RECONFIG_ENABLE) SCTP_UINT_SYSCTL(nrsack_enable, sctp_nrsack_enable, SCTPCTL_NRSACK_ENABLE) SCTP_UINT_SYSCTL(pktdrop_enable, sctp_pktdrop_enable, SCTPCTL_PKTDROP_ENABLE) -SCTP_UINT_SYSCTL(strict_sacks, sctp_strict_sacks, SCTPCTL_STRICT_SACKS) -#if defined(__APPLE__) -#if !defined(SCTP_WITH_NO_CSUM) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_UINT_SYSCTL(loopback_nocsum, sctp_no_csum_on_loopback, SCTPCTL_LOOPBACK_NOCSUM) #endif -#endif SCTP_UINT_SYSCTL(peer_chkoh, sctp_peer_chunk_oh, SCTPCTL_PEER_CHKOH) SCTP_UINT_SYSCTL(maxburst, sctp_max_burst_default, SCTPCTL_MAXBURST) SCTP_UINT_SYSCTL(fr_maxburst, sctp_fr_max_burst_default, SCTPCTL_FRMAXBURST) @@ -1251,7 +1217,6 @@ SCTP_UINT_SYSCTL(max_chained_mbufs, sctp_mbuf_threshold_count, SCTPCTL_MAX_CHAIN SCTP_UINT_SYSCTL(do_sctp_drain, sctp_do_drain, SCTPCTL_DO_SCTP_DRAIN) SCTP_UINT_SYSCTL(hb_max_burst, sctp_hb_maxburst, SCTPCTL_HB_MAX_BURST) SCTP_UINT_SYSCTL(abort_at_limit, sctp_abort_if_one_2_one_hits_limit, SCTPCTL_ABORT_AT_LIMIT) -SCTP_UINT_SYSCTL(strict_data_order, sctp_strict_data_order, SCTPCTL_STRICT_DATA_ORDER) SCTP_UINT_SYSCTL(min_residual, sctp_min_residual, SCTPCTL_MIN_RESIDUAL) SCTP_UINT_SYSCTL(max_retran_chunk, sctp_max_retran_chunk, SCTPCTL_MAX_RETRAN_CHUNK) SCTP_UINT_SYSCTL(log_level, sctp_logging_level, SCTPCTL_LOGGING_LEVEL) @@ -1279,18 +1244,20 @@ SCTP_UINT_SYSCTL(rttvar_eqret, sctp_rttvar_eqret, SCTPCTL_RTTVAR_EQRET) SCTP_UINT_SYSCTL(rttvar_steady_step, sctp_steady_step, SCTPCTL_RTTVAR_STEADYS) SCTP_UINT_SYSCTL(use_dcccecn, sctp_use_dccc_ecn, SCTPCTL_RTTVAR_DCCCECN) SCTP_UINT_SYSCTL(blackhole, sctp_blackhole, SCTPCTL_BLACKHOLE) +SCTP_UINT_SYSCTL(sendall_limit, sctp_sendall_limit, SCTPCTL_SENDALL_LIMIT) SCTP_UINT_SYSCTL(diag_info_code, sctp_diag_info_code, SCTPCTL_DIAG_INFO_CODE) +SCTP_UINT_SYSCTL(ootb_with_zero_cksum, sctp_ootb_with_zero_cksum, SCTPCTL_OOTB_WITH_ZERO_CKSUM) #ifdef SCTP_DEBUG SCTP_UINT_SYSCTL(debug, sctp_debug_on, SCTPCTL_DEBUG) #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_UINT_SYSCTL(main_timer, sctp_main_timer, SCTPCTL_MAIN_TIMER) SYSCTL_PROC(_net_inet_sctp, OID_AUTO, ignore_vmware_interfaces, CTLTYPE_UINT|CTLFLAG_RW, NULL, 0, sctp_sysctl_handle_vmware_interfaces, "IU", SCTPCTL_IGNORE_VMWARE_INTERFACES_DESC); SCTP_UINT_SYSCTL(addr_watchdog_limit, sctp_addr_watchdog_limit, SCTPCTL_ADDR_WATCHDOG_LIMIT) SCTP_UINT_SYSCTL(vtag_watchdog_limit, sctp_vtag_watchdog_limit, SCTPCTL_VTAG_WATCHDOG_LIMIT) #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_UINT_SYSCTL(output_unlocked, sctp_output_unlocked, SCTPCTL_OUTPUT_UNLOCKED) #endif SYSCTL_PROC(_net_inet_sctp, OID_AUTO, stats, CTLFLAG_VNET|CTLTYPE_STRUCT|CTLFLAG_RW, @@ -1298,7 +1265,7 @@ SYSCTL_PROC(_net_inet_sctp, OID_AUTO, stats, CTLFLAG_VNET|CTLTYPE_STRUCT|CTLFLAG SYSCTL_PROC(_net_inet_sctp, OID_AUTO, assoclist, CTLFLAG_VNET|CTLTYPE_OPAQUE|CTLFLAG_RD, NULL, 0, sctp_sysctl_handle_assoclist, "S,xassoc", "List of active SCTP associations"); -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) #define RANGECHK(var, min, max) \ if ((var) < (min)) { (var) = (min); } \ @@ -1320,10 +1287,7 @@ sctp_sysctl_handle_int(SYSCTL_HANDLER_ARGS) RANGECHK(SCTP_BASE_SYSCTL(sctp_reconfig_enable), SCTPCTL_RECONFIG_ENABLE_MIN, SCTPCTL_RECONFIG_ENABLE_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_nrsack_enable), SCTPCTL_NRSACK_ENABLE_MIN, SCTPCTL_NRSACK_ENABLE_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_pktdrop_enable), SCTPCTL_PKTDROP_ENABLE_MIN, SCTPCTL_PKTDROP_ENABLE_MAX); - RANGECHK(SCTP_BASE_SYSCTL(sctp_strict_sacks), SCTPCTL_STRICT_SACKS_MIN, SCTPCTL_STRICT_SACKS_MAX); -#if !defined(SCTP_WITH_NO_CSUM) RANGECHK(SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback), SCTPCTL_LOOPBACK_NOCSUM_MIN, SCTPCTL_LOOPBACK_NOCSUM_MAX); -#endif RANGECHK(SCTP_BASE_SYSCTL(sctp_peer_chunk_oh), SCTPCTL_PEER_CHKOH_MIN, SCTPCTL_PEER_CHKOH_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_max_burst_default), SCTPCTL_MAXBURST_MIN, SCTPCTL_MAXBURST_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_fr_max_burst_default), SCTPCTL_FRMAXBURST_MIN, SCTPCTL_FRMAXBURST_MAX); @@ -1361,7 +1325,6 @@ sctp_sysctl_handle_int(SYSCTL_HANDLER_ARGS) RANGECHK(SCTP_BASE_SYSCTL(sctp_do_drain), SCTPCTL_DO_SCTP_DRAIN_MIN, SCTPCTL_DO_SCTP_DRAIN_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_hb_maxburst), SCTPCTL_HB_MAX_BURST_MIN, SCTPCTL_HB_MAX_BURST_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit), SCTPCTL_ABORT_AT_LIMIT_MIN, SCTPCTL_ABORT_AT_LIMIT_MAX); - RANGECHK(SCTP_BASE_SYSCTL(sctp_strict_data_order), SCTPCTL_STRICT_DATA_ORDER_MIN, SCTPCTL_STRICT_DATA_ORDER_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_min_residual), SCTPCTL_MIN_RESIDUAL_MIN, SCTPCTL_MIN_RESIDUAL_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_max_retran_chunk), SCTPCTL_MAX_RETRAN_CHUNK_MIN, SCTPCTL_MAX_RETRAN_CHUNK_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_logging_level), SCTPCTL_LOGGING_LEVEL_MIN, SCTPCTL_LOGGING_LEVEL_MAX); @@ -1381,7 +1344,9 @@ sctp_sysctl_handle_int(SYSCTL_HANDLER_ARGS) RANGECHK(SCTP_BASE_SYSCTL(sctp_enable_sack_immediately), SCTPCTL_SACK_IMMEDIATELY_ENABLE_MIN, SCTPCTL_SACK_IMMEDIATELY_ENABLE_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_inits_include_nat_friendly), SCTPCTL_NAT_FRIENDLY_INITS_MIN, SCTPCTL_NAT_FRIENDLY_INITS_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_blackhole), SCTPCTL_BLACKHOLE_MIN, SCTPCTL_BLACKHOLE_MAX); + RANGECHK(SCTP_BASE_SYSCTL(sctp_sendall_limit), SCTPCTL_SENDALL_LIMIT_MIN, SCTPCTL_SENDALL_LIMIT_MAX); RANGECHK(SCTP_BASE_SYSCTL(sctp_diag_info_code), SCTPCTL_DIAG_INFO_CODE_MIN, SCTPCTL_DIAG_INFO_CODE_MAX); + RANGECHK(SCTP_BASE_SYSCTL(sctp_ootb_with_zero_cksum), SCTPCTL_OOTB_WITH_ZERO_CKSUM_MIN, SCTPCTL_OOTB_WITH_ZERO_CKSUM_MAX); #ifdef SCTP_DEBUG RANGECHK(SCTP_BASE_SYSCTL(sctp_debug_on), SCTPCTL_DEBUG_MIN, SCTPCTL_DEBUG_MAX); #endif @@ -1393,149 +1358,143 @@ void sysctl_setup_sctp(void) { sysctl_add_oid(&sysctl_oid_top, "sendspace", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_sendspace), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_sendspace), 0, sctp_sysctl_handle_int, SCTPCTL_MAXDGRAM_DESC); sysctl_add_oid(&sysctl_oid_top, "recvspace", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_recvspace), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_recvspace), 0, sctp_sysctl_handle_int, SCTPCTL_RECVSPACE_DESC); sysctl_add_oid(&sysctl_oid_top, "auto_asconf", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_auto_asconf), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_auto_asconf), 0, sctp_sysctl_handle_int, SCTPCTL_AUTOASCONF_DESC); sysctl_add_oid(&sysctl_oid_top, "ecn_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_ecn_enable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_ecn_enable), 0, sctp_sysctl_handle_int, SCTPCTL_ECN_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "pr_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_pr_enable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_pr_enable), 0, sctp_sysctl_handle_int, SCTPCTL_PR_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "auth_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_auth_enable), 0, sctp_sysctl_handle_auth, + &SCTP_BASE_SYSCTL(sctp_auth_enable), 0, sctp_sysctl_handle_auth, SCTPCTL_AUTH_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "asconf_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_asconf_enable), 0, sctp_sysctl_handle_asconf, + &SCTP_BASE_SYSCTL(sctp_asconf_enable), 0, sctp_sysctl_handle_asconf, SCTPCTL_ASCONF_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "reconfig_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_reconfig_enable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_reconfig_enable), 0, sctp_sysctl_handle_int, SCTPCTL_RECONFIG_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "nrsack_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_nrsack_enable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_nrsack_enable), 0, sctp_sysctl_handle_int, SCTPCTL_NRSACK_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "pktdrop_enable", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_pktdrop_enable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_pktdrop_enable), 0, sctp_sysctl_handle_int, SCTPCTL_PKTDROP_ENABLE_DESC); - sysctl_add_oid(&sysctl_oid_top, "strict_sacks", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_strict_sacks), 0, sctp_sysctl_handle_int, - SCTPCTL_STRICT_SACKS_DESC); - -#if !defined(SCTP_WITH_NO_CSUM) sysctl_add_oid(&sysctl_oid_top, "loopback_nocsum", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback), 0, sctp_sysctl_handle_int, SCTPCTL_LOOPBACK_NOCSUM_DESC); -#endif sysctl_add_oid(&sysctl_oid_top, "peer_chkoh", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_peer_chunk_oh), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_peer_chunk_oh), 0, sctp_sysctl_handle_int, SCTPCTL_PEER_CHKOH_DESC); sysctl_add_oid(&sysctl_oid_top, "maxburst", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_max_burst_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_max_burst_default), 0, sctp_sysctl_handle_int, SCTPCTL_MAXBURST_DESC); sysctl_add_oid(&sysctl_oid_top, "fr_maxburst", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_fr_max_burst_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_fr_max_burst_default), 0, sctp_sysctl_handle_int, SCTPCTL_FRMAXBURST_DESC); sysctl_add_oid(&sysctl_oid_top, "maxchunks", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue), 0, sctp_sysctl_handle_int, SCTPCTL_MAXCHUNKS_DESC); sysctl_add_oid(&sysctl_oid_top, "tcbhashsize", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_hashtblsize), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_hashtblsize), 0, sctp_sysctl_handle_int, SCTPCTL_TCBHASHSIZE_DESC); sysctl_add_oid(&sysctl_oid_top, "pcbhashsize", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_pcbtblsize), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_pcbtblsize), 0, sctp_sysctl_handle_int, SCTPCTL_PCBHASHSIZE_DESC); sysctl_add_oid(&sysctl_oid_top, "min_split_point", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_min_split_point), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_min_split_point), 0, sctp_sysctl_handle_int, SCTPCTL_MIN_SPLIT_POINT_DESC); sysctl_add_oid(&sysctl_oid_top, "chunkscale", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_chunkscale), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_chunkscale), 0, sctp_sysctl_handle_int, SCTPCTL_CHUNKSCALE_DESC); sysctl_add_oid(&sysctl_oid_top, "delayed_sack_time", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default), 0, sctp_sysctl_handle_int, SCTPCTL_DELAYED_SACK_TIME_DESC); sysctl_add_oid(&sysctl_oid_top, "sack_freq", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_sack_freq_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_sack_freq_default), 0, sctp_sysctl_handle_int, SCTPCTL_SACK_FREQ_DESC); sysctl_add_oid(&sysctl_oid_top, "sys_resource", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_system_free_resc_limit), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_system_free_resc_limit), 0, sctp_sysctl_handle_int, SCTPCTL_SYS_RESOURCE_DESC); sysctl_add_oid(&sysctl_oid_top, "asoc_resource", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_asoc_free_resc_limit), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_asoc_free_resc_limit), 0, sctp_sysctl_handle_int, SCTPCTL_ASOC_RESOURCE_DESC); sysctl_add_oid(&sysctl_oid_top, "heartbeat_interval", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_heartbeat_interval_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_heartbeat_interval_default), 0, sctp_sysctl_handle_int, SCTPCTL_HEARTBEAT_INTERVAL_DESC); sysctl_add_oid(&sysctl_oid_top, "pmtu_raise_time", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_pmtu_raise_time_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_pmtu_raise_time_default), 0, sctp_sysctl_handle_int, SCTPCTL_PMTU_RAISE_TIME_DESC); sysctl_add_oid(&sysctl_oid_top, "shutdown_guard_time", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_shutdown_guard_time_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_shutdown_guard_time_default), 0, sctp_sysctl_handle_int, SCTPCTL_SHUTDOWN_GUARD_TIME_DESC); sysctl_add_oid(&sysctl_oid_top, "secret_lifetime", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_secret_lifetime_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_secret_lifetime_default), 0, sctp_sysctl_handle_int, SCTPCTL_SECRET_LIFETIME_DESC); sysctl_add_oid(&sysctl_oid_top, "rto_max", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rto_max_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rto_max_default), 0, sctp_sysctl_handle_int, SCTPCTL_RTO_MAX_DESC); sysctl_add_oid(&sysctl_oid_top, "rto_min", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rto_min_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rto_min_default), 0, sctp_sysctl_handle_int, SCTPCTL_RTO_MIN_DESC); sysctl_add_oid(&sysctl_oid_top, "rto_initial", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rto_initial_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rto_initial_default), 0, sctp_sysctl_handle_int, SCTPCTL_RTO_INITIAL_DESC); sysctl_add_oid(&sysctl_oid_top, "init_rto_max", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_init_rto_max_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_init_rto_max_default), 0, sctp_sysctl_handle_int, SCTPCTL_INIT_RTO_MAX_DESC); sysctl_add_oid(&sysctl_oid_top, "valid_cookie_life", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_valid_cookie_life_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_valid_cookie_life_default), 0, sctp_sysctl_handle_int, SCTPCTL_VALID_COOKIE_LIFE_DESC); sysctl_add_oid(&sysctl_oid_top, "init_rtx_max", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_init_rtx_max_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_init_rtx_max_default), 0, sctp_sysctl_handle_int, SCTPCTL_INIT_RTX_MAX_DESC); sysctl_add_oid(&sysctl_oid_top, "assoc_rtx_max", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_assoc_rtx_max_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_assoc_rtx_max_default), 0, sctp_sysctl_handle_int, SCTPCTL_ASSOC_RTX_MAX_DESC); sysctl_add_oid(&sysctl_oid_top, "path_rtx_max", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_path_rtx_max_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_path_rtx_max_default), 0, sctp_sysctl_handle_int, SCTPCTL_PATH_RTX_MAX_DESC); sysctl_add_oid(&sysctl_oid_top, "path_pf_threshold", CTLTYPE_INT|CTLFLAG_RW, @@ -1543,87 +1502,83 @@ sysctl_setup_sctp(void) SCTPCTL_PATH_PF_THRESHOLD_DESC); sysctl_add_oid(&sysctl_oid_top, "add_more_on_output", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_add_more_threshold), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_add_more_threshold), 0, sctp_sysctl_handle_int, SCTPCTL_ADD_MORE_ON_OUTPUT_DESC); sysctl_add_oid(&sysctl_oid_top, "incoming_streams", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_nr_incoming_streams_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_nr_incoming_streams_default), 0, sctp_sysctl_handle_int, SCTPCTL_INCOMING_STREAMS_DESC); sysctl_add_oid(&sysctl_oid_top, "outgoing_streams", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_nr_outgoing_streams_default), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_nr_outgoing_streams_default), 0, sctp_sysctl_handle_int, SCTPCTL_OUTGOING_STREAMS_DESC); sysctl_add_oid(&sysctl_oid_top, "cmt_on_off", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_cmt_on_off), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_cmt_on_off), 0, sctp_sysctl_handle_int, SCTPCTL_CMT_ON_OFF_DESC); sysctl_add_oid(&sysctl_oid_top, "cmt_use_dac", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_cmt_use_dac), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_cmt_use_dac), 0, sctp_sysctl_handle_int, SCTPCTL_CMT_USE_DAC_DESC); sysctl_add_oid(&sysctl_oid_top, "cwnd_maxburst", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_use_cwnd_based_maxburst), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_use_cwnd_based_maxburst), 0, sctp_sysctl_handle_int, SCTPCTL_CWND_MAXBURST_DESC); sysctl_add_oid(&sysctl_oid_top, "nat_friendly", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_nat_friendly), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_nat_friendly), 0, sctp_sysctl_handle_int, SCTPCTL_NAT_FRIENDLY_DESC); sysctl_add_oid(&sysctl_oid_top, "abc_l_var", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_L2_abc_variable), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_L2_abc_variable), 0, sctp_sysctl_handle_int, SCTPCTL_ABC_L_VAR_DESC); sysctl_add_oid(&sysctl_oid_top, "max_chained_mbufs", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count), 0, sctp_sysctl_handle_int, SCTPCTL_MAX_CHAINED_MBUFS_DESC); sysctl_add_oid(&sysctl_oid_top, "do_sctp_drain", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_do_drain), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_do_drain), 0, sctp_sysctl_handle_int, SCTPCTL_DO_SCTP_DRAIN_DESC); sysctl_add_oid(&sysctl_oid_top, "hb_max_burst", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_hb_maxburst), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_hb_maxburst), 0, sctp_sysctl_handle_int, SCTPCTL_HB_MAX_BURST_DESC); sysctl_add_oid(&sysctl_oid_top, "abort_at_limit", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit), 0, sctp_sysctl_handle_int, SCTPCTL_ABORT_AT_LIMIT_DESC); - sysctl_add_oid(&sysctl_oid_top, "strict_data_order", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_strict_data_order), 0, sctp_sysctl_handle_int, - SCTPCTL_STRICT_DATA_ORDER_DESC); - sysctl_add_oid(&sysctl_oid_top, "min_residual", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_min_residual), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_min_residual), 0, sctp_sysctl_handle_int, SCTPCTL_MIN_RESIDUAL_DESC); sysctl_add_oid(&sysctl_oid_top, "max_retran_chunk", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_max_retran_chunk), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_max_retran_chunk), 0, sctp_sysctl_handle_int, SCTPCTL_MAX_RETRAN_CHUNK_DESC); sysctl_add_oid(&sysctl_oid_top, "log_level", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_logging_level), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_logging_level), 0, sctp_sysctl_handle_int, SCTPCTL_LOGGING_LEVEL_DESC); sysctl_add_oid(&sysctl_oid_top, "default_cc_module", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_default_cc_module), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_default_cc_module), 0, sctp_sysctl_handle_int, SCTPCTL_DEFAULT_CC_MODULE_DESC); sysctl_add_oid(&sysctl_oid_top, "default_ss_module", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_default_ss_module), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_default_ss_module), 0, sctp_sysctl_handle_int, SCTPCTL_DEFAULT_SS_MODULE_DESC); sysctl_add_oid(&sysctl_oid_top, "default_frag_interleave", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_default_frag_interleave), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_default_frag_interleave), 0, sctp_sysctl_handle_int, SCTPCTL_DEFAULT_FRAG_INTERLEAVE_DESC); sysctl_add_oid(&sysctl_oid_top, "mobility_base", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_mobility_base), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_mobility_base), 0, sctp_sysctl_handle_int, SCTPCTL_MOBILITY_BASE_DESC); sysctl_add_oid(&sysctl_oid_top, "mobility_fasthandoff", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_mobility_fasthandoff), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_mobility_fasthandoff), 0, sctp_sysctl_handle_int, SCTPCTL_MOBILITY_FASTHANDOFF_DESC); #if defined(SCTP_LOCAL_TRACE_BUF) @@ -1641,52 +1596,60 @@ sysctl_setup_sctp(void) SCTPCTL_UDP_TUNNELING_PORT_DESC); sysctl_add_oid(&sysctl_oid_top, "enable_sack_immediately", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_enable_sack_immediately), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_enable_sack_immediately), 0, sctp_sysctl_handle_int, SCTPCTL_SACK_IMMEDIATELY_ENABLE_DESC); sysctl_add_oid(&sysctl_oid_top, "nat_friendly_init", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_inits_include_nat_friendly), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_inits_include_nat_friendly), 0, sctp_sysctl_handle_int, SCTPCTL_NAT_FRIENDLY_DESC); sysctl_add_oid(&sysctl_oid_top, "vtag_time_wait", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_vtag_time_wait), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_vtag_time_wait), 0, sctp_sysctl_handle_int, SCTPCTL_TIME_WAIT_DESC); sysctl_add_oid(&sysctl_oid_top, "buffer_splitting", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_buffer_splitting), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_buffer_splitting), 0, sctp_sysctl_handle_int, SCTPCTL_BUFFER_SPLITTING_DESC); sysctl_add_oid(&sysctl_oid_top, "initial_cwnd", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_initial_cwnd), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_initial_cwnd), 0, sctp_sysctl_handle_int, SCTPCTL_INITIAL_CWND_DESC); sysctl_add_oid(&sysctl_oid_top, "rttvar_bw", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rttvar_bw), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rttvar_bw), 0, sctp_sysctl_handle_int, SCTPCTL_RTTVAR_BW_DESC); sysctl_add_oid(&sysctl_oid_top, "rttvar_rtt", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rttvar_rtt), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rttvar_rtt), 0, sctp_sysctl_handle_int, SCTPCTL_RTTVAR_RTT_DESC); sysctl_add_oid(&sysctl_oid_top, "rttvar_eqret", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_rttvar_eqret), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_rttvar_eqret), 0, sctp_sysctl_handle_int, SCTPCTL_RTTVAR_EQRET_DESC); sysctl_add_oid(&sysctl_oid_top, "rttvar_steady_step", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_steady_step), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_steady_step), 0, sctp_sysctl_handle_int, SCTPCTL_RTTVAR_STEADYS_DESC); sysctl_add_oid(&sysctl_oid_top, "use_dcccecn", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_use_dccc_ecn), 0, sctp_sysctl_handle_int, + &SCTP_BASE_SYSCTL(sctp_use_dccc_ecn), 0, sctp_sysctl_handle_int, SCTPCTL_RTTVAR_DCCCECN_DESC); sysctl_add_oid(&sysctl_oid_top, "blackhole", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_blackhole), 0, sctp_sysctl_handle_int, - SCTPCTL_BLACKHOLE_DESC); + &SCTP_BASE_SYSCTL(sctp_blackhole), 0, sctp_sysctl_handle_int, + SCTPCTL_BLACKHOLE_DESC); + + sysctl_add_oid(&sysctl_oid_top, "sendall_limit", CTLTYPE_INT|CTLFLAG_RW, + &SCTP_BASE_SYSCTL(sctp_sendall_limit), 0, sctp_sysctl_handle_int, + SCTPCTL_SENDALL_LIMIT_DESC); sysctl_add_oid(&sysctl_oid_top, "diag_info_code", CTLTYPE_INT|CTLFLAG_RW, - &SCTP_BASE_SYSCTL(sctp_diag_info_code), 0, sctp_sysctl_handle_int, - SCTPCTL_DIAG_INFO_CODE_DESC); + &SCTP_BASE_SYSCTL(sctp_diag_info_code), 0, sctp_sysctl_handle_int, + SCTPCTL_DIAG_INFO_CODE_DESC); + + sysctl_add_oid(&sysctl_oid_top, "ootb_with_zero_cksum", CTLTYPE_INT|CTLFLAG_RW, + &SCTP_BASE_SYSCTL(sctp_ootb_with_zero_cksum), 0, sctp_sysctl_handle_int, + SCTPCTL_OOTB_WITH_ZERO_CKSUM_DESC); #ifdef SCTP_DEBUG sysctl_add_oid(&sysctl_oid_top, "debug", CTLTYPE_INT|CTLFLAG_RW, diff --git a/netwerk/sctp/src/netinet/sctp_sysctl.h b/netwerk/sctp/src/netinet/sctp_sysctl.h index 3a33b71f9b..9dc40c800d 100755 --- a/netwerk/sctp/src/netinet/sctp_sysctl.h +++ b/netwerk/sctp/src/netinet/sctp_sysctl.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_sysctl.h 271204 2014-09-06 19:12:14Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_SYSCTL_H_ @@ -54,11 +56,8 @@ struct sctp_sysctl { uint32_t sctp_nrsack_enable; uint32_t sctp_pktdrop_enable; uint32_t sctp_fr_max_burst_default; - uint32_t sctp_strict_sacks; -#if !(defined(__FreeBSD__) && __FreeBSD_version >= 800000) -#if !defined(SCTP_WITH_NO_CSUM) +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) uint32_t sctp_no_csum_on_loopback; -#endif #endif uint32_t sctp_peer_chunk_oh; uint32_t sctp_max_burst_default; @@ -96,7 +95,6 @@ struct sctp_sysctl { uint32_t sctp_do_drain; uint32_t sctp_hb_maxburst; uint32_t sctp_abort_if_one_2_one_hits_limit; - uint32_t sctp_strict_data_order; uint32_t sctp_min_residual; uint32_t sctp_max_retran_chunk; uint32_t sctp_logging_level; @@ -113,9 +111,8 @@ struct sctp_sysctl { uint32_t sctp_rttvar_eqret; uint32_t sctp_steady_step; uint32_t sctp_use_dccc_ecn; - uint32_t sctp_diag_info_code; #if defined(SCTP_LOCAL_TRACE_BUF) -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) struct sctp_log *sctp_log; #else struct sctp_log sctp_log; @@ -127,16 +124,19 @@ struct sctp_sysctl { uint32_t sctp_buffer_splitting; uint32_t sctp_initial_cwnd; uint32_t sctp_blackhole; + uint32_t sctp_sendall_limit; + uint32_t sctp_diag_info_code; + uint32_t sctp_ootb_with_zero_cksum; #if defined(SCTP_DEBUG) uint32_t sctp_debug_on; #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) uint32_t sctp_ignore_vmware_interfaces; uint32_t sctp_main_timer; uint32_t sctp_addr_watchdog_limit; uint32_t sctp_vtag_watchdog_limit; #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) uint32_t sctp_output_unlocked; #endif }; @@ -148,13 +148,21 @@ struct sctp_sysctl { #define SCTPCTL_MAXDGRAM_DESC "Maximum outgoing SCTP buffer size" #define SCTPCTL_MAXDGRAM_MIN 0 #define SCTPCTL_MAXDGRAM_MAX 0xFFFFFFFF +#if defined(__Userspace__) +#define SCTPCTL_MAXDGRAM_DEFAULT SB_MAX +#else #define SCTPCTL_MAXDGRAM_DEFAULT 262144 /* 256k */ +#endif /* recvspace: Maximum incoming SCTP buffer size */ #define SCTPCTL_RECVSPACE_DESC "Maximum incoming SCTP buffer size" #define SCTPCTL_RECVSPACE_MIN 0 #define SCTPCTL_RECVSPACE_MAX 0xFFFFFFFF +#if defined(__Userspace__) +#define SCTPCTL_RECVSPACE_DEFAULT SB_RAW +#else #define SCTPCTL_RECVSPACE_DEFAULT 262144 /* 256k */ +#endif /* autoasconf: Enable SCTP Auto-ASCONF */ #define SCTPCTL_AUTOASCONF_DESC "Enable SCTP Auto-ASCONF" @@ -163,7 +171,7 @@ struct sctp_sysctl { #define SCTPCTL_AUTOASCONF_DEFAULT 1 /* autoasconf: Enable SCTP Auto-ASCONF */ -#define SCTPCTL_MULTIPLEASCONFS_DESC "Enable SCTP Muliple-ASCONFs" +#define SCTPCTL_MULTIPLEASCONFS_DESC "Enable SCTP Multiple-ASCONFs" #define SCTPCTL_MULTIPLEASCONFS_MIN 0 #define SCTPCTL_MULTIPLEASCONFS_MAX 1 #define SCTPCTL_MULTIPLEASCONFS_DEFAULT SCTP_DEFAULT_MULTIPLE_ASCONFS @@ -210,12 +218,6 @@ struct sctp_sysctl { #define SCTPCTL_PKTDROP_ENABLE_MAX 1 #define SCTPCTL_PKTDROP_ENABLE_DEFAULT 0 -/* strict_sacks: Enable SCTP Strict SACK checking */ -#define SCTPCTL_STRICT_SACKS_DESC "Enable SCTP Strict SACK checking" -#define SCTPCTL_STRICT_SACKS_MIN 0 -#define SCTPCTL_STRICT_SACKS_MAX 1 -#define SCTPCTL_STRICT_SACKS_DEFAULT 1 - /* loopback_nocsum: Enable NO Csum on packets sent on loopback */ #define SCTPCTL_LOOPBACK_NOCSUM_DESC "Enable NO Csum on packets sent on loopback" #define SCTPCTL_LOOPBACK_NOCSUM_MIN 0 @@ -235,12 +237,11 @@ struct sctp_sysctl { #define SCTPCTL_MAXBURST_DEFAULT SCTP_DEF_MAX_BURST /* fr_maxburst: Default max burst for sctp endpoints when fast retransmitting */ -#define SCTPCTL_FRMAXBURST_DESC "Default fr max burst for sctp endpoints" +#define SCTPCTL_FRMAXBURST_DESC "Default max burst for SCTP endpoints when fast retransmitting" #define SCTPCTL_FRMAXBURST_MIN 0 #define SCTPCTL_FRMAXBURST_MAX 0xFFFFFFFF #define SCTPCTL_FRMAXBURST_DEFAULT SCTP_DEF_FRMAX_BURST - /* maxchunks: Default max chunks on queue per asoc */ #define SCTPCTL_MAXCHUNKS_DESC "Default max chunks on queue per asoc" #define SCTPCTL_MAXCHUNKS_MIN 0 @@ -266,7 +267,7 @@ struct sctp_sysctl { #define SCTPCTL_MIN_SPLIT_POINT_DEFAULT SCTP_DEFAULT_SPLIT_POINT_MIN /* chunkscale: Tunable for Scaling of number of chunks and messages */ -#define SCTPCTL_CHUNKSCALE_DESC "Tunable for Scaling of number of chunks and messages" +#define SCTPCTL_CHUNKSCALE_DESC "Tunable for scaling of number of chunks and messages" #define SCTPCTL_CHUNKSCALE_MIN 1 #define SCTPCTL_CHUNKSCALE_MAX 0xFFFFFFFF #define SCTPCTL_CHUNKSCALE_DEFAULT SCTP_CHUNKQUEUE_SCALE @@ -308,10 +309,10 @@ struct sctp_sysctl { #define SCTPCTL_PMTU_RAISE_TIME_DEFAULT SCTP_DEF_PMTU_RAISE_SEC /* shutdown_guard_time: Default shutdown guard timer in seconds */ -#define SCTPCTL_SHUTDOWN_GUARD_TIME_DESC "Default shutdown guard timer in seconds" +#define SCTPCTL_SHUTDOWN_GUARD_TIME_DESC "Shutdown guard timer in seconds (0 means 5 times RTO.Max)" #define SCTPCTL_SHUTDOWN_GUARD_TIME_MIN 0 #define SCTPCTL_SHUTDOWN_GUARD_TIME_MAX 0xFFFFFFFF -#define SCTPCTL_SHUTDOWN_GUARD_TIME_DEFAULT SCTP_DEF_MAX_SHUTDOWN_SEC +#define SCTPCTL_SHUTDOWN_GUARD_TIME_DEFAULT 0 /* secret_lifetime: Default secret lifetime in seconds */ #define SCTPCTL_SECRET_LIFETIME_DESC "Default secret lifetime in seconds" @@ -343,14 +344,14 @@ struct sctp_sysctl { #define SCTPCTL_INIT_RTO_MAX_MAX 0xFFFFFFFF #define SCTPCTL_INIT_RTO_MAX_DEFAULT SCTP_RTO_UPPER_BOUND -/* valid_cookie_life: Default cookie lifetime in sec */ -#define SCTPCTL_VALID_COOKIE_LIFE_DESC "Default cookie lifetime in seconds" -#define SCTPCTL_VALID_COOKIE_LIFE_MIN 0 -#define SCTPCTL_VALID_COOKIE_LIFE_MAX 0xFFFFFFFF +/* valid_cookie_life: Default cookie lifetime in ms */ +#define SCTPCTL_VALID_COOKIE_LIFE_DESC "Default cookie lifetime in ms" +#define SCTPCTL_VALID_COOKIE_LIFE_MIN SCTP_MIN_COOKIE_LIFE +#define SCTPCTL_VALID_COOKIE_LIFE_MAX SCTP_MAX_COOKIE_LIFE #define SCTPCTL_VALID_COOKIE_LIFE_DEFAULT SCTP_DEFAULT_COOKIE_LIFE /* init_rtx_max: Default maximum number of retransmission for INIT chunks */ -#define SCTPCTL_INIT_RTX_MAX_DESC "Default maximum number of retransmission for INIT chunks" +#define SCTPCTL_INIT_RTX_MAX_DESC "Default maximum number of retransmissions for INIT chunks" #define SCTPCTL_INIT_RTX_MAX_MIN 0 #define SCTPCTL_INIT_RTX_MAX_MAX 0xFFFFFFFF #define SCTPCTL_INIT_RTX_MAX_DEFAULT SCTP_DEF_MAX_INIT @@ -403,8 +404,8 @@ struct sctp_sysctl { #define SCTPCTL_CMT_USE_DAC_MAX 1 #define SCTPCTL_CMT_USE_DAC_DEFAULT 0 -/* cwnd_maxburst: Use a CWND adjusting maxburst */ -#define SCTPCTL_CWND_MAXBURST_DESC "Use a CWND adjusting maxburst" +/* cwnd_maxburst: Use a CWND adjusting to implement maxburst */ +#define SCTPCTL_CWND_MAXBURST_DESC "Adjust congestion control window to limit maximum burst when sending" #define SCTPCTL_CWND_MAXBURST_MIN 0 #define SCTPCTL_CWND_MAXBURST_MAX 1 #define SCTPCTL_CWND_MAXBURST_DEFAULT 1 @@ -440,17 +441,11 @@ struct sctp_sysctl { #define SCTPCTL_HB_MAX_BURST_DEFAULT SCTP_DEF_HBMAX_BURST /* abort_at_limit: When one-2-one hits qlimit abort */ -#define SCTPCTL_ABORT_AT_LIMIT_DESC "When one-2-one hits qlimit abort" +#define SCTPCTL_ABORT_AT_LIMIT_DESC "Abort when one-to-one hits qlimit" #define SCTPCTL_ABORT_AT_LIMIT_MIN 0 #define SCTPCTL_ABORT_AT_LIMIT_MAX 1 #define SCTPCTL_ABORT_AT_LIMIT_DEFAULT 0 -/* strict_data_order: Enforce strict data ordering, abort if control inside data */ -#define SCTPCTL_STRICT_DATA_ORDER_DESC "Enforce strict data ordering, abort if control inside data" -#define SCTPCTL_STRICT_DATA_ORDER_MIN 0 -#define SCTPCTL_STRICT_DATA_ORDER_MAX 1 -#define SCTPCTL_STRICT_DATA_ORDER_DEFAULT 0 - /* min_residual: min residual in a data fragment leftover */ #define SCTPCTL_MIN_RESIDUAL_DESC "Minimum residual data chunk in second part of split" #define SCTPCTL_MIN_RESIDUAL_MIN 20 @@ -458,7 +453,7 @@ struct sctp_sysctl { #define SCTPCTL_MIN_RESIDUAL_DEFAULT 1452 /* max_retran_chunk: max chunk retransmissions */ -#define SCTPCTL_MAX_RETRAN_CHUNK_DESC "Maximum times an unlucky chunk can be retran'd before assoc abort" +#define SCTPCTL_MAX_RETRAN_CHUNK_DESC "Maximum times an unlucky chunk can be retransmitted before assoc abort" #define SCTPCTL_MAX_RETRAN_CHUNK_MIN 0 #define SCTPCTL_MAX_RETRAN_CHUNK_MAX 65535 #define SCTPCTL_MAX_RETRAN_CHUNK_DEFAULT 30 @@ -503,79 +498,90 @@ struct sctp_sysctl { #define SCTPCTL_UDP_TUNNELING_PORT_DESC "Set the SCTP/UDP tunneling port" #define SCTPCTL_UDP_TUNNELING_PORT_MIN 0 #define SCTPCTL_UDP_TUNNELING_PORT_MAX 65535 -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) #define SCTPCTL_UDP_TUNNELING_PORT_DEFAULT 0 #else #define SCTPCTL_UDP_TUNNELING_PORT_DEFAULT SCTP_OVER_UDP_TUNNELING_PORT #endif /* Enable sending of the SACK-IMMEDIATELY bit */ -#define SCTPCTL_SACK_IMMEDIATELY_ENABLE_DESC "Enable sending of the SACK-IMMEDIATELY-bit." +#define SCTPCTL_SACK_IMMEDIATELY_ENABLE_DESC "Enable sending of the SACK-IMMEDIATELY-bit" #define SCTPCTL_SACK_IMMEDIATELY_ENABLE_MIN 0 #define SCTPCTL_SACK_IMMEDIATELY_ENABLE_MAX 1 -#define SCTPCTL_SACK_IMMEDIATELY_ENABLE_DEFAULT SCTPCTL_SACK_IMMEDIATELY_ENABLE_MIN +#define SCTPCTL_SACK_IMMEDIATELY_ENABLE_DEFAULT SCTPCTL_SACK_IMMEDIATELY_ENABLE_MAX /* Enable sending of the NAT-FRIENDLY message */ -#define SCTPCTL_NAT_FRIENDLY_INITS_DESC "Enable sending of the nat-friendly SCTP option on INITs." +#define SCTPCTL_NAT_FRIENDLY_INITS_DESC "Enable sending of the nat-friendly SCTP option on INITs" #define SCTPCTL_NAT_FRIENDLY_INITS_MIN 0 #define SCTPCTL_NAT_FRIENDLY_INITS_MAX 1 #define SCTPCTL_NAT_FRIENDLY_INITS_DEFAULT SCTPCTL_NAT_FRIENDLY_INITS_MIN /* Vtag time wait in seconds */ -#define SCTPCTL_TIME_WAIT_DESC "Vtag time wait time in seconds, 0 disables it." +#define SCTPCTL_TIME_WAIT_DESC "Vtag time wait time in seconds, 0 disables it" #define SCTPCTL_TIME_WAIT_MIN 0 #define SCTPCTL_TIME_WAIT_MAX 0xffffffff #define SCTPCTL_TIME_WAIT_DEFAULT SCTP_TIME_WAIT /* Enable Send/Receive buffer splitting */ -#define SCTPCTL_BUFFER_SPLITTING_DESC "Enable send/receive buffer splitting." +#define SCTPCTL_BUFFER_SPLITTING_DESC "Enable send/receive buffer splitting" #define SCTPCTL_BUFFER_SPLITTING_MIN 0 #define SCTPCTL_BUFFER_SPLITTING_MAX 0x3 #define SCTPCTL_BUFFER_SPLITTING_DEFAULT SCTPCTL_BUFFER_SPLITTING_MIN -/* Initial congestion window in MTU */ -#define SCTPCTL_INITIAL_CWND_DESC "Initial congestion window in MTUs" +/* Initial congestion window in MTUs */ +#define SCTPCTL_INITIAL_CWND_DESC "Defines the initial congestion window size in MTUs" #define SCTPCTL_INITIAL_CWND_MIN 0 #define SCTPCTL_INITIAL_CWND_MAX 0xffffffff #define SCTPCTL_INITIAL_CWND_DEFAULT 3 /* rttvar smooth avg for bw calc */ -#define SCTPCTL_RTTVAR_BW_DESC "Shift amount for bw smoothing on rtt calc" +#define SCTPCTL_RTTVAR_BW_DESC "Shift amount DCCC uses for bw smoothing on rtt calc" #define SCTPCTL_RTTVAR_BW_MIN 0 #define SCTPCTL_RTTVAR_BW_MAX 32 #define SCTPCTL_RTTVAR_BW_DEFAULT 4 /* rttvar smooth avg for bw calc */ -#define SCTPCTL_RTTVAR_RTT_DESC "Shift amount for rtt smoothing on rtt calc" +#define SCTPCTL_RTTVAR_RTT_DESC "Shift amount DCCC uses for rtt smoothing on rtt calc" #define SCTPCTL_RTTVAR_RTT_MIN 0 #define SCTPCTL_RTTVAR_RTT_MAX 32 #define SCTPCTL_RTTVAR_RTT_DEFAULT 5 -#define SCTPCTL_RTTVAR_EQRET_DESC "What to return when rtt and bw are unchanged" +#define SCTPCTL_RTTVAR_EQRET_DESC "Whether DCCC increases cwnd when the rtt and bw are unchanged" #define SCTPCTL_RTTVAR_EQRET_MIN 0 #define SCTPCTL_RTTVAR_EQRET_MAX 1 #define SCTPCTL_RTTVAR_EQRET_DEFAULT 0 -#define SCTPCTL_RTTVAR_STEADYS_DESC "How many the sames it takes to try step down of cwnd" +#define SCTPCTL_RTTVAR_STEADYS_DESC "Number of identical bw measurements DCCC takes to try step down of cwnd" #define SCTPCTL_RTTVAR_STEADYS_MIN 0 #define SCTPCTL_RTTVAR_STEADYS_MAX 0xFFFF #define SCTPCTL_RTTVAR_STEADYS_DEFAULT 20 /* 0 means disable feature */ -#define SCTPCTL_RTTVAR_DCCCECN_DESC "Enable for RTCC CC datacenter ECN" +#define SCTPCTL_RTTVAR_DCCCECN_DESC "Enable ECN for DCCC." #define SCTPCTL_RTTVAR_DCCCECN_MIN 0 #define SCTPCTL_RTTVAR_DCCCECN_MAX 1 #define SCTPCTL_RTTVAR_DCCCECN_DEFAULT 1 /* 0 means disable feature */ -#define SCTPCTL_BLACKHOLE_DESC "Enable SCTP blackholing" +#define SCTPCTL_BLACKHOLE_DESC "Enable SCTP blackholing, see blackhole(4) for more details" #define SCTPCTL_BLACKHOLE_MIN 0 #define SCTPCTL_BLACKHOLE_MAX 2 #define SCTPCTL_BLACKHOLE_DEFAULT SCTPCTL_BLACKHOLE_MIN +/* sendall_limit: Maximum message with SCTP_SENDALL */ +#define SCTPCTL_SENDALL_LIMIT_DESC "Maximum size of a message send with SCTP_SENDALL" +#define SCTPCTL_SENDALL_LIMIT_MIN 0 +#define SCTPCTL_SENDALL_LIMIT_MAX 0xFFFFFFFF +#define SCTPCTL_SENDALL_LIMIT_DEFAULT 1432 + #define SCTPCTL_DIAG_INFO_CODE_DESC "Diagnostic information error cause code" #define SCTPCTL_DIAG_INFO_CODE_MIN 0 #define SCTPCTL_DIAG_INFO_CODE_MAX 65535 #define SCTPCTL_DIAG_INFO_CODE_DEFAULT 0 +#define SCTPCTL_OOTB_WITH_ZERO_CKSUM_DESC "Accept OOTB packets with zero checksum" +#define SCTPCTL_OOTB_WITH_ZERO_CKSUM_MIN 0 +#define SCTPCTL_OOTB_WITH_ZERO_CKSUM_MAX 1 +#define SCTPCTL_OOTB_WITH_ZERO_CKSUM_DEFAULT 0 + #if defined(SCTP_DEBUG) /* debug: Configure debug output */ #define SCTPCTL_DEBUG_DESC "Configure debug output" @@ -584,7 +590,7 @@ struct sctp_sysctl { #define SCTPCTL_DEBUG_DEFAULT 0 #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #define SCTPCTL_MAIN_TIMER_DESC "Main timer interval in ms" #define SCTPCTL_MAIN_TIMER_MIN 1 #define SCTPCTL_MAIN_TIMER_MAX 0xFFFFFFFF @@ -594,16 +600,12 @@ struct sctp_sysctl { #define SCTPCTL_IGNORE_VMWARE_INTERFACES_MIN 0 #define SCTPCTL_IGNORE_VMWARE_INTERFACES_MAX 1 #define SCTPCTL_IGNORE_VMWARE_INTERFACES_DEFAULT SCTPCTL_IGNORE_VMWARE_INTERFACES_MAX -#endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) -#define SCTPCTL_OUTPUT_UNLOCKED_DESC "Unlock socket when sending packets down to IP." +#define SCTPCTL_OUTPUT_UNLOCKED_DESC "Unlock socket when sending packets down to IP" #define SCTPCTL_OUTPUT_UNLOCKED_MIN 0 #define SCTPCTL_OUTPUT_UNLOCKED_MAX 1 #define SCTPCTL_OUTPUT_UNLOCKED_DEFAULT SCTPCTL_OUTPUT_UNLOCKED_MIN -#endif -#if defined(__APPLE__) #define SCTPCTL_ADDR_WATCHDOG_LIMIT_DESC "Address watchdog limit" #define SCTPCTL_ADDR_WATCHDOG_LIMIT_MIN 0 #define SCTPCTL_ADDR_WATCHDOG_LIMIT_MAX 0xFFFFFFFF @@ -613,8 +615,8 @@ struct sctp_sysctl { #define SCTPCTL_VTAG_WATCHDOG_LIMIT_MIN 0 #define SCTPCTL_VTAG_WATCHDOG_LIMIT_MAX 0xFFFFFFFF #define SCTPCTL_VTAG_WATCHDOG_LIMIT_DEFAULT SCTPCTL_VTAG_WATCHDOG_LIMIT_MIN -#endif +#endif #if defined(_KERNEL) || defined(__Userspace__) #if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Userspace__) #if defined(SYSCTL_DECL) @@ -623,7 +625,7 @@ SYSCTL_DECL(_net_inet_sctp); #endif void sctp_init_sysctls(void); -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) void sctp_finish_sysctls(void); #endif diff --git a/netwerk/sctp/src/netinet/sctp_timer.c b/netwerk/sctp/src/netinet/sctp_timer.c index 48ad459028..aa44dad688 100755 --- a/netwerk/sctp/src/netinet/sctp_timer.c +++ b/netwerk/sctp/src/netinet/sctp_timer.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,16 +32,16 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_timer.c 279841 2015-03-10 09:16:31Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #define _IP_VHL #include #include #ifdef INET6 -#if defined(__Userspace_os_FreeBSD) +#if defined(__FreeBSD__) && defined(__Userspace__) #include #endif #endif @@ -55,15 +57,11 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_timer.c 279841 2015-03-10 09:16:31Z tu #include #include #if defined(INET) || defined(INET6) -#if !defined(__Userspace_os_Windows) +#if !(defined(_WIN32) && defined(__Userspace__)) #include #endif #endif -#if defined(__APPLE__) -#define APPLE_FILE_NO 6 -#endif - void sctp_audit_retranmission_queue(struct sctp_association *asoc) { @@ -95,7 +93,7 @@ sctp_audit_retranmission_queue(struct sctp_association *asoc) asoc->sent_queue_cnt); } -int +static int sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net, uint16_t threshold) { @@ -116,12 +114,14 @@ sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } } else if ((net->pf_threshold < net->failure_threshold) && (net->error_count > net->pf_threshold)) { - if (!(net->dest_state & SCTP_ADDR_PF)) { + if ((net->dest_state & SCTP_ADDR_PF) == 0) { net->dest_state |= SCTP_ADDR_PF; net->last_active = sctp_get_tick_count(); sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); - sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + inp, stcb, net, + SCTP_FROM_SCTP_TIMER + SCTP_LOC_1); + sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); } } } @@ -132,20 +132,20 @@ sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { sctp_misc_ints(SCTP_THRESHOLD_INCR, - stcb->asoc.overall_error_count, - (stcb->asoc.overall_error_count+1), - SCTP_FROM_SCTP_TIMER, - __LINE__); + stcb->asoc.overall_error_count, + (stcb->asoc.overall_error_count+1), + SCTP_FROM_SCTP_TIMER, + __LINE__); } stcb->asoc.overall_error_count++; } } else { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_THRESHOLD_LOGGING) { sctp_misc_ints(SCTP_THRESHOLD_INCR, - stcb->asoc.overall_error_count, - (stcb->asoc.overall_error_count+1), - SCTP_FROM_SCTP_TIMER, - __LINE__); + stcb->asoc.overall_error_count, + (stcb->asoc.overall_error_count+1), + SCTP_FROM_SCTP_TIMER, + __LINE__); } stcb->asoc.overall_error_count++; } @@ -161,18 +161,18 @@ sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb, /* Abort notification sends a ULP notify */ struct mbuf *op_err; - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Association error counter exceeded"); - inp->last_abort_code = SCTP_FROM_SCTP_TIMER+SCTP_LOC_1; - sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_2; + sctp_abort_an_association(inp, stcb, op_err, true, SCTP_SO_NOT_LOCKED); return (1); } return (0); } /* - * sctp_find_alternate_net() returns a non-NULL pointer as long - * the argument net is non-NULL. + * sctp_find_alternate_net() returns a non-NULL pointer as long as there + * exists nets, which are not being deleted. */ struct sctp_nets * sctp_find_alternate_net(struct sctp_tcb *stcb, @@ -181,20 +181,20 @@ sctp_find_alternate_net(struct sctp_tcb *stcb, { /* Find and return an alternate network if possible */ struct sctp_nets *alt, *mnet, *min_errors_net = NULL , *max_cwnd_net = NULL; - int once; + bool looped; /* JRS 5/14/07 - Initialize min_errors to an impossible value. */ int min_errors = -1; uint32_t max_cwnd = 0; if (stcb->asoc.numnets == 1) { - /* No others but net */ + /* No selection can be made. */ return (TAILQ_FIRST(&stcb->asoc.nets)); } /* * JRS 5/14/07 - If mode is set to 2, use the CMT PF find alternate net algorithm. * This algorithm chooses the active destination (not in PF state) with the largest * cwnd value. If all destinations are in PF state, unreachable, or unconfirmed, choose - * the desination that is in PF state with the lowest error count. In case of a tie, + * the destination that is in PF state with the lowest error count. In case of a tie, * choose the destination that was most recently active. */ if (mode == 2) { @@ -323,28 +323,29 @@ sctp_find_alternate_net(struct sctp_tcb *stcb, return (max_cwnd_net); } } - mnet = net; - once = 0; - - if (mnet == NULL) { - mnet = TAILQ_FIRST(&stcb->asoc.nets); - if (mnet == NULL) { - return (NULL); - } + /* Look for an alternate net, which is active. */ + if ((net != NULL) && ((net->dest_state & SCTP_ADDR_BEING_DELETED) == 0)) { + alt = TAILQ_NEXT(net, sctp_next); + } else { + alt = TAILQ_FIRST(&stcb->asoc.nets); } + looped = false; for (;;) { - alt = TAILQ_NEXT(mnet, sctp_next); if (alt == NULL) { - once++; - if (once > 1) { - break; + if (!looped) { + alt = TAILQ_FIRST(&stcb->asoc.nets); + looped = true; } - alt = TAILQ_FIRST(&stcb->asoc.nets); + /* Definitely out of candidates. */ if (alt == NULL) { - return (NULL); + break; } } +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (alt->ro.ro_nh == NULL) { +#else if (alt->ro.ro_rt == NULL) { +#endif if (alt->ro._s_addr) { sctp_free_ifa(alt->ro._s_addr); alt->ro._s_addr = NULL; @@ -352,44 +353,61 @@ sctp_find_alternate_net(struct sctp_tcb *stcb, alt->src_addr_selected = 0; } if (((alt->dest_state & SCTP_ADDR_REACHABLE) == SCTP_ADDR_REACHABLE) && +#if defined(__FreeBSD__) && !defined(__Userspace__) + (alt->ro.ro_nh != NULL) && +#else (alt->ro.ro_rt != NULL) && - (!(alt->dest_state & SCTP_ADDR_UNCONFIRMED))) { - /* Found a reachable address */ +#endif + ((alt->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) && + (alt != net)) { + /* Found an alternate net, which is reachable. */ break; } - mnet = alt; + alt = TAILQ_NEXT(alt, sctp_next); } if (alt == NULL) { - /* Case where NO insv network exists (dormant state) */ - /* we rotate destinations */ - once = 0; - mnet = net; + /* + * In case no active alternate net has been found, look for + * an alternate net, which is confirmed. + */ + if ((net != NULL) && ((net->dest_state & SCTP_ADDR_BEING_DELETED) == 0)) { + alt = TAILQ_NEXT(net, sctp_next); + } else { + alt = TAILQ_FIRST(&stcb->asoc.nets); + } + looped = false; for (;;) { - if (mnet == NULL) { - return (TAILQ_FIRST(&stcb->asoc.nets)); - } - alt = TAILQ_NEXT(mnet, sctp_next); if (alt == NULL) { - once++; - if (once > 1) { - break; + if (!looped) { + alt = TAILQ_FIRST(&stcb->asoc.nets); + looped = true; } - alt = TAILQ_FIRST(&stcb->asoc.nets); + /* Definitely out of candidates. */ if (alt == NULL) { break; } } - if ((!(alt->dest_state & SCTP_ADDR_UNCONFIRMED)) && + if (((alt->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) && (alt != net)) { - /* Found an alternate address */ + /* Found an alternate net, which is confirmed. */ break; } - mnet = alt; + alt = TAILQ_NEXT(alt, sctp_next); } } if (alt == NULL) { - return (net); + /* + * In case no confirmed alternate net has been found, just + * return net, if it is not being deleted. In the other case + * just return the first net. + */ + if ((net != NULL) && ((net->dest_state & SCTP_ADDR_BEING_DELETED) == 0)) { + alt = net; + } + if (alt == NULL) { + alt = TAILQ_FIRST(&stcb->asoc.nets); + } } return (alt); } @@ -401,7 +419,11 @@ sctp_backoff_on_timeout(struct sctp_tcb *stcb, int num_marked, int num_abandoned) { if (net->RTO == 0) { - net->RTO = stcb->asoc.minrto; + if (net->RTO_measured) { + net->RTO = stcb->asoc.minrto; + } else { + net->RTO = stcb->asoc.initial_rto; + } } net->RTO <<= 1; if (net->RTO > stcb->asoc.maxrto) { @@ -423,14 +445,19 @@ sctp_recover_sent_list(struct sctp_tcb *stcb) asoc = &stcb->asoc; TAILQ_FOREACH_SAFE(chk, &asoc->sent_queue, sctp_next, nchk) { - if (SCTP_TSN_GE(asoc->last_acked_seq, chk->rec.data.TSN_seq)) { + if (SCTP_TSN_GE(asoc->last_acked_seq, chk->rec.data.tsn)) { SCTP_PRINTF("Found chk:%p tsn:%x <= last_acked_seq:%x\n", - (void *)chk, chk->rec.data.TSN_seq, asoc->last_acked_seq); + (void *)chk, chk->rec.data.tsn, asoc->last_acked_seq); if (chk->sent != SCTP_DATAGRAM_NR_ACKED) { - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; } } + if ((asoc->strmout[chk->rec.data.sid].chunks_on_queues == 0) && + (asoc->strmout[chk->rec.data.sid].state == SCTP_STREAM_RESET_PENDING) && + TAILQ_EMPTY(&asoc->strmout[chk->rec.data.sid].outqueue)) { + asoc->trigger_reset = 1; + } TAILQ_REMOVE(&asoc->sent_queue, chk, sctp_next); if (PR_SCTP_ENABLED(chk->flags)) { if (asoc->pr_sctp_cnt != 0) @@ -451,7 +478,7 @@ sctp_recover_sent_list(struct sctp_tcb *stcb) } SCTP_PRINTF("after recover order is as follows\n"); TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { - SCTP_PRINTF("chk:%p TSN:%x\n", (void *)chk, chk->rec.data.TSN_seq); + SCTP_PRINTF("chk:%p TSN:%x\n", (void *)chk, chk->rec.data.tsn); } } #endif @@ -480,8 +507,9 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, unsigned int cnt_mk; uint32_t orig_flight, orig_tf; uint32_t tsnlast, tsnfirst; +#ifndef INVARIANTS int recovery_cnt = 0; - +#endif /* none in flight now */ audit_tf = 0; @@ -504,7 +532,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, } tv.tv_sec = cur_rto / 1000000; tv.tv_usec = cur_rto % 1000000; -#ifndef __FreeBSD__ +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) timersub(&now, &tv, &min_wait); #else min_wait = now; @@ -520,8 +548,8 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, min_wait.tv_sec = min_wait.tv_usec = 0; } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { - sctp_log_fr(cur_rto, now.tv_sec, now.tv_usec, SCTP_FR_T3_MARK_TIME); - sctp_log_fr(0, min_wait.tv_sec, min_wait.tv_usec, SCTP_FR_T3_MARK_TIME); + sctp_log_fr(cur_rto, (uint32_t)now.tv_sec, now.tv_usec, SCTP_FR_T3_MARK_TIME); + sctp_log_fr(0, (uint32_t)min_wait.tv_sec, min_wait.tv_usec, SCTP_FR_T3_MARK_TIME); } /* * Our rwnd will be incorrect here since we are not adding back the @@ -539,14 +567,14 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, start_again: #endif TAILQ_FOREACH_SAFE(chk, &stcb->asoc.sent_queue, sctp_next, nchk) { - if (SCTP_TSN_GE(stcb->asoc.last_acked_seq, chk->rec.data.TSN_seq)) { + if (SCTP_TSN_GE(stcb->asoc.last_acked_seq, chk->rec.data.tsn)) { /* Strange case our list got out of order? */ SCTP_PRINTF("Our list is out of order? last_acked:%x chk:%x\n", - (unsigned int)stcb->asoc.last_acked_seq, (unsigned int)chk->rec.data.TSN_seq); - recovery_cnt++; + (unsigned int)stcb->asoc.last_acked_seq, (unsigned int)chk->rec.data.tsn); #ifdef INVARIANTS panic("last acked >= chk on sent-Q"); #else + recovery_cnt++; SCTP_PRINTF("Recover attempts a restart cnt:%d\n", recovery_cnt); sctp_recover_sent_list(stcb); if (recovery_cnt < 10) { @@ -567,8 +595,8 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, /* validate its been outstanding long enough */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { - sctp_log_fr(chk->rec.data.TSN_seq, - chk->sent_rcv_time.tv_sec, + sctp_log_fr(chk->rec.data.tsn, + (uint32_t)chk->sent_rcv_time.tv_sec, chk->sent_rcv_time.tv_usec, SCTP_FR_T3_MARK_TIME); } @@ -580,7 +608,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { sctp_log_fr(0, - chk->sent_rcv_time.tv_sec, + (uint32_t)chk->sent_rcv_time.tv_sec, chk->sent_rcv_time.tv_usec, SCTP_FR_T3_STOPPED); } @@ -601,7 +629,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, } if (stcb->asoc.prsctp_supported && PR_SCTP_TTL_ENABLED(chk->flags)) { /* Is it expired? */ -#ifndef __FreeBSD__ +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (timercmp(&now, &chk->rec.data.timetodrop, >)) { #else if (timevalcmp(&now, &chk->rec.data.timetodrop, >)) { @@ -635,11 +663,11 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, num_mk++; if (fir == 0) { fir = 1; - tsnfirst = chk->rec.data.TSN_seq; + tsnfirst = chk->rec.data.tsn; } - tsnlast = chk->rec.data.TSN_seq; + tsnlast = chk->rec.data.tsn; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FR_LOGGING_ENABLE) { - sctp_log_fr(chk->rec.data.TSN_seq, chk->snd_count, + sctp_log_fr(chk->rec.data.tsn, chk->snd_count, 0, SCTP_FR_T3_MARKED); } @@ -654,8 +682,8 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_RSND_TO, chk->whoTo->flight_size, chk->book_size, - (uintptr_t)chk->whoTo, - chk->rec.data.TSN_seq); + (uint32_t)(uintptr_t)chk->whoTo, + chk->rec.data.tsn); } sctp_flight_size_decrease(chk); sctp_total_flight_decrease(stcb, chk); @@ -663,6 +691,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, stcb->asoc.peers_rwnd += SCTP_BASE_SYSCTL(sctp_peer_chunk_oh); } chk->sent = SCTP_DATAGRAM_RESEND; + chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; SCTP_STAT_INCR(sctps_markedretrans); /* reset the TSN for striking and other FR stuff */ @@ -685,7 +714,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, if (TAILQ_EMPTY(&stcb->asoc.send_queue)) { chk->rec.data.fast_retran_tsn = stcb->asoc.sending_seq; } else { - chk->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.TSN_seq; + chk->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.tsn; } } /* CMT: Do not allow FRs on retransmitted TSNs. @@ -715,13 +744,9 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, if (num_mk) { SCTPDBG(SCTP_DEBUG_TIMER1, "LAST TSN marked was %x\n", tsnlast); - SCTPDBG(SCTP_DEBUG_TIMER1, "Num marked for retransmission was %d peer-rwd:%ld\n", - num_mk, (u_long)stcb->asoc.peers_rwnd); - SCTPDBG(SCTP_DEBUG_TIMER1, "LAST TSN marked was %x\n", - tsnlast); - SCTPDBG(SCTP_DEBUG_TIMER1, "Num marked for retransmission was %d peer-rwd:%d\n", + SCTPDBG(SCTP_DEBUG_TIMER1, "Num marked for retransmission was %d peer-rwd:%u\n", num_mk, - (int)stcb->asoc.peers_rwnd); + stcb->asoc.peers_rwnd); } #endif *num_marked = num_mk; @@ -740,6 +765,7 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, chk->whoTo = alt; if (chk->sent != SCTP_DATAGRAM_RESEND) { chk->sent = SCTP_DATAGRAM_RESEND; + chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); cnt_mk++; } @@ -782,8 +808,8 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, sctp_misc_ints(SCTP_FLIGHT_LOG_UP, chk->whoTo->flight_size, chk->book_size, - (uintptr_t)chk->whoTo, - chk->rec.data.TSN_seq); + (uint32_t)(uintptr_t)chk->whoTo, + chk->rec.data.tsn); } sctp_flight_size_increase(chk); @@ -795,7 +821,6 @@ sctp_mark_all_for_resend(struct sctp_tcb *stcb, return (0); } - int sctp_t3rxt_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, @@ -837,11 +862,11 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, if (net != stcb->asoc.primary_destination) { /* send a immediate HB if our RTO is stale */ struct timeval now; - unsigned int ms_goneby; + uint32_t ms_goneby; (void)SCTP_GETTIME_TIMEVAL(&now); if (net->last_sent_time.tv_sec) { - ms_goneby = (now.tv_sec - net->last_sent_time.tv_sec) * 1000; + ms_goneby = (uint32_t)(now.tv_sec - net->last_sent_time.tv_sec) * 1000; } else { ms_goneby = 0; } @@ -896,7 +921,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, num_mk = 0; num_abandoned = 0; (void)sctp_mark_all_for_resend(stcb, net, alt, win_probe, - &num_mk, &num_abandoned); + &num_mk, &num_abandoned); /* FR Loss recovery just ended with the T3. */ stcb->asoc.fast_retran_loss_recovery = 0; @@ -915,26 +940,30 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, /* Backoff the timer and cwnd */ sctp_backoff_on_timeout(stcb, net, win_probe, num_mk, num_abandoned); - if ((!(net->dest_state & SCTP_ADDR_REACHABLE)) || + if (((net->dest_state & SCTP_ADDR_REACHABLE) == 0) || (net->dest_state & SCTP_ADDR_PF)) { /* Move all pending over too */ sctp_move_chunks_from_net(stcb, net); /* Get the address that failed, to - * force a new src address selecton and + * force a new src address selection and * a route allocation. */ - if (net->ro._s_addr) { + if (net->ro._s_addr != NULL) { sctp_free_ifa(net->ro._s_addr); net->ro._s_addr = NULL; } net->src_addr_selected = 0; /* Force a route allocation too */ - if (net->ro.ro_rt) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + RO_NHFREE(&net->ro); +#else + if (net->ro.ro_rt != NULL) { RTFREE(net->ro.ro_rt); net->ro.ro_rt = NULL; } +#endif /* Was it our primary? */ if ((stcb->asoc.primary_destination == net) && (alt != net)) { @@ -945,7 +974,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, * change-primary then this flag must be cleared * from any net structures. */ - if (stcb->asoc.alternate) { + if (stcb->asoc.alternate != NULL) { sctp_free_remote_addr(stcb->asoc.alternate); } stcb->asoc.alternate = alt; @@ -956,7 +985,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, * Special case for cookie-echo'ed case, we don't do output but must * await the COOKIE-ACK before retransmission */ - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) { /* * Here we just reset the timer and start again since we * have not established the asoc @@ -971,7 +1000,12 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, /* C3. See if we need to send a Fwd-TSN */ if (SCTP_TSN_GT(stcb->asoc.advanced_peer_ack_point, stcb->asoc.last_acked_seq)) { send_forward_tsn(stcb, &stcb->asoc); - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); } @@ -998,7 +1032,7 @@ sctp_t1init_timer(struct sctp_inpcb *inp, sctp_send_initiate(inp, stcb, SCTP_SO_NOT_LOCKED); return (0); } - if (SCTP_GET_STATE((&stcb->asoc)) != SCTP_STATE_COOKIE_WAIT) { + if (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) { return (0); } if (sctp_threshold_management(inp, stcb, net, @@ -1046,19 +1080,19 @@ sctp_cookie_timer(struct sctp_inpcb *inp, } } if (cookie == NULL) { - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) { /* FOOBAR! */ struct mbuf *op_err; - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), "Cookie timer expired, but no cookie"); - inp->last_abort_code = SCTP_FROM_SCTP_TIMER+SCTP_LOC_4; - sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_3; + sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); } else { #ifdef INVARIANTS panic("Cookie timer expires in wrong state?"); #else - SCTP_PRINTF("Strange in state %d not cookie-echoed yet c-e timer expires?\n", SCTP_GET_STATE(&stcb->asoc)); + SCTP_PRINTF("Strange in state %d not cookie-echoed yet c-e timer expires?\n", SCTP_GET_STATE(stcb)); return (0); #endif } @@ -1071,8 +1105,8 @@ sctp_cookie_timer(struct sctp_inpcb *inp, return (1); } /* - * cleared theshold management now lets backoff the address & select - * an alternate + * Cleared threshold management, now lets backoff the address + * and select an alternate */ stcb->asoc.dropped_special_cnt = 0; sctp_backoff_on_timeout(stcb, cookie->whoTo, 1, 0, 0); @@ -1087,6 +1121,7 @@ sctp_cookie_timer(struct sctp_inpcb *inp, sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); } cookie->sent = SCTP_DATAGRAM_RESEND; + cookie->flags |= CHUNK_FLAGS_FRAGMENT_OK; /* * Now call the output routine to kick out the cookie again, Note we * don't mark any chunks for retran so that FR will need to kick in @@ -1096,10 +1131,9 @@ sctp_cookie_timer(struct sctp_inpcb *inp, } int -sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct sctp_nets *net) +sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) { - struct sctp_nets *alt; + struct sctp_nets *alt, *net; struct sctp_tmit_chunk *strrst = NULL, *chk = NULL; if (stcb->asoc.stream_reset_outstanding == 0) { @@ -1110,19 +1144,18 @@ sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if (strrst == NULL) { return (0); } + net = strrst->whoTo; /* do threshold management */ - if (sctp_threshold_management(inp, stcb, strrst->whoTo, - stcb->asoc.max_send_times)) { + if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { /* Assoc is over */ return (1); } /* - * cleared theshold management now lets backoff the address & select - * an alternate + * Cleared threshold management, now lets backoff the address + * and select an alternate */ - sctp_backoff_on_timeout(stcb, strrst->whoTo, 1, 0, 0); - alt = sctp_find_alternate_net(stcb, strrst->whoTo, 0); - sctp_free_remote_addr(strrst->whoTo); + sctp_backoff_on_timeout(stcb, net, 1, 0, 0); + alt = sctp_find_alternate_net(stcb, net, 0); strrst->whoTo = alt; atomic_add_int(&alt->ref_count, 1); @@ -1133,26 +1166,30 @@ sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, sctp_free_remote_addr(chk->whoTo); if (chk->sent != SCTP_DATAGRAM_RESEND) { chk->sent = SCTP_DATAGRAM_RESEND; + chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); } chk->whoTo = alt; atomic_add_int(&alt->ref_count, 1); } } - if (!(net->dest_state & SCTP_ADDR_REACHABLE)) { + if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) { /* * If the address went un-reachable, we need to move to * alternates for ALL chk's in queue */ sctp_move_chunks_from_net(stcb, net); } + sctp_free_remote_addr(net); + /* mark the retran info */ if (strrst->sent != SCTP_DATAGRAM_RESEND) sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); strrst->sent = SCTP_DATAGRAM_RESEND; + strrst->flags |= CHUNK_FLAGS_FRAGMENT_OK; /* restart the timer */ - sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, inp, stcb, strrst->whoTo); + sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, inp, stcb, alt); return (0); } @@ -1177,8 +1214,9 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if (asconf == NULL) { return (0); } + net = asconf->whoTo; /* do threshold management */ - if (sctp_threshold_management(inp, stcb, asconf->whoTo, + if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { /* Assoc is over */ return (1); @@ -1191,17 +1229,16 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, * Mark this peer as ASCONF incapable and cleanup. */ SCTPDBG(SCTP_DEBUG_TIMER1, "asconf_timer: Peer has not responded to our repeated ASCONFs\n"); - sctp_asconf_cleanup(stcb, net); + sctp_asconf_cleanup(stcb); return (0); } /* * cleared threshold management, so now backoff the net and * select an alternate */ - sctp_backoff_on_timeout(stcb, asconf->whoTo, 1, 0, 0); - alt = sctp_find_alternate_net(stcb, asconf->whoTo, 0); + sctp_backoff_on_timeout(stcb, net, 1, 0, 0); + alt = sctp_find_alternate_net(stcb, net, 0); if (asconf->whoTo != alt) { - sctp_free_remote_addr(asconf->whoTo); asconf->whoTo = alt; atomic_add_int(&alt->ref_count, 1); } @@ -1214,6 +1251,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, chk->whoTo = alt; if (chk->sent != SCTP_DATAGRAM_RESEND) { chk->sent = SCTP_DATAGRAM_RESEND; + chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); } atomic_add_int(&alt->ref_count, 1); @@ -1228,18 +1266,22 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if (asconf->sent != SCTP_DATAGRAM_RESEND && chk->sent != SCTP_DATAGRAM_UNSENT) sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); chk->sent = SCTP_DATAGRAM_RESEND; + chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; } - if (!(net->dest_state & SCTP_ADDR_REACHABLE)) { + if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) { /* * If the address went un-reachable, we need to move * to the alternate for ALL chunks in queue */ sctp_move_chunks_from_net(stcb, net); } + sctp_free_remote_addr(net); + /* mark the retran info */ if (asconf->sent != SCTP_DATAGRAM_RESEND) sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); asconf->sent = SCTP_DATAGRAM_RESEND; + asconf->flags |= CHUNK_FLAGS_FRAGMENT_OK; /* send another ASCONF if any and we can do */ sctp_send_asconf(stcb, alt, SCTP_ADDR_NOT_LOCKED); @@ -1249,8 +1291,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, /* Mobility adaptation */ void -sctp_delete_prim_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct sctp_nets *net SCTP_UNUSED) +sctp_delete_prim_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) { if (stcb->asoc.deleted_primary == NULL) { SCTPDBG(SCTP_DEBUG_ASCONF1, "delete_prim_timer: deleted_primary is not stored...\n"); @@ -1277,7 +1318,7 @@ sctp_shutdown_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, { struct sctp_nets *alt; - /* first threshold managment */ + /* first threshold management */ if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { /* Assoc is over */ return (1); @@ -1300,7 +1341,7 @@ sctp_shutdownack_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, { struct sctp_nets *alt; - /* first threshold managment */ + /* first threshold management */ if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { /* Assoc is over */ return (1); @@ -1318,17 +1359,17 @@ sctp_shutdownack_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } static void -sctp_audit_stream_queues_for_size(struct sctp_inpcb *inp, - struct sctp_tcb *stcb) +sctp_audit_stream_queues_for_size(struct sctp_inpcb *inp, struct sctp_tcb *stcb) { struct sctp_stream_queue_pending *sp; unsigned int i, chks_in_queue = 0; int being_filled = 0; - /* - * This function is ONLY called when the send/sent queues are empty. - */ - if ((stcb == NULL) || (inp == NULL)) - return; + + KASSERT(inp != NULL, ("inp is NULL")); + KASSERT(stcb != NULL, ("stcb is NULL")); + SCTP_TCB_LOCK_ASSERT(stcb); + KASSERT(TAILQ_EMPTY(&stcb->asoc.send_queue), ("send_queue not empty")); + KASSERT(TAILQ_EMPTY(&stcb->asoc.sent_queue), ("sent_queue not empty")); if (stcb->asoc.sent_queue_retran_cnt) { SCTP_PRINTF("Hmm, sent_queue_retran_cnt is non-zero %d\n", @@ -1337,7 +1378,7 @@ sctp_audit_stream_queues_for_size(struct sctp_inpcb *inp, } if (stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, &stcb->asoc)) { /* No stream scheduler information, initialize scheduler */ - stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc, 0); + stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc); if (!stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, &stcb->asoc)) { /* yep, we lost a stream or two */ SCTP_PRINTF("Found additional streams NOT managed by scheduler, corrected\n"); @@ -1385,15 +1426,11 @@ int sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net) { - uint8_t net_was_pf; + bool net_was_pf; - if (net->dest_state & SCTP_ADDR_PF) { - net_was_pf = 1; - } else { - net_was_pf = 0; - } + net_was_pf = (net->dest_state & SCTP_ADDR_PF) != 0; if (net->hb_responded == 0) { - if (net->ro._s_addr) { + if (net->ro._s_addr != NULL) { /* Invalidate the src address if we did not get * a response last time. */ @@ -1408,7 +1445,7 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } } /* Zero PBA, if it needs it */ - if (net->partial_bytes_acked) { + if (net->partial_bytes_acked > 0) { net->partial_bytes_acked = 0; } if ((stcb->asoc.total_output_queue_size > 0) && @@ -1416,15 +1453,16 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, (TAILQ_EMPTY(&stcb->asoc.sent_queue))) { sctp_audit_stream_queues_for_size(inp, stcb); } - if (!(net->dest_state & SCTP_ADDR_NOHB) && - !((net_was_pf == 0) && (net->dest_state & SCTP_ADDR_PF))) { - /* when move to PF during threshold mangement, a HB has been - queued in that routine */ + if ((((net->dest_state & SCTP_ADDR_NOHB) == 0) || + (net->dest_state & SCTP_ADDR_UNCONFIRMED)) && + (net_was_pf || ((net->dest_state & SCTP_ADDR_PF) == 0))) { + /* When moving to PF during threshold management, a HB has been + queued in that routine. */ uint32_t ms_gone_by; if ((net->last_sent_time.tv_sec > 0) || (net->last_sent_time.tv_usec > 0)) { -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) struct timeval diff; SCTP_GETTIME_TIMEVAL(&diff); @@ -1441,6 +1479,7 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, ms_gone_by = 0xffffffff; } if ((ms_gone_by >= net->heart_beat_delay) || + (net->dest_state & SCTP_ADDR_UNCONFIRMED) || (net->dest_state & SCTP_ADDR_PF)) { sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); } @@ -1470,7 +1509,7 @@ sctp_pathmtu_timer(struct sctp_inpcb *inp, if (net->ro._l_addr.sa.sa_family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&net->ro._l_addr; /* KAME hack: embed scopeid */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) (void)in6_embedscope(&sin6->sin6_addr, sin6, NULL, NULL); #else @@ -1503,7 +1542,11 @@ sctp_pathmtu_timer(struct sctp_inpcb *inp, net->src_addr_selected = 1; } if (net->ro._s_addr) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._s_addr.sa, net->ro.ro_nh); +#else mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._s_addr.sa, net->ro.ro_rt); +#endif #if defined(INET) || defined(INET6) if (net->port) { mtu -= sizeof(struct udphdr); @@ -1511,6 +1554,8 @@ sctp_pathmtu_timer(struct sctp_inpcb *inp, #endif if (mtu > next_mtu) { net->mtu = next_mtu; + } else { + net->mtu = mtu; } } } @@ -1519,16 +1564,14 @@ sctp_pathmtu_timer(struct sctp_inpcb *inp, } void -sctp_autoclose_timer(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - struct sctp_nets *net) +sctp_autoclose_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) { struct timeval tn, *tim_touse; struct sctp_association *asoc; - int ticks_gone_by; + uint32_t ticks_gone_by; (void)SCTP_GETTIME_TIMEVAL(&tn); - if (stcb->asoc.sctp_autoclose_ticks && + if (stcb->asoc.sctp_autoclose_ticks > 0 && sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE)) { /* Auto close is on */ asoc = &stcb->asoc; @@ -1540,9 +1583,8 @@ sctp_autoclose_timer(struct sctp_inpcb *inp, tim_touse = &asoc->time_last_sent; } /* Now has long enough transpired to autoclose? */ - ticks_gone_by = SEC_TO_TICKS(tn.tv_sec - tim_touse->tv_sec); - if ((ticks_gone_by > 0) && - (ticks_gone_by >= (int)asoc->sctp_autoclose_ticks)) { + ticks_gone_by = sctp_secs_to_ticks((uint32_t)(tn.tv_sec - tim_touse->tv_sec)); + if (ticks_gone_by >= asoc->sctp_autoclose_ticks) { /* * autoclose time has hit, call the output routine, * which should do nothing just to be SURE we don't @@ -1558,29 +1600,26 @@ sctp_autoclose_timer(struct sctp_inpcb *inp, * there is nothing queued to send, so I'm * done... */ - if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) { + if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) { /* only send SHUTDOWN 1st time thru */ - struct sctp_nets *netp; + struct sctp_nets *net; - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); sctp_stop_timers_for_shutdown(stcb); if (stcb->asoc.alternate) { - netp = stcb->asoc.alternate; + net = stcb->asoc.alternate; } else { - netp = stcb->asoc.primary_destination; + net = stcb->asoc.primary_destination; } - sctp_send_shutdown(stcb, netp); + sctp_send_shutdown(stcb, net); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, - stcb->sctp_ep, stcb, - netp); + stcb->sctp_ep, stcb, net); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, - netp); + stcb->sctp_ep, stcb, NULL); } } } else { @@ -1588,13 +1627,12 @@ sctp_autoclose_timer(struct sctp_inpcb *inp, * No auto close at this time, reset t-o to check * later */ - int tmp; + uint32_t tmp; /* fool the timer startup to use the time left */ tmp = asoc->sctp_autoclose_ticks; asoc->sctp_autoclose_ticks -= ticks_gone_by; - sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, - net); + sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL); /* restore the real tick value */ asoc->sctp_autoclose_ticks = tmp; } diff --git a/netwerk/sctp/src/netinet/sctp_timer.h b/netwerk/sctp/src/netinet/sctp_timer.h index 3662bd2c7a..0fe9c03b05 100755 --- a/netwerk/sctp/src/netinet/sctp_timer.h +++ b/netwerk/sctp/src/netinet/sctp_timer.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_timer.h 235828 2012-05-23 11:26:28Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_TIMER_H_ @@ -44,22 +46,20 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_timer.h 235828 2012-05-23 11:26:28Z tu #define SCTP_RTT_VAR_SHIFT 2 struct sctp_nets * -sctp_find_alternate_net(struct sctp_tcb *, - struct sctp_nets *, int mode); - -int -sctp_threshold_management(struct sctp_inpcb *, struct sctp_tcb *, - struct sctp_nets *, uint16_t); +sctp_find_alternate_net(struct sctp_tcb *, struct sctp_nets *, int); int sctp_t3rxt_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); + int sctp_t1init_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); + int sctp_shutdown_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); + int sctp_heartbeat_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); @@ -76,32 +76,28 @@ int sctp_shutdownack_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); int -sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct sctp_nets *net); +sctp_strreset_timer(struct sctp_inpcb *, struct sctp_tcb *); int sctp_asconf_timer(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); void -sctp_delete_prim_timer(struct sctp_inpcb *, struct sctp_tcb *, - struct sctp_nets *); +sctp_delete_prim_timer(struct sctp_inpcb *, struct sctp_tcb *); void -sctp_autoclose_timer(struct sctp_inpcb *, struct sctp_tcb *, - struct sctp_nets *net); +sctp_autoclose_timer(struct sctp_inpcb *, struct sctp_tcb *); void sctp_audit_retranmission_queue(struct sctp_association *); void sctp_iterator_timer(struct sctp_iterator *it); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) || defined(APPLE_SNOWLEOPARD) || defined(APPLE_LION) || defined(APPLE_MOUNTAINLION) void sctp_slowtimo(void); #else void sctp_gc(struct inpcbinfo *); #endif #endif - #endif #endif diff --git a/netwerk/sctp/src/netinet/sctp_uio.h b/netwerk/sctp/src/netinet/sctp_uio.h index 7cf02ed252..eee2d6447c 100755 --- a/netwerk/sctp/src/netinet/sctp_uio.h +++ b/netwerk/sctp/src/netinet/sctp_uio.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,29 +32,28 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_uio.h 269945 2014-08-13 15:50:16Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_UIO_H_ #define _NETINET_SCTP_UIO_H_ -#if (defined(__APPLE__) && defined(KERNEL)) +#if (defined(__APPLE__) && !defined(__Userspace__) && defined(KERNEL)) #ifndef _KERNEL #define _KERNEL #endif #endif - -#if !(defined(__Windows__)) && !defined(__Userspace_os_Windows) -#if ! defined(_KERNEL) +#if !defined(_WIN32) +#if !defined(_KERNEL) #include #endif #include #include #include #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) #pragma warning(push) #pragma warning(disable: 4200) #if defined(_KERNEL) @@ -108,14 +109,8 @@ struct sctp_event_subscribe { * ancillary data structures */ struct sctp_initmsg { -#if defined(__FreeBSD__) && __FreeBSD_version < 800000 - /* This is a bug. Not fixed for ABI compatibility */ - uint32_t sinit_num_ostreams; - uint32_t sinit_max_instreams; -#else uint16_t sinit_num_ostreams; uint16_t sinit_max_instreams; -#endif uint16_t sinit_max_attempts; uint16_t sinit_max_init_timeo; }; @@ -133,7 +128,6 @@ struct sctp_initmsg { * all sendrcvinfo's need a verfid for SENDING only. */ - #define SCTP_ALIGN_RESV_PAD 92 #define SCTP_ALIGN_RESV_PAD_SHORT 76 @@ -141,9 +135,6 @@ struct sctp_sndrcvinfo { uint16_t sinfo_stream; uint16_t sinfo_ssn; uint16_t sinfo_flags; -#if defined(__FreeBSD__) && __FreeBSD_version < 800000 - uint16_t sinfo_pr_policy; -#endif uint32_t sinfo_ppid; uint32_t sinfo_context; uint32_t sinfo_timetolive; @@ -159,24 +150,27 @@ struct sctp_extrcvinfo { uint16_t sinfo_stream; uint16_t sinfo_ssn; uint16_t sinfo_flags; -#if defined(__FreeBSD__) && __FreeBSD_version < 800000 - uint16_t sinfo_pr_policy; -#endif uint32_t sinfo_ppid; uint32_t sinfo_context; - uint32_t sinfo_timetolive; + uint32_t sinfo_timetolive; /* should have been sinfo_pr_value */ uint32_t sinfo_tsn; uint32_t sinfo_cumtsn; sctp_assoc_t sinfo_assoc_id; - uint16_t sreinfo_next_flags; - uint16_t sreinfo_next_stream; - uint32_t sreinfo_next_aid; - uint32_t sreinfo_next_length; - uint32_t sreinfo_next_ppid; + uint16_t serinfo_next_flags; + uint16_t serinfo_next_stream; + uint32_t serinfo_next_aid; + uint32_t serinfo_next_length; + uint32_t serinfo_next_ppid; uint16_t sinfo_keynumber; uint16_t sinfo_keynumber_valid; uint8_t __reserve_pad[SCTP_ALIGN_RESV_PAD_SHORT]; }; +#define sinfo_pr_value sinfo_timetolive +#define sreinfo_next_flags serinfo_next_flags +#define sreinfo_next_stream serinfo_next_stream +#define sreinfo_next_aid serinfo_next_aid +#define sreinfo_next_length serinfo_next_length +#define sreinfo_next_ppid serinfo_next_ppid struct sctp_sndinfo { uint16_t snd_sid; @@ -282,7 +276,8 @@ struct sctp_snd_all_completes { /* The lower four bits is an enumeration of PR-SCTP policies */ #define SCTP_PR_SCTP_NONE 0x0000 /* Reliable transfer */ #define SCTP_PR_SCTP_TTL 0x0001 /* Time based PR-SCTP */ -#define SCTP_PR_SCTP_BUF 0x0002 /* Buffer based PR-SCTP */ +#define SCTP_PR_SCTP_PRIO 0x0002 /* Buffer based PR-SCTP */ +#define SCTP_PR_SCTP_BUF SCTP_PR_SCTP_PRIO /* For backwards compatibility */ #define SCTP_PR_SCTP_RTX 0x0003 /* Number of retransmissions based PR-SCTP */ #define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_RTX #define SCTP_PR_SCTP_ALL 0x000f /* Used for aggregated stats */ @@ -341,12 +336,13 @@ struct sctp_assoc_change { #define SCTP_CANT_STR_ASSOC 0x0005 /* sac_info values */ -#define SCTP_ASSOC_SUPPORTS_PR 0x01 -#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 -#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 -#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 -#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 -#define SCTP_ASSOC_SUPPORTS_MAX 0x05 +#define SCTP_ASSOC_SUPPORTS_PR 0x01 +#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 +#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 +#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 +#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 +#define SCTP_ASSOC_SUPPORTS_INTERLEAVING 0x06 +#define SCTP_ASSOC_SUPPORTS_MAX 0x06 /* * Address event */ @@ -443,7 +439,6 @@ struct sctp_setadaption { uint32_t ssb_adaption_ind; }; - /* * Partial Delivery API event */ @@ -460,7 +455,6 @@ struct sctp_pdapi_event { /* indication values */ #define SCTP_PARTIAL_DELIVERY_ABORTED 0x0001 - /* * authentication key event */ @@ -480,7 +474,6 @@ struct sctp_authkey_event { #define SCTP_AUTH_NO_AUTH 0x0002 #define SCTP_AUTH_FREE_KEY 0x0003 - struct sctp_sender_dry_event { uint16_t sender_dry_type; uint16_t sender_dry_flags; @@ -488,7 +481,6 @@ struct sctp_sender_dry_event { sctp_assoc_t sender_dry_assoc_id; }; - /* * Stream reset event - subscribe to SCTP_STREAM_RESET_EVENT */ @@ -536,7 +528,6 @@ struct sctp_stream_change_event { #define SCTP_STREAM_CHANGE_DENIED 0x0004 #define SCTP_STREAM_CHANGE_FAILED 0x0008 - /* SCTP notification event */ struct sctp_tlv { uint16_t sn_type; @@ -611,6 +602,7 @@ struct sctp_paddrthlds { sctp_assoc_t spt_assoc_id; uint16_t spt_pathmaxrxt; uint16_t spt_pathpfthld; + uint16_t spt_pathcpthld; }; struct sctp_paddrinfo { @@ -651,10 +643,18 @@ struct sctp_setpeerprim { uint8_t sspp_padding[4]; }; +union sctp_sockstore { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; +#if defined(__Userspace__) + struct sockaddr_conn sconn; +#endif + struct sockaddr sa; +}; + struct sctp_getaddresses { sctp_assoc_t sget_assoc_id; - /* addr is filled in for N * sockaddr_storage */ - struct sockaddr addr[1]; + union sctp_sockstore addr[]; }; struct sctp_status { @@ -1001,7 +1001,7 @@ struct sctpstat { uint32_t sctps_recvauthfailed; /* total number of auth failed */ uint32_t sctps_recvexpress; /* total fast path receives all one chunk */ uint32_t sctps_recvexpressm; /* total fast path multi-part data */ - uint32_t sctps_recvnocrc; + uint32_t sctps_recv_spare; /* formerly sctps_recvnocrc */ uint32_t sctps_recvswcrc; uint32_t sctps_recvhwcrc; @@ -1012,13 +1012,13 @@ struct sctpstat { uint32_t sctps_sendretransdata; /* total output retransmitted DATA chunks */ uint32_t sctps_sendfastretrans; /* total output fast retransmitted DATA chunks */ uint32_t sctps_sendmultfastretrans; /* total FR's that happened more than once - * to same chunk (u-del multi-fr algo). - */ + * to same chunk (u-del multi-fr algo). + */ uint32_t sctps_sendheartbeat; /* total output HB chunks */ uint32_t sctps_sendecne; /* total output ECNE chunks */ uint32_t sctps_sendauth; /* total output AUTH chunks FIXME */ - uint32_t sctps_senderrors; /* ip_output error counter */ - uint32_t sctps_sendnocrc; + uint32_t sctps_senderrors; /* ip_output error counter */ + uint32_t sctps_send_spare; /* formerly sctps_sendnocrc */ uint32_t sctps_sendswcrc; uint32_t sctps_sendhwcrc; /* PCKDROPREP statistics: */ @@ -1104,19 +1104,26 @@ struct sctpstat { uint32_t sctps_send_burst_avoid; /* Unused */ uint32_t sctps_send_cwnd_avoid; /* Send cwnd full avoidance, already max burst inflight to net */ uint32_t sctps_fwdtsn_map_over; /* number of map array over-runs via fwd-tsn's */ - uint32_t sctps_queue_upd_ecne; /* Number of times we queued or updated an ECN chunk on send queue */ - uint32_t sctps_reserved[31]; /* Future ABI compat - remove int's from here when adding new */ + uint32_t sctps_queue_upd_ecne; /* Number of times we queued or updated an ECN chunk on send queue */ + uint32_t sctps_recvzerocrc; /* Number of accepted packets with zero CRC */ + uint32_t sctps_sendzerocrc; /* Number of packets sent with zero CRC */ + uint32_t sctps_reserved[29]; /* Future ABI compat - remove int's from here when adding new */ }; #define SCTP_STAT_INCR(_x) SCTP_STAT_INCR_BY(_x,1) #define SCTP_STAT_DECR(_x) SCTP_STAT_DECR_BY(_x,1) -#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) #define SCTP_STAT_INCR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x += _d) #define SCTP_STAT_DECR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x -= _d) #else #define SCTP_STAT_INCR_BY(_x,_d) atomic_add_int(&SCTP_BASE_STAT(_x), _d) #define SCTP_STAT_DECR_BY(_x,_d) atomic_subtract_int(&SCTP_BASE_STAT(_x), _d) #endif +#else +#define SCTP_STAT_INCR_BY(_x,_d) atomic_add_int(&SCTP_BASE_STAT(_x), _d) +#define SCTP_STAT_DECR_BY(_x,_d) atomic_subtract_int(&SCTP_BASE_STAT(_x), _d) +#endif /* The following macros are for handling MIB values, */ #define SCTP_STAT_INCR_COUNTER32(_x) SCTP_STAT_INCR(_x) #define SCTP_STAT_INCR_COUNTER64(_x) SCTP_STAT_INCR(_x) @@ -1125,34 +1132,14 @@ struct sctpstat { #define SCTP_STAT_DECR_COUNTER64(_x) SCTP_STAT_DECR(_x) #define SCTP_STAT_DECR_GAUGE32(_x) SCTP_STAT_DECR(_x) -#if defined(__Userspace__) -union sctp_sockstore { -#if defined(INET) - struct sockaddr_in sin; -#endif -#if defined(INET6) - struct sockaddr_in6 sin6; -#endif - struct sockaddr_conn sconn; - struct sockaddr sa; -}; -#else -union sctp_sockstore { - struct sockaddr_in sin; - struct sockaddr_in6 sin6; - struct sockaddr sa; -}; -#endif - - /***********************************/ /* And something for us old timers */ /***********************************/ -#ifndef __APPLE__ -#ifndef __Userspace__ +#if !(defined(__APPLE__) && !defined(__Userspace__)) +#if !defined(__Userspace__) #ifndef ntohll -#if defined(__Userspace_os_Linux) +#if defined(__linux__) #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif @@ -1164,7 +1151,7 @@ union sctp_sockstore { #endif #ifndef htonll -#if defined(__Userspace_os_Linux) +#if defined(__linux__) #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif @@ -1178,30 +1165,33 @@ union sctp_sockstore { #endif /***********************************/ - struct xsctp_inpcb { uint32_t last; uint32_t flags; -#if defined(__FreeBSD__) && __FreeBSD_version < 1000048 - uint32_t features; -#else uint64_t features; -#endif uint32_t total_sends; uint32_t total_recvs; uint32_t total_nospaces; uint32_t fragmentation_point; uint16_t local_port; +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint16_t qlen_old; + uint16_t maxqlen_old; +#else uint16_t qlen; uint16_t maxqlen; -#if defined(__Windows__) - uint16_t padding; #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 1000048 - uint32_t extra_padding[32]; /* future */ + uint16_t __spare16; +#if defined(__FreeBSD__) && !defined(__Userspace__) + kvaddr_t socket; #else - uint32_t extra_padding[31]; /* future */ + void *socket; #endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint32_t qlen; + uint32_t maxqlen; +#endif + uint32_t extra_padding[26]; /* future */ }; struct xsctp_tcb { @@ -1230,18 +1220,9 @@ struct xsctp_tcb { uint16_t remote_port; /* sctpAssocEntry 4 */ struct sctp_timeval start_time; /* sctpAssocEntry 16 */ struct sctp_timeval discontinuity_time; /* sctpAssocEntry 17 */ -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800000 uint32_t peers_rwnd; sctp_assoc_t assoc_id; /* sctpAssocEntry 1 */ uint32_t extra_padding[32]; /* future */ -#else -#endif -#else - uint32_t peers_rwnd; - sctp_assoc_t assoc_id; /* sctpAssocEntry 1 */ - uint32_t extra_padding[32]; /* future */ -#endif }; struct xsctp_laddr { @@ -1266,17 +1247,12 @@ struct xsctp_raddr { uint8_t heartbeat_enabled; /* sctpAssocLocalRemEntry 4 */ uint8_t potentially_failed; struct sctp_timeval start_time; /* sctpAssocLocalRemEntry 8 */ -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800000 uint32_t rtt; uint32_t heartbeat_interval; - uint32_t extra_padding[31]; /* future */ -#endif -#else - uint32_t rtt; - uint32_t heartbeat_interval; - uint32_t extra_padding[31]; /* future */ -#endif + uint32_t ssthresh; + uint16_t encaps_port; + uint16_t state; + uint32_t extra_padding[29]; /* future */ }; #define SCTP_MAX_LOGGING_SIZE 30000 @@ -1303,19 +1279,14 @@ int sctp_lower_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, -#if defined(__Panda__) - pakhandle_type i_pak, - pakhandle_type i_control, -#else - struct mbuf *i_pak, + struct mbuf *top, struct mbuf *control, -#endif int flags, struct sctp_sndrcvinfo *srcv -#if !(defined(__Panda__) || defined(__Userspace__)) -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if !defined(__Userspace__) +#if defined(__FreeBSD__) ,struct thread *p -#elif defined(__Windows__) +#elif defined(_WIN32) , PKTHREAD p #else ,struct proc *p @@ -1326,11 +1297,7 @@ sctp_lower_sosend(struct socket *so, int sctp_sorecvmsg(struct socket *so, struct uio *uio, -#if defined(__Panda__) - particletype **mp, -#else struct mbuf **mp, -#endif struct sockaddr *from, int fromlen, int *msg_flags, @@ -1344,45 +1311,6 @@ sctp_sorecvmsg(struct socket *so, #if !(defined(_KERNEL)) && !(defined(__Userspace__)) __BEGIN_DECLS -#if defined(__FreeBSD__) && __FreeBSD_version < 902000 -int sctp_peeloff __P((int, sctp_assoc_t)); -int sctp_bindx __P((int, struct sockaddr *, int, int)); -int sctp_connectx __P((int, const struct sockaddr *, int, sctp_assoc_t *)); -int sctp_getaddrlen __P((sa_family_t)); -int sctp_getpaddrs __P((int, sctp_assoc_t, struct sockaddr **)); -void sctp_freepaddrs __P((struct sockaddr *)); -int sctp_getladdrs __P((int, sctp_assoc_t, struct sockaddr **)); -void sctp_freeladdrs __P((struct sockaddr *)); -int sctp_opt_info __P((int, sctp_assoc_t, int, void *, socklen_t *)); - -/* deprecated */ -ssize_t sctp_sendmsg __P((int, const void *, size_t, const struct sockaddr *, - socklen_t, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t)); - -/* deprecated */ -ssize_t sctp_send __P((int, const void *, size_t, - const struct sctp_sndrcvinfo *, int)); - -/* deprecated */ -ssize_t sctp_sendx __P((int, const void *, size_t, struct sockaddr *, - int, struct sctp_sndrcvinfo *, int)); - -/* deprecated */ -ssize_t sctp_sendmsgx __P((int sd, const void *, size_t, struct sockaddr *, - int, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t)); - -sctp_assoc_t sctp_getassocid __P((int, struct sockaddr *)); - -/* deprecated */ -ssize_t sctp_recvmsg __P((int, void *, size_t, struct sockaddr *, socklen_t *, - struct sctp_sndrcvinfo *, int *)); - -ssize_t sctp_sendv __P((int, const struct iovec *, int, struct sockaddr *, - int, void *, socklen_t, unsigned int, int)); - -ssize_t sctp_recvv __P((int, const struct iovec *, int, struct sockaddr *, - socklen_t *, void *, socklen_t *, unsigned int *, int *)); -#else int sctp_peeloff(int, sctp_assoc_t); int sctp_bindx(int, struct sockaddr *, int, int); int sctp_connectx(int, const struct sockaddr *, int, sctp_assoc_t *); @@ -1420,7 +1348,6 @@ ssize_t sctp_sendv(int, const struct iovec *, int, struct sockaddr *, ssize_t sctp_recvv(int, const struct iovec *, int, struct sockaddr *, socklen_t *, void *, socklen_t *, unsigned int *, int *); -#endif __END_DECLS #endif /* !_KERNEL */ diff --git a/netwerk/sctp/src/netinet/sctp_userspace.c b/netwerk/sctp/src/netinet/sctp_userspace.c index 7841a89e1e..71888901fe 100755 --- a/netwerk/sctp/src/netinet/sctp_userspace.c +++ b/netwerk/sctp/src/netinet/sctp_userspace.c @@ -31,164 +31,200 @@ #include #include #include -#pragma comment(lib, "IPHLPAPI.lib") +#if !defined(__MINGW32__) +#pragma comment(lib, "iphlpapi.lib") +#endif #endif #include +#if defined(__FreeBSD__) +#include +#endif + +#if defined(__linux__) +#include +#endif + +#if defined(_WIN32) +/* Adapter to translate Unix thread start routines to Windows thread start + * routines. + */ +#if defined(__MINGW32__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#endif +static DWORD WINAPI +sctp_create_thread_adapter(void *arg) { + start_routine_t start_routine = (start_routine_t)arg; + return start_routine(NULL) == NULL; +} -#if !defined(_WIN32) && !defined(__Userspace_os_NaCl) int -sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af) +sctp_userspace_thread_create(userland_thread_t *thread, start_routine_t start_routine) { - struct ifreq ifr; - int fd; - - if_indextoname(if_index, ifr.ifr_name); - /* TODO can I use the raw socket here and not have to open a new one with each query? */ - if ((fd = socket(af, SOCK_DGRAM, 0)) < 0) - return (0); - if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) { - close(fd); - return (0); - } - close(fd); - return ifr.ifr_mtu; + *thread = CreateThread(NULL, 0, sctp_create_thread_adapter, + (void *)start_routine, 0, NULL); + if (*thread == NULL) + return GetLastError(); + return 0; } + +#if defined(__MINGW32__) +#pragma GCC diagnostic pop #endif -#if defined(__Userspace_os_NaCl) +#else int -sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af) +sctp_userspace_thread_create(userland_thread_t *thread, start_routine_t start_routine) { - return 1280; + return pthread_create(thread, NULL, start_routine, NULL); } #endif -#ifdef _WIN32 +void +sctp_userspace_set_threadname(const char *name) +{ +#if defined(__APPLE__) + pthread_setname_np(name); +#endif +#if defined(__linux__) + prctl(PR_SET_NAME, name); +#endif +#if defined(__FreeBSD__) + pthread_set_name_np(pthread_self(), name); +#endif +} + +#if !defined(_WIN32) && !defined(__native_client__) int -sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af) +sctp_userspace_get_mtu_from_ifn(uint32_t if_index) { - PIP_ADAPTER_ADDRESSES pAdapterAddrs, pAdapt; - DWORD AdapterAddrsSize, Err; +#if defined(INET) || defined(INET6) + struct ifreq ifr; + int fd; +#endif + int mtu; - AdapterAddrsSize = 0; - if ((Err = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &AdapterAddrsSize)) != 0) { - if ((Err != ERROR_BUFFER_OVERFLOW) && (Err != ERROR_INSUFFICIENT_BUFFER)) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersAddresses() sizing failed with error code %d, AdapterAddrsSize = %d\n", Err, AdapterAddrsSize); - return (-1); + if (if_index == 0xffffffff) { + mtu = 1280; + } else { + mtu = 0; +#if defined(INET) || defined(INET6) + memset(&ifr, 0, sizeof(struct ifreq)); + if (if_indextoname(if_index, ifr.ifr_name) != NULL) { + /* TODO can I use the raw socket here and not have to open a new one with each query? */ +#if defined(INET) + if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0) { +#else + if ((fd = socket(AF_INET6, SOCK_DGRAM, 0)) >= 0) { +#endif + if (ioctl(fd, SIOCGIFMTU, &ifr) >= 0) { + mtu = ifr.ifr_mtu; + } + close(fd); + } } +#endif } - if ((pAdapterAddrs = (PIP_ADAPTER_ADDRESSES) GlobalAlloc(GPTR, AdapterAddrsSize)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Memory allocation error!\n"); - return (-1); - } - if ((Err = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersAddresses() failed with error code %d\n", Err); - return (-1); - } - for (pAdapt = pAdapterAddrs; pAdapt; pAdapt = pAdapt->Next) { - if (pAdapt->IfIndex == if_index) - return (pAdapt->Mtu); - } - return (0); + return (mtu); } +#endif -void -getwintimeofday(struct timeval *tv) +#if defined(__native_client__) +int +sctp_userspace_get_mtu_from_ifn(uint32_t if_index) +{ + return 1280; +} +#endif + +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(__QNX__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__) +int +timingsafe_bcmp(const void *b1, const void *b2, size_t n) { - struct timeb tb; + const unsigned char *p1 = b1, *p2 = b2; + int ret = 0; - ftime(&tb); - tv->tv_sec = (long)tb.time; - tv->tv_usec = (long)(tb.millitm) * 1000L; + for (; n > 0; n--) + ret |= *p1++ ^ *p2++; + return (ret != 0); } +#endif +#ifdef _WIN32 int -Win_getifaddrs(struct ifaddrs** interfaces) +sctp_userspace_get_mtu_from_ifn(uint32_t if_index) { #if defined(INET) || defined(INET6) - DWORD Err, AdapterAddrsSize; - int count; PIP_ADAPTER_ADDRESSES pAdapterAddrs, pAdapt; - struct ifaddrs *ifa; -#endif -#if defined(INET) - struct sockaddr_in *addr; -#endif -#if defined(INET6) - struct sockaddr_in6 *addr6; + DWORD AdapterAddrsSize, Err; #endif + int mtu; + + if (if_index == 0xffffffff) { + mtu = 1280; + } else { + mtu = 0; #if defined(INET) || defined(INET6) - count = 0; -#endif -#if defined(INET) - AdapterAddrsSize = 0; - if ((Err = GetAdaptersAddresses(AF_INET, 0, NULL, NULL, &AdapterAddrsSize)) != 0) { - if ((Err != ERROR_BUFFER_OVERFLOW) && (Err != ERROR_INSUFFICIENT_BUFFER)) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersV4Addresses() sizing failed with error code %d and AdapterAddrsSize = %d\n", Err, AdapterAddrsSize); - return (-1); - } - } - /* Allocate memory from sizing information */ - if ((pAdapterAddrs = (PIP_ADAPTER_ADDRESSES) GlobalAlloc(GPTR, AdapterAddrsSize)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Memory allocation error!\n"); - return (-1); - } - /* Get actual adapter information */ - if ((Err = GetAdaptersAddresses(AF_INET, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersV4Addresses() failed with error code %d\n", Err); - return (-1); - } - /* Enumerate through each returned adapter and save its information */ - for (pAdapt = pAdapterAddrs, count; pAdapt; pAdapt = pAdapt->Next, count++) { - addr = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in)); - ifa = (struct ifaddrs *)malloc(sizeof(struct ifaddrs)); - if ((addr == NULL) || (ifa == NULL)) { - SCTPDBG(SCTP_DEBUG_USR, "Can't allocate memory\n"); - return (-1); - } - ifa->ifa_name = _strdup(pAdapt->AdapterName); - ifa->ifa_flags = pAdapt->Flags; - ifa->ifa_addr = (struct sockaddr *)addr; - memcpy(addr, &pAdapt->FirstUnicastAddress->Address.lpSockaddr, sizeof(struct sockaddr_in)); - interfaces[count] = ifa; - } -#endif -#if defined(INET6) - if (SCTP_BASE_VAR(userspace_rawsctp6) != -1) { AdapterAddrsSize = 0; - if ((Err = GetAdaptersAddresses(AF_INET6, 0, NULL, NULL, &AdapterAddrsSize)) != 0) { + pAdapterAddrs = NULL; + if ((Err = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &AdapterAddrsSize)) != 0) { if ((Err != ERROR_BUFFER_OVERFLOW) && (Err != ERROR_INSUFFICIENT_BUFFER)) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersV6Addresses() sizing failed with error code %d AdapterAddrsSize = %d\n", Err, AdapterAddrsSize); - return (-1); + SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersAddresses() sizing failed with error code %d, AdapterAddrsSize = %d\n", Err, AdapterAddrsSize); + mtu = -1; + goto cleanup; } } - /* Allocate memory from sizing information */ if ((pAdapterAddrs = (PIP_ADAPTER_ADDRESSES) GlobalAlloc(GPTR, AdapterAddrsSize)) == NULL) { SCTPDBG(SCTP_DEBUG_USR, "Memory allocation error!\n"); - return (-1); + mtu = -1; + goto cleanup; } - /* Get actual adapter information */ - if ((Err = GetAdaptersAddresses(AF_INET6, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { - SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersV6Addresses() failed with error code %d\n", Err); - return (-1); + if ((Err = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { + SCTPDBG(SCTP_DEBUG_USR, "GetAdaptersAddresses() failed with error code %d\n", Err); + mtu = -1; + goto cleanup; } - /* Enumerate through each returned adapter and save its information */ - for (pAdapt = pAdapterAddrs, count; pAdapt; pAdapt = pAdapt->Next, count++) { - addr6 = (struct sockaddr_in6 *)malloc(sizeof(struct sockaddr_in6)); - ifa = (struct ifaddrs *)malloc(sizeof(struct ifaddrs)); - if ((addr6 == NULL) || (ifa == NULL)) { - SCTPDBG(SCTP_DEBUG_USR, "Can't allocate memory\n"); - return (-1); + for (pAdapt = pAdapterAddrs; pAdapt; pAdapt = pAdapt->Next) { + if (pAdapt->IfIndex == if_index) { + mtu = pAdapt->Mtu; + break; } - ifa->ifa_name = _strdup(pAdapt->AdapterName); - ifa->ifa_flags = pAdapt->Flags; - ifa->ifa_addr = (struct sockaddr *)addr6; - memcpy(addr6, &pAdapt->FirstUnicastAddress->Address.lpSockaddr, sizeof(struct sockaddr_in6)); - interfaces[count] = ifa; } + cleanup: + if (pAdapterAddrs != NULL) { + GlobalFree(pAdapterAddrs); + } +#endif } + return (mtu); +} + +void +getwintimeofday(struct timeval *tv) +{ + FILETIME filetime; + ULARGE_INTEGER ularge; + + GetSystemTimeAsFileTime(&filetime); + ularge.LowPart = filetime.dwLowDateTime; + ularge.HighPart = filetime.dwHighDateTime; + /* Change base from Jan 1 1601 00:00:00 to Jan 1 1970 00:00:00 */ +#if defined(__MINGW32__) + ularge.QuadPart -= 116444736000000000ULL; +#else + ularge.QuadPart -= 116444736000000000UI64; +#endif + /* + * ularge.QuadPart is now the number of 100-nanosecond intervals + * since Jan 1 1970 00:00:00. + */ +#if defined(__MINGW32__) + tv->tv_sec = (long)(ularge.QuadPart / 10000000ULL); + tv->tv_usec = (long)((ularge.QuadPart % 10000000ULL) / 10ULL); +#else + tv->tv_sec = (long)(ularge.QuadPart / 10000000UI64); + tv->tv_usec = (long)((ularge.QuadPart % 10000000UI64) / 10UI64); #endif - return (0); } int diff --git a/netwerk/sctp/src/netinet/sctp_usrreq.c b/netwerk/sctp/src/netinet/sctp_usrreq.c index 14a6027cc1..254aea3669 100755 --- a/netwerk/sctp/src/netinet/sctp_usrreq.c +++ b/netwerk/sctp/src/netinet/sctp_usrreq.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,13 +32,13 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_usrreq.c 280459 2015-03-24 21:12:45Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif #include @@ -59,86 +61,56 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_usrreq.c 280459 2015-03-24 21:12:45Z t #else #include #endif - +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#endif #if defined(HAVE_SCTP_PEELOFF_SOCKOPT) #include #endif /* HAVE_SCTP_PEELOFF_SOCKOPT */ -#if defined(__APPLE__) -#define APPLE_FILE_NO 7 -#endif - -extern struct sctp_cc_functions sctp_cc_functions[]; -extern struct sctp_ss_functions sctp_ss_functions[]; +extern const struct sctp_cc_functions sctp_cc_functions[]; +extern const struct sctp_ss_functions sctp_ss_functions[]; -void #if defined(__Userspace__) +void sctp_init(uint16_t port, int (*conn_output)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), - void (*debug_printf)(const char *format, ...)) + void (*debug_printf)(const char *format, ...), int start_threads) #elif defined(__APPLE__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) &&!defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) +void sctp_init(struct protosw *pp SCTP_UNUSED, struct domain *dp SCTP_UNUSED) +#elif defined(__FreeBSD__) +static void +sctp_init(void *arg SCTP_UNUSED) #else +void sctp_init(void) #endif { -#if !defined(__Panda__) && !defined(__Userspace__) +#if !defined(__Userspace__) u_long sb_max_adj; -#endif -#if defined(__Userspace__) -#if defined(__Userspace_os_Windows) -#if defined(INET) || defined(INET6) - WSADATA wsaData; - - if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { - SCTP_PRINTF("WSAStartup failed\n"); - exit (-1); - } -#endif - InitializeConditionVariable(&accept_cond); - InitializeCriticalSection(&accept_mtx); #else - pthread_cond_init(&accept_cond, NULL); - pthread_mutex_init(&accept_mtx, NULL); -#endif + init_random(); #endif /* Initialize and modify the sysctled variables */ sctp_init_sysctls(); #if defined(__Userspace__) -#if defined(__Userspace_os_Windows) || defined(__Userspace_os_NaCl) - srand((unsigned int)time(NULL)); -#else - srandom(getpid()); /* so inp->sctp_ep.random_numbers are truly random... */ -#endif -#endif -#if defined(__Panda__) - sctp_sendspace = SB_MAX; - sctp_recvspace = SB_MAX; - -#elif defined(__Userspace__) - SCTP_BASE_SYSCTL(sctp_sendspace) = SB_MAX; - SCTP_BASE_SYSCTL(sctp_recvspace) = SB_RAW; SCTP_BASE_SYSCTL(sctp_udp_tunneling_port) = port; #else -#if !defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) + sb_max_adj = (u_long)((u_quad_t) (sb_max) * MCLBYTES / (MSIZE + MCLBYTES)); + SCTP_BASE_SYSCTL(sctp_sendspace) = sb_max_adj; +#else if ((nmbclusters / 8) > SCTP_ASOC_MAX_CHUNKS_ON_QUEUE) SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue) = (nmbclusters / 8); -#endif /* * Allow a user to take no more than 1/2 the number of clusters or - * the SB_MAX whichever is smaller for the send window. + * the SB_MAX, whichever is smaller, for the send window. */ -#if defined(__APPLE__) - sb_max_adj = (u_long)((u_quad_t) (sb_max) * MCLBYTES / (MSIZE + MCLBYTES)); -#else sb_max_adj = (u_long)((u_quad_t) (SB_MAX) * MCLBYTES / (MSIZE + MCLBYTES)); -#endif -#if defined(__APPLE__) - SCTP_BASE_SYSCTL(sctp_sendspace) = sb_max_adj; -#else SCTP_BASE_SYSCTL(sctp_sendspace) = min(sb_max_adj, - (((uint32_t)nmbclusters / 2) * SCTP_DEFAULT_MAXSEGMENT)); + (((uint32_t)nmbclusters / 2) * MCLBYTES)); #endif /* * Now for the recv window, should we take the same amount? or @@ -150,7 +122,7 @@ sctp_init(void) SCTP_BASE_VAR(first_time) = 0; SCTP_BASE_VAR(sctp_pcb_initialized) = 0; #if defined(__Userspace__) -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #if defined(INET) || defined(INET6) SCTP_BASE_VAR(userspace_route) = -1; #endif @@ -166,27 +138,50 @@ sctp_init(void) SCTP_BASE_VAR(timer_thread_should_exit) = 0; SCTP_BASE_VAR(conn_output) = conn_output; SCTP_BASE_VAR(debug_printf) = debug_printf; + SCTP_BASE_VAR(crc32c_offloaded) = 0; + SCTP_BASE_VAR(iterator_thread_started) = 0; + SCTP_BASE_VAR(timer_thread_started) = 0; #endif - sctp_pcb_init(); #if defined(__Userspace__) - sctp_start_timer(); + sctp_pcb_init(start_threads); + if (start_threads) { + sctp_start_timer_thread(); + } +#else + sctp_pcb_init(); #endif #if defined(SCTP_PACKET_LOGGING) SCTP_BASE_VAR(packet_log_writers) = 0; SCTP_BASE_VAR(packet_log_end) = 0; - bzero(&SCTP_BASE_VAR(packet_log_buffer), SCTP_PACKET_LOG_SIZE); + memset(&SCTP_BASE_VAR(packet_log_buffer), 0, SCTP_PACKET_LOG_SIZE); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_BASE_VAR(sctp_main_timer_ticks) = 0; sctp_start_main_timer(); timeout(sctp_delayed_startup, NULL, 1); #endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + SCTP_BASE_VAR(eh_tag) = EVENTHANDLER_REGISTER(rt_addrmsg, + sctp_addr_change_event_handler, NULL, EVENTHANDLER_PRI_FIRST); +#endif } +#if defined(__FreeBSD__) && !defined(__Userspace__) +VNET_SYSINIT(sctp_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, sctp_init, NULL); +#ifdef VIMAGE +static void +sctp_finish(void *unused __unused) +{ + EVENTHANDLER_DEREGISTER(rt_addrmsg, SCTP_BASE_VAR(eh_tag)); + sctp_pcb_finish(); +} +VNET_SYSUNINIT(sctp, SI_SUB_PROTO_DOMAIN, SI_ORDER_FOURTH, sctp_finish, NULL); +#endif +#else void sctp_finish(void) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) untimeout(sctp_delayed_startup, NULL); sctp_over_udp_stop(); sctp_address_monitor_stop(); @@ -196,117 +191,84 @@ sctp_finish(void) #if defined(INET) || defined(INET6) recv_thread_destroy(); #endif -#if !defined(__Userspace_os_Windows) -#if defined(INET) || defined(INET6) - if (SCTP_BASE_VAR(userspace_route) != -1) { - pthread_join(SCTP_BASE_VAR(recvthreadroute), NULL); - } -#endif -#endif -#ifdef INET - if (SCTP_BASE_VAR(userspace_rawsctp) != -1) { -#if defined(__Userspace_os_Windows) - WaitForSingleObject(SCTP_BASE_VAR(recvthreadraw), INFINITE); - CloseHandle(SCTP_BASE_VAR(recvthreadraw)); -#else - pthread_join(SCTP_BASE_VAR(recvthreadraw), NULL); -#endif - } - if (SCTP_BASE_VAR(userspace_udpsctp) != -1) { -#if defined(__Userspace_os_Windows) - WaitForSingleObject(SCTP_BASE_VAR(recvthreadudp), INFINITE); - CloseHandle(SCTP_BASE_VAR(recvthreadudp)); -#else - pthread_join(SCTP_BASE_VAR(recvthreadudp), NULL); -#endif - } -#endif -#ifdef INET6 - if (SCTP_BASE_VAR(userspace_rawsctp6) != -1) { -#if defined(__Userspace_os_Windows) - WaitForSingleObject(SCTP_BASE_VAR(recvthreadraw6), INFINITE); - CloseHandle(SCTP_BASE_VAR(recvthreadraw6)); -#else - pthread_join(SCTP_BASE_VAR(recvthreadraw6), NULL); -#endif - } - if (SCTP_BASE_VAR(userspace_udpsctp6) != -1) { -#if defined(__Userspace_os_Windows) - WaitForSingleObject(SCTP_BASE_VAR(recvthreadudp6), INFINITE); - CloseHandle(SCTP_BASE_VAR(recvthreadudp6)); -#else - pthread_join(SCTP_BASE_VAR(recvthreadudp6), NULL); -#endif - } -#endif - SCTP_BASE_VAR(timer_thread_should_exit) = 1; -#if defined(__Userspace_os_Windows) - WaitForSingleObject(SCTP_BASE_VAR(timer_thread), INFINITE); - CloseHandle(SCTP_BASE_VAR(timer_thread)); -#else - pthread_join(SCTP_BASE_VAR(timer_thread), NULL); -#endif + sctp_stop_timer_thread(); #endif sctp_pcb_finish(); -#if defined(__Userspace__) -#if defined(__Userspace_os_Windows) - DeleteConditionVariable(&accept_cond); - DeleteCriticalSection(&accept_mtx); -#else - pthread_cond_destroy(&accept_cond); - pthread_mutex_destroy(&accept_mtx); -#endif -#endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) sctp_finish_sysctls(); -#if defined(INET) || defined(INET6) - WSACleanup(); #endif +#if defined(__Userspace__) + finish_random(); #endif } - - +#endif void -sctp_pathmtu_adjustment(struct sctp_tcb *stcb, uint16_t nxtsz) +sctp_pathmtu_adjustment(struct sctp_tcb *stcb, uint32_t mtu, bool resend) { + struct sctp_association *asoc; struct sctp_tmit_chunk *chk; - uint16_t overhead; - - /* Adjust that too */ - stcb->asoc.smallest_mtu = nxtsz; - /* now off to subtract IP_DF flag if needed */ - overhead = IP_HDR_SIZE; - if (sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.peer_auth_chunks)) { - overhead += sctp_get_auth_chunk_len(stcb->asoc.peer_hmac_id); + uint32_t overhead; + + asoc = &stcb->asoc; + KASSERT(mtu < asoc->smallest_mtu, + ("Currently only reducing association MTU %u supported (MTU %u)", + asoc->smallest_mtu, mtu)); + asoc->smallest_mtu = mtu; + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { + overhead = SCTP_MIN_OVERHEAD; + } else { +#if defined(__Userspace__) + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_CONN) { + overhead = sizeof(struct sctphdr); + } else { + overhead = SCTP_MIN_V4_OVERHEAD; + } +#else + overhead = SCTP_MIN_V4_OVERHEAD; +#endif + } + if (asoc->idata_supported) { + if (sctp_auth_is_required_chunk(SCTP_IDATA, asoc->peer_auth_chunks)) { + overhead += sctp_get_auth_chunk_len(asoc->peer_hmac_id); + } + } else { + if (sctp_auth_is_required_chunk(SCTP_DATA, asoc->peer_auth_chunks)) { + overhead += sctp_get_auth_chunk_len(asoc->peer_hmac_id); + } } - TAILQ_FOREACH(chk, &stcb->asoc.send_queue, sctp_next) { - if ((chk->send_size + overhead) > nxtsz) { + KASSERT(overhead % 4 == 0, + ("overhead (%u) not a multiple of 4", overhead)); + TAILQ_FOREACH(chk, &asoc->send_queue, sctp_next) { + if (((uint32_t)chk->send_size + overhead) > mtu) { chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; } } - TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { - if ((chk->send_size + overhead) > nxtsz) { - /* - * For this guy we also mark for immediate resend - * since we sent to big of chunk - */ + TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { + if (((uint32_t)chk->send_size + overhead) > mtu) { chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; - if (chk->sent < SCTP_DATAGRAM_RESEND) { + if (resend && chk->sent < SCTP_DATAGRAM_RESEND) { + /* + * If requested, mark the chunk for immediate + * resend, since we sent it being too big. + */ sctp_flight_size_decrease(chk); sctp_total_flight_decrease(stcb, chk); chk->sent = SCTP_DATAGRAM_RESEND; - sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); + sctp_ucount_incr(asoc->sent_queue_retran_cnt); chk->rec.data.doing_fast_retransmit = 0; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FLIGHT_LOGGING_ENABLE) { sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PMTU, - chk->whoTo->flight_size, - chk->book_size, - (uintptr_t)chk->whoTo, - chk->rec.data.TSN_seq); + chk->whoTo->flight_size, + chk->book_size, + (uint32_t)(uintptr_t)chk->whoTo, + chk->rec.data.tsn); + } + /* Clear any time, so NO RTT is being done. */ + if (chk->do_rtt == 1) { + chk->do_rtt = 0; + chk->whoTo->rto_needed = 1; } - /* Clear any time so NO RTT is being done */ - chk->do_rtt = 0; } } } @@ -314,160 +276,52 @@ sctp_pathmtu_adjustment(struct sctp_tcb *stcb, uint16_t nxtsz) #ifdef INET #if !defined(__Userspace__) -#if defined(__Panda__) || defined(__Windows__) -void -#else -static void -#endif -sctp_notify_mbuf(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - struct sctp_nets *net, - struct ip *ip, - struct sctphdr *sh) -{ - struct icmp *icmph; - int totsz, tmr_stopped = 0; - uint16_t nxtsz; - - /* protection */ - if ((inp == NULL) || (stcb == NULL) || (net == NULL) || - (ip == NULL) || (sh == NULL)) { - if (stcb != NULL) { - SCTP_TCB_UNLOCK(stcb); - } - return; - } - /* First job is to verify the vtag matches what I would send */ - if (ntohl(sh->v_tag) != (stcb->asoc.peer_vtag)) { - SCTP_TCB_UNLOCK(stcb); - return; - } - icmph = (struct icmp *)((caddr_t)ip - (sizeof(struct icmp) - - sizeof(struct ip))); - if (icmph->icmp_type != ICMP_UNREACH) { - /* We only care about unreachable */ - SCTP_TCB_UNLOCK(stcb); - return; - } - if (icmph->icmp_code != ICMP_UNREACH_NEEDFRAG) { - /* not a unreachable message due to frag. */ - SCTP_TCB_UNLOCK(stcb); - return; - } -#if defined(__FreeBSD__) && __FreeBSD_version >= 1000000 - totsz = ntohs(ip->ip_len); -#else - totsz = ip->ip_len; -#endif - - nxtsz = ntohs(icmph->icmp_nextmtu); - if (nxtsz == 0) { - /* - * old type router that does not tell us what the next size - * mtu is. Rats we will have to guess (in a educated fashion - * of course) - */ - nxtsz = sctp_get_prev_mtu(totsz); - } - /* Stop any PMTU timer */ - if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { - tmr_stopped = 1; - sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_1); - } - /* Adjust destination size limit */ - if (net->mtu > nxtsz) { - net->mtu = nxtsz; - if (net->port) { - net->mtu -= sizeof(struct udphdr); - } - } - /* now what about the ep? */ - if (stcb->asoc.smallest_mtu > nxtsz) { - sctp_pathmtu_adjustment(stcb, nxtsz); - } - if (tmr_stopped) - sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net); - - SCTP_TCB_UNLOCK(stcb); -} - void sctp_notify(struct sctp_inpcb *inp, - struct ip *ip, - struct sctphdr *sh, - struct sockaddr *to, - struct sctp_tcb *stcb, - struct sctp_nets *net) + struct sctp_tcb *stcb, + struct sctp_nets *net, + uint8_t icmp_type, + uint8_t icmp_code, + uint16_t ip_len, + uint32_t next_mtu) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; - #endif - struct icmp *icmph; - - /* protection */ - if ((inp == NULL) || (stcb == NULL) || (net == NULL) || - (sh == NULL) || (to == NULL)) { - if (stcb) - SCTP_TCB_UNLOCK(stcb); - return; - } - /* First job is to verify the vtag matches what I would send */ - if (ntohl(sh->v_tag) != (stcb->asoc.peer_vtag)) { - SCTP_TCB_UNLOCK(stcb); - return; - } + int timer_stopped; - icmph = (struct icmp *)((caddr_t)ip - (sizeof(struct icmp) - - sizeof(struct ip))); - if (icmph->icmp_type != ICMP_UNREACH) { + if (icmp_type != ICMP_UNREACH) { /* We only care about unreachable */ SCTP_TCB_UNLOCK(stcb); return; } - if ((icmph->icmp_code == ICMP_UNREACH_NET) || - (icmph->icmp_code == ICMP_UNREACH_HOST) || - (icmph->icmp_code == ICMP_UNREACH_NET_UNKNOWN) || - (icmph->icmp_code == ICMP_UNREACH_HOST_UNKNOWN) || - (icmph->icmp_code == ICMP_UNREACH_ISOLATED) || - (icmph->icmp_code == ICMP_UNREACH_NET_PROHIB) || - (icmph->icmp_code == ICMP_UNREACH_HOST_PROHIB) || -#if defined(__Panda__) - (icmph->icmp_code == ICMP_UNREACH_ADMIN)) { -#elif defined(__Userspace_os_NetBSD) - (icmph->icmp_code == ICMP_UNREACH_ADMIN_PROHIBIT)) { + if ((icmp_code == ICMP_UNREACH_NET) || + (icmp_code == ICMP_UNREACH_HOST) || + (icmp_code == ICMP_UNREACH_NET_UNKNOWN) || + (icmp_code == ICMP_UNREACH_HOST_UNKNOWN) || + (icmp_code == ICMP_UNREACH_ISOLATED) || + (icmp_code == ICMP_UNREACH_NET_PROHIB) || + (icmp_code == ICMP_UNREACH_HOST_PROHIB) || +#if defined(__NetBSD__) + (icmp_code == ICMP_UNREACH_ADMIN_PROHIBIT)) { #else - (icmph->icmp_code == ICMP_UNREACH_FILTER_PROHIB)) { + (icmp_code == ICMP_UNREACH_FILTER_PROHIB)) { #endif - - /* - * Hmm reachablity problems we must examine closely. If its - * not reachable, we may have lost a network. Or if there is - * NO protocol at the other end named SCTP. well we consider - * it a OOTB abort. - */ + /* Mark the net unreachable. */ if (net->dest_state & SCTP_ADDR_REACHABLE) { - /* Ok that destination is NOT reachable */ + /* OK, that destination is NOT reachable. */ net->dest_state &= ~SCTP_ADDR_REACHABLE; net->dest_state &= ~SCTP_ADDR_PF; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_DOWN, - stcb, 0, - (void *)net, SCTP_SO_NOT_LOCKED); + stcb, 0, + (void *)net, SCTP_SO_NOT_LOCKED); } SCTP_TCB_UNLOCK(stcb); - } else if ((icmph->icmp_code == ICMP_UNREACH_PROTOCOL) || - (icmph->icmp_code == ICMP_UNREACH_PORT)) { - /* - * Here the peer is either playing tricks on us, - * including an address that belongs to someone who - * does not support SCTP OR was a userland - * implementation that shutdown and now is dead. In - * either case treat it like a OOTB abort with no - * TCB - */ - sctp_abort_notification(stcb, 1, 0, NULL, SCTP_SO_NOT_LOCKED); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + } else if ((icmp_code == ICMP_UNREACH_PROTOCOL) || + (icmp_code == ICMP_UNREACH_PORT)) { + /* Treat it like an ABORT. */ + sctp_abort_notification(stcb, true, false, 0, NULL, SCTP_SO_NOT_LOCKED); +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -475,99 +329,254 @@ sctp_notify(struct sctp_inpcb *inp, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_2); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_2); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); /* SCTP_TCB_UNLOCK(stcb); MT: I think this is not needed.*/ #endif /* no need to unlock here, since the TCB is gone */ + } else if (icmp_code == ICMP_UNREACH_NEEDFRAG) { + if (net->dest_state & SCTP_ADDR_NO_PMTUD) { + SCTP_TCB_UNLOCK(stcb); + return; + } + /* Find the next (smaller) MTU */ + if (next_mtu == 0) { + /* + * Old type router that does not tell us what the next + * MTU is. + * Rats we will have to guess (in a educated fashion + * of course). + */ + next_mtu = sctp_get_prev_mtu(ip_len); + } + /* Stop the PMTU timer. */ + if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { + timer_stopped = 1; + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_1); + } else { + timer_stopped = 0; + } + /* Update the path MTU. */ + if (net->port) { + next_mtu -= sizeof(struct udphdr); + } + if (net->mtu > next_mtu) { + net->mtu = next_mtu; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (net->port) { + sctp_hc_set_mtu(&net->ro._l_addr, inp->fibnum, next_mtu + sizeof(struct udphdr)); + } else { + sctp_hc_set_mtu(&net->ro._l_addr, inp->fibnum, next_mtu); + } +#endif + } + /* Update the association MTU */ + if (stcb->asoc.smallest_mtu > next_mtu) { + sctp_pathmtu_adjustment(stcb, next_mtu, true); + } + /* Finally, start the PMTU timer if it was running before. */ + if (timer_stopped) { + sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net); + } + SCTP_TCB_UNLOCK(stcb); } else { SCTP_TCB_UNLOCK(stcb); } } #endif -#endif -#ifdef INET -#if !defined(__Panda__) && !defined(__Userspace__) -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) +#if defined(__FreeBSD__) +void sctp_ctlinput(struct icmp *icmp) +{ + struct ip *inner_ip, *outer_ip; + struct sctphdr *sh; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; + struct sctp_init_chunk *ch; + struct sockaddr_in src, dst; + + if (icmp_errmap(icmp) == 0) + return; + + outer_ip = (struct ip *)((caddr_t)icmp - sizeof(struct ip)); + inner_ip = &icmp->icmp_ip; + sh = (struct sctphdr *)((caddr_t)inner_ip + (inner_ip->ip_hl << 2)); + memset(&src, 0, sizeof(struct sockaddr_in)); + src.sin_family = AF_INET; + src.sin_len = sizeof(struct sockaddr_in); + src.sin_port = sh->src_port; + src.sin_addr = inner_ip->ip_src; + memset(&dst, 0, sizeof(struct sockaddr_in)); + dst.sin_family = AF_INET; + dst.sin_len = sizeof(struct sockaddr_in); + dst.sin_port = sh->dest_port; + dst.sin_addr = inner_ip->ip_dst; + /* + * 'dst' holds the dest of the packet that failed to be sent. + * 'src' holds our local endpoint address. Thus we reverse + * the dst and the src in the lookup. + */ + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, + SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the verification tag */ + if (ntohl(sh->v_tag) != 0) { + /* + * This must be the verification tag used for + * sending out packets. We don't consider + * packets reflecting the verification tag. + */ + if (ntohl(sh->v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + if (ntohs(outer_ip->ip_len) >= + sizeof(struct ip) + + 8 + (inner_ip->ip_hl << 2) + 20) { + /* + * In this case we can check if we + * got an INIT chunk and if the + * initiate tag matches. + */ + ch = (struct sctp_init_chunk *)(sh + 1); + if ((ch->ch.chunk_type != SCTP_INITIATION) || + (ntohl(ch->init.initiate_tag) != stcb->asoc.my_vtag)) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + SCTP_TCB_UNLOCK(stcb); + return; + } + } + sctp_notify(inp, stcb, net, + icmp->icmp_type, + icmp->icmp_code, + ntohs(inner_ip->ip_len), + (uint32_t)ntohs(icmp->icmp_nextmtu)); + } else { + if ((stcb == NULL) && (inp != NULL)) { + /* reduce ref-count */ + SCTP_INP_WLOCK(inp); + SCTP_INP_DECR_REF(inp); + SCTP_INP_WUNLOCK(inp); + } + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } + } +} +#else void +#if defined(__APPLE__) && !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) && !defined(APPLE_ELCAPITAN) +sctp_ctlinput(int cmd, struct sockaddr *sa, void *vip, struct ifnet *ifp SCTP_UNUSED) #else -void * +sctp_ctlinput(int cmd, struct sockaddr *sa, void *vip) #endif -sctp_ctlinput(cmd, sa, vip) - int cmd; - struct sockaddr *sa; - void *vip; { - struct ip *ip = vip; + struct ip *inner_ip; struct sctphdr *sh; - uint32_t vrf_id; - /* FIX, for non-bsd is this right? */ - vrf_id = SCTP_DEFAULT_VRFID; + struct icmp *icmp; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; + struct sockaddr_in src, dst; + +#if !defined(__FreeBSD__) && !defined(__Userspace__) if (sa->sa_family != AF_INET || ((struct sockaddr_in *)sa)->sin_addr.s_addr == INADDR_ANY) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) return; -#else - return (NULL); -#endif } +#endif if (PRC_IS_REDIRECT(cmd)) { - ip = 0; + vip = NULL; } else if ((unsigned)cmd >= PRC_NCMDS || inetctlerrmap[cmd] == 0) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) return; -#else - return (NULL); -#endif } - if (ip) { - struct sctp_inpcb *inp = NULL; - struct sctp_tcb *stcb = NULL; - struct sctp_nets *net = NULL; - struct sockaddr_in to, from; - - sh = (struct sctphdr *)((caddr_t)ip + (ip->ip_hl << 2)); - bzero(&to, sizeof(to)); - bzero(&from, sizeof(from)); - from.sin_family = to.sin_family = AF_INET; + if (vip != NULL) { + inner_ip = (struct ip *)vip; + icmp = (struct icmp *)((caddr_t)inner_ip - + (sizeof(struct icmp) - sizeof(struct ip))); + sh = (struct sctphdr *)((caddr_t)inner_ip + (inner_ip->ip_hl << 2)); + memset(&src, 0, sizeof(struct sockaddr_in)); + src.sin_family = AF_INET; #ifdef HAVE_SIN_LEN - from.sin_len = to.sin_len = sizeof(to); + src.sin_len = sizeof(struct sockaddr_in); #endif - from.sin_port = sh->src_port; - from.sin_addr = ip->ip_src; - to.sin_port = sh->dest_port; - to.sin_addr = ip->ip_dst; - + src.sin_port = sh->src_port; + src.sin_addr = inner_ip->ip_src; + memset(&dst, 0, sizeof(struct sockaddr_in)); + dst.sin_family = AF_INET; +#ifdef HAVE_SIN_LEN + dst.sin_len = sizeof(struct sockaddr_in); +#endif + dst.sin_port = sh->dest_port; + dst.sin_addr = inner_ip->ip_dst; /* - * 'to' holds the dest of the packet that failed to be sent. - * 'from' holds our local endpoint address. Thus we reverse - * the to and the from in the lookup. + * 'dst' holds the dest of the packet that failed to be sent. + * 'src' holds our local endpoint address. Thus we reverse + * the dst and the src in the lookup. */ - stcb = sctp_findassociation_addr_sa((struct sockaddr *)&to, - (struct sockaddr *)&from, - &inp, &net, 1, vrf_id); - if (stcb != NULL && inp && (inp->sctp_socket != NULL)) { - if (cmd != PRC_MSGSIZE) { - sctp_notify(inp, ip, sh, - (struct sockaddr *)&to, stcb, - net); + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, + SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the verification tag */ + if (ntohl(sh->v_tag) != 0) { + /* + * This must be the verification tag used for + * sending out packets. We don't consider + * packets reflecting the verification tag. + */ + if (ntohl(sh->v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } } else { - /* handle possible ICMP size messages */ - sctp_notify_mbuf(inp, stcb, net, ip, sh); + SCTP_TCB_UNLOCK(stcb); + return; } - } else { -#if defined(__FreeBSD__) && __FreeBSD_version < 500000 - /* - * XXX must be fixed for 5.x and higher, leave for - * 4.x - */ - if (PRC_IS_REDIRECT(cmd) && inp) { - in_rtchange((struct inpcb *)inp, - inetctlerrmap[cmd]); + sctp_notify(inp, stcb, net, + icmp->icmp_type, + icmp->icmp_code, + inner_ip->ip_len, + (uint32_t)ntohs(icmp->icmp_nextmtu)); +#if defined(__Userspace__) + if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + struct socket *upcall_socket; + + upcall_socket = stcb->sctp_socket; + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + if ((upcall_socket->so_upcall != NULL) && + (upcall_socket->so_error != 0)) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); } #endif + } else { if ((stcb == NULL) && (inp != NULL)) { /* reduce ref-count */ SCTP_INP_WLOCK(inp); @@ -579,16 +588,13 @@ sctp_ctlinput(cmd, sa, vip) } } } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) return; -#else - return (NULL); -#endif } #endif #endif +#endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) static int sctp_getcred(SYSCTL_HANDLER_ARGS) { @@ -603,14 +609,8 @@ sctp_getcred(SYSCTL_HANDLER_ARGS) /* FIX, for non-bsd is this right? */ vrf_id = SCTP_DEFAULT_VRFID; -#if __FreeBSD_version > 602000 error = priv_check(req->td, PRIV_NETINET_GETCRED); -#elif __FreeBSD_version >= 500000 - error = suser(req->td); -#else - error = suser(req->p); -#endif if (error) return (error); @@ -655,27 +655,30 @@ sctp_getcred(SYSCTL_HANDLER_ARGS) return (error); } -SYSCTL_PROC(_net_inet_sctp, OID_AUTO, getcred, CTLTYPE_OPAQUE | CTLFLAG_RW, - 0, 0, sctp_getcred, "S,ucred", "Get the ucred of a SCTP connection"); -#endif /* #if defined(__FreeBSD__) */ - +SYSCTL_PROC(_net_inet_sctp, OID_AUTO, getcred, + CTLTYPE_OPAQUE | CTLFLAG_RW | CTLFLAG_NEEDGIANT, + 0, 0, sctp_getcred, "S,ucred", + "Get the ucred of a SCTP connection"); +#endif #ifdef INET -#if defined(__Panda__) || defined(__Windows__) || defined(__Userspace__) +#if defined(_WIN32) || defined(__Userspace__) int -#elif defined(__FreeBSD__) && __FreeBSD_version > 690000 +#elif defined(__FreeBSD__) static void #else static int #endif sctp_abort(struct socket *so) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif struct sctp_inpcb *inp; - uint32_t flags; inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { -#if defined(__FreeBSD__) && __FreeBSD_version > 690000 +#if defined(__FreeBSD__) && !defined(__Userspace__) return; #else SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -683,26 +686,29 @@ sctp_abort(struct socket *so) #endif } - sctp_must_try_again: - flags = inp->sctp_flags; + SCTP_INP_WLOCK(inp); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 17); #endif - if (((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && - (atomic_cmpset_int(&inp->sctp_flags, flags, (flags | SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP)))) { + if (((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0)) { + inp->sctp_flags |= SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP; #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 16); #endif + SCTP_INP_WUNLOCK(inp); sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, - SCTP_CALLED_AFTER_CMPSET_OFCLOSE); + SCTP_CALLED_AFTER_CMPSET_OFCLOSE); SOCK_LOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + KASSERT(!SOLISTENING(so), + ("sctp_abort: called on listening socket %p", so)); +#endif SCTP_SB_CLEAR(so->so_snd); - /* same for the rcv ones, they are only - * here for the accounting/select. - */ SCTP_SB_CLEAR(so->so_rcv); - -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) so->so_usecount--; #else /* Now null out the reference, we are completely detached. */ @@ -710,28 +716,25 @@ sctp_abort(struct socket *so) #endif SOCK_UNLOCK(so); } else { - flags = inp->sctp_flags; - if ((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { - goto sctp_must_try_again; - } + SCTP_INP_WUNLOCK(inp); } -#if defined(__FreeBSD__) && __FreeBSD_version > 690000 - return; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); #else return (0); #endif } -#if defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int #else static int #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -sctp_attach(struct socket *so, int proto SCTP_UNUSED, struct thread *p SCTP_UNUSED) -#elif defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) sctp_attach(struct socket *so, int proto SCTP_UNUSED, uint32_t vrf_id) -#elif defined(__Windows__) +#elif defined(__FreeBSD__) +sctp_attach(struct socket *so, int proto SCTP_UNUSED, struct thread *p SCTP_UNUSED) +#elif defined(_WIN32) sctp_attach(struct socket *so, int proto SCTP_UNUSED, PKTHREAD p SCTP_UNUSED) #else sctp_attach(struct socket *so, int proto SCTP_UNUSED, struct proc *p SCTP_UNUSED) @@ -740,15 +743,12 @@ sctp_attach(struct socket *so, int proto SCTP_UNUSED, struct proc *p SCTP_UNUSED struct sctp_inpcb *inp; struct inpcb *ip_inp; int error; -#if !defined(__Panda__) && !defined(__Userspace__) +#if !defined(__Userspace__) uint32_t vrf_id = SCTP_DEFAULT_VRFID; #endif -#ifdef IPSEC - uint32_t flags; -#endif inp = (struct sctp_inpcb *)so->so_pcb; - if (inp != 0) { + if (inp != NULL) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } @@ -768,51 +768,22 @@ sctp_attach(struct socket *so, int proto SCTP_UNUSED, struct proc *p SCTP_UNUSED ip_inp = &inp->ip_inp.inp; ip_inp->inp_vflag |= INP_IPV4; ip_inp->inp_ip_ttl = MODULE_GLOBAL(ip_defttl); -#ifdef IPSEC -#if !(defined(__APPLE__)) - error = ipsec_init_policy(so, &ip_inp->inp_sp); -#ifdef SCTP_LOG_CLOSING - sctp_log_closing(inp, NULL, 17); -#endif - if (error != 0) { - try_again: - flags = inp->sctp_flags; - if (((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && - (atomic_cmpset_int(&inp->sctp_flags, flags, (flags | SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP)))) { -#ifdef SCTP_LOG_CLOSING - sctp_log_closing(inp, NULL, 15); -#endif - SCTP_INP_WUNLOCK(inp); - sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, - SCTP_CALLED_AFTER_CMPSET_OFCLOSE); - } else { - flags = inp->sctp_flags; - if ((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { - goto try_again; - } else { - SCTP_INP_WUNLOCK(inp); - } - } - return (error); - } -#endif -#endif /* IPSEC */ SCTP_INP_WUNLOCK(inp); return (0); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__Userspace__) +int +sctp_bind(struct socket *so, struct sockaddr *addr) { + void *p = NULL; +#elif defined(__FreeBSD__) static int sctp_bind(struct socket *so, struct sockaddr *addr, struct thread *p) { -#elif defined(__FreeBSD__) || defined(__APPLE__) +#elif defined(__APPLE__) static int sctp_bind(struct socket *so, struct sockaddr *addr, struct proc *p) { -#elif defined(__Panda__) || defined(__Userspace__) -int -sctp_bind(struct socket *so, struct sockaddr *addr) { - void *p = NULL; -#elif defined(__Windows__) +#elif defined(_WIN32) static int sctp_bind(struct socket *so, struct sockaddr *addr, PKTHREAD p) { #else @@ -904,12 +875,14 @@ sctpconn_bind(struct socket *so, struct sockaddr *addr) } #endif -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) void sctp_close(struct socket *so) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif struct sctp_inpcb *inp; - uint32_t flags; inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) @@ -918,29 +891,33 @@ sctp_close(struct socket *so) /* Inform all the lower layer assoc that we * are done. */ - sctp_must_try_again: - flags = inp->sctp_flags; + SCTP_INP_WLOCK(inp); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 17); #endif - if (((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && - (atomic_cmpset_int(&inp->sctp_flags, flags, (flags | SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP)))) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { + inp->sctp_flags |= SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP; #if defined(__Userspace__) if (((so->so_options & SCTP_SO_LINGER) && (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #else if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #endif #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 13); #endif + SCTP_INP_WUNLOCK(inp); sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, SCTP_CALLED_AFTER_CMPSET_OFCLOSE); } else { #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 14); #endif + SCTP_INP_WUNLOCK(inp); sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_GRACEFUL_CLOSE, SCTP_CALLED_AFTER_CMPSET_OFCLOSE); } @@ -948,29 +925,28 @@ sctp_close(struct socket *so) * the state of the SCTP association. */ SOCK_LOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (!SOLISTENING(so)) { + SCTP_SB_CLEAR(so->so_snd); + SCTP_SB_CLEAR(so->so_rcv); + } +#else SCTP_SB_CLEAR(so->so_snd); - /* same for the rcv ones, they are only - * here for the accounting/select. - */ SCTP_SB_CLEAR(so->so_rcv); - -#if !defined(__APPLE__) +#endif +#if !(defined(__APPLE__) && !defined(__Userspace__)) /* Now null out the reference, we are completely detached. */ so->so_pcb = NULL; #endif SOCK_UNLOCK(so); } else { - flags = inp->sctp_flags; - if ((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { - goto sctp_must_try_again; - } + SCTP_INP_WUNLOCK(inp); } - return; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif } - #else - - int sctp_detach(struct socket *so) { @@ -979,7 +955,7 @@ sctp_detach(struct socket *so) inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { -#if defined(__FreeBSD__) && __FreeBSD_version > 690000 +#if defined(__FreeBSD__) && !defined(__Userspace__) return; #else SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -995,10 +971,10 @@ sctp_detach(struct socket *so) (atomic_cmpset_int(&inp->sctp_flags, flags, (flags | SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP)))) { #if defined(__Userspace__) if (((so->so_options & SCTP_SO_LINGER) && (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #else if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #endif #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 13); @@ -1020,7 +996,7 @@ sctp_detach(struct socket *so) * here for the accounting/select. */ SCTP_SB_CLEAR(so->so_rcv); -#if !defined(__APPLE__) +#if !(defined(__APPLE__) && !defined(__Userspace__)) /* Now disconnect */ so->so_pcb = NULL; #endif @@ -1030,7 +1006,7 @@ sctp_detach(struct socket *so) goto sctp_must_try_again; } } -#if defined(__FreeBSD__) && __FreeBSD_version > 690000 +#if defined(__FreeBSD__) && !defined(__Userspace__) return; #else return (0); @@ -1041,9 +1017,9 @@ sctp_detach(struct socket *so) #if defined(__Userspace__) /* __Userspace__ is not calling sctp_sendm */ #endif -#if !(defined(__Panda__) || defined(__Windows__)) +#if !(defined(_WIN32) && !defined(__Userspace__)) int -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *p); @@ -1052,9 +1028,8 @@ sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct proc *p); #endif - int -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *p) { @@ -1081,34 +1056,33 @@ sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) || (inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE))) { goto connected_type; - } else if (addr == NULL) { + } + + error = 0; + if (addr == NULL) { SCTP_LTRACE_ERR_RET_PKT(m, inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EDESTADDRREQ); error = EDESTADDRREQ; - sctp_m_freem(m); - if (control) { - sctp_m_freem(control); - control = NULL; - } - return (error); + } else if (addr->sa_family != AF_INET) { + SCTP_LTRACE_ERR_RET_PKT(m, inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EAFNOSUPPORT); + error = EAFNOSUPPORT; +#if defined(HAVE_SA_LEN) + } else if (addr->sa_len != sizeof(struct sockaddr_in)) { + SCTP_LTRACE_ERR_RET_PKT(m, inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; +#endif } -#ifdef INET6 - if (addr->sa_family != AF_INET) { - /* must be a v4 address! */ - SCTP_LTRACE_ERR_RET_PKT(m, inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EDESTADDRREQ); + if (error != 0) { sctp_m_freem(m); if (control) { sctp_m_freem(control); control = NULL; } - error = EDESTADDRREQ; return (error); } -#endif /* INET6 */ connected_type: /* now what about control */ if (control) { if (inp->control) { - SCTP_PRINTF("huh? control set?\n"); sctp_m_freem(inp->control); inp->control = NULL; } @@ -1122,7 +1096,7 @@ sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, inp->pkt_last = inp->pkt = m; } if ( -#if defined(__FreeBSD__) || defined(__APPLE__) +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) /* FreeBSD uses a flag passed */ ((flags & PRUS_MORETOCOME) == 0) #else @@ -1138,9 +1112,18 @@ sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, * definitions) but this is not advisable. This code is used * by FreeBSD when sending a file with sendfile() though. */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif int ret; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif ret = sctp_output(inp, inp->pkt, addr, inp->control, p, flags); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif inp->pkt = NULL; inp->control = NULL; return (ret); @@ -1168,6 +1151,9 @@ sctp_disconnect(struct socket *so) SCTP_INP_RUNLOCK(inp); return (0); } else { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif struct sctp_association *asoc; struct sctp_tcb *stcb; @@ -1185,63 +1171,54 @@ sctp_disconnect(struct socket *so) SCTP_INP_RUNLOCK(inp); return (0); } +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif #if defined(__Userspace__) - if (((so->so_options & SCTP_SO_LINGER) && - (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + if (((so->so_options & SCTP_SO_LINGER) && (so->so_linger == 0)) || + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #else - if (((so->so_options & SO_LINGER) && - (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) || + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #endif - if (SCTP_GET_STATE(asoc) != - SCTP_STATE_COOKIE_WAIT) { + if (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) { /* Left with Data unread */ - struct mbuf *err; - - err = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), 0, M_NOWAIT, 1, MT_DATA); - if (err) { - /* - * Fill in the user - * initiated abort - */ - struct sctp_paramhdr *ph; - - ph = mtod(err, struct sctp_paramhdr *); - SCTP_BUF_LEN(err) = sizeof(struct sctp_paramhdr); - ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT); - ph->param_length = htons(SCTP_BUF_LEN(err)); - } - sctp_send_abort_tcb(stcb, err, SCTP_SO_LOCKED); + struct mbuf *op_err; + + op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); + sctp_send_abort_tcb(stcb, op_err, SCTP_SO_LOCKED); SCTP_STAT_INCR_COUNTER32(sctps_aborted); } SCTP_INP_RUNLOCK(inp); - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_3); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_3); /* No unlock tcb assoc is gone */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif return (0); } if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && (asoc->stream_queue_cnt == 0)) { /* there is nothing queued to send, so done */ - if (asoc->locked_on_sending) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { goto abort_anyway; } - if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) && - (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) { /* only send SHUTDOWN 1st time thru */ struct sctp_nets *netp; - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); sctp_stop_timers_for_shutdown(stcb); if (stcb->asoc.alternate) { netp = stcb->asoc.alternate; @@ -1250,9 +1227,9 @@ sctp_disconnect(struct socket *so) } sctp_send_shutdown(stcb,netp); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, - stcb->sctp_ep, stcb, netp); + stcb->sctp_ep, stcb, netp); sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, netp); + stcb->sctp_ep, stcb, NULL); sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_LOCKED); } } else { @@ -1266,27 +1243,10 @@ sctp_disconnect(struct socket *so) * we will allow user data to be sent first * and move to SHUTDOWN-PENDING */ - struct sctp_nets *netp; - if (stcb->asoc.alternate) { - netp = stcb->asoc.alternate; - } else { - netp = stcb->asoc.primary_destination; - } - - asoc->state |= SCTP_STATE_SHUTDOWN_PENDING; - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - netp); - if (asoc->locked_on_sending) { - /* Locked to send out the data */ - struct sctp_stream_queue_pending *sp; - sp = TAILQ_LAST(&asoc->locked_on_sending->outqueue, sctp_streamhead); - if (sp == NULL) { - SCTP_PRINTF("Error, sp is NULL, locked on sending is non-null strm:%d\n", - asoc->locked_on_sending->stream_no); - } else { - if ((sp->length == 0) && (sp->msg_is_complete == 0)) - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - } + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL); + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); } if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && @@ -1294,21 +1254,28 @@ sctp_disconnect(struct socket *so) struct mbuf *op_err; abort_anyway: op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_USRREQ+SCTP_LOC_4; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_USRREQ + SCTP_LOC_4; sctp_send_abort_tcb(stcb, op_err, SCTP_SO_LOCKED); SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } SCTP_INP_RUNLOCK(inp); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_5); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_5); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif return (0); } else { sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); } } soisdisconnecting(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif SCTP_TCB_UNLOCK(stcb); SCTP_INP_RUNLOCK(inp); return (0); @@ -1322,11 +1289,11 @@ sctp_disconnect(struct socket *so) } } -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) int sctp_flush(struct socket *so, int how) { - /* + /* * We will just clear out the values and let * subsequent close clear out the data, if any. * Note if the user did a shutdown(SHUT_RD) they @@ -1347,7 +1314,7 @@ sctp_flush(struct socket *so, int how) return (0); } SCTP_INP_RUNLOCK(inp); - if ((how == PRU_FLUSH_RD) || (how == PRU_FLUSH_RDWR)) { + if ((how == PRU_FLUSH_RD) || (how == PRU_FLUSH_RDWR)) { /* First make sure the sb will be happy, we don't * use these except maybe the count */ @@ -1356,18 +1323,25 @@ sctp_flush(struct socket *so, int how) inp->sctp_flags |= SCTP_PCB_FLAGS_SOCKET_CANT_READ; SCTP_INP_READ_UNLOCK(inp); SCTP_INP_WUNLOCK(inp); - so->so_rcv.sb_cc = 0; - so->so_rcv.sb_mbcnt = 0; - so->so_rcv.sb_mb = NULL; + SOCK_LOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + KASSERT(!SOLISTENING(so), + ("sctp_flush: called on listening socket %p", so)); +#endif + SCTP_SB_CLEAR(so->so_rcv); + SOCK_UNLOCK(so); } - if ((how == PRU_FLUSH_WR) || (how == PRU_FLUSH_RDWR)) { + if ((how == PRU_FLUSH_WR) || (how == PRU_FLUSH_RDWR)) { /* First make sure the sb will be happy, we don't * use these except maybe the count */ - so->so_snd.sb_cc = 0; - so->so_snd.sb_mbcnt = 0; - so->so_snd.sb_mb = NULL; - + SOCK_LOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + KASSERT(!SOLISTENING(so), + ("sctp_flush: called on listening socket %p", so)); +#endif + SCTP_SB_CLEAR(so->so_snd); + SOCK_UNLOCK(so); } return (0); } @@ -1388,25 +1362,31 @@ sctp_shutdown(struct socket *so) if (!((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { /* Restore the flags that the soshutdown took away. */ -#if (defined(__FreeBSD__) && __FreeBSD_version >= 502115) || defined(__Windows__) +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_state &= ~SBS_CANTRCVMORE; SOCKBUF_UNLOCK(&so->so_rcv); #else + SOCK_LOCK(so); so->so_state &= ~SS_CANTRCVMORE; + SOCK_UNLOCK(so); #endif /* This proc will wakeup for read and do nothing (I hope) */ SCTP_INP_RUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EOPNOTSUPP); return (EOPNOTSUPP); - } - /* - * Ok if we reach here its the TCP model and it is either a SHUT_WR - * or SHUT_RDWR. This means we put the shutdown flag against it. - */ - { + } else { + /* + * Ok, if we reach here its the TCP model and it is either + * a SHUT_WR or SHUT_RDWR. + * This means we put the shutdown flag against it. + */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif struct sctp_tcb *stcb; struct sctp_association *asoc; + struct sctp_nets *netp; if ((so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING|SS_ISDISCONNECTING)) == 0) { @@ -1418,7 +1398,7 @@ sctp_shutdown(struct socket *so) stcb = LIST_FIRST(&inp->sctp_asoc_list); if (stcb == NULL) { /* - * Ok we hit the case that the shutdown call was + * Ok, we hit the case that the shutdown call was * made after an abort or something. Nothing to do * now. */ @@ -1427,64 +1407,51 @@ sctp_shutdown(struct socket *so) } SCTP_TCB_LOCK(stcb); asoc = &stcb->asoc; - if (TAILQ_EMPTY(&asoc->send_queue) && + if (asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) { + SCTP_TCB_UNLOCK(stcb); + SCTP_INP_RUNLOCK(inp); + return (0); + } + if ((SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_ECHOED) && + (SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN)) { + /* If we are not in or before ESTABLISHED, there is + * no protocol action required. + */ + SCTP_TCB_UNLOCK(stcb); + SCTP_INP_RUNLOCK(inp); + return (0); + } +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif + if (stcb->asoc.alternate) { + netp = stcb->asoc.alternate; + } else { + netp = stcb->asoc.primary_destination; + } + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) && + TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && (asoc->stream_queue_cnt == 0)) { - if (asoc->locked_on_sending) { + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { goto abort_anyway; } /* there is nothing queued to send, so I'm done... */ - if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) { - /* only send SHUTDOWN the first time through */ - struct sctp_nets *netp; - - if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { - SCTP_STAT_DECR_GAUGE32(sctps_currestab); - } - SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT); - SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING); - sctp_stop_timers_for_shutdown(stcb); - if (stcb->asoc.alternate) { - netp = stcb->asoc.alternate; - } else { - netp = stcb->asoc.primary_destination; - } - sctp_send_shutdown(stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, - stcb->sctp_ep, stcb, netp); - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, - stcb->sctp_ep, stcb, netp); - sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_LOCKED); - } + SCTP_STAT_DECR_GAUGE32(sctps_currestab); + SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); + sctp_stop_timers_for_shutdown(stcb); + sctp_send_shutdown(stcb, netp); + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, + stcb->sctp_ep, stcb, netp); } else { /* - * we still got (or just got) data to send, so set - * SHUTDOWN_PENDING + * We still got (or just got) data to send, so set + * SHUTDOWN_PENDING. */ - struct sctp_nets *netp; - if (stcb->asoc.alternate) { - netp = stcb->asoc.alternate; - } else { - netp = stcb->asoc.primary_destination; - } - - asoc->state |= SCTP_STATE_SHUTDOWN_PENDING; - sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, - netp); - - if (asoc->locked_on_sending) { - /* Locked to send out the data */ - struct sctp_stream_queue_pending *sp; - sp = TAILQ_LAST(&asoc->locked_on_sending->outqueue, sctp_streamhead); - if (sp == NULL) { - SCTP_PRINTF("Error, sp is NULL, locked on sending is non-null strm:%d\n", - asoc->locked_on_sending->stream_no); - } else { - if ((sp->length == 0) && (sp-> msg_is_complete == 0)) { - asoc->state |= SCTP_STATE_PARTIAL_MSG_LEFT; - } - } + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); + if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete)(stcb, asoc)) { + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT); } if (TAILQ_EMPTY(&asoc->send_queue) && TAILQ_EMPTY(&asoc->sent_queue) && @@ -1492,19 +1459,26 @@ sctp_shutdown(struct socket *so) struct mbuf *op_err; abort_anyway: op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_USRREQ+SCTP_LOC_6; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_USRREQ + SCTP_LOC_6; + SCTP_INP_RUNLOCK(inp); sctp_abort_an_association(stcb->sctp_ep, stcb, - op_err, SCTP_SO_LOCKED); - goto skip_unlock; - } else { - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); + op_err, false, SCTP_SO_LOCKED); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif + return (0); } } + sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL); + /* XXX: Why do this in the case where we have still data queued? */ + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); SCTP_TCB_UNLOCK(stcb); + SCTP_INP_RUNLOCK(inp); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif + return (0); } - skip_unlock: - SCTP_INP_RUNLOCK(inp); - return (0); } /* @@ -1512,33 +1486,33 @@ sctp_shutdown(struct socket *so) * returns 0 on success, 1 on error */ static uint32_t -sctp_fill_user_address(struct sockaddr_storage *ss, struct sockaddr *sa) +sctp_fill_user_address(struct sockaddr *dst, struct sockaddr *src) { #ifdef INET6 #if defined(SCTP_EMBEDDED_V6_SCOPE) struct sockaddr_in6 lsa6; - sa = (struct sockaddr *)sctp_recover_scope((struct sockaddr_in6 *)sa, + src = (struct sockaddr *)sctp_recover_scope((struct sockaddr_in6 *)src, &lsa6); #endif #endif #ifdef HAVE_SA_LEN - memcpy(ss, sa, sa->sa_len); + memcpy(dst, src, src->sa_len); #else - switch (sa->sa_family) { + switch (src->sa_family) { #ifdef INET case AF_INET: - memcpy(ss, sa, sizeof(struct sockaddr_in)); + memcpy(dst, src, sizeof(struct sockaddr_in)); break; #endif #ifdef INET6 case AF_INET6: - memcpy(ss, sa, sizeof(struct sockaddr_in6)); + memcpy(dst, src, sizeof(struct sockaddr_in6)); break; #endif #if defined(__Userspace__) case AF_CONN: - memcpy(ss, sa, sizeof(struct sockaddr_conn)); + memcpy(dst, src, sizeof(struct sockaddr_conn)); break; #endif default: @@ -1549,17 +1523,12 @@ sctp_fill_user_address(struct sockaddr_storage *ss, struct sockaddr *sa) return (0); } - - -/* - * NOTE: assumes addr lock is held - */ static size_t sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - size_t limit, - struct sockaddr_storage *sas, - uint32_t vrf_id) + struct sctp_tcb *stcb, + size_t limit, + struct sockaddr *addr, + uint32_t vrf_id) { struct sctp_ifn *sctp_ifn; struct sctp_ifa *sctp_ifa; @@ -1576,8 +1545,9 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, #endif struct sctp_vrf *vrf; + SCTP_IPI_ADDR_LOCK_ASSERT(); actual = 0; - if (limit <= 0) + if (limit == 0) return (actual); if (stcb) { @@ -1664,7 +1634,7 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, * is one of those we must skip it. */ if (sctp_is_addr_restricted(stcb, - sctp_ifa)) { + sctp_ifa)) { continue; } } @@ -1677,12 +1647,12 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, sin = &sctp_ifa->address.sin; if (sin->sin_addr.s_addr == 0) { /* - * we skip unspecifed + * we skip unspecified * addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -1694,22 +1664,25 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, } #ifdef INET6 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { - in6_sin_2_v4mapsin6(sin, (struct sockaddr_in6 *)sas); - ((struct sockaddr_in6 *)sas)->sin6_port = inp->sctp_lport; - sas = (struct sockaddr_storage *)((caddr_t)sas + sizeof(struct sockaddr_in6)); + if (actual + sizeof(struct sockaddr_in6) > limit) { + return (actual); + } + in6_sin_2_v4mapsin6(sin, (struct sockaddr_in6 *)addr); + ((struct sockaddr_in6 *)addr)->sin6_port = inp->sctp_lport; + addr = (struct sockaddr *)((caddr_t)addr + sizeof(struct sockaddr_in6)); actual += sizeof(struct sockaddr_in6); } else { #endif - memcpy(sas, sin, sizeof(*sin)); - ((struct sockaddr_in *)sas)->sin_port = inp->sctp_lport; - sas = (struct sockaddr_storage *)((caddr_t)sas + sizeof(*sin)); - actual += sizeof(*sin); + if (actual + sizeof(struct sockaddr_in) > limit) { + return (actual); + } + memcpy(addr, sin, sizeof(struct sockaddr_in)); + ((struct sockaddr_in *)addr)->sin_port = inp->sctp_lport; + addr = (struct sockaddr *)((caddr_t)addr + sizeof(struct sockaddr_in)); + actual += sizeof(struct sockaddr_in); #ifdef INET6 } #endif - if (actual >= limit) { - return (actual); - } } else { continue; } @@ -1726,12 +1699,12 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, sin6 = &sctp_ifa->address.sin6; if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { /* - * we skip unspecifed + * we skip unspecified * addresses */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -1770,13 +1743,13 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr))) { continue; } - memcpy(sas, sin6, sizeof(*sin6)); - ((struct sockaddr_in6 *)sas)->sin6_port = inp->sctp_lport; - sas = (struct sockaddr_storage *)((caddr_t)sas + sizeof(*sin6)); - actual += sizeof(*sin6); - if (actual >= limit) { + if (actual + sizeof(struct sockaddr_in6) > limit) { return (actual); } + memcpy(addr, sin6, sizeof(struct sockaddr_in6)); + ((struct sockaddr_in6 *)addr)->sin6_port = inp->sctp_lport; + addr = (struct sockaddr *)((caddr_t)addr + sizeof(struct sockaddr_in6)); + actual += sizeof(struct sockaddr_in6); } else { continue; } @@ -1785,13 +1758,13 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, #if defined(__Userspace__) case AF_CONN: if (conn_addr_legal) { - memcpy(sas, &sctp_ifa->address.sconn, sizeof(struct sockaddr_conn)); - ((struct sockaddr_conn *)sas)->sconn_port = inp->sctp_lport; - sas = (struct sockaddr_storage *)((caddr_t)sas + sizeof(struct sockaddr_conn)); - actual += sizeof(struct sockaddr_conn); - if (actual >= limit) { + if (actual + sizeof(struct sockaddr_conn) > limit) { return (actual); } + memcpy(addr, &sctp_ifa->address.sconn, sizeof(struct sockaddr_conn)); + ((struct sockaddr_conn *)addr)->sconn_port = inp->sctp_lport; + addr = (struct sockaddr *)((caddr_t)addr + sizeof(struct sockaddr_conn)); + actual += sizeof(struct sockaddr_conn); } else { continue; } @@ -1804,9 +1777,7 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, } } else { struct sctp_laddr *laddr; -#ifndef HAVE_SA_LEN - uint32_t sa_len = 0; -#endif + size_t sa_len; LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { if (stcb) { @@ -1814,59 +1785,58 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, continue; } } - if (sctp_fill_user_address(sas, &laddr->ifa->address.sa)) - continue; +#ifdef HAVE_SA_LEN + sa_len = laddr->ifa->address.sa.sa_len; +#else switch (laddr->ifa->address.sa.sa_family) { #ifdef INET case AF_INET: - ((struct sockaddr_in *)sas)->sin_port = inp->sctp_lport; + sa_len = sizeof(struct sockaddr_in); break; #endif #ifdef INET6 case AF_INET6: - ((struct sockaddr_in6 *)sas)->sin6_port = inp->sctp_lport; + sa_len = sizeof(struct sockaddr_in6); break; #endif #if defined(__Userspace__) case AF_CONN: - ((struct sockaddr_conn *)sas)->sconn_port = inp->sctp_lport; + sa_len = sizeof(struct sockaddr_conn); break; #endif default: /* TSNH */ + sa_len = 0; break; } -#ifdef HAVE_SA_LEN - sas = (struct sockaddr_storage *)((caddr_t)sas + - laddr->ifa->address.sa.sa_len); - actual += laddr->ifa->address.sa.sa_len; -#else +#endif + if (actual + sa_len > limit) { + return (actual); + } + if (sctp_fill_user_address(addr, &laddr->ifa->address.sa)) + continue; switch (laddr->ifa->address.sa.sa_family) { #ifdef INET case AF_INET: - sa_len = sizeof(struct sockaddr_in); + ((struct sockaddr_in *)addr)->sin_port = inp->sctp_lport; break; #endif #ifdef INET6 case AF_INET6: - sa_len = sizeof(struct sockaddr_in6); + ((struct sockaddr_in6 *)addr)->sin6_port = inp->sctp_lport; break; #endif #if defined(__Userspace__) case AF_CONN: - sa_len = sizeof(struct sockaddr_conn); + ((struct sockaddr_conn *)addr)->sconn_port = inp->sctp_lport; break; #endif default: /* TSNH */ break; } - sas = (struct sockaddr_storage *)((caddr_t)sas + sa_len); + addr = (struct sockaddr *)((caddr_t)addr + sa_len); actual += sa_len; -#endif - if (actual >= limit) { - return (actual); - } } } return (actual); @@ -1876,9 +1846,9 @@ static size_t sctp_fill_up_addresses(struct sctp_inpcb *inp, struct sctp_tcb *stcb, size_t limit, - struct sockaddr_storage *sas) + struct sockaddr *addr) { - size_t size = 0; + size_t size; #ifdef SCTP_MVRF uint32_t id; #endif @@ -1890,40 +1860,40 @@ sctp_fill_up_addresses(struct sctp_inpcb *inp, * in more than one VRF. */ /* fill up addresses for all VRFs on the endpoint */ + size = 0; for (id = 0; (id < inp->num_vrfs) && (size < limit); id++) { - size += sctp_fill_up_addresses_vrf(inp, stcb, limit, sas, - inp->m_vrf_ids[id]); - sas = (struct sockaddr_storage *)((caddr_t)sas + size); + size += sctp_fill_up_addresses_vrf(inp, stcb, limit, addr, + inp->m_vrf_ids[id]); + addr = (struct sockaddr *)((caddr_t)addr + size); } #else /* fill up addresses for the endpoint's default vrf */ - size = sctp_fill_up_addresses_vrf(inp, stcb, limit, sas, - inp->def_vrf_id); + size = sctp_fill_up_addresses_vrf(inp, stcb, limit, addr, + inp->def_vrf_id); #endif SCTP_IPI_ADDR_RUNLOCK(); return (size); } -/* - * NOTE: assumes addr lock is held - */ -static int -sctp_count_max_addresses_vrf(struct sctp_inpcb *inp, uint32_t vrf_id) +static size_t +sctp_max_size_addresses_vrf(struct sctp_inpcb *inp, uint32_t vrf_id) { - int cnt = 0; - struct sctp_vrf *vrf = NULL; + struct sctp_vrf *vrf; + size_t size; /* - * In both sub-set bound an bound_all cases we return the MAXIMUM - * number of addresses that you COULD get. In reality the sub-set - * bound may have an exclusion list for a given TCB OR in the - * bound-all case a TCB may NOT include the loopback or other + * In both sub-set bound an bound_all cases we return the size of + * the maximum number of addresses that you could get. In reality + * the sub-set bound may have an exclusion list for a given TCB or + * in the bound-all case a TCB may NOT include the loopback or other * addresses as well. */ + SCTP_IPI_ADDR_LOCK_ASSERT(); vrf = sctp_find_vrf(vrf_id); if (vrf == NULL) { return (0); } + size = 0; if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { struct sctp_ifn *sctp_ifn; struct sctp_ifa *sctp_ifa; @@ -1936,22 +1906,22 @@ sctp_count_max_addresses_vrf(struct sctp_inpcb *inp, uint32_t vrf_id) case AF_INET: #ifdef INET6 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) - cnt += sizeof(struct sockaddr_in6); + size += sizeof(struct sockaddr_in6); else - cnt += sizeof(struct sockaddr_in); + size += sizeof(struct sockaddr_in); #else - cnt += sizeof(struct sockaddr_in); + size += sizeof(struct sockaddr_in); #endif break; #endif #ifdef INET6 case AF_INET6: - cnt += sizeof(struct sockaddr_in6); + size += sizeof(struct sockaddr_in6); break; #endif #if defined(__Userspace__) case AF_CONN: - cnt += sizeof(struct sockaddr_conn); + size += sizeof(struct sockaddr_conn); break; #endif default: @@ -1968,22 +1938,22 @@ sctp_count_max_addresses_vrf(struct sctp_inpcb *inp, uint32_t vrf_id) case AF_INET: #ifdef INET6 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) - cnt += sizeof(struct sockaddr_in6); + size += sizeof(struct sockaddr_in6); else - cnt += sizeof(struct sockaddr_in); + size += sizeof(struct sockaddr_in); #else - cnt += sizeof(struct sockaddr_in); + size += sizeof(struct sockaddr_in); #endif break; #endif #ifdef INET6 case AF_INET6: - cnt += sizeof(struct sockaddr_in6); + size += sizeof(struct sockaddr_in6); break; #endif #if defined(__Userspace__) case AF_CONN: - cnt += sizeof(struct sockaddr_conn); + size += sizeof(struct sockaddr_conn); break; #endif default: @@ -1991,13 +1961,13 @@ sctp_count_max_addresses_vrf(struct sctp_inpcb *inp, uint32_t vrf_id) } } } - return (cnt); + return (size); } -static int -sctp_count_max_addresses(struct sctp_inpcb *inp) +static size_t +sctp_max_size_addresses(struct sctp_inpcb *inp) { - int cnt = 0; + size_t size; #ifdef SCTP_MVRF int id; #endif @@ -2008,29 +1978,29 @@ sctp_count_max_addresses(struct sctp_inpcb *inp) * FIX ME: ?? this WILL count duplicate addresses if they appear * in more than one VRF. */ - /* count addresses for all VRFs on the endpoint */ + /* Maximum size of all addresses for all VRFs on the endpoint */ + size = 0; for (id = 0; id < inp->num_vrfs; id++) { - cnt += sctp_count_max_addresses_vrf(inp, inp->m_vrf_ids[id]); + size += sctp_max_size_addresses_vrf(inp, inp->m_vrf_ids[id]); } #else - /* count addresses for the endpoint's default VRF */ - cnt = sctp_count_max_addresses_vrf(inp, inp->def_vrf_id); + /* Maximum size of all addresses for the endpoint's default VRF */ + size = sctp_max_size_addresses_vrf(inp, inp->def_vrf_id); #endif SCTP_IPI_ADDR_RUNLOCK(); - return (cnt); + return (size); } static int sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, size_t optsize, void *p, int delay) { - int error = 0; + int error; int creat_lock_on = 0; struct sctp_tcb *stcb = NULL; struct sockaddr *sa; - int num_v6 = 0, num_v4 = 0, *totaddrp, totaddr; + unsigned int num_v6 = 0, num_v4 = 0, *totaddrp, totaddr; uint32_t vrf_id; - int bad_addresses = 0; sctp_assoc_t *a_id; SCTPDBG(SCTP_DEBUG_PCB1, "Connectx called\n"); @@ -2066,20 +2036,15 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, error = EFAULT; goto out_now; } - totaddrp = (int *)optval; + totaddrp = (unsigned int *)optval; totaddr = *totaddrp; sa = (struct sockaddr *)(totaddrp + 1); - stcb = sctp_connectx_helper_find(inp, sa, &totaddr, &num_v4, &num_v6, &error, (optsize - sizeof(int)), &bad_addresses); - if ((stcb != NULL) || bad_addresses) { + error = sctp_connectx_helper_find(inp, sa, totaddr, &num_v4, &num_v6, (unsigned int)(optsize - sizeof(int))); + if (error != 0) { /* Already have or am bring up an association */ SCTP_ASOC_CREATE_UNLOCK(inp); creat_lock_on = 0; - if (stcb) - SCTP_TCB_UNLOCK(stcb); - if (bad_addresses == 0) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EALREADY); - error = EALREADY; - } + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); goto out_now; } #ifdef INET6 @@ -2090,10 +2055,7 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, } if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && (num_v4 > 0)) { - struct in6pcb *inp6; - - inp6 = (struct in6pcb *)inp; - if (SCTP_IPV6_V6ONLY(inp6)) { + if (SCTP_IPV6_V6ONLY(inp)) { /* * if IPV6_V6ONLY flag, ignore connections destined * to a v4 addr or v4-mapped addr @@ -2104,8 +2066,7 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, } } #endif /* INET6 */ - if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == - SCTP_PCB_FLAGS_UNBOUND) { + if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { /* Bind a ephemeral port */ error = sctp_inpcb_bind(so, NULL, NULL, p); if (error) { @@ -2116,27 +2077,23 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, /* FIX ME: do we want to pass in a vrf on the connect call? */ vrf_id = inp->def_vrf_id; - /* We are GOOD to go */ - stcb = sctp_aloc_assoc(inp, sa, &error, 0, vrf_id, -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 - (struct thread *)p -#elif defined(__Windows__) - (PKTHREAD)p + stcb = sctp_aloc_assoc_connected(inp, sa, &error, 0, 0, vrf_id, + inp->sctp_ep.pre_open_stream_count, + inp->sctp_ep.port, +#if defined(__FreeBSD__) && !defined(__Userspace__) + (struct thread *)p, +#elif defined(_WIN32) && !defined(__Userspace__) + (PKTHREAD)p, #else - (struct proc *)p + (struct proc *)p, #endif - ); + SCTP_INITIALIZE_AUTH_PARAMS); if (stcb == NULL) { /* Gak! no memory */ goto out_now; } - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT); + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); /* move to second address */ switch (sa->sa_family) { #ifdef INET @@ -2157,15 +2114,11 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, sctp_connectx_helper_add(stcb, sa, (totaddr-1), &error); /* Fill in the return id */ if (error) { - (void)sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_6); goto out_now; } a_id = (sctp_assoc_t *)optval; *a_id = sctp_get_associd(stcb); - /* initialize authentication parameters for the assoc */ - sctp_initialize_auth_params(inp, stcb); - if (delay) { /* doing delayed connection */ stcb->asoc.delayed_connection = 1; @@ -2175,11 +2128,6 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); } SCTP_TCB_UNLOCK(stcb); - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } out_now: if (creat_lock_on) { SCTP_ASOC_CREATE_UNLOCK(inp); @@ -2195,20 +2143,19 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, stcb = LIST_FIRST(&inp->sctp_asoc_list); \ if (stcb) { \ SCTP_TCB_LOCK(stcb); \ - } \ + } \ SCTP_INP_RUNLOCK(inp); \ } else if (assoc_id > SCTP_ALL_ASSOC) { \ stcb = sctp_findassociation_ep_asocid(inp, assoc_id, 1); \ if (stcb == NULL) { \ - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); \ + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); \ error = ENOENT; \ break; \ } \ } else { \ stcb = NULL; \ - } \ - } - + } \ +} #define SCTP_CHECK_AND_CAST(destp, srcp, type, size) {\ if (size < sizeof(type)) { \ @@ -2218,9 +2165,9 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval, } else { \ destp = (type *)srcp; \ } \ - } +} -#if defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int #else static int @@ -2280,7 +2227,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, break; case SCTP_AUTOCLOSE: if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE)) - val = TICKS_TO_SEC(inp->sctp_ep.auto_close_time); + val = sctp_ticks_to_secs(inp->sctp_ep.auto_close_time); else val = 0; break; @@ -2356,6 +2303,38 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, *optsize = sizeof(uint32_t); break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + av->assoc_value = stcb->asoc.idata_supported; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { + SCTP_INP_RLOCK(inp); + if (inp->idata_supported) { + av->assoc_value = 1; + } else { + av->assoc_value = 0; + } + SCTP_INP_RUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + if (error == 0) { + *optsize = sizeof(struct sctp_assoc_value); + } + break; + } case SCTP_CMT_ON_OFF: { struct sctp_assoc_value *av; @@ -2368,7 +2347,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->sctp_cmt_on_off; SCTP_INP_RUNLOCK(inp); @@ -2394,7 +2374,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->sctp_ep.sctp_default_cc_module; SCTP_INP_RUNLOCK(inp); @@ -2439,7 +2420,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->sctp_ep.sctp_default_ss_module; SCTP_INP_RUNLOCK(inp); @@ -2512,8 +2494,15 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, uint32_t *value, cnt; SCTP_CHECK_AND_CAST(value, optval, uint32_t, *optsize); - cnt = 0; SCTP_INP_RLOCK(inp); + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { + /* Can't do this for a 1-1 socket */ + error = EINVAL; + SCTP_INP_RUNLOCK(inp); + break; + } + cnt = 0; LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { cnt++; } @@ -2525,15 +2514,28 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, case SCTP_GET_ASSOC_ID_LIST: { struct sctp_assoc_ids *ids; - unsigned int at, limit; + uint32_t at; + size_t limit; SCTP_CHECK_AND_CAST(ids, optval, struct sctp_assoc_ids, *optsize); - at = 0; - limit = (*optsize-sizeof(uint32_t))/ sizeof(sctp_assoc_t); SCTP_INP_RLOCK(inp); + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { + /* Can't do this for a 1-1 socket */ + error = EINVAL; + SCTP_INP_RUNLOCK(inp); + break; + } + at = 0; + limit = (*optsize - sizeof(uint32_t)) / sizeof(sctp_assoc_t); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { if (at < limit) { ids->gaids_assoc_id[at++] = sctp_get_associd(stcb); + if (at == 0) { + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + break; + } } else { error = EINVAL; SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); @@ -2560,7 +2562,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->sctp_context; SCTP_INP_RUNLOCK(inp); @@ -2594,6 +2597,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); } else { id->assoc_value = stcb->asoc.vrf_id; + SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_assoc_value); } break; @@ -2650,9 +2654,10 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sack->sack_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (sack->sack_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); - sack->sack_delay = TICKS_TO_MSEC(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV]); + sack->sack_delay = sctp_ticks_to_msecs(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV]); sack->sack_freq = inp->sctp_ep.sctp_sack_freq; SCTP_INP_RUNLOCK(inp); } else { @@ -2686,20 +2691,6 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } case SCTP_MAX_BURST: { -#if defined(__FreeBSD__) && __FreeBSD_version < 900000 - uint8_t *value; - - SCTP_CHECK_AND_CAST(value, optval, uint8_t, *optsize); - - SCTP_INP_RLOCK(inp); - if (inp->sctp_ep.max_burst < 256) { - *value = inp->sctp_ep.max_burst; - } else { - *value = 255; - } - SCTP_INP_RUNLOCK(inp); - *optsize = sizeof(uint8_t); -#else struct sctp_assoc_value *av; SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); @@ -2711,7 +2702,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->sctp_ep.max_burst; SCTP_INP_RUNLOCK(inp); @@ -2723,34 +2715,25 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, if (error == 0) { *optsize = sizeof(struct sctp_assoc_value); } -#endif break; } case SCTP_MAXSEG: { struct sctp_assoc_value *av; - int ovh; SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); SCTP_FIND_STCB(inp, stcb, av->assoc_id); if (stcb) { - av->assoc_value = sctp_get_frag_point(stcb, &stcb->asoc); + av->assoc_value = stcb->asoc.sctp_frag_point; SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - if (inp->sctp_frag_point >= SCTP_DEFAULT_MAXSEGMENT) - av->assoc_value = 0; - else - av->assoc_value = inp->sctp_frag_point - ovh; + av->assoc_value = inp->sctp_frag_point; SCTP_INP_RUNLOCK(inp); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -2837,7 +2820,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, SCTP_CHECK_AND_CAST(value, optval, uint32_t, *optsize); SCTP_INP_RLOCK(inp); - *value = sctp_count_max_addresses(inp); + *value = (uint32_t)sctp_max_size_addresses(inp); SCTP_INP_RUNLOCK(inp); *optsize = sizeof(uint32_t); break; @@ -2845,14 +2828,14 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, case SCTP_GET_REMOTE_ADDR_SIZE: { uint32_t *value; - size_t size; struct sctp_nets *net; + size_t size; SCTP_CHECK_AND_CAST(value, optval, uint32_t, *optsize); /* FIXME MT: change to sctp_assoc_value? */ - SCTP_FIND_STCB(inp, stcb, (sctp_assoc_t) *value); + SCTP_FIND_STCB(inp, stcb, (sctp_assoc_t)*value); - if (stcb) { + if (stcb != NULL) { size = 0; /* Count the sizes */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { @@ -2885,11 +2868,16 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } } SCTP_TCB_UNLOCK(stcb); - *value = (uint32_t) size; + *value = (uint32_t)size; *optsize = sizeof(uint32_t); } else { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOTCONN); - error = ENOTCONN; + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sctp_assoc_t)*value <= SCTP_ALL_ASSOC)) { + error = EINVAL; + } else { + error = ENOENT; + } + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); } break; } @@ -2900,17 +2888,17 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, */ { size_t cpsz, left; - struct sockaddr_storage *sas; + struct sockaddr *addr; struct sctp_nets *net; struct sctp_getaddresses *saddr; SCTP_CHECK_AND_CAST(saddr, optval, struct sctp_getaddresses, *optsize); SCTP_FIND_STCB(inp, stcb, saddr->sget_assoc_id); - if (stcb) { - left = (*optsize) - sizeof(struct sctp_getaddresses); - *optsize = sizeof(struct sctp_getaddresses); - sas = (struct sockaddr_storage *)&saddr->addr[0]; + if (stcb != NULL) { + left = *optsize - offsetof(struct sctp_getaddresses, addr); + *optsize = offsetof(struct sctp_getaddresses, addr); + addr = &saddr->addr[0].sa; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { switch (net->ro._l_addr.sa.sa_family) { @@ -2953,42 +2941,51 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, (net->ro._l_addr.sa.sa_family == AF_INET)) { /* Must map the address */ in6_sin_2_v4mapsin6(&net->ro._l_addr.sin, - (struct sockaddr_in6 *)sas); + (struct sockaddr_in6 *)addr); } else { - memcpy(sas, &net->ro._l_addr, cpsz); + memcpy(addr, &net->ro._l_addr, cpsz); } #else - memcpy(sas, &net->ro._l_addr, cpsz); + memcpy(addr, &net->ro._l_addr, cpsz); #endif - ((struct sockaddr_in *)sas)->sin_port = stcb->rport; + ((struct sockaddr_in *)addr)->sin_port = stcb->rport; - sas = (struct sockaddr_storage *)((caddr_t)sas + cpsz); + addr = (struct sockaddr *)((caddr_t)addr + cpsz); left -= cpsz; *optsize += cpsz; } SCTP_TCB_UNLOCK(stcb); } else { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); - error = ENOENT; + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (saddr->sget_assoc_id <= SCTP_ALL_ASSOC)) { + error = EINVAL; + } else { + error = ENOENT; + } + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); } break; } case SCTP_GET_LOCAL_ADDRESSES: { size_t limit, actual; - struct sockaddr_storage *sas; struct sctp_getaddresses *saddr; SCTP_CHECK_AND_CAST(saddr, optval, struct sctp_getaddresses, *optsize); SCTP_FIND_STCB(inp, stcb, saddr->sget_assoc_id); - sas = (struct sockaddr_storage *)&saddr->addr[0]; - limit = *optsize - sizeof(sctp_assoc_t); - actual = sctp_fill_up_addresses(inp, stcb, limit, sas); - if (stcb) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((saddr->sget_assoc_id == SCTP_CURRENT_ASSOC) || + (saddr->sget_assoc_id == SCTP_ALL_ASSOC))) { + error = EINVAL; + } else { + limit = *optsize - offsetof(struct sctp_getaddresses, addr); + actual = sctp_fill_up_addresses(inp, stcb, limit, &saddr->addr[0].sa); + *optsize = offsetof(struct sctp_getaddresses, addr) + actual; + } + if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } - *optsize = sizeof(struct sockaddr_storage) + actual; break; } case SCTP_PEER_ADDR_PARAMS: @@ -3086,16 +3083,28 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, /* Applies to the specific association */ paddrp->spp_flags = 0; if (net != NULL) { - int ovh; - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - paddrp->spp_hbinterval = net->heart_beat_delay; paddrp->spp_pathmaxrxt = net->failure_threshold; - paddrp->spp_pathmtu = net->mtu - ovh; + paddrp->spp_pathmtu = net->mtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + paddrp->spp_pathmtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + paddrp->spp_pathmtu -= SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + paddrp->spp_pathmtu -= sizeof(struct sctphdr); + break; +#endif + default: + break; + } /* get flags for HB */ if (net->dest_state & SCTP_ADDR_NOHB) { paddrp->spp_flags |= SPP_HB_DISABLE; @@ -3104,9 +3113,9 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } /* get flags for PMTU */ if (net->dest_state & SCTP_ADDR_NO_PMTUD) { - paddrp->spp_flags |= SPP_PMTUD_ENABLE; - } else { paddrp->spp_flags |= SPP_PMTUD_DISABLE; + } else { + paddrp->spp_flags |= SPP_PMTUD_ENABLE; } if (net->dscp & 0x01) { paddrp->spp_dscp = net->dscp & 0xfc; @@ -3125,7 +3134,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, * value */ paddrp->spp_pathmaxrxt = stcb->asoc.def_net_failure; - paddrp->spp_pathmtu = sctp_get_frag_point(stcb, &stcb->asoc); + paddrp->spp_pathmtu = stcb->asoc.default_mtu; if (stcb->asoc.default_dscp & 0x01) { paddrp->spp_dscp = stcb->asoc.default_dscp & 0xfc; paddrp->spp_flags |= SPP_DSCP; @@ -3154,11 +3163,12 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (paddrp->spp_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (paddrp->spp_assoc_id == SCTP_FUTURE_ASSOC))) { /* Use endpoint defaults */ SCTP_INP_RLOCK(inp); paddrp->spp_pathmaxrxt = inp->sctp_ep.def_net_failure; - paddrp->spp_hbinterval = TICKS_TO_MSEC(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT]); + paddrp->spp_hbinterval = sctp_ticks_to_msecs(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT]); paddrp->spp_assoc_id = SCTP_FUTURE_ASSOC; /* get inp's default */ if (inp->sctp_ep.default_dscp & 0x01) { @@ -3172,8 +3182,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, paddrp->spp_flags |= SPP_IPV6_FLOWLABEL; } #endif - /* can't return this */ - paddrp->spp_pathmtu = 0; + paddrp->spp_pathmtu = inp->sctp_ep.default_mtu; if (sctp_is_feature_off(inp, SCTP_PCB_FLAGS_DONOT_HEARTBEAT)) { paddrp->spp_flags |= SPP_HB_ENABLE; @@ -3256,13 +3265,32 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, paddri->spinfo_rto = net->RTO; paddri->spinfo_assoc_id = sctp_get_associd(stcb); paddri->spinfo_mtu = net->mtu; + switch (addr->sa_family) { +#if defined(INET) + case AF_INET: + paddri->spinfo_mtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#if defined(INET6) + case AF_INET6: + paddri->spinfo_mtu -= SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + paddri->spinfo_mtu -= sizeof(struct sctphdr); + break; +#endif + default: + break; + } SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_paddrinfo); } else { if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); error = ENOENT; } break; @@ -3289,12 +3317,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, error = EINVAL; break; } - /* - * I think passing the state is fine since - * sctp_constants.h will be available to the user - * land. - */ - sstat->sstat_state = stcb->asoc.state; + sstat->sstat_state = sctp_map_assoc_state(stcb->asoc.state); sstat->sstat_assoc_id = sctp_get_associd(stcb); sstat->sstat_rwnd = stcb->asoc.peers_rwnd; sstat->sstat_unackdata = stcb->asoc.sent_queue_cnt; @@ -3304,46 +3327,83 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, */ sstat->sstat_penddata = (stcb->asoc.cnt_on_reasm_queue + stcb->asoc.cnt_on_all_streams); - - sstat->sstat_instrms = stcb->asoc.streamincnt; sstat->sstat_outstrms = stcb->asoc.streamoutcnt; - sstat->sstat_fragmentation_point = sctp_get_frag_point(stcb, &stcb->asoc); + sstat->sstat_fragmentation_point = sctp_get_frag_point(stcb); + net = stcb->asoc.primary_destination; + if (net != NULL) { #ifdef HAVE_SA_LEN - memcpy(&sstat->sstat_primary.spinfo_address, - &stcb->asoc.primary_destination->ro._l_addr, - ((struct sockaddr *)(&stcb->asoc.primary_destination->ro._l_addr))->sa_len); -#else - if (stcb->asoc.primary_destination->ro._l_addr.sa.sa_family == AF_INET) { memcpy(&sstat->sstat_primary.spinfo_address, - &stcb->asoc.primary_destination->ro._l_addr, - sizeof(struct sockaddr_in)); + &net->ro._l_addr, + ((struct sockaddr *)(&net->ro._l_addr))->sa_len); +#else + switch (stcb->asoc.primary_destination->ro._l_addr.sa.sa_family) { +#if defined(INET) + case AF_INET: + memcpy(&sstat->sstat_primary.spinfo_address, + &net->ro._l_addr, + sizeof(struct sockaddr_in)); + break; +#endif +#if defined(INET6) + case AF_INET6: + memcpy(&sstat->sstat_primary.spinfo_address, + &net->ro._l_addr, + sizeof(struct sockaddr_in6)); + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + memcpy(&sstat->sstat_primary.spinfo_address, + &net->ro._l_addr, + sizeof(struct sockaddr_conn)); + break; +#endif + default: + break; + } +#endif + ((struct sockaddr_in *)&sstat->sstat_primary.spinfo_address)->sin_port = stcb->rport; + /* + * Again the user can get info from sctp_constants.h + * for what the state of the network is. + */ + if (net->dest_state & SCTP_ADDR_UNCONFIRMED) { + /* It's unconfirmed */ + sstat->sstat_primary.spinfo_state = SCTP_UNCONFIRMED; + } else if (net->dest_state & SCTP_ADDR_REACHABLE) { + /* It's active */ + sstat->sstat_primary.spinfo_state = SCTP_ACTIVE; + } else { + /* It's inactive */ + sstat->sstat_primary.spinfo_state = SCTP_INACTIVE; + } + sstat->sstat_primary.spinfo_cwnd = net->cwnd; + sstat->sstat_primary.spinfo_srtt = net->lastsa >> SCTP_RTT_SHIFT; + sstat->sstat_primary.spinfo_rto = net->RTO; + sstat->sstat_primary.spinfo_mtu = net->mtu; + switch (stcb->asoc.primary_destination->ro._l_addr.sa.sa_family) { +#if defined(INET) + case AF_INET: + sstat->sstat_primary.spinfo_mtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#if defined(INET6) + case AF_INET6: + sstat->sstat_primary.spinfo_mtu -= SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + sstat->sstat_primary.spinfo_mtu -= sizeof(struct sctphdr); + break; +#endif + default: + break; + } } else { - memcpy(&sstat->sstat_primary.spinfo_address, - &stcb->asoc.primary_destination->ro._l_addr, - sizeof(struct sockaddr_in6)); + memset(&sstat->sstat_primary, 0, sizeof(struct sctp_paddrinfo)); } -#endif - net = stcb->asoc.primary_destination; - ((struct sockaddr_in *)&sstat->sstat_primary.spinfo_address)->sin_port = stcb->rport; - /* - * Again the user can get info from sctp_constants.h - * for what the state of the network is. - */ - if (net->dest_state & SCTP_ADDR_UNCONFIRMED) { - /* It's unconfirmed */ - sstat->sstat_primary.spinfo_state = SCTP_UNCONFIRMED; - } else if (net->dest_state & SCTP_ADDR_REACHABLE) { - /* It's active */ - sstat->sstat_primary.spinfo_state = SCTP_ACTIVE; - } else { - /* It's inactive */ - sstat->sstat_primary.spinfo_state = SCTP_INACTIVE; - } - sstat->sstat_primary.spinfo_cwnd = net->cwnd; - sstat->sstat_primary.spinfo_srtt = net->lastsa >> SCTP_RTT_SHIFT; - sstat->sstat_primary.spinfo_rto = net->RTO; - sstat->sstat_primary.spinfo_mtu = net->mtu; sstat->sstat_primary.spinfo_assoc_id = sctp_get_associd(stcb); SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_status); @@ -3364,7 +3424,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (srto->srto_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (srto->srto_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); srto->srto_initial = inp->sctp_ep.initial_rto; srto->srto_max = inp->sctp_ep.sctp_maxrto; @@ -3411,7 +3472,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, SCTP_FIND_STCB(inp, stcb, sasoc->sasoc_assoc_id); if (stcb) { - sasoc->sasoc_cookie_life = TICKS_TO_MSEC(stcb->asoc.cookie_life); + sasoc->sasoc_cookie_life = sctp_ticks_to_msecs(stcb->asoc.cookie_life); sasoc->sasoc_asocmaxrxt = stcb->asoc.max_send_times; sasoc->sasoc_number_peer_destinations = stcb->asoc.numnets; sasoc->sasoc_peer_rwnd = stcb->asoc.peers_rwnd; @@ -3420,13 +3481,14 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sasoc->sasoc_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (sasoc->sasoc_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); - sasoc->sasoc_cookie_life = TICKS_TO_MSEC(inp->sctp_ep.def_cookie_life); + sasoc->sasoc_cookie_life = sctp_ticks_to_msecs(inp->sctp_ep.def_cookie_life); sasoc->sasoc_asocmaxrxt = inp->sctp_ep.max_send_times; sasoc->sasoc_number_peer_destinations = 0; sasoc->sasoc_peer_rwnd = 0; - sasoc->sasoc_local_rwnd = sbspace(&inp->sctp_socket->so_rcv); + sasoc->sasoc_local_rwnd = (uint32_t)sbspace(&inp->sctp_socket->so_rcv); SCTP_INP_RUNLOCK(inp); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -3451,7 +3513,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (s_info->sinfo_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (s_info->sinfo_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); memcpy(s_info, &inp->def_send, sizeof(inp->def_send)); SCTP_INP_RUNLOCK(inp); @@ -3531,7 +3594,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, { struct sctp_hmacalgo *shmac; sctp_hmaclist_t *hmaclist; - uint32_t size; + size_t size; int i; SCTP_CHECK_AND_CAST(shmac, optval, struct sctp_hmacalgo, *optsize); @@ -3546,8 +3609,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } /* is there room for all of the hmac ids? */ size = sizeof(*shmac) + (hmaclist->num_algo * - sizeof(shmac->shmac_idents[0])); - if ((size_t)(*optsize) < size) { + sizeof(shmac->shmac_idents[0])); + if (*optsize < size) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; SCTP_INP_RUNLOCK(inp); @@ -3576,7 +3639,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (scact->scact_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (scact->scact_assoc_id == SCTP_FUTURE_ASSOC))) { /* get the endpoint active key */ SCTP_INP_RLOCK(inp); scact->scact_keynumber = inp->sctp_ep.default_keyid; @@ -3618,7 +3682,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sac->gauth_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (sac->gauth_assoc_id == SCTP_FUTURE_ASSOC))) { /* get off the endpoint */ SCTP_INP_RLOCK(inp); chklist = inp->sctp_ep.local_auth_chunks; @@ -3747,11 +3812,11 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, if (event_type > 0) { if (stcb) { event->se_on = sctp_stcb_is_feature_on(inp, stcb, event_type); - SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (event->se_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (event->se_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); event->se_on = sctp_is_feature_on(inp, event_type); SCTP_INP_RUNLOCK(inp); @@ -3761,49 +3826,36 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } } } + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } if (error == 0) { *optsize = sizeof(struct sctp_event); } break; } case SCTP_RECVRCVINFO: - { - int onoff; - if (*optsize < sizeof(int)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } else { SCTP_INP_RLOCK(inp); - onoff = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVRCVINFO); + *(int *)optval = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVRCVINFO); SCTP_INP_RUNLOCK(inp); - } - if (error == 0) { - /* return the option value */ - *(int *)optval = onoff; *optsize = sizeof(int); } break; - } case SCTP_RECVNXTINFO: - { - int onoff; - if (*optsize < sizeof(int)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } else { SCTP_INP_RLOCK(inp); - onoff = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO); + *(int *)optval = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO); SCTP_INP_RUNLOCK(inp); - } - if (error == 0) { - /* return the option value */ - *(int *)optval = onoff; *optsize = sizeof(int); } break; - } case SCTP_DEFAULT_SNDINFO: { struct sctp_sndinfo *info; @@ -3821,7 +3873,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (info->snd_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (info->snd_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); info->snd_sid = inp->def_send.sinfo_stream; info->snd_flags = inp->def_send.sinfo_flags; @@ -3853,7 +3906,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (info->pr_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (info->pr_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); info->pr_policy = PR_SCTP_POLICY(inp->def_send.sinfo_flags); info->pr_value = inp->def_send.sinfo_timetolive; @@ -3963,20 +4017,24 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, if (net != NULL) { thlds->spt_pathmaxrxt = net->failure_threshold; thlds->spt_pathpfthld = net->pf_threshold; + thlds->spt_pathcpthld = 0xffff; } else { thlds->spt_pathmaxrxt = stcb->asoc.def_net_failure; thlds->spt_pathpfthld = stcb->asoc.def_net_pf_threshold; + thlds->spt_pathcpthld = 0xffff; } thlds->spt_assoc_id = sctp_get_associd(stcb); SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (thlds->spt_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (thlds->spt_assoc_id == SCTP_FUTURE_ASSOC))) { /* Use endpoint defaults */ SCTP_INP_RLOCK(inp); thlds->spt_pathmaxrxt = inp->sctp_ep.def_net_failure; thlds->spt_pathpfthld = inp->sctp_ep.def_net_pf_threshold; + thlds->spt_pathcpthld = 0xffff; SCTP_INP_RUNLOCK(inp); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -4089,7 +4147,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (encaps->sue_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (encaps->sue_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); encaps->sue_port = inp->sctp_ep.port; SCTP_INP_RUNLOCK(inp); @@ -4116,7 +4175,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->ecn_supported; SCTP_INP_RUNLOCK(inp); @@ -4143,7 +4203,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->prsctp_supported; SCTP_INP_RUNLOCK(inp); @@ -4170,7 +4231,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->auth_supported; SCTP_INP_RUNLOCK(inp); @@ -4197,7 +4259,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->asconf_supported; SCTP_INP_RUNLOCK(inp); @@ -4224,7 +4287,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->reconfig_supported; SCTP_INP_RUNLOCK(inp); @@ -4251,7 +4315,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->nrsack_supported; SCTP_INP_RUNLOCK(inp); @@ -4278,7 +4343,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->pktdrop_supported; SCTP_INP_RUNLOCK(inp); @@ -4305,7 +4371,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = (uint32_t)inp->local_strreset_support; SCTP_INP_RUNLOCK(inp); @@ -4350,12 +4417,16 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[0]; sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[0]; #endif - SCTP_TCB_UNLOCK(stcb); - *optsize = sizeof(struct sctp_prstatus); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } + if (error == 0) { + *optsize = sizeof(struct sctp_prstatus); + } break; } case SCTP_PR_ASSOC_STATUS: @@ -4378,12 +4449,16 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, sprstat->sprstat_abandoned_unsent = stcb->asoc.abandoned_unsent[policy]; sprstat->sprstat_abandoned_sent = stcb->asoc.abandoned_sent[policy]; } - SCTP_TCB_UNLOCK(stcb); - *optsize = sizeof(struct sctp_prstatus); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } + if (error == 0) { + *optsize = sizeof(struct sctp_prstatus); + } break; } case SCTP_MAX_CWND: @@ -4399,7 +4474,8 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_RLOCK(inp); av->assoc_value = inp->max_cwnd; SCTP_INP_RUNLOCK(inp); @@ -4424,7 +4500,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, return (error); } -#if defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int #else static int @@ -4439,13 +4515,11 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, uint32_t vrf_id; if (optval == NULL) { - SCTP_PRINTF("optval is NULL\n"); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { - SCTP_PRINTF("inp is NULL?\n"); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } @@ -4515,7 +4589,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, * The value is in ticks. Note this does not effect * old associations, only new ones. */ - inp->sctp_ep.auto_close_time = SEC_TO_TICKS(*mopt); + inp->sctp_ep.auto_close_time = sctp_secs_to_ticks(*mopt); break; } SCTP_INP_WLOCK(inp); @@ -4529,7 +4603,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, case SCTP_REUSE_PORT: { SCTP_CHECK_AND_CAST(mopt, optval, uint32_t, optsize); - if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == 0) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == 0) { /* Can't set it after we are bound */ error = EINVAL; break; @@ -4580,6 +4654,43 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { + SCTP_INP_WLOCK(inp); + if (av->assoc_value == 0) { + inp->idata_supported = 0; + } else { + if ((sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE)) && + (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_INTERLEAVE_STRMS))) { + inp->idata_supported = 1; + } else { + /* Must have Frag interleave and stream interleave on */ + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + SCTP_INP_WUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + break; + } case SCTP_CMT_ON_OFF: if (SCTP_BASE_SYSCTL(sctp_cmt_on_off)) { struct sctp_assoc_value *av; @@ -4597,14 +4708,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->sctp_cmt_on_off = av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -4646,14 +4759,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->sctp_ep.sctp_default_cc_module = av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -4678,7 +4793,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_CHECK_AND_CAST(cc_opt, optval, struct sctp_cc_option, optsize); SCTP_FIND_STCB(inp, stcb, cc_opt->aid_value.assoc_id); if (stcb == NULL) { - if (cc_opt->aid_value.assoc_id == SCTP_CURRENT_ASSOC) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (cc_opt->aid_value.assoc_id == SCTP_CURRENT_ASSOC)) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -4719,29 +4835,31 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_FIND_STCB(inp, stcb, av->assoc_id); if (stcb) { - stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, 1, 1); + stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, true); stcb->asoc.ss_functions = sctp_ss_functions[av->assoc_value]; stcb->asoc.stream_scheduling_module = av->assoc_value; - stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc, 1); + stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc); SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->sctp_ep.sctp_default_ss_module = av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); - stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, 1, 1); + stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, true); stcb->asoc.ss_functions = sctp_ss_functions[av->assoc_value]; stcb->asoc.stream_scheduling_module = av->assoc_value; - stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc, 1); + stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc); SCTP_TCB_UNLOCK(stcb); } SCTP_INP_RUNLOCK(inp); @@ -4764,7 +4882,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_TCB_UNLOCK(stcb); } else { - if (av->assoc_id == SCTP_CURRENT_ASSOC) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_CURRENT_ASSOC)) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -4802,14 +4921,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->sctp_context = av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -4966,10 +5087,12 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_CHECK_AND_CAST(sack, optval, struct sctp_sack_info, optsize); SCTP_FIND_STCB(inp, stcb, sack->sack_assoc_id); if (sack->sack_delay) { - if (sack->sack_delay > SCTP_MAX_SACK_DELAY) - sack->sack_delay = SCTP_MAX_SACK_DELAY; - if (MSEC_TO_TICKS(sack->sack_delay) < 1) { - sack->sack_delay = TICKS_TO_MSEC(1); + if (sack->sack_delay > SCTP_MAX_SACK_DELAY) { + error = EINVAL; + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } + break; } } if (stcb) { @@ -4983,19 +5106,21 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sack->sack_assoc_id == SCTP_FUTURE_ASSOC) || - (sack->sack_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sack->sack_assoc_id == SCTP_FUTURE_ASSOC) || + (sack->sack_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); if (sack->sack_delay) { - inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV] = MSEC_TO_TICKS(sack->sack_delay); + inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV] = sctp_msecs_to_ticks(sack->sack_delay); } if (sack->sack_freq) { inp->sctp_ep.sctp_sack_freq = sack->sack_freq; } SCTP_INP_WUNLOCK(inp); } - if ((sack->sack_assoc_id == SCTP_CURRENT_ASSOC) || - (sack->sack_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sack->sack_assoc_id == SCTP_CURRENT_ASSOC) || + (sack->sack_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5022,6 +5147,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if (sctp_auth_add_chunk(sauth->sauth_chunk, inp->sctp_ep.local_auth_chunks)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; + } else { + inp->auth_supported = 1; } SCTP_INP_WUNLOCK(inp); break; @@ -5038,7 +5165,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if (sca->sca_keylength == 0) { size = optsize - sizeof(struct sctp_authkey); } else { - if (sca->sca_keylength + sizeof(struct sctp_authkey) <= optsize) { + if (sca->sca_keylength + sizeof(struct sctp_authkey) <= optsize) { size = sca->sca_keylength; } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5080,8 +5207,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sca->sca_assoc_id == SCTP_FUTURE_ASSOC) || - (sca->sca_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sca->sca_assoc_id == SCTP_FUTURE_ASSOC) || + (sca->sca_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); shared_keys = &inp->sctp_ep.shared_keys; /* @@ -5115,8 +5243,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, error = sctp_insert_sharedkey(shared_keys, shared_key); SCTP_INP_WUNLOCK(inp); } - if ((sca->sca_assoc_id == SCTP_CURRENT_ASSOC) || - (sca->sca_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((sca->sca_assoc_id == SCTP_CURRENT_ASSOC) || + (sca->sca_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5224,8 +5353,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (scact->scact_assoc_id == SCTP_FUTURE_ASSOC) || - (scact->scact_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((scact->scact_assoc_id == SCTP_FUTURE_ASSOC) || + (scact->scact_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); if (sctp_auth_setactivekey_ep(inp, scact->scact_keynumber)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5233,8 +5363,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_INP_WUNLOCK(inp); } - if ((scact->scact_assoc_id == SCTP_CURRENT_ASSOC) || - (scact->scact_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((scact->scact_assoc_id == SCTP_CURRENT_ASSOC) || + (scact->scact_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5263,8 +5394,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (scdel->scact_assoc_id == SCTP_FUTURE_ASSOC) || - (scdel->scact_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((scdel->scact_assoc_id == SCTP_FUTURE_ASSOC) || + (scdel->scact_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); if (sctp_delete_sharedkey_ep(inp, scdel->scact_keynumber)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5272,8 +5404,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_INP_WUNLOCK(inp); } - if ((scdel->scact_assoc_id == SCTP_CURRENT_ASSOC) || - (scdel->scact_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((scdel->scact_assoc_id == SCTP_CURRENT_ASSOC) || + (scdel->scact_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5302,8 +5435,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (keyid->scact_assoc_id == SCTP_FUTURE_ASSOC) || - (keyid->scact_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((keyid->scact_assoc_id == SCTP_FUTURE_ASSOC) || + (keyid->scact_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); if (sctp_deact_sharedkey_ep(inp, keyid->scact_keynumber)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5311,8 +5445,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_INP_WUNLOCK(inp); } - if ((keyid->scact_assoc_id == SCTP_CURRENT_ASSOC) || - (keyid->scact_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((keyid->scact_assoc_id == SCTP_CURRENT_ASSOC) || + (keyid->scact_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5341,14 +5476,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->local_strreset_support = (uint8_t)av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5357,7 +5494,6 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_INP_RUNLOCK(inp); } - } break; } @@ -5370,7 +5506,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_CHECK_AND_CAST(strrst, optval, struct sctp_reset_streams, optsize); SCTP_FIND_STCB(inp, stcb, strrst->srs_assoc_id); if (stcb == NULL) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); error = ENOENT; break; } @@ -5383,24 +5519,36 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_TCB_UNLOCK(stcb); break; } + if (SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + break; + } if (sizeof(struct sctp_reset_streams) + strrst->srs_number_streams * sizeof(uint16_t) > optsize) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); break; } - if (stcb->asoc.stream_reset_outstanding) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EALREADY); - error = EALREADY; - SCTP_TCB_UNLOCK(stcb); - break; - } if (strrst->srs_flags & SCTP_STREAM_RESET_INCOMING) { send_in = 1; + if (stcb->asoc.stream_reset_outstanding) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EALREADY); + error = EALREADY; + SCTP_TCB_UNLOCK(stcb); + break; + } } if (strrst->srs_flags & SCTP_STREAM_RESET_OUTGOING) { send_out = 1; } + if ((strrst->srs_number_streams > SCTP_MAX_STREAMS_AT_ONCE_RESET) && send_in) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOMEM); + error = ENOMEM; + SCTP_TCB_UNLOCK(stcb); + break; + } if ((send_in == 0) && (send_out == 0)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; @@ -5409,13 +5557,13 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } for (i = 0; i < strrst->srs_number_streams; i++) { if ((send_in) && - (strrst->srs_stream_list[i] > stcb->asoc.streamincnt)) { + (strrst->srs_stream_list[i] >= stcb->asoc.streamincnt)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; } if ((send_out) && - (strrst->srs_stream_list[i] > stcb->asoc.streamoutcnt)) { + (strrst->srs_stream_list[i] >= stcb->asoc.streamoutcnt)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; @@ -5425,11 +5573,44 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_TCB_UNLOCK(stcb); break; } - error = sctp_send_str_reset_req(stcb, strrst->srs_number_streams, - strrst->srs_stream_list, - send_out, send_in, 0, 0, 0, 0, 0); - - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_REQ, SCTP_SO_LOCKED); + if (send_out) { + int cnt; + uint16_t strm; + if (strrst->srs_number_streams) { + for (i = 0, cnt = 0; i < strrst->srs_number_streams; i++) { + strm = strrst->srs_stream_list[i]; + if (stcb->asoc.strmout[strm].state == SCTP_STREAM_OPEN) { + stcb->asoc.strmout[strm].state = SCTP_STREAM_RESET_PENDING; + cnt++; + } + } + } else { + /* Its all */ + for (i = 0, cnt = 0; i < stcb->asoc.streamoutcnt; i++) { + if (stcb->asoc.strmout[i].state == SCTP_STREAM_OPEN) { + stcb->asoc.strmout[i].state = SCTP_STREAM_RESET_PENDING; + cnt++; + } + } + } + } + if (send_in) { + error = sctp_send_str_reset_req(stcb, strrst->srs_number_streams, + strrst->srs_stream_list, + send_in, 0, 0, 0, 0, 0); + } else { + error = sctp_send_stream_reset_out_if_possible(stcb, SCTP_SO_LOCKED); + } + if (error == 0) { + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_REQ, SCTP_SO_LOCKED); + } else { + /* + * For outgoing streams don't report any problems in + * sending the request to the application. + * XXX: Double check resetting incoming streams. + */ + error = 0; + } SCTP_TCB_UNLOCK(stcb); break; } @@ -5443,7 +5624,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_CHECK_AND_CAST(stradd, optval, struct sctp_add_streams, optsize); SCTP_FIND_STCB(inp, stcb, stradd->sas_assoc_id); if (stcb == NULL) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); error = ENOENT; break; } @@ -5456,6 +5637,12 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_TCB_UNLOCK(stcb); break; } + if (SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + break; + } if (stcb->asoc.stream_reset_outstanding) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EALREADY); error = EALREADY; @@ -5496,7 +5683,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, goto skip_stuff; } } - error = sctp_send_str_reset_req(stcb, 0, NULL, 0, 0, 0, addstream, add_o_strmcnt, add_i_strmcnt, 0); + error = sctp_send_str_reset_req(stcb, 0, NULL, 0, 0, addstream, add_o_strmcnt, add_i_strmcnt, 0); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_REQ, SCTP_SO_LOCKED); skip_stuff: SCTP_TCB_UNLOCK(stcb); @@ -5504,6 +5691,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } case SCTP_RESET_ASSOC: { + int i; uint32_t *value; SCTP_CHECK_AND_CAST(value, optval, uint32_t, optsize); @@ -5522,13 +5710,34 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_TCB_UNLOCK(stcb); break; } + if (SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + break; + } if (stcb->asoc.stream_reset_outstanding) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EALREADY); error = EALREADY; SCTP_TCB_UNLOCK(stcb); break; } - error = sctp_send_str_reset_req(stcb, 0, NULL, 0, 0, 1, 0, 0, 0, 0); + /* Is there any data pending in the send or sent queues? */ + if (!TAILQ_EMPTY(&stcb->asoc.send_queue) || + !TAILQ_EMPTY(&stcb->asoc.sent_queue)) { + busy_out: + error = EBUSY; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + SCTP_TCB_UNLOCK(stcb); + break; + } + /* Do any streams have data queued? */ + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + if (!TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) { + goto busy_out; + } + } + error = sctp_send_str_reset_req(stcb, 0, NULL, 0, 1, 0, 0, 0, 0); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_REQ, SCTP_SO_LOCKED); SCTP_TCB_UNLOCK(stcb); break; @@ -5586,7 +5795,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, stcb->asoc.primary_destination, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_9); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_8); sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); } else { /* @@ -5601,15 +5810,6 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } case SCTP_MAX_BURST: { -#if defined(__FreeBSD__) && __FreeBSD_version < 900000 - uint8_t *burst; - - SCTP_CHECK_AND_CAST(burst, optval, uint8_t, optsize); - - SCTP_INP_WLOCK(inp); - inp->sctp_ep.max_burst = *burst; - SCTP_INP_WUNLOCK(inp); -#else struct sctp_assoc_value *av; SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); @@ -5621,14 +5821,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_FUTURE_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->sctp_ep.max_burst = av->assoc_value; SCTP_INP_WUNLOCK(inp); } - if ((av->assoc_id == SCTP_CURRENT_ASSOC) || - (av->assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((av->assoc_id == SCTP_CURRENT_ASSOC) || + (av->assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5638,40 +5840,25 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_INP_RUNLOCK(inp); } } -#endif break; } case SCTP_MAXSEG: { struct sctp_assoc_value *av; - int ovh; SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); SCTP_FIND_STCB(inp, stcb, av->assoc_id); - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } if (stcb) { - if (av->assoc_value) { - stcb->asoc.sctp_frag_point = (av->assoc_value + ovh); - } else { - stcb->asoc.sctp_frag_point = SCTP_DEFAULT_MAXSEGMENT; - } + stcb->asoc.sctp_frag_point = av->assoc_value; SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); - /* FIXME MT: I think this is not in tune with the API ID */ - if (av->assoc_value) { - inp->sctp_frag_point = (av->assoc_value + ovh); - } else { - inp->sctp_frag_point = SCTP_DEFAULT_MAXSEGMENT; - } + inp->sctp_frag_point = av->assoc_value; SCTP_INP_WUNLOCK(inp); } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5752,9 +5939,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { sctp_feature_off(inp, SCTP_PCB_FLAGS_STREAM_RESETEVNT); } - SCTP_INP_WUNLOCK(inp); - SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); if (events->sctp_association_event) { @@ -5811,21 +5996,21 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } /* Send up the sender dry event only for 1-to-1 style sockets. */ if (events->sctp_sender_dry_event) { - if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || - (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { + if (((inp->sctp_flags & (SCTP_PCB_FLAGS_TCPTYPE | SCTP_PCB_FLAGS_IN_TCPPOOL)) != 0) && + !SCTP_IS_LISTENING(inp)) { stcb = LIST_FIRST(&inp->sctp_asoc_list); - if (stcb) { + if (stcb != NULL) { SCTP_TCB_LOCK(stcb); if (TAILQ_EMPTY(&stcb->asoc.send_queue) && TAILQ_EMPTY(&stcb->asoc.sent_queue) && (stcb->asoc.stream_queue_cnt == 0)) { - sctp_ulp_notify(SCTP_NOTIFY_SENDER_DRY, stcb, 0, NULL, SCTP_SO_LOCKED); + sctp_ulp_notify(SCTP_NOTIFY_SENDER_DRY, stcb, 0, NULL, SCTP_SO_LOCKED); } SCTP_TCB_UNLOCK(stcb); } } } - SCTP_INP_RUNLOCK(inp); + SCTP_INP_WUNLOCK(inp); break; } case SCTP_ADAPTATION_LAYER: @@ -5869,14 +6054,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (s_info->sinfo_assoc_id == SCTP_FUTURE_ASSOC) || - (s_info->sinfo_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((s_info->sinfo_assoc_id == SCTP_FUTURE_ASSOC) || + (s_info->sinfo_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); memcpy(&inp->def_send, s_info, min(optsize, sizeof(inp->def_send))); SCTP_INP_WUNLOCK(inp); } - if ((s_info->sinfo_assoc_id == SCTP_CURRENT_ASSOC) || - (s_info->sinfo_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((s_info->sinfo_assoc_id == SCTP_CURRENT_ASSOC) || + (s_info->sinfo_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -5937,8 +6124,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if ((stcb != NULL) && (net == NULL)) { #ifdef INET if (addr->sa_family == AF_INET) { - struct sockaddr_in *sin; + sin = (struct sockaddr_in *)addr; if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5996,6 +6183,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, return (EINVAL); } if ((paddrp->spp_flags & SPP_PMTUD_DISABLE) && + (paddrp->spp_pathmtu > 0) && ((paddrp->spp_pathmtu < SCTP_SMALLEST_PMTU) || (paddrp->spp_pathmtu > SCTP_LARGEST_PMTU))) { if (stcb) @@ -6006,26 +6194,13 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if (stcb != NULL) { /************************TCB SPECIFIC SET ******************/ - /* - * do we change the timer for HB, we run - * only one? - */ - int ovh = 0; - - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - - /* network sets ? */ if (net != NULL) { /************************NET SPECIFIC SET ******************/ if (paddrp->spp_flags & SPP_HB_DISABLE) { - if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) && - !(net->dest_state & SCTP_ADDR_NOHB)) { + if (((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) && + ((net->dest_state & SCTP_ADDR_NOHB) == 0)) { sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_9); } net->dest_state |= SCTP_ADDR_NOHB; } @@ -6036,25 +6211,47 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, net->heart_beat_delay = 0; } sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); net->dest_state &= ~SCTP_ADDR_NOHB; } if (paddrp->spp_flags & SPP_HB_DEMAND) { - /* on demand HB */ - sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED); - sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); + if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) { + sctp_send_hb(stcb, net, SCTP_SO_LOCKED); + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED); + sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); + } } if (paddrp->spp_flags & SPP_PMTUD_DISABLE) { if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_11); } net->dest_state |= SCTP_ADDR_NO_PMTUD; - net->mtu = paddrp->spp_pathmtu + ovh; - if (net->mtu < stcb->asoc.smallest_mtu) { - sctp_pathmtu_adjustment(stcb, net->mtu); + if (paddrp->spp_pathmtu > 0) { + net->mtu = paddrp->spp_pathmtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + net->mtu += sizeof(struct sctphdr); + break; +#endif + default: + break; + } + if (net->mtu < stcb->asoc.smallest_mtu) { + sctp_pathmtu_adjustment(stcb, net->mtu, true); + } } } if (paddrp->spp_flags & SPP_PMTUD_ENABLE) { @@ -6063,7 +6260,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } net->dest_state &= ~SCTP_ADDR_NO_PMTUD; } - if (paddrp->spp_pathmaxrxt) { + if (paddrp->spp_pathmaxrxt > 0) { if (net->dest_state & SCTP_ADDR_PF) { if (net->error_count > paddrp->spp_pathmaxrxt) { net->dest_state &= ~SCTP_ADDR_PF; @@ -6073,7 +6270,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, (net->error_count > net->pf_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_12); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -6104,7 +6303,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, #endif } else { /************************ASSOC ONLY -- NO NET SPECIFIC SET ******************/ - if (paddrp->spp_pathmaxrxt != 0) { + if (paddrp->spp_pathmaxrxt > 0) { stcb->asoc.def_net_failure = paddrp->spp_pathmaxrxt; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { if (net->dest_state & SCTP_ADDR_PF) { @@ -6116,7 +6315,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, (net->error_count > net->pf_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_13); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -6134,7 +6335,6 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, net->failure_threshold = paddrp->spp_pathmaxrxt; } } - if (paddrp->spp_flags & SPP_HB_ENABLE) { if (paddrp->spp_hbinterval != 0) { stcb->asoc.heart_beat_delay = paddrp->spp_hbinterval; @@ -6152,17 +6352,19 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, net->dest_state &= ~SCTP_ADDR_NOHB; } sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_14); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); } sctp_stcb_feature_off(inp, stcb, SCTP_PCB_FLAGS_DONOT_HEARTBEAT); } if (paddrp->spp_flags & SPP_HB_DISABLE) { TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (!(net->dest_state & SCTP_ADDR_NOHB)) { + if ((net->dest_state & SCTP_ADDR_NOHB) == 0) { net->dest_state |= SCTP_ADDR_NOHB; - if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) { - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + inp, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_15); } } } @@ -6172,14 +6374,38 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_16); } net->dest_state |= SCTP_ADDR_NO_PMTUD; - net->mtu = paddrp->spp_pathmtu + ovh; - if (net->mtu < stcb->asoc.smallest_mtu) { - sctp_pathmtu_adjustment(stcb, net->mtu); + if (paddrp->spp_pathmtu > 0) { + net->mtu = paddrp->spp_pathmtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; +#endif +#if defined(__Userspace__) + case AF_CONN: + net->mtu += sizeof(struct sctphdr); + break; +#endif + default: + break; + } + if (net->mtu < stcb->asoc.smallest_mtu) { + sctp_pathmtu_adjustment(stcb, net->mtu, true); + } } } + if (paddrp->spp_pathmtu > 0) { + stcb->asoc.default_mtu = paddrp->spp_pathmtu; + } sctp_stcb_feature_on(inp, stcb, SCTP_PCB_FLAGS_DO_NOT_PMTUD); } if (paddrp->spp_flags & SPP_PMTUD_ENABLE) { @@ -6189,6 +6415,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } net->dest_state &= ~SCTP_ADDR_NO_PMTUD; } + stcb->asoc.default_mtu = 0; sctp_stcb_feature_off(inp, stcb, SCTP_PCB_FLAGS_DO_NOT_PMTUD); } if (paddrp->spp_flags & SPP_DSCP) { @@ -6217,13 +6444,14 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, /************************NO TCB, SET TO default stuff ******************/ if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (paddrp->spp_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (paddrp->spp_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); /* * For the TOS/FLOWLABEL stuff you set it * with the options on the socket */ - if (paddrp->spp_pathmaxrxt != 0) { + if (paddrp->spp_pathmaxrxt > 0) { inp->sctp_ep.def_net_failure = paddrp->spp_pathmaxrxt; } @@ -6232,22 +6460,26 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, else if (paddrp->spp_hbinterval != 0) { if (paddrp->spp_hbinterval > SCTP_MAX_HB_INTERVAL) paddrp->spp_hbinterval= SCTP_MAX_HB_INTERVAL; - inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = MSEC_TO_TICKS(paddrp->spp_hbinterval); + inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = sctp_msecs_to_ticks(paddrp->spp_hbinterval); } if (paddrp->spp_flags & SPP_HB_ENABLE) { if (paddrp->spp_flags & SPP_HB_TIME_IS_ZERO) { inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = 0; } else if (paddrp->spp_hbinterval) { - inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = MSEC_TO_TICKS(paddrp->spp_hbinterval); + inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = sctp_msecs_to_ticks(paddrp->spp_hbinterval); } sctp_feature_off(inp, SCTP_PCB_FLAGS_DONOT_HEARTBEAT); } else if (paddrp->spp_flags & SPP_HB_DISABLE) { sctp_feature_on(inp, SCTP_PCB_FLAGS_DONOT_HEARTBEAT); } if (paddrp->spp_flags & SPP_PMTUD_ENABLE) { + inp->sctp_ep.default_mtu = 0; sctp_feature_off(inp, SCTP_PCB_FLAGS_DO_NOT_PMTUD); } else if (paddrp->spp_flags & SPP_PMTUD_DISABLE) { + if (paddrp->spp_pathmtu > 0) { + inp->sctp_ep.default_mtu = paddrp->spp_pathmtu; + } sctp_feature_on(inp, SCTP_PCB_FLAGS_DO_NOT_PMTUD); } if (paddrp->spp_flags & SPP_DSCP) { @@ -6303,7 +6535,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (srto->srto_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (srto->srto_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (srto->srto_initial) new_init = srto->srto_initial; @@ -6339,30 +6572,34 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_CHECK_AND_CAST(sasoc, optval, struct sctp_assocparams, optsize); SCTP_FIND_STCB(inp, stcb, sasoc->sasoc_assoc_id); - if (sasoc->sasoc_cookie_life) { + if (sasoc->sasoc_cookie_life > 0) { /* boundary check the cookie life */ - if (sasoc->sasoc_cookie_life < 1000) - sasoc->sasoc_cookie_life = 1000; + if (sasoc->sasoc_cookie_life < SCTP_MIN_COOKIE_LIFE) { + sasoc->sasoc_cookie_life = SCTP_MIN_COOKIE_LIFE; + } if (sasoc->sasoc_cookie_life > SCTP_MAX_COOKIE_LIFE) { sasoc->sasoc_cookie_life = SCTP_MAX_COOKIE_LIFE; } } if (stcb) { - if (sasoc->sasoc_asocmaxrxt) + if (sasoc->sasoc_asocmaxrxt > 0) { stcb->asoc.max_send_times = sasoc->sasoc_asocmaxrxt; - if (sasoc->sasoc_cookie_life) { - stcb->asoc.cookie_life = MSEC_TO_TICKS(sasoc->sasoc_cookie_life); + } + if (sasoc->sasoc_cookie_life > 0) { + stcb->asoc.cookie_life = sctp_msecs_to_ticks(sasoc->sasoc_cookie_life); } SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (sasoc->sasoc_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (sasoc->sasoc_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); - if (sasoc->sasoc_asocmaxrxt) + if (sasoc->sasoc_asocmaxrxt > 0) { inp->sctp_ep.max_send_times = sasoc->sasoc_asocmaxrxt; - if (sasoc->sasoc_cookie_life) { - inp->sctp_ep.def_cookie_life = MSEC_TO_TICKS(sasoc->sasoc_cookie_life); + } + if (sasoc->sasoc_cookie_life > 0) { + inp->sctp_ep.def_cookie_life = sctp_msecs_to_ticks(sasoc->sasoc_cookie_life); } SCTP_INP_WUNLOCK(inp); } else { @@ -6438,16 +6675,23 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } if ((stcb != NULL) && (net != NULL)) { - if ((net != stcb->asoc.primary_destination) && - (!(net->dest_state & SCTP_ADDR_UNCONFIRMED))) { - /* Ok we need to set it */ - if (sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net) == 0) { - if ((stcb->asoc.alternate) && - (!(net->dest_state & SCTP_ADDR_PF)) && - (net->dest_state & SCTP_ADDR_REACHABLE)) { - sctp_free_remote_addr(stcb->asoc.alternate); - stcb->asoc.alternate = NULL; + if (net != stcb->asoc.primary_destination) { + if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { + /* Ok we need to set it */ + if (sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net) == 0) { + if ((stcb->asoc.alternate) && + ((net->dest_state & SCTP_ADDR_PF) == 0) && + (net->dest_state & SCTP_ADDR_REACHABLE)) { + sctp_free_remote_addr(stcb->asoc.alternate); + stcb->asoc.alternate = NULL; + } + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; } + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; } } } else { @@ -6465,19 +6709,13 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, #ifdef SCTP_MVRF int i, fnd = 0; #endif -#if !defined(__Windows__) && !defined(__Userspace__) +#if !defined(_WIN32) && !defined(__Userspace__) #if defined(__APPLE__) struct proc *proc; #endif -#ifdef __FreeBSD__ -#if __FreeBSD_version > 602000 +#if defined(__FreeBSD__) error = priv_check(curthread, PRIV_NETINET_RESERVEDPORT); -#elif __FreeBSD_version >= 500000 - error = suser((struct thread *)p); -#else - error = suser(p); -#endif #elif defined(__APPLE__) proc = (struct proc *)p; if (p) { @@ -6487,10 +6725,10 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } #else error = suser(p, 0); -#endif #endif if (error) break; +#endif SCTP_CHECK_AND_CAST(ss, optval, union sctp_sockstore, optsize); /* SUPER USER CHECK? */ @@ -6554,7 +6792,11 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) { if (laddr->ifa == NULL) { SCTPDBG(SCTP_DEBUG_OUTPUT1, "%s: NULL ifa\n", - __FUNCTION__); + __func__); + continue; + } + if ((sctp_is_addr_restricted(stcb, laddr->ifa)) && + (!sctp_is_addr_pending(stcb, laddr->ifa))) { continue; } if (laddr->ifa == ifa) { @@ -6567,7 +6809,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, error = EINVAL; goto out_of_it; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) } else { switch (addr->sa_family) { #ifdef INET @@ -6611,6 +6853,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED); out_of_it: SCTP_TCB_UNLOCK(stcb); } else { @@ -6621,23 +6864,23 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } case SCTP_BINDX_ADD_ADDR: { - struct sctp_getaddresses *addrs; -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 + struct sockaddr *sa; +#if defined(__FreeBSD__) && !defined(__Userspace__) struct thread *td; td = (struct thread *)p; #endif - SCTP_CHECK_AND_CAST(addrs, optval, struct sctp_getaddresses, - optsize); + SCTP_CHECK_AND_CAST(sa, optval, struct sockaddr, optsize); #ifdef INET - if (addrs->addr->sa_family == AF_INET) { - if (optsize < sizeof(struct sctp_getaddresses) - sizeof(struct sockaddr) + sizeof(struct sockaddr_in)) { + if (sa->sa_family == AF_INET) { + if (optsize < sizeof(struct sockaddr_in)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - if (td != NULL && (error = prison_local_ip4(td->td_ucred, &(((struct sockaddr_in *)(addrs->addr))->sin_addr)))) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (td != NULL && + (error = prison_local_ip4(td->td_ucred, &(((struct sockaddr_in *)sa)->sin_addr)))) { SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_USRREQ, error); break; } @@ -6645,48 +6888,49 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else #endif #ifdef INET6 - if (addrs->addr->sa_family == AF_INET6) { - if (optsize < sizeof(struct sctp_getaddresses) - sizeof(struct sockaddr) + sizeof(struct sockaddr_in6)) { + if (sa->sa_family == AF_INET6) { + if (optsize < sizeof(struct sockaddr_in6)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - if (td != NULL && (error = prison_local_ip6(td->td_ucred, &(((struct sockaddr_in6 *)(addrs->addr))->sin6_addr), - (SCTP_IPV6_V6ONLY(inp) != 0))) != 0) { - SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_USRREQ, error); - break; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (td != NULL && + (error = prison_local_ip6(td->td_ucred, + &(((struct sockaddr_in6 *)sa)->sin6_addr), + (SCTP_IPV6_V6ONLY(inp) != 0))) != 0) { + SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_USRREQ, error); + break; } #endif } else #endif { - error = EAFNOSUPPORT; - break; + error = EAFNOSUPPORT; + break; } - sctp_bindx_add_address(so, inp, addrs->addr, - addrs->sget_assoc_id, vrf_id, - &error, p); + sctp_bindx_add_address(so, inp, sa, vrf_id, &error, p); break; } case SCTP_BINDX_REM_ADDR: { - struct sctp_getaddresses *addrs; -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 + struct sockaddr *sa; +#if defined(__FreeBSD__) && !defined(__Userspace__) struct thread *td; td = (struct thread *)p; #endif - SCTP_CHECK_AND_CAST(addrs, optval, struct sctp_getaddresses, optsize); + SCTP_CHECK_AND_CAST(sa, optval, struct sockaddr, optsize); #ifdef INET - if (addrs->addr->sa_family == AF_INET) { - if (optsize < sizeof(struct sctp_getaddresses) - sizeof(struct sockaddr) + sizeof(struct sockaddr_in)) { + if (sa->sa_family == AF_INET) { + if (optsize < sizeof(struct sockaddr_in)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - if (td != NULL && (error = prison_local_ip4(td->td_ucred, &(((struct sockaddr_in *)(addrs->addr))->sin_addr)))) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (td != NULL && + (error = prison_local_ip4(td->td_ucred, &(((struct sockaddr_in *)sa)->sin_addr)))) { SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_USRREQ, error); break; } @@ -6694,16 +6938,16 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else #endif #ifdef INET6 - if (addrs->addr->sa_family == AF_INET6) { - if (optsize < sizeof(struct sctp_getaddresses) - sizeof(struct sockaddr) + sizeof(struct sockaddr_in6)) { + if (sa->sa_family == AF_INET6) { + if (optsize < sizeof(struct sockaddr_in6)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (td != NULL && (error = prison_local_ip6(td->td_ucred, - &(((struct sockaddr_in6 *)(addrs->addr))->sin6_addr), + &(((struct sockaddr_in6 *)sa)->sin6_addr), (SCTP_IPV6_V6ONLY(inp) != 0))) != 0) { SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_USRREQ, error); break; @@ -6715,12 +6959,10 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, error = EAFNOSUPPORT; break; } - sctp_bindx_delete_address(inp, addrs->addr, - addrs->sget_assoc_id, vrf_id, - &error); + sctp_bindx_delete_address(inp, sa, vrf_id, &error); break; } -#ifdef __APPLE__ +#if defined(__APPLE__) && !defined(__Userspace__) case SCTP_LISTEN_FIX: /* only applies to one-to-many sockets */ if (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) { @@ -6732,7 +6974,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, error = EINVAL; } break; -#endif /* __APPLE__ */ +#endif case SCTP_EVENT: { struct sctp_event *event; @@ -6812,8 +7054,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, * so return an error for sender dry events */ if ((event_type == SCTP_PCB_FLAGS_DRYEVNT) && - ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) == 0) && - ((inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) == 0) && + (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && ((event->se_assoc_id == SCTP_ALL_ASSOC) || (event->se_assoc_id == SCTP_CURRENT_ASSOC))) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOTSUP); @@ -6822,8 +7063,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (event->se_assoc_id == SCTP_FUTURE_ASSOC) || - (event->se_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((event->se_assoc_id == SCTP_FUTURE_ASSOC) || + (event->se_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); if (event->se_on) { sctp_feature_on(inp, event_type); @@ -6832,8 +7074,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } SCTP_INP_WUNLOCK(inp); } - if ((event->se_assoc_id == SCTP_CURRENT_ASSOC) || - (event->se_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((event->se_assoc_id == SCTP_CURRENT_ASSOC) || + (event->se_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -6847,6 +7090,10 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_INP_RUNLOCK(inp); } } + } else { + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } } break; } @@ -6902,8 +7149,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (info->snd_assoc_id == SCTP_FUTURE_ASSOC) || - (info->snd_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((info->snd_assoc_id == SCTP_FUTURE_ASSOC) || + (info->snd_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->def_send.sinfo_stream = info->snd_sid; policy = PR_SCTP_POLICY(inp->def_send.sinfo_flags); @@ -6913,8 +7161,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, inp->def_send.sinfo_context = info->snd_context; SCTP_INP_WUNLOCK(inp); } - if ((info->snd_assoc_id == SCTP_CURRENT_ASSOC) || - (info->snd_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((info->snd_assoc_id == SCTP_CURRENT_ASSOC) || + (info->snd_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -6941,6 +7190,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, SCTP_FIND_STCB(inp, stcb, info->pr_assoc_id); if (info->pr_policy > SCTP_PR_SCTP_MAX) { + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; @@ -6953,16 +7205,18 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (info->pr_assoc_id == SCTP_FUTURE_ASSOC) || - (info->pr_assoc_id == SCTP_ALL_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((info->pr_assoc_id == SCTP_FUTURE_ASSOC) || + (info->pr_assoc_id == SCTP_ALL_ASSOC)))) { SCTP_INP_WLOCK(inp); inp->def_send.sinfo_flags &= 0xfff0; inp->def_send.sinfo_flags |= info->pr_policy; inp->def_send.sinfo_timetolive = info->pr_value; SCTP_INP_WUNLOCK(inp); } - if ((info->pr_assoc_id == SCTP_CURRENT_ASSOC) || - (info->pr_assoc_id == SCTP_ALL_ASSOC)) { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + ((info->pr_assoc_id == SCTP_CURRENT_ASSOC) || + (info->pr_assoc_id == SCTP_ALL_ASSOC))) { SCTP_INP_RLOCK(inp); LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { SCTP_TCB_LOCK(stcb); @@ -7024,8 +7278,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if ((stcb != NULL) && (net == NULL)) { #ifdef INET if (addr->sa_family == AF_INET) { - struct sockaddr_in *sin; + sin = (struct sockaddr_in *)addr; if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -7068,6 +7322,14 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, break; } } + if (thlds->spt_pathcpthld != 0xffff) { + if (stcb != NULL) { + SCTP_TCB_UNLOCK(stcb); + } + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + break; + } if (stcb != NULL) { if (net != NULL) { net->failure_threshold = thlds->spt_pathmaxrxt; @@ -7082,7 +7344,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_17); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -7111,7 +7375,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_18); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -7134,7 +7400,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (thlds->spt_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (thlds->spt_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); inp->sctp_ep.def_net_failure = thlds->spt_pathmaxrxt; inp->sctp_ep.def_net_pf_threshold = thlds->spt_pathpfthld; @@ -7192,8 +7459,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, if ((stcb != NULL) && (net == NULL)) { #ifdef INET if (addr->sa_family == AF_INET) { - struct sockaddr_in *sin; + sin = (struct sockaddr_in *)addr; if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -7247,7 +7514,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (encaps->sue_assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (encaps->sue_assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); inp->sctp_ep.port = encaps->sue_port; SCTP_INP_WUNLOCK(inp); @@ -7272,7 +7540,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (av->assoc_value == 0) { inp->ecn_supported = 0; @@ -7301,7 +7570,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (av->assoc_value == 0) { inp->prsctp_supported = 0; @@ -7330,7 +7600,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { if ((av->assoc_value == 0) && (inp->asconf_supported == 1)) { /* AUTH is required for ASCONF */ @@ -7366,7 +7637,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { if ((av->assoc_value != 0) && (inp->auth_supported == 0)) { /* AUTH is required for ASCONF */ @@ -7410,7 +7682,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (av->assoc_value == 0) { inp->reconfig_supported = 0; @@ -7439,7 +7712,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (av->assoc_value == 0) { inp->nrsack_supported = 0; @@ -7468,7 +7742,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); if (av->assoc_value == 0) { inp->pktdrop_supported = 0; @@ -7508,7 +7783,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || - (av->assoc_id == SCTP_FUTURE_ASSOC)) { + ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) && + (av->assoc_id == SCTP_FUTURE_ASSOC))) { SCTP_INP_WLOCK(inp); inp->max_cwnd = av->assoc_value; SCTP_INP_WUNLOCK(inp); @@ -7519,6 +7795,21 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } break; } + case SCTP_ACCEPT_ZERO_CHECKSUM: + { + uint32_t *value; + + SCTP_CHECK_AND_CAST(value, optval, uint32_t, optsize); + SCTP_INP_WLOCK(inp); + if (*value != 0) { + inp->zero_checksum = 1; + } else { + inp->zero_checksum = 0; + } + SCTP_INP_WUNLOCK(inp); + break; + } + default: SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOPROTOOPT); error = ENOPROTOOPT; @@ -7527,15 +7818,33 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, return (error); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) int sctp_ctloutput(struct socket *so, struct sockopt *sopt) { +#if defined(__FreeBSD__) + struct epoch_tracker et; + struct sctp_inpcb *inp; +#endif void *optval = NULL; - size_t optsize = 0; void *p; + size_t optsize = 0; int error = 0; +#if defined(__FreeBSD__) + if ((sopt->sopt_level == SOL_SOCKET) && + (sopt->sopt_name == SO_SETFIB)) { + inp = (struct sctp_inpcb *)so->so_pcb; + if (inp == NULL) { + SCTP_LTRACE_ERR_RET(so->so_pcb, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOBUFS); + return (EINVAL); + } + SCTP_INP_WLOCK(inp); + inp->fibnum = so->so_fibnum; + SCTP_INP_WUNLOCK(inp); + return (0); + } +#endif if (sopt->sopt_level != IPPROTO_SCTP) { /* wrong proto level... send back up to IP */ #ifdef INET6 @@ -7551,6 +7860,10 @@ sctp_ctloutput(struct socket *so, struct sockopt *sopt) return (error); } optsize = sopt->sopt_valsize; + if (optsize > SCTP_SOCKET_OPTION_LIMIT) { + SCTP_LTRACE_ERR_RET(so->so_pcb, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOBUFS); + return (ENOBUFS); + } if (optsize) { SCTP_MALLOC(optval, void *, optsize, SCTP_M_SOCKOPT); if (optval == NULL) { @@ -7563,13 +7876,19 @@ sctp_ctloutput(struct socket *so, struct sockopt *sopt) goto out; } } -#if (defined(__FreeBSD__) && __FreeBSD_version >= 500000) || defined(__Windows__) +#if defined(__FreeBSD__) || defined(_WIN32) p = (void *)sopt->sopt_td; #else p = (void *)sopt->sopt_p; #endif if (sopt->sopt_dir == SOPT_SET) { +#if defined(__FreeBSD__) + NET_EPOCH_ENTER(et); +#endif error = sctp_setopt(so, sopt->sopt_name, optval, optsize, p); +#if defined(__FreeBSD__) + NET_EPOCH_EXIT(et); +#endif } else if (sopt->sopt_dir == SOPT_GET) { error = sctp_getopt(so, sopt->sopt_name, optval, &optsize, p); } else { @@ -7588,21 +7907,20 @@ sctp_ctloutput(struct socket *so, struct sockopt *sopt) #endif #ifdef INET -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__Userspace__) +int +sctp_connect(struct socket *so, struct sockaddr *addr) +{ + void *p = NULL; +#elif defined(__FreeBSD__) static int sctp_connect(struct socket *so, struct sockaddr *addr, struct thread *p) { -#else -#if defined(__FreeBSD__) || defined(__APPLE__) +#elif defined(__APPLE__) static int sctp_connect(struct socket *so, struct sockaddr *addr, struct proc *p) { -#elif defined(__Panda__) || defined(__Userspace__) -int -sctp_connect(struct socket *so, struct sockaddr *addr) -{ - void *p = NULL; -#elif defined(__Windows__) +#elif defined(_WIN32) static int sctp_connect(struct socket *so, struct sockaddr *addr, PKTHREAD p) { @@ -7613,6 +7931,8 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) struct sockaddr *addr = mtod(nam, struct sockaddr *); #endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; #endif #ifdef SCTP_MVRF int i, fnd = 0; @@ -7635,24 +7955,24 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) } #if defined(__Userspace__) - /* TODO __Userspace__ falls into this code for IPv6 stuff at the moment... */ + /* TODO __Userspace__ falls into this code for IPv6 stuff at the moment... */ #endif -#if !defined(__Windows__) && !defined(__Userspace_os_Linux) && !defined(__Userspace_os_Windows) +#if !defined(_WIN32) && !defined(__linux__) && !defined(__EMSCRIPTEN__) switch (addr->sa_family) { #ifdef INET6 case AF_INET6: { -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - struct sockaddr_in6 *sin6p; +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct sockaddr_in6 *sin6; #endif if (addr->sa_len != sizeof(struct sockaddr_in6)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - sin6p = (struct sockaddr_in6 *)addr; - if (p != NULL && (error = prison_remote_ip6(p->td_ucred, &sin6p->sin6_addr)) != 0) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + sin6 = (struct sockaddr_in6 *)addr; + if (p != NULL && (error = prison_remote_ip6(p->td_ucred, &sin6->sin6_addr)) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); return (error); } @@ -7663,19 +7983,19 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) #ifdef INET case AF_INET: { -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - struct sockaddr_in *sinp; +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct sockaddr_in *sin; #endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) if (addr->sa_len != sizeof(struct sockaddr_in)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 - sinp = (struct sockaddr_in *)addr; - if (p != NULL && (error = prison_remote_ip4(p->td_ucred, &sinp->sin_addr)) != 0) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + sin = (struct sockaddr_in *)addr; + if (p != NULL && (error = prison_remote_ip4(p->td_ucred, &sin->sin_addr)) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); return (error); } @@ -7691,13 +8011,15 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) SCTP_INP_INCR_REF(inp); SCTP_ASOC_CREATE_LOCK(inp); create_lock_on = 1; - +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) { /* Should I really unlock ? */ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EFAULT); - error = EFAULT; + error = EFAULT; goto out_now; } #ifdef INET6 @@ -7716,8 +8038,7 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) goto out_now; } #endif - if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == - SCTP_PCB_FLAGS_UNBOUND) { + if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { /* Bind a ephemeral port */ error = sctp_inpcb_bind(so, NULL, NULL, p); if (error) { @@ -7777,29 +8098,26 @@ sctp_connect(struct socket *so, struct mbuf *nam, struct proc *p) } #endif /* We are GOOD to go */ - stcb = sctp_aloc_assoc(inp, addr, &error, 0, vrf_id, p); + stcb = sctp_aloc_assoc_connected(inp, addr, &error, 0, 0, vrf_id, + inp->sctp_ep.pre_open_stream_count, + inp->sctp_ep.port, p, + SCTP_INITIALIZE_AUTH_PARAMS); if (stcb == NULL) { /* Gak! no memory */ goto out_now; } - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT); + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); - /* initialize authentication parameters for the assoc */ - sctp_initialize_auth_params(inp, stcb); - sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); SCTP_TCB_UNLOCK(stcb); out_now: +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif if (create_lock_on) { SCTP_ASOC_CREATE_UNLOCK(inp); } - SCTP_INP_DECR_REF(inp); return (error); } @@ -7882,7 +8200,7 @@ sctpconn_connect(struct socket *so, struct sockaddr *addr) goto out_now; } #endif - if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == SCTP_PCB_FLAGS_UNBOUND) { + if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { /* Bind a ephemeral port */ error = sctp_inpcb_bind(so, NULL, NULL, p); if (error) { @@ -7942,22 +8260,17 @@ sctpconn_connect(struct socket *so, struct sockaddr *addr) } #endif /* We are GOOD to go */ - stcb = sctp_aloc_assoc(inp, addr, &error, 0, vrf_id, p); + stcb = sctp_aloc_assoc_connected(inp, addr, &error, 0, 0, vrf_id, + inp->sctp_ep.pre_open_stream_count, + inp->sctp_ep.port, p, + SCTP_INITIALIZE_AUTH_PARAMS); if (stcb == NULL) { /* Gak! no memory */ goto out_now; } - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT); + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); - /* initialize authentication parameters for the assoc */ - sctp_initialize_auth_params(inp, stcb); - sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); SCTP_TCB_UNLOCK(stcb); out_now: @@ -7970,16 +8283,12 @@ sctpconn_connect(struct socket *so, struct sockaddr *addr) } #endif int -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -#if __FreeBSD_version >= 700000 +#if defined(__Userspace__) +sctp_listen(struct socket *so, int backlog, struct proc *p) +#elif defined(__FreeBSD__) sctp_listen(struct socket *so, int backlog, struct thread *p) -#else -sctp_listen(struct socket *so, struct thread *p) -#endif -#elif defined(__Windows__) +#elif defined(_WIN32) sctp_listen(struct socket *so, int backlog, PKTHREAD p) -#elif defined(__Userspace__) -sctp_listen(struct socket *so, int backlog, struct proc *p) #else sctp_listen(struct socket *so, struct proc *p) #endif @@ -8036,7 +8345,7 @@ sctp_listen(struct socket *so, struct proc *p) if (tinp && (tinp != inp) && ((tinp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) == 0) && ((tinp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && - (tinp->sctp_socket->so_qlimit)) { + (SCTP_IS_LISTENING(tinp))) { /* we have a listener already and its not this inp. */ SCTP_INP_DECR_REF(tinp); return (EADDRINUSE); @@ -8099,29 +8408,21 @@ sctp_listen(struct socket *so, struct proc *p) if (tinp && (tinp != inp) && ((tinp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) == 0) && ((tinp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && - (tinp->sctp_socket->so_qlimit)) { + (SCTP_IS_LISTENING(tinp))) { /* we have a listener already and its not this inp. */ SCTP_INP_DECR_REF(tinp); return (EADDRINUSE); } else if (tinp) { - SCTP_INP_DECR_REF(inp); + SCTP_INP_DECR_REF(tinp); } } } - SCTP_INP_RLOCK(inp); + SCTP_INP_INFO_WLOCK(); + SCTP_INP_WLOCK(inp); #ifdef SCTP_LOCK_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOCK_LOGGING_ENABLE) { sctp_log_lock(inp, (struct sctp_tcb *)NULL, SCTP_LOG_LOCK_SOCK); } -#endif - SOCK_LOCK(so); -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Userspace__) - error = solisten_proto_check(so); - SOCK_UNLOCK(so); - if (error) { - SCTP_INP_RUNLOCK(inp); - return (error); - } #endif if ((sctp_is_feature_on(inp, SCTP_PCB_FLAGS_PORTREUSE)) && (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { @@ -8132,38 +8433,68 @@ sctp_listen(struct socket *so, struct proc *p) * - We must then move the guy that was listener to the TCP Pool. */ if (sctp_swap_inpcb_for_listen(inp)) { - SCTP_INP_RUNLOCK(inp); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EADDRINUSE); - return (EADDRINUSE); + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + goto out; } } - +#if defined(__FreeBSD__) || defined(__Userspace__) + SOCK_LOCK(so); + error = solisten_proto_check(so); + if (error) { + SOCK_UNLOCK(so); + goto out; + } +#endif if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && (inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED)) { - /* We are already connected AND the TCP model */ - SCTP_INP_RUNLOCK(inp); - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EADDRINUSE); - return (EADDRINUSE); + SOCK_UNLOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + solisten_proto_abort(so); +#endif + error = EADDRINUSE; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + goto out; + } + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && + ((inp->sctp_flags & SCTP_PCB_FLAGS_WAS_CONNECTED) || + (inp->sctp_flags & SCTP_PCB_FLAGS_WAS_ABORTED))) { + SOCK_UNLOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + solisten_proto_abort(so); +#endif + error = EINVAL; + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); + goto out; } - SCTP_INP_RUNLOCK(inp); if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { - /* We must do a bind. */ - if ((error = sctp_inpcb_bind(so, NULL, NULL, p))) { + if ((error = sctp_inpcb_bind_locked(inp, NULL, NULL, p))) { + SOCK_UNLOCK(so); +#if defined(__FreeBSD__) && !defined(__Userspace__) + solisten_proto_abort(so); +#endif /* bind error, probably perm */ - return (error); + goto out; } } - SOCK_LOCK(so); -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Windows__) || defined(__Userspace__) -#if __FreeBSD_version >= 700000 || defined(__Windows__) || defined(__Userspace__) - /* It appears for 7.0 and on, we must always call this. */ - solisten_proto(so, backlog); -#else +#if defined(__FreeBSD__) && !defined(__Userspace__) if ((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) == 0) { - solisten_proto(so); + solisten_proto(so, backlog); + SOCK_UNLOCK(so); + inp->sctp_flags |= SCTP_PCB_FLAGS_ACCEPTING; + } else { + solisten_proto_abort(so); + SOCK_UNLOCK(so); + if (backlog > 0) { + inp->sctp_flags |= SCTP_PCB_FLAGS_ACCEPTING; + } else { + inp->sctp_flags &= ~SCTP_PCB_FLAGS_ACCEPTING; + } } +#elif defined(_WIN32) || defined(__Userspace__) + solisten_proto(so, backlog); #endif -#endif +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) { /* remove the ACCEPTCONN flag for one-to-many sockets */ #if defined(__Userspace__) @@ -8172,43 +8503,31 @@ sctp_listen(struct socket *so, struct proc *p) so->so_options &= ~SO_ACCEPTCONN; #endif } - -#if __FreeBSD_version >= 700000 || defined(__Windows__) || defined(__Userspace__) - if (backlog == 0) { - /* turning off listen */ -#if defined(__Userspace__) - so->so_options &= ~SCTP_SO_ACCEPTCONN; -#else - so->so_options &= ~SO_ACCEPTCONN; -#endif + SOCK_UNLOCK(so); + if (backlog > 0) { + inp->sctp_flags |= SCTP_PCB_FLAGS_ACCEPTING; + } else { + inp->sctp_flags &= ~SCTP_PCB_FLAGS_ACCEPTING; } #endif - SOCK_UNLOCK(so); +out: + SCTP_INP_WUNLOCK(inp); + SCTP_INP_INFO_WUNLOCK(); return (error); } static int sctp_defered_wakeup_cnt = 0; int -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) sctp_accept(struct socket *so, struct sockaddr **addr) { -#elif defined(__Panda__) -sctp_accept(struct socket *so, struct sockaddr *addr, int *namelen, - void *accept_info, int *accept_info_len) -{ -#else -sctp_accept(struct socket *so, struct mbuf *nam) -{ - struct sockaddr *addr = mtod(nam, struct sockaddr *); -#endif struct sctp_tcb *stcb; struct sctp_inpcb *inp; union sctp_sockstore store; #ifdef INET6 -#ifdef SCTP_KAME +#if defined(SCTP_KAME) && defined(SCTP_EMBEDDED_V6_SCOPE) int error; -#endif /* SCTP_KAME */ +#endif #endif inp = (struct sctp_inpcb *)so->so_pcb; @@ -8216,53 +8535,92 @@ sctp_accept(struct socket *so, struct mbuf *nam) SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (ECONNRESET); } - SCTP_INP_RLOCK(inp); + SCTP_INP_WLOCK(inp); if (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) { - SCTP_INP_RUNLOCK(inp); + SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EOPNOTSUPP); return (EOPNOTSUPP); } if (so->so_state & SS_ISDISCONNECTED) { - SCTP_INP_RUNLOCK(inp); + SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ECONNABORTED); return (ECONNABORTED); } stcb = LIST_FIRST(&inp->sctp_asoc_list); if (stcb == NULL) { - SCTP_INP_RUNLOCK(inp); + SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (ECONNRESET); } SCTP_TCB_LOCK(stcb); - SCTP_INP_RUNLOCK(inp); store = stcb->asoc.primary_destination->ro._l_addr; - stcb->asoc.state &= ~SCTP_STATE_IN_ACCEPT_QUEUE; - SCTP_TCB_UNLOCK(stcb); + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE); + /* Wake any delayed sleep action */ + if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { + inp->sctp_flags &= ~SCTP_PCB_FLAGS_DONT_WAKE; + if (inp->sctp_flags & SCTP_PCB_FLAGS_WAKEOUTPUT) { + inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEOUTPUT; + SOCKBUF_LOCK(&inp->sctp_socket->so_snd); + if (sowriteable(inp->sctp_socket)) { +#if defined(__Userspace__) + /*__Userspace__ calling sowwakup_locked because of SOCKBUF_LOCK above. */ +#endif +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) + sowwakeup_locked(inp->sctp_socket); +#else +#if defined(__APPLE__) + /* socket is locked */ +#endif + sowwakeup(inp->sctp_socket); +#endif + } else { + SOCKBUF_UNLOCK(&inp->sctp_socket->so_snd); + } + } + if (inp->sctp_flags & SCTP_PCB_FLAGS_WAKEINPUT) { + inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEINPUT; + SOCKBUF_LOCK(&inp->sctp_socket->so_rcv); + if (soreadable(inp->sctp_socket)) { + sctp_defered_wakeup_cnt++; +#if defined(__Userspace__) + /*__Userspace__ calling sorwakup_locked because of SOCKBUF_LOCK above */ +#endif +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) + sorwakeup_locked(inp->sctp_socket); +#else +#if defined(__APPLE__) + /* socket is locked */ +#endif + sorwakeup(inp->sctp_socket); +#endif + } else { + SOCKBUF_UNLOCK(&inp->sctp_socket->so_rcv); + } + } + } + SCTP_INP_WUNLOCK(inp); + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_19); + } else { + SCTP_TCB_UNLOCK(stcb); + } switch (store.sa.sa_family) { #ifdef INET case AF_INET: { struct sockaddr_in *sin; -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) SCTP_MALLOC_SONAME(sin, struct sockaddr_in *, sizeof *sin); if (sin == NULL) return (ENOMEM); -#else - sin = (struct sockaddr_in *)addr; - bzero((caddr_t)sin, sizeof(*sin)); -#endif sin->sin_family = AF_INET; #ifdef HAVE_SIN_LEN sin->sin_len = sizeof(*sin); #endif sin->sin_port = store.sin.sin_port; sin->sin_addr = store.sin.sin_addr; -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) *addr = (struct sockaddr *)sin; -#elif !defined(__Panda__) - SCTP_BUF_LEN(nam) = sizeof(*sin); -#endif break; } #endif @@ -8271,14 +8629,9 @@ sctp_accept(struct socket *so, struct mbuf *nam) { struct sockaddr_in6 *sin6; -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) SCTP_MALLOC_SONAME(sin6, struct sockaddr_in6 *, sizeof *sin6); if (sin6 == NULL) return (ENOMEM); -#else - sin6 = (struct sockaddr_in6 *)addr; - bzero((caddr_t)sin6, sizeof(*sin6)); -#endif sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN sin6->sin6_len = sizeof(*sin6); @@ -8302,11 +8655,7 @@ sctp_accept(struct socket *so, struct mbuf *nam) sin6->sin6_scope_id = 0; /* XXX */ #endif /* SCTP_KAME */ #endif /* SCTP_EMBEDDED_V6_SCOPE */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) *addr = (struct sockaddr *)sin6; -#elif !defined(__Panda__) - SCTP_BUF_LEN(nam) = sizeof(*sin6); -#endif break; } #endif @@ -8333,72 +8682,15 @@ sctp_accept(struct socket *so, struct mbuf *nam) /* TSNH */ break; } - /* Wake any delayed sleep action */ - if (inp->sctp_flags & SCTP_PCB_FLAGS_DONT_WAKE) { - SCTP_INP_WLOCK(inp); - inp->sctp_flags &= ~SCTP_PCB_FLAGS_DONT_WAKE; - if (inp->sctp_flags & SCTP_PCB_FLAGS_WAKEOUTPUT) { - inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEOUTPUT; - SCTP_INP_WUNLOCK(inp); - SOCKBUF_LOCK(&inp->sctp_socket->so_snd); - if (sowriteable(inp->sctp_socket)) { -#if defined(__Userspace__) - /*__Userspace__ calling sowwakup_locked because of SOCKBUF_LOCK above. */ -#endif -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) - sowwakeup_locked(inp->sctp_socket); -#else -#if defined(__APPLE__) - /* socket is locked */ -#endif - sowwakeup(inp->sctp_socket); -#endif - } else { - SOCKBUF_UNLOCK(&inp->sctp_socket->so_snd); - } - SCTP_INP_WLOCK(inp); - } - if (inp->sctp_flags & SCTP_PCB_FLAGS_WAKEINPUT) { - inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEINPUT; - SCTP_INP_WUNLOCK(inp); - SOCKBUF_LOCK(&inp->sctp_socket->so_rcv); - if (soreadable(inp->sctp_socket)) { - sctp_defered_wakeup_cnt++; -#if defined(__Userspace__) - /*__Userspace__ calling sorwakup_locked because of SOCKBUF_LOCK above */ -#endif -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) - sorwakeup_locked(inp->sctp_socket); -#else -#if defined(__APPLE__) - /* socket is locked */ -#endif - sorwakeup(inp->sctp_socket); -#endif - } else { - SOCKBUF_UNLOCK(&inp->sctp_socket->so_rcv); - } - SCTP_INP_WLOCK(inp); - } - SCTP_INP_WUNLOCK(inp); - } - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - SCTP_TCB_LOCK(stcb); - sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_7); - } return (0); } #ifdef INET int -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) sctp_ingetaddr(struct socket *so, struct sockaddr **addr) { struct sockaddr_in *sin; -#elif defined(__Panda__) -sctp_ingetaddr(struct socket *so, struct sockaddr *addr) -{ - struct sockaddr_in *sin = (struct sockaddr_in *)addr; #else sctp_ingetaddr(struct socket *so, struct mbuf *nam) { @@ -8411,12 +8703,10 @@ sctp_ingetaddr(struct socket *so, struct mbuf *nam) /* * Do the malloc first in case it blocks. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_MALLOC_SONAME(sin, struct sockaddr_in *, sizeof *sin); if (sin == NULL) return (ENOMEM); -#elif defined(__Panda__) - bzero(sin, sizeof(*sin)); #else SCTP_BUF_LEN(nam) = sizeof(*sin); memset(sin, 0, sizeof(*sin)); @@ -8427,7 +8717,7 @@ sctp_ingetaddr(struct socket *so, struct mbuf *nam) #endif inp = (struct sctp_inpcb *)so->so_pcb; if (!inp) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -8498,7 +8788,7 @@ sctp_ingetaddr(struct socket *so, struct mbuf *nam) } } if (!fnd) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin); #endif SCTP_INP_RUNLOCK(inp); @@ -8507,21 +8797,17 @@ sctp_ingetaddr(struct socket *so, struct mbuf *nam) } } SCTP_INP_RUNLOCK(inp); -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) (*addr) = (struct sockaddr *)sin; #endif return (0); } int -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) sctp_peeraddr(struct socket *so, struct sockaddr **addr) { struct sockaddr_in *sin; -#elif defined(__Panda__) -sctp_peeraddr(struct socket *so, struct sockaddr *addr) -{ - struct sockaddr_in *sin = (struct sockaddr_in *)addr; #else sctp_peeraddr(struct socket *so, struct mbuf *nam) { @@ -8535,12 +8821,10 @@ sctp_peeraddr(struct socket *so, struct mbuf *nam) struct sctp_nets *net; /* Do the malloc first in case it blocks. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_MALLOC_SONAME(sin, struct sockaddr_in *, sizeof *sin); if (sin == NULL) return (ENOMEM); -#elif defined(__Panda__) - memset(sin, 0, sizeof(*sin)); #else SCTP_BUF_LEN(nam) = sizeof(*sin); memset(sin, 0, sizeof(*sin)); @@ -8554,7 +8838,7 @@ sctp_peeraddr(struct socket *so, struct mbuf *nam) if ((inp == NULL) || ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0)) { /* UDP type and listeners will drop out here */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOTCONN); @@ -8567,7 +8851,7 @@ sctp_peeraddr(struct socket *so, struct mbuf *nam) } SCTP_INP_RUNLOCK(inp); if (stcb == NULL) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -8586,45 +8870,56 @@ sctp_peeraddr(struct socket *so, struct mbuf *nam) SCTP_TCB_UNLOCK(stcb); if (!fnd) { /* No IPv4 address */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); return (ENOENT); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) (*addr) = (struct sockaddr *)sin; #endif return (0); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) -struct pr_usrreqs sctp_usrreqs = { +#if !defined(__Userspace__) #if defined(__FreeBSD__) - .pru_abort = sctp_abort, - .pru_accept = sctp_accept, - .pru_attach = sctp_attach, - .pru_bind = sctp_bind, - .pru_connect = sctp_connect, - .pru_control = in_control, -#if __FreeBSD_version >= 690000 - .pru_close = sctp_close, - .pru_detach = sctp_close, - .pru_sopoll = sopoll_generic, - .pru_flush = sctp_flush, +#define SCTP_PROTOSW \ + .pr_protocol = IPPROTO_SCTP, \ + .pr_ctloutput = sctp_ctloutput, \ + .pr_abort = sctp_abort, \ + .pr_accept = sctp_accept, \ + .pr_attach = sctp_attach, \ + .pr_bind = sctp_bind, \ + .pr_connect = sctp_connect, \ + .pr_control = in_control, \ + .pr_close = sctp_close, \ + .pr_detach = sctp_close, \ + .pr_sopoll = sopoll_generic, \ + .pr_flush = sctp_flush, \ + .pr_disconnect = sctp_disconnect, \ + .pr_listen = sctp_listen, \ + .pr_peeraddr = sctp_peeraddr, \ + .pr_send = sctp_sendm, \ + .pr_shutdown = sctp_shutdown, \ + .pr_sockaddr = sctp_ingetaddr, \ + .pr_sosend = sctp_sosend, \ + .pr_soreceive = sctp_soreceive \ + +struct protosw sctp_seqpacket_protosw = { + .pr_type = SOCK_SEQPACKET, + .pr_flags = PR_WANTRCVD, + SCTP_PROTOSW +}; + +struct protosw sctp_stream_protosw = { + .pr_type = SOCK_STREAM, + .pr_flags = PR_CONNREQUIRED | PR_WANTRCVD, + SCTP_PROTOSW +}; #else - .pru_detach = sctp_detach, - .pru_sopoll = sopoll, -#endif - .pru_disconnect = sctp_disconnect, - .pru_listen = sctp_listen, - .pru_peeraddr = sctp_peeraddr, - .pru_send = sctp_sendm, - .pru_shutdown = sctp_shutdown, - .pru_sockaddr = sctp_ingetaddr, - .pru_sosend = sctp_sosend, - .pru_soreceive = sctp_soreceive -#elif defined(__APPLE__) +struct pr_usrreqs sctp_usrreqs = { +#if defined(__APPLE__) .pru_abort = sctp_abort, .pru_accept = sctp_accept, .pru_attach = sctp_attach, @@ -8645,7 +8940,7 @@ struct pr_usrreqs sctp_usrreqs = { .pru_sosend = sctp_sosend, .pru_soreceive = sctp_soreceive, .pru_sopoll = sopoll -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) sctp_abort, sctp_accept, sctp_attach, @@ -8671,129 +8966,7 @@ struct pr_usrreqs sctp_usrreqs = { sctp_close #endif }; -#elif !defined(__Panda__) && !defined(__Userspace__) -int -sctp_usrreq(so, req, m, nam, control) - struct socket *so; - int req; - struct mbuf *m, *nam, *control; -{ - struct proc *p = curproc; - uint32_t vrf_id; - struct sctp_vrf *vrf; - int error; - int family; - struct sctp_inpcb *inp = (struct sctp_inpcb *)so->so_pcb; - - error = 0; - family = so->so_proto->pr_domain->dom_family; - if (req == PRU_CONTROL) { - switch (family) { - case PF_INET: - error = in_control(so, (long)m, (caddr_t)nam, - (struct ifnet *)control); - break; -#ifdef INET6 - case PF_INET6: - error = in6_control(so, (long)m, (caddr_t)nam, - (struct ifnet *)control, p); - break; #endif - default: - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - } - return (error); - } - switch (req) { - case PRU_ATTACH: - error = sctp_attach(so, family, p); - break; - case PRU_DETACH: - error = sctp_detach(so); - break; - case PRU_BIND: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp_bind(so, nam, p); - break; - case PRU_LISTEN: - error = sctp_listen(so, p); - break; - case PRU_CONNECT: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp_connect(so, nam, p); - break; - case PRU_DISCONNECT: - error = sctp_disconnect(so); - break; - case PRU_ACCEPT: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp_accept(so, nam); - break; - case PRU_SHUTDOWN: - error = sctp_shutdown(so); - break; - - case PRU_RCVD: - /* - * For Open and Net BSD, this is real ugly. The mbuf *nam - * that is passed (by soreceive()) is the int flags c ast as - * a (mbuf *) yuck! - */ - break; - - case PRU_SEND: - /* Flags are ignored */ - { - struct sockaddr *addr; - - if (nam == NULL) - addr = NULL; - else - addr = mtod(nam, struct sockaddr *); - - error = sctp_sendm(so, 0, m, addr, control, p); - } - break; - case PRU_ABORT: - error = sctp_abort(so); - break; - - case PRU_SENSE: - error = 0; - break; - case PRU_RCVOOB: - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - break; - case PRU_SENDOOB: - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - break; - case PRU_PEERADDR: - error = sctp_peeraddr(so, nam); - break; - case PRU_SOCKADDR: - error = sctp_ingetaddr(so, nam); - break; - case PRU_SLOWTIMO: - error = 0; - break; - default: - break; - } - return (error); -} - #endif #endif @@ -8816,7 +8989,7 @@ register_recv_cb(struct socket *so, } int -register_send_cb(struct socket *so, uint32_t sb_threshold, int (*send_cb)(struct socket *sock, uint32_t sb_free)) +register_send_cb(struct socket *so, uint32_t sb_threshold, int (*send_cb)(struct socket *sock, uint32_t sb_free, void *ulp_info)) { struct sctp_inpcb *inp; @@ -8850,4 +9023,23 @@ register_ulp_info (struct socket *so, void *ulp_info) SCTP_INP_WUNLOCK(inp); return (1); } + +int +retrieve_ulp_info (struct socket *so, void **pulp_info) +{ + struct sctp_inpcb *inp; + + if (pulp_info == NULL) { + return (0); + } + + inp = (struct sctp_inpcb *) so->so_pcb; + if (inp == NULL) { + return (0); + } + SCTP_INP_RLOCK(inp); + *pulp_info = inp->ulp_info; + SCTP_INP_RUNLOCK(inp); + return (1); +} #endif diff --git a/netwerk/sctp/src/netinet/sctp_var.h b/netwerk/sctp/src/netinet/sctp_var.h index fcc954ebdc..de26bb1d39 100755 --- a/netwerk/sctp/src/netinet/sctp_var.h +++ b/netwerk/sctp/src/netinet/sctp_var.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctp_var.h 275427 2014-12-02 20:29:29Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_VAR_H_ @@ -42,10 +44,13 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_var.h 275427 2014-12-02 20:29:29Z tuex #if defined(_KERNEL) || defined(__Userspace__) -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) +#if defined(__FreeBSD__) +extern struct protosw sctp_seqpacket_protosw, sctp_stream_protosw; +#else extern struct pr_usrreqs sctp_usrreqs; #endif - +#endif #define sctp_feature_on(inp, feature) (inp->sctp_features |= feature) #define sctp_feature_off(inp, feature) (inp->sctp_features &= ~feature) @@ -88,9 +93,9 @@ extern struct pr_usrreqs sctp_usrreqs; #define sctp_sbspace(asoc, sb) ((long) ((sctp_maxspace(sb) > (asoc)->sb_cc) ? (sctp_maxspace(sb) - (asoc)->sb_cc) : 0)) -#define sctp_sbspace_failedmsgs(sb) ((long) ((sctp_maxspace(sb) > (sb)->sb_cc) ? (sctp_maxspace(sb) - (sb)->sb_cc) : 0)) +#define sctp_sbspace_failedmsgs(sb) ((long) ((sctp_maxspace(sb) > SCTP_SBAVAIL(sb)) ? (sctp_maxspace(sb) - SCTP_SBAVAIL(sb)) : 0)) -#define sctp_sbspace_sub(a,b) ((a > b) ? (a - b) : 0) +#define sctp_sbspace_sub(a,b) (((a) > (b)) ? ((a) - (b)) : 0) /* * I tried to cache the readq entries at one point. But the reality @@ -101,11 +106,19 @@ extern struct pr_usrreqs sctp_usrreqs; * an mbuf cache as well so it is not really worth doing, at least * right now :-D */ - +#ifdef INVARIANTS +#define sctp_free_a_readq(_stcb, _readq) { \ + if ((_readq)->on_strm_q) \ + panic("On strm q stcb:%p readq:%p", (_stcb), (_readq)); \ + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ + SCTP_DECR_READQ_COUNT(); \ +} +#else #define sctp_free_a_readq(_stcb, _readq) { \ SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ SCTP_DECR_READQ_COUNT(); \ } +#endif #define sctp_alloc_a_readq(_stcb, _readq) { \ (_readq) = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_readq), struct sctp_queued_to_read); \ @@ -176,17 +189,11 @@ extern struct pr_usrreqs sctp_usrreqs; } \ } -#if defined(__FreeBSD__) && __FreeBSD_version > 500000 - +#if defined(__FreeBSD__) && !defined(__Userspace__) #define sctp_free_remote_addr(__net) { \ if ((__net)) { \ if (SCTP_DECREMENT_AND_CHECK_REFCOUNT(&(__net)->ref_count)) { \ - (void)SCTP_OS_TIMER_STOP(&(__net)->rxt_timer.timer); \ - (void)SCTP_OS_TIMER_STOP(&(__net)->pmtu_timer.timer); \ - if ((__net)->ro.ro_rt) { \ - RTFREE((__net)->ro.ro_rt); \ - (__net)->ro.ro_rt = NULL; \ - } \ + RO_NHFREE(&(__net)->ro); \ if ((__net)->src_addr_selected) { \ sctp_free_ifa((__net)->ro._s_addr); \ (__net)->ro._s_addr = NULL; \ @@ -215,22 +222,17 @@ extern struct pr_usrreqs sctp_usrreqs; atomic_add_int(&(sb)->sb_cc,SCTP_BUF_LEN((m))); \ atomic_add_int(&(sb)->sb_mbcnt, MSIZE); \ if (stcb) { \ - atomic_add_int(&(stcb)->asoc.sb_cc,SCTP_BUF_LEN((m))); \ + atomic_add_int(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ atomic_add_int(&(stcb)->asoc.my_rwnd_control_len, MSIZE); \ } \ if (SCTP_BUF_TYPE(m) != MT_DATA && SCTP_BUF_TYPE(m) != MT_HEADER && \ SCTP_BUF_TYPE(m) != MT_OOBDATA) \ atomic_add_int(&(sb)->sb_ctl,SCTP_BUF_LEN((m))); \ } - #else /* FreeBSD Version <= 500000 or non-FreeBSD */ - #define sctp_free_remote_addr(__net) { \ if ((__net)) { \ if (SCTP_DECREMENT_AND_CHECK_REFCOUNT(&(__net)->ref_count)) { \ - (void)SCTP_OS_TIMER_STOP(&(__net)->rxt_timer.timer); \ - (void)SCTP_OS_TIMER_STOP(&(__net)->pmtu_timer.timer); \ - (void)SCTP_OS_TIMER_STOP(&(__net)->hb_timer.timer); \ if ((__net)->ro.ro_rt) { \ RTFREE((__net)->ro.ro_rt); \ (__net)->ro.ro_rt = NULL; \ @@ -247,31 +249,6 @@ extern struct pr_usrreqs sctp_usrreqs; } \ } -#if defined(__Panda__) -#define sctp_sbfree(ctl, stcb, sb, m) { \ - if ((sb)->sb_cc >= (uint32_t)SCTP_BUF_LEN((m))) { \ - atomic_subtract_int(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ - } else { \ - (sb)->sb_cc = 0; \ - } \ - if (((ctl)->do_not_ref_stcb == 0) && stcb) { \ - if ((stcb)->asoc.sb_cc >= (uint32_t)SCTP_BUF_LEN((m))) { \ - atomic_subtract_int(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ - } else { \ - (stcb)->asoc.sb_cc = 0; \ - } \ - } \ -} - -#define sctp_sballoc(stcb, sb, m) { \ - atomic_add_int(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ - if (stcb) { \ - atomic_add_int(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ - } \ -} - -#else - #define sctp_sbfree(ctl, stcb, sb, m) { \ SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_mbcnt, MSIZE); \ @@ -290,7 +267,6 @@ extern struct pr_usrreqs sctp_usrreqs; } \ } #endif -#endif #define sctp_ucount_incr(val) { \ val++; \ @@ -331,7 +307,7 @@ extern struct pr_usrreqs sctp_usrreqs; if (stcb->asoc.fs_index > SCTP_FS_SPEC_LOG_SIZE) \ stcb->asoc.fs_index = 0;\ stcb->asoc.fslog[stcb->asoc.fs_index].total_flight = stcb->asoc.total_flight; \ - stcb->asoc.fslog[stcb->asoc.fs_index].tsn = tp1->rec.data.TSN_seq; \ + stcb->asoc.fslog[stcb->asoc.fs_index].tsn = tp1->rec.data.tsn; \ stcb->asoc.fslog[stcb->asoc.fs_index].book = tp1->book_size; \ stcb->asoc.fslog[stcb->asoc.fs_index].sent = tp1->sent; \ stcb->asoc.fslog[stcb->asoc.fs_index].incr = 0; \ @@ -352,7 +328,7 @@ extern struct pr_usrreqs sctp_usrreqs; if (stcb->asoc.fs_index > SCTP_FS_SPEC_LOG_SIZE) \ stcb->asoc.fs_index = 0;\ stcb->asoc.fslog[stcb->asoc.fs_index].total_flight = stcb->asoc.total_flight; \ - stcb->asoc.fslog[stcb->asoc.fs_index].tsn = tp1->rec.data.TSN_seq; \ + stcb->asoc.fslog[stcb->asoc.fs_index].tsn = tp1->rec.data.tsn; \ stcb->asoc.fslog[stcb->asoc.fs_index].book = tp1->book_size; \ stcb->asoc.fslog[stcb->asoc.fs_index].sent = tp1->sent; \ stcb->asoc.fslog[stcb->asoc.fs_index].incr = 1; \ @@ -391,115 +367,86 @@ struct sctp_inpcb; struct sctp_tcb; struct sctphdr; - -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) void sctp_close(struct socket *so); #else int sctp_detach(struct socket *so); #endif int sctp_disconnect(struct socket *so); -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) -#if defined(__FreeBSD__) && __FreeBSD_version < 902000 -void sctp_ctlinput __P((int, struct sockaddr *, void *)); -int sctp_ctloutput __P((struct socket *, struct sockopt *)); -#ifdef INET -void sctp_input_with_port __P((struct mbuf *, int, uint16_t)); -void sctp_input __P((struct mbuf *, int)); -#endif -void sctp_pathmtu_adjustment __P((struct sctp_tcb *, uint16_t)); +#if !defined(__Userspace__) +#if defined(__APPLE__) && !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) && !defined(APPLE_ELCAPITAN) +void sctp_ctlinput(int, struct sockaddr *, void *, struct ifnet * SCTP_UNUSED); +#elif defined(__FreeBSD__) +ipproto_ctlinput_t sctp_ctlinput; #else void sctp_ctlinput(int, struct sockaddr *, void *); +#endif int sctp_ctloutput(struct socket *, struct sockopt *); #ifdef INET void sctp_input_with_port(struct mbuf *, int, uint16_t); -#if defined(__FreeBSD__) && __FreeBSD_version >= 1100020 +#if defined(__FreeBSD__) && !defined(__Userspace__) int sctp_input(struct mbuf **, int *, int); #else void sctp_input(struct mbuf *, int); #endif #endif -void sctp_pathmtu_adjustment(struct sctp_tcb *, uint16_t); -#endif +void sctp_pathmtu_adjustment(struct sctp_tcb *, uint32_t, bool); #else -#if defined(__Panda__) -void sctp_input(pakhandle_type i_pak); -#elif defined(__Userspace__) -void sctp_pathmtu_adjustment(struct sctp_tcb *, uint16_t); +#if defined(__Userspace__) +void sctp_pathmtu_adjustment(struct sctp_tcb *, uint32_t, bool); #else void sctp_input(struct mbuf *,...); #endif void *sctp_ctlinput(int, struct sockaddr *, void *); int sctp_ctloutput(int, struct socket *, int, int, struct mbuf **); #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 902000 -void sctp_drain __P((void)); -#else +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) void sctp_drain(void); #endif #if defined(__Userspace__) void sctp_init(uint16_t, int (*)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), - void (*)(const char *, ...)); -#elif defined(__FreeBSD__) && __FreeBSD_version < 902000 -void sctp_init __P((void)); + void (*)(const char *, ...), int start_threads); #elif defined(__APPLE__) && (!defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) &&!defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION)) void sctp_init(struct protosw *pp, struct domain *dp); #else +#if !defined(__FreeBSD__) void sctp_init(void); #endif +void sctp_notify(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *, + uint8_t, uint8_t, uint16_t, uint32_t); +#endif +#if !defined(__FreeBSD__) && !defined(__Userspace__) void sctp_finish(void); -#if defined(__FreeBSD__) || defined(__Windows__) || defined(__Userspace__) +#endif +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) int sctp_flush(struct socket *, int); #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 902000 -int sctp_shutdown __P((struct socket *)); -void sctp_notify __P((struct sctp_inpcb *, struct ip *ip, struct sctphdr *, - struct sockaddr *, struct sctp_tcb *, - struct sctp_nets *)); -#else int sctp_shutdown(struct socket *); -void sctp_notify(struct sctp_inpcb *, struct ip *ip, struct sctphdr *, - struct sockaddr *, struct sctp_tcb *, - struct sctp_nets *); -#endif int sctp_bindx(struct socket *, int, struct sockaddr_storage *, int, int, struct proc *); /* can't use sctp_assoc_t here */ int sctp_peeloff(struct socket *, struct socket *, int, caddr_t, int *); -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) int sctp_ingetaddr(struct socket *, struct sockaddr **); -#elif defined(__Panda__) -int sctp_ingetaddr(struct socket *, struct sockaddr *); #else int sctp_ingetaddr(struct socket *, struct mbuf *); #endif -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) int sctp_peeraddr(struct socket *, struct sockaddr **); -#elif defined(__Panda__) -int sctp_peeraddr(struct socket *, struct sockaddr *); #else int sctp_peeraddr(struct socket *, struct mbuf *); #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -#if __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) int sctp_listen(struct socket *, int, struct thread *); -#else -int sctp_listen(struct socket *, struct thread *); -#endif -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) int sctp_listen(struct socket *, int, PKTHREAD); #elif defined(__Userspace__) int sctp_listen(struct socket *, int, struct proc *); #else int sctp_listen(struct socket *, struct proc *); #endif -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) int sctp_accept(struct socket *, struct sockaddr **); -#elif defined(__Panda__) -int sctp_accept(struct socket *, struct sockaddr *, int *, void *, int *); -#else -int sctp_accept(struct socket *, struct mbuf *); -#endif #endif /* _KERNEL */ diff --git a/netwerk/sctp/src/netinet/sctputil.c b/netwerk/sctp/src/netinet/sctputil.c index b72a20de37..7c9e2edfe5 100755 --- a/netwerk/sctp/src/netinet/sctputil.c +++ b/netwerk/sctp/src/netinet/sctputil.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2008, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctputil.c 280439 2015-03-24 14:51:46Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include @@ -49,24 +51,27 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctputil.c 280439 2015-03-24 14:51:46Z tuex #include #include #include -#include /* for sctp_deliver_data() */ +#include #include #include #include #if defined(__Userspace__) #include #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) +#include +#if defined(INET6) || defined(INET) +#include +#endif #include #include #include +#ifdef INET6 +#include #endif - -#if defined(__APPLE__) -#define APPLE_FILE_NO 8 #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) #if !defined(SCTP_LOCAL_TRACE_BUF) #include "eventrace_netinet.h" #include "sctputil.tmh" /* this is the file that will be auto generated */ @@ -77,17 +82,17 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctputil.c 280439 2015-03-24 14:51:46Z tuex #endif #endif -extern struct sctp_cc_functions sctp_cc_functions[]; -extern struct sctp_ss_functions sctp_ss_functions[]; +extern const struct sctp_cc_functions sctp_cc_functions[]; +extern const struct sctp_ss_functions sctp_ss_functions[]; void sctp_sblog(struct sockbuf *sb, struct sctp_tcb *stcb, int from, int incr) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.sb.stcb = stcb; - sctp_clog.x.sb.so_sbcc = sb->sb_cc; + sctp_clog.x.sb.so_sbcc = SCTP_SBAVAIL(sb); if (stcb) sctp_clog.x.sb.stcb_sbcc = stcb->asoc.sb_cc; else @@ -106,7 +111,7 @@ sctp_sblog(struct sockbuf *sb, struct sctp_tcb *stcb, int from, int incr) void sctp_log_closing(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int16_t loc) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.close.inp = (void *)inp; @@ -132,7 +137,7 @@ sctp_log_closing(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int16_t loc) void rto_logging(struct sctp_nets *net, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; memset(&sctp_clog, 0, sizeof(sctp_clog)); @@ -151,7 +156,7 @@ rto_logging(struct sctp_nets *net, int from) void sctp_log_strm_del_alt(struct sctp_tcb *stcb, uint32_t tsn, uint16_t sseq, uint16_t stream, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.strlog.stcb = stcb; @@ -173,7 +178,7 @@ sctp_log_strm_del_alt(struct sctp_tcb *stcb, uint32_t tsn, uint16_t sseq, uint16 void sctp_log_nagle_event(struct sctp_tcb *stcb, int action) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.nagle.stcb = (void *)stcb; @@ -194,7 +199,7 @@ sctp_log_nagle_event(struct sctp_tcb *stcb, int action) void sctp_log_sack(uint32_t old_cumack, uint32_t cumack, uint32_t tsn, uint16_t gaps, uint16_t dups, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.sack.cumack = cumack; @@ -215,7 +220,7 @@ sctp_log_sack(uint32_t old_cumack, uint32_t cumack, uint32_t tsn, uint16_t gaps, void sctp_log_map(uint32_t map, uint32_t cum, uint32_t high, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; memset(&sctp_clog, 0, sizeof(sctp_clog)); @@ -235,7 +240,7 @@ sctp_log_map(uint32_t map, uint32_t cum, uint32_t high, int from) void sctp_log_fr(uint32_t biggest_tsn, uint32_t biggest_new_tsn, uint32_t tsn, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; memset(&sctp_clog, 0, sizeof(sctp_clog)); @@ -256,7 +261,7 @@ sctp_log_fr(uint32_t biggest_tsn, uint32_t biggest_new_tsn, uint32_t tsn, int fr void sctp_log_mb(struct mbuf *m, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.mb.mp = m; @@ -265,7 +270,7 @@ sctp_log_mb(struct mbuf *m, int from) sctp_clog.x.mb.data = SCTP_BUF_AT(m, 0); if (SCTP_BUF_IS_EXTENDED(m)) { sctp_clog.x.mb.ext = SCTP_BUF_EXTEND_BASE(m); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) /* APPLE does not use a ref_cnt, but a forward/backward ref queue */ #else sctp_clog.x.mb.refcnt = (uint8_t)(SCTP_BUF_EXTEND_REFCNT(m)); @@ -298,7 +303,7 @@ sctp_log_mbc(struct mbuf *m, int from) void sctp_log_strm_del(struct sctp_queued_to_read *control, struct sctp_queued_to_read *poschk, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; if (control == NULL) { @@ -307,11 +312,11 @@ sctp_log_strm_del(struct sctp_queued_to_read *control, struct sctp_queued_to_rea } sctp_clog.x.strlog.stcb = control->stcb; sctp_clog.x.strlog.n_tsn = control->sinfo_tsn; - sctp_clog.x.strlog.n_sseq = control->sinfo_ssn; + sctp_clog.x.strlog.n_sseq = (uint16_t)control->mid; sctp_clog.x.strlog.strm = control->sinfo_stream; if (poschk != NULL) { sctp_clog.x.strlog.e_tsn = poschk->sinfo_tsn; - sctp_clog.x.strlog.e_sseq = poschk->sinfo_ssn; + sctp_clog.x.strlog.e_sseq = (uint16_t)poschk->mid; } else { sctp_clog.x.strlog.e_tsn = 0; sctp_clog.x.strlog.e_sseq = 0; @@ -329,7 +334,7 @@ sctp_log_strm_del(struct sctp_queued_to_read *control, struct sctp_queued_to_rea void sctp_log_cwnd(struct sctp_tcb *stcb, struct sctp_nets *net, int augment, uint8_t from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.cwnd.net = net; @@ -363,11 +368,11 @@ sctp_log_cwnd(struct sctp_tcb *stcb, struct sctp_nets *net, int augment, uint8_t #endif } -#ifndef __APPLE__ +#if !defined(__APPLE__) && !defined(__Userspace__) void sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; memset(&sctp_clog, 0, sizeof(sctp_clog)); @@ -378,7 +383,7 @@ sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from) sctp_clog.x.lock.sock = (void *) NULL; } sctp_clog.x.lock.inp = (void *) inp; -#if (defined(__FreeBSD__) && __FreeBSD_version >= 503000) || (defined(__APPLE__)) +#if defined(__FreeBSD__) if (stcb) { sctp_clog.x.lock.tcb_lock = mtx_owned(&stcb->tcb_mtx); } else { @@ -391,15 +396,11 @@ sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from) sctp_clog.x.lock.inp_lock = SCTP_LOCK_UNKNOWN; sctp_clog.x.lock.create_lock = SCTP_LOCK_UNKNOWN; } -#if (defined(__FreeBSD__) && __FreeBSD_version <= 602000) - sctp_clog.x.lock.info_lock = mtx_owned(&SCTP_BASE_INFO(ipi_ep_mtx)); -#else sctp_clog.x.lock.info_lock = rw_wowned(&SCTP_BASE_INFO(ipi_ep_mtx)); -#endif if (inp && (inp->sctp_socket)) { - sctp_clog.x.lock.sock_lock = mtx_owned(&(inp->sctp_socket->so_rcv.sb_mtx)); - sctp_clog.x.lock.sockrcvbuf_lock = mtx_owned(&(inp->sctp_socket->so_rcv.sb_mtx)); - sctp_clog.x.lock.socksndbuf_lock = mtx_owned(&(inp->sctp_socket->so_snd.sb_mtx)); + sctp_clog.x.lock.sock_lock = mtx_owned(SOCK_MTX(inp->sctp_socket)); + sctp_clog.x.lock.sockrcvbuf_lock = mtx_owned(SOCKBUF_MTX(&inp->sctp_socket->so_rcv)); + sctp_clog.x.lock.socksndbuf_lock = mtx_owned(SOCKBUF_MTX(&inp->sctp_socket->so_snd)); } else { sctp_clog.x.lock.sock_lock = SCTP_LOCK_UNKNOWN; sctp_clog.x.lock.sockrcvbuf_lock = SCTP_LOCK_UNKNOWN; @@ -420,7 +421,7 @@ sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from) void sctp_log_maxburst(struct sctp_tcb *stcb, struct sctp_nets *net, int error, int burst, uint8_t from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; memset(&sctp_clog, 0, sizeof(sctp_clog)); @@ -449,7 +450,7 @@ sctp_log_maxburst(struct sctp_tcb *stcb, struct sctp_nets *net, int error, int b void sctp_log_rwnd(uint8_t from, uint32_t peers_rwnd, uint32_t snd_size, uint32_t overhead) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.rwnd.rwnd = peers_rwnd; @@ -469,7 +470,7 @@ sctp_log_rwnd(uint8_t from, uint32_t peers_rwnd, uint32_t snd_size, uint32_t ove void sctp_log_rwnd_set(uint8_t from, uint32_t peers_rwnd, uint32_t flight_size, uint32_t overhead, uint32_t a_rwndval) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.rwnd.rwnd = peers_rwnd; @@ -490,7 +491,7 @@ sctp_log_rwnd_set(uint8_t from, uint32_t peers_rwnd, uint32_t flight_size, uint3 static void sctp_log_mbcnt(uint8_t from, uint32_t total_oq, uint32_t book, uint32_t total_mbcnt_q, uint32_t mbcnt) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.mbcnt.total_queue_size = total_oq; @@ -511,7 +512,7 @@ sctp_log_mbcnt(uint8_t from, uint32_t total_oq, uint32_t book, uint32_t total_mb void sctp_misc_ints(uint8_t from, uint32_t a, uint32_t b, uint32_t c, uint32_t d) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) SCTP_CTR6(KTR_SCTP, "SCTP:%d[%d]:%x-%x-%x-%x", SCTP_LOG_MISC_EVENT, from, @@ -522,7 +523,7 @@ sctp_misc_ints(uint8_t from, uint32_t a, uint32_t b, uint32_t c, uint32_t d) void sctp_wakeup_log(struct sctp_tcb *stcb, uint32_t wake_cnt, int from) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.wake.stcb = (void *)stcb; @@ -568,9 +569,9 @@ sctp_wakeup_log(struct sctp_tcb *stcb, uint32_t wake_cnt, int from) } void -sctp_log_block(uint8_t from, struct sctp_association *asoc, int sendlen) +sctp_log_block(uint8_t from, struct sctp_association *asoc, ssize_t sendlen) { -#if defined(__FreeBSD__) || defined(SCTP_LOCAL_TRACE_BUF) +#if defined(SCTP_LOCAL_TRACE_BUF) struct sctp_cwnd_log sctp_clog; sctp_clog.x.blk.onsb = asoc->total_output_queue_size; @@ -579,7 +580,7 @@ sctp_log_block(uint8_t from, struct sctp_association *asoc, int sendlen) sctp_clog.x.blk.stream_qcnt = (uint16_t) asoc->stream_queue_cnt; sctp_clog.x.blk.chunks_on_oque = (uint16_t) asoc->chunks_on_out_queue; sctp_clog.x.blk.flight_size = (uint16_t) (asoc->total_flight/1024); - sctp_clog.x.blk.sndlen = sendlen; + sctp_clog.x.blk.sndlen = (uint32_t)sendlen; SCTP_CTR6(KTR_SCTP, "SCTP:%d[%d]:%x-%x-%x-%x", SCTP_LOG_EVENT_BLOCK, from, @@ -759,7 +760,6 @@ sctp_auditing(int from, struct sctp_inpcb *inp, struct sctp_tcb *stcb, stcb->asoc.total_flight, tot_out); /* now corrective action */ TAILQ_FOREACH(lnet, &stcb->asoc.nets, sctp_next) { - tot_out = 0; TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { if ((chk->whoTo == lnet) && @@ -794,6 +794,80 @@ sctp_audit_log(uint8_t ev, uint8_t fd) #endif +/* + * The conversion from time to ticks and vice versa is done by rounding + * upwards. This way we can test in the code the time to be positive and + * know that this corresponds to a positive number of ticks. + */ + +uint32_t +sctp_msecs_to_ticks(uint32_t msecs) +{ + uint64_t temp; + uint32_t ticks; + + if (hz == 1000) { + ticks = msecs; + } else { + temp = (((uint64_t)msecs * hz) + 999) / 1000; + if (temp > UINT32_MAX) { + ticks = UINT32_MAX; + } else { + ticks = (uint32_t)temp; + } + } + return (ticks); +} + +uint32_t +sctp_ticks_to_msecs(uint32_t ticks) +{ + uint64_t temp; + uint32_t msecs; + + if (hz == 1000) { + msecs = ticks; + } else { + temp = (((uint64_t)ticks * 1000) + (hz - 1)) / hz; + if (temp > UINT32_MAX) { + msecs = UINT32_MAX; + } else { + msecs = (uint32_t)temp; + } + } + return (msecs); +} + +uint32_t +sctp_secs_to_ticks(uint32_t secs) +{ + uint64_t temp; + uint32_t ticks; + + temp = (uint64_t)secs * hz; + if (temp > UINT32_MAX) { + ticks = UINT32_MAX; + } else { + ticks = (uint32_t)temp; + } + return (ticks); +} + +uint32_t +sctp_ticks_to_secs(uint32_t ticks) +{ + uint64_t temp; + uint32_t secs; + + temp = ((uint64_t)ticks + (hz - 1)) / hz; + if (temp > UINT32_MAX) { + secs = UINT32_MAX; + } else { + secs = (uint32_t)temp; + } + return (secs); +} + /* * sctp_stop_timers_for_shutdown() should be called * when entering the SHUTDOWN_SENT or SHUTDOWN_ACK_SENT @@ -802,25 +876,72 @@ sctp_audit_log(uint8_t ev, uint8_t fd) void sctp_stop_timers_for_shutdown(struct sctp_tcb *stcb) { - struct sctp_association *asoc; + struct sctp_inpcb *inp; struct sctp_nets *net; - asoc = &stcb->asoc; + inp = stcb->sctp_ep; + + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_12); + sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_13); + sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_14); + sctp_timer_stop(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_15); + TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_16); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_17); + } +} + +void +sctp_stop_association_timers(struct sctp_tcb *stcb, bool stop_assoc_kill_timer) +{ + struct sctp_inpcb *inp; + struct sctp_nets *net; - (void)SCTP_OS_TIMER_STOP(&asoc->dack_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->strreset_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->asconf_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->autoclose_timer.timer); - (void)SCTP_OS_TIMER_STOP(&asoc->delayed_event_timer.timer); - TAILQ_FOREACH(net, &asoc->nets, sctp_next) { - (void)SCTP_OS_TIMER_STOP(&net->pmtu_timer.timer); - (void)SCTP_OS_TIMER_STOP(&net->hb_timer.timer); + inp = stcb->sctp_ep; + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_18); + sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_19); + if (stop_assoc_kill_timer) { + sctp_timer_stop(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_20); + } + sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_21); + sctp_timer_stop(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_22); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNGUARD, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_23); + /* Mobility adaptation */ + sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_24); + TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { + sctp_timer_stop(SCTP_TIMER_TYPE_SEND, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_25); + sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_26); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_27); + sctp_timer_stop(SCTP_TIMER_TYPE_COOKIE, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_28); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNACK, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_29); + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_30); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTPUTIL + SCTP_LOC_31); } } /* - * a list of sizes based on typical mtu's, used only if next hop size not - * returned. + * A list of sizes based on typical mtu's, used only if next hop size not + * returned. These values MUST be multiples of 4 and MUST be ordered. */ static uint32_t sctp_mtu_sizes[] = { 68, @@ -829,29 +950,32 @@ static uint32_t sctp_mtu_sizes[] = { 512, 544, 576, - 1006, + 1004, 1492, 1500, 1536, - 2002, + 2000, 2048, 4352, 4464, - 8166, - 17914, + 8168, + 17912, 32000, - 65535 + 65532 }; /* - * Return the largest MTU smaller than val. If there is no - * entry, just return val. + * Return the largest MTU in sctp_mtu_sizes smaller than val. + * If val is smaller than the minimum, just return the largest + * multiple of 4 smaller or equal to val. + * Ensure that the result is a multiple of 4. */ uint32_t sctp_get_prev_mtu(uint32_t val) { uint32_t i; + val &= 0xfffffffc; if (val <= sctp_mtu_sizes[0]) { return (val); } @@ -860,12 +984,16 @@ sctp_get_prev_mtu(uint32_t val) break; } } + KASSERT((sctp_mtu_sizes[i - 1] & 0x00000003) == 0, + ("sctp_mtu_sizes[%u] not a multiple of 4", i - 1)); return (sctp_mtu_sizes[i - 1]); } /* - * Return the smallest MTU larger than val. If there is no - * entry, just return val. + * Return the smallest MTU in sctp_mtu_sizes larger than val. + * If val is larger than the maximum, just return the largest multiple of 4 smaller + * or equal to val. + * Ensure that the result is a multiple of 4. */ uint32_t sctp_get_next_mtu(uint32_t val) @@ -873,8 +1001,11 @@ sctp_get_next_mtu(uint32_t val) /* select another MTU that is just bigger than this one */ uint32_t i; + val &= 0xfffffffc; for (i = 0; i < (sizeof(sctp_mtu_sizes) / sizeof(uint32_t)); i++) { if (val < sctp_mtu_sizes[i]) { + KASSERT((sctp_mtu_sizes[i] & 0x00000003) == 0, + ("sctp_mtu_sizes[%u] not a multiple of 4", i)); return (sctp_mtu_sizes[i]); } } @@ -894,9 +1025,15 @@ sctp_fill_random_store(struct sctp_pcb *m) * numbers, but thats ok too since that is random as well :-> */ m->store_at = 0; +#if defined(__Userspace__) && defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) + for (int i = 0; i < (int) (sizeof(m->random_store) / sizeof(m->random_store[0])); i++) { + m->random_store[i] = (uint8_t) rand(); + } +#else (void)sctp_hmac(SCTP_HMAC, (uint8_t *)m->random_numbers, sizeof(m->random_numbers), (uint8_t *)&m->random_counter, sizeof(m->random_counter), (uint8_t *)m->random_store); +#endif m->random_counter++; } @@ -960,9 +1097,53 @@ sctp_select_a_tag(struct sctp_inpcb *inp, uint16_t lport, uint16_t rport, int ch return (x); } +int32_t +sctp_map_assoc_state(int kernel_state) +{ + int32_t user_state; + + if (kernel_state & SCTP_STATE_WAS_ABORTED) { + user_state = SCTP_CLOSED; + } else if (kernel_state & SCTP_STATE_SHUTDOWN_PENDING) { + user_state = SCTP_SHUTDOWN_PENDING; + } else { + switch (kernel_state & SCTP_STATE_MASK) { + case SCTP_STATE_EMPTY: + user_state = SCTP_CLOSED; + break; + case SCTP_STATE_INUSE: + user_state = SCTP_CLOSED; + break; + case SCTP_STATE_COOKIE_WAIT: + user_state = SCTP_COOKIE_WAIT; + break; + case SCTP_STATE_COOKIE_ECHOED: + user_state = SCTP_COOKIE_ECHOED; + break; + case SCTP_STATE_OPEN: + user_state = SCTP_ESTABLISHED; + break; + case SCTP_STATE_SHUTDOWN_SENT: + user_state = SCTP_SHUTDOWN_SENT; + break; + case SCTP_STATE_SHUTDOWN_RECEIVED: + user_state = SCTP_SHUTDOWN_RECEIVED; + break; + case SCTP_STATE_SHUTDOWN_ACK_SENT: + user_state = SCTP_SHUTDOWN_ACK_SENT; + break; + default: + user_state = SCTP_CLOSED; + break; + } + } + return (user_state); +} + int sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - uint32_t override_tag, uint32_t vrf_id) + uint32_t override_tag, uint32_t initial_tsn, uint32_t vrf_id, + uint16_t o_strms) { struct sctp_association *asoc; /* @@ -983,10 +1164,10 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc = &stcb->asoc; /* init all variables to a known value. */ - SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_INUSE); + SCTP_SET_STATE(stcb, SCTP_STATE_INUSE); asoc->max_burst = inp->sctp_ep.max_burst; asoc->fr_max_burst = inp->sctp_ep.fr_max_burst; - asoc->heart_beat_delay = TICKS_TO_MSEC(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT]); + asoc->heart_beat_delay = sctp_ticks_to_msecs(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT]); asoc->cookie_life = inp->sctp_ep.def_cookie_life; asoc->sctp_cmt_on_off = inp->sctp_cmt_on_off; asoc->ecn_supported = inp->ecn_supported; @@ -996,6 +1177,8 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->reconfig_supported = inp->reconfig_supported; asoc->nrsack_supported = inp->nrsack_supported; asoc->pktdrop_supported = inp->pktdrop_supported; + asoc->idata_supported = inp->idata_supported; + asoc->zero_checksum = inp->zero_checksum; asoc->sctp_cmt_pf = (uint8_t)0; asoc->sctp_frag_point = inp->sctp_frag_point; asoc->sctp_features = inp->sctp_features; @@ -1038,27 +1221,33 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, #endif asoc->refcnt = 0; asoc->assoc_up_sent = 0; - asoc->asconf_seq_out = asoc->str_reset_seq_out = asoc->init_seq_number = asoc->sending_seq = - sctp_select_initial_TSN(&inp->sctp_ep); - asoc->asconf_seq_out_acked = asoc->asconf_seq_out - 1; - /* we are optimisitic here */ + if (override_tag) { + asoc->init_seq_number = initial_tsn; + } else { + asoc->init_seq_number = sctp_select_initial_TSN(&inp->sctp_ep); + } + asoc->asconf_seq_out = asoc->init_seq_number; + asoc->str_reset_seq_out = asoc->init_seq_number; + asoc->sending_seq = asoc->init_seq_number; + asoc->asconf_seq_out_acked = asoc->init_seq_number - 1; + /* we are optimistic here */ asoc->peer_supports_nat = 0; asoc->sent_queue_retran_cnt = 0; /* for CMT */ - asoc->last_net_cmt_send_started = NULL; + asoc->last_net_cmt_send_started = NULL; - /* This will need to be adjusted */ asoc->last_acked_seq = asoc->init_seq_number - 1; - asoc->advanced_peer_ack_point = asoc->last_acked_seq; - asoc->asconf_seq_in = asoc->last_acked_seq; + asoc->advanced_peer_ack_point = asoc->init_seq_number - 1; + asoc->asconf_seq_in = asoc->init_seq_number - 1; /* here we are different, we hold the next one we expect */ - asoc->str_reset_seq_in = asoc->last_acked_seq + 1; + asoc->str_reset_seq_in = asoc->init_seq_number; asoc->initial_init_rto_max = inp->sctp_ep.initial_init_rto_max; asoc->initial_rto = inp->sctp_ep.initial_rto; + asoc->default_mtu = inp->sctp_ep.default_mtu; asoc->max_init_times = inp->sctp_ep.max_init_times; asoc->max_send_times = inp->sctp_ep.max_send_times; asoc->def_net_failure = inp->sctp_ep.def_net_failure; @@ -1069,7 +1258,7 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->context = inp->sctp_context; asoc->local_strreset_support = inp->local_strreset_support; asoc->def_send = inp->def_send; - asoc->delayed_ack = TICKS_TO_MSEC(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV]); + asoc->delayed_ack = sctp_ticks_to_msecs(inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_RECV]); asoc->sack_freq = inp->sctp_ep.sctp_sack_freq; asoc->pr_sctp_cnt = 0; asoc->total_output_queue_size = 0; @@ -1102,11 +1291,10 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->my_rwnd = max(SCTP_SB_LIMIT_RCV(inp->sctp_socket), SCTP_MINIMAL_RWND); asoc->peers_rwnd = SCTP_SB_LIMIT_RCV(inp->sctp_socket); - asoc->smallest_mtu = inp->sctp_frag_point; + asoc->smallest_mtu = 0; asoc->minrto = inp->sctp_ep.sctp_minrto; asoc->maxrto = inp->sctp_ep.sctp_maxrto; - asoc->locked_on_sending = NULL; asoc->stream_locked_on = 0; asoc->ecn_echo_cnt_onq = 0; asoc->stream_locked = 0; @@ -1134,7 +1322,7 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, * that we request by default. */ asoc->strm_realoutsize = asoc->streamoutcnt = asoc->pre_open_streams = - inp->sctp_ep.pre_open_stream_count; + o_strms; SCTP_MALLOC(asoc->strmout, struct sctp_stream_out *, asoc->streamoutcnt * sizeof(struct sctp_stream_out), SCTP_M_STRMO); @@ -1143,6 +1331,7 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOMEM); return (ENOMEM); } + SCTP_TCB_LOCK(stcb); for (i = 0; i < asoc->streamoutcnt; i++) { /* * inbound side must be set to 0xffff, also NOTE when we get @@ -1152,8 +1341,8 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, * that were dropped must be notified to the upper layer as * failed to send. */ - asoc->strmout[i].next_sequence_send = 0x0; TAILQ_INIT(&asoc->strmout[i].outqueue); + asoc->ss_functions.sctp_ss_init_stream(stcb, &asoc->strmout[i], NULL); asoc->strmout[i].chunks_on_queues = 0; #if defined(SCTP_DETAILED_STR_STATS) for (j = 0; j < SCTP_PR_SCTP_MAX + 1; j++) { @@ -1164,11 +1353,14 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->strmout[i].abandoned_sent[0] = 0; asoc->strmout[i].abandoned_unsent[0] = 0; #endif - asoc->strmout[i].stream_no = i; + asoc->strmout[i].next_mid_ordered = 0; + asoc->strmout[i].next_mid_unordered = 0; + asoc->strmout[i].sid = i; asoc->strmout[i].last_msg_incomplete = 0; - asoc->ss_functions.sctp_ss_init_stream(&asoc->strmout[i], NULL); + asoc->strmout[i].state = SCTP_STREAM_OPENING; } - asoc->ss_functions.sctp_ss_init(stcb, asoc, 0); + asoc->ss_functions.sctp_ss_init(stcb, asoc); + SCTP_TCB_UNLOCK(stcb); /* Now the mapping array */ asoc->mapping_array_size = SCTP_INITIAL_MAPPING_ARRAY; @@ -1196,7 +1388,6 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, TAILQ_INIT(&asoc->asconf_send_queue); TAILQ_INIT(&asoc->send_queue); TAILQ_INIT(&asoc->sent_queue); - TAILQ_INIT(&asoc->reasmqueue); TAILQ_INIT(&asoc->resetHead); asoc->max_inbound_streams = inp->sctp_ep.max_open_streams_intome; TAILQ_INIT(&asoc->asconf_queue); @@ -1297,15 +1488,20 @@ sctp_expand_mapping_array(struct sctp_association *asoc, uint32_t needed) return (0); } - static void sctp_iterator_work(struct sctp_iterator *it) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif + struct sctp_inpcb *tinp; int iteration_count = 0; int inp_skip = 0; int first_in = 1; - struct sctp_inpcb *tinp; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif SCTP_INP_INFO_RLOCK(); SCTP_ITERATOR_LOCK(); sctp_it_ctl.cur_it = it; @@ -1323,6 +1519,9 @@ sctp_iterator_work(struct sctp_iterator *it) (*it->function_atend) (it->pointer, it->val); } SCTP_FREE(it, SCTP_M_ITER); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif return; } select_a_new_ep: @@ -1332,7 +1531,7 @@ sctp_iterator_work(struct sctp_iterator *it) SCTP_INP_RLOCK(it->inp); } while (((it->pcb_flags) && - ((it->inp->sctp_flags & it->pcb_flags) != it->pcb_flags)) || + ((it->inp->sctp_flags & it->pcb_flags) != it->pcb_flags)) || ((it->pcb_features) && ((it->inp->sctp_features & it->pcb_features) != it->pcb_features))) { /* endpoint flags or features don't match, so keep looking */ @@ -1342,6 +1541,7 @@ sctp_iterator_work(struct sctp_iterator *it) } tinp = it->inp; it->inp = LIST_NEXT(it->inp, sctp_list); + it->stcb = NULL; SCTP_INP_RUNLOCK(tinp); if (it->inp == NULL) { goto done_with_iterator; @@ -1367,7 +1567,7 @@ sctp_iterator_work(struct sctp_iterator *it) SCTP_INP_RUNLOCK(it->inp); goto no_stcb; } - while (it->stcb) { + while (it->stcb != NULL) { SCTP_TCB_LOCK(it->stcb); if (it->asoc_state && ((it->stcb->asoc.state & it->asoc_state) != it->asoc_state)) { /* not in the right state... keep looking */ @@ -1389,8 +1589,8 @@ sctp_iterator_work(struct sctp_iterator *it) if (sctp_it_ctl.iterator_flags) { /* We won't be staying here */ SCTP_INP_DECR_REF(it->inp); - atomic_add_int(&it->stcb->asoc.refcnt, -1); -#if !defined(__FreeBSD__) + atomic_subtract_int(&it->stcb->asoc.refcnt, 1); +#if !(defined(__FreeBSD__) && !defined(__Userspace__)) if (sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) { goto done_with_iterator; @@ -1414,19 +1614,29 @@ sctp_iterator_work(struct sctp_iterator *it) SCTP_INP_RLOCK(it->inp); SCTP_INP_DECR_REF(it->inp); SCTP_TCB_LOCK(it->stcb); - atomic_add_int(&it->stcb->asoc.refcnt, -1); + atomic_subtract_int(&it->stcb->asoc.refcnt, 1); iteration_count = 0; } + KASSERT(it->inp == it->stcb->sctp_ep, + ("%s: stcb %p does not belong to inp %p, but inp %p", + __func__, it->stcb, it->inp, it->stcb->sctp_ep)); + SCTP_INP_RLOCK_ASSERT(it->inp); + SCTP_TCB_LOCK_ASSERT(it->stcb); /* run function on this one */ (*it->function_assoc)(it->inp, it->stcb, it->pointer, it->val); + SCTP_INP_RLOCK_ASSERT(it->inp); + SCTP_TCB_LOCK_ASSERT(it->stcb); /* * we lie here, it really needs to have its own type but * first I must verify that this won't effect things :-0 */ - if (it->no_chunk_output == 0) + if (it->no_chunk_output == 0) { sctp_chunk_output(it->inp, it->stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED); + SCTP_INP_RLOCK_ASSERT(it->inp); + SCTP_TCB_LOCK_ASSERT(it->stcb); + } SCTP_TCB_UNLOCK(it->stcb); next_assoc: @@ -1449,6 +1659,7 @@ sctp_iterator_work(struct sctp_iterator *it) } else { it->inp = LIST_NEXT(it->inp, sctp_list); } + it->stcb = NULL; if (it->inp == NULL) { goto done_with_iterator; } @@ -1458,35 +1669,33 @@ sctp_iterator_work(struct sctp_iterator *it) void sctp_iterator_worker(void) { - struct sctp_iterator *it, *nit; + struct sctp_iterator *it; /* This function is called with the WQ lock in place */ - sctp_it_ctl.iterator_running = 1; - TAILQ_FOREACH_SAFE(it, &sctp_it_ctl.iteratorhead, sctp_nxt_itr, nit) { + while ((it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead)) != NULL) { /* now lets work on this one */ TAILQ_REMOVE(&sctp_it_ctl.iteratorhead, it, sctp_nxt_itr); SCTP_IPI_ITERATOR_WQ_UNLOCK(); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_SET(it->vn); #endif sctp_iterator_work(it); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_RESTORE(); #endif SCTP_IPI_ITERATOR_WQ_LOCK(); -#if !defined(__FreeBSD__) +#if !defined(__FreeBSD__) && !defined(__Userspace__) if (sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) { break; } #endif - /*sa_ignore FREED_MEMORY*/ + /*sa_ignore FREED_MEMORY*/ } sctp_it_ctl.iterator_running = 0; return; } - static void sctp_handle_addr_wq(void) { @@ -1507,48 +1716,101 @@ sctp_handle_addr_wq(void) LIST_INIT(&asc->list_of_work); asc->cnt = 0; - SCTP_WQ_ADDR_LOCK(); LIST_FOREACH_SAFE(wi, &SCTP_BASE_INFO(addr_wq), sctp_nxt_addr, nwi) { LIST_REMOVE(wi, sctp_nxt_addr); LIST_INSERT_HEAD(&asc->list_of_work, wi, sctp_nxt_addr); asc->cnt++; } - SCTP_WQ_ADDR_UNLOCK(); if (asc->cnt == 0) { SCTP_FREE(asc, SCTP_M_ASC_IT); } else { - (void)sctp_initiate_iterator(sctp_asconf_iterator_ep, - sctp_asconf_iterator_stcb, - NULL, /* No ep end for boundall */ - SCTP_PCB_FLAGS_BOUNDALL, - SCTP_PCB_ANY_FEATURES, - SCTP_ASOC_ANY_STATE, - (void *)asc, 0, - sctp_asconf_iterator_end, NULL, 0); + int ret; + + ret = sctp_initiate_iterator(sctp_asconf_iterator_ep, + sctp_asconf_iterator_stcb, + NULL, /* No ep end for boundall */ + SCTP_PCB_FLAGS_BOUNDALL, + SCTP_PCB_ANY_FEATURES, + SCTP_ASOC_ANY_STATE, + (void *)asc, 0, + sctp_asconf_iterator_end, NULL, 0); + if (ret) { + SCTP_PRINTF("Failed to initiate iterator for handle_addr_wq\n"); + /* Freeing if we are stopping or put back on the addr_wq. */ + if (SCTP_BASE_VAR(sctp_pcb_initialized) == 0) { + sctp_asconf_iterator_end(asc, 0); + } else { + LIST_FOREACH(wi, &asc->list_of_work, sctp_nxt_addr) { + LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); + } + SCTP_FREE(asc, SCTP_M_ASC_IT); + } + } } } +/*- + * The following table shows which pointers for the inp, stcb, or net are + * stored for each timer after it was started. + * + *|Name |Timer |inp |stcb|net | + *|-----------------------------|-----------------------------|----|----|----| + *|SCTP_TIMER_TYPE_SEND |net->rxt_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_INIT |net->rxt_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_RECV |stcb->asoc.dack_timer |Yes |Yes |No | + *|SCTP_TIMER_TYPE_SHUTDOWN |net->rxt_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_HEARTBEAT |net->hb_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_COOKIE |net->rxt_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_NEWCOOKIE |inp->sctp_ep.signature_change|Yes |No |No | + *|SCTP_TIMER_TYPE_PATHMTURAISE |net->pmtu_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_SHUTDOWNACK |net->rxt_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_ASCONF |stcb->asoc.asconf_timer |Yes |Yes |Yes | + *|SCTP_TIMER_TYPE_SHUTDOWNGUARD|stcb->asoc.shut_guard_timer |Yes |Yes |No | + *|SCTP_TIMER_TYPE_AUTOCLOSE |stcb->asoc.autoclose_timer |Yes |Yes |No | + *|SCTP_TIMER_TYPE_STRRESET |stcb->asoc.strreset_timer |Yes |Yes |No | + *|SCTP_TIMER_TYPE_INPKILL |inp->sctp_ep.signature_change|Yes |No |No | + *|SCTP_TIMER_TYPE_ASOCKILL |stcb->asoc.strreset_timer |Yes |Yes |No | + *|SCTP_TIMER_TYPE_ADDR_WQ |SCTP_BASE_INFO(addr_wq_timer)|No |No |No | + *|SCTP_TIMER_TYPE_PRIM_DELETED |stcb->asoc.delete_prim_timer |Yes |Yes |No | + */ + void sctp_timeout_handler(void *t) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif + struct timeval tv; struct sctp_inpcb *inp; struct sctp_tcb *stcb; struct sctp_nets *net; struct sctp_timer *tmr; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct mbuf *op_err; +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif - int did_output, type; +#if defined(__Userspace__) + struct socket *upcall_socket = NULL; +#endif + int type; + int i, secret; + bool did_output, released_asoc_reference; + /* + * If inp, stcb or net are not NULL, then references to these were + * added when the timer was started, and must be released before this + * function returns. + */ tmr = (struct sctp_timer *)t; inp = (struct sctp_inpcb *)tmr->ep; stcb = (struct sctp_tcb *)tmr->tcb; net = (struct sctp_nets *)tmr->net; -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_SET((struct vnet *)tmr->vnet); + NET_EPOCH_ENTER(et); #endif - did_output = 1; + released_asoc_reference = false; #ifdef SCTP_AUDITING_ENABLED sctp_audit_log(0xF0, (uint8_t) tmr->type); @@ -1556,146 +1818,87 @@ sctp_timeout_handler(void *t) #endif /* sanity checks... */ - if (tmr->self != (void *)tmr) { - /* - * SCTP_PRINTF("Stale SCTP timer fired (%p), ignoring...\n", - * (void *)tmr); - */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; - } + KASSERT(tmr->self == NULL || tmr->self == tmr, + ("sctp_timeout_handler: tmr->self corrupted")); + KASSERT(SCTP_IS_TIMER_TYPE_VALID(tmr->type), + ("sctp_timeout_handler: invalid timer type %d", tmr->type)); + type = tmr->type; + KASSERT(stcb == NULL || stcb->sctp_ep == inp, + ("sctp_timeout_handler of type %d: inp = %p, stcb->sctp_ep %p", + type, stcb, stcb->sctp_ep)); tmr->stopped_from = 0xa001; - if (!SCTP_IS_TIMER_TYPE_VALID(tmr->type)) { - /* - * SCTP_PRINTF("SCTP timer fired with invalid type: 0x%x\n", - * tmr->type); - */ -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; + if ((stcb != NULL) && (stcb->asoc.state == SCTP_STATE_EMPTY)) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d handler exiting due to CLOSED association.\n", + type); + goto out_decr; } tmr->stopped_from = 0xa002; - if ((tmr->type != SCTP_TIMER_TYPE_ADDR_WQ) && (inp == NULL)) { -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; - } - /* if this is an iterator timeout, get the struct and clear inp */ - tmr->stopped_from = 0xa003; - type = tmr->type; - if (inp) { - SCTP_INP_INCR_REF(inp); - if ((inp->sctp_socket == NULL) && - ((tmr->type != SCTP_TIMER_TYPE_INPKILL) && - (tmr->type != SCTP_TIMER_TYPE_INIT) && - (tmr->type != SCTP_TIMER_TYPE_SEND) && - (tmr->type != SCTP_TIMER_TYPE_RECV) && - (tmr->type != SCTP_TIMER_TYPE_HEARTBEAT) && - (tmr->type != SCTP_TIMER_TYPE_SHUTDOWN) && - (tmr->type != SCTP_TIMER_TYPE_SHUTDOWNACK) && - (tmr->type != SCTP_TIMER_TYPE_SHUTDOWNGUARD) && - (tmr->type != SCTP_TIMER_TYPE_ASOCKILL)) - ) { - SCTP_INP_DECR_REF(inp); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; - } - } - tmr->stopped_from = 0xa004; - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, 1); - if (stcb->asoc.state == 0) { - atomic_add_int(&stcb->asoc.refcnt, -1); - if (inp) { - SCTP_INP_DECR_REF(inp); - } -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; - } - } - tmr->stopped_from = 0xa005; - SCTPDBG(SCTP_DEBUG_TIMER1, "Timer type %d goes off\n", tmr->type); + SCTPDBG(SCTP_DEBUG_TIMER2, "Timer type %d goes off.\n", type); if (!SCTP_OS_TIMER_ACTIVE(&tmr->timer)) { - if (inp) { - SCTP_INP_DECR_REF(inp); - } - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, -1); - } -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d handler exiting due to not being active.\n", + type); + goto out_decr; } - tmr->stopped_from = 0xa006; + tmr->stopped_from = 0xa003; if (stcb) { SCTP_TCB_LOCK(stcb); - atomic_add_int(&stcb->asoc.refcnt, -1); - if ((tmr->type != SCTP_TIMER_TYPE_ASOCKILL) && - ((stcb->asoc.state == 0) || + /* + * Release reference so that association can be freed if + * necessary below. + * This is safe now that we have acquired the lock. + */ + atomic_subtract_int(&stcb->asoc.refcnt, 1); + released_asoc_reference = true; + if ((type != SCTP_TIMER_TYPE_ASOCKILL) && + ((stcb->asoc.state == SCTP_STATE_EMPTY) || (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED))) { - SCTP_TCB_UNLOCK(stcb); - if (inp) { - SCTP_INP_DECR_REF(inp); - } -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 - CURVNET_RESTORE(); -#endif - return; + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d handler exiting due to CLOSED association.\n", + type); + goto out; } + } else if (inp != NULL) { + SCTP_INP_WLOCK(inp); + } else { + SCTP_WQ_ADDR_LOCK(); } - /* record in stopped what t-o occured */ - tmr->stopped_from = tmr->type; + /* Record in stopped_from which timeout occurred. */ + tmr->stopped_from = type; /* mark as being serviced now */ if (SCTP_OS_TIMER_PENDING(&tmr->timer)) { /* * Callout has been rescheduled. */ - goto get_out; + goto out; } if (!SCTP_OS_TIMER_ACTIVE(&tmr->timer)) { /* * Not active, so no action. */ - goto get_out; + goto out; } SCTP_OS_TIMER_DEACTIVATE(&tmr->timer); +#if defined(__Userspace__) + if ((stcb != NULL) && + ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + upcall_socket = stcb->sctp_socket; + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + } +#endif /* call the handler for the appropriate timer type */ - switch (tmr->type) { - case SCTP_TIMER_TYPE_ZERO_COPY: - if (inp == NULL) { - break; - } - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); - } - break; - case SCTP_TIMER_TYPE_ZCOPY_SENDQ: - if (inp == NULL) { - break; - } - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_SENDQ_EVENT(inp, inp->sctp_socket); - } - break; - case SCTP_TIMER_TYPE_ADDR_WQ: - sctp_handle_addr_wq(); - break; + switch (type) { case SCTP_TIMER_TYPE_SEND: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timodata); stcb->asoc.timodata++; stcb->asoc.num_send_timers_up--; @@ -1713,65 +1916,72 @@ sctp_timeout_handler(void *t) sctp_auditing(4, inp, stcb, net); #endif sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED); + did_output = true; if ((stcb->asoc.num_send_timers_up == 0) && (stcb->asoc.sent_queue_cnt > 0)) { struct sctp_tmit_chunk *chk; /* - * safeguard. If there on some on the sent queue + * Safeguard. If there on some on the sent queue * somewhere but no timers running something is * wrong... so we start a timer on the first chunk * on the send queue on whatever net it is sent to. */ - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); - sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, - chk->whoTo); + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); + } } break; case SCTP_TIMER_TYPE_INIT: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timoinit); stcb->asoc.timoinit++; if (sctp_t1init_timer(inp, stcb, net)) { /* no need to unlock on tcb its gone */ goto out_decr; } - /* We do output but not here */ - did_output = 0; + did_output = false; break; case SCTP_TIMER_TYPE_RECV: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timosack); stcb->asoc.timosack++; sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED); #ifdef SCTP_AUDITING_ENABLED - sctp_auditing(4, inp, stcb, net); + sctp_auditing(4, inp, stcb, NULL); #endif sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SACK_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; break; case SCTP_TIMER_TYPE_SHUTDOWN: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timoshutdown); + stcb->asoc.timoshutdown++; if (sctp_shutdown_timer(inp, stcb, net)) { /* no need to unlock on tcb its gone */ goto out_decr; } - SCTP_STAT_INCR(sctps_timoshutdown); - stcb->asoc.timoshutdown++; #ifdef SCTP_AUDITING_ENABLED sctp_auditing(4, inp, stcb, net); #endif sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SHUT_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; break; case SCTP_TIMER_TYPE_HEARTBEAT: - if ((stcb == NULL) || (inp == NULL) || (net == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timoheartbeat); stcb->asoc.timoheartbeat++; if (sctp_heartbeat_timer(inp, stcb, net)) { @@ -1781,22 +1991,24 @@ sctp_timeout_handler(void *t) #ifdef SCTP_AUDITING_ENABLED sctp_auditing(4, inp, stcb, net); #endif - if (!(net->dest_state & SCTP_ADDR_NOHB)) { + if ((net->dest_state & SCTP_ADDR_NOHB) == 0) { sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_HB_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; + } else { + did_output = false; } break; case SCTP_TIMER_TYPE_COOKIE: - if ((stcb == NULL) || (inp == NULL)) { - break; - } - + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timocookie); + stcb->asoc.timocookie++; if (sctp_cookie_timer(inp, stcb, net)) { /* no need to unlock on tcb its gone */ goto out_decr; } - SCTP_STAT_INCR(sctps_timocookie); - stcb->asoc.timocookie++; #ifdef SCTP_AUDITING_ENABLED sctp_auditing(4, inp, stcb, net); #endif @@ -1805,47 +2017,42 @@ sctp_timeout_handler(void *t) * respect to where from in chunk_output. */ sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED); + did_output = true; break; case SCTP_TIMER_TYPE_NEWCOOKIE: - { - struct timeval tv; - int i, secret; - if (inp == NULL) { - break; - } - SCTP_STAT_INCR(sctps_timosecret); - (void)SCTP_GETTIME_TIMEVAL(&tv); - SCTP_INP_WLOCK(inp); - inp->sctp_ep.time_of_secret_change = tv.tv_sec; - inp->sctp_ep.last_secret_number = - inp->sctp_ep.current_secret_number; - inp->sctp_ep.current_secret_number++; - if (inp->sctp_ep.current_secret_number >= - SCTP_HOW_MANY_SECRETS) { - inp->sctp_ep.current_secret_number = 0; - } - secret = (int)inp->sctp_ep.current_secret_number; - for (i = 0; i < SCTP_NUMBER_OF_SECRETS; i++) { - inp->sctp_ep.secret_key[secret][i] = - sctp_select_initial_TSN(&inp->sctp_ep); - } - SCTP_INP_WUNLOCK(inp); - sctp_timer_start(SCTP_TIMER_TYPE_NEWCOOKIE, inp, stcb, net); - } - did_output = 0; + KASSERT(inp != NULL && stcb == NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timosecret); + (void)SCTP_GETTIME_TIMEVAL(&tv); + inp->sctp_ep.time_of_secret_change = (unsigned int)tv.tv_sec; + inp->sctp_ep.last_secret_number = + inp->sctp_ep.current_secret_number; + inp->sctp_ep.current_secret_number++; + if (inp->sctp_ep.current_secret_number >= + SCTP_HOW_MANY_SECRETS) { + inp->sctp_ep.current_secret_number = 0; + } + secret = (int)inp->sctp_ep.current_secret_number; + for (i = 0; i < SCTP_NUMBER_OF_SECRETS; i++) { + inp->sctp_ep.secret_key[secret][i] = + sctp_select_initial_TSN(&inp->sctp_ep); + } + sctp_timer_start(SCTP_TIMER_TYPE_NEWCOOKIE, inp, NULL, NULL); + did_output = false; break; case SCTP_TIMER_TYPE_PATHMTURAISE: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timopathmtu); sctp_pathmtu_timer(inp, stcb, net); - did_output = 0; + did_output = false; break; case SCTP_TIMER_TYPE_SHUTDOWNACK: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); if (sctp_shutdownack_timer(inp, stcb, net)) { /* no need to unlock on tcb its gone */ goto out_decr; @@ -1856,67 +2063,86 @@ sctp_timeout_handler(void *t) sctp_auditing(4, inp, stcb, net); #endif sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SHUT_ACK_TMR, SCTP_SO_NOT_LOCKED); - break; - case SCTP_TIMER_TYPE_SHUTDOWNGUARD: - if ((stcb == NULL) || (inp == NULL)) { - break; - } - SCTP_STAT_INCR(sctps_timoshutdownguard); - sctp_abort_an_association(inp, stcb, NULL, SCTP_SO_NOT_LOCKED); - /* no need to unlock on tcb its gone */ - goto out_decr; - - case SCTP_TIMER_TYPE_STRRESET: - if ((stcb == NULL) || (inp == NULL)) { - break; - } - if (sctp_strreset_timer(inp, stcb, net)) { - /* no need to unlock on tcb its gone */ - goto out_decr; - } - SCTP_STAT_INCR(sctps_timostrmrst); - sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; break; case SCTP_TIMER_TYPE_ASCONF: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net != NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timoasconf); if (sctp_asconf_timer(inp, stcb, net)) { /* no need to unlock on tcb its gone */ goto out_decr; } - SCTP_STAT_INCR(sctps_timoasconf); #ifdef SCTP_AUDITING_ENABLED sctp_auditing(4, inp, stcb, net); #endif sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_ASCONF_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; break; - case SCTP_TIMER_TYPE_PRIM_DELETED: - if ((stcb == NULL) || (inp == NULL)) { - break; - } - sctp_delete_prim_timer(inp, stcb, net); - SCTP_STAT_INCR(sctps_timodelprim); - break; - + case SCTP_TIMER_TYPE_SHUTDOWNGUARD: + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timoshutdownguard); + op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code), + "Shutdown guard timer expired"); + sctp_abort_an_association(inp, stcb, op_err, true, SCTP_SO_NOT_LOCKED); + /* no need to unlock on tcb its gone */ + goto out_decr; case SCTP_TIMER_TYPE_AUTOCLOSE: - if ((stcb == NULL) || (inp == NULL)) { - break; - } + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timoautoclose); - sctp_autoclose_timer(inp, stcb, net); + sctp_autoclose_timer(inp, stcb); sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_AUTOCLOSE_TMR, SCTP_SO_NOT_LOCKED); - did_output = 0; + did_output = true; break; - case SCTP_TIMER_TYPE_ASOCKILL: - if ((stcb == NULL) || (inp == NULL)) { - break; + case SCTP_TIMER_TYPE_STRRESET: + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timostrmrst); + if (sctp_strreset_timer(inp, stcb)) { + /* no need to unlock on tcb its gone */ + goto out_decr; } + sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_STRRST_TMR, SCTP_SO_NOT_LOCKED); + did_output = true; + break; + case SCTP_TIMER_TYPE_INPKILL: + KASSERT(inp != NULL && stcb == NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timoinpkill); + /* + * special case, take away our increment since WE are the + * killer + */ + sctp_timer_stop(SCTP_TIMER_TYPE_INPKILL, inp, NULL, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_3); +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_LOCK(SCTP_INP_SO(inp), 1); +#endif + SCTP_INP_DECR_REF(inp); + SCTP_INP_WUNLOCK(inp); + sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, + SCTP_CALLED_FROM_INPKILL_TIMER); +#if defined(__APPLE__) && !defined(__Userspace__) + SCTP_SOCKET_UNLOCK(SCTP_INP_SO(inp), 1); +#endif + inp = NULL; + goto out_decr; + case SCTP_TIMER_TYPE_ASOCKILL: + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); SCTP_STAT_INCR(sctps_timoassockill); /* Can we free it yet? */ - SCTP_INP_DECR_REF(inp); - sctp_timer_stop(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL, SCTP_FROM_SCTPUTIL+SCTP_LOC_1); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + sctp_timer_stop(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_1); +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -1924,8 +2150,9 @@ sctp_timeout_handler(void *t) SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL+SCTP_LOC_2); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_2); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif /* @@ -1933,39 +2160,35 @@ sctp_timeout_handler(void *t) * duplicate unlock or unlock of a free mtx :-0 */ stcb = NULL; - goto out_no_decr; - case SCTP_TIMER_TYPE_INPKILL: - SCTP_STAT_INCR(sctps_timoinpkill); - if (inp == NULL) { - break; - } - /* - * special case, take away our increment since WE are the - * killer - */ - SCTP_INP_DECR_REF(inp); - sctp_timer_stop(SCTP_TIMER_TYPE_INPKILL, inp, NULL, NULL, SCTP_FROM_SCTPUTIL+SCTP_LOC_3); -#if defined(__APPLE__) - SCTP_SOCKET_LOCK(SCTP_INP_SO(inp), 1); -#endif - sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, - SCTP_CALLED_FROM_INPKILL_TIMER); -#if defined(__APPLE__) - SCTP_SOCKET_UNLOCK(SCTP_INP_SO(inp), 1); -#endif - inp = NULL; - goto out_no_decr; - default: - SCTPDBG(SCTP_DEBUG_TIMER1, "sctp_timeout_handler:unknown timer %d\n", - tmr->type); + goto out_decr; + case SCTP_TIMER_TYPE_ADDR_WQ: + KASSERT(inp == NULL && stcb == NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + sctp_handle_addr_wq(); + did_output = true; break; + case SCTP_TIMER_TYPE_PRIM_DELETED: + KASSERT(inp != NULL && stcb != NULL && net == NULL, + ("timeout of type %d: inp = %p, stcb = %p, net = %p", + type, inp, stcb, net)); + SCTP_STAT_INCR(sctps_timodelprim); + sctp_delete_prim_timer(inp, stcb); + did_output = false; + break; + default: +#ifdef INVARIANTS + panic("Unknown timer type %d", type); +#else + goto out; +#endif } #ifdef SCTP_AUDITING_ENABLED - sctp_audit_log(0xF1, (uint8_t) tmr->type); - if (inp) + sctp_audit_log(0xF1, (uint8_t) type); + if (inp != NULL) sctp_auditing(5, inp, stcb, net); #endif - if ((did_output) && stcb) { + if (did_output && (stcb != NULL)) { /* * Now we need to clean up the control chunk chain if an * ECNE is on it. It must be marked as UNSENT again so next @@ -1975,294 +2198,456 @@ sctp_timeout_handler(void *t) */ sctp_fix_ecn_echo(&stcb->asoc); } -get_out: - if (stcb) { +out: + if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); + } else if (inp != NULL) { + SCTP_INP_WUNLOCK(inp); + } else { + SCTP_WQ_ADDR_UNLOCK(); } out_decr: - if (inp) { +#if defined(__Userspace__) + if (upcall_socket != NULL) { + if ((upcall_socket->so_upcall != NULL) && + (upcall_socket->so_error != 0)) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); + } +#endif + /* These reference counts were incremented in sctp_timer_start(). */ + if (inp != NULL) { SCTP_INP_DECR_REF(inp); } - -out_no_decr: - SCTPDBG(SCTP_DEBUG_TIMER1, "Timer now complete (type %d)\n", - type); -#if defined(__FreeBSD__) && __FreeBSD_version >= 801000 + if ((stcb != NULL) && !released_asoc_reference) { + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } + if (net != NULL) { + sctp_free_remote_addr(net); + } + SCTPDBG(SCTP_DEBUG_TIMER2, "Timer type %d handler finished.\n", type); +#if defined(__FreeBSD__) && !defined(__Userspace__) CURVNET_RESTORE(); + NET_EPOCH_EXIT(et); #endif } +/*- + * The following table shows which parameters must be provided + * when calling sctp_timer_start(). For parameters not being + * provided, NULL must be used. + * + * |Name |inp |stcb|net | + * |-----------------------------|----|----|----| + * |SCTP_TIMER_TYPE_SEND |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_INIT |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_RECV |Yes |Yes |No | + * |SCTP_TIMER_TYPE_SHUTDOWN |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_HEARTBEAT |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_COOKIE |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_NEWCOOKIE |Yes |No |No | + * |SCTP_TIMER_TYPE_PATHMTURAISE |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_SHUTDOWNACK |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_ASCONF |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_SHUTDOWNGUARD|Yes |Yes |No | + * |SCTP_TIMER_TYPE_AUTOCLOSE |Yes |Yes |No | + * |SCTP_TIMER_TYPE_STRRESET |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_INPKILL |Yes |No |No | + * |SCTP_TIMER_TYPE_ASOCKILL |Yes |Yes |No | + * |SCTP_TIMER_TYPE_ADDR_WQ |No |No |No | + * |SCTP_TIMER_TYPE_PRIM_DELETED |Yes |Yes |No | + * + */ + void sctp_timer_start(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net) { - uint32_t to_ticks; struct sctp_timer *tmr; + uint32_t to_ticks; + uint32_t rndval, jitter; - if ((t_type != SCTP_TIMER_TYPE_ADDR_WQ) && (inp == NULL)) - return; - + KASSERT(stcb == NULL || stcb->sctp_ep == inp, + ("sctp_timer_start of type %d: inp = %p, stcb->sctp_ep %p", + t_type, stcb, stcb->sctp_ep)); tmr = NULL; - if (stcb) { + if (stcb != NULL) { SCTP_TCB_LOCK_ASSERT(stcb); + } else if (inp != NULL) { + SCTP_INP_WLOCK_ASSERT(inp); + } else { + SCTP_WQ_ADDR_LOCK_ASSERT(); + } + if (stcb != NULL) { + /* Don't restart timer on association that's about to be killed. */ + if ((stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) && + (t_type != SCTP_TIMER_TYPE_ASOCKILL)) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d not started: inp=%p, stcb=%p, net=%p (stcb deleted).\n", + t_type, inp, stcb, net); + return; + } + /* Don't restart timer on net that's been removed. */ + if (net != NULL && (net->dest_state & SCTP_ADDR_BEING_DELETED)) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d not started: inp=%p, stcb=%p, net=%p (net deleted).\n", + t_type, inp, stcb, net); + return; + } } switch (t_type) { - case SCTP_TIMER_TYPE_ZERO_COPY: - tmr = &inp->sctp_ep.zero_copy_timer; - to_ticks = SCTP_ZERO_COPY_TICK_DELAY; - break; - case SCTP_TIMER_TYPE_ZCOPY_SENDQ: - tmr = &inp->sctp_ep.zero_copy_sendq_timer; - to_ticks = SCTP_ZERO_COPY_SENDQ_TICK_DELAY; - break; - case SCTP_TIMER_TYPE_ADDR_WQ: - /* Only 1 tick away :-) */ - tmr = &SCTP_BASE_INFO(addr_wq_timer); - to_ticks = SCTP_ADDRESS_TICK_DELAY; - break; case SCTP_TIMER_TYPE_SEND: - /* Here we use the RTO timer */ - { - int rto_val; - - if ((stcb == NULL) || (net == NULL)) { - return; - } - tmr = &net->rxt_timer; - if (net->RTO == 0) { - rto_val = stcb->asoc.initial_rto; - } else { - rto_val = net->RTO; - } - to_ticks = MSEC_TO_TICKS(rto_val); + /* Here we use the RTO timer. */ + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &net->rxt_timer; + if (net->RTO == 0) { + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); + } else { + to_ticks = sctp_msecs_to_ticks(net->RTO); } break; case SCTP_TIMER_TYPE_INIT: /* * Here we use the INIT timer default usually about 1 - * minute. + * second. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); } else { - to_ticks = MSEC_TO_TICKS(net->RTO); + to_ticks = sctp_msecs_to_ticks(net->RTO); } break; case SCTP_TIMER_TYPE_RECV: /* - * Here we use the Delayed-Ack timer value from the inp - * ususually about 200ms. + * Here we use the Delayed-Ack timer value from the inp, + * usually about 200ms. */ - if (stcb == NULL) { + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &stcb->asoc.dack_timer; - to_ticks = MSEC_TO_TICKS(stcb->asoc.delayed_ack); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.delayed_ack); break; case SCTP_TIMER_TYPE_SHUTDOWN: /* Here we use the RTO of the destination. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } + tmr = &net->rxt_timer; if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); } else { - to_ticks = MSEC_TO_TICKS(net->RTO); + to_ticks = sctp_msecs_to_ticks(net->RTO); } - tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_HEARTBEAT: /* - * the net is used here so that we can add in the RTO. Even + * The net is used here so that we can add in the RTO. Even * though we use a different timer. We also add the HB timer * PLUS a random jitter. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif + } + if ((net->dest_state & SCTP_ADDR_NOHB) && + ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0)) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d not started: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); + return; + } + tmr = &net->hb_timer; + if (net->RTO == 0) { + to_ticks = stcb->asoc.initial_rto; } else { - uint32_t rndval; - uint32_t jitter; - - if ((net->dest_state & SCTP_ADDR_NOHB) && - !(net->dest_state & SCTP_ADDR_UNCONFIRMED)) { - return; - } - if (net->RTO == 0) { - to_ticks = stcb->asoc.initial_rto; - } else { - to_ticks = net->RTO; - } - rndval = sctp_select_initial_TSN(&inp->sctp_ep); - jitter = rndval % to_ticks; - if (jitter >= (to_ticks >> 1)) { - to_ticks = to_ticks + (jitter - (to_ticks >> 1)); - } else { - to_ticks = to_ticks - jitter; - } - if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) && - !(net->dest_state & SCTP_ADDR_PF)) { + to_ticks = net->RTO; + } + rndval = sctp_select_initial_TSN(&inp->sctp_ep); + jitter = rndval % to_ticks; + if (to_ticks > 1) { + to_ticks >>= 1; + } + if (jitter < (UINT32_MAX - to_ticks)) { + to_ticks += jitter; + } else { + to_ticks = UINT32_MAX; + } + if (!((net->dest_state & SCTP_ADDR_UNCONFIRMED) && + (net->dest_state & SCTP_ADDR_REACHABLE)) && + ((net->dest_state & SCTP_ADDR_PF) == 0)) { + if (net->heart_beat_delay < (UINT32_MAX - to_ticks)) { to_ticks += net->heart_beat_delay; + } else { + to_ticks = UINT32_MAX; } - /* - * Now we must convert the to_ticks that are now in - * ms to ticks. - */ - to_ticks = MSEC_TO_TICKS(to_ticks); - tmr = &net->hb_timer; } + /* + * Now we must convert the to_ticks that are now in + * ms to ticks. + */ + to_ticks = sctp_msecs_to_ticks(to_ticks); break; case SCTP_TIMER_TYPE_COOKIE: /* * Here we can use the RTO timer from the network since one - * RTT was compelete. If a retran happened then we will be - * using the RTO initial value. + * RTT was complete. If a retransmission happened then we will + * be using the RTO initial value. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } + tmr = &net->rxt_timer; if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); } else { - to_ticks = MSEC_TO_TICKS(net->RTO); + to_ticks = sctp_msecs_to_ticks(net->RTO); } - tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_NEWCOOKIE: /* - * nothing needed but the endpoint here ususually about 60 + * Nothing needed but the endpoint here usually about 60 * minutes. */ - tmr = &inp->sctp_ep.signature_change; - to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_SIGNATURE]; - break; - case SCTP_TIMER_TYPE_ASOCKILL: - if (stcb == NULL) { + if ((inp == NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - tmr = &stcb->asoc.strreset_timer; - to_ticks = MSEC_TO_TICKS(SCTP_ASOC_KILL_TIMEOUT); - break; - case SCTP_TIMER_TYPE_INPKILL: - /* - * The inp is setup to die. We re-use the signature_chage - * timer since that has stopped and we are in the GONE - * state. - */ tmr = &inp->sctp_ep.signature_change; - to_ticks = MSEC_TO_TICKS(SCTP_INP_KILL_TIMEOUT); + to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_SIGNATURE]; break; case SCTP_TIMER_TYPE_PATHMTURAISE: /* - * Here we use the value found in the EP for PMTU ususually + * Here we use the value found in the EP for PMTUD, usually * about 10 minutes. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } if (net->dest_state & SCTP_ADDR_NO_PMTUD) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d not started: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); return; } - to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_PMTU]; tmr = &net->pmtu_timer; + to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_PMTU]; break; case SCTP_TIMER_TYPE_SHUTDOWNACK: - /* Here we use the RTO of the destination */ - if ((stcb == NULL) || (net == NULL)) { + /* Here we use the RTO of the destination. */ + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } + tmr = &net->rxt_timer; if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); } else { - to_ticks = MSEC_TO_TICKS(net->RTO); + to_ticks = sctp_msecs_to_ticks(net->RTO); + } + break; + case SCTP_TIMER_TYPE_ASCONF: + /* + * Here the timer comes from the stcb but its value is from + * the net's RTO. + */ + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &stcb->asoc.asconf_timer; + if (net->RTO == 0) { + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); + } else { + to_ticks = sctp_msecs_to_ticks(net->RTO); } - tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_SHUTDOWNGUARD: /* * Here we use the endpoints shutdown guard timer usually * about 3 minutes. */ - if (stcb == NULL) { + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN]; tmr = &stcb->asoc.shut_guard_timer; + if (inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN] == 0) { + if (stcb->asoc.maxrto < UINT32_MAX / 5) { + to_ticks = sctp_msecs_to_ticks(5 * stcb->asoc.maxrto); + } else { + to_ticks = sctp_msecs_to_ticks(UINT32_MAX); + } + } else { + to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN]; + } + break; + case SCTP_TIMER_TYPE_AUTOCLOSE: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &stcb->asoc.autoclose_timer; + to_ticks = stcb->asoc.sctp_autoclose_ticks; break; case SCTP_TIMER_TYPE_STRRESET: /* * Here the timer comes from the stcb but its value is from * the net's RTO. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } + tmr = &stcb->asoc.strreset_timer; if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); } else { - to_ticks = MSEC_TO_TICKS(net->RTO); + to_ticks = sctp_msecs_to_ticks(net->RTO); } - tmr = &stcb->asoc.strreset_timer; break; - case SCTP_TIMER_TYPE_ASCONF: + case SCTP_TIMER_TYPE_INPKILL: /* - * Here the timer comes from the stcb but its value is from - * the net's RTO. + * The inp is setup to die. We re-use the signature_change + * timer since that has stopped and we are in the GONE + * state. */ - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - if (net->RTO == 0) { - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); - } else { - to_ticks = MSEC_TO_TICKS(net->RTO); - } - tmr = &stcb->asoc.asconf_timer; + tmr = &inp->sctp_ep.signature_change; + to_ticks = sctp_msecs_to_ticks(SCTP_INP_KILL_TIMEOUT); break; - case SCTP_TIMER_TYPE_PRIM_DELETED: - if ((stcb == NULL) || (net != NULL)) { + case SCTP_TIMER_TYPE_ASOCKILL: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - to_ticks = MSEC_TO_TICKS(stcb->asoc.initial_rto); - tmr = &stcb->asoc.delete_prim_timer; + tmr = &stcb->asoc.strreset_timer; + to_ticks = sctp_msecs_to_ticks(SCTP_ASOC_KILL_TIMEOUT); break; - case SCTP_TIMER_TYPE_AUTOCLOSE: - if (stcb == NULL) { + case SCTP_TIMER_TYPE_ADDR_WQ: + if ((inp != NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - if (stcb->asoc.sctp_autoclose_ticks == 0) { - /* - * Really an error since stcb is NOT set to - * autoclose - */ + /* Only 1 tick away :-) */ + tmr = &SCTP_BASE_INFO(addr_wq_timer); + to_ticks = SCTP_ADDRESS_TICK_DELAY; + break; + case SCTP_TIMER_TYPE_PRIM_DELETED: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_start of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - to_ticks = stcb->asoc.sctp_autoclose_ticks; - tmr = &stcb->asoc.autoclose_timer; + tmr = &stcb->asoc.delete_prim_timer; + to_ticks = sctp_msecs_to_ticks(stcb->asoc.initial_rto); break; default: - SCTPDBG(SCTP_DEBUG_TIMER1, "%s: Unknown timer type %d\n", - __FUNCTION__, t_type); - return; - break; - } - if ((to_ticks <= 0) || (tmr == NULL)) { - SCTPDBG(SCTP_DEBUG_TIMER1, "%s: %d:software error to_ticks:%d tmr:%p not set ??\n", - __FUNCTION__, t_type, to_ticks, (void *)tmr); +#ifdef INVARIANTS + panic("Unknown timer type %d", t_type); +#else return; +#endif } + KASSERT(tmr != NULL, ("tmr is NULL for timer type %d", t_type)); + KASSERT(to_ticks > 0, ("to_ticks == 0 for timer type %d", t_type)); if (SCTP_OS_TIMER_PENDING(&tmr->timer)) { /* - * we do NOT allow you to have it already running. if it is - * we leave the current one up unchanged + * We do NOT allow you to have it already running. If it is, + * we leave the current one up unchanged. */ + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d already running: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); return; } - /* At this point we can proceed */ + /* At this point we can proceed. */ if (t_type == SCTP_TIMER_TYPE_SEND) { stcb->asoc.num_send_timers_up++; } @@ -2270,161 +2655,301 @@ sctp_timer_start(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb, tmr->type = t_type; tmr->ep = (void *)inp; tmr->tcb = (void *)stcb; - tmr->net = (void *)net; + if (t_type == SCTP_TIMER_TYPE_STRRESET) { + tmr->net = NULL; + } else { + tmr->net = (void *)net; + } tmr->self = (void *)tmr; -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) && !defined(__Userspace__) tmr->vnet = (void *)curvnet; #endif -#ifndef __Panda__ tmr->ticks = sctp_get_tick_count(); -#endif - (void)SCTP_OS_TIMER_START(&tmr->timer, to_ticks, sctp_timeout_handler, tmr); + if (SCTP_OS_TIMER_START(&tmr->timer, to_ticks, sctp_timeout_handler, tmr) == 0) { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d started: ticks=%u, inp=%p, stcb=%p, net=%p.\n", + t_type, to_ticks, inp, stcb, net); + /* + * If this is a newly scheduled callout, as opposed to a + * rescheduled one, increment relevant reference counts. + */ + if (tmr->ep != NULL) { + SCTP_INP_INCR_REF(inp); + } + if (tmr->tcb != NULL) { + atomic_add_int(&stcb->asoc.refcnt, 1); + } + if (tmr->net != NULL) { + atomic_add_int(&net->ref_count, 1); + } + } else { + /* + * This should not happen, since we checked for pending + * above. + */ + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d restarted: ticks=%u, inp=%p, stcb=%p, net=%p.\n", + t_type, to_ticks, inp, stcb, net); + } return; } +/*- + * The following table shows which parameters must be provided + * when calling sctp_timer_stop(). For parameters not being + * provided, NULL must be used. + * + * |Name |inp |stcb|net | + * |-----------------------------|----|----|----| + * |SCTP_TIMER_TYPE_SEND |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_INIT |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_RECV |Yes |Yes |No | + * |SCTP_TIMER_TYPE_SHUTDOWN |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_HEARTBEAT |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_COOKIE |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_NEWCOOKIE |Yes |No |No | + * |SCTP_TIMER_TYPE_PATHMTURAISE |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_SHUTDOWNACK |Yes |Yes |Yes | + * |SCTP_TIMER_TYPE_ASCONF |Yes |Yes |No | + * |SCTP_TIMER_TYPE_SHUTDOWNGUARD|Yes |Yes |No | + * |SCTP_TIMER_TYPE_AUTOCLOSE |Yes |Yes |No | + * |SCTP_TIMER_TYPE_STRRESET |Yes |Yes |No | + * |SCTP_TIMER_TYPE_INPKILL |Yes |No |No | + * |SCTP_TIMER_TYPE_ASOCKILL |Yes |Yes |No | + * |SCTP_TIMER_TYPE_ADDR_WQ |No |No |No | + * |SCTP_TIMER_TYPE_PRIM_DELETED |Yes |Yes |No | + * + */ + void sctp_timer_stop(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t from) { struct sctp_timer *tmr; - if ((t_type != SCTP_TIMER_TYPE_ADDR_WQ) && - (inp == NULL)) - return; - - tmr = NULL; - if (stcb) { + KASSERT(stcb == NULL || stcb->sctp_ep == inp, + ("sctp_timer_stop of type %d: inp = %p, stcb->sctp_ep %p", + t_type, stcb, stcb->sctp_ep)); + if (stcb != NULL) { SCTP_TCB_LOCK_ASSERT(stcb); + } else if (inp != NULL) { + SCTP_INP_WLOCK_ASSERT(inp); + } else { + SCTP_WQ_ADDR_LOCK_ASSERT(); } + tmr = NULL; switch (t_type) { - case SCTP_TIMER_TYPE_ZERO_COPY: - tmr = &inp->sctp_ep.zero_copy_timer; - break; - case SCTP_TIMER_TYPE_ZCOPY_SENDQ: - tmr = &inp->sctp_ep.zero_copy_sendq_timer; - break; - case SCTP_TIMER_TYPE_ADDR_WQ: - tmr = &SCTP_BASE_INFO(addr_wq_timer); - break; case SCTP_TIMER_TYPE_SEND: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_INIT: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_RECV: - if (stcb == NULL) { + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &stcb->asoc.dack_timer; break; case SCTP_TIMER_TYPE_SHUTDOWN: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_HEARTBEAT: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->hb_timer; break; case SCTP_TIMER_TYPE_COOKIE: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; break; case SCTP_TIMER_TYPE_NEWCOOKIE: - /* nothing needed but the endpoint here */ - tmr = &inp->sctp_ep.signature_change; - /* - * We re-use the newcookie timer for the INP kill timer. We - * must assure that we do not kill it by accident. - */ - break; - case SCTP_TIMER_TYPE_ASOCKILL: - /* - * Stop the asoc kill timer. - */ - if (stcb == NULL) { + if ((inp == NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - tmr = &stcb->asoc.strreset_timer; - break; - - case SCTP_TIMER_TYPE_INPKILL: - /* - * The inp is setup to die. We re-use the signature_chage - * timer since that has stopped and we are in the GONE - * state. - */ tmr = &inp->sctp_ep.signature_change; break; case SCTP_TIMER_TYPE_PATHMTURAISE: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->pmtu_timer; break; case SCTP_TIMER_TYPE_SHUTDOWNACK: - if ((stcb == NULL) || (net == NULL)) { + if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &net->rxt_timer; break; + case SCTP_TIMER_TYPE_ASCONF: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &stcb->asoc.asconf_timer; + break; case SCTP_TIMER_TYPE_SHUTDOWNGUARD: - if (stcb == NULL) { + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &stcb->asoc.shut_guard_timer; break; + case SCTP_TIMER_TYPE_AUTOCLOSE: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &stcb->asoc.autoclose_timer; + break; case SCTP_TIMER_TYPE_STRRESET: - if (stcb == NULL) { + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } tmr = &stcb->asoc.strreset_timer; break; - case SCTP_TIMER_TYPE_ASCONF: - if (stcb == NULL) { + case SCTP_TIMER_TYPE_INPKILL: + /* + * The inp is setup to die. We re-use the signature_change + * timer since that has stopped and we are in the GONE + * state. + */ + if ((inp == NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - tmr = &stcb->asoc.asconf_timer; + tmr = &inp->sctp_ep.signature_change; break; - case SCTP_TIMER_TYPE_PRIM_DELETED: - if (stcb == NULL) { + case SCTP_TIMER_TYPE_ASOCKILL: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - tmr = &stcb->asoc.delete_prim_timer; + tmr = &stcb->asoc.strreset_timer; break; - case SCTP_TIMER_TYPE_AUTOCLOSE: - if (stcb == NULL) { + case SCTP_TIMER_TYPE_ADDR_WQ: + if ((inp != NULL) || (stcb != NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else return; +#endif } - tmr = &stcb->asoc.autoclose_timer; + tmr = &SCTP_BASE_INFO(addr_wq_timer); break; - default: - SCTPDBG(SCTP_DEBUG_TIMER1, "%s: Unknown timer type %d\n", - __FUNCTION__, t_type); + case SCTP_TIMER_TYPE_PRIM_DELETED: + if ((inp == NULL) || (stcb == NULL) || (net != NULL)) { +#ifdef INVARIANTS + panic("sctp_timer_stop of type %d: inp = %p, stcb = %p, net = %p", + t_type, inp, stcb, net); +#else + return; +#endif + } + tmr = &stcb->asoc.delete_prim_timer; break; - } - if (tmr == NULL) { + default: +#ifdef INVARIANTS + panic("Unknown timer type %d", t_type); +#else return; +#endif } - if ((tmr->type != t_type) && tmr->type) { + KASSERT(tmr != NULL, ("tmr is NULL for timer type %d", t_type)); + if ((tmr->type != SCTP_TIMER_TYPE_NONE) && + (tmr->type != t_type)) { /* * Ok we have a timer that is under joint use. Cookie timer * per chance with the SEND timer. We therefore are NOT * running the timer that the caller wants stopped. So just * return. */ + SCTPDBG(SCTP_DEBUG_TIMER2, + "Shared timer type %d not running: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); return; } if ((t_type == SCTP_TIMER_TYPE_SEND) && (stcb != NULL)) { @@ -2435,88 +2960,84 @@ sctp_timer_stop(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb, } tmr->self = NULL; tmr->stopped_from = from; - (void)SCTP_OS_TIMER_STOP(&tmr->timer); + if (SCTP_OS_TIMER_STOP(&tmr->timer) == 1) { + KASSERT(tmr->ep == inp, + ("sctp_timer_stop of type %d: inp = %p, tmr->inp = %p", + t_type, inp, tmr->ep)); + KASSERT(tmr->tcb == stcb, + ("sctp_timer_stop of type %d: stcb = %p, tmr->stcb = %p", + t_type, stcb, tmr->tcb)); + KASSERT(((t_type == SCTP_TIMER_TYPE_ASCONF) && (tmr->net != NULL)) || + ((t_type != SCTP_TIMER_TYPE_ASCONF) && (tmr->net == net)), + ("sctp_timer_stop of type %d: net = %p, tmr->net = %p", + t_type, net, tmr->net)); + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d stopped: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); + /* + * If the timer was actually stopped, decrement reference counts + * that were incremented in sctp_timer_start(). + */ + if (tmr->ep != NULL) { + tmr->ep = NULL; + SCTP_INP_DECR_REF(inp); + } + if (tmr->tcb != NULL) { + tmr->tcb = NULL; + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } + if (tmr->net != NULL) { + struct sctp_nets *tmr_net; + + /* + * Can't use net, since it doesn't work for + * SCTP_TIMER_TYPE_ASCONF. + */ + tmr_net = tmr->net; + tmr->net = NULL; + sctp_free_remote_addr(tmr_net); + } + } else { + SCTPDBG(SCTP_DEBUG_TIMER2, + "Timer type %d not stopped: inp=%p, stcb=%p, net=%p.\n", + t_type, inp, stcb, net); + } return; } uint32_t sctp_calculate_len(struct mbuf *m) { - uint32_t tlen = 0; struct mbuf *at; + uint32_t tlen; - at = m; - while (at) { + tlen = 0; + for (at = m; at != NULL; at = SCTP_BUF_NEXT(at)) { tlen += SCTP_BUF_LEN(at); - at = SCTP_BUF_NEXT(at); } return (tlen); } -void -sctp_mtu_size_reset(struct sctp_inpcb *inp, - struct sctp_association *asoc, uint32_t mtu) -{ - /* - * Reset the P-MTU size on this association, this involves changing - * the asoc MTU, going through ANY chunk+overhead larger than mtu to - * allow the DF flag to be cleared. - */ - struct sctp_tmit_chunk *chk; - unsigned int eff_mtu, ovh; - - asoc->smallest_mtu = mtu; - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MIN_OVERHEAD; - } else { - ovh = SCTP_MIN_V4_OVERHEAD; - } - eff_mtu = mtu - ovh; - TAILQ_FOREACH(chk, &asoc->send_queue, sctp_next) { - if (chk->send_size > eff_mtu) { - chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; - } - } - TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { - if (chk->send_size > eff_mtu) { - chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; - } - } -} - - /* - * given an association and starting time of the current RTT period return - * RTO in number of msecs net should point to the current network + * Given an association and starting time of the current RTT period, update + * RTO in number of msecs. net should point to the current network. + * Return 1, if an RTO update was performed, return 0 if no update was + * performed due to invalid starting point. */ -uint32_t +int sctp_calculate_rto(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_nets *net, - struct timeval *told, - int safe, int rtt_from_sack) + struct timeval *old, + int rtt_from_sack) { - /*- - * given an association and the starting time of the current RTT - * period (in value1/value2) return RTO in number of msecs. - */ - int32_t rtt; /* RTT in ms */ + struct timeval now; + uint64_t rtt_us; /* RTT in us */ + int32_t rtt; /* RTT in ms */ uint32_t new_rto; int first_measure = 0; - struct timeval now, then, *old; - - /* Copy it out for sparc64 */ - if (safe == sctp_align_unsafe_makecopy) { - old = &then; - memcpy(&then, told, sizeof(struct timeval)); - } else if (safe == sctp_align_safe_nocopy) { - old = told; - } else { - /* error */ - SCTP_PRINTF("Huh, bad rto calc call\n"); - return (0); - } + /************************/ /* 1. calculate new RTT */ /************************/ @@ -2526,10 +3047,19 @@ sctp_calculate_rto(struct sctp_tcb *stcb, } else { (void)SCTP_GETTIME_TIMEVAL(&now); } + if ((old->tv_sec > now.tv_sec) || + ((old->tv_sec == now.tv_sec) && (old->tv_usec > now.tv_usec))) { + /* The starting point is in the future. */ + return (0); + } timevalsub(&now, old); + rtt_us = (uint64_t)1000000 * (uint64_t)now.tv_sec + (uint64_t)now.tv_usec; + if (rtt_us > SCTP_RTO_UPPER_BOUND * 1000) { + /* The RTT is larger than a sane value. */ + return (0); + } /* store the current RTT in us */ - net->rtt = (uint64_t)1000000 * (uint64_t)now.tv_sec + - (uint64_t)now.tv_usec; + net->rtt = rtt_us; /* compute rtt in ms */ rtt = (int32_t)(net->rtt / 1000); if ((asoc->cc_functions.sctp_rtt_calculated) && (rtt_from_sack == SCTP_RTT_FROM_DATA)) { @@ -2558,7 +3088,7 @@ sctp_calculate_rto(struct sctp_tcb *stcb, * Paper "Congestion Avoidance and Control", Annex A. * * (net->lastsa >> SCTP_RTT_SHIFT) is the srtt - * (net->lastsa >> SCTP_RTT_VAR_SHIFT) is the rttvar + * (net->lastsv >> SCTP_RTT_VAR_SHIFT) is the rttvar */ if (net->RTO_measured) { rtt -= (net->lastsa >> SCTP_RTT_SHIFT); @@ -2572,7 +3102,7 @@ sctp_calculate_rto(struct sctp_tcb *stcb, rto_logging(net, SCTP_LOG_RTTVAR); } } else { - /* First RTO measurment */ + /* First RTO measurement */ net->RTO_measured = 1; first_measure = 1; net->lastsa = rtt << SCTP_RTT_SHIFT; @@ -2599,8 +3129,8 @@ sctp_calculate_rto(struct sctp_tcb *stcb, if (new_rto > stcb->asoc.maxrto) { new_rto = stcb->asoc.maxrto; } - /* we are now returning the RTO */ - return (new_rto); + net->RTO = new_rto; + return (1); } /* @@ -2636,7 +3166,7 @@ sctp_m_getptr(struct mbuf *m, int off, int len, uint8_t * in_ptr) /* else, it spans more than one mbuf, so save a temp copy... */ while ((m != NULL) && (len > 0)) { count = min(SCTP_BUF_LEN(m) - off, len); - bcopy(mtod(m, caddr_t) + off, ptr, count); + memcpy(ptr, mtod(m, caddr_t) + off, count); len -= count; ptr += count; off = 0; @@ -2649,8 +3179,6 @@ sctp_m_getptr(struct mbuf *m, int off, int len, uint8_t * in_ptr) } } - - struct sctp_paramhdr * sctp_get_next_param(struct mbuf *m, int offset, @@ -2662,7 +3190,6 @@ sctp_get_next_param(struct mbuf *m, (uint8_t *) pull)); } - struct mbuf * sctp_add_pad_tombuf(struct mbuf *m, int padlen) { @@ -2714,25 +3241,37 @@ sctp_pad_lastmbuf(struct mbuf *m, int padval, struct mbuf *last_mbuf) static void sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, - uint16_t error, struct sctp_abort_chunk *abort, uint8_t from_peer, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + uint16_t error, struct sctp_abort_chunk *abort, + bool from_peer, bool timedout, int so_locked) { struct mbuf *m_notify; struct sctp_assoc_change *sac; struct sctp_queued_to_read *control; - size_t notif_len, abort_len; + unsigned int notif_len; + uint16_t abort_len; unsigned int i; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif + KASSERT(abort == NULL || from_peer, + ("sctp_notify_assoc_change: ABORT chunk provided for local termination")); + KASSERT(!from_peer || !timedout, + ("sctp_notify_assoc_change: timeouts can only be local")); + if (stcb == NULL) { + return; + } if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVASSOCEVNT)) { - notif_len = sizeof(struct sctp_assoc_change); + notif_len = (unsigned int)sizeof(struct sctp_assoc_change); if (abort != NULL) { abort_len = ntohs(abort->ch.chunk_length); + /* + * Only SCTP_CHUNK_BUFFER_SIZE are guaranteed to be + * contiguous. + */ + if (abort_len > SCTP_CHUNK_BUFFER_SIZE) { + abort_len = SCTP_CHUNK_BUFFER_SIZE; + } } else { abort_len = 0; } @@ -2744,7 +3283,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) { /* Retry with smaller value. */ - notif_len = sizeof(struct sctp_assoc_change); + notif_len = (unsigned int)sizeof(struct sctp_assoc_change); m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) { goto set_error; @@ -2758,9 +3297,13 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, sac->sac_length = sizeof(struct sctp_assoc_change); sac->sac_state = state; sac->sac_error = error; - /* XXX verify these stream counts */ - sac->sac_outbound_streams = stcb->asoc.streamoutcnt; - sac->sac_inbound_streams = stcb->asoc.streamincnt; + if (state == SCTP_CANT_STR_ASSOC) { + sac->sac_outbound_streams = 0; + sac->sac_inbound_streams = 0; + } else { + sac->sac_outbound_streams = stcb->asoc.streamoutcnt; + sac->sac_inbound_streams = stcb->asoc.streamincnt; + } sac->sac_assoc_id = sctp_get_associd(stcb); if (notif_len > sizeof(struct sctp_assoc_change)) { if ((state == SCTP_COMM_UP) || (state == SCTP_RESTART)) { @@ -2774,6 +3317,9 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, if (stcb->asoc.asconf_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_ASCONF; } + if (stcb->asoc.idata_supported == 1) { + sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_INTERLEAVING; + } sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_MULTIBUF; if (stcb->asoc.reconfig_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_RE_CONFIG; @@ -2790,9 +3336,9 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, m_notify); if (control != NULL) { control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; - control->spec_flags = M_NOTIFICATION; sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, @@ -2811,7 +3357,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, ((state == SCTP_COMM_LOST) || (state == SCTP_CANT_STR_ASSOC))) { SOCK_LOCK(stcb->sctp_socket); if (from_peer) { - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) { + if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ECONNREFUSED); stcb->sctp_socket->so_error = ECONNREFUSED; } else { @@ -2819,8 +3365,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, stcb->sctp_socket->so_error = ECONNRESET; } } else { - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED)) { + if (timedout) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ETIMEDOUT); stcb->sctp_socket->so_error = ETIMEDOUT; } else { @@ -2828,9 +3373,10 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, stcb->sctp_socket->so_error = ECONNABORTED; } } + SOCK_UNLOCK(stcb->sctp_socket); } /* Wake ANY sleepers */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(stcb->sctp_ep); if (!so_locked) { atomic_add_int(&stcb->asoc.refcnt, 1); @@ -2847,15 +3393,11 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) && ((state == SCTP_COMM_LOST) || (state == SCTP_CANT_STR_ASSOC))) { -#if defined(__APPLE__) socantrcvmore(stcb->sctp_socket); -#else - socantrcvmore_locked(stcb->sctp_socket); -#endif } sorwakeup(stcb->sctp_socket); sowwakeup(stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); } @@ -2864,11 +3406,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, static void sctp_notify_peer_addr_change(struct sctp_tcb *stcb, uint32_t state, - struct sockaddr *sa, uint32_t error, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) + struct sockaddr *sa, uint32_t error, int so_locked) { struct mbuf *m_notify; struct sctp_paddr_change *spc; @@ -2967,20 +3505,16 @@ sctp_notify_peer_addr_change(struct sctp_tcb *stcb, uint32_t state, so_locked); } - static void sctp_notify_send_failed(struct sctp_tcb *stcb, uint8_t sent, uint32_t error, - struct sctp_tmit_chunk *chk, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + struct sctp_tmit_chunk *chk, int so_locked) { struct mbuf *m_notify; struct sctp_send_failed *ssf; struct sctp_send_failed_event *ssfe; struct sctp_queued_to_read *control; - int length; + struct sctp_chunkhdr *chkhdr; + int notifhdr_len, chk_len, chkhdr_len, padding_len, payload_len; if ((stcb == NULL) || (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVSENDFAILEVNT) && @@ -2990,69 +3524,84 @@ sctp_notify_send_failed(struct sctp_tcb *stcb, uint8_t sent, uint32_t error, } if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVNSENDFAILEVNT)) { - length = sizeof(struct sctp_send_failed_event); + notifhdr_len = sizeof(struct sctp_send_failed_event); } else { - length = sizeof(struct sctp_send_failed); + notifhdr_len = sizeof(struct sctp_send_failed); } - m_notify = sctp_get_mbuf_for_msg(length, 0, M_NOWAIT, 1, MT_DATA); + m_notify = sctp_get_mbuf_for_msg(notifhdr_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) /* no space left */ return; - SCTP_BUF_LEN(m_notify) = 0; + SCTP_BUF_LEN(m_notify) = notifhdr_len; + if (stcb->asoc.idata_supported) { + chkhdr_len = sizeof(struct sctp_idata_chunk); + } else { + chkhdr_len = sizeof(struct sctp_data_chunk); + } + /* Use some defaults in case we can't access the chunk header */ + if (chk->send_size >= chkhdr_len) { + payload_len = chk->send_size - chkhdr_len; + } else { + payload_len = 0; + } + padding_len = 0; + if (chk->data != NULL) { + chkhdr = mtod(chk->data, struct sctp_chunkhdr *); + if (chkhdr != NULL) { + chk_len = ntohs(chkhdr->chunk_length); + if ((chk_len >= chkhdr_len) && + (chk->send_size >= chk_len) && + (chk->send_size - chk_len < 4)) { + padding_len = chk->send_size - chk_len; + payload_len = chk->send_size - chkhdr_len - padding_len; + } + } + } if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVNSENDFAILEVNT)) { ssfe = mtod(m_notify, struct sctp_send_failed_event *); - memset(ssfe, 0, length); + memset(ssfe, 0, notifhdr_len); ssfe->ssfe_type = SCTP_SEND_FAILED_EVENT; if (sent) { ssfe->ssfe_flags = SCTP_DATA_SENT; } else { ssfe->ssfe_flags = SCTP_DATA_UNSENT; } - length += chk->send_size; - length -= sizeof(struct sctp_data_chunk); - ssfe->ssfe_length = length; + ssfe->ssfe_length = (uint32_t)(notifhdr_len + payload_len); ssfe->ssfe_error = error; /* not exactly what the user sent in, but should be close :) */ - ssfe->ssfe_info.snd_sid = chk->rec.data.stream_number; + ssfe->ssfe_info.snd_sid = chk->rec.data.sid; ssfe->ssfe_info.snd_flags = chk->rec.data.rcv_flags; - ssfe->ssfe_info.snd_ppid = chk->rec.data.payloadtype; + ssfe->ssfe_info.snd_ppid = chk->rec.data.ppid; ssfe->ssfe_info.snd_context = chk->rec.data.context; ssfe->ssfe_info.snd_assoc_id = sctp_get_associd(stcb); ssfe->ssfe_assoc_id = sctp_get_associd(stcb); - SCTP_BUF_LEN(m_notify) = sizeof(struct sctp_send_failed_event); } else { ssf = mtod(m_notify, struct sctp_send_failed *); - memset(ssf, 0, length); + memset(ssf, 0, notifhdr_len); ssf->ssf_type = SCTP_SEND_FAILED; if (sent) { ssf->ssf_flags = SCTP_DATA_SENT; } else { ssf->ssf_flags = SCTP_DATA_UNSENT; } - length += chk->send_size; - length -= sizeof(struct sctp_data_chunk); - ssf->ssf_length = length; + ssf->ssf_length = (uint32_t)(notifhdr_len + payload_len); ssf->ssf_error = error; /* not exactly what the user sent in, but should be close :) */ - bzero(&ssf->ssf_info, sizeof(ssf->ssf_info)); - ssf->ssf_info.sinfo_stream = chk->rec.data.stream_number; - ssf->ssf_info.sinfo_ssn = chk->rec.data.stream_seq; + ssf->ssf_info.sinfo_stream = chk->rec.data.sid; + ssf->ssf_info.sinfo_ssn = (uint16_t)chk->rec.data.mid; ssf->ssf_info.sinfo_flags = chk->rec.data.rcv_flags; - ssf->ssf_info.sinfo_ppid = chk->rec.data.payloadtype; + ssf->ssf_info.sinfo_ppid = chk->rec.data.ppid; ssf->ssf_info.sinfo_context = chk->rec.data.context; ssf->ssf_info.sinfo_assoc_id = sctp_get_associd(stcb); ssf->ssf_assoc_id = sctp_get_associd(stcb); - SCTP_BUF_LEN(m_notify) = sizeof(struct sctp_send_failed); } - if (chk->data) { - /* - * trim off the sctp chunk header(it should - * be there) - */ - if (chk->send_size >= sizeof(struct sctp_data_chunk)) { - m_adj(chk->data, sizeof(struct sctp_data_chunk)); + if (chk->data != NULL) { + /* Trim off the sctp chunk header (it should be there) */ + if (chk->send_size == chkhdr_len + payload_len + padding_len) { + m_adj(chk->data, chkhdr_len); + m_adj(chk->data, -padding_len); sctp_mbuf_crush(chk->data); - chk->send_size -= sizeof(struct sctp_data_chunk); + chk->send_size -= (chkhdr_len + padding_len); } } SCTP_BUF_NEXT(m_notify) = chk->data; @@ -3076,7 +3625,10 @@ sctp_notify_send_failed(struct sctp_tcb *stcb, uint8_t sent, uint32_t error, sctp_m_freem(m_notify); return; } + control->length = SCTP_BUF_LEN(m_notify); control->spec_flags = M_NOTIFICATION; + /* not that we need this */ + control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, @@ -3084,20 +3636,15 @@ sctp_notify_send_failed(struct sctp_tcb *stcb, uint8_t sent, uint32_t error, so_locked); } - static void sctp_notify_send_failed2(struct sctp_tcb *stcb, uint32_t error, - struct sctp_stream_queue_pending *sp, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + struct sctp_stream_queue_pending *sp, int so_locked) { struct mbuf *m_notify; struct sctp_send_failed *ssf; struct sctp_send_failed_event *ssfe; struct sctp_queued_to_read *control; - int length; + int notifhdr_len; if ((stcb == NULL) || (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVSENDFAILEVNT) && @@ -3106,26 +3653,25 @@ sctp_notify_send_failed2(struct sctp_tcb *stcb, uint32_t error, return; } if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVNSENDFAILEVNT)) { - length = sizeof(struct sctp_send_failed_event); + notifhdr_len = sizeof(struct sctp_send_failed_event); } else { - length = sizeof(struct sctp_send_failed); + notifhdr_len = sizeof(struct sctp_send_failed); } - m_notify = sctp_get_mbuf_for_msg(length, 0, M_NOWAIT, 1, MT_DATA); + m_notify = sctp_get_mbuf_for_msg(notifhdr_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) { /* no space left */ return; } - SCTP_BUF_LEN(m_notify) = 0; + SCTP_BUF_LEN(m_notify) = notifhdr_len; if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVNSENDFAILEVNT)) { ssfe = mtod(m_notify, struct sctp_send_failed_event *); - memset(ssfe, 0, length); + memset(ssfe, 0, notifhdr_len); ssfe->ssfe_type = SCTP_SEND_FAILED_EVENT; ssfe->ssfe_flags = SCTP_DATA_UNSENT; - length += sp->length; - ssfe->ssfe_length = length; + ssfe->ssfe_length = (uint32_t)(notifhdr_len + sp->length); ssfe->ssfe_error = error; /* not exactly what the user sent in, but should be close :) */ - ssfe->ssfe_info.snd_sid = sp->stream; + ssfe->ssfe_info.snd_sid = sp->sid; if (sp->some_taken) { ssfe->ssfe_info.snd_flags = SCTP_DATA_LAST_FRAG; } else { @@ -3135,17 +3681,15 @@ sctp_notify_send_failed2(struct sctp_tcb *stcb, uint32_t error, ssfe->ssfe_info.snd_context = sp->context; ssfe->ssfe_info.snd_assoc_id = sctp_get_associd(stcb); ssfe->ssfe_assoc_id = sctp_get_associd(stcb); - SCTP_BUF_LEN(m_notify) = sizeof(struct sctp_send_failed_event); } else { ssf = mtod(m_notify, struct sctp_send_failed *); - memset(ssf, 0, length); + memset(ssf, 0, notifhdr_len); ssf->ssf_type = SCTP_SEND_FAILED; ssf->ssf_flags = SCTP_DATA_UNSENT; - length += sp->length; - ssf->ssf_length = length; + ssf->ssf_length = (uint32_t)(notifhdr_len + sp->length); ssf->ssf_error = error; /* not exactly what the user sent in, but should be close :) */ - ssf->ssf_info.sinfo_stream = sp->stream; + ssf->ssf_info.sinfo_stream = sp->sid; ssf->ssf_info.sinfo_ssn = 0; if (sp->some_taken) { ssf->ssf_info.sinfo_flags = SCTP_DATA_LAST_FRAG; @@ -3156,7 +3700,6 @@ sctp_notify_send_failed2(struct sctp_tcb *stcb, uint32_t error, ssf->ssf_info.sinfo_context = sp->context; ssf->ssf_info.sinfo_assoc_id = sctp_get_associd(stcb); ssf->ssf_assoc_id = sctp_get_associd(stcb); - SCTP_BUF_LEN(m_notify) = sizeof(struct sctp_send_failed); } SCTP_BUF_NEXT(m_notify) = sp->data; @@ -3180,14 +3723,15 @@ sctp_notify_send_failed2(struct sctp_tcb *stcb, uint32_t error, sctp_m_freem(m_notify); return; } + control->length = SCTP_BUF_LEN(m_notify); control->spec_flags = M_NOTIFICATION; + /* not that we need this */ + control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, so_locked); } - - static void sctp_notify_adaptation_layer(struct sctp_tcb *stcb) { @@ -3238,11 +3782,7 @@ sctp_notify_adaptation_layer(struct sctp_tcb *stcb) /* This always must be called with the read-queue LOCKED in the INP */ static void sctp_notify_partial_delivery_indication(struct sctp_tcb *stcb, uint32_t error, - uint32_t val, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + uint32_t val, int so_locked) { struct mbuf *m_notify; struct sctp_pdapi_event *pdapi; @@ -3283,12 +3823,10 @@ sctp_notify_partial_delivery_indication(struct sctp_tcb *stcb, uint32_t error, sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; - control->held_length = 0; - control->length = 0; sb = &stcb->sctp_socket->so_rcv; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBALLOC, SCTP_BUF_LEN(m_notify)); @@ -3297,7 +3835,6 @@ sctp_notify_partial_delivery_indication(struct sctp_tcb *stcb, uint32_t error, if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); } - atomic_add_int(&control->length, SCTP_BUF_LEN(m_notify)); control->end_added = 1; if (stcb->asoc.control_pdapi) TAILQ_INSERT_AFTER(&stcb->sctp_ep->read_queue, stcb->asoc.control_pdapi, control, next); @@ -3307,7 +3844,7 @@ sctp_notify_partial_delivery_indication(struct sctp_tcb *stcb, uint32_t error, } if (stcb->sctp_ep && stcb->sctp_socket) { /* This should always be the case */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(stcb->sctp_ep); @@ -3324,7 +3861,7 @@ sctp_notify_partial_delivery_indication(struct sctp_tcb *stcb, uint32_t error, } #endif sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); } @@ -3346,7 +3883,7 @@ sctp_notify_shutdown_event(struct sctp_tcb *stcb) if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { /* mark socket closed for read/write and wakeup! */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(stcb->sctp_ep); @@ -3361,7 +3898,7 @@ sctp_notify_shutdown_event(struct sctp_tcb *stcb) } #endif socantsendmore(stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } @@ -3393,8 +3930,8 @@ sctp_notify_shutdown_event(struct sctp_tcb *stcb) sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, @@ -3404,11 +3941,7 @@ sctp_notify_shutdown_event(struct sctp_tcb *stcb) static void sctp_notify_sender_dry_event(struct sctp_tcb *stcb, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + int so_locked) { struct mbuf *m_notify; struct sctp_sender_dry_event *event; @@ -3453,7 +3986,6 @@ sctp_notify_sender_dry_event(struct sctp_tcb *stcb, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, so_locked); } - void sctp_notify_stream_reset_add(struct sctp_tcb *stcb, uint16_t numberin, uint16_t numberout, int flag) { @@ -3462,10 +3994,17 @@ sctp_notify_stream_reset_add(struct sctp_tcb *stcb, uint16_t numberin, uint16_t struct sctp_stream_change_event *stradd; if ((stcb == NULL) || - (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_STREAM_CHANGEEVNT))) { + (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || + (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || + (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { + /* If the socket is gone we are out of here. */ + return; + } + if (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_STREAM_CHANGEEVNT)) { /* event not enabled */ return; } + if ((stcb->asoc.peer_req_out) && flag) { /* Peer made the request, don't tell the local user */ stcb->asoc.peer_req_out = 0; @@ -3501,8 +4040,8 @@ sctp_notify_stream_reset_add(struct sctp_tcb *stcb, uint16_t numberin, uint16_t sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, @@ -3518,10 +4057,17 @@ sctp_notify_stream_reset_tsn(struct sctp_tcb *stcb, uint32_t sending_tsn, uint32 struct sctp_assoc_reset_event *strasoc; if ((stcb == NULL) || - (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_ASSOC_RESETEVNT))) { + (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || + (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || + (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { + /* If the socket is gone we are out of here. */ + return; + } + if (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_ASSOC_RESETEVNT)) { /* event not enabled */ return; } + m_notify = sctp_get_mbuf_for_msg(sizeof(struct sctp_assoc_reset_event), 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) /* no space left */ @@ -3551,8 +4097,8 @@ sctp_notify_stream_reset_tsn(struct sctp_tcb *stcb, uint32_t sending_tsn, uint32 sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, @@ -3560,8 +4106,6 @@ sctp_notify_stream_reset_tsn(struct sctp_tcb *stcb, uint32_t sending_tsn, uint32 &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); } - - static void sctp_notify_stream_reset(struct sctp_tcb *stcb, int number_entries, uint16_t * list, int flag) @@ -3617,8 +4161,8 @@ sctp_notify_stream_reset(struct sctp_tcb *stcb, sctp_m_freem(m_notify); return; } - control->spec_flags = M_NOTIFICATION; control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; sctp_add_to_readq(stcb->sctp_ep, stcb, @@ -3626,14 +4170,14 @@ sctp_notify_stream_reset(struct sctp_tcb *stcb, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); } - static void sctp_notify_remote_error(struct sctp_tcb *stcb, uint16_t error, struct sctp_error_chunk *chunk) { struct mbuf *m_notify; struct sctp_remote_error *sre; struct sctp_queued_to_read *control; - size_t notif_len, chunk_len; + unsigned int notif_len; + uint16_t chunk_len; if ((stcb == NULL) || sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVPEERERR)) { @@ -3641,14 +4185,21 @@ sctp_notify_remote_error(struct sctp_tcb *stcb, uint16_t error, struct sctp_erro } if (chunk != NULL) { chunk_len = ntohs(chunk->ch.chunk_length); + /* + * Only SCTP_CHUNK_BUFFER_SIZE are guaranteed to be + * contiguous. + */ + if (chunk_len > SCTP_CHUNK_BUFFER_SIZE) { + chunk_len = SCTP_CHUNK_BUFFER_SIZE; + } } else { chunk_len = 0; } - notif_len = sizeof(struct sctp_remote_error) + chunk_len; + notif_len = (unsigned int)(sizeof(struct sctp_remote_error) + chunk_len); m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) { /* Retry with smaller value. */ - notif_len = sizeof(struct sctp_remote_error); + notif_len = (unsigned int)sizeof(struct sctp_remote_error); m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA); if (m_notify == NULL) { return; @@ -3672,26 +4223,21 @@ sctp_notify_remote_error(struct sctp_tcb *stcb, uint16_t error, struct sctp_erro m_notify); if (control != NULL) { control->length = SCTP_BUF_LEN(m_notify); + control->spec_flags = M_NOTIFICATION; /* not that we need this */ control->tail_mbuf = m_notify; - control->spec_flags = M_NOTIFICATION; sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); } else { sctp_m_freem(m_notify); } } - void sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, - uint32_t error, void *data, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + uint32_t error, void *data, int so_locked) { if ((stcb == NULL) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || @@ -3700,22 +4246,22 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, /* If the socket is gone we are out of here */ return; } -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Windows__) +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) if (stcb->sctp_socket->so_rcv.sb_state & SBS_CANTRCVMORE) { #else if (stcb->sctp_socket->so_state & SS_CANTRCVMORE) { #endif return; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(stcb->sctp_ep)); } else { sctp_unlock_assert(SCTP_INP_SO(stcb->sctp_ep)); } #endif - if ((stcb->asoc.state & SCTP_STATE_COOKIE_WAIT) || - (stcb->asoc.state & SCTP_STATE_COOKIE_ECHOED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { if ((notification == SCTP_NOTIFY_INTERFACE_DOWN) || (notification == SCTP_NOTIFY_INTERFACE_UP) || (notification == SCTP_NOTIFY_INTERFACE_CONFIRMED)) { @@ -3726,7 +4272,7 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, switch (notification) { case SCTP_NOTIFY_ASSOC_UP: if (stcb->asoc.assoc_up_sent == 0) { - sctp_notify_assoc_change(SCTP_COMM_UP, stcb, error, NULL, 0, so_locked); + sctp_notify_assoc_change(SCTP_COMM_UP, stcb, error, NULL, false, false, so_locked); stcb->asoc.assoc_up_sent = 1; } if (stcb->asoc.adaptation_needed && (stcb->asoc.adaptation_sent == 0)) { @@ -3738,7 +4284,7 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, } break; case SCTP_NOTIFY_ASSOC_DOWN: - sctp_notify_assoc_change(SCTP_SHUTDOWN_COMP, stcb, error, NULL, 0, so_locked); + sctp_notify_assoc_change(SCTP_SHUTDOWN_COMP, stcb, error, NULL, false, false, so_locked); #if defined(__Userspace__) if (stcb->sctp_ep->recv_callback) { if (stcb->sctp_socket) { @@ -3804,23 +4350,31 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, break; } case SCTP_NOTIFY_ASSOC_LOC_ABORTED: - if (((stcb->asoc.state & SCTP_STATE_MASK) == SCTP_STATE_COOKIE_WAIT) || - ((stcb->asoc.state & SCTP_STATE_MASK) == SCTP_STATE_COOKIE_ECHOED)) { - sctp_notify_assoc_change(SCTP_CANT_STR_ASSOC, stcb, error, data, 0, so_locked); + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + sctp_notify_assoc_change(SCTP_CANT_STR_ASSOC, stcb, error, data, false, false, so_locked); } else { - sctp_notify_assoc_change(SCTP_COMM_LOST, stcb, error, data, 0, so_locked); + sctp_notify_assoc_change(SCTP_COMM_LOST, stcb, error, data, false, false, so_locked); } break; case SCTP_NOTIFY_ASSOC_REM_ABORTED: - if (((stcb->asoc.state & SCTP_STATE_MASK) == SCTP_STATE_COOKIE_WAIT) || - ((stcb->asoc.state & SCTP_STATE_MASK) == SCTP_STATE_COOKIE_ECHOED)) { - sctp_notify_assoc_change(SCTP_CANT_STR_ASSOC, stcb, error, data, 1, so_locked); + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + sctp_notify_assoc_change(SCTP_CANT_STR_ASSOC, stcb, error, data, true, false, so_locked); + } else { + sctp_notify_assoc_change(SCTP_COMM_LOST, stcb, error, data, true, false, so_locked); + } + break; + case SCTP_NOTIFY_ASSOC_TIMEDOUT: + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) { + sctp_notify_assoc_change(SCTP_CANT_STR_ASSOC, stcb, error, data, false, true, so_locked); } else { - sctp_notify_assoc_change(SCTP_COMM_LOST, stcb, error, data, 1, so_locked); + sctp_notify_assoc_change(SCTP_COMM_LOST, stcb, error, data, false, true, so_locked); } break; case SCTP_NOTIFY_ASSOC_RESTART: - sctp_notify_assoc_change(SCTP_RESTART, stcb, error, NULL, 0, so_locked); + sctp_notify_assoc_change(SCTP_RESTART, stcb, error, NULL, false, false, so_locked); if (stcb->asoc.auth_supported == 0) { sctp_ulp_notify(SCTP_NOTIFY_NO_PEER_AUTH, stcb, 0, NULL, so_locked); @@ -3886,17 +4440,13 @@ sctp_ulp_notify(uint32_t notification, struct sctp_tcb *stcb, break; default: SCTPDBG(SCTP_DEBUG_UTIL1, "%s: unknown notification %xh (%u)\n", - __FUNCTION__, notification, notification); + __func__, notification, notification); break; } /* end switch */ } void -sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) +sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int so_locked) { struct sctp_association *asoc; struct sctp_stream_out *outs; @@ -3912,7 +4462,7 @@ sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, /* already being freed */ return; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(stcb->sctp_ep)); } else { @@ -3925,19 +4475,16 @@ sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, return; } /* now through all the gunk freeing chunks */ - if (holds_lock == 0) { - SCTP_TCB_SEND_LOCK(stcb); - } /* sent queue SHOULD be empty */ TAILQ_FOREACH_SAFE(chk, &asoc->sent_queue, sctp_next, nchk) { TAILQ_REMOVE(&asoc->sent_queue, chk, sctp_next); asoc->sent_queue_cnt--; if (chk->sent != SCTP_DATAGRAM_NR_ACKED) { - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", chk->rec.data.sid); #endif } } @@ -3957,11 +4504,11 @@ sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { TAILQ_REMOVE(&asoc->send_queue, chk, sctp_next); asoc->send_queue_cnt--; - if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) { - asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--; + if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) { + asoc->strmout[chk->rec.data.sid].chunks_on_queues--; #ifdef INVARIANTS } else { - panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number); + panic("No chunks on the queues for sid %u.", chk->rec.data.sid); #endif } if (chk->data != NULL) { @@ -3980,10 +4527,10 @@ sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, /* For each stream */ outs = &asoc->strmout[i]; /* clean up any sends there */ - asoc->locked_on_sending = NULL; TAILQ_FOREACH_SAFE(sp, &outs->outqueue, next, nsp) { - asoc->stream_queue_cnt--; + atomic_subtract_int(&asoc->stream_queue_cnt, 1); TAILQ_REMOVE(&outs->outqueue, sp, next); + stcb->asoc.ss_functions.sctp_ss_remove_from_stream(stcb, asoc, outs, sp); sctp_free_spbufspace(stcb, asoc, sp); if (sp->data) { sctp_ulp_notify(SCTP_NOTIFY_SPECIAL_SP_FAIL, stcb, @@ -4004,46 +4551,46 @@ sctp_report_all_outbound(struct sctp_tcb *stcb, uint16_t error, int holds_lock, /*sa_ignore FREED_MEMORY*/ } } - - if (holds_lock == 0) { - SCTP_TCB_SEND_UNLOCK(stcb); - } } void -sctp_abort_notification(struct sctp_tcb *stcb, uint8_t from_peer, uint16_t error, - struct sctp_abort_chunk *abort, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) +sctp_abort_notification(struct sctp_tcb *stcb, bool from_peer, bool timeout, + uint16_t error, struct sctp_abort_chunk *abort, + int so_locked) { if (stcb == NULL) { return; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(stcb->sctp_ep)); } else { sctp_unlock_assert(SCTP_INP_SO(stcb->sctp_ep)); } #endif + SCTP_TCB_LOCK_ASSERT(stcb); + if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_CONNECTED))) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_WAS_ABORTED; + sctp_pcb_add_flags(stcb->sctp_ep, SCTP_PCB_FLAGS_WAS_ABORTED); } if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) || (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { return; } + SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_WAS_ABORTED); /* Tell them we lost the asoc */ - sctp_report_all_outbound(stcb, error, 1, so_locked); + sctp_report_all_outbound(stcb, error, so_locked); if (from_peer) { sctp_ulp_notify(SCTP_NOTIFY_ASSOC_REM_ABORTED, stcb, error, abort, so_locked); } else { - sctp_ulp_notify(SCTP_NOTIFY_ASSOC_LOC_ABORTED, stcb, error, abort, so_locked); + if (timeout) { + sctp_ulp_notify(SCTP_NOTIFY_ASSOC_TIMEDOUT, stcb, error, abort, so_locked); + } else { + sctp_ulp_notify(SCTP_NOTIFY_ASSOC_LOC_ABORTED, stcb, error, abort, so_locked); + } } } @@ -4052,32 +4599,41 @@ sctp_abort_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct mbuf *m, int iphlen, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct mbuf *op_err, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t mflowtype, uint32_t mflowid, #endif uint32_t vrf_id, uint16_t port) { - uint32_t vtag; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif + struct sctp_gen_error_cause* cause; + uint32_t vtag; + uint16_t cause_code; - vtag = 0; if (stcb != NULL) { vtag = stcb->asoc.peer_vtag; vrf_id = stcb->asoc.vrf_id; + if (op_err != NULL) { + /* Read the cause code from the error cause. */ + cause = mtod(op_err, struct sctp_gen_error_cause *); + cause_code = ntohs(cause->code); + } else { + cause_code = 0; + } + } else { + vtag = 0; } sctp_send_abort(m, iphlen, src, dst, sh, vtag, op_err, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, inp->fibnum, #endif vrf_id, port); if (stcb != NULL) { /* We have a TCB to abort, send notification too */ - sctp_abort_notification(stcb, 0, 0, NULL, SCTP_SO_NOT_LOCKED); - stcb->asoc.state |= SCTP_STATE_WAS_ABORTED; + sctp_abort_notification(stcb, false, false, cause_code, NULL, SCTP_SO_NOT_LOCKED); /* Ok, now lets free it */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -4086,12 +4642,13 @@ sctp_abort_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL+SCTP_LOC_4); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_4); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif } @@ -4160,21 +4717,18 @@ sctp_print_out_track_log(struct sctp_tcb *stcb) void sctp_abort_an_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, - struct mbuf *op_err, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -) + struct mbuf *op_err, bool timedout, int so_locked) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; #endif + struct sctp_gen_error_cause* cause; + uint16_t cause_code; -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) so = SCTP_INP_SO(inp); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { @@ -4185,14 +4739,14 @@ sctp_abort_an_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, /* Got to have a TCB */ if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { if (LIST_EMPTY(&inp->sctp_asoc_list)) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_LOCK(so, 1); } #endif sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, SCTP_CALLED_DIRECTLY_NOCMPSET); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); } @@ -4200,25 +4754,30 @@ sctp_abort_an_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, } } return; + } + if (op_err != NULL) { + /* Read the cause code from the error cause. */ + cause = mtod(op_err, struct sctp_gen_error_cause *); + cause_code = ntohs(cause->code); } else { - stcb->asoc.state |= SCTP_STATE_WAS_ABORTED; + cause_code = 0; } /* notify the peer */ sctp_send_abort_tcb(stcb, op_err, so_locked); SCTP_STAT_INCR_COUNTER32(sctps_aborted); - if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || - (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } /* notify the ulp */ if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { - sctp_abort_notification(stcb, 0, 0, NULL, so_locked); + sctp_abort_notification(stcb, false, timedout, cause_code, NULL, so_locked); } /* now free the asoc */ #ifdef SCTP_ASOCLOG_OF_TSNS sctp_print_out_track_log(stcb); #endif -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { atomic_add_int(&stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(stcb); @@ -4227,8 +4786,9 @@ sctp_abort_an_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb, atomic_subtract_int(&stcb->asoc.refcnt, 1); } #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL+SCTP_LOC_5); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_5); +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); } @@ -4240,8 +4800,8 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset, struct sockaddr *src, struct sockaddr *dst, struct sctphdr *sh, struct sctp_inpcb *inp, struct mbuf *cause, -#if defined(__FreeBSD__) - uint8_t mflowtype, uint32_t mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum, #endif uint32_t vrf_id, uint16_t port) { @@ -4253,12 +4813,12 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset, /* Generate a TO address for future reference */ if (inp && (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) { if (LIST_EMPTY(&inp->sctp_asoc_list)) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(SCTP_INP_SO(inp), 1); #endif sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, SCTP_CALLED_DIRECTLY_NOCMPSET); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(SCTP_INP_SO(inp), 1); #endif } @@ -4290,8 +4850,8 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset, return; case SCTP_SHUTDOWN_ACK: sctp_send_shutdown_complete2(src, dst, sh, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); return; @@ -4306,8 +4866,8 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset, ((SCTP_BASE_SYSCTL(sctp_blackhole) == 1) && (contains_init_chunk == 0))) { sctp_send_abort(m, iphlen, src, dst, sh, 0, cause, -#if defined(__FreeBSD__) - mflowtype, mflowid, +#if defined(__FreeBSD__) && !defined(__Userspace__) + mflowtype, mflowid, fibnum, #endif vrf_id, port); } @@ -4318,7 +4878,7 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset, * if there is return 1, else return 0. */ int -sctp_is_there_an_abort_here(struct mbuf *m, int iphlen, uint32_t * vtagfill) +sctp_is_there_an_abort_here(struct mbuf *m, int iphlen, uint32_t *vtag) { struct sctp_chunkhdr *ch; struct sctp_init_chunk *init_chk, chunk_buf; @@ -4339,12 +4899,13 @@ sctp_is_there_an_abort_here(struct mbuf *m, int iphlen, uint32_t * vtagfill) /* yep, tell them */ return (1); } - if (ch->chunk_type == SCTP_INITIATION) { + if ((ch->chunk_type == SCTP_INITIATION) || + (ch->chunk_type == SCTP_INITIATION_ACK)) { /* need to update the Vtag */ init_chk = (struct sctp_init_chunk *)sctp_m_getptr(m, - offset, sizeof(*init_chk), (uint8_t *) & chunk_buf); + offset, sizeof(struct sctp_init_chunk), (uint8_t *) & chunk_buf); if (init_chk != NULL) { - *vtagfill = ntohl(init_chk->init.initiate_tag); + *vtag = ntohl(init_chk->init.initiate_tag); } } /* Nope, move to the next chunk */ @@ -4493,7 +5054,7 @@ void sctp_print_address(struct sockaddr *sa) { #ifdef INET6 -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) char ip6buf[INET6_ADDRSTRLEN]; #endif #endif @@ -4518,7 +5079,7 @@ sctp_print_address(struct sockaddr *sa) ntohs(sin6->sin6_port), sin6->sin6_scope_id); #else -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) SCTP_PRINTF("IPv6 address: %s:port:%d scope:%u\n", ip6_sprintf(ip6buf, &sin6->sin6_addr), ntohs(sin6->sin6_port), @@ -4576,22 +5137,21 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, struct sctp_queued_to_read *control, *nctl; struct sctp_readhead tmp_queue; struct mbuf *m; +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) int error = 0; +#endif old_so = old_inp->sctp_socket; new_so = new_inp->sctp_socket; TAILQ_INIT(&tmp_queue); -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - SOCKBUF_LOCK(&(old_so->so_rcv)); -#endif -#if defined(__FreeBSD__) || defined(__APPLE__) +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) +#if defined(__FreeBSD__) + error = SOCK_IO_RECV_LOCK(old_so, waitflags); +#else error = sblock(&old_so->so_rcv, waitflags); -#endif -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - SOCKBUF_UNLOCK(&(old_so->so_rcv)); #endif if (error) { - /* Gak, can't get sblock, we have a problem. + /* Gak, can't get I/O lock, we have a problem. * data will be left stranded.. and we * don't dare look at it since the * other thread may be reading something. @@ -4603,6 +5163,7 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, */ return; } +#endif /* lock the socket buffers */ SCTP_INP_READ_LOCK(old_inp); TAILQ_FOREACH_SAFE(control, &old_inp->read_queue, next, nctl) { @@ -4625,19 +5186,12 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, } } SCTP_INP_READ_UNLOCK(old_inp); - /* Remove the sb-lock on the old socket */ -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - SOCKBUF_LOCK(&(old_so->so_rcv)); -#endif -#if defined(__APPLE__) + /* Remove the recv-lock on the old socket */ +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&old_so->so_rcv, 1); #endif - -#if defined(__FreeBSD__) - sbunlock(&old_so->so_rcv); -#endif -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - SOCKBUF_UNLOCK(&(old_so->so_rcv)); +#if defined(__FreeBSD__) && !defined(__Userspace__) + SOCK_IO_RECV_UNLOCK(old_so); #endif /* Now we move them over to the new socket buffer */ SCTP_INP_READ_LOCK(new_inp); @@ -4658,6 +5212,147 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, SCTP_INP_READ_UNLOCK(new_inp); } +void +sctp_wakeup_the_read_socket(struct sctp_inpcb *inp, + struct sctp_tcb *stcb, + int so_locked +#if !(defined(__APPLE__) && !defined(__Userspace__)) + SCTP_UNUSED +#endif +) +{ + if ((inp != NULL) && + (inp->sctp_socket != NULL) && + (((inp->sctp_flags & (SCTP_PCB_FLAGS_TCPTYPE | SCTP_PCB_FLAGS_IN_TCPPOOL)) == 0) || + !SCTP_IS_LISTENING(inp))) { +#if defined(__APPLE__) && !defined(__Userspace__) + struct socket *so; + + so = SCTP_INP_SO(inp); + if (!so_locked) { + if (stcb) { + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + } + SCTP_SOCKET_LOCK(so, 1); + if (stcb) { + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } + if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } + } +#endif + sctp_sorwakeup(inp, inp->sctp_socket); +#if defined(__APPLE__) && !defined(__Userspace__) + if (!so_locked) { + SCTP_SOCKET_UNLOCK(so, 1); + } +#endif + } +} +#if defined(__Userspace__) + +void +sctp_invoke_recv_callback(struct sctp_inpcb *inp, + struct sctp_tcb *stcb, + struct sctp_queued_to_read *control, + int inp_read_lock_held) +{ + uint32_t pd_point, length; + + if ((inp->recv_callback == NULL) || + (stcb == NULL) || + (stcb->sctp_socket == NULL)) { + return; + } + + length = control->length; + if (stcb != NULL && stcb->sctp_socket != NULL) { + pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, + stcb->sctp_ep->partial_delivery_point); + } else { + pd_point = inp->partial_delivery_point; + } + if ((control->end_added == 1) || (length >= pd_point)) { + struct socket *so; + struct mbuf *m; + char *buffer; + struct sctp_rcvinfo rcv; + union sctp_sockstore addr; + int flags; + + if ((buffer = malloc(length)) == NULL) { + return; + } + if (inp_read_lock_held == 0) { + SCTP_INP_READ_LOCK(inp); + } + so = stcb->sctp_socket; + for (m = control->data; m; m = SCTP_BUF_NEXT(m)) { + sctp_sbfree(control, control->stcb, &so->so_rcv, m); + } + m_copydata(control->data, 0, length, buffer); + memset(&rcv, 0, sizeof(struct sctp_rcvinfo)); + rcv.rcv_sid = control->sinfo_stream; + rcv.rcv_ssn = (uint16_t)control->mid; + rcv.rcv_flags = control->sinfo_flags; + rcv.rcv_ppid = control->sinfo_ppid; + rcv.rcv_tsn = control->sinfo_tsn; + rcv.rcv_cumtsn = control->sinfo_cumtsn; + rcv.rcv_context = control->sinfo_context; + rcv.rcv_assoc_id = control->sinfo_assoc_id; + memset(&addr, 0, sizeof(union sctp_sockstore)); + switch (control->whoFrom->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + addr.sin = control->whoFrom->ro._l_addr.sin; + break; +#endif +#ifdef INET6 + case AF_INET6: + addr.sin6 = control->whoFrom->ro._l_addr.sin6; + break; +#endif + case AF_CONN: + addr.sconn = control->whoFrom->ro._l_addr.sconn; + break; + default: + addr.sa = control->whoFrom->ro._l_addr.sa; + break; + } + flags = 0; + if (control->end_added == 1) { + flags |= MSG_EOR; + } + if (control->spec_flags & M_NOTIFICATION) { + flags |= MSG_NOTIFICATION; + } + sctp_m_freem(control->data); + control->data = NULL; + control->tail_mbuf = NULL; + control->length = 0; + if (control->end_added) { + TAILQ_REMOVE(&stcb->sctp_ep->read_queue, control, next); + control->on_read_q = 0; + sctp_free_remote_addr(control->whoFrom); + control->whoFrom = NULL; + sctp_free_a_readq(stcb, control); + } + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + if (inp_read_lock_held == 0) { + SCTP_INP_READ_UNLOCK(inp); + } + inp->recv_callback(so, addr, buffer, length, rcv, flags, inp->ulp_info); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } +} +#endif + void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, @@ -4665,11 +5360,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, struct sockbuf *sb, int end, int inp_read_lock_held, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + int so_locked) { /* * Here we must place the control on the end of the socket read @@ -4685,27 +5376,31 @@ sctp_add_to_readq(struct sctp_inpcb *inp, #endif return; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(inp)); } else { sctp_unlock_assert(SCTP_INP_SO(inp)); } #endif - if (inp_read_lock_held == 0) + if (inp_read_lock_held == SCTP_READ_LOCK_NOT_HELD) { SCTP_INP_READ_LOCK(inp); + } if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_CANT_READ) { - sctp_free_remote_addr(control->whoFrom); - if (control->data) { - sctp_m_freem(control->data); - control->data = NULL; + if (!control->on_strm_q) { + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; + } + sctp_free_a_readq(stcb, control); } - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); - if (inp_read_lock_held == 0) + if (inp_read_lock_held == SCTP_READ_LOCK_NOT_HELD) { SCTP_INP_READ_UNLOCK(inp); + } return; } - if (!(control->spec_flags & M_NOTIFICATION)) { + if ((control->spec_flags & M_NOTIFICATION) == 0) { atomic_add_int(&inp->total_recvs, 1); if (!control->do_not_ref_stcb) { atomic_add_int(&stcb->total_recvs, 1); @@ -4714,7 +5409,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, m = control->data; control->held_length = 0; control->length = 0; - while (m) { + while (m != NULL) { if (SCTP_BUF_LEN(m) == 0) { /* Skip mbufs with NO length */ if (prev == NULL) { @@ -4730,371 +5425,45 @@ sctp_add_to_readq(struct sctp_inpcb *inp, } continue; } - prev = m; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { - sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBALLOC, SCTP_BUF_LEN(m)); - } - sctp_sballoc(stcb, sb, m); - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { - sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); - } - atomic_add_int(&control->length, SCTP_BUF_LEN(m)); - m = SCTP_BUF_NEXT(m); - } - if (prev != NULL) { - control->tail_mbuf = prev; - } else { - /* Everything got collapsed out?? */ - sctp_free_remote_addr(control->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); - if (inp_read_lock_held == 0) - SCTP_INP_READ_UNLOCK(inp); - return; - } - if (end) { - control->end_added = 1; - } -#if defined(__Userspace__) - if (inp->recv_callback) { - if (inp_read_lock_held == 0) - SCTP_INP_READ_UNLOCK(inp); - if (control->end_added == 1) { - struct socket *so; - struct mbuf *m; - char *buffer; - struct sctp_rcvinfo rcv; - union sctp_sockstore addr; - int flags; - - if ((buffer = malloc(control->length)) == NULL) { - return; - } - so = stcb->sctp_socket; - for (m = control->data; m; m = SCTP_BUF_NEXT(m)) { - sctp_sbfree(control, control->stcb, &so->so_rcv, m); - } - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - m_copydata(control->data, 0, control->length, buffer); - memset(&rcv, 0, sizeof(struct sctp_rcvinfo)); - rcv.rcv_sid = control->sinfo_stream; - rcv.rcv_ssn = control->sinfo_ssn; - rcv.rcv_flags = control->sinfo_flags; - rcv.rcv_ppid = control->sinfo_ppid; - rcv.rcv_tsn = control->sinfo_tsn; - rcv.rcv_cumtsn = control->sinfo_cumtsn; - rcv.rcv_context = control->sinfo_context; - rcv.rcv_assoc_id = control->sinfo_assoc_id; - memset(&addr, 0, sizeof(union sctp_sockstore)); - switch (control->whoFrom->ro._l_addr.sa.sa_family) { -#ifdef INET - case AF_INET: - addr.sin = control->whoFrom->ro._l_addr.sin; - break; -#endif -#ifdef INET6 - case AF_INET6: - addr.sin6 = control->whoFrom->ro._l_addr.sin6; - break; -#endif - case AF_CONN: - addr.sconn = control->whoFrom->ro._l_addr.sconn; - break; - default: - addr.sa = control->whoFrom->ro._l_addr.sa; - break; - } - flags = MSG_EOR; - if (control->spec_flags & M_NOTIFICATION) { - flags |= MSG_NOTIFICATION; - } - inp->recv_callback(so, addr, buffer, control->length, rcv, flags, inp->ulp_info); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - sctp_m_freem(control->data); - control->data = NULL; - control->length = 0; - sctp_free_a_readq(stcb, control); - } - return; - } -#endif - TAILQ_INSERT_TAIL(&inp->read_queue, control, next); - if (inp_read_lock_held == 0) - SCTP_INP_READ_UNLOCK(inp); - if (inp && inp->sctp_socket) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); - } else { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(inp); - if (!so_locked) { - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - } - SCTP_SOCKET_LOCK(so, 1); - if (stcb) { - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - } - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return; - } - } -#endif - sctp_sorwakeup(inp, inp->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - if (!so_locked) { - SCTP_SOCKET_UNLOCK(so, 1); - } -#endif - } - } -} - - -int -sctp_append_to_readq(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - struct sctp_queued_to_read *control, - struct mbuf *m, - int end, - int ctls_cumack, - struct sockbuf *sb) -{ - /* - * A partial delivery API event is underway. OR we are appending on - * the reassembly queue. - * - * If PDAPI this means we need to add m to the end of the data. - * Increase the length in the control AND increment the sb_cc. - * Otherwise sb is NULL and all we need to do is put it at the end - * of the mbuf chain. - */ - int len = 0; - struct mbuf *mm, *tail = NULL, *prev = NULL; - - if (inp) { - SCTP_INP_READ_LOCK(inp); - } - if (control == NULL) { - get_out: - if (inp) { - SCTP_INP_READ_UNLOCK(inp); - } - return (-1); - } - if (inp && (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_CANT_READ)) { - SCTP_INP_READ_UNLOCK(inp); - return (0); - } - if (control->end_added) { - /* huh this one is complete? */ - goto get_out; - } - mm = m; - if (mm == NULL) { - goto get_out; - } - - while (mm) { - if (SCTP_BUF_LEN(mm) == 0) { - /* Skip mbufs with NO lenght */ - if (prev == NULL) { - /* First one */ - m = sctp_m_free(mm); - mm = m; - } else { - SCTP_BUF_NEXT(prev) = sctp_m_free(mm); - mm = SCTP_BUF_NEXT(prev); - } - continue; - } - prev = mm; - len += SCTP_BUF_LEN(mm); - if (sb) { - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { - sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBALLOC, SCTP_BUF_LEN(mm)); - } - sctp_sballoc(stcb, sb, mm); - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { - sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); - } - } - mm = SCTP_BUF_NEXT(mm); - } - if (prev) { - tail = prev; - } else { - /* Really there should always be a prev */ - if (m == NULL) { - /* Huh nothing left? */ -#ifdef INVARIANTS - panic("Nothing left to add?"); -#else - goto get_out; -#endif + prev = m; + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { + sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBALLOC, SCTP_BUF_LEN(m)); + } + sctp_sballoc(stcb, sb, m); + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { + sctp_sblog(sb, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); } - tail = m; + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + m = SCTP_BUF_NEXT(m); } - if (control->tail_mbuf) { - /* append */ - SCTP_BUF_NEXT(control->tail_mbuf) = m; - control->tail_mbuf = tail; + if (prev != NULL) { + control->tail_mbuf = prev; } else { - /* nothing there */ -#ifdef INVARIANTS - if (control->data != NULL) { - panic("This should NOT happen"); + /* Everything got collapsed out?? */ + if (!control->on_strm_q) { + sctp_free_remote_addr(control->whoFrom); + sctp_free_a_readq(stcb, control); } -#endif - control->data = m; - control->tail_mbuf = tail; + if (inp_read_lock_held == 0) + SCTP_INP_READ_UNLOCK(inp); + return; } - atomic_add_int(&control->length, len); if (end) { - /* message is complete */ - if (stcb && (control == stcb->asoc.control_pdapi)) { - stcb->asoc.control_pdapi = NULL; - } - control->held_length = 0; control->end_added = 1; } - if (stcb == NULL) { - control->do_not_ref_stcb = 1; - } - /* - * When we are appending in partial delivery, the cum-ack is used - * for the actual pd-api highest tsn on this mbuf. The true cum-ack - * is populated in the outbound sinfo structure from the true cumack - * if the association exists... - */ - control->sinfo_tsn = control->sinfo_cumtsn = ctls_cumack; + TAILQ_INSERT_TAIL(&inp->read_queue, control, next); + control->on_read_q = 1; #if defined(__Userspace__) - if (inp->recv_callback) { - uint32_t pd_point, length; - - length = control->length; - if (stcb != NULL && stcb->sctp_socket != NULL) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); - } else { - pd_point = inp->partial_delivery_point; - } - if ((control->end_added == 1) || (length >= pd_point)) { - struct socket *so; - char *buffer; - struct sctp_rcvinfo rcv; - union sctp_sockstore addr; - int flags; - - if ((buffer = malloc(control->length)) == NULL) { - return (-1); - } - so = stcb->sctp_socket; - for (m = control->data; m; m = SCTP_BUF_NEXT(m)) { - sctp_sbfree(control, control->stcb, &so->so_rcv, m); - } - m_copydata(control->data, 0, control->length, buffer); - memset(&rcv, 0, sizeof(struct sctp_rcvinfo)); - rcv.rcv_sid = control->sinfo_stream; - rcv.rcv_ssn = control->sinfo_ssn; - rcv.rcv_flags = control->sinfo_flags; - rcv.rcv_ppid = control->sinfo_ppid; - rcv.rcv_tsn = control->sinfo_tsn; - rcv.rcv_cumtsn = control->sinfo_cumtsn; - rcv.rcv_context = control->sinfo_context; - rcv.rcv_assoc_id = control->sinfo_assoc_id; - memset(&addr, 0, sizeof(union sctp_sockstore)); - switch (control->whoFrom->ro._l_addr.sa.sa_family) { -#ifdef INET - case AF_INET: - addr.sin = control->whoFrom->ro._l_addr.sin; - break; -#endif -#ifdef INET6 - case AF_INET6: - addr.sin6 = control->whoFrom->ro._l_addr.sin6; - break; + sctp_invoke_recv_callback(inp, stcb, control, SCTP_READ_LOCK_HELD); #endif - case AF_CONN: - addr.sconn = control->whoFrom->ro._l_addr.sconn; - break; - default: - addr.sa = control->whoFrom->ro._l_addr.sa; - break; - } - flags = 0; - if (control->end_added == 1) { - flags |= MSG_EOR; - } - if (control->spec_flags & M_NOTIFICATION) { - flags |= MSG_NOTIFICATION; - } - sctp_m_freem(control->data); - control->data = NULL; - control->tail_mbuf = NULL; - control->length = 0; - if (control->end_added) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - sctp_free_a_readq(stcb, control); - } else { - control->some_taken = 1; - } - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - inp->recv_callback(so, addr, buffer, length, rcv, flags, inp->ulp_info); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - } - if (inp) - SCTP_INP_READ_UNLOCK(inp); - return (0); + if ((inp != NULL) && (inp->sctp_socket != NULL)) { + sctp_wakeup_the_read_socket(inp, stcb, so_locked); } -#endif - if (inp) { + if (inp_read_lock_held == SCTP_READ_LOCK_NOT_HELD) { SCTP_INP_READ_UNLOCK(inp); } - if (inp && inp->sctp_socket) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); - } else { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(inp); - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - } - SCTP_SOCKET_LOCK(so, 1); - if (stcb) { - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - } - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return (0); - } -#endif - sctp_sorwakeup(inp, inp->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - } - } - return (0); } - - /*************HOLD THIS COMMENT FOR PATCH FILE OF *************ALTERNATE ROUTING CODE */ @@ -5108,19 +5477,23 @@ sctp_generate_cause(uint16_t code, char *info) { struct mbuf *m; struct sctp_gen_error_cause *cause; - size_t info_len, len; + size_t info_len; + uint16_t len; if ((code == 0) || (info == NULL)) { return (NULL); } info_len = strlen(info); - len = sizeof(struct sctp_paramhdr) + info_len; + if (info_len > (SCTP_MAX_CAUSE_LENGTH - sizeof(struct sctp_paramhdr))) { + return (NULL); + } + len = (uint16_t)(sizeof(struct sctp_paramhdr) + info_len); m = sctp_get_mbuf_for_msg(len, 0, M_NOWAIT, 1, MT_DATA); if (m != NULL) { SCTP_BUF_LEN(m) = len; cause = mtod(m, struct sctp_gen_error_cause *); cause->code = htons(code); - cause->length = htons((uint16_t)len); + cause->length = htons(len); memcpy(cause->info, info, info_len); } return (m); @@ -5131,21 +5504,20 @@ sctp_generate_no_user_data_cause(uint32_t tsn) { struct mbuf *m; struct sctp_error_no_user_data *no_user_data_cause; - size_t len; + uint16_t len; - len = sizeof(struct sctp_error_no_user_data); + len = (uint16_t)sizeof(struct sctp_error_no_user_data); m = sctp_get_mbuf_for_msg(len, 0, M_NOWAIT, 1, MT_DATA); if (m != NULL) { SCTP_BUF_LEN(m) = len; no_user_data_cause = mtod(m, struct sctp_error_no_user_data *); no_user_data_cause->cause.code = htons(SCTP_CAUSE_NO_USER_DATA); - no_user_data_cause->cause.length = htons((uint16_t)len); - no_user_data_cause->tsn = tsn; /* tsn is passed in as NBO */ + no_user_data_cause->cause.length = htons(len); + no_user_data_cause->tsn = htonl(tsn); } return (m); } -#ifdef SCTP_MBCNT_LOGGING void sctp_free_bufspace(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_tmit_chunk *tp1, int chk_cnt) @@ -5153,72 +5525,70 @@ sctp_free_bufspace(struct sctp_tcb *stcb, struct sctp_association *asoc, if (tp1->data == NULL) { return; } - asoc->chunks_on_out_queue -= chk_cnt; + atomic_subtract_int(&asoc->chunks_on_out_queue, chk_cnt); +#ifdef SCTP_MBCNT_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBCNT_LOGGING_ENABLE) { sctp_log_mbcnt(SCTP_LOG_MBCNT_DECREASE, - asoc->total_output_queue_size, - tp1->book_size, - 0, - tp1->mbcnt); + asoc->total_output_queue_size, + tp1->book_size, + 0, + tp1->mbcnt); } +#endif if (asoc->total_output_queue_size >= tp1->book_size) { - atomic_add_int(&asoc->total_output_queue_size, -tp1->book_size); + atomic_subtract_int(&asoc->total_output_queue_size, tp1->book_size); } else { asoc->total_output_queue_size = 0; } - - if (stcb->sctp_socket && (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) || - ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE)))) { + if ((stcb->sctp_socket != NULL) && + (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) || + ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE)))) { if (stcb->sctp_socket->so_snd.sb_cc >= tp1->book_size) { - stcb->sctp_socket->so_snd.sb_cc -= tp1->book_size; + atomic_subtract_int(&((stcb)->sctp_socket->so_snd.sb_cc), tp1->book_size); } else { stcb->sctp_socket->so_snd.sb_cc = 0; - } } } -#endif - int sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, - uint8_t sent, int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ) + uint8_t sent, int so_locked) { struct sctp_stream_out *strq; struct sctp_tmit_chunk *chk = NULL, *tp2; struct sctp_stream_queue_pending *sp; - uint16_t stream = 0, seq = 0; + uint32_t mid; + uint16_t sid; uint8_t foundeom = 0; int ret_sz = 0; int notdone; int do_wakeup_routine = 0; -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) if (so_locked) { sctp_lock_assert(SCTP_INP_SO(stcb->sctp_ep)); } else { sctp_unlock_assert(SCTP_INP_SO(stcb->sctp_ep)); } #endif - stream = tp1->rec.data.stream_number; - seq = tp1->rec.data.stream_seq; - if (sent || !(tp1->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG)) { + SCTP_TCB_LOCK_ASSERT(stcb); + + sid = tp1->rec.data.sid; + mid = tp1->rec.data.mid; + if (sent || ((tp1->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0)) { stcb->asoc.abandoned_sent[0]++; stcb->asoc.abandoned_sent[PR_SCTP_POLICY(tp1->flags)]++; - stcb->asoc.strmout[stream].abandoned_sent[0]++; + stcb->asoc.strmout[sid].abandoned_sent[0]++; #if defined(SCTP_DETAILED_STR_STATS) - stcb->asoc.strmout[stream].abandoned_sent[PR_SCTP_POLICY(tp1->flags)]++; + stcb->asoc.strmout[sid].abandoned_sent[PR_SCTP_POLICY(tp1->flags)]++; #endif } else { stcb->asoc.abandoned_unsent[0]++; stcb->asoc.abandoned_unsent[PR_SCTP_POLICY(tp1->flags)]++; - stcb->asoc.strmout[stream].abandoned_unsent[0]++; + stcb->asoc.strmout[sid].abandoned_unsent[0]++; #if defined(SCTP_DETAILED_STR_STATS) - stcb->asoc.strmout[stream].abandoned_unsent[PR_SCTP_POLICY(tp1->flags)]++; + stcb->asoc.strmout[sid].abandoned_unsent[PR_SCTP_POLICY(tp1->flags)]++; #endif } do { @@ -5270,8 +5640,8 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, * sent queue. */ TAILQ_FOREACH_SAFE(tp1, &stcb->asoc.send_queue, sctp_next, tp2) { - if ((tp1->rec.data.stream_number != stream) || - (tp1->rec.data.stream_seq != seq)) { + if ((tp1->rec.data.sid != sid) || + (!SCTP_MID_EQ(stcb->asoc.idata_supported, tp1->rec.data.mid, mid))) { break; } /* save to chk in case we have some on stream out @@ -5310,8 +5680,7 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, * Still no eom found. That means there * is stuff left on the stream out queue.. yuck. */ - SCTP_TCB_SEND_LOCK(stcb); - strq = &stcb->asoc.strmout[stream]; + strq = &stcb->asoc.strmout[sid]; sp = TAILQ_FIRST(&strq->outqueue); if (sp != NULL) { sp->discard_rest = 1; @@ -5333,28 +5702,52 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, goto oh_well; } memset(chk, 0, sizeof(*chk)); - chk->rec.data.rcv_flags = SCTP_DATA_LAST_FRAG; + chk->rec.data.rcv_flags = 0; chk->sent = SCTP_FORWARD_TSN_SKIP; chk->asoc = &stcb->asoc; - chk->rec.data.stream_seq = strq->next_sequence_send; - chk->rec.data.stream_number = sp->stream; - chk->rec.data.payloadtype = sp->ppid; + if (stcb->asoc.idata_supported == 0) { + if (sp->sinfo_flags & SCTP_UNORDERED) { + chk->rec.data.mid = 0; + } else { + chk->rec.data.mid = strq->next_mid_ordered; + } + } else { + if (sp->sinfo_flags & SCTP_UNORDERED) { + chk->rec.data.mid = strq->next_mid_unordered; + } else { + chk->rec.data.mid = strq->next_mid_ordered; + } + } + chk->rec.data.sid = sp->sid; + chk->rec.data.ppid = sp->ppid; chk->rec.data.context = sp->context; chk->flags = sp->act_flags; chk->whoTo = NULL; -#if defined(__FreeBSD__) || defined(__Panda__) - chk->rec.data.TSN_seq = atomic_fetchadd_int(&stcb->asoc.sending_seq, 1); +#if defined(__FreeBSD__) && !defined(__Userspace__) + chk->rec.data.tsn = atomic_fetchadd_int(&stcb->asoc.sending_seq, 1); #else - chk->rec.data.TSN_seq = stcb->asoc.sending_seq++; + chk->rec.data.tsn = stcb->asoc.sending_seq++; #endif strq->chunks_on_queues++; TAILQ_INSERT_TAIL(&stcb->asoc.sent_queue, chk, sctp_next); stcb->asoc.sent_queue_cnt++; stcb->asoc.pr_sctp_cnt++; + } + chk->rec.data.rcv_flags |= SCTP_DATA_LAST_FRAG; + if (sp->sinfo_flags & SCTP_UNORDERED) { + chk->rec.data.rcv_flags |= SCTP_DATA_UNORDERED; + } + if (stcb->asoc.idata_supported == 0) { + if ((sp->sinfo_flags & SCTP_UNORDERED) == 0) { + strq->next_mid_ordered++; + } } else { - chk->rec.data.rcv_flags |= SCTP_DATA_LAST_FRAG; + if (sp->sinfo_flags & SCTP_UNORDERED) { + strq->next_mid_unordered++; + } else { + strq->next_mid_ordered++; + } } - strq->next_sequence_send++; oh_well: if (sp->data) { /* Pull any data to free up the SB and @@ -5371,10 +5764,9 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, sp->length = 0; } } - SCTP_TCB_SEND_UNLOCK(stcb); } if (do_wakeup_routine) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) struct socket *so; so = SCTP_INP_SO(stcb->sctp_ep); @@ -5392,7 +5784,7 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1, } #endif sctp_sowwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) +#if defined(__APPLE__) && !defined(__Userspace__) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); } @@ -5427,10 +5819,6 @@ sctp_find_ifa_in_ep(struct sctp_inpcb *inp, struct sockaddr *addr, if (((struct sockaddr_in *)addr)->sin_addr.s_addr == laddr->ifa->address.sin.sin_addr.s_addr) { /* found him. */ - if (holds_lock == 0) { - SCTP_INP_RUNLOCK(inp); - } - return (laddr->ifa); break; } } @@ -5440,10 +5828,6 @@ sctp_find_ifa_in_ep(struct sctp_inpcb *inp, struct sockaddr *addr, if (SCTP6_ARE_ADDR_EQUAL((struct sockaddr_in6 *)addr, &laddr->ifa->address.sin6)) { /* found him. */ - if (holds_lock == 0) { - SCTP_INP_RUNLOCK(inp); - } - return (laddr->ifa); break; } } @@ -5452,10 +5836,6 @@ sctp_find_ifa_in_ep(struct sctp_inpcb *inp, struct sockaddr *addr, if (addr->sa_family == AF_CONN) { if (((struct sockaddr_conn *)addr)->sconn_addr == laddr->ifa->address.sconn.sconn_addr) { /* found him. */ - if (holds_lock == 0) { - SCTP_INP_RUNLOCK(inp); - } - return (laddr->ifa); break; } } @@ -5464,7 +5844,11 @@ sctp_find_ifa_in_ep(struct sctp_inpcb *inp, struct sockaddr *addr, if (holds_lock == 0) { SCTP_INP_RUNLOCK(inp); } - return (NULL); + if (laddr != NULL) { + return (laddr->ifa); + } else { + return (NULL); + } } uint32_t @@ -5487,7 +5871,7 @@ sctp_get_ifa_hash_val(struct sockaddr *addr) uint32_t hash_of_addr; sin6 = (struct sockaddr_in6 *)addr; -#if !defined(__Windows__) && !defined(__Userspace_os_FreeBSD) && !defined(__Userspace_os_Darwin) && !defined(__Userspace_os_Windows) +#if !defined(_WIN32) && !(defined(__FreeBSD__) && defined(__Userspace__)) && !defined(__APPLE__) hash_of_addr = (sin6->sin6_addr.s6_addr32[0] + sin6->sin6_addr.s6_addr32[1] + sin6->sin6_addr.s6_addr32[2] + @@ -5527,8 +5911,11 @@ sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) struct sctp_ifalist *hash_head; uint32_t hash_of_addr; - if (holds_lock == 0) + if (holds_lock == 0) { SCTP_IPI_ADDR_RLOCK(); + } else { + SCTP_IPI_ADDR_LOCK_ASSERT(); + } vrf = sctp_find_vrf(vrf_id); if (vrf == NULL) { @@ -5559,9 +5946,6 @@ sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) if (((struct sockaddr_in *)addr)->sin_addr.s_addr == sctp_ifap->address.sin.sin_addr.s_addr) { /* found him. */ - if (holds_lock == 0) - SCTP_IPI_ADDR_RUNLOCK(); - return (sctp_ifap); break; } } @@ -5571,9 +5955,6 @@ sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) if (SCTP6_ARE_ADDR_EQUAL((struct sockaddr_in6 *)addr, &sctp_ifap->address.sin6)) { /* found him. */ - if (holds_lock == 0) - SCTP_IPI_ADDR_RUNLOCK(); - return (sctp_ifap); break; } } @@ -5582,9 +5963,6 @@ sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) if (addr->sa_family == AF_CONN) { if (((struct sockaddr_conn *)addr)->sconn_addr == sctp_ifap->address.sconn.sconn_addr) { /* found him. */ - if (holds_lock == 0) - SCTP_IPI_ADDR_RUNLOCK(); - return (sctp_ifap); break; } } @@ -5592,7 +5970,7 @@ sctp_find_ifa_by_addr(struct sockaddr *addr, uint32_t vrf_id, int holds_lock) } if (holds_lock == 0) SCTP_IPI_ADDR_RUNLOCK(); - return (NULL); + return (sctp_ifap); } static void @@ -5600,6 +5978,9 @@ sctp_user_rcvd(struct sctp_tcb *stcb, uint32_t *freed_so_far, int hold_rlock, uint32_t rwnd_req) { /* User pulled some data, do we need a rwnd update? */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif int r_unlocked = 0; uint32_t dif, rwnd; struct socket *so = NULL; @@ -5609,9 +5990,8 @@ sctp_user_rcvd(struct sctp_tcb *stcb, uint32_t *freed_so_far, int hold_rlock, atomic_add_int(&stcb->asoc.refcnt, 1); - if (stcb->asoc.state & (SCTP_STATE_ABOUT_TO_BE_FREED | - SCTP_STATE_SHUTDOWN_RECEIVED | - SCTP_STATE_SHUTDOWN_ACK_SENT)) { + if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) || + (stcb->asoc.state & (SCTP_STATE_ABOUT_TO_BE_FREED | SCTP_STATE_SHUTDOWN_RECEIVED))) { /* Pre-check If we are freeing no update */ goto no_lock; } @@ -5656,12 +6036,19 @@ sctp_user_rcvd(struct sctp_tcb *stcb, uint32_t *freed_so_far, int hold_rlock, goto out; } SCTP_STAT_INCR(sctps_wu_sacks_sent); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_send_sack(stcb, SCTP_SO_LOCKED); sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_USR_RCVD, SCTP_SO_LOCKED); /* make sure no timer is running */ - sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTPUTIL+SCTP_LOC_6); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_6); SCTP_TCB_UNLOCK(stcb); } else { /* Update how much we have pending */ @@ -5674,7 +6061,7 @@ sctp_user_rcvd(struct sctp_tcb *stcb, uint32_t *freed_so_far, int hold_rlock, SCTP_INP_DECR_REF(stcb->sctp_ep); no_lock: - atomic_add_int(&stcb->asoc.refcnt, -1); + atomic_subtract_int(&stcb->asoc.refcnt, 1); return; } @@ -5697,8 +6084,9 @@ sctp_sorecvmsg(struct socket *so, * */ struct sctp_inpcb *inp = NULL; - int my_len = 0; - int cp_len = 0, error = 0; + ssize_t my_len = 0; + ssize_t cp_len = 0; + int error = 0; struct sctp_queued_to_read *control = NULL, *ctl = NULL, *nxt = NULL; struct mbuf *m = NULL; struct sctp_tcb *stcb = NULL; @@ -5707,15 +6095,15 @@ sctp_sorecvmsg(struct socket *so, int out_flags = 0, in_flags = 0; int block_allowed = 1; uint32_t freed_so_far = 0; - uint32_t copied_so_far = 0; + ssize_t copied_so_far = 0; int in_eeor_mode = 0; int no_rcv_needed = 0; uint32_t rwnd_req = 0; int hold_sblock = 0; int hold_rlock = 0; - int slen = 0; + ssize_t slen = 0; uint32_t held_length = 0; -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) int sockbuf_lock = 0; #endif @@ -5731,7 +6119,7 @@ sctp_sorecvmsg(struct socket *so, } else { in_flags = 0; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) slen = uio->uio_resid; #else @@ -5751,7 +6139,7 @@ sctp_sorecvmsg(struct socket *so, return (EINVAL); } if ((in_flags & (MSG_DONTWAIT -#if defined(__FreeBSD__) && __FreeBSD_version > 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) | MSG_NBIO #endif )) || @@ -5770,66 +6158,61 @@ sctp_sorecvmsg(struct socket *so, rwnd_req = SCTP_MIN_RWND; in_eeor_mode = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) sctp_misc_ints(SCTP_SORECV_ENTER, - rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, uio->uio_resid); + rwnd_req, in_eeor_mode, SCTP_SBAVAIL(&so->so_rcv), uio->uio_resid); #else sctp_misc_ints(SCTP_SORECV_ENTER, - rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, uio_resid(uio)); + rwnd_req, in_eeor_mode, SCTP_SBAVAIL(&so->so_rcv), uio_resid(uio)); #endif #else sctp_misc_ints(SCTP_SORECV_ENTER, - rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, uio->uio_resid); + rwnd_req, in_eeor_mode, SCTP_SBAVAIL(&so->so_rcv), (uint32_t)uio->uio_resid); #endif } -#if (defined(__FreeBSD__) && __FreeBSD_version < 700000) || defined(__Userspace__) +#if defined(__Userspace__) SOCKBUF_LOCK(&so->so_rcv); hold_sblock = 1; #endif if (SCTP_BASE_SYSCTL(sctp_logging_level) &SCTP_RECV_RWND_LOGGING_ENABLE) { -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) sctp_misc_ints(SCTP_SORECV_ENTERPL, - rwnd_req, block_allowed, so->so_rcv.sb_cc, uio->uio_resid); + rwnd_req, block_allowed, SCTP_SBAVAIL(&so->so_rcv), uio->uio_resid); #else sctp_misc_ints(SCTP_SORECV_ENTERPL, - rwnd_req, block_allowed, so->so_rcv.sb_cc, uio_resid(uio)); + rwnd_req, block_allowed, SCTP_SBAVAIL(&so->so_rcv), uio_resid(uio)); #endif #else sctp_misc_ints(SCTP_SORECV_ENTERPL, - rwnd_req, block_allowed, so->so_rcv.sb_cc, uio->uio_resid); + rwnd_req, block_allowed, SCTP_SBAVAIL(&so->so_rcv), (uint32_t)uio->uio_resid); #endif } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) error = sblock(&so->so_rcv, SBLOCKWAIT(in_flags)); #endif - -#if defined(__FreeBSD__) - error = sblock(&so->so_rcv, (block_allowed ? SBL_WAIT : 0)); +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(in_flags)); #endif if (error) { goto release_unlocked; } -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 - sockbuf_lock = 1; +#if defined(__FreeBSD__) && !defined(__Userspace__) + sockbuf_lock = 1; #endif restart: -#if (defined(__FreeBSD__) && __FreeBSD_version < 700000) || defined(__Userspace__) +#if defined(__Userspace__) if (hold_sblock == 0) { SOCKBUF_LOCK(&so->so_rcv); hold_sblock = 1; } #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&so->so_rcv, 1); #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - sbunlock(&so->so_rcv); -#endif - restart_nosblocks: if (hold_sblock == 0) { SOCKBUF_LOCK(&so->so_rcv); @@ -5839,10 +6222,10 @@ sctp_sorecvmsg(struct socket *so, (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { goto out; } -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Windows__) - if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && (so->so_rcv.sb_cc == 0)) { +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) + if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && SCTP_SBAVAIL(&so->so_rcv) == 0) { #else - if ((so->so_state & SS_CANTRCVMORE) && (so->so_rcv.sb_cc == 0)) { + if ((so->so_state & SS_CANTRCVMORE) && SCTP_SBAVAIL(&so->so_rcv) == 0) { #endif if (so->so_error) { error = so->so_error; @@ -5850,16 +6233,22 @@ sctp_sorecvmsg(struct socket *so, so->so_error = 0; goto out; } else { - if (so->so_rcv.sb_cc == 0) { + if (SCTP_SBAVAIL(&so->so_rcv) == 0) { /* indicate EOF */ error = 0; goto out; } } } - if ((so->so_rcv.sb_cc <= held_length) && block_allowed) { - /* we need to wait for data */ - if ((so->so_rcv.sb_cc == 0) && + if (SCTP_SBAVAIL(&so->so_rcv) <= held_length) { + if (so->so_error) { + error = so->so_error; + if ((in_flags & MSG_PEEK) == 0) { + so->so_error = 0; + } + goto out; + } + if ((SCTP_SBAVAIL(&so->so_rcv) == 0) && ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { if ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0) { @@ -5884,56 +6273,29 @@ sctp_sorecvmsg(struct socket *so, goto out; } } - error = sbwait(&so->so_rcv); - if (error) { - goto out; - } - held_length = 0; - goto restart_nosblocks; - } else if (so->so_rcv.sb_cc == 0) { - if (so->so_error) { - error = so->so_error; - if ((in_flags & MSG_PEEK) == 0) - so->so_error = 0; - } else { - if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || - (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) { - if ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0) { - /* For active open side clear flags for re-use - * passive open is blocked by connect. - */ - if (inp->sctp_flags & SCTP_PCB_FLAGS_WAS_ABORTED) { - /* You were aborted, passive side always hits here */ - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, ECONNRESET); - error = ECONNRESET; - } - so->so_state &= ~(SS_ISCONNECTING | - SS_ISDISCONNECTING | - SS_ISCONFIRMING | - SS_ISCONNECTED); - if (error == 0) { - if ((inp->sctp_flags & SCTP_PCB_FLAGS_WAS_CONNECTED) == 0) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, ENOTCONN); - error = ENOTCONN; - } - } - goto out; - } + if (block_allowed) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = sbwait(so, SO_RCV); +#else + error = sbwait(&so->so_rcv); +#endif + if (error) { + goto out; } + held_length = 0; + goto restart_nosblocks; + } else { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EWOULDBLOCK); error = EWOULDBLOCK; + goto out; } - goto out; } if (hold_sblock == 1) { SOCKBUF_UNLOCK(&so->so_rcv); hold_sblock = 0; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) error = sblock(&so->so_rcv, SBLOCKWAIT(in_flags)); -#endif -#if defined(__FreeBSD__) && __FreeBSD_version < 700000 - error = sblock(&so->so_rcv, (block_allowed ? M_WAITOK : 0)); #endif /* we possibly have data we can read */ /*sa_ignore FREED_MEMORY*/ @@ -5947,11 +6309,11 @@ sctp_sorecvmsg(struct socket *so, SCTP_INP_READ_LOCK(inp); } control = TAILQ_FIRST(&inp->read_queue); - if ((control == NULL) && (so->so_rcv.sb_cc != 0)) { + if ((control == NULL) && (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #ifdef INVARIANTS panic("Huh, its non zero and nothing on control?"); #endif - so->so_rcv.sb_cc = 0; + SCTP_SB_CLEAR(so->so_rcv); } SCTP_INP_READ_UNLOCK(inp); hold_rlock = 0; @@ -5986,7 +6348,7 @@ sctp_sorecvmsg(struct socket *so, } else { /* remove it */ TAILQ_REMOVE(&inp->read_queue, control, next); - /* Add back any hiddend data */ + /* Add back any hidden data */ sctp_free_remote_addr(control->whoFrom); sctp_free_a_readq(stcb, control); } @@ -6017,6 +6379,12 @@ sctp_sorecvmsg(struct socket *so, sctp_m_free (control->aux_data); control->aux_data = NULL; } +#ifdef INVARIANTS + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } +#endif sctp_free_remote_addr(control->whoFrom); sctp_free_a_readq(stcb, control); if (hold_rlock) { @@ -6057,7 +6425,7 @@ sctp_sorecvmsg(struct socket *so, * have the strm interleave feature present. Then if we have * taken some (pdapi) or we can refer to tht tcb AND we have * not started a delivery for this stream, we can take it. - * Note we do NOT allow a notificaiton on the same assoc to + * Note we do NOT allow a notification on the same assoc to * be delivered. */ control = ctl; @@ -6071,26 +6439,22 @@ sctp_sorecvmsg(struct socket *so, * fragment interleave is NOT on. So stuff the sb_cc * into the our held count, and its time to sleep again. */ - held_length = so->so_rcv.sb_cc; - control->held_length = so->so_rcv.sb_cc; + held_length = SCTP_SBAVAIL(&so->so_rcv); + control->held_length = SCTP_SBAVAIL(&so->so_rcv); goto restart; } /* Clear the held length since there is something to read */ control->held_length = 0; - if (hold_rlock) { - SCTP_INP_READ_UNLOCK(inp); - hold_rlock = 0; - } found_one: /* * If we reach here, control has a some data for us to read off. * Note that stcb COULD be NULL. */ - control->some_taken++; - if (hold_sblock) { - SOCKBUF_UNLOCK(&so->so_rcv); - hold_sblock = 0; + if (hold_rlock == 0) { + hold_rlock = 1; + SCTP_INP_READ_LOCK(inp); } + control->some_taken++; stcb = control->stcb; if (stcb) { if ((control->do_not_ref_stcb == 0) && @@ -6124,10 +6488,10 @@ sctp_sorecvmsg(struct socket *so, * we then will go to the sctp_user_rcvd() that will * not lock until it KNOWs it MUST send a WUP-SACK. */ - freed_so_far = stcb->freed_by_sorcv_sincelast; + freed_so_far = (uint32_t)stcb->freed_by_sorcv_sincelast; stcb->freed_by_sorcv_sincelast = 0; } - } + } if (stcb && ((control->spec_flags & M_NOTIFICATION) == 0) && control->do_not_ref_stcb == 0) { @@ -6135,8 +6499,16 @@ sctp_sorecvmsg(struct socket *so, } /* First lets get off the sinfo and sockaddr info */ - if ((sinfo) && filling_sinfo) { - memcpy(sinfo, control, sizeof(struct sctp_nonpad_sndrcvinfo)); + if ((sinfo != NULL) && (filling_sinfo != 0)) { + sinfo->sinfo_stream = control->sinfo_stream; + sinfo->sinfo_ssn = (uint16_t)control->mid; + sinfo->sinfo_flags = control->sinfo_flags; + sinfo->sinfo_ppid = control->sinfo_ppid; + sinfo->sinfo_context =control->sinfo_context; + sinfo->sinfo_timetolive = control->sinfo_timetolive; + sinfo->sinfo_tsn = control->sinfo_tsn; + sinfo->sinfo_cumtsn = control->sinfo_cumtsn; + sinfo->sinfo_assoc_id = control->sinfo_assoc_id; nxt = TAILQ_NEXT(control, next); if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXT_RCVINFO) || sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO)) { @@ -6144,20 +6516,20 @@ sctp_sorecvmsg(struct socket *so, s_extra = (struct sctp_extrcvinfo *)sinfo; if ((nxt) && (nxt->length)) { - s_extra->sreinfo_next_flags = SCTP_NEXT_MSG_AVAIL; + s_extra->serinfo_next_flags = SCTP_NEXT_MSG_AVAIL; if (nxt->sinfo_flags & SCTP_UNORDERED) { - s_extra->sreinfo_next_flags |= SCTP_NEXT_MSG_IS_UNORDERED; + s_extra->serinfo_next_flags |= SCTP_NEXT_MSG_IS_UNORDERED; } if (nxt->spec_flags & M_NOTIFICATION) { - s_extra->sreinfo_next_flags |= SCTP_NEXT_MSG_IS_NOTIFICATION; + s_extra->serinfo_next_flags |= SCTP_NEXT_MSG_IS_NOTIFICATION; } - s_extra->sreinfo_next_aid = nxt->sinfo_assoc_id; - s_extra->sreinfo_next_length = nxt->length; - s_extra->sreinfo_next_ppid = nxt->sinfo_ppid; - s_extra->sreinfo_next_stream = nxt->sinfo_stream; + s_extra->serinfo_next_aid = nxt->sinfo_assoc_id; + s_extra->serinfo_next_length = nxt->length; + s_extra->serinfo_next_ppid = nxt->sinfo_ppid; + s_extra->serinfo_next_stream = nxt->sinfo_stream; if (nxt->tail_mbuf != NULL) { if (nxt->end_added) { - s_extra->sreinfo_next_flags |= SCTP_NEXT_MSG_ISCOMPLETE; + s_extra->serinfo_next_flags |= SCTP_NEXT_MSG_ISCOMPLETE; } } } else { @@ -6166,11 +6538,11 @@ sctp_sorecvmsg(struct socket *so, * that is on the control's structure :-D */ nxt = NULL; - s_extra->sreinfo_next_flags = SCTP_NO_NEXT_MSG; - s_extra->sreinfo_next_aid = 0; - s_extra->sreinfo_next_length = 0; - s_extra->sreinfo_next_ppid = 0; - s_extra->sreinfo_next_stream = 0; + s_extra->serinfo_next_flags = SCTP_NO_NEXT_MSG; + s_extra->serinfo_next_aid = 0; + s_extra->serinfo_next_length = 0; + s_extra->serinfo_next_ppid = 0; + s_extra->serinfo_next_stream = 0; } } /* @@ -6201,7 +6573,7 @@ sctp_sorecvmsg(struct socket *so, entry = &inp->readlog[index]; entry->vtag = control->sinfo_assoc_id; entry->strm = control->sinfo_stream; - entry->seq = control->sinfo_ssn; + entry->seq = (uint16_t)control->mid; entry->sz = control->length; entry->flgs = control->sinfo_flags; } @@ -6261,6 +6633,14 @@ sctp_sorecvmsg(struct socket *so, #endif #endif } + if (hold_rlock) { + SCTP_INP_READ_UNLOCK(inp); + hold_rlock = 0; + } + if (hold_sblock) { + SOCKBUF_UNLOCK(&so->so_rcv); + hold_sblock = 0; + } /* now copy out what data we can */ if (mp == NULL) { /* copy out each mbuf in the chain up to length */ @@ -6268,16 +6648,16 @@ sctp_sorecvmsg(struct socket *so, m = control->data; while (m) { /* Move out all we can */ -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - cp_len = (int)uio->uio_resid; + cp_len = uio->uio_resid; #else - cp_len = (int)uio_resid(uio); + cp_len = uio_resid(uio); #endif #else - cp_len = (int)uio->uio_resid; + cp_len = uio->uio_resid; #endif - my_len = (int)SCTP_BUF_LEN(m); + my_len = SCTP_BUF_LEN(m); if (cp_len > my_len) { /* not enough in this buf */ cp_len = my_len; @@ -6286,12 +6666,12 @@ sctp_sorecvmsg(struct socket *so, SCTP_INP_READ_UNLOCK(inp); hold_rlock = 0; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 0); #endif if (cp_len > 0) - error = uiomove(mtod(m, char *), cp_len, uio); -#if defined(__APPLE__) + error = uiomove(mtod(m, char *), (int)cp_len, uio); +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(so, 0); #endif /* re-read */ @@ -6307,20 +6687,13 @@ sctp_sorecvmsg(struct socket *so, /* error we are out of here */ goto release; } - if ((SCTP_BUF_NEXT(m) == NULL) && - (cp_len >= SCTP_BUF_LEN(m)) && - ((control->end_added == 0) || - (control->end_added && - (TAILQ_NEXT(control, next) == NULL))) - ) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; if (cp_len == SCTP_BUF_LEN(m)) { if ((SCTP_BUF_NEXT(m)== NULL) && (control->end_added)) { out_flags |= MSG_EOR; - if ((control->do_not_ref_stcb == 0) && + if ((control->do_not_ref_stcb == 0) && (control->stcb != NULL) && ((control->spec_flags & M_NOTIFICATION) == 0)) control->stcb->asoc.strmin[control->sinfo_stream].delivery_started = 0; @@ -6345,15 +6718,15 @@ sctp_sorecvmsg(struct socket *so, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); } copied_so_far += cp_len; - freed_so_far += cp_len; + freed_so_far += (uint32_t)cp_len; freed_so_far += MSIZE; - atomic_subtract_int(&control->length, cp_len); + atomic_subtract_int(&control->length, (int)cp_len); control->data = sctp_m_free(m); m = control->data; /* been through it all, must hold sb lock ok to null tail */ if (control->data == NULL) { #ifdef INVARIANTS -#if !defined(__APPLE__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if ((control->end_added == 0) || (TAILQ_NEXT(control, next) == NULL)) { /* If the end is not added, OR the @@ -6380,28 +6753,28 @@ sctp_sorecvmsg(struct socket *so, } if ((in_flags & MSG_PEEK) == 0) { SCTP_BUF_RESV_UF(m, cp_len); - SCTP_BUF_LEN(m) -= cp_len; + SCTP_BUF_LEN(m) -= (int)cp_len; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { - sctp_sblog(&so->so_rcv, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBFREE, cp_len); + sctp_sblog(&so->so_rcv, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBFREE, (int)cp_len); } - atomic_subtract_int(&so->so_rcv.sb_cc, cp_len); + atomic_subtract_int(&so->so_rcv.sb_cc, (int)cp_len); if ((control->do_not_ref_stcb == 0) && stcb) { - atomic_subtract_int(&stcb->asoc.sb_cc, cp_len); + atomic_subtract_int(&stcb->asoc.sb_cc, (int)cp_len); } copied_so_far += cp_len; - freed_so_far += cp_len; + freed_so_far += (uint32_t)cp_len; freed_so_far += MSIZE; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { sctp_sblog(&so->so_rcv, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBRESULT, 0); } - atomic_subtract_int(&control->length, cp_len); + atomic_subtract_int(&control->length, (int)cp_len); } else { copied_so_far += cp_len; } } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if ((out_flags & MSG_EOR) || (uio->uio_resid == 0)) { #else @@ -6430,26 +6803,18 @@ sctp_sorecvmsg(struct socket *so, #ifdef INVARIANTS panic("control->data not null at read eor?"); #else - SCTP_PRINTF("Strange, data left in the control buffer .. invarients would panic?\n"); + SCTP_PRINTF("Strange, data left in the control buffer .. invariants would panic?\n"); sctp_m_freem(control->data); control->data = NULL; #endif } done_with_control: - if (TAILQ_NEXT(control, next) == NULL) { - /* If we don't have a next we need a - * lock, if there is a next interrupt - * is filling ahead of us and we don't - * need a lock to remove this guy - * (which is the head of the queue). - */ - if (hold_rlock == 0) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + if (hold_rlock == 0) { + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; } TAILQ_REMOVE(&inp->read_queue, control, next); - /* Add back any hiddend data */ + /* Add back any hidden data */ if (control->held_length) { held_length = 0; control->held_length = 0; @@ -6462,6 +6827,12 @@ sctp_sorecvmsg(struct socket *so, no_rcv_needed = control->do_not_ref_stcb; sctp_free_remote_addr(control->whoFrom); control->data = NULL; +#ifdef INVARIANTS + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } +#endif sctp_free_a_readq(stcb, control); control = NULL; if ((freed_so_far >= rwnd_req) && @@ -6489,7 +6860,7 @@ sctp_sorecvmsg(struct socket *so, if (out_flags & MSG_EOR) { goto release; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) if ((uio->uio_resid == 0) || #else @@ -6499,7 +6870,7 @@ sctp_sorecvmsg(struct socket *so, if ((uio->uio_resid == 0) || #endif ((in_eeor_mode) && - (copied_so_far >= (uint32_t)max(so->so_rcv.sb_lowat, 1)))) { + (copied_so_far >= max(so->so_rcv.sb_lowat, 1)))) { goto release; } /* @@ -6511,10 +6882,11 @@ sctp_sorecvmsg(struct socket *so, goto release; } /* - * We need to wait for more data a few things: - We don't - * sbunlock() so we don't get someone else reading. - We - * must be sure to account for the case where what is added - * is NOT to our control when we wakeup. + * We need to wait for more data a few things: + * - We don't release the I/O lock so we don't get someone else + * reading. + * - We must be sure to account for the case where what is added + * is NOT to our control when we wakeup. */ /* Do we need to tell the transport a rwnd update might be @@ -6527,7 +6899,7 @@ sctp_sorecvmsg(struct socket *so, sctp_user_rcvd(stcb, &freed_so_far, hold_rlock, rwnd_req); } wait_some_more: -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Windows__) +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { goto release; } @@ -6552,21 +6924,25 @@ sctp_sorecvmsg(struct socket *so, (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE))) { goto release; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&so->so_rcv, 1); #endif - if (so->so_rcv.sb_cc <= control->held_length) { + if (SCTP_SBAVAIL(&so->so_rcv) <= control->held_length) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + error = sbwait(so, SO_RCV); +#else error = sbwait(&so->so_rcv); +#endif if (error) { -#if defined(__FreeBSD__) - goto release; -#else +#if defined(__APPLE__) && !defined(__Userspace__) goto release_unlocked; +#else + goto release; #endif } control->held_length = 0; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) error = sblock(&so->so_rcv, SBLOCKWAIT(in_flags)); #endif if (hold_sblock) { @@ -6589,8 +6965,8 @@ sctp_sorecvmsg(struct socket *so, } goto done_with_control; } - if (so->so_rcv.sb_cc > held_length) { - control->held_length = so->so_rcv.sb_cc; + if (SCTP_SBAVAIL(&so->so_rcv) > held_length) { + control->held_length = SCTP_SBAVAIL(&so->so_rcv); held_length = 0; } goto wait_some_more; @@ -6638,7 +7014,7 @@ sctp_sorecvmsg(struct socket *so, if (control->spec_flags & M_NOTIFICATION) { out_flags |= MSG_NOTIFICATION; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) uio->uio_resid = control->length; #else @@ -6655,7 +7031,7 @@ sctp_sorecvmsg(struct socket *so, control->do_not_ref_stcb?NULL:stcb, SCTP_LOG_SBFREE, SCTP_BUF_LEN(m)); } sctp_sbfree(control, stcb, &so->so_rcv, m); - freed_so_far += SCTP_BUF_LEN(m); + freed_so_far += (uint32_t)SCTP_BUF_LEN(m); freed_so_far += MSIZE; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) { sctp_sblog(&so->so_rcv, @@ -6675,7 +7051,7 @@ sctp_sorecvmsg(struct socket *so, SCTP_INP_READ_UNLOCK(inp); hold_rlock = 0; } -#if (defined(__FreeBSD__) && __FreeBSD_version < 700000) || defined(__Userspace__) +#if defined(__Userspace__) if (hold_sblock == 0) { SOCKBUF_LOCK(&so->so_rcv); hold_sblock = 1; @@ -6686,15 +7062,13 @@ sctp_sorecvmsg(struct socket *so, hold_sblock = 0; } #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) sbunlock(&so->so_rcv, 1); #endif -#if defined(__FreeBSD__) - sbunlock(&so->so_rcv); -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) + SOCK_IO_RECV_UNLOCK(so); sockbuf_lock = 0; -#endif #endif release_unlocked: @@ -6719,7 +7093,7 @@ sctp_sorecvmsg(struct socket *so, sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO))) { struct sctp_extrcvinfo *s_extra; s_extra = (struct sctp_extrcvinfo *)sinfo; - s_extra->sreinfo_next_flags = SCTP_NO_NEXT_MSG; + s_extra->serinfo_next_flags = SCTP_NO_NEXT_MSG; } if (hold_rlock == 1) { SCTP_INP_READ_UNLOCK(inp); @@ -6727,9 +7101,9 @@ sctp_sorecvmsg(struct socket *so, if (hold_sblock) { SOCKBUF_UNLOCK(&so->so_rcv); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 700000 +#if defined(__FreeBSD__) && !defined(__Userspace__) if (sockbuf_lock) { - sbunlock(&so->so_rcv); + SOCK_IO_RECV_UNLOCK(so); } #endif @@ -6748,39 +7122,39 @@ sctp_sorecvmsg(struct socket *so, goto stage_left; #endif } - atomic_add_int(&stcb->asoc.refcnt, -1); /* Save the value back for next time */ stcb->freed_by_sorcv_sincelast = freed_so_far; + atomic_subtract_int(&stcb->asoc.refcnt, 1); } if (SCTP_BASE_SYSCTL(sctp_logging_level) &SCTP_RECV_RWND_LOGGING_ENABLE) { if (stcb) { sctp_misc_ints(SCTP_SORECV_DONE, - freed_so_far, -#if defined(__APPLE__) + freed_so_far, +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - ((uio) ? (slen - uio->uio_resid) : slen), + ((uio) ? (slen - uio->uio_resid) : slen), #else - ((uio) ? (slen - uio_resid(uio)) : slen), + ((uio) ? (slen - uio_resid(uio)) : slen), #endif #else - ((uio) ? (slen - uio->uio_resid) : slen), + (uint32_t)((uio) ? (slen - uio->uio_resid) : slen), #endif - stcb->asoc.my_rwnd, - so->so_rcv.sb_cc); + stcb->asoc.my_rwnd, + SCTP_SBAVAIL(&so->so_rcv)); } else { sctp_misc_ints(SCTP_SORECV_DONE, - freed_so_far, -#if defined(__APPLE__) + freed_so_far, +#if defined(__APPLE__) && !defined(__Userspace__) #if defined(APPLE_LEOPARD) - ((uio) ? (slen - uio->uio_resid) : slen), + ((uio) ? (slen - uio->uio_resid) : slen), #else - ((uio) ? (slen - uio_resid(uio)) : slen), + ((uio) ? (slen - uio_resid(uio)) : slen), #endif #else - ((uio) ? (slen - uio->uio_resid) : slen), + (uint32_t)((uio) ? (slen - uio->uio_resid) : slen), #endif - 0, - so->so_rcv.sb_cc); + 0, + SCTP_SBAVAIL(&so->so_rcv)); } } stage_left: @@ -6790,7 +7164,6 @@ sctp_sorecvmsg(struct socket *so, return (error); } - #ifdef SCTP_MBUF_LOGGING struct mbuf * sctp_m_free(struct mbuf *m) @@ -6801,7 +7174,8 @@ sctp_m_free(struct mbuf *m) return (m_free(m)); } -void sctp_m_freem(struct mbuf *mb) +void +sctp_m_freem(struct mbuf *mb) { while (mb != NULL) mb = sctp_m_free(mb); @@ -6818,7 +7192,7 @@ sctp_dynamic_set_primary(struct sockaddr *sa, uint32_t vrf_id) struct sctp_ifa *ifa; struct sctp_laddr *wi; - ifa = sctp_find_ifa_by_addr(sa, vrf_id, 0); + ifa = sctp_find_ifa_by_addr(sa, vrf_id, SCTP_ADDR_NOT_LOCKED); if (ifa == NULL) { SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTPUTIL, EADDRNOTAVAIL); return (EADDRNOTAVAIL); @@ -6833,7 +7207,7 @@ sctp_dynamic_set_primary(struct sockaddr *sa, uint32_t vrf_id) } /* Now incr the count and int wi structure */ SCTP_INCR_LADDR_COUNT(); - bzero(wi, sizeof(*wi)); + memset(wi, 0, sizeof(*wi)); (void)SCTP_GETTIME_TIMEVAL(&wi->start_time); wi->ifa = ifa; wi->action = SCTP_SET_PRIM_ADDR; @@ -6846,18 +7220,17 @@ sctp_dynamic_set_primary(struct sockaddr *sa, uint32_t vrf_id) * newest first :-0 */ LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); - SCTP_WQ_ADDR_UNLOCK(); sctp_timer_start(SCTP_TIMER_TYPE_ADDR_WQ, (struct sctp_inpcb *)NULL, (struct sctp_tcb *)NULL, (struct sctp_nets *)NULL); + SCTP_WQ_ADDR_UNLOCK(); return (0); } #if defined(__Userspace__) /* no sctp_soreceive for __Userspace__ now */ #endif - #if !defined(__Userspace__) int sctp_soreceive( struct socket *so, @@ -6872,6 +7245,7 @@ sctp_soreceive( struct socket *so, struct sockaddr *from; struct sctp_extrcvinfo sinfo; int filling_sinfo = 1; + int flags; struct sctp_inpcb *inp; inp = (struct sctp_inpcb *)so->so_pcb; @@ -6898,21 +7272,30 @@ sctp_soreceive( struct socket *so, fromlen = 0; } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_LOCK(so, 1); #endif if (filling_sinfo) { memset(&sinfo, 0, sizeof(struct sctp_extrcvinfo)); } - error = sctp_sorecvmsg(so, uio, mp0, from, fromlen, flagsp, + if (flagsp != NULL) { + flags = *flagsp; + } else { + flags = 0; + } + error = sctp_sorecvmsg(so, uio, mp0, from, fromlen, &flags, (struct sctp_sndrcvinfo *)&sinfo, filling_sinfo); + if (flagsp != NULL) { + *flagsp = flags; + } if (controlp != NULL) { /* copy back the sinfo in a CMSG format */ - if (filling_sinfo) + if (filling_sinfo && ((flags & MSG_NOTIFICATION) == 0)) { *controlp = sctp_build_ctl_nchunk(inp, (struct sctp_sndrcvinfo *)&sinfo); - else + } else { *controlp = NULL; + } } if (psa) { /* copy back the address info */ @@ -6921,7 +7304,7 @@ sctp_soreceive( struct socket *so, #else if (from) { #endif -#if (defined(__FreeBSD__) && __FreeBSD_version > 500000) || defined(__Windows__) +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) *psa = sodupsockaddr(from, M_NOWAIT); #else *psa = dup_sockaddr(from, mp0 == 0); @@ -6930,14 +7313,13 @@ sctp_soreceive( struct socket *so, *psa = NULL; } } -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) SCTP_SOCKET_UNLOCK(so, 1); #endif return (error); } - -#if (defined(__FreeBSD__) && __FreeBSD_version < 603000) || defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) /* * General routine to allocate a hash table with control of memory flags. * is in 7.0 and beyond for sure :-) @@ -6984,7 +7366,6 @@ sctp_hashinit_flags(int elements, struct malloc_type *type, return (hashtbl); } #endif - #else /* __Userspace__ ifdef above sctp_soreceive */ /* * __Userspace__ Defining sctp_hashinit_flags() and sctp_hashdestroy() for userland. @@ -7035,7 +7416,6 @@ sctp_hashinit_flags(int elements, struct malloc_type *type, return (hashtbl); } - void sctp_hashdestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) { @@ -7050,7 +7430,6 @@ sctp_hashdestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) FREE(hashtbl, type); } - void sctp_hashfreedestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) { @@ -7075,10 +7454,7 @@ sctp_hashfreedestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) FREE(hashtbl, type); } - #endif - - int sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, int totaddr, int *error) @@ -7108,14 +7484,18 @@ sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, (sin->sin_addr.s_addr == INADDR_BROADCAST) || IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_7); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_7); *error = EINVAL; goto out_now; } - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + if (sctp_add_remote_addr(stcb, sa, NULL, stcb->asoc.port, + SCTP_DONOT_SETSCOPE, + SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_7); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_8); *error = ENOBUFS; goto out_now; } @@ -7129,14 +7509,18 @@ sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr) || IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_9); *error = EINVAL; goto out_now; } - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + if (sctp_add_remote_addr(stcb, sa, NULL, stcb->asoc.port, + SCTP_DONOT_SETSCOPE, + SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_10); *error = ENOBUFS; goto out_now; } @@ -7145,11 +7529,14 @@ sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, #endif #if defined(__Userspace__) case AF_CONN: - incr = sizeof(struct sockaddr_in6); - if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + incr = sizeof(struct sockaddr_conn); + if (sctp_add_remote_addr(stcb, sa, NULL, stcb->asoc.port, + SCTP_DONOT_SETSCOPE, + SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_11); *error = ENOBUFS; goto out_now; } @@ -7165,33 +7552,37 @@ sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, return (added); } -struct sctp_tcb * +int sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr, - int *totaddr, int *num_v4, int *num_v6, int *error, - int limit, int *bad_addr) + unsigned int totaddr, + unsigned int *num_v4, unsigned int *num_v6, + unsigned int limit) { struct sockaddr *sa; - struct sctp_tcb *stcb = NULL; - size_t incr, at, i; - at = incr = 0; - sa = addr; + struct sctp_tcb *stcb; + unsigned int incr, at, i; - *error = *num_v6 = *num_v4 = 0; + at = 0; + sa = addr; + *num_v6 = *num_v4 = 0; /* account and validate addresses */ - for (i = 0; i < (size_t)*totaddr; i++) { + if (totaddr == 0) { + return (EINVAL); + } + for (i = 0; i < totaddr; i++) { + if (at + sizeof(struct sockaddr) > limit) { + return (EINVAL); + } switch (sa->sa_family) { #ifdef INET case AF_INET: - (*num_v4) += 1; - incr = sizeof(struct sockaddr_in); + incr = (unsigned int)sizeof(struct sockaddr_in); #ifdef HAVE_SA_LEN if (sa->sa_len != incr) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - *error = EINVAL; - *bad_addr = 1; - return (NULL); + return (EINVAL); } #endif + (*num_v4) += 1; break; #endif #ifdef INET6 @@ -7199,50 +7590,39 @@ sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr, { struct sockaddr_in6 *sin6; + incr = (unsigned int)sizeof(struct sockaddr_in6); +#ifdef HAVE_SA_LEN + if (sa->sa_len != incr) { + return (EINVAL); + } +#endif sin6 = (struct sockaddr_in6 *)sa; if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { /* Must be non-mapped for connectx */ - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - *error = EINVAL; - *bad_addr = 1; - return (NULL); + return (EINVAL); } (*num_v6) += 1; - incr = sizeof(struct sockaddr_in6); -#ifdef HAVE_SA_LEN - if (sa->sa_len != incr) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - *error = EINVAL; - *bad_addr = 1; - return (NULL); - } -#endif break; } #endif default: - *totaddr = i; - /* we are done */ - break; + return (EINVAL); } - if (i == (size_t)*totaddr) { - break; + if ((at + incr) > limit) { + return (EINVAL); } SCTP_INP_INCR_REF(inp); stcb = sctp_findassociation_ep_addr(&inp, sa, NULL, NULL, NULL); if (stcb != NULL) { - /* Already have or am bring up an association */ - return (stcb); + SCTP_TCB_UNLOCK(stcb); + return (EALREADY); } else { SCTP_INP_DECR_REF(inp); } - if ((at + incr) > (size_t)limit) { - *totaddr = i; - break; - } + at += incr; sa = (struct sockaddr *)((caddr_t)sa + incr); } - return ((struct sctp_tcb *)NULL); + return (0); } /* @@ -7251,16 +7631,24 @@ sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr, */ void sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, - struct sockaddr *sa, sctp_assoc_t assoc_id, - uint32_t vrf_id, int *error, void *p) + struct sockaddr *sa, uint32_t vrf_id, int *error, + void *p) { - struct sockaddr *addr_touse; #if defined(INET) && defined(INET6) struct sockaddr_in sin; #endif +#ifdef INET6 + struct sockaddr_in6 *sin6; +#endif +#ifdef INET + struct sockaddr_in *sinp; +#endif + struct sockaddr *addr_to_use; + struct sctp_inpcb *lep; #ifdef SCTP_MVRF - int i, fnd = 0; + int i; #endif + uint16_t port; /* see if we're bound all already! */ if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { @@ -7272,23 +7660,18 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, /* Is the VRF one we have */ for (i = 0; i < inp->num_vrfs; i++) { if (vrf_id == inp->m_vrf_ids[i]) { - fnd = 1; break; } } - if (!fnd) { + if (i == inp->num_vrfs) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); *error = EINVAL; return; } #endif - addr_touse = sa; + switch (sa->sa_family) { #ifdef INET6 - if (sa->sa_family == AF_INET6) { -#ifdef INET - struct sockaddr_in6 *sin6; - -#endif + case AF_INET6: #ifdef HAVE_SA_LEN if (sa->sa_len != sizeof(struct sockaddr_in6)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); @@ -7302,8 +7685,9 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, *error = EINVAL; return; } + sin6 = (struct sockaddr_in6 *)sa; + port = sin6->sin6_port; #ifdef INET - sin6 = (struct sockaddr_in6 *)addr_touse; if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && SCTP_IPV6_V6ONLY(inp)) { @@ -7313,13 +7697,17 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, return; } in6_sin6_2_sin(&sin, sin6); - addr_touse = (struct sockaddr *)&sin; + addr_to_use = (struct sockaddr *)&sin; + } else { + addr_to_use = sa; } +#else + addr_to_use = sa; #endif - } + break; #endif #ifdef INET - if (sa->sa_family == AF_INET) { + case AF_INET: #ifdef HAVE_SA_LEN if (sa->sa_len != sizeof(struct sockaddr_in)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); @@ -7334,10 +7722,18 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, *error = EINVAL; return; } - } + sinp = (struct sockaddr_in *)sa; + port = sinp->sin_port; + addr_to_use = sa; + break; #endif + default: + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); + *error = EINVAL; + return; + } if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { -#if !(defined(__Panda__) || defined(__Windows__)) +#if !(defined(_WIN32) || defined(__Userspace__)) if (p == NULL) { /* Can't get proc for Net/Open BSD */ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); @@ -7345,58 +7741,25 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, return; } #endif - *error = sctp_inpcb_bind(so, addr_touse, NULL, p); + *error = sctp_inpcb_bind(so, addr_to_use, NULL, p); return; } - /* - * No locks required here since bind and mgmt_ep_sa - * all do their own locking. If we do something for - * the FIX: below we may need to lock in that case. - */ - if (assoc_id == 0) { + /* Validate the incoming port. */ + if ((port != 0) && (port != inp->sctp_lport)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); + *error = EINVAL; + return; + } + lep = sctp_pcb_findep(addr_to_use, 1, 0, vrf_id); + if (lep == NULL) { /* add the address */ - struct sctp_inpcb *lep; - struct sockaddr_in *lsin = (struct sockaddr_in *)addr_touse; - - /* validate the incoming port */ - if ((lsin->sin_port != 0) && - (lsin->sin_port != inp->sctp_lport)) { - SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - *error = EINVAL; - return; - } else { - /* user specified 0 port, set it to existing port */ - lsin->sin_port = inp->sctp_lport; - } - - lep = sctp_pcb_findep(addr_touse, 1, 0, vrf_id); - if (lep != NULL) { - /* - * We must decrement the refcount - * since we have the ep already and - * are binding. No remove going on - * here. - */ - SCTP_INP_DECR_REF(lep); - } - if (lep == inp) { - /* already bound to it.. ok */ - return; - } else if (lep == NULL) { - ((struct sockaddr_in *)addr_touse)->sin_port = 0; - *error = sctp_addr_mgmt_ep_sa(inp, addr_touse, - SCTP_ADD_IP_ADDRESS, - vrf_id, NULL); - } else { + *error = sctp_addr_mgmt_ep_sa(inp, addr_to_use, + SCTP_ADD_IP_ADDRESS, vrf_id); + } else { + if (lep != inp) { *error = EADDRINUSE; } - if (*error) - return; - } else { - /* - * FIX: decide whether we allow assoc based - * bindx - */ + SCTP_INP_DECR_REF(lep); } } @@ -7406,15 +7769,15 @@ sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, */ void sctp_bindx_delete_address(struct sctp_inpcb *inp, - struct sockaddr *sa, sctp_assoc_t assoc_id, - uint32_t vrf_id, int *error) + struct sockaddr *sa, uint32_t vrf_id, int *error) { - struct sockaddr *addr_touse; + struct sockaddr *addr_to_use; #if defined(INET) && defined(INET6) + struct sockaddr_in6 *sin6; struct sockaddr_in sin; #endif #ifdef SCTP_MVRF - int i, fnd = 0; + int i; #endif /* see if we're bound all already! */ @@ -7427,23 +7790,18 @@ sctp_bindx_delete_address(struct sctp_inpcb *inp, /* Is the VRF one we have */ for (i = 0; i < inp->num_vrfs; i++) { if (vrf_id == inp->m_vrf_ids[i]) { - fnd = 1; break; } } - if (!fnd) { + if (i == inp->num_vrfs) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); *error = EINVAL; return; } #endif - addr_touse = sa; + switch (sa->sa_family) { #ifdef INET6 - if (sa->sa_family == AF_INET6) { -#ifdef INET - struct sockaddr_in6 *sin6; -#endif - + case AF_INET6: #ifdef HAVE_SA_LEN if (sa->sa_len != sizeof(struct sockaddr_in6)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); @@ -7458,7 +7816,7 @@ sctp_bindx_delete_address(struct sctp_inpcb *inp, return; } #ifdef INET - sin6 = (struct sockaddr_in6 *)addr_touse; + sin6 = (struct sockaddr_in6 *)sa; if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { if ((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) && SCTP_IPV6_V6ONLY(inp)) { @@ -7468,13 +7826,17 @@ sctp_bindx_delete_address(struct sctp_inpcb *inp, return; } in6_sin6_2_sin(&sin, sin6); - addr_touse = (struct sockaddr *)&sin; + addr_to_use = (struct sockaddr *)&sin; + } else { + addr_to_use = sa; } +#else + addr_to_use = sa; #endif - } + break; #endif #ifdef INET - if (sa->sa_family == AF_INET) { + case AF_INET: #ifdef HAVE_SA_LEN if (sa->sa_len != sizeof(struct sockaddr_in)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); @@ -7489,24 +7851,17 @@ sctp_bindx_delete_address(struct sctp_inpcb *inp, *error = EINVAL; return; } - } + addr_to_use = sa; + break; #endif - /* - * No lock required mgmt_ep_sa does its own locking. - * If the FIX: below is ever changed we may need to - * lock before calling association level binding. - */ - if (assoc_id == 0) { - /* delete the address */ - *error = sctp_addr_mgmt_ep_sa(inp, addr_touse, - SCTP_DEL_IP_ADDRESS, - vrf_id, NULL); - } else { - /* - * FIX: decide whether we allow assoc based - * bindx - */ + default: + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL); + *error = EINVAL; + return; } + /* No lock required mgmt_ep_sa does its own locking. */ + *error = sctp_addr_mgmt_ep_sa(inp, addr_to_use, SCTP_DEL_IP_ADDRESS, + vrf_id); } /* @@ -7520,7 +7875,7 @@ sctp_local_addr_count(struct sctp_tcb *stcb) #if defined(INET) int ipv4_local_scope, ipv4_addr_legal; #endif -#if defined (INET6) +#if defined(INET6) int local_scope, site_scope, ipv6_addr_legal; #endif #if defined(__Userspace__) @@ -7576,7 +7931,7 @@ sctp_local_addr_count(struct sctp_tcb *stcb) /* skip unspecified addrs */ continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip4(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { continue; @@ -7605,7 +7960,7 @@ sctp_local_addr_count(struct sctp_tcb *stcb) if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { continue; } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) if (prison_check_ip6(stcb->sctp_ep->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { continue; @@ -7687,7 +8042,7 @@ sctp_log_trace(uint32_t subsys, const char *str SCTP_UNUSED, uint32_t a, uint32_ { uint32_t saveindex, newindex; -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) if (SCTP_BASE_SYSCTL(sctp_log) == NULL) { return; } @@ -7734,10 +8089,9 @@ sctp_log_trace(uint32_t subsys, const char *str SCTP_UNUSED, uint32_t a, uint32_ } #endif -#if defined(__FreeBSD__) -#if __FreeBSD_version >= 800044 -static void -sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *ignored, +#if defined(__FreeBSD__) && !defined(__Userspace__) +static bool +sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *inp, const struct sockaddr *sa SCTP_UNUSED, void *ctx SCTP_UNUSED) { struct ip *iph; @@ -7783,15 +8137,23 @@ sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *ignored, for (last = m; last->m_next; last = last->m_next); last->m_next = sp; m->m_pkthdr.len += sp->m_pkthdr.len; + /* + * The CSUM_DATA_VALID flags indicates that the HW checked the + * UDP checksum and it was valid. + * Since CSUM_DATA_VALID == CSUM_SCTP_VALID this would imply that + * the HW also verified the SCTP checksum. Therefore, clear the bit. + */ + SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, + "sctp_recv_udp_tunneled_packet(): Packet of length %d received on %s with csum_flags 0x%b.\n", + m->m_pkthdr.len, + if_name(m->m_pkthdr.rcvif), + (int)m->m_pkthdr.csum_flags, CSUM_BITS); + m->m_pkthdr.csum_flags &= ~CSUM_DATA_VALID; iph = mtod(m, struct ip *); switch (iph->ip_v) { #ifdef INET case IPVERSION: -#if __FreeBSD_version >= 1000000 iph->ip_len = htons(ntohs(iph->ip_len) - sizeof(struct udphdr)); -#else - iph->ip_len -= sizeof(struct udphdr); -#endif sctp_input_with_port(m, off, port); break; #endif @@ -7806,9 +8168,312 @@ sctp_recv_udp_tunneled_packet(struct mbuf *m, int off, struct inpcb *ignored, goto out; break; } - return; + return (true); out: m_freem(m); + + return (true); +} + +#ifdef INET +static void +sctp_recv_icmp_tunneled_packet(udp_tun_icmp_param_t param) +{ + struct icmp *icmp = param.icmp; + struct ip *outer_ip, *inner_ip; + struct sctphdr *sh; + struct udphdr *udp; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; + struct sctp_init_chunk *ch; + struct sockaddr_in src, dst; + uint8_t type, code; + + inner_ip = &icmp->icmp_ip; + outer_ip = (struct ip *)((caddr_t)icmp - sizeof(struct ip)); + if (ntohs(outer_ip->ip_len) < + sizeof(struct ip) + 8 + (inner_ip->ip_hl << 2) + sizeof(struct udphdr) + 8) { + return; + } + udp = (struct udphdr *)((caddr_t)inner_ip + (inner_ip->ip_hl << 2)); + sh = (struct sctphdr *)(udp + 1); + memset(&src, 0, sizeof(struct sockaddr_in)); + src.sin_family = AF_INET; +#ifdef HAVE_SIN_LEN + src.sin_len = sizeof(struct sockaddr_in); +#endif + src.sin_port = sh->src_port; + src.sin_addr = inner_ip->ip_src; + memset(&dst, 0, sizeof(struct sockaddr_in)); + dst.sin_family = AF_INET; +#ifdef HAVE_SIN_LEN + dst.sin_len = sizeof(struct sockaddr_in); +#endif + dst.sin_port = sh->dest_port; + dst.sin_addr = inner_ip->ip_dst; + /* + * 'dst' holds the dest of the packet that failed to be sent. + * 'src' holds our local endpoint address. Thus we reverse + * the dst and the src in the lookup. + */ + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, + SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the UDP port numbers */ + if ((udp->uh_dport != net->port) || + (udp->uh_sport != htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)))) { + SCTP_TCB_UNLOCK(stcb); + return; + } + /* Check the verification tag */ + if (ntohl(sh->v_tag) != 0) { + /* + * This must be the verification tag used + * for sending out packets. We don't + * consider packets reflecting the + * verification tag. + */ + if (ntohl(sh->v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + if (ntohs(outer_ip->ip_len) >= + sizeof(struct ip) + + 8 + (inner_ip->ip_hl << 2) + 8 + 20) { + /* + * In this case we can check if we + * got an INIT chunk and if the + * initiate tag matches. + */ + ch = (struct sctp_init_chunk *)(sh + 1); + if ((ch->ch.chunk_type != SCTP_INITIATION) || + (ntohl(ch->init.initiate_tag) != stcb->asoc.my_vtag)) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + SCTP_TCB_UNLOCK(stcb); + return; + } + } + type = icmp->icmp_type; + code = icmp->icmp_code; + if ((type == ICMP_UNREACH) && + (code == ICMP_UNREACH_PORT)) { + code = ICMP_UNREACH_PROTOCOL; + } + sctp_notify(inp, stcb, net, type, code, + ntohs(inner_ip->ip_len), + (uint32_t)ntohs(icmp->icmp_nextmtu)); +#if defined(__Userspace__) + if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + struct socket *upcall_socket; + + upcall_socket = stcb->sctp_socket; + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + if ((upcall_socket->so_upcall != NULL) && + (upcall_socket->so_error != 0)) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); + } +#endif + } else { + if ((stcb == NULL) && (inp != NULL)) { + /* reduce ref-count */ + SCTP_INP_WLOCK(inp); + SCTP_INP_DECR_REF(inp); + SCTP_INP_WUNLOCK(inp); + } + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } + } + return; +} +#endif + +#ifdef INET6 +static void +sctp_recv_icmp6_tunneled_packet(udp_tun_icmp_param_t param) +{ + struct ip6ctlparam *ip6cp = param.ip6cp; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; + struct sctphdr sh; + struct udphdr udp; + struct sockaddr_in6 src, dst; + uint8_t type, code; + + /* + * XXX: We assume that when IPV6 is non NULL, M and OFF are + * valid. + */ + if (ip6cp->ip6c_m == NULL) { + return; + } + /* Check if we can safely examine the ports and the + * verification tag of the SCTP common header. + */ + if (ip6cp->ip6c_m->m_pkthdr.len < + ip6cp->ip6c_off + sizeof(struct udphdr)+ offsetof(struct sctphdr, checksum)) { + return; + } + /* Copy out the UDP header. */ + memset(&udp, 0, sizeof(struct udphdr)); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off, + sizeof(struct udphdr), + (caddr_t)&udp); + /* Copy out the port numbers and the verification tag. */ + memset(&sh, 0, sizeof(struct sctphdr)); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off + sizeof(struct udphdr), + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint32_t), + (caddr_t)&sh); + memset(&src, 0, sizeof(struct sockaddr_in6)); + src.sin6_family = AF_INET6; +#ifdef HAVE_SIN6_LEN + src.sin6_len = sizeof(struct sockaddr_in6); +#endif + src.sin6_port = sh.src_port; + src.sin6_addr = ip6cp->ip6c_ip6->ip6_src; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (in6_setscope(&src.sin6_addr, ip6cp->ip6c_m->m_pkthdr.rcvif, NULL) != 0) { + return; + } +#endif + memset(&dst, 0, sizeof(struct sockaddr_in6)); + dst.sin6_family = AF_INET6; +#ifdef HAVE_SIN6_LEN + dst.sin6_len = sizeof(struct sockaddr_in6); +#endif + dst.sin6_port = sh.dest_port; + dst.sin6_addr = ip6cp->ip6c_ip6->ip6_dst; +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (in6_setscope(&dst.sin6_addr, ip6cp->ip6c_m->m_pkthdr.rcvif, NULL) != 0) { + return; + } +#endif + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the UDP port numbers */ + if ((udp.uh_dport != net->port) || + (udp.uh_sport != htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)))) { + SCTP_TCB_UNLOCK(stcb); + return; + } + /* Check the verification tag */ + if (ntohl(sh.v_tag) != 0) { + /* + * This must be the verification tag used for + * sending out packets. We don't consider + * packets reflecting the verification tag. + */ + if (ntohl(sh.v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { +#if defined(__FreeBSD__) && !defined(__Userspace__) + if (ip6cp->ip6c_m->m_pkthdr.len >= + ip6cp->ip6c_off + sizeof(struct udphdr) + + sizeof(struct sctphdr) + + sizeof(struct sctp_chunkhdr) + + offsetof(struct sctp_init, a_rwnd)) { + /* + * In this case we can check if we + * got an INIT chunk and if the + * initiate tag matches. + */ + uint32_t initiate_tag; + uint8_t chunk_type; + + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off + + sizeof(struct udphdr) + + sizeof(struct sctphdr), + sizeof(uint8_t), + (caddr_t)&chunk_type); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off + + sizeof(struct udphdr) + + sizeof(struct sctphdr) + + sizeof(struct sctp_chunkhdr), + sizeof(uint32_t), + (caddr_t)&initiate_tag); + if ((chunk_type != SCTP_INITIATION) || + (ntohl(initiate_tag) != stcb->asoc.my_vtag)) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + SCTP_TCB_UNLOCK(stcb); + return; + } +#else + SCTP_TCB_UNLOCK(stcb); + return; +#endif + } + type = ip6cp->ip6c_icmp6->icmp6_type; + code = ip6cp->ip6c_icmp6->icmp6_code; + if ((type == ICMP6_DST_UNREACH) && + (code == ICMP6_DST_UNREACH_NOPORT)) { + type = ICMP6_PARAM_PROB; + code = ICMP6_PARAMPROB_NEXTHEADER; + } + sctp6_notify(inp, stcb, net, type, code, + ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); +#if defined(__Userspace__) + if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + struct socket *upcall_socket; + + upcall_socket = stcb->sctp_socket; + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + if ((upcall_socket->so_upcall != NULL) && + (upcall_socket->so_error != 0)) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); + } +#endif + } else { + if ((stcb == NULL) && (inp != NULL)) { + /* reduce inp's ref-count */ + SCTP_INP_WLOCK(inp); + SCTP_INP_DECR_REF(inp); + SCTP_INP_WUNLOCK(inp); + } + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } + } } #endif @@ -7816,7 +8481,7 @@ void sctp_over_udp_stop(void) { /* - * This function assumes sysctl caller holds sctp_sysctl_info_lock() for writting! + * This function assumes sysctl caller holds sctp_sysctl_info_lock() for writing! */ #ifdef INET if (SCTP_BASE_INFO(udp4_tun_socket) != NULL) { @@ -7835,7 +8500,6 @@ sctp_over_udp_stop(void) int sctp_over_udp_start(void) { -#if __FreeBSD_version >= 800044 uint16_t port; int ret; #ifdef INET @@ -7845,7 +8509,7 @@ sctp_over_udp_start(void) struct sockaddr_in6 sin6; #endif /* - * This function assumes sysctl caller holds sctp_sysctl_info_lock() for writting! + * This function assumes sysctl caller holds sctp_sysctl_info_lock() for writing! */ port = SCTP_BASE_SYSCTL(sctp_udp_tunneling_port); if (ntohs(port) == 0) { @@ -7873,7 +8537,9 @@ sctp_over_udp_start(void) } /* Call the special UDP hook. */ if ((ret = udp_set_kernel_tunneling(SCTP_BASE_INFO(udp4_tun_socket), - sctp_recv_udp_tunneled_packet, NULL))) { + sctp_recv_udp_tunneled_packet, + sctp_recv_icmp_tunneled_packet, + NULL))) { sctp_over_udp_stop(); return (ret); } @@ -7897,7 +8563,9 @@ sctp_over_udp_start(void) } /* Call the special UDP hook. */ if ((ret = udp_set_kernel_tunneling(SCTP_BASE_INFO(udp6_tun_socket), - sctp_recv_udp_tunneled_packet, NULL))) { + sctp_recv_udp_tunneled_packet, + sctp_recv_icmp6_tunneled_packet, + NULL))) { sctp_over_udp_stop(); return (ret); } @@ -7913,8 +8581,138 @@ sctp_over_udp_start(void) } #endif return (0); -#else - return (ENOTSUP); +} +#endif + +/* + * sctp_min_mtu ()returns the minimum of all non-zero arguments. + * If all arguments are zero, zero is returned. + */ +uint32_t +sctp_min_mtu(uint32_t mtu1, uint32_t mtu2, uint32_t mtu3) +{ + if (mtu1 > 0) { + if (mtu2 > 0) { + if (mtu3 > 0) { + return (min(mtu1, min(mtu2, mtu3))); + } else { + return (min(mtu1, mtu2)); + } + } else { + if (mtu3 > 0) { + return (min(mtu1, mtu3)); + } else { + return (mtu1); + } + } + } else { + if (mtu2 > 0) { + if (mtu3 > 0) { + return (min(mtu2, mtu3)); + } else { + return (mtu2); + } + } else { + return (mtu3); + } + } +} + +#if defined(__FreeBSD__) && !defined(__Userspace__) +void +sctp_hc_set_mtu(union sctp_sockstore *addr, uint16_t fibnum, uint32_t mtu) +{ + struct in_conninfo inc; + + memset(&inc, 0, sizeof(struct in_conninfo)); + inc.inc_fibnum = fibnum; + switch (addr->sa.sa_family) { +#ifdef INET + case AF_INET: + inc.inc_faddr = addr->sin.sin_addr; + break; +#endif +#ifdef INET6 + case AF_INET6: + inc.inc_flags |= INC_ISIPV6; + inc.inc6_faddr = addr->sin6.sin6_addr; + break; +#endif + default: + return; + } + tcp_hc_updatemtu(&inc, (u_long)mtu); +} + +uint32_t +sctp_hc_get_mtu(union sctp_sockstore *addr, uint16_t fibnum) +{ + struct in_conninfo inc; + + memset(&inc, 0, sizeof(struct in_conninfo)); + inc.inc_fibnum = fibnum; + switch (addr->sa.sa_family) { +#ifdef INET + case AF_INET: + inc.inc_faddr = addr->sin.sin_addr; + break; +#endif +#ifdef INET6 + case AF_INET6: + inc.inc_flags |= INC_ISIPV6; + inc.inc6_faddr = addr->sin6.sin6_addr; + break; +#endif + default: + return (0); + } + return ((uint32_t)tcp_hc_getmtu(&inc)); +} +#endif + +void +sctp_set_state(struct sctp_tcb *stcb, int new_state) +{ +#if defined(KDTRACE_HOOKS) + int old_state = stcb->asoc.state; +#endif + + KASSERT((new_state & ~SCTP_STATE_MASK) == 0, + ("sctp_set_state: Can't set substate (new_state = %x)", + new_state)); + stcb->asoc.state = (stcb->asoc.state & ~SCTP_STATE_MASK) | new_state; + if ((new_state == SCTP_STATE_SHUTDOWN_RECEIVED) || + (new_state == SCTP_STATE_SHUTDOWN_SENT) || + (new_state == SCTP_STATE_SHUTDOWN_ACK_SENT)) { + SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING); + } +#if defined(KDTRACE_HOOKS) + if (((old_state & SCTP_STATE_MASK) != new_state) && + !(((old_state & SCTP_STATE_MASK) == SCTP_STATE_EMPTY) && + (new_state == SCTP_STATE_INUSE))) { + SCTP_PROBE6(state__change, NULL, stcb, NULL, stcb, NULL, old_state); + } #endif } + +void +sctp_add_substate(struct sctp_tcb *stcb, int substate) +{ +#if defined(KDTRACE_HOOKS) + int old_state = stcb->asoc.state; +#endif + + KASSERT((substate & SCTP_STATE_MASK) == 0, + ("sctp_add_substate: Can't set state (substate = %x)", + substate)); + stcb->asoc.state |= substate; +#if defined(KDTRACE_HOOKS) + if (((substate & SCTP_STATE_ABOUT_TO_BE_FREED) && + ((old_state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0)) || + ((substate & SCTP_STATE_SHUTDOWN_PENDING) && + ((old_state & SCTP_STATE_SHUTDOWN_PENDING) == 0))) { + SCTP_PROBE6(state__change, NULL, stcb, NULL, stcb, NULL, old_state); + } #endif +} + diff --git a/netwerk/sctp/src/netinet/sctputil.h b/netwerk/sctp/src/netinet/sctputil.h index cca915bb45..74140b99d2 100755 --- a/netwerk/sctp/src/netinet/sctputil.h +++ b/netwerk/sctp/src/netinet/sctputil.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet/sctputil.h 276914 2015-01-10 20:49:57Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET_SCTP_UTIL_H_ @@ -55,17 +57,19 @@ void sctp_m_freem(struct mbuf *m); #define sctp_m_freem m_freem #endif -#if defined(SCTP_LOCAL_TRACE_BUF) || defined(__APPLE__) +#if defined(SCTP_LOCAL_TRACE_BUF) void sctp_log_trace(uint32_t fr, const char *str SCTP_UNUSED, uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t e, uint32_t f); #endif #define sctp_get_associd(stcb) ((sctp_assoc_t)stcb->asoc.assoc_id) - /* * Function prototypes */ +int32_t +sctp_map_assoc_state(int); + uint32_t sctp_get_ifa_hash_val(struct sockaddr *addr); @@ -79,7 +83,7 @@ uint32_t sctp_select_initial_TSN(struct sctp_pcb *); uint32_t sctp_select_a_tag(struct sctp_inpcb *, uint16_t lport, uint16_t rport, int); -int sctp_init_asoc(struct sctp_inpcb *, struct sctp_tcb *, uint32_t, uint32_t); +int sctp_init_asoc(struct sctp_inpcb *, struct sctp_tcb *, uint32_t, uint32_t, uint32_t, uint16_t); void sctp_fill_random_store(struct sctp_pcb *); @@ -89,6 +93,14 @@ sctp_notify_stream_reset_add(struct sctp_tcb *stcb, uint16_t numberin, void sctp_notify_stream_reset_tsn(struct sctp_tcb *stcb, uint32_t sending_tsn, uint32_t recv_tsn, int flag); +/* + * NOTE: sctp_timer_start() will increment the reference count of any relevant + * structure the timer is referencing, in order to prevent a race condition + * between the timer executing and the structure being freed. + * + * When the timer fires or sctp_timer_stop() is called, these references are + * removed. + */ void sctp_timer_start(int, struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *); @@ -101,8 +113,20 @@ int sctp_dynamic_set_primary(struct sockaddr *sa, uint32_t vrf_id); void -sctp_mtu_size_reset(struct sctp_inpcb *, struct sctp_association *, uint32_t); +sctp_wakeup_the_read_socket(struct sctp_inpcb *inp, struct sctp_tcb *stcb, + int so_locked +#if !(defined(__APPLE__) && !defined(__Userspace__)) + SCTP_UNUSED +#endif +); +#if defined(__Userspace__) +void sctp_invoke_recv_callback(struct sctp_inpcb *, + struct sctp_tcb *, + struct sctp_queued_to_read *, + int); + +#endif void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, @@ -110,21 +134,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, struct sockbuf *sb, int end, int inpread_locked, - int so_locked -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); - -int -sctp_append_to_readq(struct sctp_inpcb *inp, - struct sctp_tcb *stcb, - struct sctp_queued_to_read *control, - struct mbuf *m, - int end, - int new_cumack, - struct sockbuf *sb); - + int so_locked); void sctp_iterator_worker(void); @@ -134,9 +144,9 @@ uint32_t sctp_get_next_mtu(uint32_t); void sctp_timeout_handler(void *); -uint32_t +int sctp_calculate_rto(struct sctp_tcb *, struct sctp_association *, - struct sctp_nets *, struct timeval *, int, int); + struct sctp_nets *, struct timeval *, int); uint32_t sctp_calculate_len(struct mbuf *); @@ -152,70 +162,55 @@ sctp_add_pad_tombuf(struct mbuf *, int); struct mbuf * sctp_pad_lastmbuf(struct mbuf *, int, struct mbuf *); -void sctp_ulp_notify(uint32_t, struct sctp_tcb *, uint32_t, void *, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); +void sctp_ulp_notify(uint32_t, struct sctp_tcb *, uint32_t, void *, int); void sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp, struct sctp_tcb *stcb, int waitflags); - void sctp_stop_timers_for_shutdown(struct sctp_tcb *); -void sctp_report_all_outbound(struct sctp_tcb *, uint16_t, int, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); +/* Stop all timers for association and remote addresses. */ +void sctp_stop_association_timers(struct sctp_tcb *, bool); + +void sctp_report_all_outbound(struct sctp_tcb *, uint16_t, int); int sctp_expand_mapping_array(struct sctp_association *, uint32_t); -void sctp_abort_notification(struct sctp_tcb *, uint8_t, uint16_t, - struct sctp_abort_chunk *, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif - ); +void sctp_abort_notification(struct sctp_tcb *, bool, bool, uint16_t, + struct sctp_abort_chunk *, int); /* We abort responding to an IP packet for some reason */ void sctp_abort_association(struct sctp_inpcb *, struct sctp_tcb *, struct mbuf *, int, struct sockaddr *, struct sockaddr *, struct sctphdr *, struct mbuf *, -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) && !defined(__Userspace__) uint8_t, uint32_t, #endif uint32_t, uint16_t); - /* We choose to abort via user input */ void sctp_abort_an_association(struct sctp_inpcb *, struct sctp_tcb *, - struct mbuf *, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -); + struct mbuf *, bool, int); void sctp_handle_ootb(struct mbuf *, int, int, struct sockaddr *, struct sockaddr *, struct sctphdr *, struct sctp_inpcb *, struct mbuf *, -#if defined(__FreeBSD__) - uint8_t, uint32_t, +#if defined(__FreeBSD__) && !defined(__Userspace__) + uint8_t, uint32_t, uint16_t, #endif uint32_t, uint16_t); int sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr, int totaddr, int *error); -struct sctp_tcb * -sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr, - int *totaddr, int *num_v4, int *num_v6, int *error, int limit, int *bad_addr); +int +sctp_connectx_helper_find(struct sctp_inpcb *, struct sockaddr *, + unsigned int, unsigned int *, unsigned int *, unsigned int); int sctp_is_there_an_abort_here(struct mbuf *, int, uint32_t *); #ifdef INET6 @@ -266,52 +261,23 @@ void sctp_print_address(struct sockaddr *); int sctp_release_pr_sctp_chunk(struct sctp_tcb *, struct sctp_tmit_chunk *, - uint8_t, int -#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) - SCTP_UNUSED -#endif -); + uint8_t, int); struct mbuf *sctp_generate_cause(uint16_t, char *); struct mbuf *sctp_generate_no_user_data_cause(uint32_t); void sctp_bindx_add_address(struct socket *so, struct sctp_inpcb *inp, - struct sockaddr *sa, sctp_assoc_t assoc_id, - uint32_t vrf_id, int *error, void *p); -void sctp_bindx_delete_address(struct sctp_inpcb *inp, - struct sockaddr *sa, sctp_assoc_t assoc_id, - uint32_t vrf_id, int *error); + struct sockaddr *sa, uint32_t vrf_id, int *error, + void *p); +void sctp_bindx_delete_address(struct sctp_inpcb *inp, struct sockaddr *sa, + uint32_t vrf_id, int *error); int sctp_local_addr_count(struct sctp_tcb *stcb); -#ifdef SCTP_MBCNT_LOGGING void sctp_free_bufspace(struct sctp_tcb *, struct sctp_association *, struct sctp_tmit_chunk *, int); -#else -#define sctp_free_bufspace(stcb, asoc, tp1, chk_cnt) \ -do { \ - if (tp1->data != NULL) { \ - atomic_subtract_int(&((asoc)->chunks_on_out_queue), chk_cnt); \ - if ((asoc)->total_output_queue_size >= tp1->book_size) { \ - atomic_subtract_int(&((asoc)->total_output_queue_size), tp1->book_size); \ - } else { \ - (asoc)->total_output_queue_size = 0; \ - } \ - if (stcb->sctp_socket && ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || \ - (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { \ - if (stcb->sctp_socket->so_snd.sb_cc >= tp1->book_size) { \ - atomic_subtract_int(&((stcb)->sctp_socket->so_snd.sb_cc), tp1->book_size); \ - } else { \ - stcb->sctp_socket->so_snd.sb_cc = 0; \ - } \ - } \ - } \ -} while (0) - -#endif - #define sctp_free_spbufspace(stcb, asoc, sp) \ do { \ if (sp->data != NULL) { \ @@ -342,11 +308,11 @@ do { \ } while (0) /* functions to start/stop udp tunneling */ -#if defined(__APPLE__) || defined(__FreeBSD__) +#if (defined(__APPLE__) || defined(__FreeBSD__)) && !defined(__Userspace__) void sctp_over_udp_stop(void); int sctp_over_udp_start(void); #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) void sctp_over_udp_restart(void); #endif @@ -368,7 +334,6 @@ void sctp_log_strm_del_alt(struct sctp_tcb *stcb, uint32_t, uint16_t, uint16_t, void sctp_log_nagle_event(struct sctp_tcb *stcb, int action); - #ifdef SCTP_MBUF_LOGGING void sctp_log_mb(struct mbuf *m, int from); @@ -392,7 +357,7 @@ void sctp_log_closing(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int16_t loc void sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from); void sctp_log_maxburst(struct sctp_tcb *stcb, struct sctp_nets *, int, int, uint8_t); -void sctp_log_block(uint8_t, struct sctp_association *, int); +void sctp_log_block(uint8_t, struct sctp_association *, ssize_t); void sctp_log_rwnd(uint8_t, uint32_t, uint32_t, uint32_t); void sctp_log_rwnd_set(uint8_t, uint32_t, uint32_t, uint32_t, uint32_t); int sctp_fill_stat_log(void *, size_t *); @@ -402,7 +367,6 @@ void sctp_log_map(uint32_t, uint32_t, uint32_t, int); void sctp_print_mapping_array(struct sctp_association *asoc); void sctp_clr_stat_log(void); - #ifdef SCTP_AUDITING_ENABLED void sctp_auditing(int, struct sctp_inpcb *, struct sctp_tcb *, @@ -410,5 +374,17 @@ sctp_auditing(int, struct sctp_inpcb *, struct sctp_tcb *, void sctp_audit_log(uint8_t, uint8_t); #endif +uint32_t sctp_min_mtu(uint32_t, uint32_t, uint32_t); +#if defined(__FreeBSD__) && !defined(__Userspace__) +void sctp_hc_set_mtu(union sctp_sockstore *, uint16_t, uint32_t); +uint32_t sctp_hc_get_mtu(union sctp_sockstore *, uint16_t); +#endif +void sctp_set_state(struct sctp_tcb *, int); +void sctp_add_substate(struct sctp_tcb *, int); +uint32_t sctp_ticks_to_msecs(uint32_t); +uint32_t sctp_msecs_to_ticks(uint32_t); +uint32_t sctp_ticks_to_secs(uint32_t); +uint32_t sctp_secs_to_ticks(uint32_t); + #endif /* _KERNEL */ #endif diff --git a/netwerk/sctp/src/netinet6/sctp6_usrreq.c b/netwerk/sctp/src/netinet6/sctp6_usrreq.c index 4adb671966..a4606e51a8 100644 --- a/netwerk/sctp/src/netinet6/sctp6_usrreq.c +++ b/netwerk/sctp/src/netinet6/sctp6_usrreq.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,22 +32,20 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet6/sctp6_usrreq.c 276914 2015-01-10 20:49:57Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #include #ifdef INET6 -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include #endif #include #include #include -#ifdef INET6 #include -#endif #include #include #include @@ -58,24 +58,11 @@ __FBSDID("$FreeBSD: head/sys/netinet6/sctp6_usrreq.c 276914 2015-01-10 20:49:57Z #include #include #include -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) +#include #include #endif - -#if defined(__APPLE__) -#define APPLE_FILE_NO 9 -#endif -#ifdef IPSEC -#include -#ifdef INET6 -#include -#endif /* INET6 */ -#endif /* IPSEC */ - -#if !defined(__Userspace__) -extern struct protosw inetsw[]; -#endif -#if defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int ip6_v6only=0; #endif #if defined(__Userspace__) @@ -83,16 +70,16 @@ int ip6_v6only=0; void in6_sin6_2_sin(struct sockaddr_in *sin, struct sockaddr_in6 *sin6) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) uint32_t temp; #endif - bzero(sin, sizeof(*sin)); + memset(sin, 0, sizeof(*sin)); #ifdef HAVE_SIN_LEN sin->sin_len = sizeof(struct sockaddr_in); #endif sin->sin_family = AF_INET; sin->sin_port = sin6->sin6_port; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) temp = sin6->sin6_addr.s6_addr16[7]; temp = temp << 16; temp = temp | sin6->sin6_addr.s6_addr16[6]; @@ -115,23 +102,23 @@ in6_sin6_2_sin_in_sock(struct sockaddr *nam) } void -in6_sin_2_v4mapsin6(struct sockaddr_in *sin, struct sockaddr_in6 *sin6) +in6_sin_2_v4mapsin6(const struct sockaddr_in *sin, struct sockaddr_in6 *sin6) { - bzero(sin6, sizeof(struct sockaddr_in6)); - sin6->sin6_family = AF_INET6; + memset(sin6, 0, sizeof(struct sockaddr_in6)); + sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN sin6->sin6_len = sizeof(struct sockaddr_in6); #endif sin6->sin6_port = sin->sin_port; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) ((uint32_t *)&sin6->sin6_addr)[0] = 0; ((uint32_t *)&sin6->sin6_addr)[1] = 0; ((uint32_t *)&sin6->sin6_addr)[2] = htonl(0xffff); ((uint32_t *)&sin6->sin6_addr)[3] = sin->sin_addr.s_addr; #else - sin6->sin6_addr.s6_addr32[0] = 0; + sin6->sin6_addr.s6_addr32[0] = 0; sin6->sin6_addr.s6_addr32[1] = 0; - sin6->sin6_addr.s6_addr32[2] = htonl(0xffff); + sin6->sin6_addr.s6_addr32[2] = htonl(0xffff); sin6->sin6_addr.s6_addr32[3] = sin->sin_addr.s_addr; #endif } @@ -142,8 +129,6 @@ in6_sin_2_v4mapsin6(struct sockaddr_in *sin, struct sockaddr_in6 *sin6) int #if defined(__APPLE__) || defined(__FreeBSD__) sctp6_input_with_port(struct mbuf **i_pak, int *offp, uint16_t port) -#elif defined( __Panda__) -sctp6_input(pakhandle_type *i_pak) #else sctp6_input(struct mbuf **i_pak, int *offp, int proto) #endif @@ -157,32 +142,22 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto) struct sctphdr *sh; struct sctp_chunkhdr *ch; int length, offset; -#if !defined(SCTP_WITH_NO_CSUM) uint8_t compute_crc; -#endif #if defined(__FreeBSD__) uint32_t mflowid; uint8_t mflowtype; + uint16_t fibnum; #endif -#if !(defined(__APPLE__) || defined (__FreeBSD__)) +#if !(defined(__APPLE__) || defined(__FreeBSD__)) uint16_t port = 0; #endif -#if defined(__Panda__) - /* This is Evil, but its the only way to make panda work right. */ - iphlen = sizeof(struct ip6_hdr); -#else iphlen = *offp; -#endif if (SCTP_GET_PKT_VRFID(*i_pak, vrf_id)) { SCTP_RELEASE_PKT(*i_pak); return (IPPROTO_DONE); } m = SCTP_HEADER_TO_CHAIN(*i_pak); -#ifdef __Panda__ - SCTP_DETACH_HEADER_FROM_CHAIN(*i_pak); - (void)SCTP_RELEASE_HEADER(*i_pak); -#endif #ifdef SCTP_MBUF_LOGGING /* Log in any input mbufs */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { @@ -195,25 +170,11 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto) } #endif #if defined(__FreeBSD__) -#if __FreeBSD_version > 1000049 SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, "sctp6_input(): Packet of length %d received on %s with csum_flags 0x%b.\n", m->m_pkthdr.len, if_name(m->m_pkthdr.rcvif), (int)m->m_pkthdr.csum_flags, CSUM_BITS); -#elif __FreeBSD_version >= 800000 - SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, - "sctp6_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", - m->m_pkthdr.len, - if_name(m->m_pkthdr.rcvif), - m->m_pkthdr.csum_flags); -#else - SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, - "sctp6_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", - m->m_pkthdr.len, - m->m_pkthdr.rcvif->if_xname, - m->m_pkthdr.csum_flags); -#endif #endif #if defined(__APPLE__) SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, @@ -223,7 +184,7 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto) m->m_pkthdr.rcvif->if_unit, m->m_pkthdr.csum_flags); #endif -#if defined(__Windows__) +#if defined(_WIN32) && !defined(__Userspace__) SCTPDBG(SCTP_DEBUG_CRCOFFLOAD, "sctp6_input(): Packet of length %d received on %s with csum_flags 0x%x.\n", m->m_pkthdr.len, @@ -233,18 +194,21 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto) #if defined(__FreeBSD__) mflowid = m->m_pkthdr.flowid; mflowtype = M_HASHTYPE_GET(m); - #endif + fibnum = M_GETFIB(m); +#endif SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); /* Get IP, SCTP, and first chunk header together in the first mbuf. */ offset = iphlen + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); - ip6 = mtod(m, struct ip6_hdr *); - IP6_EXTHDR_GET(sh, struct sctphdr *, m, iphlen, - (int)(sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr))); - if (sh == NULL) { - SCTP_STAT_INCR(sctps_hdrops); - return (IPPROTO_DONE); + if (m->m_len < offset) { + m = m_pullup(m, offset); + if (m == NULL) { + SCTP_STAT_INCR(sctps_hdrops); + return (IPPROTO_DONE); + } } + ip6 = mtod(m, struct ip6_hdr *); + sh = (struct sctphdr *)(mtod(m, caddr_t) + iphlen); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); offset -= sizeof(struct sctp_chunkhdr); memset(&src, 0, sizeof(struct sockaddr_in6)); @@ -295,36 +259,31 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto) if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) { goto out; } - ecn_bits = ((ntohl(ip6->ip6_flow) >> 20) & 0x000000ff); -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else -#if defined(__FreeBSD__) && __FreeBSD_version >= 800000 +#if defined(__FreeBSD__) + ecn_bits = IPV6_TRAFFIC_CLASS(ip6); if (m->m_pkthdr.csum_flags & CSUM_SCTP_VALID) { SCTP_STAT_INCR(sctps_recvhwcrc); compute_crc = 0; } else { #else + ecn_bits = ((ntohl(ip6->ip6_flow) >> 20) & 0x000000ff); if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && (IN6_ARE_ADDR_EQUAL(&src.sin6_addr, &dst.sin6_addr))) { - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); compute_crc = 0; } else { #endif SCTP_STAT_INCR(sctps_recvswcrc); compute_crc = 1; } -#endif sctp_common_input_processing(&m, iphlen, offset, length, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif ecn_bits, #if defined(__FreeBSD__) - mflowtype, mflowid, + mflowtype, mflowid, fibnum, #endif vrf_id, port); out: @@ -341,7 +300,6 @@ sctp6_input(struct mbuf **i_pak, int *offp) return (sctp6_input_with_port(i_pak, offp, 0)); } #endif - #if defined(__FreeBSD__) int sctp6_input(struct mbuf **i_pak, int *offp, int proto SCTP_UNUSED) @@ -350,287 +308,355 @@ sctp6_input(struct mbuf **i_pak, int *offp, int proto SCTP_UNUSED) } #endif -#if defined(__Panda__) void -#else -static void -#endif -sctp6_notify_mbuf(struct sctp_inpcb *inp, struct icmp6_hdr *icmp6, - struct sctphdr *sh, struct sctp_tcb *stcb, struct sctp_nets *net) +sctp6_notify(struct sctp_inpcb *inp, + struct sctp_tcb *stcb, + struct sctp_nets *net, + uint8_t icmp6_type, + uint8_t icmp6_code, + uint32_t next_mtu) { - uint32_t nxtsz; - - if ((inp == NULL) || (stcb == NULL) || (net == NULL) || - (icmp6 == NULL) || (sh == NULL)) { - goto out; - } - /* First do we even look at it? */ - if (ntohl(sh->v_tag) != (stcb->asoc.peer_vtag)) - goto out; - - if (icmp6->icmp6_type != ICMP6_PACKET_TOO_BIG) { - /* not PACKET TO BIG */ - goto out; - } - /* - * ok we need to look closely. We could even get smarter and look at - * anyone that we sent to in case we get a different ICMP that tells - * us there is no way to reach a host, but for this impl, all we - * care about is MTU discovery. - */ - nxtsz = ntohl(icmp6->icmp6_mtu); - /* Stop any PMTU timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL, SCTP_FROM_SCTP6_USRREQ+SCTP_LOC_1); - - /* Adjust destination size limit */ - if (net->mtu > nxtsz) { - net->mtu = nxtsz; +#if defined(__APPLE__) + struct socket *so; +#endif + int timer_stopped; + + switch (icmp6_type) { + case ICMP6_DST_UNREACH: + if ((icmp6_code == ICMP6_DST_UNREACH_NOROUTE) || + (icmp6_code == ICMP6_DST_UNREACH_ADMIN) || + (icmp6_code == ICMP6_DST_UNREACH_BEYONDSCOPE) || + (icmp6_code == ICMP6_DST_UNREACH_ADDR)) { + /* Mark the net unreachable. */ + if (net->dest_state & SCTP_ADDR_REACHABLE) { + /* Ok that destination is not reachable */ + net->dest_state &= ~SCTP_ADDR_REACHABLE; + net->dest_state &= ~SCTP_ADDR_PF; + sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_DOWN, + stcb, 0, (void *)net, SCTP_SO_NOT_LOCKED); + } + } + SCTP_TCB_UNLOCK(stcb); + break; + case ICMP6_PARAM_PROB: + /* Treat it like an ABORT. */ + if (icmp6_code == ICMP6_PARAMPROB_NEXTHEADER) { + sctp_abort_notification(stcb, true, false, 0, NULL, SCTP_SO_NOT_LOCKED); +#if defined(__APPLE__) + so = SCTP_INP_SO(inp); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); +#endif + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_2); +#if defined(__APPLE__) + SCTP_SOCKET_UNLOCK(so, 1); +#endif + } else { + SCTP_TCB_UNLOCK(stcb); + } + break; + case ICMP6_PACKET_TOO_BIG: + if (net->dest_state & SCTP_ADDR_NO_PMTUD) { + SCTP_TCB_UNLOCK(stcb); + break; + } + if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { + timer_stopped = 1; + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_1); + } else { + timer_stopped = 0; + } + /* Update the path MTU. */ if (net->port) { - net->mtu -= sizeof(struct udphdr); + next_mtu -= sizeof(struct udphdr); } - } - /* now what about the ep? */ - if (stcb->asoc.smallest_mtu > nxtsz) { - struct sctp_tmit_chunk *chk; - - /* Adjust that too */ - stcb->asoc.smallest_mtu = nxtsz; - /* now off to subtract IP_DF flag if needed */ - - TAILQ_FOREACH(chk, &stcb->asoc.send_queue, sctp_next) { - if ((uint32_t) (chk->send_size + IP_HDR_SIZE) > nxtsz) { - chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; + if (net->mtu > next_mtu) { + net->mtu = next_mtu; +#if defined(__FreeBSD__) + if (net->port) { + sctp_hc_set_mtu(&net->ro._l_addr, inp->fibnum, next_mtu + sizeof(struct udphdr)); + } else { + sctp_hc_set_mtu(&net->ro._l_addr, inp->fibnum, next_mtu); } +#endif } - TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { - if ((uint32_t) (chk->send_size + IP_HDR_SIZE) > nxtsz) { - /* - * For this guy we also mark for immediate - * resend since we sent to big of chunk - */ - chk->flags |= CHUNK_FLAGS_FRAGMENT_OK; - if (chk->sent != SCTP_DATAGRAM_RESEND) - stcb->asoc.sent_queue_retran_cnt++; - chk->sent = SCTP_DATAGRAM_RESEND; - chk->rec.data.doing_fast_retransmit = 0; - - chk->sent = SCTP_DATAGRAM_RESEND; - /* Clear any time so NO RTT is being done */ - chk->sent_rcv_time.tv_sec = 0; - chk->sent_rcv_time.tv_usec = 0; - stcb->asoc.total_flight -= chk->send_size; - net->flight_size -= chk->send_size; - } + /* Update the association MTU */ + if (stcb->asoc.smallest_mtu > next_mtu) { + sctp_pathmtu_adjustment(stcb, next_mtu, true); + } + /* Finally, start the PMTU timer if it was running before. */ + if (timer_stopped) { + sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net); } - } - sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL); -out: - if (stcb) { SCTP_TCB_UNLOCK(stcb); + break; + default: + SCTP_TCB_UNLOCK(stcb); + break; } } -#endif - +#if defined(__FreeBSD__) && !defined(__Userspace__) void -sctp6_notify(struct sctp_inpcb *inp, - struct icmp6_hdr *icmph, - struct sctphdr *sh, - struct sockaddr *to, - struct sctp_tcb *stcb, - struct sctp_nets *net) +sctp6_ctlinput(struct ip6ctlparam *ip6cp) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; + struct sctphdr sh; + struct sockaddr_in6 src, dst; -#endif + if (icmp6_errmap(ip6cp->ip6c_icmp6) == 0) { + return; + } - /* protection */ - if ((inp == NULL) || (stcb == NULL) || (net == NULL) || - (sh == NULL) || (to == NULL)) { - if (stcb) - SCTP_TCB_UNLOCK(stcb); + /* + * Check if we can safely examine the ports and the + * verification tag of the SCTP common header. + */ + if (ip6cp->ip6c_m->m_pkthdr.len < + (int32_t)(ip6cp->ip6c_off + offsetof(struct sctphdr, checksum))) { return; } - /* First job is to verify the vtag matches what I would send */ - if (ntohl(sh->v_tag) != (stcb->asoc.peer_vtag)) { - SCTP_TCB_UNLOCK(stcb); + + /* Copy out the port numbers and the verification tag. */ + memset(&sh, 0, sizeof(sh)); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off, + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint32_t), + (caddr_t)&sh); + memset(&src, 0, sizeof(struct sockaddr_in6)); + src.sin6_family = AF_INET6; + src.sin6_len = sizeof(struct sockaddr_in6); + src.sin6_port = sh.src_port; + src.sin6_addr = ip6cp->ip6c_ip6->ip6_src; + if (in6_setscope(&src.sin6_addr, ip6cp->ip6c_m->m_pkthdr.rcvif, NULL) != 0) { return; } - if (icmph->icmp6_type != ICMP_UNREACH) { - /* We only care about unreachable */ - SCTP_TCB_UNLOCK(stcb); + memset(&dst, 0, sizeof(struct sockaddr_in6)); + dst.sin6_family = AF_INET6; + dst.sin6_len = sizeof(struct sockaddr_in6); + dst.sin6_port = sh.dest_port; + dst.sin6_addr = ip6cp->ip6c_ip6->ip6_dst; + if (in6_setscope(&dst.sin6_addr, ip6cp->ip6c_m->m_pkthdr.rcvif, NULL) != 0) { return; } - if ((icmph->icmp6_code == ICMP_UNREACH_NET) || - (icmph->icmp6_code == ICMP_UNREACH_HOST) || - (icmph->icmp6_code == ICMP_UNREACH_NET_UNKNOWN) || - (icmph->icmp6_code == ICMP_UNREACH_HOST_UNKNOWN) || - (icmph->icmp6_code == ICMP_UNREACH_ISOLATED) || - (icmph->icmp6_code == ICMP_UNREACH_NET_PROHIB) || - (icmph->icmp6_code == ICMP_UNREACH_HOST_PROHIB) || -#if defined(__Panda__) - (icmph->icmp6_code == ICMP_UNREACH_ADMIN)) { -#elif defined(__Userspace_os_NetBSD) - (icmph->icmp6_code == ICMP_UNREACH_ADMIN_PROHIBIT)) { -#else - (icmph->icmp6_code == ICMP_UNREACH_FILTER_PROHIB)) { -#endif - - /* - * Hmm reachablity problems we must examine closely. If its - * not reachable, we may have lost a network. Or if there is - * NO protocol at the other end named SCTP. well we consider - * it a OOTB abort. - */ - if (net->dest_state & SCTP_ADDR_REACHABLE) { - /* Ok that destination is NOT reachable */ - net->dest_state &= ~SCTP_ADDR_REACHABLE; - net->dest_state &= ~SCTP_ADDR_PF; - sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_DOWN, - stcb, 0, (void *)net, SCTP_SO_NOT_LOCKED); + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the verification tag */ + if (ntohl(sh.v_tag) != 0) { + /* + * This must be the verification tag used for + * sending out packets. We don't consider + * packets reflecting the verification tag. + */ + if (ntohl(sh.v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + if (ip6cp->ip6c_m->m_pkthdr.len >= + ip6cp->ip6c_off + sizeof(struct sctphdr) + + sizeof(struct sctp_chunkhdr) + + offsetof(struct sctp_init, a_rwnd)) { + /* + * In this case we can check if we + * got an INIT chunk and if the + * initiate tag matches. + */ + uint32_t initiate_tag; + uint8_t chunk_type; + + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off + + sizeof(struct sctphdr), + sizeof(uint8_t), + (caddr_t)&chunk_type); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off + + sizeof(struct sctphdr) + + sizeof(struct sctp_chunkhdr), + sizeof(uint32_t), + (caddr_t)&initiate_tag); + if ((chunk_type != SCTP_INITIATION) || + (ntohl(initiate_tag) != stcb->asoc.my_vtag)) { + SCTP_TCB_UNLOCK(stcb); + return; + } + } else { + SCTP_TCB_UNLOCK(stcb); + return; + } } - SCTP_TCB_UNLOCK(stcb); - } else if ((icmph->icmp6_code == ICMP_UNREACH_PROTOCOL) || - (icmph->icmp6_code == ICMP_UNREACH_PORT)) { - /* - * Here the peer is either playing tricks on us, - * including an address that belongs to someone who - * does not support SCTP OR was a userland - * implementation that shutdown and now is dead. In - * either case treat it like a OOTB abort with no - * TCB - */ - sctp_abort_notification(stcb, 1, 0, NULL, SCTP_SO_NOT_LOCKED); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - so = SCTP_INP_SO(inp); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); -#endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ+SCTP_LOC_2); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); - /* SCTP_TCB_UNLOCK(stcb); MT: I think this is not needed.*/ -#endif - /* no need to unlock here, since the TCB is gone */ + sctp6_notify(inp, stcb, net, + ip6cp->ip6c_icmp6->icmp6_type, + ip6cp->ip6c_icmp6->icmp6_code, + ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); } else { - SCTP_TCB_UNLOCK(stcb); + if ((stcb == NULL) && (inp != NULL)) { + /* reduce inp's ref-count */ + SCTP_INP_WLOCK(inp); + SCTP_INP_DECR_REF(inp); + SCTP_INP_WUNLOCK(inp); + } + if (stcb) { + SCTP_TCB_UNLOCK(stcb); + } } } - - - -#if !defined(__Panda__) && !defined(__Userspace__) +#else void +#if defined(__APPLE__) && !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) && !defined(APPLE_ELCAPITAN) +sctp6_ctlinput(int cmd, struct sockaddr *pktdst, void *d, struct ifnet *ifp SCTP_UNUSED) +#else sctp6_ctlinput(int cmd, struct sockaddr *pktdst, void *d) +#endif { + struct ip6ctlparam *ip6cp; + struct sctp_inpcb *inp; + struct sctp_tcb *stcb; + struct sctp_nets *net; struct sctphdr sh; - struct ip6ctlparam *ip6cp = NULL; - uint32_t vrf_id; - -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) - vrf_id = SCTP_DEFAULT_VRFID; -#endif + struct sockaddr_in6 src, dst; #ifdef HAVE_SA_LEN if (pktdst->sa_family != AF_INET6 || - pktdst->sa_len != sizeof(struct sockaddr_in6)) + pktdst->sa_len != sizeof(struct sockaddr_in6)) { #else - if (pktdst->sa_family != AF_INET6) + if (pktdst->sa_family != AF_INET6) { #endif return; + } - if ((unsigned)cmd >= PRC_NCMDS) + if ((unsigned)cmd >= PRC_NCMDS) { return; + } if (PRC_IS_REDIRECT(cmd)) { d = NULL; } else if (inet6ctlerrmap[cmd] == 0) { return; } - /* if the parameter is from icmp6, decode it. */ + /* If the parameter is from icmp6, decode it. */ if (d != NULL) { ip6cp = (struct ip6ctlparam *)d; } else { ip6cp = (struct ip6ctlparam *)NULL; } - if (ip6cp) { + if (ip6cp != NULL) { /* * XXX: We assume that when IPV6 is non NULL, M and OFF are * valid. */ - /* check if we can safely examine src and dst ports */ - struct sctp_inpcb *inp = NULL; - struct sctp_tcb *stcb = NULL; - struct sctp_nets *net = NULL; - struct sockaddr_in6 final; + if (ip6cp->ip6c_m == NULL) { + return; + } - if (ip6cp->ip6c_m == NULL) + /* Check if we can safely examine the ports and the + * verification tag of the SCTP common header. + */ + if (ip6cp->ip6c_m->m_pkthdr.len < + (int32_t)(ip6cp->ip6c_off + offsetof(struct sctphdr, checksum))) { return; + } - bzero(&sh, sizeof(sh)); - bzero(&final, sizeof(final)); - inp = NULL; - net = NULL; - m_copydata(ip6cp->ip6c_m, ip6cp->ip6c_off, sizeof(sh), - (caddr_t)&sh); - ip6cp->ip6c_src->sin6_port = sh.src_port; + /* Copy out the port numbers and the verification tag. */ + memset(&sh, 0, sizeof(sh)); + m_copydata(ip6cp->ip6c_m, + ip6cp->ip6c_off, + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint32_t), + (caddr_t)&sh); + memset(&src, 0, sizeof(struct sockaddr_in6)); + src.sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN - final.sin6_len = sizeof(final); + src.sin6_len = sizeof(struct sockaddr_in6); #endif - final.sin6_family = AF_INET6; -#if defined(__FreeBSD__) && __FreeBSD_cc_version < 440000 - final.sin6_addr = *ip6cp->ip6c_finaldst; -#else - final.sin6_addr = ((struct sockaddr_in6 *)pktdst)->sin6_addr; -#endif /* __FreeBSD_cc_version */ - final.sin6_port = sh.dest_port; - stcb = sctp_findassociation_addr_sa((struct sockaddr *)&final, - (struct sockaddr *)ip6cp->ip6c_src, - &inp, &net, 1, vrf_id); - /* inp's ref-count increased && stcb locked */ - if (stcb != NULL && inp && (inp->sctp_socket != NULL)) { - if (cmd == PRC_MSGSIZE) { - sctp6_notify_mbuf(inp, - ip6cp->ip6c_icmp6, - &sh, - stcb, - net); - /* inp's ref-count reduced && stcb unlocked */ + src.sin6_port = sh.src_port; + src.sin6_addr = ip6cp->ip6c_ip6->ip6_src; + memset(&dst, 0, sizeof(struct sockaddr_in6)); + dst.sin6_family = AF_INET6; +#ifdef HAVE_SIN6_LEN + dst.sin6_len = sizeof(struct sockaddr_in6); +#endif + dst.sin6_port = sh.dest_port; + dst.sin6_addr = ip6cp->ip6c_ip6->ip6_dst; + inp = NULL; + net = NULL; + stcb = sctp_findassociation_addr_sa((struct sockaddr *)&dst, + (struct sockaddr *)&src, + &inp, &net, 1, SCTP_DEFAULT_VRFID); + if ((stcb != NULL) && + (net != NULL) && + (inp != NULL)) { + /* Check the verification tag */ + if (ntohl(sh.v_tag) != 0) { + /* + * This must be the verification tag used for + * sending out packets. We don't consider + * packets reflecting the verification tag. + */ + if (ntohl(sh.v_tag) != stcb->asoc.peer_vtag) { + SCTP_TCB_UNLOCK(stcb); + return; + } } else { - sctp6_notify(inp, ip6cp->ip6c_icmp6, &sh, - (struct sockaddr *)&final, - stcb, net); - /* inp's ref-count reduced && stcb unlocked */ + SCTP_TCB_UNLOCK(stcb); + return; } - } else { -#if !defined(__Windows__) - if (PRC_IS_REDIRECT(cmd) && inp) { - in6_rtchange((struct in6pcb *)inp, - inet6ctlerrmap[cmd]); + sctp6_notify(inp, stcb, net, + ip6cp->ip6c_icmp6->icmp6_type, + ip6cp->ip6c_icmp6->icmp6_code, + ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); +#if defined(__Userspace__) + if (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) && + (stcb->sctp_socket != NULL)) { + struct socket *upcall_socket; + + upcall_socket = stcb->sctp_socket; + SOCK_LOCK(upcall_socket); + soref(upcall_socket); + SOCK_UNLOCK(upcall_socket); + if ((upcall_socket->so_upcall != NULL) && + (upcall_socket->so_error != 0)) { + (*upcall_socket->so_upcall)(upcall_socket, upcall_socket->so_upcallarg, M_NOWAIT); + } + ACCEPT_LOCK(); + SOCK_LOCK(upcall_socket); + sorele(upcall_socket); } #endif - if (inp) { + } else { + if ((stcb == NULL) && (inp != NULL)) { /* reduce inp's ref-count */ SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); SCTP_INP_WUNLOCK(inp); } - if (stcb) + if (stcb) { SCTP_TCB_UNLOCK(stcb); + } } } } #endif +#endif /* * this routine can probably be collasped into the one in sctp_userreq.c * since they do the same thing and now we lookup with a sockaddr */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) static int sctp6_getcred(SYSCTL_HANDLER_ARGS) { @@ -642,16 +668,10 @@ sctp6_getcred(SYSCTL_HANDLER_ARGS) int error; uint32_t vrf_id; -#if defined(__FreeBSD__) || defined(__APPLE__) vrf_id = SCTP_DEFAULT_VRFID; -#else - vrf_id = panda_get_vrf_from_call(); /* from connectx call? */ -#endif -#if defined(__FreeBSD__) && __FreeBSD_version > 602000 +#if defined(__FreeBSD__) && !defined(__Userspace__) error = priv_check(req->td, PRIV_NETINET_GETCRED); -#elif defined(__FreeBSD__) && __FreeBSD_version >= 500000 - error = suser(req->td); #else error = suser(req->p); #endif @@ -706,34 +726,40 @@ sctp6_getcred(SYSCTL_HANDLER_ARGS) return (error); } -SYSCTL_PROC(_net_inet6_sctp6, OID_AUTO, getcred, CTLTYPE_OPAQUE | CTLFLAG_RW, - 0, 0, - sctp6_getcred, "S,ucred", "Get the ucred of a SCTP6 connection"); - +SYSCTL_PROC(_net_inet6_sctp6, OID_AUTO, getcred, + CTLTYPE_OPAQUE | CTLFLAG_RW | CTLFLAG_NEEDGIANT, + 0, 0, sctp6_getcred, "S,ucred", + "Get the ucred of a SCTP6 connection"); #endif /* This is the same as the sctp_abort() could be made common */ -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) -static void -#elif defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int +#elif defined(__FreeBSD__) || defined(_WIN32) +static void #else static int #endif sctp6_abort(struct socket *so) { +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif struct sctp_inpcb *inp; uint32_t flags; inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) +#if (defined(__FreeBSD__) || defined(_WIN32)) && !defined(__Userspace__) return; #else return (EINVAL); #endif } +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_must_try_again: flags = inp->sctp_flags; #ifdef SCTP_LOG_CLOSING @@ -752,7 +778,7 @@ sctp6_abort(struct socket *so) * here for the accounting/select. */ SCTP_SB_CLEAR(so->so_rcv); -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) so->so_usecount--; #else /* Now null out the reference, we are completely detached. */ @@ -765,20 +791,21 @@ sctp6_abort(struct socket *so) goto sctp_must_try_again; } } -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); return; #else return (0); #endif } -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 -static int -sctp6_attach(struct socket *so, int proto SCTP_UNUSED, struct thread *p SCTP_UNUSED) -#elif defined(__Panda__) || defined(__Userspace__) +#if defined(__Userspace__) int sctp6_attach(struct socket *so, int proto SCTP_UNUSED, uint32_t vrf_id) -#elif defined(__Windows__) +#elif defined(__FreeBSD__) +static int +sctp6_attach(struct socket *so, int proto SCTP_UNUSED, struct thread *p SCTP_UNUSED) +#elif defined(_WIN32) static int sctp6_attach(struct socket *so, int proto SCTP_UNUSED, PKTHREAD p SCTP_UNUSED) #else @@ -786,10 +813,9 @@ static int sctp6_attach(struct socket *so, int proto SCTP_UNUSED, struct proc *p SCTP_UNUSED) #endif { - struct in6pcb *inp6; int error; struct sctp_inpcb *inp; -#if !defined(__Panda__) && !defined(__Userspace__) +#if !defined(__Userspace__) uint32_t vrf_id = SCTP_DEFAULT_VRFID; #endif @@ -810,46 +836,35 @@ sctp6_attach(struct socket *so, int proto SCTP_UNUSED, struct proc *p SCTP_UNUSE inp = (struct sctp_inpcb *)so->so_pcb; SCTP_INP_WLOCK(inp); inp->sctp_flags |= SCTP_PCB_FLAGS_BOUND_V6; /* I'm v6! */ - inp6 = (struct in6pcb *)inp; -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) - inp6->inp_vflag |= INP_IPV6; -#else - inp->inp_vflag |= INP_IPV6; -#endif -#if !defined(__Panda__) - inp6->in6p_hops = -1; /* use kernel default */ - inp6->in6p_cksum = -1; /* just to be sure */ -#endif + inp->ip_inp.inp.inp_vflag |= INP_IPV6; + inp->ip_inp.inp.in6p_hops = -1; /* use kernel default */ + inp->ip_inp.inp.in6p_cksum = -1; /* just to be sure */ #ifdef INET /* * XXX: ugly!! IPv4 TTL initialization is necessary for an IPv6 * socket as well, because the socket may be bound to an IPv6 * wildcard address, which may match an IPv4-mapped IPv6 address. */ - inp6->inp_ip_ttl = MODULE_GLOBAL(ip_defttl); + inp->ip_inp.inp.inp_ip_ttl = MODULE_GLOBAL(ip_defttl); #endif - /* - * Hmm what about the IPSEC stuff that is missing here but in - * sctp_attach()? - */ SCTP_INP_WUNLOCK(inp); return (0); } -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__Userspace__) +int +sctp6_bind(struct socket *so, struct sockaddr *addr, void * p) +{ +#elif defined(__FreeBSD__) static int sctp6_bind(struct socket *so, struct sockaddr *addr, struct thread *p) { -#elif defined(__FreeBSD__) || defined(__APPLE__) +#elif defined(__APPLE__) static int sctp6_bind(struct socket *so, struct sockaddr *addr, struct proc *p) { -#elif defined(__Panda__) || defined(__Userspace__) -int -sctp6_bind(struct socket *so, struct sockaddr *addr, void * p) -{ -#elif defined(__Windows__) +#elif defined(_WIN32) static int sctp6_bind(struct socket *so, struct sockaddr *addr, PKTHREAD p) { @@ -861,8 +876,8 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) #endif struct sctp_inpcb *inp; - struct in6pcb *inp6; int error; + u_char vflagsav; inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { @@ -870,7 +885,7 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) return (EINVAL); } -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) if (addr) { switch (addr->sa_family) { #ifdef INET @@ -899,26 +914,16 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) } } #endif - inp6 = (struct in6pcb *)inp; -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) - inp6->inp_vflag &= ~INP_IPV4; - inp6->inp_vflag |= INP_IPV6; -#else - inp->inp_vflag &= ~INP_IPV4; - inp->inp_vflag |= INP_IPV6; -#endif - if ((addr != NULL) && (SCTP_IPV6_V6ONLY(inp6) == 0)) { + vflagsav = inp->ip_inp.inp.inp_vflag; + inp->ip_inp.inp.inp_vflag &= ~INP_IPV4; + inp->ip_inp.inp.inp_vflag |= INP_IPV6; + if ((addr != NULL) && (SCTP_IPV6_V6ONLY(inp) == 0)) { switch (addr->sa_family) { #ifdef INET case AF_INET: /* binding v4 addr to v6 socket, so reset flags */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) - inp6->inp_vflag |= INP_IPV4; - inp6->inp_vflag &= ~INP_IPV6; -#else - inp->inp_vflag |= INP_IPV4; - inp->inp_vflag &= ~INP_IPV6; -#endif + inp->ip_inp.inp.inp_vflag |= INP_IPV4; + inp->ip_inp.inp.inp_vflag &= ~INP_IPV6; break; #endif #ifdef INET6 @@ -929,26 +934,17 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) sin6_p = (struct sockaddr_in6 *)addr; if (IN6_IS_ADDR_UNSPECIFIED(&sin6_p->sin6_addr)) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) - inp6->inp_vflag |= INP_IPV4; -#else - inp->inp_vflag |= INP_IPV4; -#endif + inp->ip_inp.inp.inp_vflag |= INP_IPV4; } #ifdef INET if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) { struct sockaddr_in sin; in6_sin6_2_sin(&sin, sin6_p); -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) || defined(__Userspace__) - inp6->inp_vflag |= INP_IPV4; - inp6->inp_vflag &= ~INP_IPV6; -#else - inp->inp_vflag |= INP_IPV4; - inp->inp_vflag &= ~INP_IPV6; -#endif + inp->ip_inp.inp.inp_vflag |= INP_IPV4; + inp->ip_inp.inp.inp_vflag &= ~INP_IPV6; error = sctp_inpcb_bind(so, (struct sockaddr *)&sin, NULL, p); - return (error); + goto out; } #endif break; @@ -965,7 +961,8 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) if (addr->sa_family == AF_INET) { /* can't bind v4 addr to v6 only socket! */ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); - return (EINVAL); + error = EINVAL; + goto out; } #endif sin6_p = (struct sockaddr_in6 *)addr; @@ -974,15 +971,18 @@ sctp6_bind(struct socket *so, struct mbuf *nam, struct proc *p) /* can't bind v4-mapped addrs either! */ /* NOTE: we don't support SIIT */ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); - return (EINVAL); + error = EINVAL; + goto out; } } error = sctp_inpcb_bind(so, addr, NULL, p); +out: + if (error != 0) + inp->ip_inp.inp.inp_vflag = vflagsav; return (error); } - -#if (defined(__FreeBSD__) && __FreeBSD_version > 690000) || defined(__Windows__) || defined(__Userspace__) +#if defined(__FreeBSD__) || defined(_WIN32) || defined(__Userspace__) #if !defined(__Userspace__) static void #else @@ -996,9 +996,7 @@ sctp6_close(struct socket *so) /* This could be made common with sctp_detach() since they are identical */ #else -#if !defined(__Panda__) static -#endif int sctp6_detach(struct socket *so) { @@ -1012,7 +1010,7 @@ sctp6_detach(struct socket *so) #endif -#if !defined(__Panda__) && !defined(__Userspace__) +#if !defined(__Userspace__) static #endif int @@ -1021,25 +1019,22 @@ sctp6_disconnect(struct socket *so) return (sctp_disconnect(so)); } - int -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && !defined(__Userspace__) sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *p); - #else sctp_sendm(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct proc *p); - #endif -#if !defined(__Panda__) && !defined(__Windows__) && !defined(__Userspace__) -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if !defined(_WIN32) && !defined(__Userspace__) +#if defined(__FreeBSD__) static int sctp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *p) { -#elif defined(__FreeBSD__) || defined(__APPLE__) +#elif defined(__APPLE__) static int sctp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct proc *p) @@ -1052,7 +1047,6 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, struct sockaddr *addr = nam ? mtod(nam, struct sockaddr *): NULL; #endif struct sctp_inpcb *inp; - struct in6pcb *inp6; #ifdef INET struct sockaddr_in6 *sin6; @@ -1069,7 +1063,6 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } - inp6 = (struct in6pcb *)inp; /* * For the TCP model we may get a NULL addr, if we are a connected * socket thats ok. @@ -1087,23 +1080,74 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EDESTADDRREQ); return (EDESTADDRREQ); } + switch (addr->sa_family) { +#ifdef INET + case AF_INET: +#if defined(HAVE_SA_LEN) + if (addr->sa_len != sizeof(struct sockaddr_in)) { + if (control) { + SCTP_RELEASE_PKT(control); + control = NULL; + } + SCTP_RELEASE_PKT(m); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); + return (EINVAL); + } +#endif + break; +#endif +#ifdef INET6 + case AF_INET6: +#if defined(HAVE_SA_LEN) + if (addr->sa_len != sizeof(struct sockaddr_in6)) { + if (control) { + SCTP_RELEASE_PKT(control); + control = NULL; + } + SCTP_RELEASE_PKT(m); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); + return (EINVAL); + } +#endif + break; +#endif + default: + if (control) { + SCTP_RELEASE_PKT(control); + control = NULL; + } + SCTP_RELEASE_PKT(m); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); + return (EINVAL); + } #ifdef INET sin6 = (struct sockaddr_in6 *)addr; - if (SCTP_IPV6_V6ONLY(inp6)) { + if (SCTP_IPV6_V6ONLY(inp)) { /* * if IPV6_V6ONLY flag, we discard datagrams destined to a * v4 addr or v4-mapped addr */ if (addr->sa_family == AF_INET) { + if (control) { + SCTP_RELEASE_PKT(control); + control = NULL; + } + SCTP_RELEASE_PKT(m); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + if (control) { + SCTP_RELEASE_PKT(control); + control = NULL; + } + SCTP_RELEASE_PKT(m); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } } - if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + if ((addr->sa_family == AF_INET6) && + IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { struct sockaddr_in sin; /* convert v4-mapped into v4 addr and send */ @@ -1129,7 +1173,7 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, inp->pkt_last = inp->pkt = m; } if ( -#if defined(__FreeBSD__) || defined(__APPLE__) +#if (defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__) /* FreeBSD and MacOSX uses a flag passed */ ((flags & PRUS_MORETOCOME) == 0) #else @@ -1144,9 +1188,18 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, * optionaly switch back to this code (by changing back the * defininitions but this is not advisable. */ +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; +#endif int ret; +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif ret = sctp_output(inp, inp->pkt, addr, inp->control, p, flags); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif inp->pkt = NULL; inp->control = NULL; return (ret); @@ -1156,46 +1209,41 @@ sctp6_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam, } #endif -#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 +#if defined(__Userspace__) +int +sctp6_connect(struct socket *so, struct sockaddr *addr) +{ + void *p = NULL; +#elif defined(__FreeBSD__) static int sctp6_connect(struct socket *so, struct sockaddr *addr, struct thread *p) { -#elif defined(__FreeBSD__) || defined(__APPLE__) +#elif defined(__APPLE__) static int sctp6_connect(struct socket *so, struct sockaddr *addr, struct proc *p) { -#elif defined(__Panda__) -int -sctp6_connect(struct socket *so, struct sockaddr *addr, void *p) -{ -#elif defined(__Windows__) +#elif defined(_WIN32) static int sctp6_connect(struct socket *so, struct sockaddr *addr, PKTHREAD p) { -#elif defined(__Userspace__) -int -sctp6_connect(struct socket *so, struct sockaddr *addr) -{ - void *p = NULL; #else static int sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) { struct sockaddr *addr = mtod(nam, struct sockaddr *); +#endif +#if defined(__FreeBSD__) && !defined(__Userspace__) + struct epoch_tracker et; #endif uint32_t vrf_id; int error = 0; struct sctp_inpcb *inp; struct sctp_tcb *stcb; #ifdef INET - struct in6pcb *inp6; struct sockaddr_in6 *sin6; union sctp_sockstore store; #endif -#ifdef INET - inp6 = (struct in6pcb *)so->so_pcb; -#endif inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ECONNRESET); @@ -1206,7 +1254,7 @@ sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } -#if !defined(__Windows__) +#if !(defined(_WIN32) && !defined(__Userspace__)) switch (addr->sa_family) { #ifdef INET case AF_INET: @@ -1259,7 +1307,7 @@ sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) } #ifdef INET sin6 = (struct sockaddr_in6 *)addr; - if (SCTP_IPV6_V6ONLY(inp6)) { + if (SCTP_IPV6_V6ONLY(inp)) { /* * if IPV6_V6ONLY flag, ignore connections destined to a v4 * addr or v4-mapped addr @@ -1277,7 +1325,8 @@ sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) return (EINVAL); } } - if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + if ((addr->sa_family == AF_INET6) && + IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { /* convert v4-mapped into v4 addr */ in6_sin6_2_sin(&store.sin, sin6); addr = &store.sa; @@ -1287,7 +1336,7 @@ sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) if (inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) { stcb = LIST_FIRST(&inp->sctp_asoc_list); if (stcb) { - SCTP_TCB_UNLOCK(stcb); + SCTP_TCB_LOCK(stcb); } SCTP_INP_RUNLOCK(inp); } else { @@ -1311,37 +1360,33 @@ sctp6_connect(struct socket *so, struct mbuf *nam, struct proc *p) return (EALREADY); } /* We are GOOD to go */ - stcb = sctp_aloc_assoc(inp, addr, &error, 0, vrf_id, p); + stcb = sctp_aloc_assoc_connected(inp, addr, &error, 0, 0, vrf_id, + inp->sctp_ep.pre_open_stream_count, + inp->sctp_ep.port, p, + SCTP_INITIALIZE_AUTH_PARAMS); SCTP_ASOC_CREATE_UNLOCK(inp); if (stcb == NULL) { /* Gak! no memory */ return (error); } - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) { - stcb->sctp_ep->sctp_flags |= SCTP_PCB_FLAGS_CONNECTED; - /* Set the connected flag so we can queue data */ - soisconnecting(so); - } - stcb->asoc.state = SCTP_STATE_COOKIE_WAIT; + SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT); (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); - - /* initialize authentication parameters for the assoc */ - sctp_initialize_auth_params(inp, stcb); - +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_ENTER(et); +#endif sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); SCTP_TCB_UNLOCK(stcb); +#if defined(__FreeBSD__) && !defined(__Userspace__) + NET_EPOCH_EXIT(et); +#endif return (error); } static int -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) sctp6_getaddr(struct socket *so, struct sockaddr **addr) { struct sockaddr_in6 *sin6; -#elif defined(__Panda__) -sctp6_getaddr(struct socket *so, struct sockaddr *addr) -{ - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr; #else sctp6_getaddr(struct socket *so, struct mbuf *nam) { @@ -1351,22 +1396,20 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) uint32_t vrf_id; struct sctp_ifa *sctp_ifa; -#ifdef SCTP_KAME +#if defined(SCTP_KAME) && defined(SCTP_EMBEDDED_V6_SCOPE) int error; -#endif /* SCTP_KAME */ +#endif /* * Do the malloc first in case it blocks. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_MALLOC_SONAME(sin6, struct sockaddr_in6 *, sizeof(*sin6)); if (sin6 == NULL) return (ENOMEM); -#elif defined(__Panda__) - bzero(sin6, sizeof(*sin6)); #else SCTP_BUF_LEN(nam) = sizeof(*sin6); - bzero(sin6, sizeof(*sin6)); + memset(sin6, 0, sizeof(*sin6)); #endif sin6->sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN @@ -1375,7 +1418,7 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) inp = (struct sctp_inpcb *)so->so_pcb; if (inp == NULL) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ECONNRESET); @@ -1392,7 +1435,12 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) int fnd; stcb = LIST_FIRST(&inp->sctp_asoc_list); if (stcb == NULL) { - goto notConn6; + SCTP_INP_RUNLOCK(inp); +#if !defined(__Userspace__) + SCTP_FREE_SONAME(sin6); +#endif + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ENOENT); + return (ENOENT); } fnd = 0; sin_a6 = NULL; @@ -1409,7 +1457,12 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) } if ((!fnd) || (sin_a6 == NULL)) { /* punt */ - goto notConn6; + SCTP_INP_RUNLOCK(inp); +#if !defined(__Userspace__) + SCTP_FREE_SONAME(sin6); +#endif + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ENOENT); + return (ENOENT); } vrf_id = inp->def_vrf_id; sctp_ifa = sctp_source_address_selection(inp, stcb, (sctp_route_t *)&net->ro, net, 0, vrf_id); @@ -1418,7 +1471,6 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) } } else { /* For the bound all case you get back 0 */ - notConn6: memset(&sin6->sin6_addr, 0, sizeof(sin6->sin6_addr)); } } else { @@ -1437,7 +1489,7 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) } } if (!fnd) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_INP_RUNLOCK(inp); @@ -1461,21 +1513,17 @@ sctp6_getaddr(struct socket *so, struct mbuf *nam) sin6->sin6_scope_id = 0; /* XXX */ #endif /* SCTP_KAME */ #endif /* SCTP_EMBEDDED_V6_SCOPE */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) (*addr) = (struct sockaddr *)sin6; #endif return (0); } static int -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) sctp6_peeraddr(struct socket *so, struct sockaddr **addr) { struct sockaddr_in6 *sin6; -#elif defined(__Panda__) -sctp6_peeraddr(struct socket *so, struct sockaddr *addr) -{ - struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr; #else sctp6_peeraddr(struct socket *so, struct mbuf *nam) { @@ -1491,12 +1539,10 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) #endif /* Do the malloc first in case it blocks. */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_MALLOC_SONAME(sin6, struct sockaddr_in6 *, sizeof *sin6); if (sin6 == NULL) return (ENOMEM); -#elif defined(__Panda__) - memset(sin6, 0, sizeof(*sin6)); #else SCTP_BUF_LEN(nam) = sizeof(*sin6); memset(sin6, 0, sizeof(*sin6)); @@ -1510,7 +1556,7 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) if ((inp == NULL) || ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0)) { /* UDP type and listeners will drop out here */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ENOTCONN); @@ -1523,7 +1569,7 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) } SCTP_INP_RUNLOCK(inp); if (stcb == NULL) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ECONNRESET); @@ -1542,7 +1588,7 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) SCTP_TCB_UNLOCK(stcb); if (!fnd) { /* No IPv4 address */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ENOENT); @@ -1551,7 +1597,7 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) #ifdef SCTP_EMBEDDED_V6_SCOPE #ifdef SCTP_KAME if ((error = sa6_recoverscope(sin6)) != 0) { -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SCTP_FREE_SONAME(sin6); #endif SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, error); @@ -1561,24 +1607,16 @@ sctp6_peeraddr(struct socket *so, struct mbuf *nam) in6_recoverscope(sin6, &sin6->sin6_addr, NULL); #endif /* SCTP_KAME */ #endif /* SCTP_EMBEDDED_V6_SCOPE */ -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) *addr = (struct sockaddr *)sin6; #endif return (0); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) static int sctp6_in6getaddr(struct socket *so, struct sockaddr **nam) { -#ifdef INET - struct sockaddr *addr; -#endif -#elif defined(__Panda__) -int -sctp6_in6getaddr(struct socket *so, struct sockaddr *nam, uint32_t *namelen) -{ - struct sockaddr *addr = nam; #elif defined(__Userspace__) int sctp6_in6getaddr(struct socket *so, struct mbuf *nam) @@ -1594,10 +1632,10 @@ sctp6_in6getaddr(struct socket *so, struct mbuf *nam) struct sockaddr *addr = mtod(nam, struct sockaddr *); #endif #endif - struct in6pcb *inp6 = sotoin6pcb(so); + struct inpcb *inp = sotoinpcb(so); int error; - if (inp6 == NULL) { + if (inp == NULL) { SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } @@ -1606,42 +1644,40 @@ sctp6_in6getaddr(struct socket *so, struct mbuf *nam) error = sctp6_getaddr(so, nam); #ifdef INET if (error) { +#if !defined(__Userspace__) + struct sockaddr_in6 *sin6; +#else + struct sockaddr_in6 sin6; +#endif + /* try v4 next if v6 failed */ error = sctp_ingetaddr(so, nam); if (error) { return (error); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) - addr = *nam; -#endif - /* if I'm V6ONLY, convert it to v4-mapped */ - if (SCTP_IPV6_V6ONLY(inp6)) { - struct sockaddr_in6 sin6; - - in6_sin_2_v4mapsin6((struct sockaddr_in *)addr, &sin6); - memcpy(addr, &sin6, sizeof(struct sockaddr_in6)); +#if !defined(__Userspace__) + SCTP_MALLOC_SONAME(sin6, struct sockaddr_in6 *, sizeof *sin6); + if (sin6 == NULL) { + SCTP_FREE_SONAME(*nam); + return (ENOMEM); } - } + in6_sin_2_v4mapsin6((struct sockaddr_in *)*nam, sin6); + SCTP_FREE_SONAME(*nam); + *nam = (struct sockaddr *)sin6; +#else + in6_sin_2_v4mapsin6((struct sockaddr_in *)addr, &sin6); + SCTP_BUF_LEN(nam) = sizeof(struct sockaddr_in6); + memcpy(addr, &sin6, sizeof(struct sockaddr_in6)); #endif -#if defined(__Panda__) - *namelen = nam->sa_len; + } #endif return (error); } - -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) static int sctp6_getpeeraddr(struct socket *so, struct sockaddr **nam) { -#ifdef INET - struct sockaddr *addr; -#endif -#elif defined(__Panda__) -int -sctp6_getpeeraddr(struct socket *so, struct sockaddr *nam, uint32_t *namelen) -{ - struct sockaddr *addr = (struct sockaddr *)nam; #elif defined(__Userspace__) int sctp6_getpeeraddr(struct socket *so, struct mbuf *nam) @@ -1659,10 +1695,10 @@ sctp6_getpeeraddr(struct socket *so, struct mbuf *nam) #endif #endif - struct in6pcb *inp6 = sotoin6pcb(so); + struct inpcb *inp = sotoinpcb(so); int error; - if (inp6 == NULL) { + if (inp == NULL) { SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); return (EINVAL); } @@ -1671,56 +1707,74 @@ sctp6_getpeeraddr(struct socket *so, struct mbuf *nam) error = sctp6_peeraddr(so, nam); #ifdef INET if (error) { +#if !defined(__Userspace__) + struct sockaddr_in6 *sin6; +#else + struct sockaddr_in6 sin6; +#endif + /* try v4 next if v6 failed */ error = sctp_peeraddr(so, nam); if (error) { return (error); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) - addr = *nam; -#endif - /* if I'm V6ONLY, convert it to v4-mapped */ - if (SCTP_IPV6_V6ONLY(inp6)) { - struct sockaddr_in6 sin6; - - in6_sin_2_v4mapsin6((struct sockaddr_in *)addr, &sin6); - memcpy(addr, &sin6, sizeof(struct sockaddr_in6)); +#if !defined(__Userspace__) + SCTP_MALLOC_SONAME(sin6, struct sockaddr_in6 *, sizeof *sin6); + if (sin6 == NULL) { + SCTP_FREE_SONAME(*nam); + return (ENOMEM); } - } + in6_sin_2_v4mapsin6((struct sockaddr_in *)*nam, sin6); + SCTP_FREE_SONAME(*nam); + *nam = (struct sockaddr *)sin6; +#else + in6_sin_2_v4mapsin6((struct sockaddr_in *)addr, &sin6); + SCTP_BUF_LEN(nam) = sizeof(struct sockaddr_in6); + memcpy(addr, &sin6, sizeof(struct sockaddr_in6)); #endif -#if defined(__Panda__) - *namelen = nam->sa_len; + } #endif return (error); } -#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__Windows__) -struct pr_usrreqs sctp6_usrreqs = { +#if !defined(__Userspace__) #if defined(__FreeBSD__) - .pru_abort = sctp6_abort, - .pru_accept = sctp_accept, - .pru_attach = sctp6_attach, - .pru_bind = sctp6_bind, - .pru_connect = sctp6_connect, - .pru_control = in6_control, -#if __FreeBSD_version >= 690000 - .pru_close = sctp6_close, - .pru_detach = sctp6_close, - .pru_sopoll = sopoll_generic, - .pru_flush = sctp_flush, +#define SCTP6_PROTOSW \ + .pr_protocol = IPPROTO_SCTP, \ + .pr_ctloutput = sctp_ctloutput, \ + .pr_abort = sctp6_abort, \ + .pr_accept = sctp_accept, \ + .pr_attach = sctp6_attach, \ + .pr_bind = sctp6_bind, \ + .pr_connect = sctp6_connect, \ + .pr_control = in6_control, \ + .pr_close = sctp6_close, \ + .pr_detach = sctp6_close, \ + .pr_sopoll = sopoll_generic, \ + .pr_flush = sctp_flush, \ + .pr_disconnect = sctp6_disconnect, \ + .pr_listen = sctp_listen, \ + .pr_peeraddr = sctp6_getpeeraddr, \ + .pr_send = sctp6_send, \ + .pr_shutdown = sctp_shutdown, \ + .pr_sockaddr = sctp6_in6getaddr, \ + .pr_sosend = sctp_sosend, \ + .pr_soreceive = sctp_soreceive + +struct protosw sctp6_seqpacket_protosw = { + .pr_type = SOCK_SEQPACKET, + .pr_flags = PR_WANTRCVD, + SCTP6_PROTOSW +}; + +struct protosw sctp6_stream_protosw = { + .pr_type = SOCK_STREAM, + .pr_flags = PR_CONNREQUIRED | PR_WANTRCVD, + SCTP6_PROTOSW +}; #else - .pru_detach = sctp6_detach, - .pru_sopoll = sopoll, -#endif - .pru_disconnect = sctp6_disconnect, - .pru_listen = sctp_listen, - .pru_peeraddr = sctp6_getpeeraddr, - .pru_send = sctp6_send, - .pru_shutdown = sctp_shutdown, - .pru_sockaddr = sctp6_in6getaddr, - .pru_sosend = sctp_sosend, - .pru_soreceive = sctp_soreceive -#elif defined(__APPLE__) +struct pr_usrreqs sctp6_usrreqs = { +#if defined(__APPLE__) && !defined(__Userspace__) .pru_abort = sctp6_abort, .pru_accept = sctp_accept, .pru_attach = sctp6_attach, @@ -1741,7 +1795,7 @@ struct pr_usrreqs sctp6_usrreqs = { .pru_sosend = sctp_sosend, .pru_soreceive = sctp_soreceive, .pru_sopoll = sopoll -#elif defined(__Windows__) +#elif defined(_WIN32) && !defined(__Userspace__) sctp6_abort, sctp_accept, sctp6_attach, @@ -1765,119 +1819,8 @@ struct pr_usrreqs sctp6_usrreqs = { sopoll_generic, NULL, sctp6_close -#endif }; - -#elif !defined(__Panda__) && !defined(__Userspace__) -int -sctp6_usrreq(so, req, m, nam, control, p) - struct socket *so; - int req; - struct mbuf *m, *nam, *control; - struct proc *p; -{ - int s; - int error = 0; - int family; - uint32_t vrf_id; - family = so->so_proto->pr_domain->dom_family; - - if (req == PRU_CONTROL) { - switch (family) { - case PF_INET: - error = in_control(so, (long)m, (caddr_t)nam, - (struct ifnet *)control - ); -#ifdef INET6 - case PF_INET6: - error = in6_control(so, (long)m, (caddr_t)nam, - (struct ifnet *)control, p); #endif - default: - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - } - return (error); - } - switch (req) { - case PRU_ATTACH: - error = sctp6_attach(so, family, p); - break; - case PRU_DETACH: - error = sctp6_detach(so); - break; - case PRU_BIND: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp6_bind(so, nam, p); - break; - case PRU_LISTEN: - error = sctp_listen(so, p); - break; - case PRU_CONNECT: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp6_connect(so, nam, p); - break; - case PRU_DISCONNECT: - error = sctp6_disconnect(so); - break; - case PRU_ACCEPT: - if (nam == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EINVAL); - return (EINVAL); - } - error = sctp_accept(so, nam); - break; - case PRU_SHUTDOWN: - error = sctp_shutdown(so); - break; - - case PRU_RCVD: - /* - * For OpenBSD and NetBSD, this is real ugly. The (mbuf *) - * nam that is passed (by soreceive()) is the int flags cast - * as a (mbuf *) yuck! - */ - error = sctp_usr_recvd(so, (int)((long)nam)); - break; - - case PRU_SEND: - /* Flags are ignored */ - error = sctp6_send(so, 0, m, nam, control, p); - break; - case PRU_ABORT: - error = sctp6_abort(so); - break; - - case PRU_SENSE: - error = 0; - break; - case PRU_RCVOOB: - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - break; - case PRU_SENDOOB: - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, EAFNOSUPPORT); - error = EAFNOSUPPORT; - break; - case PRU_PEERADDR: - error = sctp6_getpeeraddr(so, nam); - break; - case PRU_SOCKADDR: - error = sctp6_in6getaddr(so, nam); - break; - case PRU_SLOWTIMO: - error = 0; - break; - default: - break; - } - return (error); -} +#endif #endif #endif diff --git a/netwerk/sctp/src/netinet6/sctp6_var.h b/netwerk/sctp/src/netinet6/sctp6_var.h index 3402bc08cd..e4d737b211 100755 --- a/netwerk/sctp/src/netinet6/sctp6_var.h +++ b/netwerk/sctp/src/netinet6/sctp6_var.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. @@ -30,9 +32,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && !defined(__Userspace__) #include -__FBSDID("$FreeBSD: head/sys/netinet6/sctp6_var.h 243186 2012-11-17 20:04:04Z tuexen $"); +__FBSDID("$FreeBSD$"); #endif #ifndef _NETINET6_SCTP6_VAR_H_ @@ -42,47 +44,44 @@ __FBSDID("$FreeBSD: head/sys/netinet6/sctp6_var.h 243186 2012-11-17 20:04:04Z tu #ifdef INET extern void in6_sin6_2_sin(struct sockaddr_in *, struct sockaddr_in6 *); extern void in6_sin6_2_sin_in_sock(struct sockaddr *); -extern void in6_sin_2_v4mapsin6(struct sockaddr_in *, struct sockaddr_in6 *); +extern void in6_sin_2_v4mapsin6(const struct sockaddr_in *, struct sockaddr_in6 *); #endif #endif #if defined(_KERNEL) -#if defined(__FreeBSD__) || (__APPLE__) || defined(__Windows__) +#if !defined(__Userspace__) SYSCTL_DECL(_net_inet6_sctp6); +#if defined(__FreeBSD__) +extern struct protosw sctp6_seqpacket_protosw, sctp6_stream_protosw; +#else extern struct pr_usrreqs sctp6_usrreqs; +#endif #else int sctp6_usrreq(struct socket *, int, struct mbuf *, struct mbuf *, struct mbuf *); #endif -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__Userspace__) int sctp6_input(struct mbuf **, int *); int sctp6_input_with_port(struct mbuf **, int *, uint16_t); -#elif defined(__Panda__) -int sctp6_input (pakhandle_type *); -#elif defined(__FreeBSD__) && __FreeBSD_version < 902000 -int sctp6_input __P((struct mbuf **, int *, int)); -int sctp6_input_with_port __P((struct mbuf **, int *, uint16_t)); #else int sctp6_input(struct mbuf **, int *, int); int sctp6_input_with_port(struct mbuf **, int *, uint16_t); #endif -#if defined(__FreeBSD__) && __FreeBSD_version < 902000 -int sctp6_output -__P((struct sctp_inpcb *, struct mbuf *, struct sockaddr *, - struct mbuf *, struct proc *)); -void sctp6_ctlinput __P((int, struct sockaddr *, void *)); -#else int sctp6_output(struct sctp_inpcb *, struct mbuf *, struct sockaddr *, struct mbuf *, struct proc *); -void sctp6_ctlinput(int, struct sockaddr *, void *); +#if defined(__APPLE__) && !defined(__Userspace__) && !defined(APPLE_LEOPARD) && !defined(APPLE_SNOWLEOPARD) && !defined(APPLE_LION) && !defined(APPLE_MOUNTAINLION) && !defined(APPLE_ELCAPITAN) +void sctp6_ctlinput(int, struct sockaddr *, void *, struct ifnet * SCTP_UNUSED); +#elif defined(__FreeBSD__) && !defined(__Userspace__) +ip6proto_ctlinput_t sctp6_ctlinput; +#else +void sctp6_ctlinput(int, struct sockaddr_in6 *, ip6ctlparam *); #endif -#if !(defined(__FreeBSD__) || defined(__APPLE__)) +#if !((defined(__FreeBSD__) || defined(__APPLE__)) && !defined(__Userspace__)) extern void in6_sin_2_v4mapsin6(struct sockaddr_in *, struct sockaddr_in6 *); extern void in6_sin6_2_sin(struct sockaddr_in *, struct sockaddr_in6 *); extern void in6_sin6_2_sin_in_sock(struct sockaddr *); #endif -extern void sctp6_notify(struct sctp_inpcb *, struct icmp6_hdr *, - struct sctphdr *, struct sockaddr *, - struct sctp_tcb *, struct sctp_nets *); +void sctp6_notify(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *, + uint8_t, uint8_t, uint32_t); #endif #endif diff --git a/netwerk/sctp/src/user_atomic.h b/netwerk/sctp/src/user_atomic.h index 27a0e149d3..6a59587efc 100755 --- a/netwerk/sctp/src/user_atomic.h +++ b/netwerk/sctp/src/user_atomic.h @@ -42,8 +42,8 @@ #include #include -#if defined(__Userspace_os_Darwin) || defined (__Userspace_os_Windows) -#if defined (__Userspace_os_Windows) +#if defined(__APPLE__) || defined(_WIN32) +#if defined(_WIN32) #define atomic_add_int(addr, val) InterlockedExchangeAdd((LPLONG)addr, (LONG)val) #define atomic_fetchadd_int(addr, val) InterlockedExchangeAdd((LPLONG)addr, (LONG)val) #define atomic_subtract_int(addr, val) InterlockedExchangeAdd((LPLONG)addr,-((LONG)val)) @@ -54,7 +54,7 @@ #define atomic_add_int(addr, val) OSAtomicAdd32Barrier(val, (int32_t *)addr) #define atomic_fetchadd_int(addr, val) OSAtomicAdd32Barrier(val, (int32_t *)addr) #define atomic_subtract_int(addr, val) OSAtomicAdd32Barrier(-val, (int32_t *)addr) -#define atomic_cmpset_int(dst, exp, src) OSAtomicCompareAndSwap32Barrier(exp, src, (int *)dst) +#define atomic_cmpset_int(dst, exp, src) OSAtomicCompareAndSwapIntBarrier(exp, src, (int *)dst) #define SCTP_DECREMENT_AND_CHECK_REFCOUNT(addr) (atomic_fetchadd_int(addr, -1) == 0) #endif @@ -76,11 +76,11 @@ *addr = 0; \ } \ } -#if defined(__Userspace_os_Windows) -static void atomic_init() {} /* empty when we are not using atomic_mtx */ -#else -static inline void atomic_init() {} /* empty when we are not using atomic_mtx */ #endif +#if defined(_WIN32) +static void atomic_init(void) {} /* empty when we are not using atomic_mtx */ +#else +static inline void atomic_init(void) {} /* empty when we are not using atomic_mtx */ #endif #else @@ -132,7 +132,7 @@ static inline void atomic_init() {} /* empty when we are not using atomic_mtx */ } \ } #endif -static inline void atomic_init() {} /* empty when we are not using atomic_mtx */ +static inline void atomic_init(void) {} /* empty when we are not using atomic_mtx */ #endif #if 0 /* using libatomic_ops */ @@ -173,7 +173,7 @@ static inline void atomic_init() {} /* empty when we are not using atomic_mtx */ extern userland_mutex_t atomic_mtx; -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) static inline void atomic_init() { InitializeCriticalSection(&atomic_mtx); } @@ -188,16 +188,31 @@ static inline void atomic_unlock() { } #else static inline void atomic_init() { - (void)pthread_mutex_init(&atomic_mtx, NULL); + pthread_mutexattr_t mutex_attr; + + pthread_mutexattr_init(&mutex_attr); +#ifdef INVARIANTS + pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_ERRORCHECK); +#endif + pthread_mutex_init(&accept_mtx, &mutex_attr); + pthread_mutexattr_destroy(&mutex_attr); } static inline void atomic_destroy() { (void)pthread_mutex_destroy(&atomic_mtx); } static inline void atomic_lock() { +#ifdef INVARIANTS + KASSERT(pthread_mutex_lock(&atomic_mtx) == 0, ("atomic_lock: atomic_mtx already locked")) +#else (void)pthread_mutex_lock(&atomic_mtx); +#endif } static inline void atomic_unlock() { +#ifdef INVARIANTS + KASSERT(pthread_mutex_unlock(&atomic_mtx) == 0, ("atomic_unlock: atomic_mtx not locked")) +#else (void)pthread_mutex_unlock(&atomic_mtx); +#endif } #endif /* diff --git a/netwerk/sctp/src/user_environment.c b/netwerk/sctp/src/user_environment.c index 6830a2368b..3deb3ef0d4 100755 --- a/netwerk/sctp/src/user_environment.c +++ b/netwerk/sctp/src/user_environment.c @@ -30,18 +30,23 @@ /* __Userspace__ */ -#include -#if !defined (__Userspace_os_Windows) +#if defined(_WIN32) +#if !defined(_CRT_RAND_S) && !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define _CRT_RAND_S +#endif +#else #include #include #endif +#ifdef INVARIANTS +#include +#endif #include #include /* #include defines MIN */ #if !defined(MIN) #define MIN(arg1,arg2) ((arg1) < (arg2) ? (arg1) : (arg2)) #endif -#include #define uHZ 1000 @@ -60,37 +65,320 @@ u_short ip_id = 0; /*__Userspace__ TODO Should it be initialized to zero? */ */ userland_mutex_t atomic_mtx; -/* Source: /usr/src/sys/dev/random/harvest.c */ -static int read_random_phony(void *, int); +/* If the entropy device is not loaded, make a token effort to + * provide _some_ kind of randomness. This should only be used + * inside other RNG's, like arc4random(9). + */ +#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#include -static int (*read_func)(void *, int) = read_random_phony; +void +init_random(void) +{ + return; +} -/* Userland-visible version of read_random */ -int -read_random(void *buf, int count) +void +read_random(void *buf, size_t size) { - return ((*read_func)(buf, count)); + memset(buf, 'A', size); + return; } -/* If the entropy device is not loaded, make a token effort to - * provide _some_ kind of randomness. This should only be used - * inside other RNG's, like arc4random(9). +void +finish_random(void) +{ + return; +} +/* This define can be used to optionally use OpenSSL's random number utility, + * which is capable of bypassing the chromium sandbox which normally would + * prevent opening files, including /dev/urandom. */ -static int -read_random_phony(void *buf, int count) +#elif defined(SCTP_USE_OPENSSL_RAND) +#include + +/* Requiring BoringSSL because it guarantees that RAND_bytes will succeed. */ +#ifndef OPENSSL_IS_BORINGSSL +#error Only BoringSSL is supported with SCTP_USE_OPENSSL_RAND. +#endif + +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) +{ + RAND_bytes((uint8_t *)buf, size); + return; +} + +void +finish_random(void) +{ + return; +} +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__Bitrig__) +#include + +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) +{ + arc4random_buf(buf, size); + return; +} + +void +finish_random(void) +{ + return; +} +#elif defined(_WIN32) +#include + +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) { - uint32_t randval; - int size, i; + unsigned int randval; + size_t position, remaining; - /* srandom() is called in kern/init_main.c:proc0_post() */ + position = 0; + while (position < size) { + if (rand_s(&randval) == 0) { + remaining = MIN(size - position, sizeof(unsigned int)); + memcpy((char *)buf + position, &randval, remaining); + position += sizeof(unsigned int); + } + } + return; +} + +void +finish_random(void) +{ + return; +} +#elif (defined(__ANDROID__) && (__ANDROID_API__ < 28)) || defined(__QNX__) || defined(__EMSCRIPTEN__) +#include + +static int fd = -1; + +void +init_random(void) +{ + fd = open("/dev/urandom", O_RDONLY); + return; +} + +void +read_random(void *buf, size_t size) +{ + size_t position; + ssize_t n; - /* Fill buf[] with random(9) output */ - for (i = 0; i < count; i+= (int)sizeof(uint32_t)) { - randval = random(); - size = MIN(count - i, (int)sizeof(uint32_t)); - memcpy(&((char *)buf)[i], &randval, (size_t)size); + position = 0; + while (position < size) { + n = read(fd, (char *)buf + position, size - position); + if (n > 0) { + position += n; + } } + return; +} - return (count); +void +finish_random(void) +{ + close(fd); + return; } +#elif defined(__ANDROID__) && (__ANDROID_API__ >= 28) +#include +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) +{ + size_t position; + ssize_t n; + + position = 0; + while (position < size) { + n = getrandom((char *)buf + position, size - position, 0); + if (n > 0) { + position += n; + } + } + return; +} + +void +finish_random(void) +{ + return; +} +#elif defined(__linux__) +#include +#include +#include + +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) +void __msan_unpoison(void *, size_t); +#endif +#endif + +#ifdef __NR_getrandom +#if !defined(GRND_NONBLOCK) +#define GRND_NONBLOCK 1 +#endif +static int getrandom_available = 0; +#endif +static int fd = -1; + +void +init_random(void) +{ +#ifdef __NR_getrandom + char dummy; + ssize_t n = syscall(__NR_getrandom, &dummy, sizeof(dummy), GRND_NONBLOCK); + if (n > 0 || errno == EINTR || errno == EAGAIN) { + /* Either getrandom succeeded, was interrupted or is waiting for entropy; + * all of which mean the syscall is available. + */ + getrandom_available = 1; + } else { +#ifdef INVARIANTS + if (errno != ENOSYS) { + panic("getrandom syscall returned unexpected error: %d", errno); + } +#endif + /* If the syscall isn't available, fall back to /dev/urandom. */ +#endif + fd = open("/dev/urandom", O_RDONLY); +#ifdef __NR_getrandom + } +#endif + return; +} + +void +read_random(void *buf, size_t size) +{ + size_t position; + ssize_t n; + + position = 0; + while (position < size) { +#ifdef __NR_getrandom + if (getrandom_available) { + /* Using syscall directly because getrandom isn't present in glibc < 2.25. + */ + n = syscall(__NR_getrandom, (char *)buf + position, size - position, 0); + if (n > 0) { +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) + /* Need to do this because MSan doesn't realize that syscall has + * initialized the output buffer. + */ + __msan_unpoison(buf + position, n); +#endif +#endif + position += n; + } else if (errno != EINTR && errno != EAGAIN) { +#ifdef INVARIANTS + panic("getrandom syscall returned unexpected error: %d", errno); +#endif + } + } else +#endif /* __NR_getrandom */ + { + n = read(fd, (char *)buf + position, size - position); + if (n > 0) { + position += n; + } + } + } + return; +} + +void +finish_random(void) +{ + if (fd != -1) { + close(fd); + } + return; +} +#elif defined(__Fuchsia__) +#include + +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) +{ + zx_cprng_draw(buf, size); + return; +} + +void +finish_random(void) +{ + return; +} +#elif defined(__native_client__) +#include + +void +init_random(void) +{ + return; +} + +void +read_random(void *buf, size_t size) +{ + size_t position; + size_t n; + + position = 0; + while (position < size) { + if (nacl_secure_random((char *)buf + position, size - position, &n) == 0) + position += n; + } + } + return; +} + +void +finish_random(void) +{ + return; +} +#else +#error "Unknown platform. Please provide platform specific RNG." +#endif diff --git a/netwerk/sctp/src/user_environment.h b/netwerk/sctp/src/user_environment.h index 6de9d9a5a3..930d085637 100755 --- a/netwerk/sctp/src/user_environment.h +++ b/netwerk/sctp/src/user_environment.h @@ -30,15 +30,24 @@ #ifndef _USER_ENVIRONMENT_H_ #define _USER_ENVIRONMENT_H_ + +#if defined(_WIN32) +// Needed for unified build so that rand_s is available to all unified +// sources. +#if !defined(_CRT_RAND_S) && !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define _CRT_RAND_S +#endif +#endif + /* __Userspace__ */ #include -#ifdef __Userspace_os_FreeBSD +#ifdef __FreeBSD__ #ifndef _SYS_MUTEX_H_ #include #endif #endif -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) #include "netinet/sctp_os_userspace.h" #endif @@ -54,7 +63,7 @@ extern int maxsockets; extern int hz; -/* The following two ints define a range of available ephermal ports. */ +/* The following two ints define a range of available ephemeral ports. */ extern int ipport_firstauto, ipport_lastauto; /* nmbclusters is used in sctp_usrreq.c (e.g., sctp_init). In the FreeBSD kernel, @@ -62,12 +71,14 @@ extern int ipport_firstauto, ipport_lastauto; */ extern int nmbclusters; -#if !defined (__Userspace_os_Windows) -#define min(a,b) ((a)>(b)?(b):(a)) -#define max(a,b) ((a)>(b)?(a):(b)) +#if !defined(_MSC_VER) && !defined(__MINGW32__) +#define min(a,b) (((a)>(b))?(b):(a)) +#define max(a,b) (((a)>(b))?(a):(b)) #endif -extern int read_random(void *buf, int count); +void init_random(void); +void read_random(void *, size_t); +void finish_random(void); /* errno's may differ per OS. errno.h now included in sctp_os_userspace.h */ /* Source: /usr/src/sys/sys/errno.h */ @@ -82,23 +93,34 @@ extern int read_random(void *buf, int count); /* Source ip_output.c. extern'd in ip_var.h */ extern u_short ip_id; -#if defined(__Userspace_os_Linux) +#if defined(__linux__) #define IPV6_VERSION 0x60 #endif + #if defined(INVARIANTS) -#define panic(args...) \ - do { \ - SCTP_PRINTF(args);\ - exit(1); \ -} while (0) +#include + +#if defined(_WIN32) +static inline void __declspec(noreturn) +#else +static inline void __attribute__((__noreturn__)) #endif +terminate_non_graceful(void) { + abort(); +} + +#define panic(...) \ + do { \ + SCTP_PRINTF("%s(): ", __func__); \ + SCTP_PRINTF(__VA_ARGS__); \ + SCTP_PRINTF("\n"); \ + terminate_non_graceful(); \ +} while (0) -#if defined(INVARIANTS) #define KASSERT(cond, args) \ do { \ if (!(cond)) { \ - printf args ;\ - exit(1); \ + panic args ; \ } \ } while (0) #else diff --git a/netwerk/sctp/src/user_inpcb.h b/netwerk/sctp/src/user_inpcb.h index c557cd0a13..2e6e9334ea 100755 --- a/netwerk/sctp/src/user_inpcb.h +++ b/netwerk/sctp/src/user_inpcb.h @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -35,8 +35,6 @@ #include /* was */ -#define in6pcb inpcb /* for KAME src sync over BSD*'s */ -#define in6p_sp inp_sp /* for KAME src sync over BSD*'s */ struct inpcbpolicy; /* @@ -56,7 +54,7 @@ LIST_HEAD(inpcbporthead, inpcbport); * the following structure. */ struct in_addr_4in6 { - u_int32_t ia46_pad32[3]; + uint32_t ia46_pad32[3]; struct in_addr ia46_addr4; }; @@ -65,8 +63,8 @@ struct in_addr_4in6 { * some extra padding to accomplish this. */ struct in_endpoints { - u_int16_t ie_fport; /* foreign port */ - u_int16_t ie_lport; /* local port */ + uint16_t ie_fport; /* foreign port */ + uint16_t ie_lport; /* local port */ /* protocol dependent part, local and foreign addr */ union { /* foreign host table entry */ @@ -89,13 +87,13 @@ struct in_endpoints { * references. */ struct in_conninfo { - u_int8_t inc_flags; - u_int8_t inc_len; - u_int16_t inc_pad; /* XXX alignment for in_endpoints */ + uint8_t inc_flags; + uint8_t inc_len; + uint16_t inc_pad; /* XXX alignment for in_endpoints */ /* protocol dependent part */ struct in_endpoints inc_ie; }; -#define inc_isipv6 inc_flags /* temp compatability */ +#define inc_isipv6 inc_flags /* temp compatibility */ #define inc_fport inc_ie.ie_fport #define inc_lport inc_ie.ie_lport #define inc_faddr inc_ie.ie_faddr @@ -112,7 +110,7 @@ struct inpcb { struct inpcbinfo *inp_pcbinfo; /* PCB list info */ struct socket *inp_socket; /* back pointer to socket */ - u_int32_t inp_flow; + uint32_t inp_flow; int inp_flags; /* generic IP/datagram flags */ u_char inp_vflag; /* IP version flag (v4/v6) */ @@ -326,13 +324,11 @@ struct inpcbinfo { #define INPLOOKUP_WILDCARD 1 #define sotoinpcb(so) ((struct inpcb *)(so)->so_pcb) -#define sotoin6pcb(so) sotoinpcb(so) /* for KAME src sync over BSD*'s */ #define INP_SOCKAF(so) so->so_proto->pr_domain->dom_family #define INP_CHECK_SOCKAF(so, af) (INP_SOCKAF(so) == af) -/* #ifdef _KERNEL */ extern int ipport_reservedhigh; extern int ipport_reservedlow; extern int ipport_lowfirstauto; @@ -373,6 +369,5 @@ void ipport_tick(void *xtp); */ void db_print_inpcb(struct inpcb *inp, const char *name, int indent); -/* #endif _KERNEL */ #endif /* !_NETINET_IN_PCB_H_ */ diff --git a/netwerk/sctp/src/user_ip6_var.h b/netwerk/sctp/src/user_ip6_var.h index f5e4a60e4f..b970fb8fa5 100755 --- a/netwerk/sctp/src/user_ip6_var.h +++ b/netwerk/sctp/src/user_ip6_var.h @@ -39,7 +39,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -60,16 +60,16 @@ #ifndef _USER_IP6_VAR_H_ #define _USER_IP6_VAR_H_ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) struct ip6_hdr { union { struct ip6_hdrctl { - u_int32_t ip6_un1_flow; /* 20 bits of flow-ID */ - u_int16_t ip6_un1_plen; /* payload length */ - u_int8_t ip6_un1_nxt; /* next header */ - u_int8_t ip6_un1_hlim; /* hop limit */ + uint32_t ip6_un1_flow; /* 20 bits of flow-ID */ + uint16_t ip6_un1_plen; /* payload length */ + uint8_t ip6_un1_nxt; /* next header */ + uint8_t ip6_un1_hlim; /* hop limit */ } ip6_un1; - u_int8_t ip6_un2_vfc; /* 4 bits version, top 4 bits class */ + uint8_t ip6_un2_vfc; /* 4 bits version, top 4 bits class */ } ip6_ctlun; struct in6_addr ip6_src; /* source address */ struct in6_addr ip6_dst; /* destination address */ @@ -84,18 +84,16 @@ struct ip6_hdr { #define IPV6_VERSION 0x60 #endif -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #define s6_addr16 u.Word #endif -#if !defined(__Userspace_os_Windows) -#if !defined(__Userspace_os_Linux) +#if !defined(_WIN32) && !defined(__linux__) && !defined(__EMSCRIPTEN__) #define s6_addr8 __u6_addr.__u6_addr8 #define s6_addr16 __u6_addr.__u6_addr16 #define s6_addr32 __u6_addr.__u6_addr32 #endif -#endif -#if !defined(__Userspace_os_FreeBSD) && !defined(__Userspace_os_OpenBSD) && !defined(__Userspace_os_DragonFly) +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) struct route_in6 { struct rtentry *ro_rt; struct llentry *ro_lle; diff --git a/netwerk/sctp/src/user_ip_icmp.h b/netwerk/sctp/src/user_ip_icmp.h index e713417da8..a993411a17 100755 --- a/netwerk/sctp/src/user_ip_icmp.h +++ b/netwerk/sctp/src/user_ip_icmp.h @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -40,8 +40,8 @@ * Internal of an ICMP Router Advertisement */ struct icmp_ra_addr { - u_int32_t ira_addr; - u_int32_t ira_preference; + uint32_t ira_addr; + uint32_t ira_preference; }; /* @@ -53,19 +53,19 @@ struct icmphdr { u_short icmp_cksum; /* ones complement cksum of struct */ }; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #pragma pack (push, 1) struct icmp6_hdr { - u_int8_t icmp6_type; - u_int8_t icmp6_code; - u_int16_t icmp6_cksum; + uint8_t icmp6_type; + uint8_t icmp6_code; + uint16_t icmp6_cksum; union { - u_int32_t icmp6_un_data32[1]; - u_int16_t icmp6_un_data16[2]; - u_int8_t icmp6_un_data8[4]; + uint32_t icmp6_un_data32[1]; + uint16_t icmp6_un_data16[2]; + uint8_t icmp6_un_data8[4]; } icmp6_dataun; }; -#pragma pack() +#pragma pack(pop) #define icmp6_data32 icmp6_dataun.icmp6_un_data32 #define icmp6_mtu icmp6_data32[0] @@ -98,7 +98,7 @@ struct icmp { struct ih_rtradv { u_char irt_num_addrs; u_char irt_wpa; - u_int16_t irt_lifetime; + uint16_t irt_lifetime; } ih_rtradv; } icmp_hun; #define icmp_pptr icmp_hun.ih_pptr @@ -126,7 +126,7 @@ struct icmp { /* options and then 64 bits of data */ } id_ip; struct icmp_ra_addr id_radv; - u_int32_t id_mask; + uint32_t id_mask; char id_data[1]; } icmp_dun; #define icmp_otime icmp_dun.id_ts.its_otime diff --git a/netwerk/sctp/src/user_malloc.h b/netwerk/sctp/src/user_malloc.h index 4ea954898e..c588e094af 100755 --- a/netwerk/sctp/src/user_malloc.h +++ b/netwerk/sctp/src/user_malloc.h @@ -12,7 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,11 +37,11 @@ /*__Userspace__*/ #include #include -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) #include #include #else -#if defined(_MSC_VER) && _MSC_VER >= 1600 +#if (defined(_MSC_VER) && _MSC_VER >= 1600) || (defined(__MSVCRT_VERSION__) && __MSVCRT_VERSION__ >= 1400) #include #elif defined(SCTP_STDINT_INCLUDE) #include SCTP_STDINT_INCLUDE @@ -195,72 +195,9 @@ Start copy: Copied code for __Userspace__ */ #define MALLOC(space, cast, size, type, flags) \ ((space) = (cast)malloc((u_long)(size))); \ do { \ - if(flags & M_ZERO) { \ + if (flags & M_ZERO) { \ memset(space,0,size); \ } \ } while (0); - -/* End copy: Copied code for __Userspace__ */ - -#if 0 -#ifdef _KERNEL -#define MALLOC_DEFINE(type, shortdesc, longdesc) \ - struct malloc_type type[1] = { \ - { NULL, 0, 0, 0, 0, 0, M_MAGIC, shortdesc, NULL, NULL, \ - NULL, 0, NULL, NULL, 0, 0 } \ - }; \ - SYSINIT(type##_init, SI_SUB_KMEM, SI_ORDER_SECOND, malloc_init, \ - type); \ - SYSUNINIT(type##_uninit, SI_SUB_KMEM, SI_ORDER_ANY, \ - malloc_uninit, type) - - -#define MALLOC_DECLARE(type) \ - extern struct malloc_type type[1] - -MALLOC_DECLARE(M_CACHE); -MALLOC_DECLARE(M_DEVBUF); -MALLOC_DECLARE(M_TEMP); - -MALLOC_DECLARE(M_IP6OPT); /* for INET6 */ -MALLOC_DECLARE(M_IP6NDP); /* for INET6 */ - -/* - * Deprecated macro versions of not-quite-malloc() and free(). - */ -#define MALLOC(space, cast, size, type, flags) \ - ((space) = (cast)malloc((u_long)(size), (type), (flags))) -#define FREE(addr, type) free((addr), (type)) - -/* - * XXX this should be declared in , but that tends to fail - * because is included in a header before the source file - * has a chance to include to get MALLOC_DECLARE() defined. - */ -MALLOC_DECLARE(M_IOV); - -extern struct mtx malloc_mtx; - -/* XXX struct malloc_type is unused for contig*(). */ -void contigfree(void *addr, unsigned long size, struct malloc_type *type); -void *contigmalloc(unsigned long size, struct malloc_type *type, int flags, - vm_paddr_t low, vm_paddr_t high, unsigned long alignment, - unsigned long boundary); -void free(void *addr, struct malloc_type *type); -void *malloc(unsigned long size, struct malloc_type *type, int flags); -void malloc_init(void *); -int malloc_last_fail(void); -void malloc_type_allocated(struct malloc_type *type, unsigned long size); -void malloc_type_freed(struct malloc_type *type, unsigned long size); -void malloc_uninit(void *); -void *realloc(void *addr, unsigned long size, struct malloc_type *type, - int flags); -void *reallocf(void *addr, unsigned long size, struct malloc_type *type, - int flags); - - -#endif /* _KERNEL */ -#endif - #endif /* !_SYS_MALLOC_H_ */ diff --git a/netwerk/sctp/src/user_mbuf.c b/netwerk/sctp/src/user_mbuf.c index de8f0fbc8c..85badc0fa5 100755 --- a/netwerk/sctp/src/user_mbuf.c +++ b/netwerk/sctp/src/user_mbuf.c @@ -46,7 +46,6 @@ #include "user_atomic.h" #include "netinet/sctp_pcb.h" -struct mbstat mbstat; #define KIPC_MAX_LINKHDR 4 /* int: max length of link header (see sys/sysclt.h) */ #define KIPC_MAX_PROTOHDR 5 /* int: max length of network header (see sys/sysclt.h)*/ int max_linkhdr = KIPC_MAX_LINKHDR; @@ -81,8 +80,6 @@ static void mb_dtor_clust(void *, void *); static int mbuf_constructor_dup(struct mbuf *m, int pkthdr, short type) { int flags = pkthdr; - if (type == MT_NOINIT) - return (0); m->m_next = NULL; m->m_nextpkt = NULL; @@ -121,7 +118,7 @@ m_get(int how, short type) mbuf_mb_args.type = type; #endif /* Mbuf master zone, zone_mbuf, has already been - * created in mbuf_init() */ + * created in mbuf_initialize() */ mret = SCTP_ZONE_GET(zone_mbuf, struct mbuf); #if defined(SCTP_SIMPLE_ALLOCATOR) mb_ctor_mbuf(mret, &mbuf_mb_args, 0); @@ -204,59 +201,59 @@ m_free(struct mbuf *m) } -static int clust_constructor_dup(caddr_t m_clust, struct mbuf* m) +static void +clust_constructor_dup(caddr_t m_clust, struct mbuf* m) { u_int *refcnt; int type, size; + if (m == NULL) { + return; + } /* Assigning cluster of MCLBYTES. TODO: Add jumbo frame functionality */ type = EXT_CLUSTER; size = MCLBYTES; refcnt = SCTP_ZONE_GET(zone_ext_refcnt, u_int); /*refcnt = (u_int *)umem_cache_alloc(zone_ext_refcnt, UMEM_DEFAULT);*/ - if (refcnt == NULL) { #if !defined(SCTP_SIMPLE_ALLOCATOR) + if (refcnt == NULL) { umem_reap(); -#endif refcnt = SCTP_ZONE_GET(zone_ext_refcnt, u_int); /*refcnt = (u_int *)umem_cache_alloc(zone_ext_refcnt, UMEM_DEFAULT);*/ } +#endif *refcnt = 1; - if (m != NULL) { - m->m_ext.ext_buf = (caddr_t)m_clust; - m->m_data = m->m_ext.ext_buf; - m->m_flags |= M_EXT; - m->m_ext.ext_free = NULL; - m->m_ext.ext_args = NULL; - m->m_ext.ext_size = size; - m->m_ext.ext_type = type; - m->m_ext.ref_cnt = refcnt; - } - - return (0); + m->m_ext.ext_buf = (caddr_t)m_clust; + m->m_data = m->m_ext.ext_buf; + m->m_flags |= M_EXT; + m->m_ext.ext_free = NULL; + m->m_ext.ext_args = NULL; + m->m_ext.ext_size = size; + m->m_ext.ext_type = type; + m->m_ext.ref_cnt = refcnt; + return; } - /* __Userspace__ */ void m_clget(struct mbuf *m, int how) { caddr_t mclust_ret; #if defined(SCTP_SIMPLE_ALLOCATOR) - struct clust_args clust_mb_args; + struct clust_args clust_mb_args_l; #endif if (m->m_flags & M_EXT) { SCTPDBG(SCTP_DEBUG_USR, "%s: %p mbuf already has cluster\n", __func__, (void *)m); } m->m_ext.ext_buf = (char *)NULL; #if defined(SCTP_SIMPLE_ALLOCATOR) - clust_mb_args.parent_mbuf = m; + clust_mb_args_l.parent_mbuf = m; #endif mclust_ret = SCTP_ZONE_GET(zone_clust, char); #if defined(SCTP_SIMPLE_ALLOCATOR) - mb_ctor_clust(mclust_ret, &clust_mb_args, 0); + mb_ctor_clust(mclust_ret, &clust_mb_args_l, 0); #endif /*mclust_ret = umem_cache_alloc(zone_clust, UMEM_DEFAULT);*/ /* @@ -272,9 +269,9 @@ m_clget(struct mbuf *m, int how) mclust_ret = SCTP_ZONE_GET(zone_clust, char); #endif /*mclust_ret = umem_cache_alloc(zone_clust, UMEM_DEFAULT);*/ - if (NULL == mclust_ret) { - SCTPDBG(SCTP_DEBUG_USR, "Memory allocation failure in %s\n", __func__); - } + /* if (NULL == mclust_ret) { */ + SCTPDBG(SCTP_DEBUG_USR, "Memory allocation failure in %s\n", __func__); + /* } */ } #if USING_MBUF_CONSTRUCTOR @@ -286,6 +283,166 @@ m_clget(struct mbuf *m, int how) #endif } +struct mbuf * +m_getm2(struct mbuf *m, int len, int how, short type, int flags, int allonebuf) +{ + struct mbuf *mb, *nm = NULL, *mtail = NULL; + int size, mbuf_threshold, space_needed = len; + + KASSERT(len >= 0, ("%s: len is < 0", __func__)); + + /* Validate flags. */ + flags &= (M_PKTHDR | M_EOR); + + /* Packet header mbuf must be first in chain. */ + if ((flags & M_PKTHDR) && m != NULL) { + flags &= ~M_PKTHDR; + } + + if (allonebuf == 0) + mbuf_threshold = SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count); + else + mbuf_threshold = 1; + + /* Loop and append maximum sized mbufs to the chain tail. */ + while (len > 0) { + if ((!allonebuf && len >= MCLBYTES) || (len > (int)(((mbuf_threshold - 1) * MLEN) + MHLEN))) { + mb = m_gethdr(how, type); + MCLGET(mb, how); + size = MCLBYTES; + /* SCTP_BUF_LEN(mb) = MCLBYTES; */ + } else if (flags & M_PKTHDR) { + mb = m_gethdr(how, type); + if (len < MHLEN) { + size = len; + } else { + size = MHLEN; + } + } else { + mb = m_get(how, type); + if (len < MLEN) { + size = len; + } else { + size = MLEN; + } + } + + /* Fail the whole operation if one mbuf can't be allocated. */ + if (mb == NULL) { + if (nm != NULL) + m_freem(nm); + return (NULL); + } + + if (allonebuf != 0 && size < space_needed) { + m_freem(mb); + return (NULL); + } + + /* Book keeping. */ + len -= size; + if (mtail != NULL) + mtail->m_next = mb; + else + nm = mb; + mtail = mb; + flags &= ~M_PKTHDR; /* Only valid on the first mbuf. */ + } + if (flags & M_EOR) { + mtail->m_flags |= M_EOR; /* Only valid on the last mbuf. */ + } + + /* If mbuf was supplied, append new chain to the end of it. */ + if (m != NULL) { + for (mtail = m; mtail->m_next != NULL; mtail = mtail->m_next); + mtail->m_next = nm; + mtail->m_flags &= ~M_EOR; + } else { + m = nm; + } + + return (m); +} + +/* + * Copy the contents of uio into a properly sized mbuf chain. + */ +struct mbuf * +m_uiotombuf(struct uio *uio, int how, int len, int align, int flags) +{ + struct mbuf *m, *mb; + int error, length; + ssize_t total; + int progress = 0; + + /* + * len can be zero or an arbitrary large value bound by + * the total data supplied by the uio. + */ + if (len > 0) + total = min(uio->uio_resid, len); + else + total = uio->uio_resid; + /* + * The smallest unit returned by m_getm2() is a single mbuf + * with pkthdr. We can't align past it. + */ + if (align >= MHLEN) + return (NULL); + /* + * Give us the full allocation or nothing. + * If len is zero return the smallest empty mbuf. + */ + m = m_getm2(NULL, (int)max(total + align, 1), how, MT_DATA, flags, 0); + if (m == NULL) + return (NULL); + m->m_data += align; + + /* Fill all mbufs with uio data and update header information. */ + for (mb = m; mb != NULL; mb = mb->m_next) { + length = (int)min(M_TRAILINGSPACE(mb), total - progress); + error = uiomove(mtod(mb, void *), length, uio); + if (error) { + m_freem(m); + return (NULL); + } + + mb->m_len = length; + progress += length; + if (flags & M_PKTHDR) + m->m_pkthdr.len += length; + } + KASSERT(progress == total, ("%s: progress != total", __func__)); + + return (m); +} + +u_int +m_length(struct mbuf *m0, struct mbuf **last) +{ + struct mbuf *m; + u_int len; + + len = 0; + for (m = m0; m != NULL; m = m->m_next) { + len += m->m_len; + if (m->m_next == NULL) + break; + } + if (last != NULL) + *last = m; + return (len); +} + +struct mbuf * +m_last(struct mbuf *m) +{ + while (m->m_next) { + m = m->m_next; + } + return (m); +} + /* * Unlink a tag from the list of tags associated with an mbuf. */ @@ -313,7 +470,7 @@ m_tag_free(struct m_tag *t) * XXX probably should be called m_tag_init, but that was already taken. */ static __inline void -m_tag_setup(struct m_tag *t, u_int32_t cookie, int type, int len) +m_tag_setup(struct m_tag *t, uint32_t cookie, int type, int len) { t->m_tag_id = type; @@ -327,12 +484,8 @@ m_tag_setup(struct m_tag *t, u_int32_t cookie, int type, int len) /************ End functions to substitute umem_cache_alloc and umem_cache_free **************/ -/* __Userspace__ - * TODO: mbuf_init must be called in the initialization routines - * of userspace stack. - */ void -mbuf_init(void *dummy) +mbuf_initialize(void *dummy) { /* @@ -351,7 +504,7 @@ mbuf_init(void *dummy) #else zone_mbuf = umem_cache_create(MBUF_MEM_NAME, MSIZE, 0, mb_ctor_mbuf, mb_dtor_mbuf, NULL, - NUULL, + NULL, NULL, 0); #endif /*zone_ext_refcnt = umem_cache_create(MBUF_EXTREFCNT_MEM_NAME, sizeof(u_int), 0, @@ -380,26 +533,6 @@ mbuf_init(void *dummy) * */ - - /* - * [Re]set counters and local statistics knobs. - * - */ - - mbstat.m_mbufs = 0; - mbstat.m_mclusts = 0; - mbstat.m_drain = 0; - mbstat.m_msize = MSIZE; - mbstat.m_mclbytes = MCLBYTES; - mbstat.m_minclsize = MINCLSIZE; - mbstat.m_mlen = MLEN; - mbstat.m_mhlen = MHLEN; - mbstat.m_numtypes = MT_NTYPES; - - mbstat.m_mcfail = mbstat.m_mpfail = 0; - mbstat.sf_iocnt = 0; - mbstat.sf_allocwait = mbstat.sf_allocfail = 0; - } @@ -442,13 +575,6 @@ mb_ctor_mbuf(void *mem, void *arg, int flgs) flags = args->flags; type = args->type; - /* - * The mbuf is initialized later. - * - */ - if (type == MT_NOINIT) - return (0); - m->m_next = NULL; m->m_nextpkt = NULL; m->m_len = 0; @@ -732,11 +858,10 @@ m_pullup(struct mbuf *n, int len) if (n->m_flags & M_PKTHDR) M_MOVE_PKTHDR(m, n); } - space = &m->m_dat[MLEN] - (m->m_data + m->m_len); + space = (int)(&m->m_dat[MLEN] - (m->m_data + m->m_len)); do { count = min(min(max(len, max_protohdr), space), n->m_len); - bcopy(mtod(n, caddr_t), mtod(m, caddr_t) + m->m_len, - (u_int)count); + memcpy(mtod(m, caddr_t) + m->m_len,mtod(n, caddr_t), (u_int)count); len -= count; m->m_len += count; n->m_len -= count; @@ -754,7 +879,6 @@ m_pullup(struct mbuf *n, int len) return (m); bad: m_freem(n); - mbstat.m_mpfail++; /* XXX: No consistency. */ return (NULL); } @@ -890,19 +1014,17 @@ m_pulldown(struct mbuf *m, int off, int len, int *offp) * easy cases first. * we need to use m_copydata() to get data from m_next, 0>. */ - if ((off == 0 || offp) && M_TRAILINGSPACE(n) >= tlen - && writable) { + if ((off == 0 || offp) && (M_TRAILINGSPACE(n) >= tlen) && writable) { m_copydata(n->m_next, 0, tlen, mtod(n, caddr_t) + n->m_len); n->m_len += tlen; m_adj(n->m_next, tlen); goto ok; } - if ((off == 0 || offp) && M_LEADINGSPACE(n->m_next) >= hlen - && writable) { + if ((off == 0 || offp) && (M_LEADINGSPACE(n->m_next) >= hlen) && writable) { n->m_next->m_data -= hlen; n->m_next->m_len += hlen; - bcopy(mtod(n, caddr_t) + off, mtod(n->m_next, caddr_t), hlen); + memcpy( mtod(n->m_next, caddr_t), mtod(n, caddr_t) + off,hlen); n->m_len -= hlen; n = n->m_next; off = 0; @@ -924,7 +1046,7 @@ m_pulldown(struct mbuf *m, int off, int len, int *offp) } /* get hlen from into */ o->m_len = hlen; - bcopy(mtod(n, caddr_t) + off, mtod(o, caddr_t), hlen); + memcpy(mtod(o, caddr_t), mtod(n, caddr_t) + off, hlen); n->m_len -= hlen; /* get tlen from m_next, 0> into */ m_copydata(n->m_next, 0, tlen, mtod(o, caddr_t) + o->m_len); @@ -992,7 +1114,13 @@ m_copym(struct mbuf *m, int off0, int len, int wait) KASSERT(off >= 0, ("m_copym, negative off %d", off)); KASSERT(len >= 0, ("m_copym, negative len %d", len)); + KASSERT(m != NULL, ("m_copym, m is NULL")); +#if !defined(INVARIANTS) + if (m == NULL) { + return (NULL); + } +#endif if (off == 0 && m->m_flags & M_PKTHDR) copyhdr = 1; while (off > 0) { @@ -1030,21 +1158,17 @@ m_copym(struct mbuf *m, int off0, int len, int wait) n->m_data = m->m_data + off; mb_dupcl(n, m); } else - bcopy(mtod(m, caddr_t)+off, mtod(n, caddr_t), - (u_int)n->m_len); + memcpy(mtod(n, caddr_t), mtod(m, caddr_t) + off, (u_int)n->m_len); if (len != M_COPYALL) len -= n->m_len; off = 0; m = m->m_next; np = &n->m_next; } - if (top == NULL) - mbstat.m_mcfail++; /* XXX: No consistency. */ return (top); nospace: m_freem(top); - mbstat.m_mcfail++; /* XXX: No consistency. */ return (NULL); } @@ -1080,6 +1204,8 @@ int m_dup_pkthdr(struct mbuf *to, struct mbuf *from, int how) { + KASSERT(to, ("m_dup_pkthdr: to is NULL")); + KASSERT(from, ("m_dup_pkthdr: from is NULL")); to->m_flags = (from->m_flags & M_COPYFLAGS) | (to->m_flags & M_EXT); if ((to->m_flags & M_EXT) == 0) to->m_data = to->m_pktdat; @@ -1098,13 +1224,13 @@ m_tag_copy(struct m_tag *t, int how) p = m_tag_alloc(t->m_tag_cookie, t->m_tag_id, t->m_tag_len, how); if (p == NULL) return (NULL); - bcopy(t + 1, p + 1, t->m_tag_len); /* Copy the data */ + memcpy(p + 1, t + 1, t->m_tag_len); /* Copy the data */ return p; } /* Get a packet tag structure along with specified data following. */ struct m_tag * -m_tag_alloc(u_int32_t cookie, int type, int len, int wait) +m_tag_alloc(uint32_t cookie, int type, int len, int wait) { struct m_tag *t; @@ -1146,7 +1272,7 @@ m_copyback(struct mbuf *m0, int off, int len, caddr_t cp) n = m_get(M_NOWAIT, m->m_type); if (n == NULL) goto out; - bzero(mtod(n, caddr_t), MLEN); + memset(mtod(n, caddr_t), 0, MLEN); n->m_len = min(MLEN, len + off); m->m_next = n; } @@ -1154,7 +1280,7 @@ m_copyback(struct mbuf *m0, int off, int len, caddr_t cp) } while (len > 0) { mlen = min (m->m_len - off, len); - bcopy(cp, off + mtod(m, caddr_t), (u_int)mlen); + memcpy(off + mtod(m, caddr_t), cp, (u_int)mlen); cp += mlen; len -= mlen; mlen += off; @@ -1175,6 +1301,38 @@ out: if (((m = m0)->m_flags & M_PKTHDR) && (m->m_pkthdr.len < totlen)) m->m_pkthdr.len = totlen; } +/* + * Apply function f to the data in an mbuf chain starting "off" bytes from + * the beginning, continuing for "len" bytes. + */ +int +m_apply(struct mbuf *m, int off, int len, + int (*f)(void *, void *, u_int), void *arg) +{ + u_int count; + int rval; + + KASSERT(off >= 0, ("m_apply, negative off %d", off)); + KASSERT(len >= 0, ("m_apply, negative len %d", len)); + while (off > 0) { + KASSERT(m != NULL, ("m_apply, offset > size of mbuf chain")); + if (off < m->m_len) + break; + off -= m->m_len; + m = m->m_next; + } + while (len > 0) { + KASSERT(m != NULL, ("m_apply, offset > size of mbuf chain")); + count = min(m->m_len - off, len); + rval = (*f)(arg, mtod(m, caddr_t) + off, count); + if (rval) + return (rval); + len -= count; + off = 0; + m = m->m_next; + } + return (0); +} /* * Lesser-used path for M_PREPEND: @@ -1198,7 +1356,7 @@ m_prepend(struct mbuf *m, int len, int how) M_MOVE_PKTHDR(mn, m); mn->m_next = m; m = mn; - if(m->m_flags & M_PKTHDR) { + if (m->m_flags & M_PKTHDR) { if (len < MHLEN) MH_ALIGN(m, len); } else { @@ -1230,7 +1388,7 @@ m_copydata(const struct mbuf *m, int off, int len, caddr_t cp) while (len > 0) { KASSERT(m != NULL, ("m_copydata, length > size of mbuf chain")); count = min(m->m_len - off, len); - bcopy(mtod(m, caddr_t) + off, cp, count); + memcpy(cp, mtod(m, caddr_t) + off, count); len -= count; cp += count; off = 0; @@ -1257,7 +1415,7 @@ m_cat(struct mbuf *m, struct mbuf *n) return; } /* splat the data from one into the other */ - bcopy(mtod(n, caddr_t), mtod(m, caddr_t) + m->m_len, (u_int)n->m_len); + memcpy(mtod(m, caddr_t) + m->m_len, mtod(n, caddr_t), (u_int)n->m_len); m->m_len += n->m_len; n = m_free(n); } @@ -1400,7 +1558,7 @@ m_split(struct mbuf *m0, int len0, int wait) n->m_data = m->m_data + len; mb_dupcl(n, m); } else { - bcopy(mtod(m, caddr_t) + len, mtod(n, caddr_t), remain); + memcpy(mtod(n, caddr_t), mtod(m, caddr_t) + len, remain); } n->m_len = remain; m->m_len = len; @@ -1421,7 +1579,7 @@ pack_send_buffer(caddr_t buffer, struct mbuf* mb){ do { count_to_copy = mb->m_len; - bcopy(mtod(mb, caddr_t), buffer+offset, count_to_copy); + memcpy(buffer+offset, mtod(mb, caddr_t), count_to_copy); offset += count_to_copy; total_count_copied += count_to_copy; mb = mb->m_next; diff --git a/netwerk/sctp/src/user_mbuf.h b/netwerk/sctp/src/user_mbuf.h index f3717407e1..268988f912 100755 --- a/netwerk/sctp/src/user_mbuf.h +++ b/netwerk/sctp/src/user_mbuf.h @@ -55,10 +55,13 @@ struct mbuf * m_gethdr(int how, short type); struct mbuf * m_get(int how, short type); struct mbuf * m_free(struct mbuf *m); void m_clget(struct mbuf *m, int how); - +struct mbuf * m_getm2(struct mbuf *m, int len, int how, short type, int flags, int allonebuf); +struct mbuf *m_uiotombuf(struct uio *uio, int how, int len, int align, int flags); +u_int m_length(struct mbuf *m0, struct mbuf **last); +struct mbuf *m_last(struct mbuf *m); /* mbuf initialization function */ -void mbuf_init(void *); +void mbuf_initialize(void *); #define M_MOVE_PKTHDR(to, from) m_move_pkthdr((to), (from)) #define MGET(m, how, type) ((m) = m_get((how), (type))) @@ -107,9 +110,10 @@ void m_cat(struct mbuf *m, struct mbuf *n); void m_adj(struct mbuf *, int); void mb_free_ext(struct mbuf *); void m_freem(struct mbuf *); -struct m_tag *m_tag_alloc(u_int32_t, int, int, int); +struct m_tag *m_tag_alloc(uint32_t, int, int, int); struct mbuf *m_copym(struct mbuf *, int, int, int); void m_copyback(struct mbuf *, int, int, caddr_t); +int m_apply(struct mbuf *, int, int, int (*)(void *, void *, u_int), void *arg); struct mbuf *m_pullup(struct mbuf *, int); struct mbuf *m_pulldown(struct mbuf *, int off, int len, int *offp); int m_dup_pkthdr(struct mbuf *, struct mbuf *, int); @@ -122,38 +126,6 @@ void m_copydata(const struct mbuf *, int, int, caddr_t); #define MBUF_CLUSTER_MEM_NAME "mbuf_cluster" #define MBUF_EXTREFCNT_MEM_NAME "mbuf_ext_refcnt" -#define MT_NOINIT 255 /* Not a type but a flag to allocate - a non-initialized mbuf */ - -/* - * General mbuf allocator statistics structure. - * __Userspace__ mbstat may be useful for gathering statistics. - * In the kernel many of these statistics are no longer used as - * they track allocator statistics through kernel UMA's built in statistics mechanism. - */ -struct mbstat { - u_long m_mbufs; /* XXX */ - u_long m_mclusts; /* XXX */ - - u_long m_drain; /* times drained protocols for space */ - u_long m_mcfail; /* XXX: times m_copym failed */ - u_long m_mpfail; /* XXX: times m_pullup failed */ - u_long m_msize; /* length of an mbuf */ - u_long m_mclbytes; /* length of an mbuf cluster */ - u_long m_minclsize; /* min length of data to allocate a cluster */ - u_long m_mlen; /* length of data in an mbuf */ - u_long m_mhlen; /* length of data in a header mbuf */ - - /* Number of mbtypes (gives # elems in mbtypes[] array: */ - short m_numtypes; - - /* XXX: Sendfile stats should eventually move to their own struct */ - u_long sf_iocnt; /* times sendfile had to do disk I/O */ - u_long sf_allocfail; /* times sfbuf allocation failed */ - u_long sf_allocwait; /* times sfbuf allocation had to wait */ -}; - - /* * Mbufs are of a single size, MSIZE (sys/param.h), which includes overhead. * An mbuf may add a single "mbuf cluster" of size MCLBYTES (also in @@ -187,9 +159,9 @@ struct m_hdr { */ struct m_tag { SLIST_ENTRY(m_tag) m_tag_link; /* List of packet tags */ - u_int16_t m_tag_id; /* Tag ID */ - u_int16_t m_tag_len; /* Length of data */ - u_int32_t m_tag_cookie; /* ABI/Module ID */ + uint16_t m_tag_id; /* Tag ID */ + uint16_t m_tag_len; /* Length of data */ + uint32_t m_tag_cookie; /* ABI/Module ID */ void (*m_tag_free)(struct m_tag *); }; @@ -204,8 +176,8 @@ struct pkthdr { /* variables for hardware checksum */ int csum_flags; /* flags regarding checksum */ int csum_data; /* data field used by csum routines */ - u_int16_t tso_segsz; /* TSO segment size */ - u_int16_t ether_vtag; /* Ethernet 802.1p+q vlan tag */ + uint16_t tso_segsz; /* TSO segment size */ + uint16_t ether_vtag; /* Ethernet 802.1p+q vlan tag */ SLIST_HEAD(packet_tags, m_tag) tags; /* list of packet tags */ }; @@ -267,7 +239,6 @@ struct mbuf { #define M_PROTO3 0x0040 /* protocol-specific */ #define M_PROTO4 0x0080 /* protocol-specific */ #define M_PROTO5 0x0100 /* protocol-specific */ -#define M_SKIP_FIREWALL 0x4000 /* skip firewall processing */ #define M_FREELIST 0x8000 /* mbuf is on the free list */ @@ -275,7 +246,7 @@ struct mbuf { * Flags copied when copying m_pkthdr. */ #define M_COPYFLAGS (M_PKTHDR|M_EOR|M_RDONLY|M_PROTO1|M_PROTO1|M_PROTO2|\ - M_PROTO3|M_PROTO4|M_PROTO5|M_SKIP_FIREWALL|\ + M_PROTO3|M_PROTO4|M_PROTO5|\ M_BCAST|M_MCAST|M_FRAG|M_FIRSTFRAG|M_LASTFRAG|\ M_VLANTAG|M_PROMISC) @@ -320,9 +291,6 @@ struct mbuf { #define MT_OOBDATA 15 /* expedited data */ #define MT_NTYPES 16 /* number of mbuf types for mbtypes[] */ -#define MT_NOINIT 255 /* Not a type but a flag to allocate - a non-initialized mbuf */ - /* * __Userspace__ flags like M_NOWAIT are defined in malloc.h * Flags like these are used in functions like uma_zalloc() @@ -350,9 +318,6 @@ void m_tag_free_default(struct m_tag *); extern int max_linkhdr; /* Largest link-level header */ extern int max_protohdr; /* Size of largest protocol layer header. See user_mbuf.c */ -extern struct mbstat mbstat; /* General mbuf stats/infos */ - - /* * Evaluate TRUE if it's safe to write to the mbuf m's data region (this can * be both the local data payload, or an external buffer area, depending on @@ -362,6 +327,10 @@ extern struct mbstat mbstat; /* General mbuf stats/infos */ (!(((m)->m_flags & M_EXT)) || \ (*((m)->m_ext.ref_cnt) == 1)) ) \ +/* Check if the supplied mbuf has a packet header, or else panic. */ +#define M_ASSERTPKTHDR(m) \ + KASSERT((m) != NULL && (m)->m_flags & M_PKTHDR, \ + ("%s: no mbuf packet header!", __func__)) /* * Compute the amount of space available before the current start of data in @@ -371,9 +340,9 @@ extern struct mbstat mbstat; /* General mbuf stats/infos */ * of checking writability of the mbuf data area rests solely with the caller. */ #define M_LEADINGSPACE(m) \ - ((m)->m_flags & M_EXT ? \ + (((m)->m_flags & M_EXT) ? \ (M_WRITABLE(m) ? (m)->m_data - (m)->m_ext.ext_buf : 0): \ - (m)->m_flags & M_PKTHDR ? (m)->m_data - (m)->m_pktdat : \ + ((m)->m_flags & M_PKTHDR)? (m)->m_data - (m)->m_pktdat : \ (m)->m_data - (m)->m_dat) /* @@ -383,7 +352,7 @@ extern struct mbstat mbstat; /* General mbuf stats/infos */ * of checking writability of the mbuf data area rests solely with the caller. */ #define M_TRAILINGSPACE(m) \ - ((m)->m_flags & M_EXT ? \ + (((m)->m_flags & M_EXT) ? \ (M_WRITABLE(m) ? (m)->m_ext.ext_buf + (m)->m_ext.ext_size \ - ((m)->m_data + (m)->m_len) : 0) : \ &(m)->m_dat[MLEN] - ((m)->m_data + (m)->m_len)) @@ -435,4 +404,9 @@ extern struct mbstat mbstat; /* General mbuf stats/infos */ (m)->m_data += (MHLEN - (len)) & ~(sizeof(long) - 1); \ } while (0) +#define M_SIZE(m) \ + (((m)->m_flags & M_EXT) ? (m)->m_ext.ext_size : \ + ((m)->m_flags & M_PKTHDR) ? MHLEN : \ + MLEN) + #endif diff --git a/netwerk/sctp/src/user_queue.h b/netwerk/sctp/src/user_queue.h index 44f8994902..fcd368bdd2 100755 --- a/netwerk/sctp/src/user_queue.h +++ b/netwerk/sctp/src/user_queue.h @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -144,8 +144,8 @@ struct name { \ #define SLIST_HEAD_INITIALIZER(head) \ { NULL } -#if defined (__Userspace_os_Windows) -#if defined (SLIST_ENTRY) +#if defined(_WIN32) +#if defined(SLIST_ENTRY) #undef SLIST_ENTRY #endif #endif diff --git a/netwerk/sctp/src/user_recv_thread.c b/netwerk/sctp/src/user_recv_thread.c index 7b2ff58464..66be13d749 100755 --- a/netwerk/sctp/src/user_recv_thread.c +++ b/netwerk/sctp/src/user_recv_thread.c @@ -30,12 +30,12 @@ #if defined(INET) || defined(INET6) #include -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) #include #include #include #include -#if !defined(__Userspace_os_DragonFly) && !defined(__Userspace_os_FreeBSD) && !defined(__Userspace_os_NetBSD) +#if !defined(__DragonFly__) && !defined(__FreeBSD__) && !defined(__NetBSD__) #include #else #include @@ -46,7 +46,7 @@ #include #include #if 0 -#if defined(__Userspace_os_Linux) +#if defined(__linux__) #include #ifdef HAVE_LINUX_IF_ADDR_H #include @@ -56,23 +56,32 @@ #endif #endif #endif -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) -#include +#if defined(HAVE_NET_ROUTE_H) +# include +#elif defined(__APPLE__) +/* Apple SDKs for iOS, tvOS, watchOS, etc. don't ship this header */ +# define RTM_NEWADDR 0xc +# define RTM_DELADDR 0xd +# define RTAX_IFA 5 +# define RTAX_MAX 8 #endif /* local macros and datatypes used to get IP addresses system independently */ -#if !defined(IP_PKTINFO ) && ! defined(IP_RECVDSTADDR) +#if !defined(IP_PKTINFO) && !defined(IP_RECVDSTADDR) # error "Can't determine socket option to use to get UDP IP" #endif void recv_thread_destroy(void); -#define MAXLEN_MBUF_CHAIN 32 /* What should this value be? */ + +#define MAXLEN_MBUF_CHAIN 128 + #define ROUNDUP(a, size) (((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a)) -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) + +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) #define NEXT_SA(ap) ap = (struct sockaddr *) \ ((caddr_t) ap + (ap->sa_len ? ROUNDUP(ap->sa_len, sizeof (uint32_t)) : sizeof(uint32_t))) #endif -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) static void sctp_get_rtaddrs(int addrs, struct sockaddr *sa, struct sockaddr **rti_info) { @@ -92,51 +101,36 @@ static void sctp_handle_ifamsg(unsigned char type, unsigned short index, struct sockaddr *sa) { int rc; - struct ifaddrs *ifa, *found_ifa = NULL; + struct ifaddrs *ifa, *ifas; /* handle only the types we want */ if ((type != RTM_NEWADDR) && (type != RTM_DELADDR)) { return; } - rc = getifaddrs(&g_interfaces); + rc = getifaddrs(&ifas); if (rc != 0) { return; } - for (ifa = g_interfaces; ifa; ifa = ifa->ifa_next) { + for (ifa = ifas; ifa; ifa = ifa->ifa_next) { if (index == if_nametoindex(ifa->ifa_name)) { - found_ifa = ifa; break; } } - if (found_ifa == NULL) { + if (ifa == NULL) { + freeifaddrs(ifas); return; } - switch (sa->sa_family) { -#ifdef INET - case AF_INET: - ifa->ifa_addr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in)); - memcpy(ifa->ifa_addr, sa, sizeof(struct sockaddr_in)); - break; -#endif -#ifdef INET6 - case AF_INET6: - ifa->ifa_addr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in6)); - memcpy(ifa->ifa_addr, sa, sizeof(struct sockaddr_in6)); - break; -#endif - default: - SCTPDBG(SCTP_DEBUG_USR, "Address family %d not supported.\n", sa->sa_family); - } - /* relay the appropriate address change to the base code */ if (type == RTM_NEWADDR) { - (void)sctp_add_addr_to_vrf(SCTP_DEFAULT_VRFID, ifa, if_nametoindex(ifa->ifa_name), + (void)sctp_add_addr_to_vrf(SCTP_DEFAULT_VRFID, + NULL, + if_nametoindex(ifa->ifa_name), 0, ifa->ifa_name, - (void *)ifa, - ifa->ifa_addr, + NULL, + sa, 0, 1); } else { @@ -144,6 +138,7 @@ sctp_handle_ifamsg(unsigned char type, unsigned short index, struct sockaddr *sa if_nametoindex(ifa->ifa_name), ifa->ifa_name); } + freeifaddrs(ifas); } static void * @@ -154,8 +149,10 @@ recv_function_route(void *arg) char rt_buffer[1024]; struct sockaddr *sa, *rti_info[RTAX_MAX]; + sctp_userspace_set_threadname("SCTP addr mon"); + while (1) { - bzero(rt_buffer, sizeof(rt_buffer)); + memset(rt_buffer, 0, sizeof(rt_buffer)); ret = recv(SCTP_BASE_VAR(userspace_route), rt_buffer, sizeof(rt_buffer), 0); if (ret > 0) { @@ -176,7 +173,7 @@ recv_function_route(void *arg) } } if (ret < 0) { - if (errno == EAGAIN) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; @@ -223,7 +220,7 @@ recv_function_route(void *arg) len = recvmsg(SCTP_BASE_VAR(userspace_route), &msg, 0); if (len < 0) { - if (errno == EAGAIN) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; @@ -237,7 +234,7 @@ recv_function_route(void *arg) if (nh->nlmsg_type == RTM_NEWADDR || nh->nlmsg_type == RTM_DELADDR) { rtmsg = (struct ifaddrmsg *)NLMSG_DATA(nh); rtatp = (struct rtattr *)IFA_RTA(rtmsg); - if(rtatp->rta_type == IFA_ADDRESS) { + if (rtatp->rta_type == IFA_ADDRESS) { inp = (struct in_addr *)RTA_DATA(rtatp); switch (rtmsg->ifa_family) { #ifdef INET @@ -279,33 +276,35 @@ recv_function_raw(void *arg) struct sctphdr *sh; uint16_t port; int offset, ecn = 0; -#if !defined(SCTP_WITH_NO_CSUM) int compute_crc = 1; -#endif struct sctp_chunkhdr *ch; struct sockaddr_in src, dst; -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) + ssize_t res; + unsigned int ncounter; struct msghdr msg; struct iovec recv_iovec[MAXLEN_MBUF_CHAIN]; #else WSABUF recv_iovec[MAXLEN_MBUF_CHAIN]; int nResult, m_ErrorCode; DWORD flags; + DWORD ncounter; struct sockaddr_in from; int fromlen; #endif - /*Initially the entire set of mbufs is to be allocated. to_fill indicates this amount. */ int to_fill = MAXLEN_MBUF_CHAIN; /* iovlen is the size of each mbuf in the chain */ - int i, n, ncounter = 0; - int iovlen = MCLBYTES; + int i, n; + unsigned int iovlen = MCLBYTES; int want_ext = (iovlen > MLEN)? 1 : 0; int want_header = 0; - - bzero((void *)&src, sizeof(struct sockaddr_in)); - bzero((void *)&dst, sizeof(struct sockaddr_in)); + + sctp_userspace_set_threadname("SCTP/IP4 rcv"); + + memset(&src, 0, sizeof(struct sockaddr_in)); + memset(&dst, 0, sizeof(struct sockaddr_in)); recvmbuf = malloc(sizeof(struct mbuf *) * MAXLEN_MBUF_CHAIN); @@ -316,7 +315,7 @@ recv_function_raw(void *arg) Have tried both sending and receiving */ recvmbuf[i] = sctp_get_mbuf_for_msg(iovlen, want_header, M_NOWAIT, want_ext, MT_DATA); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) recv_iovec[i].iov_base = (caddr_t)recvmbuf[i]->m_data; recv_iovec[i].iov_len = iovlen; #else @@ -325,71 +324,78 @@ recv_function_raw(void *arg) #endif } to_fill = 0; -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) flags = 0; ncounter = 0; fromlen = sizeof(struct sockaddr_in); - bzero((void *)&from, sizeof(struct sockaddr_in)); + memset(&from, 0, sizeof(struct sockaddr_in)); - nResult = WSARecvFrom(SCTP_BASE_VAR(userspace_rawsctp), recv_iovec, MAXLEN_MBUF_CHAIN, (LPDWORD)&ncounter, (LPDWORD)&flags, (struct sockaddr*)&from, &fromlen, NULL, NULL); + nResult = WSARecvFrom(SCTP_BASE_VAR(userspace_rawsctp), recv_iovec, MAXLEN_MBUF_CHAIN, &ncounter, &flags, (struct sockaddr *)&from, &fromlen, NULL, NULL); if (nResult != 0) { m_ErrorCode = WSAGetLastError(); - if (m_ErrorCode == WSAETIMEDOUT) { - continue; - } if ((m_ErrorCode == WSAENOTSOCK) || (m_ErrorCode == WSAEINTR)) { break; } + continue; } n = ncounter; #else - bzero((void *)&msg, sizeof(struct msghdr)); + memset(&msg, 0, sizeof(struct msghdr)); msg.msg_name = NULL; msg.msg_namelen = 0; msg.msg_iov = recv_iovec; msg.msg_iovlen = MAXLEN_MBUF_CHAIN; msg.msg_control = NULL; msg.msg_controllen = 0; - ncounter = n = recvmsg(SCTP_BASE_VAR(userspace_rawsctp), &msg, 0); - if (n < 0) { - if (errno == EAGAIN) { + res = recvmsg(SCTP_BASE_VAR(userspace_rawsctp), &msg, 0); + if (res < 0) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; } } + ncounter = (unsigned int)res; + n = (int)res; #endif SCTP_HEADER_LEN(recvmbuf[0]) = n; /* length of total packet */ SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); - if (n <= iovlen) { + if ((unsigned int)n <= iovlen) { SCTP_BUF_LEN(recvmbuf[0]) = n; (to_fill)++; } else { i = 0; SCTP_BUF_LEN(recvmbuf[0]) = iovlen; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; do { recvmbuf[i]->m_next = recvmbuf[i+1]; SCTP_BUF_LEN(recvmbuf[i]->m_next) = min(ncounter, iovlen); i++; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; } while (ncounter > 0); } - + + offset = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + if (SCTP_BUF_LEN(recvmbuf[0]) < offset) { + if ((recvmbuf[0] = m_pullup(recvmbuf[0], offset)) == NULL) { + SCTP_STAT_INCR(sctps_hdrops); + continue; + } + } iphdr = mtod(recvmbuf[0], struct ip *); sh = (struct sctphdr *)((caddr_t)iphdr + sizeof(struct ip)); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); - offset = sizeof(struct ip) + sizeof(struct sctphdr); - + offset -= sizeof(struct sctp_chunkhdr); + if (iphdr->ip_tos != 0) { - ecn = iphdr->ip_tos & 0x02; + ecn = iphdr->ip_tos & 0x03; } - + dst.sin_family = AF_INET; #ifdef HAVE_SIN_LEN dst.sin_len = sizeof(struct sockaddr_in); @@ -403,36 +409,35 @@ recv_function_raw(void *arg) #endif src.sin_addr = iphdr->ip_src; src.sin_port = sh->src_port; - + /* SCTP does not allow broadcasts or multicasts */ if (IN_MULTICAST(ntohl(dst.sin_addr.s_addr))) { - return (NULL); + m_freem(recvmbuf[0]); + continue; } if (SCTP_IS_IT_BROADCAST(dst.sin_addr, recvmbuf[0])) { - return (NULL); + m_freem(recvmbuf[0]); + continue; } port = 0; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else - if (src.sin_addr.s_addr == dst.sin_addr.s_addr) { + if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && + ((IN4_ISLOOPBACK_ADDRESS(&src.sin_addr) && + IN4_ISLOOPBACK_ADDRESS(&dst.sin_addr)) || + (src.sin_addr.s_addr == dst.sin_addr.s_addr))) { compute_crc = 0; - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); } else { SCTP_STAT_INCR(sctps_recvswcrc); } -#endif SCTPDBG(SCTP_DEBUG_USR, "%s: Received %d bytes.", __func__, n); SCTPDBG(SCTP_DEBUG_USR, " - calling sctp_common_input_processing with off=%d\n", offset); - sctp_common_input_processing(&recvmbuf[0], sizeof(struct ip), offset, n, + sctp_common_input_processing(&recvmbuf[0], sizeof(struct ip), offset, n, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif ecn, SCTP_DEFAULT_VRFID, port); if (recvmbuf[0]) { @@ -444,6 +449,7 @@ recv_function_raw(void *arg) } /* free the array itself */ free(recvmbuf); + SCTPDBG(SCTP_DEBUG_USR, "%s: Exiting SCTP/IP4 rcv\n", __func__); return (NULL); } #endif @@ -453,7 +459,9 @@ static void * recv_function_raw6(void *arg) { struct mbuf **recvmbuf6; -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) + ssize_t res; + unsigned int ncounter; struct iovec recv_iovec[MAXLEN_MBUF_CHAIN]; struct msghdr msg; struct cmsghdr *cmsgptr; @@ -461,9 +469,8 @@ recv_function_raw6(void *arg) #else WSABUF recv_iovec[MAXLEN_MBUF_CHAIN]; int nResult, m_ErrorCode; - DWORD flags; + DWORD ncounter = 0; struct sockaddr_in6 from; - int fromlen; GUID WSARecvMsg_GUID = WSAID_WSARECVMSG; LPFN_WSARECVMSG WSARecvMsg; WSACMSGHDR *cmsgptr; @@ -474,19 +481,18 @@ recv_function_raw6(void *arg) struct sctphdr *sh; int offset; struct sctp_chunkhdr *ch; - /*Initially the entire set of mbufs is to be allocated. to_fill indicates this amount. */ int to_fill = MAXLEN_MBUF_CHAIN; /* iovlen is the size of each mbuf in the chain */ - int i, n, ncounter = 0; -#if !defined(SCTP_WITH_NO_CSUM) + int i, n; int compute_crc = 1; -#endif - int iovlen = MCLBYTES; + unsigned int iovlen = MCLBYTES; int want_ext = (iovlen > MLEN)? 1 : 0; int want_header = 0; + sctp_userspace_set_threadname("SCTP/IP6 rcv"); + recvmbuf6 = malloc(sizeof(struct mbuf *) * MAXLEN_MBUF_CHAIN); for (;;) { @@ -496,7 +502,7 @@ recv_function_raw6(void *arg) Have tried both sending and receiving */ recvmbuf6[i] = sctp_get_mbuf_for_msg(iovlen, want_header, M_NOWAIT, want_ext, MT_DATA); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) recv_iovec[i].iov_base = (caddr_t)recvmbuf6[i]->m_data; recv_iovec[i].iov_len = iovlen; #else @@ -505,11 +511,9 @@ recv_function_raw6(void *arg) #endif } to_fill = 0; -#if defined(__Userspace_os_Windows) - flags = 0; +#if defined(_WIN32) ncounter = 0; - fromlen = sizeof(struct sockaddr_in6); - bzero((void *)&from, sizeof(struct sockaddr_in6)); + memset(&from, 0, sizeof(struct sockaddr_in6)); nResult = WSAIoctl(SCTP_BASE_VAR(userspace_rawsctp6), SIO_GET_EXTENSION_FUNCTION_POINTER, &WSARecvMsg_GUID, sizeof WSARecvMsg_GUID, &WSARecvMsg, sizeof WSARecvMsg, @@ -526,52 +530,53 @@ recv_function_raw6(void *arg) } if (nResult != 0) { m_ErrorCode = WSAGetLastError(); - if (m_ErrorCode == WSAETIMEDOUT) - continue; - if (m_ErrorCode == WSAENOTSOCK || m_ErrorCode == WSAEINTR) + if ((m_ErrorCode == WSAENOTSOCK) || (m_ErrorCode == WSAEINTR)) { break; + } + continue; } n = ncounter; #else - bzero((void *)&msg, sizeof(struct msghdr)); - bzero((void *)&src, sizeof(struct sockaddr_in6)); - bzero((void *)&dst, sizeof(struct sockaddr_in6)); - bzero((void *)cmsgbuf, CMSG_SPACE(sizeof (struct in6_pktinfo))); + memset(&msg, 0, sizeof(struct msghdr)); + memset(&src, 0, sizeof(struct sockaddr_in6)); + memset(&dst, 0, sizeof(struct sockaddr_in6)); + memset(cmsgbuf, 0, CMSG_SPACE(sizeof (struct in6_pktinfo))); msg.msg_name = (void *)&src; msg.msg_namelen = sizeof(struct sockaddr_in6); msg.msg_iov = recv_iovec; msg.msg_iovlen = MAXLEN_MBUF_CHAIN; msg.msg_control = (void *)cmsgbuf; - msg.msg_controllen = (socklen_t)CMSG_LEN(sizeof (struct in6_pktinfo)); + msg.msg_controllen = (socklen_t)CMSG_SPACE(sizeof (struct in6_pktinfo)); msg.msg_flags = 0; - - ncounter = n = recvmsg(SCTP_BASE_VAR(userspace_rawsctp6), &msg, 0); - if (n < 0) { - if (errno == EAGAIN) { + res = recvmsg(SCTP_BASE_VAR(userspace_rawsctp6), &msg, 0); + if (res < 0) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; } } + ncounter = (unsigned int)res; + n = (int)res; #endif SCTP_HEADER_LEN(recvmbuf6[0]) = n; /* length of total packet */ SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); - if (n <= iovlen) { + if ((unsigned int)n <= iovlen) { SCTP_BUF_LEN(recvmbuf6[0]) = n; (to_fill)++; } else { i = 0; SCTP_BUF_LEN(recvmbuf6[0]) = iovlen; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; do { recvmbuf6[i]->m_next = recvmbuf6[i+1]; SCTP_BUF_LEN(recvmbuf6[i]->m_next) = min(ncounter, iovlen); i++; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; } while (ncounter > 0); } @@ -586,9 +591,22 @@ recv_function_raw6(void *arg) } } + /* SCTP does not allow broadcasts or multicasts */ + if (IN6_IS_ADDR_MULTICAST(&dst.sin6_addr)) { + m_freem(recvmbuf6[0]); + continue; + } + + offset = sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + if (SCTP_BUF_LEN(recvmbuf6[0]) < offset) { + if ((recvmbuf6[0] = m_pullup(recvmbuf6[0], offset)) == NULL) { + SCTP_STAT_INCR(sctps_hdrops); + continue; + } + } sh = mtod(recvmbuf6[0], struct sctphdr *); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); - offset = sizeof(struct sctphdr); + offset -= sizeof(struct sctp_chunkhdr); dst.sin6_family = AF_INET6; #ifdef HAVE_SIN6_LEN @@ -601,25 +619,20 @@ recv_function_raw6(void *arg) src.sin6_len = sizeof(struct sockaddr_in6); #endif src.sin6_port = sh->src_port; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else - if (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0) { + if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && + (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) { compute_crc = 0; - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); } else { SCTP_STAT_INCR(sctps_recvswcrc); } -#endif SCTPDBG(SCTP_DEBUG_USR, "%s: Received %d bytes.", __func__, n); SCTPDBG(SCTP_DEBUG_USR, " - calling sctp_common_input_processing with off=%d\n", offset); - sctp_common_input_processing(&recvmbuf6[0], 0, offset, n, + sctp_common_input_processing(&recvmbuf6[0], 0, offset, n, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif 0, SCTP_DEFAULT_VRFID, 0); if (recvmbuf6[0]) { @@ -631,6 +644,7 @@ recv_function_raw6(void *arg) } /* free the array itself */ free(recvmbuf6); + SCTPDBG(SCTP_DEBUG_USR, "%s: Exiting SCTP/IP6 rcv\n", __func__); return (NULL); } #endif @@ -644,8 +658,8 @@ recv_function_udp(void *arg) to_fill indicates this amount. */ int to_fill = MAXLEN_MBUF_CHAIN; /* iovlen is the size of each mbuf in the chain */ - int i, n, ncounter, offset; - int iovlen = MCLBYTES; + int i, n, offset; + unsigned int iovlen = MCLBYTES; int want_ext = (iovlen > MLEN)? 1 : 0; int want_header = 0; struct sctphdr *sh; @@ -657,10 +671,10 @@ recv_function_udp(void *arg) #else char cmsgbuf[CMSG_SPACE(sizeof(struct in_addr))]; #endif -#if !defined(SCTP_WITH_NO_CSUM) int compute_crc = 1; -#endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) + ssize_t res; + unsigned int ncounter; struct iovec iov[MAXLEN_MBUF_CHAIN]; struct msghdr msg; struct cmsghdr *cmsgptr; @@ -672,8 +686,11 @@ recv_function_udp(void *arg) WSAMSG msg; int nResult, m_ErrorCode; WSACMSGHDR *cmsgptr; + DWORD ncounter; #endif + sctp_userspace_set_threadname("SCTP/UDP/IP4 rcv"); + udprecvmbuf = malloc(sizeof(struct mbuf *) * MAXLEN_MBUF_CHAIN); while (1) { @@ -683,7 +700,7 @@ recv_function_udp(void *arg) Have tried both sending and receiving */ udprecvmbuf[i] = sctp_get_mbuf_for_msg(iovlen, want_header, M_NOWAIT, want_ext, MT_DATA); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) iov[i].iov_base = (caddr_t)udprecvmbuf[i]->m_data; iov[i].iov_len = iovlen; #else @@ -692,16 +709,16 @@ recv_function_udp(void *arg) #endif } to_fill = 0; -#if !defined(__Userspace_os_Windows) - bzero((void *)&msg, sizeof(struct msghdr)); +#if !defined(_WIN32) + memset(&msg, 0, sizeof(struct msghdr)); #else - bzero((void *)&msg, sizeof(WSAMSG)); + memset(&msg, 0, sizeof(WSAMSG)); #endif - bzero((void *)&src, sizeof(struct sockaddr_in)); - bzero((void *)&dst, sizeof(struct sockaddr_in)); - bzero((void *)cmsgbuf, sizeof(cmsgbuf)); + memset(&src, 0, sizeof(struct sockaddr_in)); + memset(&dst, 0, sizeof(struct sockaddr_in)); + memset(cmsgbuf, 0, sizeof(cmsgbuf)); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) msg.msg_name = (void *)&src; msg.msg_namelen = sizeof(struct sockaddr_in); msg.msg_iov = iov; @@ -710,14 +727,16 @@ recv_function_udp(void *arg) msg.msg_controllen = sizeof(cmsgbuf); msg.msg_flags = 0; - ncounter = n = recvmsg(SCTP_BASE_VAR(userspace_udpsctp), &msg, 0); - if (n < 0) { - if (errno == EAGAIN) { + res = recvmsg(SCTP_BASE_VAR(userspace_udpsctp), &msg, 0); + if (res < 0) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; } } + ncounter = (unsigned int)res; + n = (int)res; #else nResult = WSAIoctl(SCTP_BASE_VAR(userspace_udpsctp), SIO_GET_EXTENSION_FUNCTION_POINTER, &WSARecvMsg_GUID, sizeof WSARecvMsg_GUID, @@ -735,12 +754,10 @@ recv_function_udp(void *arg) } if (nResult != 0) { m_ErrorCode = WSAGetLastError(); - if (m_ErrorCode == WSAETIMEDOUT) { - continue; - } if ((m_ErrorCode == WSAENOTSOCK) || (m_ErrorCode == WSAEINTR)) { break; } + continue; } n = ncounter; #endif @@ -748,20 +765,20 @@ recv_function_udp(void *arg) SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); - if (n <= iovlen) { + if ((unsigned int)n <= iovlen) { SCTP_BUF_LEN(udprecvmbuf[0]) = n; (to_fill)++; } else { i = 0; SCTP_BUF_LEN(udprecvmbuf[0]) = iovlen; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; do { udprecvmbuf[i]->m_next = udprecvmbuf[i+1]; SCTP_BUF_LEN(udprecvmbuf[i]->m_next) = min(ncounter, iovlen); i++; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; } while (ncounter > 0); } @@ -796,38 +813,42 @@ recv_function_udp(void *arg) /* SCTP does not allow broadcasts or multicasts */ if (IN_MULTICAST(ntohl(dst.sin_addr.s_addr))) { - return (NULL); + m_freem(udprecvmbuf[0]); + continue; } if (SCTP_IS_IT_BROADCAST(dst.sin_addr, udprecvmbuf[0])) { - return (NULL); + m_freem(udprecvmbuf[0]); + continue; } - /*offset = sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr);*/ + offset = sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + if (SCTP_BUF_LEN(udprecvmbuf[0]) < offset) { + if ((udprecvmbuf[0] = m_pullup(udprecvmbuf[0], offset)) == NULL) { + SCTP_STAT_INCR(sctps_hdrops); + continue; + } + } sh = mtod(udprecvmbuf[0], struct sctphdr *); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); - offset = sizeof(struct sctphdr); + offset -= sizeof(struct sctp_chunkhdr); + port = src.sin_port; src.sin_port = sh->src_port; dst.sin_port = sh->dest_port; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else - if (src.sin_addr.s_addr == dst.sin_addr.s_addr) { + if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && + (src.sin_addr.s_addr == dst.sin_addr.s_addr)) { compute_crc = 0; - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); } else { SCTP_STAT_INCR(sctps_recvswcrc); } -#endif SCTPDBG(SCTP_DEBUG_USR, "%s: Received %d bytes.", __func__, n); SCTPDBG(SCTP_DEBUG_USR, " - calling sctp_common_input_processing with off=%d\n", offset); - sctp_common_input_processing(&udprecvmbuf[0], 0, offset, n, + sctp_common_input_processing(&udprecvmbuf[0], 0, offset, n, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif 0, SCTP_DEFAULT_VRFID, port); if (udprecvmbuf[0]) { @@ -839,6 +860,7 @@ recv_function_udp(void *arg) } /* free the array itself */ free(udprecvmbuf); + SCTPDBG(SCTP_DEBUG_USR, "%s: Exiting SCTP/UDP/IP4 rcv\n", __func__); return (NULL); } #endif @@ -852,8 +874,8 @@ recv_function_udp6(void *arg) to_fill indicates this amount. */ int to_fill = MAXLEN_MBUF_CHAIN; /* iovlen is the size of each mbuf in the chain */ - int i, n, ncounter, offset; - int iovlen = MCLBYTES; + int i, n, offset; + unsigned int iovlen = MCLBYTES; int want_ext = (iovlen > MLEN)? 1 : 0; int want_header = 0; struct sockaddr_in6 src, dst; @@ -861,13 +883,13 @@ recv_function_udp6(void *arg) uint16_t port; struct sctp_chunkhdr *ch; char cmsgbuf[CMSG_SPACE(sizeof (struct in6_pktinfo))]; -#if !defined(SCTP_WITH_NO_CSUM) int compute_crc = 1; -#endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) struct iovec iov[MAXLEN_MBUF_CHAIN]; struct msghdr msg; struct cmsghdr *cmsgptr; + ssize_t res; + unsigned int ncounter; #else GUID WSARecvMsg_GUID = WSAID_WSARECVMSG; LPFN_WSARECVMSG WSARecvMsg; @@ -876,8 +898,11 @@ recv_function_udp6(void *arg) WSAMSG msg; int nResult, m_ErrorCode; WSACMSGHDR *cmsgptr; + DWORD ncounter; #endif + sctp_userspace_set_threadname("SCTP/UDP/IP6 rcv"); + udprecvmbuf6 = malloc(sizeof(struct mbuf *) * MAXLEN_MBUF_CHAIN); while (1) { for (i = 0; i < to_fill; i++) { @@ -886,7 +911,7 @@ recv_function_udp6(void *arg) Have tried both sending and receiving */ udprecvmbuf6[i] = sctp_get_mbuf_for_msg(iovlen, want_header, M_NOWAIT, want_ext, MT_DATA); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) iov[i].iov_base = (caddr_t)udprecvmbuf6[i]->m_data; iov[i].iov_len = iovlen; #else @@ -896,32 +921,34 @@ recv_function_udp6(void *arg) } to_fill = 0; -#if !defined(__Userspace_os_Windows) - bzero((void *)&msg, sizeof(struct msghdr)); +#if !defined(_WIN32) + memset(&msg, 0, sizeof(struct msghdr)); #else - bzero((void *)&msg, sizeof(WSAMSG)); + memset(&msg, 0, sizeof(WSAMSG)); #endif - bzero((void *)&src, sizeof(struct sockaddr_in6)); - bzero((void *)&dst, sizeof(struct sockaddr_in6)); - bzero((void *)cmsgbuf, CMSG_SPACE(sizeof (struct in6_pktinfo))); + memset(&src, 0, sizeof(struct sockaddr_in6)); + memset(&dst, 0, sizeof(struct sockaddr_in6)); + memset(cmsgbuf, 0, CMSG_SPACE(sizeof (struct in6_pktinfo))); -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) msg.msg_name = (void *)&src; msg.msg_namelen = sizeof(struct sockaddr_in6); msg.msg_iov = iov; msg.msg_iovlen = MAXLEN_MBUF_CHAIN; msg.msg_control = (void *)cmsgbuf; - msg.msg_controllen = (socklen_t)CMSG_LEN(sizeof (struct in6_pktinfo)); + msg.msg_controllen = (socklen_t)CMSG_SPACE(sizeof (struct in6_pktinfo)); msg.msg_flags = 0; - ncounter = n = recvmsg(SCTP_BASE_VAR(userspace_udpsctp6), &msg, 0); - if (n < 0) { - if (errno == EAGAIN) { + res = recvmsg(SCTP_BASE_VAR(userspace_udpsctp6), &msg, 0); + if (res < 0) { + if (errno == EAGAIN || errno == EINTR) { continue; } else { break; } } + ncounter = (unsigned int)res; + n = (int)res; #else nResult = WSAIoctl(SCTP_BASE_VAR(userspace_udpsctp6), SIO_GET_EXTENSION_FUNCTION_POINTER, &WSARecvMsg_GUID, sizeof WSARecvMsg_GUID, @@ -943,12 +970,10 @@ recv_function_udp6(void *arg) } if (nResult != 0) { m_ErrorCode = WSAGetLastError(); - if (m_ErrorCode == WSAETIMEDOUT) { - continue; - } if ((m_ErrorCode == WSAENOTSOCK) || (m_ErrorCode == WSAEINTR)) { break; } + continue; } n = ncounter; #endif @@ -956,20 +981,20 @@ recv_function_udp6(void *arg) SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); - if (n <= iovlen) { + if ((unsigned int)n <= iovlen) { SCTP_BUF_LEN(udprecvmbuf6[0]) = n; (to_fill)++; } else { i = 0; SCTP_BUF_LEN(udprecvmbuf6[0]) = iovlen; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; do { udprecvmbuf6[i]->m_next = udprecvmbuf6[i+1]; SCTP_BUF_LEN(udprecvmbuf6[i]->m_next) = min(ncounter, iovlen); i++; - ncounter -= iovlen; + ncounter -= min(ncounter, iovlen); (to_fill)++; } while (ncounter > 0); } @@ -990,35 +1015,38 @@ recv_function_udp6(void *arg) /* SCTP does not allow broadcasts or multicasts */ if (IN6_IS_ADDR_MULTICAST(&dst.sin6_addr)) { - return (NULL); + m_freem(udprecvmbuf6[0]); + continue; + } + + offset = sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + if (SCTP_BUF_LEN(udprecvmbuf6[0]) < offset) { + if ((udprecvmbuf6[0] = m_pullup(udprecvmbuf6[0], offset)) == NULL) { + SCTP_STAT_INCR(sctps_hdrops); + continue; + } } - sh = mtod(udprecvmbuf6[0], struct sctphdr *); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); - offset = sizeof(struct sctphdr); - + offset -= sizeof(struct sctp_chunkhdr); + port = src.sin6_port; src.sin6_port = sh->src_port; dst.sin6_port = sh->dest_port; -#if defined(SCTP_WITH_NO_CSUM) - SCTP_STAT_INCR(sctps_recvnocrc); -#else - if ((memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) { + if (SCTP_BASE_SYSCTL(sctp_no_csum_on_loopback) && + (memcmp(&src.sin6_addr, &dst.sin6_addr, sizeof(struct in6_addr)) == 0)) { compute_crc = 0; - SCTP_STAT_INCR(sctps_recvnocrc); + SCTP_STAT_INCR(sctps_recvhwcrc); } else { SCTP_STAT_INCR(sctps_recvswcrc); } -#endif SCTPDBG(SCTP_DEBUG_USR, "%s: Received %d bytes.", __func__, n); SCTPDBG(SCTP_DEBUG_USR, " - calling sctp_common_input_processing with off=%d\n", (int)sizeof(struct sctphdr)); - sctp_common_input_processing(&udprecvmbuf6[0], 0, offset, n, + sctp_common_input_processing(&udprecvmbuf6[0], 0, offset, n, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) compute_crc, -#endif 0, SCTP_DEFAULT_VRFID, port); if (udprecvmbuf6[0]) { @@ -1030,17 +1058,23 @@ recv_function_udp6(void *arg) } /* free the array itself */ free(udprecvmbuf6); + SCTPDBG(SCTP_DEBUG_USR, "%s: Exiting SCTP/UDP/IP6 rcv\n", __func__); return (NULL); } #endif +#if defined(_WIN32) +static void +setReceiveBufferSize(SOCKET sfd, int new_size) +#else static void setReceiveBufferSize(int sfd, int new_size) +#endif { int ch = new_size; if (setsockopt (sfd, SOL_SOCKET, SO_RCVBUF, (void*)&ch, sizeof(ch)) < 0) { -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set recv-buffers size (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't set recv-buffers size (errno = %d).\n", errno); @@ -1049,13 +1083,18 @@ setReceiveBufferSize(int sfd, int new_size) return; } +#if defined(_WIN32) +static void +setSendBufferSize(SOCKET sfd, int new_size) +#else static void setSendBufferSize(int sfd, int new_size) +#endif { int ch = new_size; if (setsockopt (sfd, SOL_SOCKET, SO_SNDBUF, (void*)&ch, sizeof(ch)) < 0) { -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set send-buffers size (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't set send-buffers size (errno = %d).\n", errno); @@ -1078,17 +1117,18 @@ recv_thread_init(void) #if defined(INET) || defined(INET6) const int on = 1; #endif -#if !defined(__Userspace_os_Windows) +#if !defined(_WIN32) struct timeval timeout; + memset(&timeout, 0, sizeof(struct timeval)); timeout.tv_sec = (SOCKET_TIMEOUT / 1000); timeout.tv_usec = (SOCKET_TIMEOUT % 1000) * 1000; #else unsigned int timeout = SOCKET_TIMEOUT; /* Timeout in milliseconds */ #endif -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) if (SCTP_BASE_VAR(userspace_route) == -1) { - if ((SCTP_BASE_VAR(userspace_route) = socket(AF_ROUTE, SOCK_RAW, 0)) < 0) { + if ((SCTP_BASE_VAR(userspace_route) = socket(AF_ROUTE, SOCK_RAW, 0)) == -1) { SCTPDBG(SCTP_DEBUG_USR, "Can't create routing socket (errno = %d).\n", errno); } #if 0 @@ -1115,7 +1155,7 @@ recv_thread_init(void) if (SCTP_BASE_VAR(userspace_route) != -1) { if (setsockopt(SCTP_BASE_VAR(userspace_route), SOL_SOCKET, SO_RCVTIMEO,(const void*)&timeout, sizeof(struct timeval)) < 0) { SCTPDBG(SCTP_DEBUG_USR, "Can't set timeout on routing socket (errno = %d).\n", errno); -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) closesocket(SCTP_BASE_VAR(userspace_route)); #else close(SCTP_BASE_VAR(userspace_route)); @@ -1127,8 +1167,8 @@ recv_thread_init(void) #endif #if defined(INET) if (SCTP_BASE_VAR(userspace_rawsctp) == -1) { - if ((SCTP_BASE_VAR(userspace_rawsctp) = socket(AF_INET, SOCK_RAW, IPPROTO_SCTP)) < 0) { -#if defined(__Userspace_os_Windows) + if ((SCTP_BASE_VAR(userspace_rawsctp) = socket(AF_INET, SOCK_RAW, IPPROTO_SCTP)) == -1) { +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't create raw socket for IPv4 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't create raw socket for IPv4 (errno = %d).\n", errno); @@ -1136,7 +1176,7 @@ recv_thread_init(void) } else { /* complete setting up the raw SCTP socket */ if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp), IPPROTO_IP, IP_HDRINCL,(const void*)&hdrincl, sizeof(int)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IP_HDRINCL (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp)); #else @@ -1145,7 +1185,7 @@ recv_thread_init(void) #endif SCTP_BASE_VAR(userspace_rawsctp) = -1; } else if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp), SOL_SOCKET, SO_RCVTIMEO, (const void *)&timeout, sizeof(timeout)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set timeout on socket for SCTP/IPv4 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp)); #else @@ -1162,7 +1202,7 @@ recv_thread_init(void) addr_ipv4.sin_port = htons(0); addr_ipv4.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(SCTP_BASE_VAR(userspace_rawsctp), (const struct sockaddr *)&addr_ipv4, sizeof(struct sockaddr_in)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't bind socket for SCTP/IPv4 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp)); #else @@ -1177,9 +1217,9 @@ recv_thread_init(void) } } } - if (SCTP_BASE_VAR(userspace_udpsctp) == -1) { - if ((SCTP_BASE_VAR(userspace_udpsctp) = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { -#if defined(__Userspace_os_Windows) + if ((SCTP_BASE_VAR(userspace_udpsctp) == -1) && (SCTP_BASE_SYSCTL(sctp_udp_tunneling_port) != 0)) { + if ((SCTP_BASE_VAR(userspace_udpsctp) = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) { +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/UDP/IPv4 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/UDP/IPv4 (errno = %d).\n", errno); @@ -1190,7 +1230,7 @@ recv_thread_init(void) #else if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp), IPPROTO_IP, IP_RECVDSTADDR, (const void *)&on, (int)sizeof(int)) < 0) { #endif -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) #if defined(IP_PKTINFO) SCTPDBG(SCTP_DEBUG_USR, "Can't set IP_PKTINFO on socket for SCTP/UDP/IPv4 (errno = %d).\n", WSAGetLastError()); #else @@ -1207,7 +1247,7 @@ recv_thread_init(void) #endif SCTP_BASE_VAR(userspace_udpsctp) = -1; } else if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp), SOL_SOCKET, SO_RCVTIMEO, (const void *)&timeout, sizeof(timeout)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set timeout on socket for SCTP/UDP/IPv4 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp)); #else @@ -1224,7 +1264,7 @@ recv_thread_init(void) addr_ipv4.sin_port = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)); addr_ipv4.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(SCTP_BASE_VAR(userspace_udpsctp), (const struct sockaddr *)&addr_ipv4, sizeof(struct sockaddr_in)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't bind socket for SCTP/UDP/IPv4 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp)); #else @@ -1242,8 +1282,8 @@ recv_thread_init(void) #endif #if defined(INET6) if (SCTP_BASE_VAR(userspace_rawsctp6) == -1) { - if ((SCTP_BASE_VAR(userspace_rawsctp6) = socket(AF_INET6, SOCK_RAW, IPPROTO_SCTP)) < 0) { -#if defined(__Userspace_os_Windows) + if ((SCTP_BASE_VAR(userspace_rawsctp6) = socket(AF_INET6, SOCK_RAW, IPPROTO_SCTP)) == -1) { +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/IPv6 (errno = %d).\n", errno); @@ -1252,7 +1292,7 @@ recv_thread_init(void) /* complete setting up the raw SCTP socket */ #if defined(IPV6_RECVPKTINFO) if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp6), IPPROTO_IPV6, IPV6_RECVPKTINFO, (const void *)&on, sizeof(on)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_RECVPKTINFO on socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); #else @@ -1263,7 +1303,7 @@ recv_thread_init(void) } else { #else if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp6), IPPROTO_IPV6, IPV6_PKTINFO,(const void*)&on, sizeof(on)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_PKTINFO on socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); #else @@ -1274,14 +1314,14 @@ recv_thread_init(void) } else { #endif if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp6), IPPROTO_IPV6, IPV6_V6ONLY, (const void*)&on, (socklen_t)sizeof(on)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_V6ONLY on socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_V6ONLY on socket for SCTP/IPv6 (errno = %d).\n", errno); #endif } if (setsockopt(SCTP_BASE_VAR(userspace_rawsctp6), SOL_SOCKET, SO_RCVTIMEO, (const void *)&timeout, sizeof(timeout)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set timeout on socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); #else @@ -1298,7 +1338,7 @@ recv_thread_init(void) addr_ipv6.sin6_port = htons(0); addr_ipv6.sin6_addr = in6addr_any; if (bind(SCTP_BASE_VAR(userspace_rawsctp6), (const struct sockaddr *)&addr_ipv6, sizeof(struct sockaddr_in6)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't bind socket for SCTP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); #else @@ -1314,9 +1354,9 @@ recv_thread_init(void) } } } - if (SCTP_BASE_VAR(userspace_udpsctp6) == -1) { - if ((SCTP_BASE_VAR(userspace_udpsctp6) = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)) < 0) { -#if defined(__Userspace_os_Windows) + if ((SCTP_BASE_VAR(userspace_udpsctp6) == -1) && (SCTP_BASE_SYSCTL(sctp_udp_tunneling_port) != 0)) { + if ((SCTP_BASE_VAR(userspace_udpsctp6) = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)) == -1) { +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't create socket for SCTP/UDP/IPv6 (errno = %d).\n", errno); @@ -1324,7 +1364,7 @@ recv_thread_init(void) } #if defined(IPV6_RECVPKTINFO) if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp6), IPPROTO_IPV6, IPV6_RECVPKTINFO, (const void *)&on, (int)sizeof(int)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_RECVPKTINFO on socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); #else @@ -1335,7 +1375,7 @@ recv_thread_init(void) } else { #else if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp6), IPPROTO_IPV6, IPV6_PKTINFO, (const void *)&on, (int)sizeof(int)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_PKTINFO on socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); #else @@ -1346,14 +1386,14 @@ recv_thread_init(void) } else { #endif if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp6), IPPROTO_IPV6, IPV6_V6ONLY, (const void *)&on, (socklen_t)sizeof(on)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_V6ONLY on socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); #else SCTPDBG(SCTP_DEBUG_USR, "Can't set IPV6_V6ONLY on socket for SCTP/UDP/IPv6 (errno = %d).\n", errno); #endif } if (setsockopt(SCTP_BASE_VAR(userspace_udpsctp6), SOL_SOCKET, SO_RCVTIMEO, (const void *)&timeout, sizeof(timeout)) < 0) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't set timeout on socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); #else @@ -1369,8 +1409,8 @@ recv_thread_init(void) addr_ipv6.sin6_family = AF_INET6; addr_ipv6.sin6_port = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port)); addr_ipv6.sin6_addr = in6addr_any; - if (bind(SCTP_BASE_VAR(userspace_udpsctp6), (const struct sockaddr *)&addr_ipv6, sizeof(struct sockaddr_in6)) < 0) { -#if defined(__Userspace_os_Windows) + if (bind(SCTP_BASE_VAR(userspace_udpsctp6), (const struct sockaddr *)&addr_ipv6, sizeof(struct sockaddr_in6)) < 0) { +#if defined(_WIN32) SCTPDBG(SCTP_DEBUG_USR, "Can't bind socket for SCTP/UDP/IPv6 (errno = %d).\n", WSAGetLastError()); closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); #else @@ -1386,13 +1426,12 @@ recv_thread_init(void) } } #endif -#if !defined(__Userspace_os_Windows) -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) #if defined(INET) || defined(INET6) if (SCTP_BASE_VAR(userspace_route) != -1) { int rc; - if ((rc = pthread_create(&SCTP_BASE_VAR(recvthreadroute), NULL, &recv_function_route, NULL))) { + if ((rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(recvthreadroute), &recv_function_route))) { SCTPDBG(SCTP_DEBUG_USR, "Can't start routing thread (%d).\n", rc); close(SCTP_BASE_VAR(userspace_route)); SCTP_BASE_VAR(userspace_route) = -1; @@ -1404,18 +1443,26 @@ recv_thread_init(void) if (SCTP_BASE_VAR(userspace_rawsctp) != -1) { int rc; - if ((rc = pthread_create(&SCTP_BASE_VAR(recvthreadraw), NULL, &recv_function_raw, NULL))) { + if ((rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(recvthreadraw), &recv_function_raw))) { SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/IPv4 recv thread (%d).\n", rc); +#if defined(_WIN32) + closesocket(SCTP_BASE_VAR(userspace_rawsctp)); +#else close(SCTP_BASE_VAR(userspace_rawsctp)); +#endif SCTP_BASE_VAR(userspace_rawsctp) = -1; } } if (SCTP_BASE_VAR(userspace_udpsctp) != -1) { int rc; - if ((rc = pthread_create(&SCTP_BASE_VAR(recvthreadudp), NULL, &recv_function_udp, NULL))) { + if ((rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(recvthreadudp), &recv_function_udp))) { SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/UDP/IPv4 recv thread (%d).\n", rc); +#if defined(_WIN32) + closesocket(SCTP_BASE_VAR(userspace_udpsctp)); +#else close(SCTP_BASE_VAR(userspace_udpsctp)); +#endif SCTP_BASE_VAR(userspace_udpsctp) = -1; } } @@ -1424,97 +1471,92 @@ recv_thread_init(void) if (SCTP_BASE_VAR(userspace_rawsctp6) != -1) { int rc; - if ((rc = pthread_create(&SCTP_BASE_VAR(recvthreadraw6), NULL, &recv_function_raw6, NULL))) { + if ((rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(recvthreadraw6), &recv_function_raw6))) { SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/IPv6 recv thread (%d).\n", rc); +#if defined(_WIN32) + closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); +#else close(SCTP_BASE_VAR(userspace_rawsctp6)); +#endif SCTP_BASE_VAR(userspace_rawsctp6) = -1; } } if (SCTP_BASE_VAR(userspace_udpsctp6) != -1) { int rc; - if ((rc = pthread_create(&SCTP_BASE_VAR(recvthreadudp6), NULL, &recv_function_udp6, NULL))) { + if ((rc = sctp_userspace_thread_create(&SCTP_BASE_VAR(recvthreadudp6), &recv_function_udp6))) { SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/UDP/IPv6 recv thread (%d).\n", rc); - close(SCTP_BASE_VAR(userspace_udpsctp6)); - SCTP_BASE_VAR(userspace_udpsctp6) = -1; - } - } -#endif +#if defined(_WIN32) + closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); #else -#if defined(INET) - if (SCTP_BASE_VAR(userspace_rawsctp) != -1) { - if ((SCTP_BASE_VAR(recvthreadraw) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&recv_function_raw, NULL, 0, NULL)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/IPv4 recv thread.\n"); - closesocket(SCTP_BASE_VAR(userspace_rawsctp)); - SCTP_BASE_VAR(userspace_rawsctp) = -1; - } - } - if (SCTP_BASE_VAR(userspace_udpsctp) != -1) { - if ((SCTP_BASE_VAR(recvthreadudp) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&recv_function_udp, NULL, 0, NULL)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/UDP/IPv4 recv thread.\n"); - closesocket(SCTP_BASE_VAR(userspace_udpsctp)); - SCTP_BASE_VAR(userspace_udpsctp) = -1; - } - } + close(SCTP_BASE_VAR(userspace_udpsctp6)); #endif -#if defined(INET6) - if (SCTP_BASE_VAR(userspace_rawsctp6) != -1) { - if ((SCTP_BASE_VAR(recvthreadraw6) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&recv_function_raw6, NULL, 0, NULL)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/IPv6 recv thread.\n"); - closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); - SCTP_BASE_VAR(userspace_rawsctp6) = -1; - } - } - if (SCTP_BASE_VAR(userspace_udpsctp6) != -1) { - if ((SCTP_BASE_VAR(recvthreadudp6) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&recv_function_udp6, NULL, 0, NULL)) == NULL) { - SCTPDBG(SCTP_DEBUG_USR, "Can't start SCTP/UDP/IPv6 recv thread.\n"); - closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); SCTP_BASE_VAR(userspace_udpsctp6) = -1; } } #endif -#endif } void recv_thread_destroy(void) { -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) #if defined(INET) || defined(INET6) if (SCTP_BASE_VAR(userspace_route) != -1) { close(SCTP_BASE_VAR(userspace_route)); + pthread_join(SCTP_BASE_VAR(recvthreadroute), NULL); } #endif #endif #if defined(INET) if (SCTP_BASE_VAR(userspace_rawsctp) != -1) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) closesocket(SCTP_BASE_VAR(userspace_rawsctp)); + SCTP_BASE_VAR(userspace_rawsctp) = -1; + WaitForSingleObject(SCTP_BASE_VAR(recvthreadraw), INFINITE); + CloseHandle(SCTP_BASE_VAR(recvthreadraw)); #else close(SCTP_BASE_VAR(userspace_rawsctp)); + SCTP_BASE_VAR(userspace_rawsctp) = -1; + pthread_join(SCTP_BASE_VAR(recvthreadraw), NULL); #endif } if (SCTP_BASE_VAR(userspace_udpsctp) != -1) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) closesocket(SCTP_BASE_VAR(userspace_udpsctp)); + SCTP_BASE_VAR(userspace_udpsctp) = -1; + WaitForSingleObject(SCTP_BASE_VAR(recvthreadudp), INFINITE); + CloseHandle(SCTP_BASE_VAR(recvthreadudp)); #else close(SCTP_BASE_VAR(userspace_udpsctp)); + SCTP_BASE_VAR(userspace_udpsctp) = -1; + pthread_join(SCTP_BASE_VAR(recvthreadudp), NULL); #endif } #endif #if defined(INET6) if (SCTP_BASE_VAR(userspace_rawsctp6) != -1) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) closesocket(SCTP_BASE_VAR(userspace_rawsctp6)); + SCTP_BASE_VAR(userspace_rawsctp6) = -1; + WaitForSingleObject(SCTP_BASE_VAR(recvthreadraw6), INFINITE); + CloseHandle(SCTP_BASE_VAR(recvthreadraw6)); #else close(SCTP_BASE_VAR(userspace_rawsctp6)); + SCTP_BASE_VAR(userspace_rawsctp6) = -1; + pthread_join(SCTP_BASE_VAR(recvthreadraw6), NULL); #endif } if (SCTP_BASE_VAR(userspace_udpsctp6) != -1) { -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) + SCTP_BASE_VAR(userspace_udpsctp6) = -1; closesocket(SCTP_BASE_VAR(userspace_udpsctp6)); + WaitForSingleObject(SCTP_BASE_VAR(recvthreadudp6), INFINITE); + CloseHandle(SCTP_BASE_VAR(recvthreadudp6)); #else close(SCTP_BASE_VAR(userspace_udpsctp6)); + SCTP_BASE_VAR(userspace_udpsctp6) = -1; + pthread_join(SCTP_BASE_VAR(recvthreadudp6), NULL); #endif } #endif diff --git a/netwerk/sctp/src/user_route.h b/netwerk/sctp/src/user_route.h index 82b07d769a..4abf2eac98 100755 --- a/netwerk/sctp/src/user_route.h +++ b/netwerk/sctp/src/user_route.h @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * diff --git a/netwerk/sctp/src/user_socket.c b/netwerk/sctp/src/user_socket.c index 7134001fe7..ce9daed2aa 100755 --- a/netwerk/sctp/src/user_socket.c +++ b/netwerk/sctp/src/user_socket.c @@ -39,13 +39,18 @@ #include #include #include +#include +#include #ifdef INET6 #include #endif -#if defined(__Userspace_os_Linux) +#if defined(__FreeBSD__) +#include +#endif +#if defined(__linux__) #define __FAVOR_BSD /* (on Ubuntu at least) enables UDP header field names like BSD in RFC 768 */ #endif -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) #if defined INET || defined INET6 #include #endif @@ -67,17 +72,54 @@ MALLOC_DEFINE(M_SONAME, "sctp_soname", "sctp soname"); /* Prototypes */ extern int sctp_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, - /* proc is a dummy in __Userspace__ and will not be passed to sctp_lower_sosend */ struct proc *p); + /* proc is a dummy in __Userspace__ and will not be passed to sctp_lower_sosend */ + struct proc *p); extern int sctp_attach(struct socket *so, int proto, uint32_t vrf_id); extern int sctpconn_attach(struct socket *so, int proto, uint32_t vrf_id); +static void init_sync(void) { +#if defined(_WIN32) +#if defined(INET) || defined(INET6) + WSADATA wsaData; + + if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { + SCTP_PRINTF("WSAStartup failed\n"); + exit (-1); + } +#endif + InitializeConditionVariable(&accept_cond); + InitializeCriticalSection(&accept_mtx); +#else + pthread_mutexattr_t mutex_attr; + + pthread_mutexattr_init(&mutex_attr); +#ifdef INVARIANTS + pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_ERRORCHECK); +#endif + pthread_mutex_init(&accept_mtx, &mutex_attr); + pthread_mutexattr_destroy(&mutex_attr); + pthread_cond_init(&accept_cond, NULL); +#endif +} + void usrsctp_init(uint16_t port, int (*conn_output)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), void (*debug_printf)(const char *format, ...)) { - sctp_init(port, conn_output, debug_printf); + init_sync(); + sctp_init(port, conn_output, debug_printf, 1); +} + + +void +usrsctp_init_nothreads(uint16_t port, + int (*conn_output)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), + void (*debug_printf)(const char *format, ...)) +{ + init_sync(); + sctp_init(port, conn_output, debug_printf, 0); } @@ -127,28 +169,17 @@ socantsendmore(struct socket *so) int sbwait(struct sockbuf *sb) { -#if defined(__Userspace__) /* __Userspace__ */ - SOCKBUF_LOCK_ASSERT(sb); sb->sb_flags |= SB_WAIT; -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) if (SleepConditionVariableCS(&(sb->sb_cond), &(sb->sb_mtx), INFINITE)) - return 0; + return (0); else - return -1; + return (-1); #else return (pthread_cond_wait(&(sb->sb_cond), &(sb->sb_mtx))); #endif - -#else - SOCKBUF_LOCK_ASSERT(sb); - - sb->sb_flags |= SB_WAIT; - return (msleep(&sb->sb_cc, &sb->sb_mtx, - (sb->sb_flags & SB_NOINTR) ? PSOCK : PSOCK | PCATCH, "sbwait", - sb->sb_timeo)); -#endif } @@ -220,7 +251,7 @@ sofree(struct socket *so) ACCEPT_LOCK_ASSERT(); SOCK_LOCK_ASSERT(so); - /* SS_NOFDREF unset in accept call. this condition seems irrelevent + /* SS_NOFDREF unset in accept call. this condition seems irrelevant * for __Userspace__... */ if (so->so_count != 0 || @@ -265,7 +296,7 @@ sofree(struct socket *so) * necessary from sorflush(). * * Notice that the socket buffer and kqueue state are torn down - * before calling pru_detach. This means that protocols shold not + * before calling pru_detach. This means that protocols should not * assume they can perform socket wakeups, etc, in their detach code. */ sodealloc(so); @@ -274,11 +305,9 @@ sofree(struct socket *so) /* Taken from /src/sys/kern/uipc_socket.c */ -int -soabort(so) - struct socket *so; +void +soabort(struct socket *so) { - int error; #if defined(INET6) struct sctp_inpcb *inp; #endif @@ -286,24 +315,18 @@ soabort(so) #if defined(INET6) inp = (struct sctp_inpcb *)so->so_pcb; if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - error = sctp6_abort(so); + sctp6_abort(so); } else { #if defined(INET) - error = sctp_abort(so); -#else - error = EAFNOSUPPORT; + sctp_abort(so); #endif } #elif defined(INET) - error = sctp_abort(so); -#else - error = EAFNOSUPPORT; + sctp_abort(so); #endif - if (error) { - sofree(so); - return error; - } - return (0); + ACCEPT_LOCK(); + SOCK_LOCK(so); + sofree(so); } @@ -327,21 +350,21 @@ void soisdisconnecting(struct socket *so) { - /* - * Note: This code assumes that SOCK_LOCK(so) and - * SOCKBUF_LOCK(&so->so_rcv) are the same. - */ - SOCKBUF_LOCK(&so->so_rcv); - so->so_state &= ~SS_ISCONNECTING; - so->so_state |= SS_ISDISCONNECTING; - so->so_rcv.sb_state |= SBS_CANTRCVMORE; - sorwakeup_locked(so); - SOCKBUF_LOCK(&so->so_snd); - so->so_snd.sb_state |= SBS_CANTSENDMORE; - sowwakeup_locked(so); - wakeup("dummy",so); - /* requires 2 args but this was in orig */ - /* wakeup(&so->so_timeo); */ + /* + * Note: This code assumes that SOCK_LOCK(so) and + * SOCKBUF_LOCK(&so->so_rcv) are the same. + */ + SOCKBUF_LOCK(&so->so_rcv); + so->so_state &= ~SS_ISCONNECTING; + so->so_state |= SS_ISDISCONNECTING; + so->so_rcv.sb_state |= SBS_CANTRCVMORE; + sorwakeup_locked(so); + SOCKBUF_LOCK(&so->so_snd); + so->so_snd.sb_state |= SBS_CANTSENDMORE; + sowwakeup_locked(so); + wakeup("dummy",so); + /* requires 2 args but this was in orig */ + /* wakeup(&so->so_timeo); */ } @@ -357,12 +380,10 @@ soisdisconnecting(struct socket *so) * timeo identifier. */ void -wakeup(ident, so) - void *ident; - struct socket *so; +wakeup(void *ident, struct socket *so) { SOCK_LOCK(so); -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) WakeAllConditionVariable(&(so)->timeo_cond); #else pthread_cond_broadcast(&(so)->timeo_cond); @@ -377,8 +398,7 @@ wakeup(ident, so) * swapped out. */ void -wakeup_one(ident) - void *ident; +wakeup_one(void *ident) { /* __Userspace__ Check: We are using accept_cond for wakeup_one. It seems that wakeup_one is only called within @@ -389,7 +409,7 @@ wakeup_one(ident) subsidiary sockets. */ ACCEPT_LOCK(); -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) WakeAllConditionVariable(&accept_cond); #else pthread_cond_broadcast(&accept_cond); @@ -509,7 +529,7 @@ sonewconn(struct socket *head, int connstatus) /* * Keep removing sockets from the head until there's room for * us to insert on the tail. In pre-locking revisions, this - * was a simple if(), but as we could be racing with other + * was a simple if (), but as we could be racing with other * threads and soabort() requires dropping locks, we must * loop waiting for the condition to be true. */ @@ -537,39 +557,17 @@ sonewconn(struct socket *head, int connstatus) } -/* From /src/sys/sys/sysproto.h */ -struct sctp_generic_sendmsg_args { - int sd; - caddr_t msg; - int mlen; - caddr_t to; - socklen_t tolen; /* was __socklen_t */ - struct sctp_sndrcvinfo * sinfo; - int flags; -}; - -struct sctp_generic_recvmsg_args { - int sd; - struct iovec *iov; - int iovlen; - struct sockaddr *from; - socklen_t *fromlenaddr; /* was __socklen_t */ - struct sctp_sndrcvinfo *sinfo; - int *msg_flags; -}; - - /* Source: /src/sys/gnu/fs/xfs/FreeBSD/xfs_ioctl.c */ static __inline__ int -copy_to_user(void *dst, void *src, int len) { +copy_to_user(void *dst, void *src, size_t len) { memcpy(dst, src, len); return 0; } static __inline__ int -copy_from_user(void *dst, void *src, int len) { +copy_from_user(void *dst, void *src, size_t len) { memcpy(dst, src, len); return 0; } @@ -613,7 +611,7 @@ int uiomove(void *cp, int n, struct uio *uio) { struct iovec *iov; - int cnt; + size_t cnt; int error = 0; if ((uio->uio_rw != UIO_READ) && @@ -629,7 +627,7 @@ uiomove(void *cp, int n, struct uio *uio) uio->uio_iovcnt--; continue; } - if (cnt > n) + if (cnt > (size_t)n) cnt = n; switch (uio->uio_segflg) { @@ -645,17 +643,17 @@ uiomove(void *cp, int n, struct uio *uio) case UIO_SYSSPACE: if (uio->uio_rw == UIO_READ) - bcopy(cp, iov->iov_base, cnt); + memcpy(iov->iov_base, cp, cnt); else - bcopy(iov->iov_base, cp, cnt); + memcpy(cp, iov->iov_base, cnt); break; } iov->iov_base = (char *)iov->iov_base + cnt; iov->iov_len -= cnt; uio->uio_resid -= cnt; - uio->uio_offset += cnt; + uio->uio_offset += (off_t)cnt; cp = (char *)cp + cnt; - n -= cnt; + n -= (int)cnt; } out: return (error); @@ -664,10 +662,7 @@ uiomove(void *cp, int n, struct uio *uio) /* Source: src/sys/kern/uipc_syscalls.c */ int -getsockaddr(namp, uaddr, len) - struct sockaddr **namp; - caddr_t uaddr; - size_t len; +getsockaddr(struct sockaddr **namp, caddr_t uaddr, size_t len) { struct sockaddr *sa; int error; @@ -689,6 +684,52 @@ getsockaddr(namp, uaddr, len) return (error); } +int +usrsctp_getsockopt(struct socket *so, int level, int option_name, + void *option_value, socklen_t *option_len); + +sctp_assoc_t +usrsctp_getassocid(struct socket *sock, struct sockaddr *sa) +{ + struct sctp_paddrinfo sp; + socklen_t siz; +#ifndef HAVE_SA_LEN + size_t sa_len; +#endif + + /* First get the assoc id */ + siz = sizeof(sp); + memset(&sp, 0, sizeof(sp)); +#ifdef HAVE_SA_LEN + memcpy((caddr_t)&sp.spinfo_address, sa, sa->sa_len); +#else + switch (sa->sa_family) { +#ifdef INET + case AF_INET: + sa_len = sizeof(struct sockaddr_in); + break; +#endif +#ifdef INET6 + case AF_INET6: + sa_len = sizeof(struct sockaddr_in6); + break; +#endif + case AF_CONN: + sa_len = sizeof(struct sockaddr_conn); + break; + default: + sa_len = 0; + break; + } + memcpy((caddr_t)&sp.spinfo_address, sa, sa_len); +#endif + if (usrsctp_getsockopt(sock, IPPROTO_SCTP, SCTP_GET_PEER_ADDR_INFO, &sp, &siz) != 0) { + /* We depend on the fact that 0 can never be returned */ + return ((sctp_assoc_t) 0); + } + return (sp.spinfo_assoc_id); +} + /* Taken from /src/lib/libc/net/sctp_sys_calls.c * and modified for __Userspace__ @@ -700,11 +741,11 @@ userspace_sctp_sendmsg(struct socket *so, size_t len, struct sockaddr *to, socklen_t tolen, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) { struct sctp_sndrcvinfo sndrcvinfo, *sinfo = &sndrcvinfo; struct uio auio; @@ -720,7 +761,7 @@ userspace_sctp_sendmsg(struct socket *so, /* Perform error checks on destination (to) */ - if (tolen > SOCK_MAXADDRLEN){ + if (tolen > SOCK_MAXADDRLEN) { errno = ENAMETOOLONG; return (-1); } @@ -729,6 +770,10 @@ userspace_sctp_sendmsg(struct socket *so, errno = EINVAL; return (-1); } + if (data == NULL) { + errno = EFAULT; + return (-1); + } /* Adding the following as part of defensive programming, in case the application does not do it when preparing the destination address.*/ #ifdef HAVE_SA_LEN @@ -770,12 +815,18 @@ usrsctp_sendv(struct socket *so, struct uio auio; struct iovec iov[1]; int use_sinfo; + sctp_assoc_t *assoc_id; if (so == NULL) { errno = EBADF; return (-1); } + if (data == NULL) { + errno = EFAULT; + return (-1); + } memset(&sinfo, 0, sizeof(struct sctp_sndrcvinfo)); + assoc_id = NULL; use_sinfo = 0; switch (infotype) { case SCTP_SENDV_NOINFO: @@ -794,6 +845,7 @@ usrsctp_sendv(struct socket *so, sinfo.sinfo_ppid = ((struct sctp_sndinfo *)info)->snd_ppid; sinfo.sinfo_context = ((struct sctp_sndinfo *)info)->snd_context; sinfo.sinfo_assoc_id = ((struct sctp_sndinfo *)info)->snd_assoc_id; + assoc_id = &(((struct sctp_sndinfo *)info)->snd_assoc_id); use_sinfo = 1; break; case SCTP_SENDV_PRINFO: @@ -820,6 +872,7 @@ usrsctp_sendv(struct socket *so, sinfo.sinfo_ppid = ((struct sctp_sendv_spa *)info)->sendv_sndinfo.snd_ppid; sinfo.sinfo_context = ((struct sctp_sendv_spa *)info)->sendv_sndinfo.snd_context; sinfo.sinfo_assoc_id = ((struct sctp_sendv_spa *)info)->sendv_sndinfo.snd_assoc_id; + assoc_id = &(((struct sctp_sendv_spa *)info)->sendv_sndinfo.snd_assoc_id); } else { sinfo.sinfo_flags = 0; sinfo.sinfo_stream = 0; @@ -856,6 +909,9 @@ usrsctp_sendv(struct socket *so, auio.uio_resid = len; errno = sctp_lower_sosend(so, to, &auio, NULL, NULL, flags, use_sinfo ? &sinfo : NULL); if (errno == 0) { + if ((to != NULL) && (assoc_id != NULL)) { + *assoc_id = usrsctp_getassocid(so, to); + } return (len - auio.uio_resid); } else { return (-1); @@ -869,59 +925,58 @@ userspace_sctp_sendmbuf(struct socket *so, size_t len, struct sockaddr *to, socklen_t tolen, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) -{ - - struct sctp_sndrcvinfo sndrcvinfo, *sinfo = &sndrcvinfo; - /* struct uio auio; - struct iovec iov[1]; */ - int error = 0; - int uflags = 0; - int retvalsendmsg; - - sinfo->sinfo_ppid = ppid; - sinfo->sinfo_flags = flags; - sinfo->sinfo_stream = stream_no; - sinfo->sinfo_timetolive = timetolive; - sinfo->sinfo_context = context; - sinfo->sinfo_assoc_id = 0; - - /* Perform error checks on destination (to) */ - if (tolen > SOCK_MAXADDRLEN){ - error = (ENAMETOOLONG); - goto sendmsg_return; - } - if (tolen < (socklen_t)offsetof(struct sockaddr, sa_data)){ - error = (EINVAL); - goto sendmsg_return; - } - /* Adding the following as part of defensive programming, in case the application - does not do it when preparing the destination address.*/ + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) +{ + + struct sctp_sndrcvinfo sndrcvinfo, *sinfo = &sndrcvinfo; + /* struct uio auio; + struct iovec iov[1]; */ + int error = 0; + int uflags = 0; + ssize_t retval; + + sinfo->sinfo_ppid = ppid; + sinfo->sinfo_flags = flags; + sinfo->sinfo_stream = stream_no; + sinfo->sinfo_timetolive = timetolive; + sinfo->sinfo_context = context; + sinfo->sinfo_assoc_id = 0; + + /* Perform error checks on destination (to) */ + if (tolen > SOCK_MAXADDRLEN){ + error = (ENAMETOOLONG); + goto sendmsg_return; + } + if (tolen < (socklen_t)offsetof(struct sockaddr, sa_data)){ + error = (EINVAL); + goto sendmsg_return; + } + /* Adding the following as part of defensive programming, in case the application + does not do it when preparing the destination address.*/ #ifdef HAVE_SA_LEN - to->sa_len = tolen; + to->sa_len = tolen; #endif - error = sctp_lower_sosend(so, to, NULL/*uio*/, - (struct mbuf *)mbufdata, (struct mbuf *)NULL, - uflags, sinfo); + error = sctp_lower_sosend(so, to, NULL/*uio*/, + (struct mbuf *)mbufdata, (struct mbuf *)NULL, + uflags, sinfo); sendmsg_return: - /* TODO: Needs a condition for non-blocking when error is EWOULDBLOCK */ - if (0 == error) - retvalsendmsg = len; - else if(error == EWOULDBLOCK) { - errno = EWOULDBLOCK; - retvalsendmsg = (-1); - } else { - SCTP_PRINTF("%s: error = %d\n", __func__, error); - errno = error; - retvalsendmsg = (-1); - } - return retvalsendmsg; - + /* TODO: Needs a condition for non-blocking when error is EWOULDBLOCK */ + if (0 == error) + retval = len; + else if (error == EWOULDBLOCK) { + errno = EWOULDBLOCK; + retval = -1; + } else { + SCTP_PRINTF("%s: error = %d\n", __func__, error); + errno = error; + retval = -1; + } + return (retval); } @@ -946,7 +1001,8 @@ userspace_sctp_recvmsg(struct socket *so, struct iovec *tiov; int iovlen = 1; int error = 0; - int ulen, i, retval; + ssize_t ulen; + int i; socklen_t fromlen; iov[0].iov_base = dbuf; @@ -977,9 +1033,9 @@ userspace_sctp_recvmsg(struct socket *so, (struct sctp_sndrcvinfo *)sinfo, 1); if (error) { - if (auio.uio_resid != (int)ulen && + if ((auio.uio_resid != ulen) && (error == EINTR || -#if !defined(__Userspace_os_NetBSD) +#if !defined(__NetBSD__) error == ERESTART || #endif error == EWOULDBLOCK)) { @@ -1009,10 +1065,9 @@ userspace_sctp_recvmsg(struct socket *so, *fromlenp = fromlen; } } - if (error == 0){ + if (error == 0) { /* ready return value */ - retval = (int)ulen - auio.uio_resid; - return (retval); + return (ulen - auio.uio_resid); } else { SCTP_PRINTF("%s: error = %d\n", __func__, error); return (-1); @@ -1034,7 +1089,8 @@ usrsctp_recvv(struct socket *so, struct iovec iov[SCTP_SMALL_IOVEC_SIZE]; struct iovec *tiov; int iovlen = 1; - int ulen, i; + ssize_t ulen; + int i; socklen_t fromlen; struct sctp_rcvinfo *rcv; struct sctp_recvv_rn *rn; @@ -1070,15 +1126,18 @@ usrsctp_recvv(struct socket *so, from, fromlen, msg_flags, (struct sctp_sndrcvinfo *)&seinfo, 1); if (errno) { - if (auio.uio_resid != (int)ulen && + if ((auio.uio_resid != ulen) && (errno == EINTR || -#if !defined(__Userspace_os_NetBSD) +#if !defined(__NetBSD__) errno == ERESTART || #endif errno == EWOULDBLOCK)) { errno = 0; } } + if (errno != 0) { + goto out; + } if ((*msg_flags & MSG_NOTIFICATION) == 0) { struct sctp_inpcb *inp; @@ -1130,7 +1189,10 @@ usrsctp_recvv(struct socket *so, *infolen = 0; } } - if ((fromlenp != NULL) && (fromlen > 0) && (from != NULL)) { + if ((fromlenp != NULL) && + (fromlen > 0) && + (from != NULL) && + (ulen > auio.uio_resid)) { switch (from->sa_family) { #if defined(INET) case AF_INET: @@ -1153,9 +1215,10 @@ usrsctp_recvv(struct socket *so, *fromlenp = fromlen; } } +out: if (errno == 0) { /* ready return value */ - return ((int)ulen - auio.uio_resid); + return (ulen - auio.uio_resid); } else { return (-1); } @@ -1164,7 +1227,6 @@ usrsctp_recvv(struct socket *so, -#if defined(__Userspace__) /* Taken from /src/sys/kern/uipc_socket.c * and modified for __Userspace__ * socreate returns a socket. The socket should be @@ -1235,74 +1297,6 @@ socreate(int dom, struct socket **aso, int type, int proto) *aso = so; return (0); } -#else -/* The kernel version for reference is below. The #else - should be removed once the __Userspace__ - version is tested. - * socreate returns a socket with a ref count of 1. The socket should be - * closed with soclose(). - */ -int -socreate(int dom, struct socket **aso, int type, int proto, - struct ucred *cred, struct thread *td) -{ - struct protosw *prp; - struct socket *so; - int error; - - if (proto) - prp = pffindproto(dom, proto, type); - else - prp = pffindtype(dom, type); - - if (prp == NULL || prp->pr_usrreqs->pru_attach == NULL || - prp->pr_usrreqs->pru_attach == pru_attach_notsupp) - return (EPROTONOSUPPORT); - - if (jailed(cred) && jail_socket_unixiproute_only && - prp->pr_domain->dom_family != PF_LOCAL && - prp->pr_domain->dom_family != PF_INET && - prp->pr_domain->dom_family != PF_ROUTE) { - return (EPROTONOSUPPORT); - } - - if (prp->pr_type != type) - return (EPROTOTYPE); - so = soalloc(); - if (so == NULL) - return (ENOBUFS); - - TAILQ_INIT(&so->so_incomp); - TAILQ_INIT(&so->so_comp); - so->so_type = type; - so->so_cred = crhold(cred); - so->so_proto = prp; -#ifdef MAC - mac_create_socket(cred, so); -#endif - knlist_init(&so->so_rcv.sb_sel.si_note, SOCKBUF_MTX(&so->so_rcv), - NULL, NULL, NULL); - knlist_init(&so->so_snd.sb_sel.si_note, SOCKBUF_MTX(&so->so_snd), - NULL, NULL, NULL); - so->so_count = 1; - /* - * Auto-sizing of socket buffers is managed by the protocols and - * the appropriate flags must be set in the pru_attach function. - */ - error = (*prp->pr_usrreqs->pru_attach)(so, proto, td); - if (error) { - KASSERT(so->so_count == 1, ("socreate: so_count %d", - so->so_count)); - so->so_count = 0; - sodealloc(so); - return (error); - } - *aso = so; - return (0); -} -#endif - - /* Taken from /src/sys/kern/uipc_syscalls.c @@ -1330,13 +1324,13 @@ struct socket * usrsctp_socket(int domain, int type, int protocol, int (*receive_cb)(struct socket *sock, union sctp_sockstore addr, void *data, size_t datalen, struct sctp_rcvinfo, int flags, void *ulp_info), - int (*send_cb)(struct socket *sock, uint32_t sb_free), + int (*send_cb)(struct socket *sock, uint32_t sb_free, void *ulp_info), uint32_t sb_threshold, void *ulp_info) { - struct socket *so; + struct socket *so = NULL; - if ((protocol = IPPROTO_SCTP) && (SCTP_BASE_VAR(sctp_pcb_initialized) == 0)) { + if ((protocol == IPPROTO_SCTP) && (SCTP_BASE_VAR(sctp_pcb_initialized) == 0)) { errno = EPROTONOSUPPORT; return (NULL); } @@ -1397,7 +1391,6 @@ sbreserve(struct sockbuf *sb, u_long cc, struct socket *so) return (error); } -#if defined(__Userspace__) int soreserve(struct socket *so, u_long sndcc, u_long rcvcc) { @@ -1427,45 +1420,12 @@ soreserve(struct socket *so, u_long sndcc, u_long rcvcc) SOCKBUF_UNLOCK(&so->so_snd); return (ENOBUFS); } -#else /* kernel version for reference */ -int -soreserve(struct socket *so, u_long sndcc, u_long rcvcc) -{ - struct thread *td = curthread; - - SOCKBUF_LOCK(&so->so_snd); - SOCKBUF_LOCK(&so->so_rcv); - if (sbreserve_locked(&so->so_snd, sndcc, so, td) == 0) - goto bad; - if (sbreserve_locked(&so->so_rcv, rcvcc, so, td) == 0) - goto bad2; - if (so->so_rcv.sb_lowat == 0) - so->so_rcv.sb_lowat = 1; - if (so->so_snd.sb_lowat == 0) - so->so_snd.sb_lowat = MCLBYTES; - if (so->so_snd.sb_lowat > so->so_snd.sb_hiwat) - so->so_snd.sb_lowat = so->so_snd.sb_hiwat; - SOCKBUF_UNLOCK(&so->so_rcv); - SOCKBUF_UNLOCK(&so->so_snd); - return (0); -bad2: - sbrelease_locked(&so->so_snd, so); -bad: - SOCKBUF_UNLOCK(&so->so_rcv); - SOCKBUF_UNLOCK(&so->so_snd); - return (ENOBUFS); -} -#endif - - - /* Taken from /src/sys/kern/uipc_sockbuf.c * and modified for __Userspace__ */ -#if defined(__Userspace__) void sowakeup(struct socket *so, struct sockbuf *sb) { @@ -1475,53 +1435,14 @@ sowakeup(struct socket *so, struct sockbuf *sb) sb->sb_flags &= ~SB_SEL; if (sb->sb_flags & SB_WAIT) { sb->sb_flags &= ~SB_WAIT; -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) WakeAllConditionVariable(&(sb)->sb_cond); #else pthread_cond_broadcast(&(sb)->sb_cond); #endif } SOCKBUF_UNLOCK(sb); - /*__Userspace__ what todo about so_upcall?*/ - -} -#else /* kernel version for reference */ -/* - * Wakeup processes waiting on a socket buffer. Do asynchronous notification - * via SIGIO if the socket has the SS_ASYNC flag set. - * - * Called with the socket buffer lock held; will release the lock by the end - * of the function. This allows the caller to acquire the socket buffer lock - * while testing for the need for various sorts of wakeup and hold it through - * to the point where it's no longer required. We currently hold the lock - * through calls out to other subsystems (with the exception of kqueue), and - * then release it to avoid lock order issues. It's not clear that's - * correct. - */ -void -sowakeup(struct socket *so, struct sockbuf *sb) -{ - - SOCKBUF_LOCK_ASSERT(sb); - - selwakeuppri(&sb->sb_sel, PSOCK); - sb->sb_flags &= ~SB_SEL; - if (sb->sb_flags & SB_WAIT) { - sb->sb_flags &= ~SB_WAIT; - wakeup(&sb->sb_cc); - } - KNOTE_LOCKED(&sb->sb_sel.si_note, 0); - SOCKBUF_UNLOCK(sb); - if ((so->so_state & SS_ASYNC) && so->so_sigio != NULL) - pgsigio(&so->so_sigio, SIGIO, 0); - if (sb->sb_flags & SB_UPCALL) - (*so->so_upcall)(so, so->so_upcallarg, M_NOWAIT); - if (sb->sb_flags & SB_AIO) - aio_swake(so, sb); - mtx_assert(SOCKBUF_MTX(sb), MA_NOTOWNED); } -#endif - /* Taken from /src/sys/kern/uipc_socket.c @@ -1693,7 +1614,7 @@ user_accept(struct socket *head, struct sockaddr **name, socklen_t *namelen, st head->so_error = ECONNABORTED; break; } -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) if (SleepConditionVariableCS(&accept_cond, &accept_mtx, INFINITE)) error = 0; else @@ -1851,7 +1772,7 @@ accept1(struct socket *so, struct sockaddr *aname, socklen_t *anamelen, struct s struct socket * usrsctp_accept(struct socket *so, struct sockaddr *aname, socklen_t *anamelen) { - struct socket *accept_return_sock; + struct socket *accept_return_sock = NULL; errno = accept1(so, aname, anamelen, &accept_return_sock); if (errno) { @@ -1957,7 +1878,7 @@ soconnect(struct socket *so, struct sockaddr *nam) * Otherwise, if connected, try to disconnect first. This allows * user to disconnect by connecting to, e.g., a null address. */ - if (so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING) && (error = sodisconnect(so))) { + if (so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING) && (sodisconnect(so) != 0)) { error = EISCONN; } else { /* @@ -2014,7 +1935,7 @@ int user_connect(struct socket *so, struct sockaddr *sa) SOCK_LOCK(so); while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) { -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) if (SleepConditionVariableCS(SOCK_COND(so), SOCK_MTX(so), INFINITE)) error = 0; else @@ -2023,7 +1944,7 @@ int user_connect(struct socket *so, struct sockaddr *sa) error = pthread_cond_wait(SOCK_COND(so), SOCK_MTX(so)); #endif if (error) { -#if defined(__Userspace_os_NetBSD) +#if defined(__NetBSD__) if (error == EINTR) { #else if (error == EINTR || error == ERESTART) { @@ -2043,7 +1964,7 @@ int user_connect(struct socket *so, struct sockaddr *sa) if (!interrupted) { so->so_state &= ~SS_ISCONNECTING; } -#if !defined(__Userspace_os_NetBSD) +#if !defined(__NetBSD__) if (error == ERESTART) { error = EINTR; } @@ -2054,7 +1975,7 @@ int user_connect(struct socket *so, struct sockaddr *sa) int usrsctp_connect(struct socket *so, struct sockaddr *name, int namelen) { - struct sockaddr *sa; + struct sockaddr *sa = NULL; errno = getsockaddr(&sa, (caddr_t)name, namelen); if (errno) @@ -2153,6 +2074,16 @@ usrsctp_finish(void) return (-1); } sctp_finish(); +#if defined(_WIN32) + DeleteConditionVariable(&accept_cond); + DeleteCriticalSection(&accept_mtx); +#if defined(INET) || defined(INET6) + WSACleanup(); +#endif +#else + pthread_cond_destroy(&accept_cond); + pthread_mutex_destroy(&accept_mtx); +#endif return (0); } @@ -2279,7 +2210,7 @@ usrsctp_getsockopt(struct socket *so, int level, int option_name, int *buf_size; buf_size = (int *)option_value; - *buf_size = so->so_rcv.sb_hiwat;; + *buf_size = so->so_rcv.sb_hiwat; *option_len = (socklen_t)sizeof(int); return (0); } @@ -2314,6 +2245,20 @@ usrsctp_getsockopt(struct socket *so, int level, int option_name, *option_len = (socklen_t)sizeof(struct linger); return (0); } + break; + case SO_ERROR: + if (*option_len < (socklen_t)sizeof(int)) { + errno = EINVAL; + return (-1); + } else { + int *intval; + + intval = (int *)option_value; + *intval = so->so_error; + *option_len = (socklen_t)sizeof(int); + return (0); + } + break; default: errno = EINVAL; return (-1); @@ -2344,16 +2289,137 @@ userspace_getsockopt(struct socket *so, int level, int option_name, return (usrsctp_getsockopt(so, level, option_name, option_value, option_len)); } +int +usrsctp_opt_info(struct socket *so, sctp_assoc_t id, int opt, void *arg, socklen_t *size) +{ + if (arg == NULL) { + errno = EINVAL; + return (-1); + } + if ((id == SCTP_CURRENT_ASSOC) || + (id == SCTP_ALL_ASSOC)) { + errno = EINVAL; + return (-1); + } + switch (opt) { + case SCTP_RTOINFO: + ((struct sctp_rtoinfo *)arg)->srto_assoc_id = id; + break; + case SCTP_ASSOCINFO: + ((struct sctp_assocparams *)arg)->sasoc_assoc_id = id; + break; + case SCTP_DEFAULT_SEND_PARAM: + ((struct sctp_assocparams *)arg)->sasoc_assoc_id = id; + break; + case SCTP_PRIMARY_ADDR: + ((struct sctp_setprim *)arg)->ssp_assoc_id = id; + break; + case SCTP_PEER_ADDR_PARAMS: + ((struct sctp_paddrparams *)arg)->spp_assoc_id = id; + break; + case SCTP_MAXSEG: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_AUTH_KEY: + ((struct sctp_authkey *)arg)->sca_assoc_id = id; + break; + case SCTP_AUTH_ACTIVE_KEY: + ((struct sctp_authkeyid *)arg)->scact_assoc_id = id; + break; + case SCTP_DELAYED_SACK: + ((struct sctp_sack_info *)arg)->sack_assoc_id = id; + break; + case SCTP_CONTEXT: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_STATUS: + ((struct sctp_status *)arg)->sstat_assoc_id = id; + break; + case SCTP_GET_PEER_ADDR_INFO: + ((struct sctp_paddrinfo *)arg)->spinfo_assoc_id = id; + break; + case SCTP_PEER_AUTH_CHUNKS: + ((struct sctp_authchunks *)arg)->gauth_assoc_id = id; + break; + case SCTP_LOCAL_AUTH_CHUNKS: + ((struct sctp_authchunks *)arg)->gauth_assoc_id = id; + break; + case SCTP_TIMEOUTS: + ((struct sctp_timeouts *)arg)->stimo_assoc_id = id; + break; + case SCTP_EVENT: + ((struct sctp_event *)arg)->se_assoc_id = id; + break; + case SCTP_DEFAULT_SNDINFO: + ((struct sctp_sndinfo *)arg)->snd_assoc_id = id; + break; + case SCTP_DEFAULT_PRINFO: + ((struct sctp_default_prinfo *)arg)->pr_assoc_id = id; + break; + case SCTP_PEER_ADDR_THLDS: + ((struct sctp_paddrthlds *)arg)->spt_assoc_id = id; + break; + case SCTP_REMOTE_UDP_ENCAPS_PORT: + ((struct sctp_udpencaps *)arg)->sue_assoc_id = id; + break; + case SCTP_ECN_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_PR_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_AUTH_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_ASCONF_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_RECONFIG_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_NRSACK_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_PKTDROP_SUPPORTED: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_MAX_BURST: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_ENABLE_STREAM_RESET: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + case SCTP_PR_STREAM_STATUS: + ((struct sctp_prstatus *)arg)->sprstat_assoc_id = id; + break; + case SCTP_PR_ASSOC_STATUS: + ((struct sctp_prstatus *)arg)->sprstat_assoc_id = id; + break; + case SCTP_MAX_CWND: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; + default: + break; + } + return (usrsctp_getsockopt(so, IPPROTO_SCTP, opt, arg, size)); +} + int usrsctp_set_ulpinfo(struct socket *so, void *ulp_info) { return (register_ulp_info(so, ulp_info)); } + +int +usrsctp_get_ulpinfo(struct socket *so, void **pulp_info) +{ + return (retrieve_ulp_info(so, pulp_info)); +} + int usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) { - struct sctp_getaddresses *gaddrs; struct sockaddr *sa; #ifdef INET struct sockaddr_in *sin; @@ -2362,9 +2428,9 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) struct sockaddr_in6 *sin6; #endif int i; - size_t argsz; #if defined(INET) || defined(INET6) - uint16_t sport = 0; + uint16_t sport; + bool fix_port; #endif /* validate the flags */ @@ -2378,6 +2444,10 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) errno = EINVAL; return (-1); } +#if defined(INET) || defined(INET6) + sport = 0; + fix_port = false; +#endif /* First pre-screen the addresses */ sa = addrs; for (i = 0; i < addrcnt; i++) { @@ -2402,6 +2472,7 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) } else { /* save off the port */ sport = sin->sin_port; + fix_port = (i > 0); } } #ifndef HAVE_SA_LEN @@ -2429,6 +2500,7 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) } else { /* save off the port */ sport = sin6->sin6_port; + fix_port = (i > 0); } } #ifndef HAVE_SA_LEN @@ -2445,23 +2517,30 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) sa = (struct sockaddr *)((caddr_t)sa + sa->sa_len); #endif } - argsz = sizeof(struct sctp_getaddresses) + - sizeof(struct sockaddr_storage); - if ((gaddrs = (struct sctp_getaddresses *)malloc(argsz)) == NULL) { - errno = ENOMEM; - return (-1); - } sa = addrs; for (i = 0; i < addrcnt; i++) { #ifndef HAVE_SA_LEN size_t sa_len; + #endif - memset(gaddrs, 0, argsz); - gaddrs->sget_assoc_id = 0; #ifdef HAVE_SA_LEN - memcpy(gaddrs->addr, sa, sa->sa_len); - if (usrsctp_setsockopt(so, IPPROTO_SCTP, flags, gaddrs, (socklen_t)argsz) != 0) { - free(gaddrs); +#if defined(INET) || defined(INET6) + if (fix_port) { + switch (sa->sa_family) { +#ifdef INET + case AF_INET: + ((struct sockaddr_in *)sa)->sin_port = sport; + break; +#endif +#ifdef INET6 + case AF_INET6: + ((struct sockaddr_in6 *)sa)->sin6_port = sport; + break; +#endif + } + } +#endif + if (usrsctp_setsockopt(so, IPPROTO_SCTP, flags, sa, sa->sa_len) != 0) { return (-1); } sa = (struct sockaddr *)((caddr_t)sa + sa->sa_len); @@ -2481,38 +2560,33 @@ usrsctp_bindx(struct socket *so, struct sockaddr *addrs, int addrcnt, int flags) sa_len = 0; break; } - memcpy(gaddrs->addr, sa, sa_len); /* * Now, if there was a port mentioned, assure that the * first address has that port to make sure it fails or * succeeds correctly. */ #if defined(INET) || defined(INET6) - if ((i == 0) && (sport != 0)) { - switch (gaddrs->addr->sa_family) { + if (fix_port) { + switch (sa->sa_family) { #ifdef INET case AF_INET: - sin = (struct sockaddr_in *)gaddrs->addr; - sin->sin_port = sport; + ((struct sockaddr_in *)sa)->sin_port = sport; break; #endif #ifdef INET6 case AF_INET6: - sin6 = (struct sockaddr_in6 *)gaddrs->addr; - sin6->sin6_port = sport; + ((struct sockaddr_in6 *)sa)->sin6_port = sport; break; #endif } } #endif - if (usrsctp_setsockopt(so, IPPROTO_SCTP, flags, gaddrs, (socklen_t)argsz) != 0) { - free(gaddrs); + if (usrsctp_setsockopt(so, IPPROTO_SCTP, flags, sa, (socklen_t)sa_len) != 0) { return (-1); } sa = (struct sockaddr *)((caddr_t)sa + sa_len); #endif } - free(gaddrs); return (0); } @@ -2548,9 +2622,13 @@ usrsctp_connectx(struct socket *so, return (-1); } #endif + len += sizeof(struct sockaddr_in); + if (len > SCTP_STACK_BUF_SIZE) { + errno = ENOMEM; + return (-1); + } memcpy(cpto, at, sizeof(struct sockaddr_in)); cpto = ((caddr_t)cpto + sizeof(struct sockaddr_in)); - len += sizeof(struct sockaddr_in); at = (struct sockaddr *)((caddr_t)at + sizeof(struct sockaddr_in)); break; #endif @@ -2564,18 +2642,30 @@ usrsctp_connectx(struct socket *so, #endif #ifdef INET if (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)at)->sin6_addr)) { + len += sizeof(struct sockaddr_in); + if (len > SCTP_STACK_BUF_SIZE) { + errno = ENOMEM; + return (-1); + } in6_sin6_2_sin((struct sockaddr_in *)cpto, (struct sockaddr_in6 *)at); cpto = ((caddr_t)cpto + sizeof(struct sockaddr_in)); - len += sizeof(struct sockaddr_in); } else { + len += sizeof(struct sockaddr_in6); + if (len > SCTP_STACK_BUF_SIZE) { + errno = ENOMEM; + return (-1); + } memcpy(cpto, at, sizeof(struct sockaddr_in6)); cpto = ((caddr_t)cpto + sizeof(struct sockaddr_in6)); - len += sizeof(struct sockaddr_in6); } #else + len += sizeof(struct sockaddr_in6); + if (len > SCTP_STACK_BUF_SIZE) { + errno = ENOMEM; + return (-1); + } memcpy(cpto, at, sizeof(struct sockaddr_in6)); cpto = ((caddr_t)cpto + sizeof(struct sockaddr_in6)); - len += sizeof(struct sockaddr_in6); #endif at = (struct sockaddr *)((caddr_t)at + sizeof(struct sockaddr_in6)); break; @@ -2584,18 +2674,8 @@ usrsctp_connectx(struct socket *so, errno = EINVAL; return (-1); } - if (len > (sizeof(buf) - sizeof(int))) { - /* Never enough memory */ - errno = E2BIG; - return (-1); - } cnt++; } - /* do we have any? */ - if (cnt == 0) { - errno = EINVAL; - return (-1); - } aa = (int *)buf; *aa = cnt; ret = usrsctp_setsockopt(so, IPPROTO_SCTP, SCTP_CONNECT_X, (void *)buf, (socklen_t)len); @@ -2615,22 +2695,26 @@ usrsctp_getpaddrs(struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs) { struct sctp_getaddresses *addrs; struct sockaddr *sa; - sctp_assoc_t asoc; caddr_t lim; socklen_t opt_len; + uint32_t size_of_addresses; int cnt; if (raddrs == NULL) { errno = EFAULT; return (-1); } - asoc = id; - opt_len = (socklen_t)sizeof(sctp_assoc_t); - if (usrsctp_getsockopt(so, IPPROTO_SCTP, SCTP_GET_REMOTE_ADDR_SIZE, &asoc, &opt_len) != 0) { - return (-1); + /* When calling getsockopt(), the value contains the assoc_id. */ + size_of_addresses = (uint32_t)id; + opt_len = (socklen_t)sizeof(uint32_t); + if (usrsctp_getsockopt(so, IPPROTO_SCTP, SCTP_GET_REMOTE_ADDR_SIZE, &size_of_addresses, &opt_len) != 0) { + if (errno == ENOENT) { + return (0); + } else { + return (-1); + } } - /* size required is returned in 'asoc' */ - opt_len = (socklen_t)((size_t)asoc + sizeof(struct sctp_getaddresses)); + opt_len = (socklen_t)((size_t)size_of_addresses + sizeof(struct sctp_getaddresses)); addrs = calloc(1, (size_t)opt_len); if (addrs == NULL) { errno = ENOMEM; @@ -2642,9 +2726,9 @@ usrsctp_getpaddrs(struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs) free(addrs); return (-1); } - *raddrs = (struct sockaddr *)&addrs->addr[0]; + *raddrs = &addrs->addr[0].sa; cnt = 0; - sa = (struct sockaddr *)&addrs->addr[0]; + sa = &addrs->addr[0].sa; lim = (caddr_t)addrs + opt_len; #ifdef HAVE_SA_LEN while (((caddr_t)sa < lim) && (sa->sa_len > 0)) { @@ -2681,7 +2765,7 @@ usrsctp_freepaddrs(struct sockaddr *addrs) /* Take away the hidden association id */ void *fr_addr; - fr_addr = (void *)((caddr_t)addrs - sizeof(sctp_assoc_t)); + fr_addr = (void *)((caddr_t)addrs - offsetof(struct sctp_getaddresses, addr)); /* Now free it */ free(fr_addr); } @@ -2690,10 +2774,10 @@ int usrsctp_getladdrs(struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs) { struct sctp_getaddresses *addrs; - caddr_t lim; struct sockaddr *sa; - size_t size_of_addresses; + caddr_t lim; socklen_t opt_len; + uint32_t size_of_addresses; int cnt; if (raddrs == NULL) { @@ -2701,18 +2785,11 @@ usrsctp_getladdrs(struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs) return (-1); } size_of_addresses = 0; - opt_len = (socklen_t)sizeof(int); + opt_len = (socklen_t)sizeof(uint32_t); if (usrsctp_getsockopt(so, IPPROTO_SCTP, SCTP_GET_LOCAL_ADDR_SIZE, &size_of_addresses, &opt_len) != 0) { - errno = ENOMEM; - return (-1); - } - if (size_of_addresses == 0) { - errno = ENOTCONN; return (-1); } - opt_len = (socklen_t)(size_of_addresses + - sizeof(struct sockaddr_storage) + - sizeof(struct sctp_getaddresses)); + opt_len = (socklen_t)(size_of_addresses + sizeof(struct sctp_getaddresses)); addrs = calloc(1, (size_t)opt_len); if (addrs == NULL) { errno = ENOMEM; @@ -2722,12 +2799,15 @@ usrsctp_getladdrs(struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs) /* Now lets get the array of addresses */ if (usrsctp_getsockopt(so, IPPROTO_SCTP, SCTP_GET_LOCAL_ADDRESSES, addrs, &opt_len) != 0) { free(addrs); - errno = ENOMEM; return (-1); } - *raddrs = (struct sockaddr *)&addrs->addr[0]; + if (size_of_addresses == 0) { + free(addrs); + return (0); + } + *raddrs = &addrs->addr[0].sa; cnt = 0; - sa = (struct sockaddr *)&addrs->addr[0]; + sa = &addrs->addr[0].sa; lim = (caddr_t)addrs + opt_len; #ifdef HAVE_SA_LEN while (((caddr_t)sa < lim) && (sa->sa_len > 0)) { @@ -2764,7 +2844,7 @@ usrsctp_freeladdrs(struct sockaddr *addrs) /* Take away the hidden association id */ void *fr_addr; - fr_addr = (void *)((caddr_t)addrs - sizeof(sctp_assoc_t)); + fr_addr = (void *)((caddr_t)addrs - offsetof(struct sctp_getaddresses, addr)); /* Now free it */ free(fr_addr); } @@ -2772,24 +2852,19 @@ usrsctp_freeladdrs(struct sockaddr *addrs) #ifdef INET void sctp_userspace_ip_output(int *result, struct mbuf *o_pak, - sctp_route_t *ro, void *stcb, + sctp_route_t *ro, void *inp, uint32_t vrf_id) { struct mbuf *m; struct mbuf *m_orig; int iovcnt; - int send_len; int len; - int send_count; struct ip *ip; struct udphdr *udp; -#if !defined (__Userspace_os_Windows) - int res; -#endif struct sockaddr_in dst; -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) WSAMSG win_msg_hdr; - int win_sent_len; + DWORD win_sent_len; WSABUF send_iovec[MAXLEN_MBUF_CHAIN]; WSABUF winbuf; #else @@ -2833,10 +2908,9 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, SCTP_PRINTF("Why did the SCTP implementation did not choose a source address?\n"); } /* TODO need to worry about ro->ro_dst as in ip_output? */ -#if defined(__Userspace_os_Linux) || defined (__Userspace_os_Windows) +#if defined(__linux__) || defined(_WIN32) || (defined(__FreeBSD__) && (__FreeBSD_version >= 1100030)) /* need to put certain fields into network order for Linux */ ip->ip_len = htons(ip->ip_len); - ip->ip_off = 0; #endif } @@ -2857,17 +2931,13 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, m_adj(m, sizeof(struct ip) + sizeof(struct udphdr)); } - send_len = SCTP_HEADER_LEN(m); /* length of entire packet */ - send_count = 0; for (iovcnt = 0; m != NULL && iovcnt < MAXLEN_MBUF_CHAIN; m = m->m_next, iovcnt++) { -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) send_iovec[iovcnt].iov_base = (caddr_t)m->m_data; send_iovec[iovcnt].iov_len = SCTP_BUF_LEN(m); - send_count += send_iovec[iovcnt].iov_len; #else send_iovec[iovcnt].buf = (caddr_t)m->m_data; send_iovec[iovcnt].len = SCTP_BUF_LEN(m); - send_count += send_iovec[iovcnt].len; #endif } @@ -2876,7 +2946,7 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, goto free_mbuf; } -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) msg_hdr.msg_name = (struct sockaddr *) &dst; msg_hdr.msg_namelen = sizeof(struct sockaddr_in); msg_hdr.msg_iov = send_iovec; @@ -2885,13 +2955,13 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, msg_hdr.msg_controllen = 0; msg_hdr.msg_flags = 0; - if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp) > -1)) { - if ((res = sendmsg(SCTP_BASE_VAR(userspace_rawsctp), &msg_hdr, MSG_DONTWAIT)) != send_len) { + if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp) != -1)) { + if (sendmsg(SCTP_BASE_VAR(userspace_rawsctp), &msg_hdr, MSG_DONTWAIT) < 0) { *result = errno; } } - if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp) > -1)) { - if ((res = sendmsg(SCTP_BASE_VAR(userspace_udpsctp), &msg_hdr, MSG_DONTWAIT)) != send_len) { + if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp) != -1)) { + if (sendmsg(SCTP_BASE_VAR(userspace_udpsctp), &msg_hdr, MSG_DONTWAIT) < 0) { *result = errno; } } @@ -2905,18 +2975,14 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, win_msg_hdr.Control = winbuf; win_msg_hdr.dwFlags = 0; - if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp) > -1)) { + if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp) != -1)) { if (WSASendTo(SCTP_BASE_VAR(userspace_rawsctp), (LPWSABUF) send_iovec, iovcnt, &win_sent_len, win_msg_hdr.dwFlags, win_msg_hdr.name, (int) win_msg_hdr.namelen, NULL, NULL) != 0) { *result = WSAGetLastError(); - } else if (win_sent_len != send_len) { - *result = WSAGetLastError(); } } - if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp) > -1)) { + if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp) != -1)) { if (WSASendTo(SCTP_BASE_VAR(userspace_udpsctp), (LPWSABUF) send_iovec, iovcnt, &win_sent_len, win_msg_hdr.dwFlags, win_msg_hdr.name, (int) win_msg_hdr.namelen, NULL, NULL) != 0) { *result = WSAGetLastError(); - } else if (win_sent_len != send_len) { - *result = WSAGetLastError(); } } #endif @@ -2925,26 +2991,21 @@ sctp_userspace_ip_output(int *result, struct mbuf *o_pak, } #endif -#if defined (INET6) +#if defined(INET6) void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, - struct route_in6 *ro, void *stcb, + struct route_in6 *ro, void *inp, uint32_t vrf_id) { struct mbuf *m; struct mbuf *m_orig; int iovcnt; - int send_len; int len; - int send_count; struct ip6_hdr *ip6; struct udphdr *udp; -#if !defined (__Userspace_os_Windows) - int res; -#endif struct sockaddr_in6 dst; -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) WSAMSG win_msg_hdr; - int win_sent_len; + DWORD win_sent_len; WSABUF send_iovec[MAXLEN_MBUF_CHAIN]; WSABUF winbuf; #else @@ -2990,10 +3051,6 @@ void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, SCTP_PRINTF("Why did the SCTP implementation did not choose a source address?\n"); } /* TODO need to worry about ro->ro_dst as in ip_output? */ -#if defined(__Userspace_os_Linux) || defined (__Userspace_os_Windows) - /* need to put certain fields into network order for Linux */ - ip6->ip6_plen = htons(ip6->ip6_plen); -#endif } memset((void *)&dst, 0, sizeof(struct sockaddr_in6)); @@ -3013,20 +3070,16 @@ void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, if (use_udp_tunneling) { m_adj(m, sizeof(struct ip6_hdr) + sizeof(struct udphdr)); } else { - m_adj(m, sizeof(struct ip6_hdr)); + m_adj(m, sizeof(struct ip6_hdr)); } - send_len = SCTP_HEADER_LEN(m); /* length of entire packet */ - send_count = 0; for (iovcnt = 0; m != NULL && iovcnt < MAXLEN_MBUF_CHAIN; m = m->m_next, iovcnt++) { -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) send_iovec[iovcnt].iov_base = (caddr_t)m->m_data; send_iovec[iovcnt].iov_len = SCTP_BUF_LEN(m); - send_count += send_iovec[iovcnt].iov_len; #else send_iovec[iovcnt].buf = (caddr_t)m->m_data; send_iovec[iovcnt].len = SCTP_BUF_LEN(m); - send_count += send_iovec[iovcnt].len; #endif } if (m != NULL) { @@ -3034,7 +3087,7 @@ void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, goto free_mbuf; } -#if !defined (__Userspace_os_Windows) +#if !defined(_WIN32) msg_hdr.msg_name = (struct sockaddr *) &dst; msg_hdr.msg_namelen = sizeof(struct sockaddr_in6); msg_hdr.msg_iov = send_iovec; @@ -3043,13 +3096,13 @@ void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, msg_hdr.msg_controllen = 0; msg_hdr.msg_flags = 0; - if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp6) > -1)) { - if ((res = sendmsg(SCTP_BASE_VAR(userspace_rawsctp6), &msg_hdr, MSG_DONTWAIT)) != send_len) { + if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp6) != -1)) { + if (sendmsg(SCTP_BASE_VAR(userspace_rawsctp6), &msg_hdr, MSG_DONTWAIT)< 0) { *result = errno; } } - if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp6) > -1)) { - if ((res = sendmsg(SCTP_BASE_VAR(userspace_udpsctp6), &msg_hdr, MSG_DONTWAIT)) != send_len) { + if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp6) != -1)) { + if (sendmsg(SCTP_BASE_VAR(userspace_udpsctp6), &msg_hdr, MSG_DONTWAIT) < 0) { *result = errno; } } @@ -3063,18 +3116,14 @@ void sctp_userspace_ip6_output(int *result, struct mbuf *o_pak, win_msg_hdr.Control = winbuf; win_msg_hdr.dwFlags = 0; - if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp6) > -1)) { + if ((!use_udp_tunneling) && (SCTP_BASE_VAR(userspace_rawsctp6) != -1)) { if (WSASendTo(SCTP_BASE_VAR(userspace_rawsctp6), (LPWSABUF) send_iovec, iovcnt, &win_sent_len, win_msg_hdr.dwFlags, win_msg_hdr.name, (int) win_msg_hdr.namelen, NULL, NULL) != 0) { *result = WSAGetLastError(); - } else if (win_sent_len != send_len) { - *result = WSAGetLastError(); } } - if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp6) > -1)) { + if ((use_udp_tunneling) && (SCTP_BASE_VAR(userspace_udpsctp6) != -1)) { if (WSASendTo(SCTP_BASE_VAR(userspace_udpsctp6), (LPWSABUF) send_iovec, iovcnt, &win_sent_len, win_msg_hdr.dwFlags, win_msg_hdr.name, (int) win_msg_hdr.namelen, NULL, NULL) != 0) { *result = WSAGetLastError(); - } else if (win_sent_len != send_len) { - *result = WSAGetLastError(); } } #endif @@ -3130,16 +3179,15 @@ usrsctp_deregister_address(void *addr) #define TRAILER "# SCTP_PACKET\n" char * -usrsctp_dumppacket(void *buf, size_t len, int outbound) +usrsctp_dumppacket(const void *buf, size_t len, int outbound) { size_t i, pos; char *dump_buf, *packet; + struct tm t; #ifdef _WIN32 struct timeb tb; - struct tm t; #else struct timeval tv; - struct tm *t; time_t sec; #endif @@ -3153,19 +3201,34 @@ usrsctp_dumppacket(void *buf, size_t len, int outbound) #ifdef _WIN32 ftime(&tb); localtime_s(&t, &tb.time); - _snprintf_s(dump_buf, PREAMBLE_LENGTH + 1, PREAMBLE_LENGTH, PREAMBLE_FORMAT, - outbound ? 'O' : 'I', - t.tm_hour, t.tm_min, t.tm_sec, (long)(1000 * tb.millitm)); +#if defined(__MINGW32__) + if (snprintf(dump_buf, PREAMBLE_LENGTH + 1, PREAMBLE_FORMAT, + outbound ? 'O' : 'I', + t.tm_hour, t.tm_min, t.tm_sec, (long)(1000 * tb.millitm)) < 0) { + free(dump_buf); + return (NULL); + } +#else + if (_snprintf_s(dump_buf, PREAMBLE_LENGTH + 1, PREAMBLE_LENGTH, PREAMBLE_FORMAT, + outbound ? 'O' : 'I', + t.tm_hour, t.tm_min, t.tm_sec, (long)(1000 * tb.millitm)) < 0) { + free(dump_buf); + return (NULL); + } +#endif #else gettimeofday(&tv, NULL); sec = (time_t)tv.tv_sec; - t = localtime((const time_t *)&sec); - snprintf(dump_buf, PREAMBLE_LENGTH + 1, PREAMBLE_FORMAT, - outbound ? 'O' : 'I', - t->tm_hour, t->tm_min, t->tm_sec, (long)tv.tv_usec); + localtime_r((const time_t *)&sec, &t); + if (snprintf(dump_buf, PREAMBLE_LENGTH + 1, PREAMBLE_FORMAT, + outbound ? 'O' : 'I', + t.tm_hour, t.tm_min, t.tm_sec, (long)tv.tv_usec) < 0) { + free(dump_buf); + return (NULL); + } #endif pos += PREAMBLE_LENGTH; -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) strncpy_s(dump_buf + pos, strlen(HEADER) + 1, HEADER, strlen(HEADER)); #else strcpy(dump_buf + pos, HEADER); @@ -3182,7 +3245,7 @@ usrsctp_dumppacket(void *buf, size_t len, int outbound) dump_buf[pos++] = low < 10 ? '0' + low : 'a' + (low - 10); dump_buf[pos++] = ' '; } -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) strncpy_s(dump_buf + pos, strlen(TRAILER) + 1, TRAILER, strlen(TRAILER)); #else strcpy(dump_buf + pos, TRAILER); @@ -3198,13 +3261,37 @@ usrsctp_freedumpbuffer(char *buf) free(buf); } +void +usrsctp_enable_crc32c_offload(void) +{ + SCTP_BASE_VAR(crc32c_offloaded) = 1; +} + +void +usrsctp_disable_crc32c_offload(void) +{ + SCTP_BASE_VAR(crc32c_offloaded) = 0; +} + +/* Compute the CRC32C in network byte order */ +uint32_t +usrsctp_crc32c(void *buffer, size_t length) +{ + uint32_t base = 0xffffffff; + + base = calculate_crc32c(0xffffffff, (unsigned char *)buffer, (unsigned int) length); + base = sctp_finalize_crc32c(base); + return (base); +} + void usrsctp_conninput(void *addr, const void *buffer, size_t length, uint8_t ecn_bits) { struct sockaddr_conn src, dst; - struct mbuf *m; + struct mbuf *m, *mm; struct sctphdr *sh; struct sctp_chunkhdr *ch; + int remaining, offset; SCTP_STAT_INCR(sctps_recvpackets); SCTP_STAT_INCR_COUNTER64(sctps_inpackets); @@ -3220,27 +3307,37 @@ usrsctp_conninput(void *addr, const void *buffer, size_t length, uint8_t ecn_bit dst.sconn_len = sizeof(struct sockaddr_conn); #endif dst.sconn_addr = addr; - if ((m = sctp_get_mbuf_for_msg(length, 1, M_NOWAIT, 0, MT_DATA)) == NULL) { + if ((m = sctp_get_mbuf_for_msg((unsigned int)length, 1, M_NOWAIT, 0, MT_DATA)) == NULL) { return; } - m_copyback(m, 0, length, (caddr_t)buffer); - if (SCTP_BUF_LEN(m) < (int)(sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr))) { - if ((m = m_pullup(m, sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr))) == NULL) { + /* Set the lengths fields of the mbuf chain. + * This is expected by m_copyback(). + */ + remaining = (int)length; + for (mm = m; mm != NULL; mm = mm->m_next) { + mm->m_len = min((int)M_SIZE(mm), remaining); + m->m_pkthdr.len += mm->m_len; + remaining -= mm->m_len; + } + KASSERT(remaining == 0, ("usrsctp_conninput: %zu bytes left", remaining)); + m_copyback(m, 0, (int)length, (caddr_t)buffer); + offset = sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + if (SCTP_BUF_LEN(m) < offset) { + if ((m = m_pullup(m, offset)) == NULL) { SCTP_STAT_INCR(sctps_hdrops); return; } } - sh = mtod(m, struct sctphdr *);; + sh = mtod(m, struct sctphdr *); ch = (struct sctp_chunkhdr *)((caddr_t)sh + sizeof(struct sctphdr)); + offset -= sizeof(struct sctp_chunkhdr); src.sconn_port = sh->src_port; dst.sconn_port = sh->dest_port; - sctp_common_input_processing(&m, 0, sizeof(struct sctphdr), length, + sctp_common_input_processing(&m, 0, offset, (int)length, (struct sockaddr *)&src, (struct sockaddr *)&dst, sh, ch, -#if !defined(SCTP_WITH_NO_CSUM) - 1, -#endif + SCTP_BASE_VAR(crc32c_offloaded) == 1 ? 0 : 1, ecn_bits, SCTP_DEFAULT_VRFID, 0); if (m) { @@ -3249,87 +3346,159 @@ usrsctp_conninput(void *addr, const void *buffer, size_t length, uint8_t ecn_bit return; } +void usrsctp_handle_timers(uint32_t elapsed_milliseconds) +{ + sctp_handle_tick(sctp_msecs_to_ticks(elapsed_milliseconds)); +} + +int +usrsctp_get_events(struct socket *so) +{ + int events = 0; + + if (so == NULL) { + errno = EBADF; + return -1; + } + + SOCK_LOCK(so); + if (soreadable(so)) { + events |= SCTP_EVENT_READ; + } + if (sowriteable(so)) { + events |= SCTP_EVENT_WRITE; + } + if (so->so_error) { + events |= SCTP_EVENT_ERROR; + } + SOCK_UNLOCK(so); + + return events; +} + +int +usrsctp_set_upcall(struct socket *so, void (*upcall)(struct socket *, void *, int), void *arg) +{ + if (so == NULL) { + errno = EBADF; + return (-1); + } + + SOCK_LOCK(so); + so->so_upcall = upcall; + so->so_upcallarg = arg; + so->so_snd.sb_flags |= SB_UPCALL; + so->so_rcv.sb_flags |= SB_UPCALL; + SOCK_UNLOCK(so); + + return (0); +} -#define USRSCTP_SYSCTL_SET_DEF(__field) \ -void usrsctp_sysctl_set_ ## __field(uint32_t value) { \ - SCTP_BASE_SYSCTL(__field) = value; \ -} - -USRSCTP_SYSCTL_SET_DEF(sctp_sendspace) -USRSCTP_SYSCTL_SET_DEF(sctp_recvspace) -USRSCTP_SYSCTL_SET_DEF(sctp_auto_asconf) -USRSCTP_SYSCTL_SET_DEF(sctp_multiple_asconfs) -USRSCTP_SYSCTL_SET_DEF(sctp_ecn_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_pr_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_auth_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_asconf_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_reconfig_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_nrsack_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_pktdrop_enable) -USRSCTP_SYSCTL_SET_DEF(sctp_strict_sacks) -#if !defined(SCTP_WITH_NO_CSUM) -USRSCTP_SYSCTL_SET_DEF(sctp_no_csum_on_loopback) -#endif -USRSCTP_SYSCTL_SET_DEF(sctp_peer_chunk_oh) -USRSCTP_SYSCTL_SET_DEF(sctp_max_burst_default) -USRSCTP_SYSCTL_SET_DEF(sctp_max_chunks_on_queue) -USRSCTP_SYSCTL_SET_DEF(sctp_hashtblsize) -USRSCTP_SYSCTL_SET_DEF(sctp_pcbtblsize) -USRSCTP_SYSCTL_SET_DEF(sctp_min_split_point) -USRSCTP_SYSCTL_SET_DEF(sctp_chunkscale) -USRSCTP_SYSCTL_SET_DEF(sctp_delayed_sack_time_default) -USRSCTP_SYSCTL_SET_DEF(sctp_sack_freq_default) -USRSCTP_SYSCTL_SET_DEF(sctp_system_free_resc_limit) -USRSCTP_SYSCTL_SET_DEF(sctp_asoc_free_resc_limit) -USRSCTP_SYSCTL_SET_DEF(sctp_heartbeat_interval_default) -USRSCTP_SYSCTL_SET_DEF(sctp_pmtu_raise_time_default) -USRSCTP_SYSCTL_SET_DEF(sctp_shutdown_guard_time_default) -USRSCTP_SYSCTL_SET_DEF(sctp_secret_lifetime_default) -USRSCTP_SYSCTL_SET_DEF(sctp_rto_max_default) -USRSCTP_SYSCTL_SET_DEF(sctp_rto_min_default) -USRSCTP_SYSCTL_SET_DEF(sctp_rto_initial_default) -USRSCTP_SYSCTL_SET_DEF(sctp_init_rto_max_default) -USRSCTP_SYSCTL_SET_DEF(sctp_valid_cookie_life_default) -USRSCTP_SYSCTL_SET_DEF(sctp_init_rtx_max_default) -USRSCTP_SYSCTL_SET_DEF(sctp_assoc_rtx_max_default) -USRSCTP_SYSCTL_SET_DEF(sctp_path_rtx_max_default) -USRSCTP_SYSCTL_SET_DEF(sctp_add_more_threshold) -USRSCTP_SYSCTL_SET_DEF(sctp_nr_outgoing_streams_default) -USRSCTP_SYSCTL_SET_DEF(sctp_cmt_on_off) -USRSCTP_SYSCTL_SET_DEF(sctp_cmt_use_dac) -USRSCTP_SYSCTL_SET_DEF(sctp_use_cwnd_based_maxburst) -USRSCTP_SYSCTL_SET_DEF(sctp_nat_friendly) -USRSCTP_SYSCTL_SET_DEF(sctp_L2_abc_variable) -USRSCTP_SYSCTL_SET_DEF(sctp_mbuf_threshold_count) -USRSCTP_SYSCTL_SET_DEF(sctp_do_drain) -USRSCTP_SYSCTL_SET_DEF(sctp_hb_maxburst) -USRSCTP_SYSCTL_SET_DEF(sctp_abort_if_one_2_one_hits_limit) -USRSCTP_SYSCTL_SET_DEF(sctp_strict_data_order) -USRSCTP_SYSCTL_SET_DEF(sctp_min_residual) -USRSCTP_SYSCTL_SET_DEF(sctp_max_retran_chunk) -USRSCTP_SYSCTL_SET_DEF(sctp_logging_level) -USRSCTP_SYSCTL_SET_DEF(sctp_default_cc_module) -USRSCTP_SYSCTL_SET_DEF(sctp_default_frag_interleave) -USRSCTP_SYSCTL_SET_DEF(sctp_mobility_base) -USRSCTP_SYSCTL_SET_DEF(sctp_mobility_fasthandoff) -USRSCTP_SYSCTL_SET_DEF(sctp_inits_include_nat_friendly) -USRSCTP_SYSCTL_SET_DEF(sctp_udp_tunneling_port) -USRSCTP_SYSCTL_SET_DEF(sctp_enable_sack_immediately) -USRSCTP_SYSCTL_SET_DEF(sctp_vtag_time_wait) -USRSCTP_SYSCTL_SET_DEF(sctp_blackhole) -USRSCTP_SYSCTL_SET_DEF(sctp_diag_info_code) -USRSCTP_SYSCTL_SET_DEF(sctp_fr_max_burst_default) -USRSCTP_SYSCTL_SET_DEF(sctp_path_pf_threshold) -USRSCTP_SYSCTL_SET_DEF(sctp_default_ss_module) -USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_bw) -USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_rtt) -USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_eqret) -USRSCTP_SYSCTL_SET_DEF(sctp_steady_step) -USRSCTP_SYSCTL_SET_DEF(sctp_use_dccc_ecn) -USRSCTP_SYSCTL_SET_DEF(sctp_buffer_splitting) -USRSCTP_SYSCTL_SET_DEF(sctp_initial_cwnd) +#define USRSCTP_TUNABLE_SET_DEF(__field, __prefix) \ +int usrsctp_tunable_set_ ## __field(uint32_t value) \ +{ \ + if ((value < __prefix##_MIN) || \ + (value > __prefix##_MAX)) { \ + errno = EINVAL; \ + return (-1); \ + } else { \ + SCTP_BASE_SYSCTL(__field) = value; \ + return (0); \ + } \ +} + +USRSCTP_TUNABLE_SET_DEF(sctp_hashtblsize, SCTPCTL_TCBHASHSIZE) +USRSCTP_TUNABLE_SET_DEF(sctp_pcbtblsize, SCTPCTL_PCBHASHSIZE) +USRSCTP_TUNABLE_SET_DEF(sctp_chunkscale, SCTPCTL_CHUNKSCALE) + +#define USRSCTP_SYSCTL_SET_DEF(__field, __prefix) \ +int usrsctp_sysctl_set_ ## __field(uint32_t value) \ +{ \ + if ((value < __prefix##_MIN) || \ + (value > __prefix##_MAX)) { \ + errno = EINVAL; \ + return (-1); \ + } else { \ + SCTP_BASE_SYSCTL(__field) = value; \ + return (0); \ + } \ +} + +#if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" +#endif +USRSCTP_SYSCTL_SET_DEF(sctp_sendspace, SCTPCTL_MAXDGRAM) +USRSCTP_SYSCTL_SET_DEF(sctp_recvspace, SCTPCTL_RECVSPACE) +USRSCTP_SYSCTL_SET_DEF(sctp_auto_asconf, SCTPCTL_AUTOASCONF) +USRSCTP_SYSCTL_SET_DEF(sctp_ecn_enable, SCTPCTL_ECN_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_pr_enable, SCTPCTL_PR_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_auth_enable, SCTPCTL_AUTH_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_asconf_enable, SCTPCTL_ASCONF_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_reconfig_enable, SCTPCTL_RECONFIG_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_nrsack_enable, SCTPCTL_NRSACK_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_pktdrop_enable, SCTPCTL_PKTDROP_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_no_csum_on_loopback, SCTPCTL_LOOPBACK_NOCSUM) +USRSCTP_SYSCTL_SET_DEF(sctp_peer_chunk_oh, SCTPCTL_PEER_CHKOH) +USRSCTP_SYSCTL_SET_DEF(sctp_max_burst_default, SCTPCTL_MAXBURST) +USRSCTP_SYSCTL_SET_DEF(sctp_max_chunks_on_queue, SCTPCTL_MAXCHUNKS) +USRSCTP_SYSCTL_SET_DEF(sctp_min_split_point, SCTPCTL_MIN_SPLIT_POINT) +USRSCTP_SYSCTL_SET_DEF(sctp_delayed_sack_time_default, SCTPCTL_DELAYED_SACK_TIME) +USRSCTP_SYSCTL_SET_DEF(sctp_sack_freq_default, SCTPCTL_SACK_FREQ) +USRSCTP_SYSCTL_SET_DEF(sctp_system_free_resc_limit, SCTPCTL_SYS_RESOURCE) +USRSCTP_SYSCTL_SET_DEF(sctp_asoc_free_resc_limit, SCTPCTL_ASOC_RESOURCE) +USRSCTP_SYSCTL_SET_DEF(sctp_heartbeat_interval_default, SCTPCTL_HEARTBEAT_INTERVAL) +USRSCTP_SYSCTL_SET_DEF(sctp_pmtu_raise_time_default, SCTPCTL_PMTU_RAISE_TIME) +USRSCTP_SYSCTL_SET_DEF(sctp_shutdown_guard_time_default, SCTPCTL_SHUTDOWN_GUARD_TIME) +USRSCTP_SYSCTL_SET_DEF(sctp_secret_lifetime_default, SCTPCTL_SECRET_LIFETIME) +USRSCTP_SYSCTL_SET_DEF(sctp_rto_max_default, SCTPCTL_RTO_MAX) +USRSCTP_SYSCTL_SET_DEF(sctp_rto_min_default, SCTPCTL_RTO_MIN) +USRSCTP_SYSCTL_SET_DEF(sctp_rto_initial_default, SCTPCTL_RTO_INITIAL) +USRSCTP_SYSCTL_SET_DEF(sctp_init_rto_max_default, SCTPCTL_INIT_RTO_MAX) +USRSCTP_SYSCTL_SET_DEF(sctp_valid_cookie_life_default, SCTPCTL_VALID_COOKIE_LIFE) +USRSCTP_SYSCTL_SET_DEF(sctp_init_rtx_max_default, SCTPCTL_INIT_RTX_MAX) +USRSCTP_SYSCTL_SET_DEF(sctp_assoc_rtx_max_default, SCTPCTL_ASSOC_RTX_MAX) +USRSCTP_SYSCTL_SET_DEF(sctp_path_rtx_max_default, SCTPCTL_PATH_RTX_MAX) +USRSCTP_SYSCTL_SET_DEF(sctp_add_more_threshold, SCTPCTL_ADD_MORE_ON_OUTPUT) +USRSCTP_SYSCTL_SET_DEF(sctp_nr_incoming_streams_default, SCTPCTL_INCOMING_STREAMS) +USRSCTP_SYSCTL_SET_DEF(sctp_nr_outgoing_streams_default, SCTPCTL_OUTGOING_STREAMS) +USRSCTP_SYSCTL_SET_DEF(sctp_cmt_on_off, SCTPCTL_CMT_ON_OFF) +USRSCTP_SYSCTL_SET_DEF(sctp_cmt_use_dac, SCTPCTL_CMT_USE_DAC) +USRSCTP_SYSCTL_SET_DEF(sctp_use_cwnd_based_maxburst, SCTPCTL_CWND_MAXBURST) +USRSCTP_SYSCTL_SET_DEF(sctp_nat_friendly, SCTPCTL_NAT_FRIENDLY) +USRSCTP_SYSCTL_SET_DEF(sctp_L2_abc_variable, SCTPCTL_ABC_L_VAR) +USRSCTP_SYSCTL_SET_DEF(sctp_mbuf_threshold_count, SCTPCTL_MAX_CHAINED_MBUFS) +USRSCTP_SYSCTL_SET_DEF(sctp_do_drain, SCTPCTL_DO_SCTP_DRAIN) +USRSCTP_SYSCTL_SET_DEF(sctp_hb_maxburst, SCTPCTL_HB_MAX_BURST) +USRSCTP_SYSCTL_SET_DEF(sctp_abort_if_one_2_one_hits_limit, SCTPCTL_ABORT_AT_LIMIT) +USRSCTP_SYSCTL_SET_DEF(sctp_min_residual, SCTPCTL_MIN_RESIDUAL) +USRSCTP_SYSCTL_SET_DEF(sctp_max_retran_chunk, SCTPCTL_MAX_RETRAN_CHUNK) +USRSCTP_SYSCTL_SET_DEF(sctp_logging_level, SCTPCTL_LOGGING_LEVEL) +USRSCTP_SYSCTL_SET_DEF(sctp_default_cc_module, SCTPCTL_DEFAULT_CC_MODULE) +USRSCTP_SYSCTL_SET_DEF(sctp_default_frag_interleave, SCTPCTL_DEFAULT_FRAG_INTERLEAVE) +USRSCTP_SYSCTL_SET_DEF(sctp_mobility_base, SCTPCTL_MOBILITY_BASE) +USRSCTP_SYSCTL_SET_DEF(sctp_mobility_fasthandoff, SCTPCTL_MOBILITY_FASTHANDOFF) +USRSCTP_SYSCTL_SET_DEF(sctp_inits_include_nat_friendly, SCTPCTL_NAT_FRIENDLY_INITS) +USRSCTP_SYSCTL_SET_DEF(sctp_udp_tunneling_port, SCTPCTL_UDP_TUNNELING_PORT) +USRSCTP_SYSCTL_SET_DEF(sctp_enable_sack_immediately, SCTPCTL_SACK_IMMEDIATELY_ENABLE) +USRSCTP_SYSCTL_SET_DEF(sctp_vtag_time_wait, SCTPCTL_TIME_WAIT) +USRSCTP_SYSCTL_SET_DEF(sctp_blackhole, SCTPCTL_BLACKHOLE) +USRSCTP_SYSCTL_SET_DEF(sctp_diag_info_code, SCTPCTL_DIAG_INFO_CODE) +USRSCTP_SYSCTL_SET_DEF(sctp_fr_max_burst_default, SCTPCTL_FRMAXBURST) +USRSCTP_SYSCTL_SET_DEF(sctp_path_pf_threshold, SCTPCTL_PATH_PF_THRESHOLD) +USRSCTP_SYSCTL_SET_DEF(sctp_default_ss_module, SCTPCTL_DEFAULT_SS_MODULE) +USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_bw, SCTPCTL_RTTVAR_BW) +USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_rtt, SCTPCTL_RTTVAR_RTT) +USRSCTP_SYSCTL_SET_DEF(sctp_rttvar_eqret, SCTPCTL_RTTVAR_EQRET) +USRSCTP_SYSCTL_SET_DEF(sctp_steady_step, SCTPCTL_RTTVAR_STEADYS) +USRSCTP_SYSCTL_SET_DEF(sctp_use_dccc_ecn, SCTPCTL_RTTVAR_DCCCECN) +USRSCTP_SYSCTL_SET_DEF(sctp_buffer_splitting, SCTPCTL_BUFFER_SPLITTING) +USRSCTP_SYSCTL_SET_DEF(sctp_initial_cwnd, SCTPCTL_INITIAL_CWND) #ifdef SCTP_DEBUG -USRSCTP_SYSCTL_SET_DEF(sctp_debug_on) +USRSCTP_SYSCTL_SET_DEF(sctp_debug_on, SCTPCTL_DEBUG) +#endif +#if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__) +#pragma GCC diagnostic pop #endif #define USRSCTP_SYSCTL_GET_DEF(__field) \ @@ -3348,10 +3517,7 @@ USRSCTP_SYSCTL_GET_DEF(sctp_asconf_enable) USRSCTP_SYSCTL_GET_DEF(sctp_reconfig_enable) USRSCTP_SYSCTL_GET_DEF(sctp_nrsack_enable) USRSCTP_SYSCTL_GET_DEF(sctp_pktdrop_enable) -USRSCTP_SYSCTL_GET_DEF(sctp_strict_sacks) -#if !defined(SCTP_WITH_NO_CSUM) USRSCTP_SYSCTL_GET_DEF(sctp_no_csum_on_loopback) -#endif USRSCTP_SYSCTL_GET_DEF(sctp_peer_chunk_oh) USRSCTP_SYSCTL_GET_DEF(sctp_max_burst_default) USRSCTP_SYSCTL_GET_DEF(sctp_max_chunks_on_queue) @@ -3376,6 +3542,7 @@ USRSCTP_SYSCTL_GET_DEF(sctp_init_rtx_max_default) USRSCTP_SYSCTL_GET_DEF(sctp_assoc_rtx_max_default) USRSCTP_SYSCTL_GET_DEF(sctp_path_rtx_max_default) USRSCTP_SYSCTL_GET_DEF(sctp_add_more_threshold) +USRSCTP_SYSCTL_GET_DEF(sctp_nr_incoming_streams_default) USRSCTP_SYSCTL_GET_DEF(sctp_nr_outgoing_streams_default) USRSCTP_SYSCTL_GET_DEF(sctp_cmt_on_off) USRSCTP_SYSCTL_GET_DEF(sctp_cmt_use_dac) @@ -3386,7 +3553,6 @@ USRSCTP_SYSCTL_GET_DEF(sctp_mbuf_threshold_count) USRSCTP_SYSCTL_GET_DEF(sctp_do_drain) USRSCTP_SYSCTL_GET_DEF(sctp_hb_maxburst) USRSCTP_SYSCTL_GET_DEF(sctp_abort_if_one_2_one_hits_limit) -USRSCTP_SYSCTL_GET_DEF(sctp_strict_data_order) USRSCTP_SYSCTL_GET_DEF(sctp_min_residual) USRSCTP_SYSCTL_GET_DEF(sctp_max_retran_chunk) USRSCTP_SYSCTL_GET_DEF(sctp_logging_level) diff --git a/netwerk/sctp/src/user_socketvar.h b/netwerk/sctp/src/user_socketvar.h index 5c3d9eee7c..e8eccc7fb1 100755 --- a/netwerk/sctp/src/user_socketvar.h +++ b/netwerk/sctp/src/user_socketvar.h @@ -10,7 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -33,7 +33,7 @@ #ifndef _USER_SOCKETVAR_H_ #define _USER_SOCKETVAR_H_ -#if defined(__Userspace_os_Darwin) +#if defined(__APPLE__) #include #include #endif @@ -42,7 +42,7 @@ /* #include was 0 byte file */ /* #include was 0 byte file */ /* #include */ /*__Userspace__ alternative?*/ -#if !defined(__Userspace_os_DragonFly) && !defined(__Userspace_os_FreeBSD) && !defined(__Userspace_os_NetBSD) && !defined(__Userspace_os_Windows) && !defined(__Userspace_os_NaCl) +#if !defined(__DragonFly__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(_WIN32) && !defined(__native_client__) #include #endif #define SOCK_MAXADDRLEN 255 @@ -54,16 +54,16 @@ #define SS_CANTRCVMORE 0x020 #define SS_CANTSENDMORE 0x010 -#if defined(__Userspace_os_Darwin) || defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_OpenBSD) || defined (__Userspace_os_Windows) || defined(__Userspace_os_NaCl) +#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(_WIN32) || defined(__native_client__) #define UIO_MAXIOV 1024 #define ERESTART (-1) #endif -#if !defined(__Userspace_os_Darwin) && !defined(__Userspace_os_NetBSD) && !defined(__Userspace_os_OpenBSD) +#if !defined(__APPLE__) && !defined(__NetBSD__) && !defined(__OpenBSD__) enum uio_rw { UIO_READ, UIO_WRITE }; #endif -#if !defined(__Userspace_os_NetBSD) && !defined(__Userspace_os_OpenBSD) +#if !defined(__NetBSD__) && !defined(__OpenBSD__) /* Segment flag values. */ enum uio_seg { UIO_USERSPACE, /* from user data space */ @@ -72,7 +72,7 @@ enum uio_seg { #endif struct proc { - int stub; /* struct proc is a dummy for __Userspace__ */ + int stub; /* struct proc is a dummy for __Userspace__ */ }; MALLOC_DECLARE(M_ACCF); @@ -83,12 +83,12 @@ MALLOC_DECLARE(M_SONAME); * Removing struct thread *uio_td; owner field */ struct uio { - struct iovec *uio_iov; /* scatter/gather list */ - int uio_iovcnt; /* length of scatter/gather list */ - off_t uio_offset; /* offset in target object */ - int uio_resid; /* remaining bytes to process */ - enum uio_seg uio_segflg; /* address space */ - enum uio_rw uio_rw; /* operation */ + struct iovec *uio_iov; /* scatter/gather list */ + int uio_iovcnt; /* length of scatter/gather list */ + off_t uio_offset; /* offset in target object */ + ssize_t uio_resid; /* remaining bytes to process */ + enum uio_seg uio_segflg; /* address space */ + enum uio_rw uio_rw; /* operation */ }; @@ -100,9 +100,11 @@ struct uio { * handle on protocol and pointer to protocol * private data and error information. */ -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) #define AF_ROUTE 17 +#if !defined(__MINGW32__) typedef __int32 pid_t; +#endif typedef unsigned __int32 uid_t; enum sigType { SIGNAL = 0, @@ -235,7 +237,7 @@ struct socket { * avoid defining a lock order between listen and accept sockets * until such time as it proves to be a good idea. */ -#if defined(__Userspace_os_Windows) +#if defined(_WIN32) extern userland_mutex_t accept_mtx; extern userland_cond_t accept_cond; #define ACCEPT_LOCK_ASSERT() @@ -248,14 +250,21 @@ extern userland_cond_t accept_cond; #define ACCEPT_UNLOCK_ASSERT() #else extern userland_mutex_t accept_mtx; + extern userland_cond_t accept_cond; -#define ACCEPT_LOCK_ASSERT() KASSERT(pthread_mutex_trylock(&accept_mtx) == EBUSY, ("%s: accept_mtx not locked", __func__)) -#define ACCEPT_LOCK() (void)pthread_mutex_lock(&accept_mtx) -#define ACCEPT_UNLOCK() (void)pthread_mutex_unlock(&accept_mtx) -#define ACCEPT_UNLOCK_ASSERT() do{ \ - KASSERT(pthread_mutex_trylock(&accept_mtx) == 0, ("%s: accept_mtx locked", __func__)); \ - (void)pthread_mutex_unlock(&accept_mtx); \ -} while (0) +#ifdef INVARIANTS +#define ACCEPT_LOCK() KASSERT(pthread_mutex_lock(&accept_mtx) == 0, ("%s: accept_mtx already locked", __func__)) +#define ACCEPT_UNLOCK() KASSERT(pthread_mutex_unlock(&accept_mtx) == 0, ("%s: accept_mtx not locked", __func__)) +#else +#define ACCEPT_LOCK() (void)pthread_mutex_lock(&accept_mtx) +#define ACCEPT_UNLOCK() (void)pthread_mutex_unlock(&accept_mtx) +#endif +#define ACCEPT_LOCK_ASSERT() \ + KASSERT(pthread_mutex_trylock(&accept_mtx) == EBUSY, ("%s: accept_mtx not locked", __func__)) +#define ACCEPT_UNLOCK_ASSERT() do { \ + KASSERT(pthread_mutex_trylock(&accept_mtx) == 0, ("%s: accept_mtx locked", __func__)); \ + (void)pthread_mutex_unlock(&accept_mtx); \ + } while (0) #endif /* @@ -263,7 +272,7 @@ extern userland_cond_t accept_cond; * buffer. */ #define SOCKBUF_MTX(_sb) (&(_sb)->sb_mtx) -#if defined (__Userspace_os_Windows) +#if defined(_WIN32) #define SOCKBUF_LOCK_INIT(_sb, _name) \ InitializeCriticalSection(SOCKBUF_MTX(_sb)) #define SOCKBUF_LOCK_DESTROY(_sb) DeleteCriticalSection(SOCKBUF_MTX(_sb)) @@ -273,8 +282,19 @@ extern userland_cond_t accept_cond; #define SOCK_COND_DESTROY(_so) DeleteConditionVariable((&(_so)->timeo_cond)) #define SOCK_COND(_so) (&(_so)->timeo_cond) #else +#ifdef INVARIANTS +#define SOCKBUF_LOCK_INIT(_sb, _name) do { \ + pthread_mutexattr_t mutex_attr; \ + \ + pthread_mutexattr_init(&mutex_attr); \ + pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_ERRORCHECK); \ + pthread_mutex_init(SOCKBUF_MTX(_sb), &mutex_attr); \ + pthread_mutexattr_destroy(&mutex_attr); \ +} while (0) +#else #define SOCKBUF_LOCK_INIT(_sb, _name) \ pthread_mutex_init(SOCKBUF_MTX(_sb), NULL) +#endif #define SOCKBUF_LOCK_DESTROY(_sb) pthread_mutex_destroy(SOCKBUF_MTX(_sb)) #define SOCKBUF_COND_INIT(_sb) pthread_cond_init((&(_sb)->sb_cond), NULL) #define SOCKBUF_COND_DESTROY(_sb) pthread_cond_destroy((&(_sb)->sb_cond)) @@ -347,338 +367,11 @@ extern userland_cond_t accept_cond; #define SQ_COMP 0x1000 /* unaccepted, complete connection */ /* - * Externalized form of struct socket used by the sysctl(3) interface. - */ -struct xsocket { - size_t xso_len; /* length of this structure */ - struct socket *xso_so; /* makes a convenient handle sometimes */ - short so_type; - short so_options; - short so_linger; - short so_state; - caddr_t so_pcb; /* another convenient handle */ - int xso_protocol; - int xso_family; - u_short so_qlen; - u_short so_incqlen; - u_short so_qlimit; - short so_timeo; - u_short so_error; - pid_t so_pgid; - u_long so_oobmark; - struct xsockbuf { - u_int sb_cc; - u_int sb_hiwat; - u_int sb_mbcnt; - u_int sb_mbmax; - int sb_lowat; - int sb_timeo; - short sb_flags; - } so_rcv, so_snd; - uid_t so_uid; /* XXX */ -}; - -#if defined(_KERNEL) - - -/* - * Macros for sockets and socket buffering. - */ - -/* - * Do we need to notify the other side when I/O is possible? - */ -#define sb_notify(sb) (((sb)->sb_flags & (SB_WAIT | SB_SEL | SB_ASYNC | \ - SB_UPCALL | SB_AIO | SB_KNOTE)) != 0) - -/* - * How much space is there in a socket buffer (so->so_snd or so->so_rcv)? - * This is problematical if the fields are unsigned, as the space might - * still be negative (cc > hiwat or mbcnt > mbmax). Should detect - * overflow and return 0. Should use "lmin" but it doesn't exist now. - */ -#define sbspace(sb) \ - ((long) imin((int)((sb)->sb_hiwat - (sb)->sb_cc), \ - (int)((sb)->sb_mbmax - (sb)->sb_mbcnt))) - -/* do we have to send all at once on a socket? */ -#define sosendallatonce(so) \ - ((so)->so_proto->pr_flags & PR_ATOMIC) - -/* can we read something from so? */ -#define soreadable(so) \ - ((so)->so_rcv.sb_cc >= (so)->so_rcv.sb_lowat || \ - ((so)->so_rcv.sb_state & SBS_CANTRCVMORE) || \ - !TAILQ_EMPTY(&(so)->so_comp) || (so)->so_error) - -/* can we write something to so? */ -#define sowriteable(so) \ - ((sbspace(&(so)->so_snd) >= (so)->so_snd.sb_lowat && \ - (((so)->so_state&SS_ISCONNECTED) || \ - ((so)->so_proto->pr_flags&PR_CONNREQUIRED)==0)) || \ - ((so)->so_snd.sb_state & SBS_CANTSENDMORE) || \ - (so)->so_error) - -/* adjust counters in sb reflecting allocation of m */ -#define sballoc(sb, m) { \ - (sb)->sb_cc += (m)->m_len; \ - if ((m)->m_type != MT_DATA && (m)->m_type != MT_OOBDATA) \ - (sb)->sb_ctl += (m)->m_len; \ - (sb)->sb_mbcnt += MSIZE; \ - if ((m)->m_flags & M_EXT) \ - (sb)->sb_mbcnt += (m)->m_ext.ext_size; \ -} - -/* adjust counters in sb reflecting freeing of m */ -#define sbfree(sb, m) { \ - (sb)->sb_cc -= (m)->m_len; \ - if ((m)->m_type != MT_DATA && (m)->m_type != MT_OOBDATA) \ - (sb)->sb_ctl -= (m)->m_len; \ - (sb)->sb_mbcnt -= MSIZE; \ - if ((m)->m_flags & M_EXT) \ - (sb)->sb_mbcnt -= (m)->m_ext.ext_size; \ - if ((sb)->sb_sndptr == (m)) { \ - (sb)->sb_sndptr = NULL; \ - (sb)->sb_sndptroff = 0; \ - } \ - if ((sb)->sb_sndptroff != 0) \ - (sb)->sb_sndptroff -= (m)->m_len; \ -} - -/* - * soref()/sorele() ref-count the socket structure. Note that you must - * still explicitly close the socket, but the last ref count will free - * the structure. + * Socket event flags */ -#define soref(so) do { \ - SOCK_LOCK_ASSERT(so); \ - ++(so)->so_count; \ -} while (0) - -#define sorele(so) do { \ - ACCEPT_LOCK_ASSERT(); \ - SOCK_LOCK_ASSERT(so); \ - KASSERT((so)->so_count > 0, ("sorele")); \ - if (--(so)->so_count == 0) \ - sofree(so); \ - else { \ - SOCK_UNLOCK(so); \ - ACCEPT_UNLOCK(); \ - } \ -} while (0) - -#define sotryfree(so) do { \ - ACCEPT_LOCK_ASSERT(); \ - SOCK_LOCK_ASSERT(so); \ - if ((so)->so_count == 0) \ - sofree(so); \ - else { \ - SOCK_UNLOCK(so); \ - ACCEPT_UNLOCK(); \ - } \ -} while(0) - -/* - * In sorwakeup() and sowwakeup(), acquire the socket buffer lock to - * avoid a non-atomic test-and-wakeup. However, sowakeup is - * responsible for releasing the lock if it is called. We unlock only - * if we don't call into sowakeup. If any code is introduced that - * directly invokes the underlying sowakeup() primitives, it must - * maintain the same semantics. - */ -#define sorwakeup_locked(so) do { \ - SOCKBUF_LOCK_ASSERT(&(so)->so_rcv); \ - if (sb_notify(&(so)->so_rcv)) \ - sowakeup((so), &(so)->so_rcv); \ - else \ - SOCKBUF_UNLOCK(&(so)->so_rcv); \ -} while (0) - -#define sorwakeup(so) do { \ - SOCKBUF_LOCK(&(so)->so_rcv); \ - sorwakeup_locked(so); \ -} while (0) - -#define sowwakeup_locked(so) do { \ - SOCKBUF_LOCK_ASSERT(&(so)->so_snd); \ - if (sb_notify(&(so)->so_snd)) \ - sowakeup((so), &(so)->so_snd); \ - else \ - SOCKBUF_UNLOCK(&(so)->so_snd); \ -} while (0) - -#define sowwakeup(so) do { \ - SOCKBUF_LOCK(&(so)->so_snd); \ - sowwakeup_locked(so); \ -} while (0) - -/* - * Argument structure for sosetopt et seq. This is in the KERNEL - * section because it will never be visible to user code. - */ -enum sopt_dir { SOPT_GET, SOPT_SET }; -struct sockopt { - enum sopt_dir sopt_dir; /* is this a get or a set? */ - int sopt_level; /* second arg of [gs]etsockopt */ - int sopt_name; /* third arg of [gs]etsockopt */ - void *sopt_val; /* fourth arg of [gs]etsockopt */ - size_t sopt_valsize; /* (almost) fifth arg of [gs]etsockopt */ - struct thread *sopt_td; /* calling thread or null if kernel */ -}; - -struct accept_filter { - char accf_name[16]; - void (*accf_callback) - (struct socket *so, void *arg, int waitflag); - void * (*accf_create) - (struct socket *so, char *arg); - void (*accf_destroy) - (struct socket *so); - SLIST_ENTRY(accept_filter) accf_next; -}; - -extern int maxsockets; -extern u_long sb_max; -extern struct uma_zone *socket_zone; -extern so_gen_t so_gencnt; - -struct mbuf; -struct sockaddr; -struct ucred; -struct uio; - -/* - * From uipc_socket and friends - */ -int do_getopt_accept_filter(struct socket *so, struct sockopt *sopt); -int do_setopt_accept_filter(struct socket *so, struct sockopt *sopt); -int so_setsockopt(struct socket *so, int level, int optname, - void *optval, size_t optlen); -int sockargs(struct mbuf **mp, caddr_t buf, int buflen, int type); -int getsockaddr(struct sockaddr **namp, caddr_t uaddr, size_t len); -void sbappend(struct sockbuf *sb, struct mbuf *m); -void sbappend_locked(struct sockbuf *sb, struct mbuf *m); -void sbappendstream(struct sockbuf *sb, struct mbuf *m); -void sbappendstream_locked(struct sockbuf *sb, struct mbuf *m); -int sbappendaddr(struct sockbuf *sb, const struct sockaddr *asa, - struct mbuf *m0, struct mbuf *control); -int sbappendaddr_locked(struct sockbuf *sb, const struct sockaddr *asa, - struct mbuf *m0, struct mbuf *control); -int sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, - struct mbuf *control); -int sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0, - struct mbuf *control); -void sbappendrecord(struct sockbuf *sb, struct mbuf *m0); -void sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0); -void sbcheck(struct sockbuf *sb); -void sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n); -struct mbuf * - sbcreatecontrol(caddr_t p, int size, int type, int level); -void sbdestroy(struct sockbuf *sb, struct socket *so); -void sbdrop(struct sockbuf *sb, int len); -void sbdrop_locked(struct sockbuf *sb, int len); -void sbdroprecord(struct sockbuf *sb); -void sbdroprecord_locked(struct sockbuf *sb); -void sbflush(struct sockbuf *sb); -void sbflush_locked(struct sockbuf *sb); -void sbrelease(struct sockbuf *sb, struct socket *so); -void sbrelease_locked(struct sockbuf *sb, struct socket *so); -int sbreserve(struct sockbuf *sb, u_long cc, struct socket *so, - struct thread *td); -int sbreserve_locked(struct sockbuf *sb, u_long cc, struct socket *so, - struct thread *td); -struct mbuf * - sbsndptr(struct sockbuf *sb, u_int off, u_int len, u_int *moff); -void sbtoxsockbuf(struct sockbuf *sb, struct xsockbuf *xsb); -int sbwait(struct sockbuf *sb); -int sblock(struct sockbuf *sb, int flags); -void sbunlock(struct sockbuf *sb); -void soabort(struct socket *so); -int soaccept(struct socket *so, struct sockaddr **nam); -int socheckuid(struct socket *so, uid_t uid); -int sobind(struct socket *so, struct sockaddr *nam, struct thread *td); -void socantrcvmore(struct socket *so); -void socantrcvmore_locked(struct socket *so); -void socantsendmore(struct socket *so); -void socantsendmore_locked(struct socket *so); -int soclose(struct socket *so); -int soconnect(struct socket *so, struct sockaddr *nam, struct thread *td); -int soconnect2(struct socket *so1, struct socket *so2); -int socow_setup(struct mbuf *m0, struct uio *uio); -int socreate(int dom, struct socket **aso, int type, int proto, - struct ucred *cred, struct thread *td); -int sodisconnect(struct socket *so); -struct sockaddr *sodupsockaddr(const struct sockaddr *sa, int mflags); -void sofree(struct socket *so); -int sogetopt(struct socket *so, struct sockopt *sopt); -void sohasoutofband(struct socket *so); -void soisconnected(struct socket *so); -void soisconnecting(struct socket *so); -void soisdisconnected(struct socket *so); -void soisdisconnecting(struct socket *so); -int solisten(struct socket *so, int backlog, struct thread *td); -void solisten_proto(struct socket *so, int backlog); -int solisten_proto_check(struct socket *so); -struct socket * - sonewconn(struct socket *head, int connstatus); -int sooptcopyin(struct sockopt *sopt, void *buf, size_t len, size_t minlen); -int sooptcopyout(struct sockopt *sopt, const void *buf, size_t len); - -/* XXX; prepare mbuf for (__FreeBSD__ < 3) routines. */ -int soopt_getm(struct sockopt *sopt, struct mbuf **mp); -int soopt_mcopyin(struct sockopt *sopt, struct mbuf *m); -int soopt_mcopyout(struct sockopt *sopt, struct mbuf *m); - -int sopoll(struct socket *so, int events, struct ucred *active_cred, - struct thread *td); -int sopoll_generic(struct socket *so, int events, - struct ucred *active_cred, struct thread *td); -int soreceive(struct socket *so, struct sockaddr **paddr, struct uio *uio, - struct mbuf **mp0, struct mbuf **controlp, int *flagsp); -int soreceive_generic(struct socket *so, struct sockaddr **paddr, - struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, - int *flagsp); -int soreserve(struct socket *so, u_long sndcc, u_long rcvcc); -void sorflush(struct socket *so); -int sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, - struct mbuf *top, struct mbuf *control, int flags, - struct thread *td); -int sosend_dgram(struct socket *so, struct sockaddr *addr, - struct uio *uio, struct mbuf *top, struct mbuf *control, - int flags, struct thread *td); -int sosend_generic(struct socket *so, struct sockaddr *addr, - struct uio *uio, struct mbuf *top, struct mbuf *control, - int flags, struct thread *td); -int sosetopt(struct socket *so, struct sockopt *sopt); -int soshutdown(struct socket *so, int how); -void sotoxsocket(struct socket *so, struct xsocket *xso); -void sowakeup(struct socket *so, struct sockbuf *sb); - -#ifdef SOCKBUF_DEBUG -void sblastrecordchk(struct sockbuf *, const char *, int); -#define SBLASTRECORDCHK(sb) sblastrecordchk((sb), __FILE__, __LINE__) - -void sblastmbufchk(struct sockbuf *, const char *, int); -#define SBLASTMBUFCHK(sb) sblastmbufchk((sb), __FILE__, __LINE__) -#else -#define SBLASTRECORDCHK(sb) /* nothing */ -#define SBLASTMBUFCHK(sb) /* nothing */ -#endif /* SOCKBUF_DEBUG */ - -/* - * Accept filter functions (duh). - */ -int accept_filt_add(struct accept_filter *filt); -int accept_filt_del(char *name); -struct accept_filter *accept_filt_get(char *name); -#ifdef ACCEPT_FILTER_MOD -#ifdef SYSCTL_DECL -SYSCTL_DECL(_net_inet_accf); -#endif -int accept_filt_generic_mod_event(module_t mod, int event, void *data); -#endif - -#endif /* _KERNEL */ +#define SCTP_EVENT_READ 0x0001 /* socket is readable */ +#define SCTP_EVENT_WRITE 0x0002 /* socket is writeable */ +#define SCTP_EVENT_ERROR 0x0004 /* socket has an error state */ /*-------------------------------------------------------------*/ @@ -690,7 +383,6 @@ int accept_filt_generic_mod_event(module_t mod, int event, void *data); * above into, avoiding having to port the entire thing at once... * For function prototypes, the full bodies are in user_socket.c . */ -#if defined(__Userspace__) /* ---------------------------------------------------------- */ /* --- function prototypes (implemented in user_socket.c) --- */ @@ -701,6 +393,7 @@ void soisconnected(struct socket *so); struct socket * sonewconn(struct socket *head, int connstatus); void socantrcvmore(struct socket *so); void socantsendmore(struct socket *so); +void sofree(struct socket *so); @@ -764,9 +457,7 @@ extern int sctp_listen(struct socket *so, int backlog, struct proc *p); extern void socantrcvmore_locked(struct socket *so); extern int sctp_bind(struct socket *so, struct sockaddr *addr); extern int sctp6_bind(struct socket *so, struct sockaddr *addr, void *proc); -#if defined(__Userspace__) extern int sctpconn_bind(struct socket *so, struct sockaddr *addr); -#endif extern int sctp_accept(struct socket *so, struct sockaddr **addr); extern int sctp_attach(struct socket *so, int proto, uint32_t vrf_id); extern int sctp6_attach(struct socket *so, int proto, uint32_t vrf_id); @@ -785,9 +476,7 @@ extern int soconnect(struct socket *so, struct sockaddr *nam); extern int sctp_disconnect(struct socket *so); extern int sctp_connect(struct socket *so, struct sockaddr *addr); extern int sctp6_connect(struct socket *so, struct sockaddr *addr); -#if defined(__Userspace__) extern int sctpconn_connect(struct socket *so, struct sockaddr *addr); -#endif extern void sctp_finish(void); /* ------------------------------------------------ */ @@ -835,8 +524,4 @@ extern void sctp_finish(void); sowwakeup_locked(so); \ } while (0) - - -#endif /* __Userspace__ */ - #endif /* !_SYS_SOCKETVAR_H_ */ diff --git a/netwerk/sctp/src/user_uma.h b/netwerk/sctp/src/user_uma.h index 1bdefdb809..59d71fff42 100755 --- a/netwerk/sctp/src/user_uma.h +++ b/netwerk/sctp/src/user_uma.h @@ -46,11 +46,11 @@ typedef struct uma_zone * uma_zone_t; typedef struct uma_keg * uma_keg_t; struct uma_cache { - int stub; /* TODO __Userspace__ */ + int stub; /* TODO __Userspace__ */ }; struct uma_keg { - int stub; /* TODO __Userspace__ */ + int stub; /* TODO __Userspace__ */ }; struct uma_zone { @@ -83,16 +83,14 @@ struct uma_zone { /* Prototype */ uma_zone_t uma_zcreate(char *name, size_t size, uma_ctor ctor, uma_dtor dtor, - uma_init uminit, uma_fini fini, int align, u_int32_t flags); + uma_init uminit, uma_fini fini, int align, uint32_t flags); #define uma_zone_set_max(zone, number) /* stub TODO __Userspace__ */ uma_zone_t uma_zcreate(char *name, size_t size, uma_ctor ctor, uma_dtor dtor, - uma_init uminit, uma_fini fini, int align, u_int32_t flags) -{ - return NULL; /* stub TODO __Userspace__. Also place implementation in a separate .c file */ - + uma_init uminit, uma_fini fini, int align, uint32_t flags) { + return NULL; /* stub TODO __Userspace__. Also place implementation in a separate .c file */ } #endif diff --git a/netwerk/sctp/src/usrsctp.h b/netwerk/sctp/src/usrsctp.h index afd46562d4..4c135a171d 100644 --- a/netwerk/sctp/src/usrsctp.h +++ b/netwerk/sctp/src/usrsctp.h @@ -64,14 +64,24 @@ extern "C" { #elif defined(SCTP_STDINT_INCLUDE) #include SCTP_STDINT_INCLUDE #else -#define uint8_t unsigned __int8 -#define uint16_t unsigned __int16 -#define uint32_t unsigned __int32 -#define int16_t __int16 -#define int32_t __int32 +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +#endif + +#ifndef ssize_t +#ifdef _WIN64 +typedef __int64 ssize_t; +#elif defined _WIN32 +typedef int ssize_t; +#else +#error "Unknown platform!" +#endif #endif -#define ssize_t __int64 #define MSG_EOR 0x8 #ifndef EWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK @@ -86,6 +96,25 @@ extern "C" { typedef uint32_t sctp_assoc_t; +#if defined(_WIN32) && defined(_MSC_VER) +#pragma pack (push, 1) +#define SCTP_PACKED +#else +#define SCTP_PACKED __attribute__((packed)) +#endif + +struct sctp_common_header { + uint16_t source_port; + uint16_t destination_port; + uint32_t verification_tag; + uint32_t crc32c; +} SCTP_PACKED; + +#if defined(_WIN32) && defined(_MSC_VER) +#pragma pack(pop) +#endif +#undef SCTP_PACKED + #define AF_CONN 123 /* The definition of struct sockaddr_conn MUST be in * tune with other sockaddr_* structures. @@ -107,12 +136,8 @@ struct sockaddr_conn { #endif union sctp_sockstore { -#if defined(INET) struct sockaddr_in sin; -#endif -#if defined(INET6) struct sockaddr_in6 sin6; -#endif struct sockaddr_conn sconn; struct sockaddr sa; }; @@ -121,6 +146,10 @@ union sctp_sockstore { #define SCTP_CURRENT_ASSOC 1 #define SCTP_ALL_ASSOC 2 +#define SCTP_EVENT_READ 0x0001 +#define SCTP_EVENT_WRITE 0x0002 +#define SCTP_EVENT_ERROR 0x0004 + /*** Structures and definitions to use the socket API ***/ #define SCTP_ALIGN_RESV_PAD 92 @@ -252,12 +281,13 @@ struct sctp_assoc_change { #define SCTP_CANT_STR_ASSOC 0x0005 /* sac_info values */ -#define SCTP_ASSOC_SUPPORTS_PR 0x01 -#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 -#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 -#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 -#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 -#define SCTP_ASSOC_SUPPORTS_MAX 0x05 +#define SCTP_ASSOC_SUPPORTS_PR 0x01 +#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 +#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 +#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 +#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 +#define SCTP_ASSOC_SUPPORTS_INTERLEAVING 0x06 +#define SCTP_ASSOC_SUPPORTS_MAX 0x06 /* Address event */ struct sctp_paddr_change { @@ -286,7 +316,7 @@ struct sctp_remote_error { uint32_t sre_length; uint16_t sre_error; sctp_assoc_t sre_assoc_id; - uint8_t sre_data[4]; + uint8_t sre_data[]; }; /* shutdown event */ @@ -451,6 +481,8 @@ struct sctp_event_subscribe { /* Flags that go into the sinfo->sinfo_flags field */ +#define SCTP_DATA_LAST_FRAG 0x0001 /* tail part of the message could not be sent */ +#define SCTP_DATA_NOT_FRAG 0x0003 /* complete message could not be sent */ #define SCTP_NOTIFICATION 0x0010 /* next message is a notification */ #define SCTP_COMPLETE 0x0020 /* next message is complete */ #define SCTP_EOF 0x0100 /* Start shutdown procedures */ @@ -520,9 +552,21 @@ struct sctp_event_subscribe { #define SCTP_DEFAULT_SNDINFO 0x00000021 #define SCTP_DEFAULT_PRINFO 0x00000022 #define SCTP_REMOTE_UDP_ENCAPS_PORT 0x00000024 +#define SCTP_ECN_SUPPORTED 0x00000025 +#define SCTP_PR_SUPPORTED 0x00000026 +#define SCTP_AUTH_SUPPORTED 0x00000027 +#define SCTP_ASCONF_SUPPORTED 0x00000028 +#define SCTP_RECONFIG_SUPPORTED 0x00000029 +#define SCTP_NRSACK_SUPPORTED 0x00000030 +#define SCTP_PKTDROP_SUPPORTED 0x00000031 +#define SCTP_MAX_CWND 0x00000032 #define SCTP_ENABLE_STREAM_RESET 0x00000900 /* struct sctp_assoc_value */ +/* Pluggable Stream Scheduling Socket option */ +#define SCTP_PLUGGABLE_SS 0x00001203 +#define SCTP_SS_VALUE 0x00001204 + /* * read-only options */ @@ -533,6 +577,9 @@ struct sctp_event_subscribe { #define SCTP_LOCAL_AUTH_CHUNKS 0x00000103 #define SCTP_GET_ASSOC_NUMBER 0x00000104 #define SCTP_GET_ASSOC_ID_LIST 0x00000105 +#define SCTP_TIMEOUTS 0x00000106 +#define SCTP_PR_STREAM_STATUS 0x00000107 +#define SCTP_PR_ASSOC_STATUS 0x00000108 /* * write-only options @@ -778,6 +825,12 @@ struct sctp_cc_option { struct sctp_assoc_value aid_value; }; +struct sctp_stream_value { + sctp_assoc_t assoc_id; + uint16_t stream_id; + uint16_t stream_value; +}; + struct sctp_timeouts { sctp_assoc_t stimo_assoc_id; uint32_t stimo_init; @@ -789,6 +842,13 @@ struct sctp_timeouts { uint32_t stimo_shutdownack; }; +struct sctp_prstatus { + sctp_assoc_t sprstat_assoc_id; + uint16_t sprstat_sid; + uint16_t sprstat_policy; + uint64_t sprstat_abandoned_unsent; + uint64_t sprstat_abandoned_sent; +}; /* Standard TCP Congestion Control */ #define SCTP_CC_RFC2581 0x00000000 @@ -835,11 +895,16 @@ usrsctp_init(uint16_t, int (*)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), void (*)(const char *format, ...)); +void +usrsctp_init_nothreads(uint16_t, + int (*)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), + void (*)(const char *format, ...)); + struct socket * usrsctp_socket(int domain, int type, int protocol, int (*receive_cb)(struct socket *sock, union sctp_sockstore addr, void *data, size_t datalen, struct sctp_rcvinfo, int flags, void *ulp_info), - int (*send_cb)(struct socket *sock, uint32_t sb_free), + int (*send_cb)(struct socket *sock, uint32_t sb_free, void *ulp_info), uint32_t sb_threshold, void *ulp_info); @@ -857,6 +922,13 @@ usrsctp_getsockopt(struct socket *so, void *option_value, socklen_t *option_len); +int +usrsctp_opt_info(struct socket *so, + sctp_assoc_t id, + int opt, + void *arg, + socklen_t *size); + int usrsctp_getpaddrs(struct socket *so, sctp_assoc_t id, @@ -934,6 +1006,9 @@ usrsctp_connectx(struct socket *so, void usrsctp_close(struct socket *so); +sctp_assoc_t +usrsctp_getassocid(struct socket *, struct sockaddr *); + int usrsctp_finish(void); @@ -958,17 +1033,49 @@ usrsctp_deregister_address(void *); int usrsctp_set_ulpinfo(struct socket *, void *); +int +usrsctp_get_ulpinfo(struct socket *, void **); + +int +usrsctp_set_upcall(struct socket *so, + void (*upcall)(struct socket *, void *, int), + void *arg); + +int +usrsctp_get_events(struct socket *so); + + +void +usrsctp_handle_timers(uint32_t elapsed_milliseconds); + #define SCTP_DUMP_OUTBOUND 1 #define SCTP_DUMP_INBOUND 0 char * -usrsctp_dumppacket(void *, size_t, int); +usrsctp_dumppacket(const void *, size_t, int); void usrsctp_freedumpbuffer(char *); -#define USRSCTP_SYSCTL_DECL(__field) \ -void usrsctp_sysctl_set_ ## __field(uint32_t value);\ +void +usrsctp_enable_crc32c_offload(void); + +void +usrsctp_disable_crc32c_offload(void); + +uint32_t +usrsctp_crc32c(void *, size_t); + +#define USRSCTP_TUNABLE_DECL(__field) \ +int usrsctp_tunable_set_ ## __field(uint32_t value);\ +uint32_t usrsctp_sysctl_get_ ## __field(void); + +USRSCTP_TUNABLE_DECL(sctp_hashtblsize) +USRSCTP_TUNABLE_DECL(sctp_pcbtblsize) +USRSCTP_TUNABLE_DECL(sctp_chunkscale) + +#define USRSCTP_SYSCTL_DECL(__field) \ +int usrsctp_sysctl_set_ ## __field(uint32_t value);\ uint32_t usrsctp_sysctl_get_ ## __field(void); USRSCTP_SYSCTL_DECL(sctp_sendspace) @@ -982,17 +1089,11 @@ USRSCTP_SYSCTL_DECL(sctp_asconf_enable) USRSCTP_SYSCTL_DECL(sctp_reconfig_enable) USRSCTP_SYSCTL_DECL(sctp_nrsack_enable) USRSCTP_SYSCTL_DECL(sctp_pktdrop_enable) -USRSCTP_SYSCTL_DECL(sctp_strict_sacks) -#if !defined(SCTP_WITH_NO_CSUM) USRSCTP_SYSCTL_DECL(sctp_no_csum_on_loopback) -#endif USRSCTP_SYSCTL_DECL(sctp_peer_chunk_oh) USRSCTP_SYSCTL_DECL(sctp_max_burst_default) USRSCTP_SYSCTL_DECL(sctp_max_chunks_on_queue) -USRSCTP_SYSCTL_DECL(sctp_hashtblsize) -USRSCTP_SYSCTL_DECL(sctp_pcbtblsize) USRSCTP_SYSCTL_DECL(sctp_min_split_point) -USRSCTP_SYSCTL_DECL(sctp_chunkscale) USRSCTP_SYSCTL_DECL(sctp_delayed_sack_time_default) USRSCTP_SYSCTL_DECL(sctp_sack_freq_default) USRSCTP_SYSCTL_DECL(sctp_system_free_resc_limit) @@ -1021,7 +1122,6 @@ USRSCTP_SYSCTL_DECL(sctp_mbuf_threshold_count) USRSCTP_SYSCTL_DECL(sctp_do_drain) USRSCTP_SYSCTL_DECL(sctp_hb_maxburst) USRSCTP_SYSCTL_DECL(sctp_abort_if_one_2_one_hits_limit) -USRSCTP_SYSCTL_DECL(sctp_strict_data_order) USRSCTP_SYSCTL_DECL(sctp_min_residual) USRSCTP_SYSCTL_DECL(sctp_max_retran_chunk) USRSCTP_SYSCTL_DECL(sctp_logging_level) @@ -1034,6 +1134,7 @@ USRSCTP_SYSCTL_DECL(sctp_udp_tunneling_port) USRSCTP_SYSCTL_DECL(sctp_enable_sack_immediately) USRSCTP_SYSCTL_DECL(sctp_vtag_time_wait) USRSCTP_SYSCTL_DECL(sctp_blackhole) +USRSCTP_SYSCTL_DECL(sctp_sendall_limit) USRSCTP_SYSCTL_DECL(sctp_diag_info_code) USRSCTP_SYSCTL_DECL(sctp_fr_max_burst_default) USRSCTP_SYSCTL_DECL(sctp_path_pf_threshold) @@ -1045,6 +1146,7 @@ USRSCTP_SYSCTL_DECL(sctp_steady_step) USRSCTP_SYSCTL_DECL(sctp_use_dccc_ecn) USRSCTP_SYSCTL_DECL(sctp_buffer_splitting) USRSCTP_SYSCTL_DECL(sctp_initial_cwnd) +USRSCTP_SYSCTL_DECL(sctp_ootb_with_zero_cksum) #ifdef SCTP_DEBUG USRSCTP_SYSCTL_DECL(sctp_debug_on) /* More specific values can be found in sctp_constants, but @@ -1099,7 +1201,7 @@ struct sctpstat { uint32_t sctps_recvauthfailed; /* total number of auth failed */ uint32_t sctps_recvexpress; /* total fast path receives all one chunk */ uint32_t sctps_recvexpressm; /* total fast path multi-part data */ - uint32_t sctps_recvnocrc; + uint32_t sctps_recv_spare; /* formerly sctps_recvnocrc */ uint32_t sctps_recvswcrc; uint32_t sctps_recvhwcrc; @@ -1116,7 +1218,7 @@ struct sctpstat { uint32_t sctps_sendecne; /* total output ECNE chunks */ uint32_t sctps_sendauth; /* total output AUTH chunks FIXME */ uint32_t sctps_senderrors; /* ip_output error counter */ - uint32_t sctps_sendnocrc; + uint32_t sctps_send_spare; /* formerly sctps_sendnocrc */ uint32_t sctps_sendswcrc; uint32_t sctps_sendhwcrc; /* PCKDROPREP statistics: */ @@ -1203,7 +1305,9 @@ struct sctpstat { uint32_t sctps_send_cwnd_avoid; /* Send cwnd full avoidance, already max burst inflight to net */ uint32_t sctps_fwdtsn_map_over; /* number of map array over-runs via fwd-tsn's */ uint32_t sctps_queue_upd_ecne; /* Number of times we queued or updated an ECN chunk on send queue */ - uint32_t sctps_reserved[31]; /* Future ABI compat - remove int's from here when adding new */ + uint32_t sctps_recvzerocrc; /* Number of accepted packets with zero CRC */ + uint32_t sctps_sendzerocrc; /* Number of packets sent with zero CRC */ + uint32_t sctps_reserved[29]; /* Future ABI compat - remove int's from here when adding new */ }; void diff --git a/parser/html/nsHtml5OwningUTF16Buffer.cpp b/parser/html/nsHtml5OwningUTF16Buffer.cpp index 213e402096..1507780b63 100644 --- a/parser/html/nsHtml5OwningUTF16Buffer.cpp +++ b/parser/html/nsHtml5OwningUTF16Buffer.cpp @@ -58,29 +58,3 @@ nsHtml5OwningUTF16Buffer::Swap(nsHtml5OwningUTF16Buffer* aOther) nsHtml5UTF16Buffer::Swap(aOther); } - -// Not using macros for AddRef and Release in order to be able to refcount on -// and create on different threads. - -nsrefcnt -nsHtml5OwningUTF16Buffer::AddRef() -{ - NS_PRECONDITION(int32_t(mRefCnt) >= 0, "Illegal refcount."); - ++mRefCnt; - NS_LOG_ADDREF(this, mRefCnt, "nsHtml5OwningUTF16Buffer", sizeof(*this)); - return mRefCnt; -} - -nsrefcnt -nsHtml5OwningUTF16Buffer::Release() -{ - NS_PRECONDITION(0 != mRefCnt, "Release without AddRef."); - --mRefCnt; - NS_LOG_RELEASE(this, mRefCnt, "nsHtml5OwningUTF16Buffer"); - if (mRefCnt == 0) { - mRefCnt = 1; /* stabilize */ - delete this; - return 0; - } - return mRefCnt; -} diff --git a/parser/html/nsHtml5OwningUTF16Buffer.h b/parser/html/nsHtml5OwningUTF16Buffer.h index 0d8777464e..178e67112c 100644 --- a/parser/html/nsHtml5OwningUTF16Buffer.h +++ b/parser/html/nsHtml5OwningUTF16Buffer.h @@ -9,6 +9,9 @@ class nsHtml5OwningUTF16Buffer : public nsHtml5UTF16Buffer { + public: + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(nsHtml5OwningUTF16Buffer) + private: /** @@ -48,11 +51,6 @@ class nsHtml5OwningUTF16Buffer : public nsHtml5UTF16Buffer * Swap start, end and buffer fields with another object. */ void Swap(nsHtml5OwningUTF16Buffer* aOther); - - nsrefcnt AddRef(); - nsrefcnt Release(); - private: - mozilla::ThreadSafeAutoRefCnt mRefCnt; }; #endif // nsHtml5OwningUTF16Buffer_h diff --git a/security/certverifier/ExtendedValidation.cpp b/security/certverifier/ExtendedValidation.cpp index e3550f05c9..205968c7af 100644 --- a/security/certverifier/ExtendedValidation.cpp +++ b/security/certverifier/ExtendedValidation.cpp @@ -293,18 +293,6 @@ static struct nsMyTrustedEVInfo myTrustedEVInfos[] = { "VQQDExJRdW9WYWRpcyBSb290IENBIDI=", "BQk=", }, - { - // CN=Network Solutions Certificate Authority,O=Network Solutions L.L.C.,C=US - "1.3.6.1.4.1.782.1.2.1.8.1", - "Network Solutions EV OID", - { 0x15, 0xF0, 0xBA, 0x00, 0xA3, 0xAC, 0x7A, 0xF3, 0xAC, 0x88, 0x4C, - 0x07, 0x2B, 0x10, 0x11, 0xA0, 0x77, 0xBD, 0x77, 0xC0, 0x97, 0xF4, - 0x01, 0x64, 0xB2, 0xF8, 0x59, 0x8A, 0xBD, 0x83, 0x86, 0x0C }, - "MGIxCzAJBgNVBAYTAlVTMSEwHwYDVQQKExhOZXR3b3JrIFNvbHV0aW9ucyBMLkwu" - "Qy4xMDAuBgNVBAMTJ05ldHdvcmsgU29sdXRpb25zIENlcnRpZmljYXRlIEF1dGhv" - "cml0eQ==", - "V8szb8JcFuZHFhfjkDFo4A==", - }, { // CN=Entrust Root Certification Authority,OU="(c) 2006 Entrust, Inc.",OU=www.entrust.net/CPS is incorporated by reference,O="Entrust, Inc.",C=US "2.16.840.1.114028.10.1.2", @@ -513,17 +501,28 @@ static struct nsMyTrustedEVInfo myTrustedEVInfos[] = { "DL4=", }, { - // CN = E-Tugra Certification Authority, OU = E-Tugra Sertifikasyon Merkezi, O = E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş., L = Ankara, C = TR - "2.16.792.3.0.4.1.1.4", - "ETugra EV OID", - { 0xB0, 0xBF, 0xD5, 0x2B, 0xB0, 0xD7, 0xD9, 0xBD, 0x92, 0xBF, 0x5D, - 0x4D, 0xC1, 0x3D, 0xA2, 0x55, 0xC0, 0x2C, 0x54, 0x2F, 0x37, 0x83, - 0x65, 0xEA, 0x89, 0x39, 0x11, 0xF5, 0x5E, 0x55, 0xF2, 0x3C }, - "MIGyMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMUAwPgYDVQQKDDdFLVR1" - "xJ9yYSBFQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEu" - "xZ4uMSYwJAYDVQQLDB1FLVR1Z3JhIFNlcnRpZmlrYXN5b24gTWVya2V6aTEoMCYG" - "A1UEAwwfRS1UdWdyYSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "amg+nFGby1M=", + // CN=E-Tugra Global Root CA RSA v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0xEF, 0x66, 0xB0, 0xB1, 0x0A, 0x3C, 0xDB, 0x9F, 0x2E, 0x36, 0x48, + 0xC7, 0x6B, 0xD2, 0xAF, 0x18, 0xEA, 0xD2, 0xBF, 0xE6, 0xF1, 0x17, + 0x65, 0x5E, 0x28, 0xC4, 0x06, 0x0D, 0xA1, 0xA3, 0xF4, 0xC2 }, + "MIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1" + "Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1Z3JhIFRydXN0IENlbnRlcjEmMCQG" + "A1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBSU0EgdjM=", + "DU3FzRYilZYIfrgLfxUGNPt5EDQ=", + }, + { + // CN=E-Tugra Global Root CA ECC v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0x87, 0x3F, 0x46, 0x85, 0xFA, 0x7F, 0x56, 0x36, 0x25, 0x25, 0x2E, + 0x6D, 0x36, 0xBC, 0xD7, 0xF1, 0x6F, 0xC2, 0x49, 0x51, 0xF2, 0x64, + 0xE4, 0x7E, 0x1B, 0x95, 0x4F, 0x49, 0x08, 0xCD, 0xCA, 0x13 }, + "MIGAMQswCQYDVQQGEwJUUjEPMA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1" + "Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1Z3JhIFRydXN0IENlbnRlcjEmMCQG" + "A1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBFQ0MgdjM=", + "JkYZdzHhT28oNt45UYbm1JeIIsE=", }, { // CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT @@ -597,6 +596,28 @@ static struct nsMyTrustedEVInfo myTrustedEVInfos[] = { "dCBHNA==", "BZsbV56OITLiOQe9p3d1XA==", }, + { + // CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0x37, 0x1A, 0x00, 0xDC, 0x05, 0x33, 0xB3, 0x72, 0x1A, 0x7E, 0xEB, + 0x40, 0xE8, 0x41, 0x9E, 0x70, 0x79, 0x9D, 0x2B, 0x0A, 0x0F, 0x2C, + 0x1D, 0x80, 0x69, 0x31, 0x65, 0xF7, 0xCE, 0xC4, 0xAD, 0x75 }, + "ME0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjElMCMGA1UE" + "AxMcRGlnaUNlcnQgVExTIFJTQTQwOTYgUm9vdCBHNQ==", + "CPm0eKj6ftpqMzeJ3nzPig==", + }, + { + // CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0x01, 0x8E, 0x13, 0xF0, 0x77, 0x25, 0x32, 0xCF, 0x80, 0x9B, 0xD1, + 0xB1, 0x72, 0x81, 0x86, 0x72, 0x83, 0xFC, 0x48, 0xC6, 0xE1, 0x3B, + 0xE9, 0xC6, 0x98, 0x12, 0x85, 0x4A, 0x49, 0x0C, 0x1B, 0x05 }, + "ME4xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEmMCQGA1UE" + "AxMdRGlnaUNlcnQgVExTIEVDQyBQMzg0IFJvb3QgRzU=", + "CeCTZaz32ci5PhwLBCou8w==", + }, { // CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM "1.3.6.1.4.1.8024.0.2.100.1.2", @@ -679,17 +700,6 @@ static struct nsMyTrustedEVInfo myTrustedEVInfos[] = { "cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp", "OGPe+A==", }, - { - // CN=Staat der Nederlanden EV Root CA,O=Staat der Nederlanden,C=NL - "2.16.528.1.1003.1.2.7", - "Staat der Nederlanden EV OID", - { 0x4D, 0x24, 0x91, 0x41, 0x4C, 0xFE, 0x95, 0x67, 0x46, 0xEC, 0x4C, - 0xEF, 0xA6, 0xCF, 0x6F, 0x72, 0xE2, 0x8A, 0x13, 0x29, 0x43, 0x2F, - 0x9D, 0x8A, 0x90, 0x7A, 0xC4, 0xCB, 0x5D, 0xAD, 0xC1, 0x5A }, - "MFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4x" - "KTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBSb290IENB", - "AJiWjQ==", - }, { // CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US "2.16.840.1.114028.10.1.2", @@ -1153,6 +1163,28 @@ static struct nsMyTrustedEVInfo myTrustedEVInfos[] = { "GUQtVFJVU1QgRVYgUm9vdCBDQSAxIDIwMjA=", "XwJB13qHfEwDo6yWjfv/0A==", }, + { + // CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0xF3, 0x89, 0x6F, 0x88, 0xFE, 0x7C, 0x0A, 0x88, 0x27, 0x66, 0xA7, + 0xFA, 0x6A, 0xD2, 0x74, 0x9F, 0xB5, 0x7A, 0x7F, 0x3E, 0x98, 0xFB, + 0x76, 0x9C, 0x1F, 0xA7, 0xB0, 0x9C, 0x2C, 0x44, 0xD5, 0xAE }, + "MFQxCzAJBgNVBAYTAkNOMSYwJAYDVQQKDB1CRUlKSU5HIENFUlRJRklDQVRFIEFV" + "VEhPUklUWTEdMBsGA1UEAwwUQkpDQSBHbG9iYWwgUm9vdCBDQTE=", + "VW9l47TZkGobCdFsPsBsIA==", + }, + { + // CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN + "2.23.140.1.1", + "CA/Browser Forum EV OID", + { 0x57, 0x4D, 0xF6, 0x93, 0x1E, 0x27, 0x80, 0x39, 0x66, 0x7B, 0x72, + 0x0A, 0xFD, 0xC1, 0x60, 0x0F, 0xC2, 0x7E, 0xB6, 0x6D, 0xD3, 0x09, + 0x29, 0x79, 0xFB, 0x73, 0x85, 0x64, 0x87, 0x21, 0x28, 0x82 }, + "MFQxCzAJBgNVBAYTAkNOMSYwJAYDVQQKDB1CRUlKSU5HIENFUlRJRklDQVRFIEFV" + "VEhPUklUWTEdMBsGA1UEAwwUQkpDQSBHbG9iYWwgUm9vdCBDQTI=", + "LBcIfWQqwP6FGFkGz7RK6w==", + }, }; // TenFourFox issue 512, backport from ESR60: treat all EV roots as diff --git a/security/manager/ssl/StaticHPKPins.h b/security/manager/ssl/StaticHPKPins.h index 3066430bb0..06fb6bca67 100644 --- a/security/manager/ssl/StaticHPKPins.h +++ b/security/manager/ssl/StaticHPKPins.h @@ -71,6 +71,14 @@ static const char kDigiCert_Global_Root_G3Fingerprint[] = static const char kDigiCert_High_Assurance_EV_Root_CAFingerprint[] = "WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; +/* DigiCert TLS ECC P384 Root G5 */ +static const char kDigiCert_TLS_ECC_P384_Root_G5Fingerprint[] = + "oC+voZLIy4HLE0FVT5wFtxzKKokLDRKY1oNkfJYe+98="; + +/* DigiCert TLS RSA4096 Root G5 */ +static const char kDigiCert_TLS_RSA4096_Root_G5Fingerprint[] = + "ape1HIIZ6T5d7GS61YBs3rD4NVvkfnVwELcCRW4Bqv0="; + /* DigiCert Trusted Root G4 */ static const char kDigiCert_Trusted_Root_G4Fingerprint[] = "Wd8xe/qfTwq3ylFNd3IpaqLHZbh2ZNCLluVzmeNkcpw="; @@ -99,82 +107,18 @@ static const char kEntrust_net_Premium_2048_Secure_Server_CAFingerprint[] = static const char kFacebookBackupFingerprint[] = "q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ="; -/* GOOGLE_PIN_AddTrustClass1CARoot */ -static const char kGOOGLE_PIN_AddTrustClass1CARootFingerprint[] = - "BStocQfshOhzA4JFLsKidFF0XXSFpX1vRk4Np6G2ryo="; - -/* GOOGLE_PIN_AddTrustExternalCARoot */ -static const char kGOOGLE_PIN_AddTrustExternalCARootFingerprint[] = - "lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU="; - -/* GOOGLE_PIN_AddTrustPublicCARoot */ -static const char kGOOGLE_PIN_AddTrustPublicCARootFingerprint[] = - "OGHXtpYfzbISBFb/b8LrdwSxp0G0vZM6g3b14ZFcppg="; - -/* GOOGLE_PIN_AddTrustQualifiedCARoot */ -static const char kGOOGLE_PIN_AddTrustQualifiedCARootFingerprint[] = - "xzr8Lrp3DQy8HuQfJStS6Kk9ErctzOwDHY2DnL+Bink="; - -/* GOOGLE_PIN_COMODORSADomainValidationSecureServerCA */ -static const char kGOOGLE_PIN_COMODORSADomainValidationSecureServerCAFingerprint[] = - "klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; - -/* GOOGLE_PIN_DSTRootCAX3 */ -static const char kGOOGLE_PIN_DSTRootCAX3Fingerprint[] = - "Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; - /* GOOGLE_PIN_DigiCertECCSecureServerCA */ static const char kGOOGLE_PIN_DigiCertECCSecureServerCAFingerprint[] = "PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw="; -/* GOOGLE_PIN_Entrust_SSL */ -static const char kGOOGLE_PIN_Entrust_SSLFingerprint[] = - "nsxRNo6G40YPZsKV5JQt1TCA8nseQQr/LRqp1Oa8fnw="; - -/* GOOGLE_PIN_GTECyberTrustGlobalRoot */ -static const char kGOOGLE_PIN_GTECyberTrustGlobalRootFingerprint[] = - "EGn6R6CqT4z3ERscrqNl7q7RC//zJmDe9uBhS/rnCHU="; - /* GOOGLE_PIN_GTSCA1O1 */ static const char kGOOGLE_PIN_GTSCA1O1Fingerprint[] = "YZPgTZ+woNCCCIW3LH2CxQeLzB/1m42QcCTBSdgayjs="; -/* GOOGLE_PIN_GeoTrustGlobal */ -static const char kGOOGLE_PIN_GeoTrustGlobalFingerprint[] = - "h6801m+z8v3zbgkRHpq6L29Esgfzhj89C1SyUCOQmqU="; - -/* GOOGLE_PIN_GeoTrustGlobal2 */ -static const char kGOOGLE_PIN_GeoTrustGlobal2Fingerprint[] = - "F3VaXClfPS1y5vAxofB/QAxYi55YKyLxfq4xoVkNEYU="; - -/* GOOGLE_PIN_GeoTrustPrimary */ -static const char kGOOGLE_PIN_GeoTrustPrimaryFingerprint[] = - "SQVGZiOrQXi+kqxcvWWE96HhfydlLVqFr4lQTqI5qqo="; - -/* GOOGLE_PIN_GeoTrustPrimary_G2 */ -static const char kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint[] = - "vPtEqrmtAhAVcGtBIep2HIHJ6IlnWQ9vlK50TciLePs="; - -/* GOOGLE_PIN_GeoTrustPrimary_G3 */ -static const char kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint[] = - "q5hJUnat8eyv8o81xTBIeB5cFxjaucjmelBPT2pRMo8="; - -/* GOOGLE_PIN_GeoTrustUniversal */ -static const char kGOOGLE_PIN_GeoTrustUniversalFingerprint[] = - "lpkiXF3lLlbN0y3y6W0c/qWqPKC7Us2JM8I7XCdEOCA="; - -/* GOOGLE_PIN_GeoTrustUniversal2 */ -static const char kGOOGLE_PIN_GeoTrustUniversal2Fingerprint[] = - "fKoDRlEkWQxgHlZ+UhSOlSwM/+iQAFMP4NlbbVDqrkE="; - /* GOOGLE_PIN_GlobalSignRootCA_R2 */ static const char kGOOGLE_PIN_GlobalSignRootCA_R2Fingerprint[] = "iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; -/* GOOGLE_PIN_GoDaddySecure */ -static const char kGOOGLE_PIN_GoDaddySecureFingerprint[] = - "MrZLZnJ6IGPkBm87lYywqu5Xal7O/ZUzmbuIdHMdlYc="; - /* GOOGLE_PIN_R3LetsEncrypt */ static const char kGOOGLE_PIN_R3LetsEncryptFingerprint[] = "jQJTbIh0grw0/1TkHSumWb+Fs0Ggogr621gT3PvPKG0="; @@ -187,66 +131,10 @@ static const char kGOOGLE_PIN_R4LetsEncryptFingerprint[] = static const char kGOOGLE_PIN_RapidSSLFingerprint[] = "lT09gPUeQfbYrlxRtpsHrjDblj9Rpz+u7ajfCrg4qDM="; -/* GOOGLE_PIN_SecureCertificateServices */ -static const char kGOOGLE_PIN_SecureCertificateServicesFingerprint[] = - "RpHL/ehKa2BS3b4VK7DCFq4lqG5XR4E9vA8UfzOFcL4="; - /* GOOGLE_PIN_SymantecClass3EVG3 */ static const char kGOOGLE_PIN_SymantecClass3EVG3Fingerprint[] = "gMxWOrX4PMQesK9qFNbYBxjBfjUvlkn/vN1n+L9lE5E="; -/* GOOGLE_PIN_TrustedCertificateServices */ -static const char kGOOGLE_PIN_TrustedCertificateServicesFingerprint[] = - "4tiR77c4ZpEF1TDeXtcuKyrD9KZweLU0mz/ayklvXrg="; - -/* GOOGLE_PIN_UTNDATACorpSGC */ -static const char kGOOGLE_PIN_UTNDATACorpSGCFingerprint[] = - "QAL80xHQczFWfnG82XHkYEjI3OjRZZcRdTs9qiommvo="; - -/* GOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmail */ -static const char kGOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmailFingerprint[] = - "Laj56jRU0hFGRko/nQKNxMf7tXscUsc8KwVyovWZotM="; - -/* GOOGLE_PIN_UTNUSERFirstHardware */ -static const char kGOOGLE_PIN_UTNUSERFirstHardwareFingerprint[] = - "TUDnr0MEoJ3of7+YliBMBVFB4/gJsv5zO7IxD9+YoWI="; - -/* GOOGLE_PIN_UTNUSERFirstObject */ -static const char kGOOGLE_PIN_UTNUSERFirstObjectFingerprint[] = - "D+FMJksXu28NZT56cOs2Pb9UvhWAOe3a5cJXEd9IwQM="; - -/* GOOGLE_PIN_VeriSignClass1 */ -static const char kGOOGLE_PIN_VeriSignClass1Fingerprint[] = - "LclHC+Y+9KzxvYKGCUArt7h72ZY4pkOTTohoLRvowwg="; - -/* GOOGLE_PIN_VeriSignClass2_G2 */ -static const char kGOOGLE_PIN_VeriSignClass2_G2Fingerprint[] = - "2oALgLKofTmeZvoZ1y/fSZg7R9jPMix8eVA6DH4o/q8="; - -/* GOOGLE_PIN_VeriSignClass3_G2 */ -static const char kGOOGLE_PIN_VeriSignClass3_G2Fingerprint[] = - "AjyBzOjnxk+pQtPBUEhwfTXZu1uH9PVExb8bxWQ68vo="; - -/* GOOGLE_PIN_VeriSignClass3_G3 */ -static const char kGOOGLE_PIN_VeriSignClass3_G3Fingerprint[] = - "SVqWumuteCQHvVIaALrOZXuzVVVeS7f4FGxxu6V+es4="; - -/* GOOGLE_PIN_VeriSignClass3_G4 */ -static const char kGOOGLE_PIN_VeriSignClass3_G4Fingerprint[] = - "UZJDjsNp1+4M5x9cbbdflB779y5YRBcV6Z6rBMLIrO4="; - -/* GOOGLE_PIN_VeriSignClass3_G5 */ -static const char kGOOGLE_PIN_VeriSignClass3_G5Fingerprint[] = - "JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg="; - -/* GOOGLE_PIN_VeriSignClass4_G3 */ -static const char kGOOGLE_PIN_VeriSignClass4_G3Fingerprint[] = - "VnuCEf0g09KD7gzXzgZyy52ZvFtIeljJ1U7Gf3fUqPU="; - -/* GOOGLE_PIN_VeriSignUniversal */ -static const char kGOOGLE_PIN_VeriSignUniversalFingerprint[] = - "lnsM2T/O9/J84sJFdnrpsFp3awZJ+ZZbYpCWhGloaHI="; - /* GTS Root R1 */ static const char kGTS_Root_R1Fingerprint[] = "hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc="; @@ -279,6 +167,10 @@ static const char kGlobalSign_Root_CA___R3Fingerprint[] = static const char kGlobalSign_Root_CA___R6Fingerprint[] = "aCdH+LpiG4fN07wpXtXKvOciocDANj0daLOJKNJ4fx4="; +/* GlobalSign Root R46 */ +static const char kGlobalSign_Root_R46Fingerprint[] = + "rn+WLLnmp9v3uDP7GPqbcaiRdd+UnCMrap73yz3yu/w="; + /* Go Daddy Class 2 CA */ static const char kGo_Daddy_Class_2_CAFingerprint[] = "VjLZe/p3W/PJnd6lL8JVNBCGQBZynFLdZSTIqcO0SJ8="; @@ -295,6 +187,10 @@ static const char kGoogleBackup2048Fingerprint[] = static const char kISRG_Root_X1Fingerprint[] = "C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M="; +/* ISRG Root X2 */ +static const char kISRG_Root_X2Fingerprint[] = + "diGVwiVYbubAI3RW4hB9xU8e/CH2GnkuvVFZE8zmgzI="; + /* Let's Encrypt Authority X3 */ static const char kLet_s_Encrypt_Authority_X3Fingerprint[] = "YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; @@ -303,14 +199,6 @@ static const char kLet_s_Encrypt_Authority_X3Fingerprint[] = static const char kLet_s_Encrypt_Authority_X4Fingerprint[] = "sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis="; -/* SpiderOak2 */ -static const char kSpiderOak2Fingerprint[] = - "7Y3UnxbffL8aFPXsOJBpGasgpDmngpIhAxGKdQRklQQ="; - -/* SpiderOak3 */ -static const char kSpiderOak3Fingerprint[] = - "LkER54vOdlygpTsbYvlpMq1CE/lDAG1AP9xmdtwvV2A="; - /* Starfield Class 2 CA */ static const char kStarfield_Class_2_CAFingerprint[] = "FfFKxFycfaIz00eRZOgTf+Ne4POK6FgYPwhBDqgqxLQ="; @@ -319,14 +207,6 @@ static const char kStarfield_Class_2_CAFingerprint[] = static const char kStarfield_Root_Certificate_Authority___G2Fingerprint[] = "gI1os/q0iEpflxrOfRBVDXqVoWN3Tz7Dav/7IT++THQ="; -/* Swehack */ -static const char kSwehackFingerprint[] = - "FdaffE799rVb3oyAuhJ2mBW/XJwD07Uajb2G6YwSAEw="; - -/* SwehackBackup */ -static const char kSwehackBackupFingerprint[] = - "z6cuswA6E1vgFkCjUsbEYo0Lf3aP8M8YOvwkoiGzDCo="; - /* TestSPKI */ static const char kTestSPKIFingerprint[] = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; @@ -343,10 +223,6 @@ static const char kTor2Fingerprint[] = static const char kTor3Fingerprint[] = "CleC1qwUR8JPgH1nXvSe2VHxDe5/KfNs96EusbfSOfo="; -/* Twitter1 */ -static const char kTwitter1Fingerprint[] = - "vU9M48LzD/CF34wE5PPf4nBwRyosy06X21J0ap8yS5s="; - /* USERTrust ECC Certification Authority */ static const char kUSERTrust_ECC_Certification_AuthorityFingerprint[] = "ICGRfpgmOUXIWcQ/HXPLQTkFPEFPoDyjvH7ohhQpjzs="; @@ -355,14 +231,6 @@ static const char kUSERTrust_ECC_Certification_AuthorityFingerprint[] = static const char kUSERTrust_RSA_Certification_AuthorityFingerprint[] = "x4QzPSC810K5/cMjb05Qm4k3Bw5zBn4lTdO/nEW/Td4="; -/* Verisign Class 1 Public Primary Certification Authority - G3 */ -static const char kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint[] = - "IgduWu9Eu5pBaii30cRDItcFn2D+/6XK9sW+hEeJEwM="; - -/* Verisign Class 2 Public Primary Certification Authority - G3 */ -static const char kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint[] = - "cAajgxHlj7GTSEIzIYIQxmEloOSoJq7VOaxWHfv72QM="; - /* Pinsets are each an ordered list by the actual value of the fingerprint */ struct StaticFingerprints { // See bug 1338873 about making these fields const. @@ -412,6 +280,9 @@ static const StaticFingerprints kPinset_google_root_pems = { static const char* const kPinset_mozilla_services_Data[] = { kISRG_Root_X1Fingerprint, kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kDigiCert_TLS_RSA4096_Root_G5Fingerprint, + kDigiCert_Global_Root_G2Fingerprint, + kDigiCert_TLS_ECC_P384_Root_G5Fingerprint, kDigiCert_Global_Root_CAFingerprint, }; static const StaticFingerprints kPinset_mozilla_services = { @@ -466,122 +337,33 @@ static const StaticFingerprints kPinset_tor = { kPinset_tor_Data }; -static const char* const kPinset_twitterCom_Data[] = { - kGOOGLE_PIN_VeriSignClass2_G2Fingerprint, - kGOOGLE_PIN_VeriSignClass3_G2Fingerprint, - kGOOGLE_PIN_GeoTrustGlobal2Fingerprint, - kDigiCert_Assured_ID_Root_CAFingerprint, - kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint, - kGOOGLE_PIN_VeriSignClass3_G5Fingerprint, - kGOOGLE_PIN_VeriSignClass1Fingerprint, - kGOOGLE_PIN_GeoTrustPrimaryFingerprint, - kGOOGLE_PIN_VeriSignClass3_G3Fingerprint, - kGOOGLE_PIN_VeriSignClass3_G4Fingerprint, - kGOOGLE_PIN_VeriSignClass4_G3Fingerprint, - kDigiCert_High_Assurance_EV_Root_CAFingerprint, - kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint, - kGOOGLE_PIN_GeoTrustUniversal2Fingerprint, - kGOOGLE_PIN_GeoTrustGlobalFingerprint, - kGOOGLE_PIN_VeriSignUniversalFingerprint, - kGOOGLE_PIN_GeoTrustUniversalFingerprint, - kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint, - kDigiCert_Global_Root_CAFingerprint, - kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint, - kTwitter1Fingerprint, -}; -static const StaticFingerprints kPinset_twitterCom = { - sizeof(kPinset_twitterCom_Data) / sizeof(const char*), - kPinset_twitterCom_Data -}; - -static const char* const kPinset_twitterCDN_Data[] = { - kGOOGLE_PIN_VeriSignClass2_G2Fingerprint, - kGOOGLE_PIN_TrustedCertificateServicesFingerprint, - kCOMODO_Certification_AuthorityFingerprint, - kGOOGLE_PIN_VeriSignClass3_G2Fingerprint, - kGOOGLE_PIN_AddTrustClass1CARootFingerprint, - kGOOGLE_PIN_UTNUSERFirstObjectFingerprint, - kGOOGLE_PIN_GTECyberTrustGlobalRootFingerprint, - kGOOGLE_PIN_GeoTrustGlobal2Fingerprint, - kEntrust_net_Premium_2048_Secure_Server_CAFingerprint, - kDigiCert_Assured_ID_Root_CAFingerprint, - kVerisign_Class_1_Public_Primary_Certification_Authority___G3Fingerprint, - kGOOGLE_PIN_VeriSignClass3_G5Fingerprint, - kGlobalSign_Root_CAFingerprint, - kGOOGLE_PIN_UTNUSERFirstClientAuthenticationandEmailFingerprint, - kGOOGLE_PIN_VeriSignClass1Fingerprint, - kGOOGLE_PIN_AddTrustPublicCARootFingerprint, - kGOOGLE_PIN_UTNDATACorpSGCFingerprint, - kGOOGLE_PIN_SecureCertificateServicesFingerprint, - kGOOGLE_PIN_GeoTrustPrimaryFingerprint, - kGOOGLE_PIN_VeriSignClass3_G3Fingerprint, - kGOOGLE_PIN_UTNUSERFirstHardwareFingerprint, - kGOOGLE_PIN_VeriSignClass3_G4Fingerprint, - kGOOGLE_PIN_VeriSignClass4_G3Fingerprint, - kDigiCert_High_Assurance_EV_Root_CAFingerprint, - kBaltimore_CyberTrust_RootFingerprint, - kEntrust_Root_Certification_AuthorityFingerprint, - kVerisign_Class_2_Public_Primary_Certification_Authority___G3Fingerprint, - kGlobalSign_Root_CA___R3Fingerprint, - kEntrust_Root_Certification_Authority___G2Fingerprint, - kGOOGLE_PIN_GeoTrustUniversal2Fingerprint, - kGOOGLE_PIN_GeoTrustGlobalFingerprint, - kGOOGLE_PIN_GlobalSignRootCA_R2Fingerprint, - kGOOGLE_PIN_AddTrustExternalCARootFingerprint, - kGOOGLE_PIN_VeriSignUniversalFingerprint, - kGOOGLE_PIN_GeoTrustUniversalFingerprint, - kGOOGLE_PIN_Entrust_SSLFingerprint, - kGOOGLE_PIN_GeoTrustPrimary_G3Fingerprint, - kDigiCert_Global_Root_CAFingerprint, - kGOOGLE_PIN_GeoTrustPrimary_G2Fingerprint, - kComodo_AAA_Services_rootFingerprint, - kTwitter1Fingerprint, - kGOOGLE_PIN_AddTrustQualifiedCARootFingerprint, -}; -static const StaticFingerprints kPinset_twitterCDN = { - sizeof(kPinset_twitterCDN_Data) / sizeof(const char*), - kPinset_twitterCDN_Data -}; - -static const char* const kPinset_dropbox_Data[] = { - kEntrust_Root_Certification_Authority___EC1Fingerprint, - kEntrust_net_Premium_2048_Secure_Server_CAFingerprint, - kDigiCert_Assured_ID_Root_CAFingerprint, - kGo_Daddy_Root_Certificate_Authority___G2Fingerprint, - kGOOGLE_PIN_GoDaddySecureFingerprint, - kGo_Daddy_Class_2_CAFingerprint, - kDigiCert_High_Assurance_EV_Root_CAFingerprint, - kEntrust_Root_Certification_AuthorityFingerprint, - kEntrust_Root_Certification_Authority___G2Fingerprint, - kDigiCert_Global_Root_CAFingerprint, -}; -static const StaticFingerprints kPinset_dropbox = { - sizeof(kPinset_dropbox_Data) / sizeof(const char*), - kPinset_dropbox_Data -}; - static const char* const kPinset_facebook_Data[] = { + kCOMODO_ECC_Certification_AuthorityFingerprint, + kISRG_Root_X1Fingerprint, + kUSERTrust_ECC_Certification_AuthorityFingerprint, + kGlobalSign_Root_CAFingerprint, kGOOGLE_PIN_DigiCertECCSecureServerCAFingerprint, + kDigiCert_Trusted_Root_G4Fingerprint, kDigiCert_High_Assurance_EV_Root_CAFingerprint, + kGlobalSign_Root_CA___R6Fingerprint, + kDigiCert_TLS_RSA4096_Root_G5Fingerprint, + kGlobalSign_Root_CA___R3Fingerprint, + kISRG_Root_X2Fingerprint, kGOOGLE_PIN_SymantecClass3EVG3Fingerprint, + kCOMODO_RSA_Certification_AuthorityFingerprint, + kDigiCert_Global_Root_G2Fingerprint, + kDigiCert_TLS_ECC_P384_Root_G5Fingerprint, kFacebookBackupFingerprint, + kDigiCert_Global_Root_CAFingerprint, + kGlobalSign_Root_R46Fingerprint, + kDigiCert_Global_Root_G3Fingerprint, + kUSERTrust_RSA_Certification_AuthorityFingerprint, }; static const StaticFingerprints kPinset_facebook = { sizeof(kPinset_facebook_Data) / sizeof(const char*), kPinset_facebook_Data }; -static const char* const kPinset_spideroak_Data[] = { - kSpiderOak2Fingerprint, - kSpiderOak3Fingerprint, - kDigiCert_High_Assurance_EV_Root_CAFingerprint, - kGOOGLE_PIN_GeoTrustGlobalFingerprint, -}; -static const StaticFingerprints kPinset_spideroak = { - sizeof(kPinset_spideroak_Data) / sizeof(const char*), - kPinset_spideroak_Data -}; - static const char* const kPinset_yahoo_Data[] = { kDigiCert_Assured_ID_Root_CAFingerprint, kGlobalSign_Root_CAFingerprint, @@ -597,19 +379,6 @@ static const StaticFingerprints kPinset_yahoo = { kPinset_yahoo_Data }; -static const char* const kPinset_swehackCom_Data[] = { - kSwehackFingerprint, - kGOOGLE_PIN_DSTRootCAX3Fingerprint, - kLet_s_Encrypt_Authority_X3Fingerprint, - kGOOGLE_PIN_COMODORSADomainValidationSecureServerCAFingerprint, - kLet_s_Encrypt_Authority_X4Fingerprint, - kSwehackBackupFingerprint, -}; -static const StaticFingerprints kPinset_swehackCom = { - sizeof(kPinset_swehackCom_Data) / sizeof(const char*), - kPinset_swehackCom_Data -}; - /* Domainlist */ struct TransportSecurityPreload { // See bug 1338873 about making these fields const. @@ -631,7 +400,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "admin.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "android.com", true, false, false, -1, &kPinset_google_root_pems }, { "api.accounts.firefox.com", true, false, true, 5, &kPinset_mozilla_services }, - { "api.twitter.com", true, false, false, -1, &kPinset_twitterCDN }, { "apis.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "appengine.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "apps.facebook.com", true, false, false, -1, &kPinset_facebook }, @@ -650,7 +418,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "bugs.chromium.org", true, false, false, -1, &kPinset_google_root_pems }, { "build.chromium.org", true, false, false, -1, &kPinset_google_root_pems }, { "business.facebook.com", true, false, false, -1, &kPinset_facebook }, - { "business.twitter.com", true, false, false, -1, &kPinset_twitterCom }, { "ca.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "calendar.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "cd.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, @@ -690,7 +457,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "ct.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "datastudio.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "de.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, - { "dev.twitter.com", true, false, false, -1, &kPinset_twitterCom }, { "developer.android.com", true, false, false, -1, &kPinset_google_root_pems }, { "developers.facebook.com", true, false, false, -1, &kPinset_facebook }, { "dist.torproject.org", true, false, false, -1, &kPinset_tor }, @@ -703,9 +469,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "doubleclick.net", true, false, false, -1, &kPinset_google_root_pems }, { "download.mozilla.org", false, false, true, 14, &kPinset_mozilla_services }, { "drive.google.com", true, false, false, -1, &kPinset_google_root_pems }, - { "dropbox.com", true, false, false, -1, &kPinset_dropbox }, - { "dropboxstatic.com", false, true, false, -1, &kPinset_dropbox }, - { "dropboxusercontent.com", false, true, false, -1, &kPinset_dropbox }, { "edit.yahoo.com", true, true, false, -1, &kPinset_yahoo }, { "en-maktoob.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "encrypted.google.com", true, false, false, -1, &kPinset_google_root_pems }, @@ -713,7 +476,7 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "espanol.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "example.test", true, true, false, -1, &kPinset_test }, { "exclude-subdomains.pinning.example.com", false, false, false, -1, &kPinset_mozilla_test }, - { "facebook.com", false, false, false, -1, &kPinset_facebook }, + { "facebook.com", true, false, false, -1, &kPinset_facebook }, { "fi.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "fi.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "firebaseio.com", true, false, false, -1, &kPinset_google_root_pems }, @@ -1001,8 +764,7 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "market.android.com", true, false, false, -1, &kPinset_google_root_pems }, { "mbasic.facebook.com", true, false, false, -1, &kPinset_facebook }, { "meet.google.com", true, false, false, -1, &kPinset_google_root_pems }, - { "messenger.com", false, false, false, -1, &kPinset_facebook }, - { "mobile.twitter.com", true, false, false, -1, &kPinset_twitterCom }, + { "messenger.com", true, false, false, -1, &kPinset_facebook }, { "mt.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "mtouch.facebook.com", true, false, false, -1, &kPinset_facebook }, { "mu.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, @@ -1015,7 +777,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "no.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "np.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "nz.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, - { "oauth.twitter.com", true, false, false, -1, &kPinset_twitterCom }, { "oauthaccountmanager.googleapis.com", true, false, false, -1, &kPinset_google_root_pems }, { "pa.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "passwords.google.com", true, false, false, -1, &kPinset_google_root_pems }, @@ -1029,7 +790,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "pixel.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "pk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "pl.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, - { "platform.twitter.com", true, false, false, -1, &kPinset_twitterCDN }, { "play.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "plus.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "plus.sandbox.google.com", true, false, false, -1, &kPinset_google_root_pems }, @@ -1050,12 +810,10 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "services.mozilla.com", true, false, true, 6, &kPinset_mozilla_services }, { "sg.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "sites.google.com", true, false, false, -1, &kPinset_google_root_pems }, - { "spideroak.com", true, false, false, -1, &kPinset_spideroak }, { "spreadsheets.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "static.googleadsserving.cn", true, false, false, -1, &kPinset_google_root_pems }, { "stats.g.doubleclick.net", true, false, false, -1, &kPinset_google_root_pems }, { "sv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, - { "swehack.org", true, true, false, -1, &kPinset_swehackCom }, { "sync.services.mozilla.com", true, false, true, 13, &kPinset_mozilla_services }, { "t.facebook.com", true, false, false, -1, &kPinset_facebook }, { "tablet.facebook.com", true, false, false, -1, &kPinset_facebook }, @@ -1073,8 +831,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "tunnel.googlezip.net", true, false, false, -1, &kPinset_google_root_pems }, { "tv.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "tw.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, - { "twimg.com", true, false, false, -1, &kPinset_twitterCDN }, - { "twitter.com", true, false, false, -1, &kPinset_twitterCDN }, { "ua.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "ua5v.com", true, false, false, -1, &kPinset_google_root_pems }, { "uk.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, @@ -1101,7 +857,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "wf-trial-hrd.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, { "withgoogle.com", true, false, false, -1, &kPinset_google_root_pems }, { "withyoutube.com", true, false, false, -1, &kPinset_google_root_pems }, - { "www.dropbox.com", true, false, false, -1, &kPinset_dropbox }, { "www.facebook.com", true, false, false, -1, &kPinset_facebook }, { "www.g.co", false, false, false, -1, &kPinset_google_root_pems }, { "www.gmail.com", false, false, false, -1, &kPinset_google_root_pems }, @@ -1109,7 +864,6 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "www.googlemail.com", false, false, false, -1, &kPinset_google_root_pems }, { "www.messenger.com", true, false, false, -1, &kPinset_facebook }, { "www.torproject.org", true, false, false, -1, &kPinset_tor }, - { "www.twitter.com", true, false, false, -1, &kPinset_twitterCom }, { "xa.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, { "xbrlsuccess.appspot.com", true, false, false, -1, &kPinset_google_root_pems }, { "xn--7xa.google.com", true, false, false, -1, &kPinset_google_root_pems }, @@ -1121,8 +875,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo }, }; -// Pinning Preload List Length = 496; +// Pinning Preload List Length = 481; static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1669892929282000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1701082122257000); diff --git a/security/manager/ssl/nsSTSPreloadList.inc b/security/manager/ssl/nsSTSPreloadList.inc index 2b6b55a754..94d883e883 100644 --- a/security/manager/ssl/nsSTSPreloadList.inc +++ b/security/manager/ssl/nsSTSPreloadList.inc @@ -10,7 +10,7 @@ /* imported from ESR102 by TenFourFox conversion script */ #include -const PRTime gPreloadListExpirationTime = INT64_C(1672312124982000); +const PRTime gPreloadListExpirationTime = INT64_C(1703501319402000); class nsSTSPreload { @@ -42,10 +42,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "000a7.com", true }, { "000a8.com", true }, { "000a9.com", true }, - { "000b58.com", false }, { "000g.ru", true }, { "000x2.com", true }, - { "000x3.com", true }, { "0010100.net", true }, { "0011011.xyz", true }, { "00120012.net", true }, @@ -54,7 +52,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0017552.com", true }, { "0017d88.com", true }, { "001yapan.com", true }, - { "002.ro", true }, + { "002.ro", false }, { "00220022.net", true }, { "00228.am", false }, { "00228.org", true }, @@ -72,7 +70,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "00228yy.com", false }, { "00228z.com", false }, { "00228zz.com", false }, - { "002k8.com", false }, + { "002k8.com", true }, { "003.mx", true }, { "00321365.com", true }, { "00365t.com", true }, @@ -82,10 +80,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0047552.com", true }, { "00484.com", true }, { "0057552.com", true }, - { "00660066.net", true }, + { "0066.in", true }, { "0067552.com", true }, { "007.rip", true }, - { "0077552.com", true }, { "007d88.com", true }, { "007kf.com", true }, { "007sascha.de", false }, @@ -99,46 +96,93 @@ static const nsSTSPreload kSTSPreloadList[] = { { "00b31.com", false }, { "00b58.com", true }, { "00bet86.com", true }, + { "00c.org", true }, { "00d88.com", true }, { "00dani.me", true }, { "00f.net", true }, + { "00ffaaa.com", true }, + { "00ffbbb.com", true }, + { "00ffccc.com", true }, + { "00ffddd.com", true }, + { "00ffeee.com", true }, + { "00fffaa.com", true }, + { "00fffbb.com", true }, + { "00fffcc.com", true }, + { "00fffdd.com", true }, + { "00fffee.com", true }, + { "00fffgg.com", true }, + { "00fffhh.com", true }, + { "00fffii.com", true }, + { "00fffjj.com", true }, + { "00fffkk.com", true }, + { "00fffll.com", true }, + { "00fffmm.com", true }, + { "00fffnn.com", true }, + { "00fffoo.com", true }, + { "00fffpp.com", true }, + { "00fffqq.com", true }, + { "00fffrr.com", true }, + { "00fffss.com", true }, + { "00ffftt.com", true }, + { "00fffuu.com", true }, + { "00fffvv.com", true }, + { "00fffww.com", true }, + { "00fffxx.com", true }, + { "00fffyy.com", true }, + { "00fffzz.com", true }, + { "00ffggg.com", true }, + { "00ffhhh.com", true }, + { "00ffiii.com", true }, + { "00ffjjj.com", true }, + { "00ffkkk.com", true }, + { "00fflll.com", true }, + { "00ffmmm.com", true }, + { "00ffnnn.com", true }, + { "00ffooo.com", true }, + { "00ffppp.com", true }, + { "00ffqqq.com", true }, + { "00ffrrr.com", true }, + { "00ffsss.com", true }, + { "00ffttt.com", true }, + { "00ffuuu.com", true }, + { "00ffvvv.com", true }, + { "00ffwww.com", true }, + { "00ffxxx.com", true }, + { "00ffyyy.com", true }, + { "00ffzzz.com", true }, { "00o00.top", true }, - { "00s.io", false }, { "00wbf.com", true }, - { "01.org", true }, { "01011970.xyz", true }, { "010203.ru", true }, - { "010ks.net", true }, { "01100010011001010111001101110100.com", true }, { "01101000.xyz", true }, { "01110000011100110111001001100111.ca", true }, { "01110000011100110111001001100111.com", true }, { "011101.xyz", true }, { "0116288.com", true }, + { "011631.com", true }, { "0117552.com", true }, { "011ks.com", true }, { "012345678365.com", true }, { "0127552.com", true }, { "01337.tech", true }, + { "013458.com", true }, { "01365t.com", true }, { "0137552.com", true }, { "0138365.com", false }, { "0139365.com", false }, - { "013zl.com", true }, { "015kb.com", true }, + { "016298.com", false }, { "018663.com", true }, { "018zl.com", true }, { "019328.com", true }, { "019ks.com", true }, { "019zl.com", true }, - { "01bargainhunter.com", true }, { "01electronica.com.ar", true }, - { "01media.fr", true }, { "01seguridad.com.ar", true }, { "01smh.com", true }, { "01tools.com", true }, { "01up.co.za", true }, - { "020ks.com", true }, { "021002.com", true }, { "0222z6.com", true }, { "022367.com", true }, @@ -147,7 +191,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "022501.com", true }, { "022503.com", true }, { "022507.com", true }, - { "022561.com", true }, { "022571.com", true }, { "022601.com", true }, { "022609.com", true }, @@ -156,14 +199,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "02349898.xyz", true }, { "02365t.com", true }, { "02375.net", true }, - { "023838.com", false }, { "023sec.com", true }, { "025k8.com", true }, { "02607.com", true }, - { "026122.com", true }, { "02638.net", true }, + { "026637.com", true }, { "026ks.com", true }, + { "027862.com", true }, + { "029637.com", true }, { "02d88.net", true }, + { "02n.cn", true }, { "02smh.com", true }, { "03-09-2016.wedding", true }, { "03012.net", true }, @@ -174,16 +219,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "032ks.com", true }, { "0335z6.com", true }, { "035711630.xyz", true }, - { "035ks.com", true }, { "036ks.com", true }, { "0376z6.com", true }, { "0377z6.com", true }, { "038663.com", true }, + { "038799.com", false }, { "038dev.nl", true }, { "0391315.com", true }, { "03region.ga", true }, { "040552.com", false }, { "041552.com", false }, + { "042230.com", true }, { "042552.com", false }, { "04365t.com", true }, { "046552.com", false }, @@ -206,7 +252,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0514.chat", true }, { "051552.com", false }, { "0517z6.com", true }, - { "0518z6.com", true }, { "051ks.com", true }, { "052ks.com", true }, { "05365t.com", true }, @@ -215,10 +260,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "055268.com", true }, { "0553z6.com", true }, { "0555z6.com", true }, + { "056687.com", false }, + { "056697.com", false }, + { "057180.com", true }, { "0571z6.com", true }, { "0575z6.com", true }, - { "058kb.com", true }, { "0597z6.com", true }, + { "059958.com", true }, + { "06006.vip", false }, { "060258.com", true }, { "060579.com", true }, { "060757.com", true }, @@ -227,7 +276,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "06091994.xyz", true }, { "06365t.com", true }, { "065l.com", true }, - { "06804.com", true }, + { "066630.com", true }, + { "06804.com", false }, { "0681a.com", true }, { "0681h.com", true }, { "068552.com", false }, @@ -235,22 +285,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "06d88.net", true }, { "06se.com", true }, { "070709.net", true }, + { "070930.com", true }, { "0712z6.com", true }, { "071552.com", false }, + { "071615.com", true }, { "07365t.com", true }, { "0737399.com", true }, + { "076.ne.jp", true }, { "0760ks.com", true }, - { "077969.com", true }, { "078663.com", true }, + { "078895.com", true }, { "0788yh.com", true }, { "0792112.com", true }, { "0798rcw.com", false }, { "07d88.com", true }, { "07d88.net", true }, + { "07f.de", true }, { "08000113.nl", true }, { "080261.com", true }, - { "0809yh.com", true }, { "081115.com", true }, + { "081481.com", true }, { "081752.com", true }, { "081763.com", true }, { "081769.com", true }, @@ -258,50 +312,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "081925.com", true }, { "081927.com", true }, { "081957.com", true }, - { "081967.com", true }, { "082157.com", true }, { "082159.com", true }, { "082167.com", true }, { "082173.com", true }, { "082175.com", true }, { "082179.com", true }, - { "082187.com", true }, { "082192.com", true }, { "082193.com", true }, { "082195.com", true }, { "082359.com", true }, + { "083321.com", true }, + { "083326.com", true }, + { "083329.com", true }, { "08365t.com", true }, - { "083903.com", true }, - { "083905.com", true }, - { "083907.com", true }, - { "083962.com", true }, - { "083965.com", true }, { "083967.com", true }, { "084552.com", true }, + { "084709.com", true }, { "085851.com", false }, + { "086486.com", true }, { "08845.cc", true }, { "089818.com", true }, { "08detaxe.fr", true }, + { "09.ag", true }, { "09000113.nl", true }, + { "090124.xyz", true }, + { "090136.com", true }, { "0906-clan.tk", true }, { "09115.com", false }, + { "091630.com", true }, + { "091631.com", true }, + { "091634.com", true }, { "091k8.com", false }, - { "092k8.com", true }, + { "092300.com", true }, + { "0935792342.tw", true }, { "09365t.com", true }, { "095598.cc", true }, + { "097712.com", true }, + { "098711.com", true }, { "09892.net", true }, - { "098k8.com", true }, { "0998z6.com", true }, { "0999z6.com", true }, { "09elektrik.com", true }, { "09kanagawa.jp", true }, { "0akarma.me", true }, { "0au.de", false }, + { "0c.gay", true }, { "0c3.de", true }, { "0carbon.com", true }, { "0cdn.ga", true }, { "0cdn.net", true }, - { "0cdn.xyz", true }, { "0cean.tk", true }, { "0chan.pl", true }, { "0chanru.net", true }, @@ -311,13 +371,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0day.agency", true }, { "0dayexploits.gq", true }, { "0des.com", true }, - { "0dev.cc", true }, { "0i0.nl", true }, { "0ii0.cf", true }, { "0iz.net", true }, - { "0knowledge.de", false }, + { "0knowledge.de", true }, + { "0milemarathon.com", true }, + { "0n.com", true }, { "0n3b1t.com", true }, - { "0nestudio.com", true }, + { "0nnn.top", true }, { "0o0.edu.pl", true }, { "0o0.ooo", true }, { "0o0o.biz", true }, @@ -330,16 +391,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0system.tk", true }, { "0trust.cloud", true }, { "0trust.pro", true }, + { "0ut3r.space", true }, { "0verall.tk", true }, - { "0verener.com", true }, { "0vi.org", true }, { "0w.al", true }, { "0w0.wiki", true }, { "0wx.cat", true }, { "0wx.es", true }, { "0wx.eu", true }, + { "0wx.net", true }, { "0wx.org", true }, { "0x.cx", true }, + { "0x.lu", true }, { "0x.sk", true }, { "0x0.cloud", true }, { "0x0.li", true }, @@ -352,6 +415,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0x17.de", true }, { "0x21.consulting", true }, { "0x22.de", true }, + { "0x27.fr", true }, { "0x28.de", true }, { "0x2a.ninja", true }, { "0x378.net", true }, @@ -364,11 +428,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0x5f3759df.net", true }, { "0x7.io", true }, { "0x76.de", true }, - { "0x7fffffff.net", true }, + { "0x7d7b.net", true }, + { "0x7fffffff.net", false }, { "0x80.org", true }, { "0x90.io", true }, + { "0x90.space", true }, { "0xaa55.me", true }, - { "0xabe.io", true }, { "0xacab.org", true }, { "0xaf.tk", true }, { "0xda.de", true }, @@ -379,39 +444,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "0xf00.ch", true }, { "0xfc.de", true }, { "0xff.se", true }, + { "0xheuts.nl", true }, { "0xn.de", true }, + { "0xnotes.me", true }, { "0xspa.de", true }, { "0xword.com", true }, { "0yen.org", true }, - { "1-123hp.com", true }, { "1-2-3bounce.co.uk", true }, + { "1-800-mattress.com", true }, { "1-ae.com", true }, { "1-inv.com", true }, + { "1-news.net", true }, { "1-pujcky-uvery.tk", true }, + { "1-x-bet.com", true }, + { "1-x-bet.ke", true }, + { "1-x-mirror.com", true }, + { "1-xbet-tj.com", true }, + { "1-xbet.ke", true }, + { "1-xbet13.com", true }, + { "1-xbet20.com", true }, { "100-downloads.com", true }, - { "100-i.com", true }, - { "100-referencement.com", true }, { "10000hits.tk", true }, { "10000lab.net", true }, { "10000rub.gq", true }, { "10000spoons.tk", true }, - { "10000v.ru", true }, { "10001000.xyz", true }, { "100048.com", true }, { "1000cp5.cc", true }, { "1000inf.ru", true }, - { "1000minds.com", true }, + { "1000ps.at", true }, + { "1000ps.de", true }, { "1000rubley.ml", true }, { "1000serien.com", true }, { "1000wordsevents.com", false }, - { "1001firms.com", true }, + { "1001cachimbas.es", true }, + { "1001fonts.com", true }, { "1001home.cf", true }, { "1001kartini.com", true }, { "1001kerstpakketten.com", false }, { "1001mv.com", true }, { "1001n.com", true }, - { "1001oyun.com", true }, { "1001reasonstolearnspanish.com", true }, + { "1001telecommandes.com", true }, { "1007337.com", true }, { "10086.id", true }, { "10086.ru", true }, @@ -424,7 +498,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "100k.eu", true }, { "100kraz.ga", true }, { "100kredite.de", true }, - { "100lat.pl", true }, { "100mani.it", true }, { "100nome.com", true }, { "100onrainkajino.com", true }, @@ -434,6 +507,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "100refer.tk", true }, { "100sapog.tk", true }, { "100skidok.ga", true }, + { "100sovetov.info", true }, + { "100time.ru", true }, { "100tur.tk", true }, { "100up.de", true }, { "100up.net", true }, @@ -441,16 +516,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "100v.org", true }, { "100visits.tk", true }, { "100voprosov.tk", true }, - { "100words.ca", true }, { "100zakladok.tk", true }, - { "101.qa", true }, { "10101.io", true }, { "101010.hopto.org", true }, { "101010.pl", true }, + { "101023.xyz", true }, { "10198.com", true }, - { "101android.ru", false }, + { "101android.ru", true }, { "101st-airborne.tk", true }, { "101st.tk", true }, + { "101warehousing.com.au", true }, { "1020310.com", true }, { "1020311.com", true }, { "1020312.com", true }, @@ -460,16 +535,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1020318.com", true }, { "1020319.com", true }, { "1020320.com", true }, + { "10218.com", true }, + { "10218b.com", true }, + { "10218c.com", true }, + { "10218d.com", true }, + { "10218e.com", true }, + { "10218f.com", true }, + { "10218g.com", true }, + { "10218h.com", true }, + { "10218i.com", true }, + { "1024.ee", true }, { "1024.kr", true }, { "1025.ga", true }, - { "1031ex.com", true }, { "10365e.com", true }, { "10365f.com", true }, - { "10365g.com", true }, { "10365h.com", true }, + { "1037thefoxrocks.com", true }, { "104.ua", true }, + { "1040taxfirm.com", true }, { "1041263497.rsc.cdn77.org", true }, - { "10414.org", true }, + { "10414.org", false }, { "10430.net", true }, { "10435.net", true }, { "10436.net", true }, @@ -478,16 +563,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "10453.net", true }, { "10495.net", true }, { "105318.com", true }, + { "1057thehog.com", true }, { "106.hi.cn", true }, { "10628.com", true }, { "1068511.com", true }, - { "10699999.com", true }, { "10705.ml", true }, - { "10774.net", true }, + { "10774.net", false }, { "107996.com", true }, { "1079fm.ga", true }, { "10840.net", true }, - { "1091.jp", true }, { "10961096.xyz", true }, { "109k8.com", true }, { "10er-friseur.de", true }, @@ -495,15 +579,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "10hz.de", true }, { "10ktotalent.com", true }, { "10mach.com", true }, - { "10marifet.net", true }, { "10media.ru", true }, { "10mijlvanijmuiden.tk", true }, { "10milliondollarpage.com", true }, { "10must.com", true }, + { "10news.com", true }, { "10og.de", true }, + { "10pearls.com", true }, { "10ppm.com", true }, { "10seos.com", true }, { "10site.ru", true }, + { "10ten.study", true }, + { "10tv.in", true }, { "10web.io", true }, { "10wtac.tk", true }, { "10x.to", true }, @@ -512,12 +599,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1100110.xyz", true }, { "11018vip.com", true }, { "11018xpj.com", true }, - { "110692.com", true }, + { "11046.com", true }, { "11082.com", true }, + { "110838.com", true }, { "110cl.com", true }, { "110na.com", true }, - { "111111.online", true }, - { "111111.plus", true }, + { "111011.xyz", true }, { "1111365t.com", true }, { "1111k8.com", true }, { "111365t.com", true }, @@ -526,11 +613,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "11182.com", true }, { "11183.com", true }, { "11185.com", true }, - { "111b58.com", false }, { "111bet86.com", true }, { "111novosti.tk", true }, { "111plus.design", true }, - { "111ttt.com", true }, { "1120301.com", true }, { "1120302.com", true }, { "1120303.com", true }, @@ -585,47 +670,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "112madgamer.tk", true }, { "11321365.com", true }, { "11333837.com", true }, - { "11335835.com", false }, { "11365t.com", true }, { "113k8.com", true }, - { "113ks.com", true }, { "113z6.com", true }, { "11400.com", true }, { "11443837.com", false }, - { "11445835.com", false }, { "114514ss.com", true }, { "114job.com", true }, { "114online.com", true }, { "115.one", true }, - { "11553837.com", false }, { "115z6.com", true }, { "11665835.com", false }, - { "116ks.com", true }, - { "11773837.com", false }, - { "11775835.com", false }, + { "1174healing.com", true }, { "117766.xyz", true }, { "1177z6.com", true }, { "11792.com", true }, - { "11883837.com", false }, - { "11885835.com", false }, + { "118118money.com", true }, + { "118400.com", true }, { "1190america.tk", true }, - { "11993837.com", false }, { "1199bet.vip", true }, { "11aaee.com", true }, { "11aagg.com", true }, { "11aajj.com", true }, { "11aaqq.com", true }, - { "11aass.com", true }, { "11aazz.com", true }, { "11academianetworks.com", true }, - { "11ag8.com", true }, { "11assets.com", true }, { "11b31.com", false }, { "11b58.com", true }, { "11bbjj.com", true }, { "11bbpp.com", true }, { "11bbqq.com", true }, - { "11bbrr.com", true }, { "11bbss.com", true }, { "11bbzz.com", true }, { "11bet86.com", true }, @@ -651,15 +726,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "11eexx.com", true }, { "11eeyy.com", true }, { "11eezz.com", true }, + { "11ffaaa.com", true }, + { "11ffbbb.com", true }, { "11ffcc.com", true }, - { "11ffjj.com", true }, + { "11ffccc.com", true }, + { "11ffddd.com", true }, + { "11ffeee.com", true }, + { "11fffaa.com", true }, + { "11fffbb.com", true }, + { "11fffcc.com", true }, + { "11fffdd.com", true }, + { "11fffee.com", true }, + { "11fffgg.com", true }, + { "11fffhh.com", true }, + { "11fffii.com", true }, + { "11fffjj.com", true }, + { "11fffkk.com", true }, + { "11fffll.com", true }, + { "11fffmm.com", true }, + { "11fffnn.com", true }, + { "11fffoo.com", true }, + { "11fffpp.com", true }, + { "11fffqq.com", true }, + { "11fffrr.com", true }, + { "11fffss.com", true }, + { "11ffftt.com", true }, + { "11fffuu.com", true }, + { "11fffvv.com", true }, + { "11fffww.com", true }, + { "11fffxx.com", true }, + { "11fffyy.com", true }, + { "11fffzz.com", true }, + { "11ffggg.com", true }, + { "11ffhhh.com", true }, + { "11ffiii.com", true }, + { "11ffjjj.com", true }, { "11ffkk.com", true }, + { "11ffkkk.com", true }, + { "11fflll.com", true }, + { "11ffmmm.com", true }, + { "11ffnnn.com", true }, + { "11ffooo.com", true }, + { "11ffppp.com", true }, + { "11ffqqq.com", true }, { "11ffrr.com", true }, + { "11ffrrr.com", true }, + { "11ffsss.com", true }, { "11fftt.com", true }, + { "11ffttt.com", true }, + { "11ffuuu.com", true }, + { "11ffvvv.com", true }, + { "11ffwww.com", true }, { "11ffxx.com", true }, + { "11ffxxx.com", true }, { "11ffyy.com", true }, + { "11ffyyy.com", true }, { "11ffzz.com", true }, - { "11ggaa.com", true }, + { "11ffzzz.com", true }, { "11ggbb.com", true }, { "11ggcc.com", true }, { "11ggee.com", true }, @@ -674,6 +797,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "11hhqq.com", true }, { "11hhrr.com", true }, { "11hhzz.com", true }, + { "11it.ru", true }, { "11jjaa.com", true }, { "11jjcc.com", true }, { "11jjrr.com", true }, @@ -713,11 +837,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "11ssqq.com", true }, { "11ssrr.com", true }, { "11sstt.com", true }, - { "11thstreetcoffee.com", true }, { "11traders.com", true }, { "11ttbb.com", true }, - { "11ttee.com", true }, - { "11ttff.com", true }, { "11tthh.com", true }, { "11ttpp.com", true }, { "11ttqq.com", true }, @@ -726,22 +847,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "11tv.dp.ua", true }, { "11u15.com", true }, { "11urss.com", true }, - { "11yybb.com", true }, { "11yycc.com", true }, { "11yydd.com", true }, { "11yyee.com", true }, { "11yyjj.com", true }, { "11yykk.com", true }, { "11yyqq.com", true }, - { "11yyxx.com", true }, - { "11zzdd.com", true }, { "11zzkk.com", true }, { "11zztt.com", true }, - { "11zzyy.com", true }, { "12.ag", true }, + { "12.digital", true }, + { "1200.cf", true }, { "12006.com", true }, { "120percent-inc.com", true }, - { "1211bet.com", true }, { "1212.tk", true }, { "1212873467.rsc.cdn77.org", true }, { "1218641649.rsc.cdn77.org", true }, @@ -776,7 +894,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1220350.com", true }, { "1222z6.com", true }, { "1223.tk", true }, - { "122474487139.xyz", true }, { "123-d.com", true }, { "123-ticketsystem.com", true }, { "123.chat", true }, @@ -789,9 +906,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "12345678365.com", true }, { "123456789365.com", true }, { "12345porn.com", true }, + { "12356.xyz", true }, { "1236.be", true }, { "12365t.com", true }, - { "123ali.ir", true }, + { "123apps.com", true }, { "123apps.net", true }, { "123birthdaygreetings.com", true }, { "123comparer.be", true }, @@ -801,28 +919,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "123e.tk", true }, { "123freebrushes.com", true }, { "123freevectors.com", true }, + { "123gostovanje.si", true }, { "123greeting.tk", true }, + { "123host.com.au", true }, { "123hpcom.co.uk", true }, - { "123mac.com", true }, { "123midterm.com", true }, + { "123moviesonline.org", true }, { "123noticias.com.br", true }, { "123nutricion.es", true }, { "123pay.ir", true }, { "123seo.ml", true }, { "123site.tk", true }, - { "123soldcash.com", true }, + { "123sportpassion.com", true }, { "123start.pl", true }, { "123start.tk", true }, + { "123storage.com.au", true }, { "123termpapers.com", true }, { "123verhuislift.nl", true }, { "123viajando.com", true }, + { "123womenslife.com", true }, { "123writings.com", true }, - { "123z6.com", true }, { "124133.com", true }, { "1244.tk", true }, { "1244546066.rsc.cdn77.org", true }, - { "124633.com", true }, - { "1248.ink", true }, { "125-rue.com", true }, { "12517.com", true }, { "12554.com", true }, @@ -832,27 +951,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "12588.com", true }, { "125colours.tk", true }, { "125m125.de", true }, - { "1266bet.com", true }, { "127011.ch", true }, { "127661.com", true }, { "12778.com", true }, { "1277bet.com", true }, + { "128012.com", true }, + { "128612.com", true }, { "12877.com", true }, { "1288366.com", true }, - { "129.co", false }, - { "1299bet.com", true }, + { "128bitar.net", true }, + { "129.co", true }, { "12ag8.com", true }, + { "12apostleshotel.com", true }, + { "12go.asia", true }, + { "12go.co", true }, { "12gramu.cz", true }, { "12grid.co.jp", true }, { "12l.nl", true }, { "12lasee.com", true }, + { "12minprep.com", true }, { "12nomos.tk", true }, + { "12photos.eu", false }, { "12socialsmansa.tk", true }, - { "12thmanrising.com", true }, { "12train.com", true }, { "12u15.com", true }, + { "12vpx.com", true }, { "13-th.com", true }, { "130.ua", false }, + { "1300.cf", true }, { "130kb.com", true }, { "130ks.com", true }, { "130ks.net", true }, @@ -860,18 +986,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "131365qq.com", true }, { "1313z6.com", true }, { "13214.cc", true }, - { "132ks.com", true }, + { "132813.com", true }, { "132kv.ch", true }, { "133.casino", true }, { "13318522.com", true }, + { "1333.cf", true }, { "133335.xyz", true }, { "1333z6.com", true }, + { "1337.ax", true }, { "133769.xyz", true }, { "1337ersprime.com", true }, - { "133846.xyz", true }, { "133ks.com", true }, { "133ks.net", true }, { "133z6.com", true }, + { "13411-111.com", true }, { "134ks.net", true }, { "1359826938.rsc.cdn77.org", true }, { "135vv.com", true }, @@ -891,37 +1019,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "139z6.com", true }, { "13ad.de", true }, { "13ag8.com", true }, + { "13cloudmike.duckdns.org", true }, { "13th-dover.uk", true }, { "13u15.com", true }, + { "140.social", true }, { "14000.cz", true }, + { "141-94-142-218.xyz", true }, + { "141-95-156-101.xyz", true }, + { "141145.com", false }, { "14159.gb.net", true }, { "142552.com", false }, - { "143533.com", true }, - { "143633.com", true }, - { "143733.com", true }, - { "143933.com", true }, + { "142710.com", true }, + { "1428elm.com", true }, + { "144-217-180-114.xyz", true }, { "144chan.ml", true }, { "1453914078.rsc.cdn77.org", true }, - { "145433.com", true }, - { "145733.com", true }, + { "1459.io", true }, { "145ks.net", true }, - { "146433.com", true }, { "1464424382.rsc.cdn77.org", true }, - { "146533.com", true }, - { "146552.com", true }, - { "146733.com", true }, + { "146552.com", false }, + { "1481481.com", false }, { "1481486.com", true }, { "1481486.net", true }, { "148663.com", true }, - { "149733.com", true }, + { "149481.com", true }, { "14er.jp", true }, { "14er.net", true }, { "14erc.com", true }, { "14ercooper.com", true }, + { "14fbr.com", true }, { "14flags.de", true }, { "14it.de", true }, { "14u15.com", true }, { "14x3.de", true }, + { "15-montorgueil.com", true }, { "1511774230.rsc.cdn77.org", true }, { "1517.ch", true }, { "1517598.com", true }, @@ -970,19 +1101,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1520348.com", true }, { "1520349.com", true }, { "1520350.com", true }, - { "152433.com", true }, { "1527web.com", true }, { "152z6.com", true }, { "1536.cf", true }, { "153z6.com", true }, - { "154233.com", true }, - { "154552.com", false }, + { "154379.com", true }, { "154922.com", false }, - { "154933.com", true }, { "155175.com", false }, { "155ks.net", true }, { "155z6.com", true }, - { "156433.com", true }, { "156k66.com", true }, { "156z6.com", true }, { "157z6.com", true }, @@ -992,11 +1119,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "159ks.com", true }, { "159ks.net", true }, { "159z6.com", true }, + { "15k.me", true }, + { "15montorgueil.com", true }, + { "15october.net", true }, + { "15ruemontorgueil.com", true }, { "15u15.com", true }, { "16-qw.tk", true }, { "1600esplanade.com", true }, - { "161233.com", true }, - { "161263.com", true }, + { "161233.com", false }, + { "161263.com", false }, { "16164f.com", true }, { "16195.com", true }, { "1620301.com", true }, @@ -1042,22 +1173,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1620343.com", true }, { "1620349.com", true }, { "1620350.com", true }, - { "162223.com", true }, - { "162229.com", true }, + { "162263.com", false }, { "162361.com", false }, { "162632.com", true }, { "162cr.com", true }, { "162ea.com", true }, { "162jonesrd.ca", true }, { "163.gd", true }, + { "163132.com", false }, { "16321.tk", true }, { "163noticias.com.br", false }, { "163pay.com", true }, { "164.co", true }, { "1644091933.rsc.cdn77.org", true }, + { "1650thefan.com", true }, + { "16561155.com", true }, + { "16561166.com", true }, + { "16561177.com", true }, + { "16561188.com", true }, { "1661237.com", true }, { "166166.com", true }, { "166jk.cc", true }, + { "167clan.net", true }, { "16836500.com", true }, { "1683651.com", true }, { "16836511.com", true }, @@ -1073,11 +1210,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1683659.com", true }, { "16836599.com", true }, { "168365t.com", true }, - { "168bet9.com", true }, { "168esb.com", true }, - { "168fff.cc", true }, { "168z6.com", true }, { "168zz.cc", true }, + { "16974.cc", true }, { "169xpj.com", true }, { "16megablast.tk", true }, { "16packets.com", true }, @@ -1159,24 +1295,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1720348.com", true }, { "1720349.com", true }, { "1720350.com", true }, + { "173.studio", true }, { "174.net.nz", true }, { "174343.com", true }, { "1750studios.com", false }, + { "175dt.com", true }, { "175k8.com", false }, - { "175ks.com", true }, - { "1768calc.com.au", true }, - { "178ks.net", true }, { "17901.com", true }, { "17920.com", true }, { "17921.com", true }, - { "17avolemsaberlaveritat.cat", true }, { "17kpw.cc", true }, { "17kpw.com", true }, { "17th-airborne.tk", true }, { "17u15.com", true }, { "17xile.com", true }, + { "1800-mattress.net", true }, { "1800baskets.com", true }, - { "1800shutters.com", true }, + { "1800flowers.com", true }, + { "1800matress.net", true }, + { "1800mattress.co", true }, + { "1800mattress.net", true }, + { "1800petmeds.com", true }, { "180btt.com", true }, { "180k8.com", true }, { "181k8.com", true }, @@ -1230,7 +1369,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1820348.com", true }, { "1820349.com", true }, { "1820350.com", true }, - { "182162.com", true }, { "182k8.com", true }, { "182wh.com", true }, { "182zlong.com", true }, @@ -1244,10 +1382,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "18521.com", true }, { "185k8.com", true }, { "186526.club", true }, - { "186526.top", true }, { "186526.xyz", true }, + { "186588.xyz", true }, { "1869365.com", false }, - { "186kb.com", true }, { "186ks.com", true }, { "1876365.com", false }, { "1876996.com", true }, @@ -1258,13 +1395,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "188wei.com", true }, { "189fc.com", true }, { "18f.gov", true }, - { "18f.gsa.gov", false }, - { "18nsj.tokyo", true }, + { "18f.gsa.gov", true }, + { "18kit.com", true }, { "18onlypixel.com", true }, { "18onlypixels.com", true }, { "18pee.com", true }, { "18pioners.tk", true }, + { "18porn.cc", true }, + { "18teensporn.pro", true }, { "18upchat.com", true }, + { "18vr.com", true }, { "1901.cz", true }, { "1911trust.com", true }, { "1912x.com", true }, @@ -1283,22 +1423,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1941-45.ru", true }, { "1965.ml", true }, { "196flavors.com", true }, - { "1972969867.rsc.cdn77.org", true }, + { "19770620.xyz", true }, { "197k8.com", true }, { "1981365.com", true }, { "1981612088.rsc.cdn77.org", true }, { "1986ventures.ph", true }, { "1989-bmw-e30-forsale-in-norcal.com", true }, { "1989studio.tk", true }, - { "198ks.net", true }, { "198wei.com", true }, { "1990.ee", true }, - { "1994.io", true }, + { "1994.io", false }, { "1999.rs", true }, { "19990bb.com", true }, { "19990c.com", true }, { "19990cc.com", true }, - { "19990d.com", true }, + { "19990d.com", false }, { "19990dd.com", true }, { "19990e.com", true }, { "19990ee.com", true }, @@ -1336,10 +1475,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "19990zz.com", true }, { "199ks.com", true }, { "19area.cn", true }, - { "19gold.com", true }, { "19hundert84.de", true }, - { "19qq.vip", true }, { "1a-diamantscheiben.de", true }, + { "1a-hyp.de", true }, { "1a-media.com", true }, { "1a-werkstattgeraete.de", true }, { "1ab-machinery.com", true }, @@ -1347,6 +1485,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1adda.tk", true }, { "1ae86.com", true }, { "1ago.be", true }, + { "1ahyp.de", true }, { "1allhosting.com", true }, { "1android.de", true }, { "1apple.com", true }, @@ -1354,14 +1493,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1aweb.de", true }, { "1b1.pl", true }, { "1baks.tk", true }, - { "1bis.ru", true }, { "1bitcoinprice.com", true }, { "1blazing.cf", true }, + { "1bps.io", true }, { "1brd.com", true }, { "1breadcrumb.com", true }, { "1breadcrumb.com.au", true }, { "1c-power.ru", true }, - { "1casino-online-games.com", true }, { "1chan.pl", true }, { "1codex.online", true }, { "1cover.co.nz", true }, @@ -1369,7 +1507,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1cprosto.tk", true }, { "1cswd.com", true }, { "1datatec.com", true }, + { "1day.cc", false }, { "1day1ac.red", true }, + { "1dispatch.com", true }, { "1dollar.ml", true }, { "1dollarwebsite.gq", true }, { "1dot1dot1dot1.cf", true }, @@ -1379,14 +1519,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1earn.com", true }, { "1er-secours.ch", false }, { "1f123.net", true }, + { "1f616emo.xyz", true }, { "1fastcourse.com", true }, - { "1fax.com", true }, { "1fc0.org", true }, { "1fresh.com", true }, { "1g.gg", true }, { "1gp.us", true }, { "1hc.be", true }, { "1heart.tk", true }, + { "1heiz-pellets.de", true }, { "1hfree.tk", true }, { "1huiszoeken.nl", true }, { "1ii.im", true }, @@ -1407,7 +1548,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1malaysian.tk", true }, { "1masquepourtous.com", true }, { "1me.cz", true }, - { "1meditat.com", true }, { "1montre.fr", true }, { "1naturalway.com", true }, { "1nf.me", true }, @@ -1416,18 +1556,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1on1on1.de", true }, { "1on1on1.tv", true }, { "1onehouse.com", true }, + { "1onestrong.com", true }, + { "1opochkah.ru", true }, { "1p.cl", true }, { "1p.ro", false }, { "1pair.com", true }, { "1panorama.ru", true }, { "1para.net", true }, { "1password.ca", true }, - { "1password.com", true }, + { "1password.com", false }, { "1password.community", true }, { "1password.eu", true }, { "1picture.hu", true }, { "1plus.red", true }, { "1pluss.ee", true }, + { "1profile.ru", true }, { "1project.com", true }, { "1pw.ca", true }, { "1q2w.nl", true }, @@ -1440,6 +1583,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1scope.com", true }, { "1se.co", true }, { "1se2or3.com", true }, + { "1secretaire.com", true }, + { "1serial.tv", true }, { "1sociaaldomein.nl", true }, { "1st-bounce.co.uk", true }, { "1st-community.de", true }, @@ -1452,40 +1597,239 @@ static const nsSTSPreload kSTSPreloadList[] = { { "1stclassbouncycastles.co.uk", true }, { "1stforfun.co.uk", true }, { "1stpeninsulabouncers.co.uk", true }, + { "1strecipes.com", true }, { "1ststop.co.uk", true }, + { "1sttix.org", true }, { "1ticks.com", true }, { "1tip.com", true }, + { "1tomplumber.com", true }, { "1u0m.com", true }, { "1up.it", true }, + { "1uptick.com", true }, { "1v1.xyz", true }, { "1v9.im", true }, - { "1v9.io", true }, { "1volcano.ru", true }, { "1voz.org", true }, { "1vpns.com", true }, + { "1vs2.by", true }, { "1way.faith", true }, { "1whw.co.uk", true }, { "1whw.uk", true }, { "1wirelog.de", true }, - { "1wl.uk", true }, + { "1x-00.com", true }, + { "1x-01.com", true }, + { "1x-04.com", true }, + { "1x-bet-co.com", true }, + { "1x-bet-ua.com", true }, + { "1x-bet-uz.com", true }, + { "1x-bet.com", true }, + { "1x-bet.ke", true }, + { "1x-bet2021.com", true }, + { "1x-bet93432.world", true }, + { "1x-betua.com", true }, + { "1x-bit.mobi", true }, + { "1x-kor.com", true }, + { "1x-korbet.com", true }, + { "1x-krbet.com", true }, + { "1x-mirrors.com", true }, + { "1x-th.com", true }, { "1x1.re", true }, + { "1x2020.xyz", true }, { "1x2betwinner.com", true }, { "1x2magazine.eu", true }, + { "1x88.net", true }, + { "1xaja.com", true }, + { "1xb88.net", true }, + { "1xbenar.com", true }, + { "1xbet-015.com", true }, + { "1xbet-66669.top", true }, + { "1xbet-china.com", true }, + { "1xbet-ro.com", true }, + { "1xbet-s.com", true }, + { "1xbet-se.com", true }, + { "1xbet-sw.com", true }, + { "1xbet-tr4.com", true }, + { "1xbet-uz.com", true }, + { "1xbet-viet.com", true }, + { "1xbet.ac", true }, + { "1xbet.ae", true }, + { "1xbet.af", true }, + { "1xbet.bo", true }, + { "1xbet.cd", true }, + { "1xbet.cg", true }, + { "1xbet.ci", true }, + { "1xbet.cm", true }, + { "1xbet.co.ke", true }, + { "1xbet.co.ls", true }, + { "1xbet.co.mu", true }, + { "1xbet.co.rw", true }, + { "1xbet.co.zw", true }, { "1xbet.com", true }, + { "1xbet.com.gh", true }, { "1xbet.com.mx", true }, + { "1xbet.com.na", true }, + { "1xbet.com.tw", true }, + { "1xbet.com.zm", true }, + { "1xbet.cr", true }, + { "1xbet.do", true }, + { "1xbet.ec", true }, + { "1xbet.fi", true }, + { "1xbet.games", true }, + { "1xbet.gd", true }, + { "1xbet.gf", true }, + { "1xbet.global", true }, + { "1xbet.gm", true }, + { "1xbet.go.ug", true }, + { "1xbet.gq", true }, + { "1xbet.gs", true }, + { "1xbet.gt", true }, + { "1xbet.gw", true }, + { "1xbet.hk", true }, + { "1xbet.hn", true }, + { "1xbet.ht", true }, { "1xbet.in", true }, { "1xbet.ke", true }, { "1xbet.kz", true }, + { "1xbet.lat", true }, + { "1xbet.mg", true }, + { "1xbet.mq", true }, + { "1xbet.mw", true }, + { "1xbet.na", true }, + { "1xbet.ne.ug", true }, + { "1xbet.net.za", true }, { "1xbet.ng", true }, + { "1xbet.nu", true }, + { "1xbet.org.mw", true }, + { "1xbet.org.na", true }, + { "1xbet.pe", true }, + { "1xbet.ph", true }, + { "1xbet.pk", true }, + { "1xbet.pn", true }, + { "1xbet.ps", true }, + { "1xbet.rw", true }, + { "1xbet.sb", true }, + { "1xbet.sc", true }, + { "1xbet.sc.ug", true }, + { "1xbet.sh", true }, + { "1xbet.sl", true }, + { "1xbet.sn", true }, + { "1xbet.sr", true }, + { "1xbet.tc", true }, + { "1xbet.td", true }, + { "1xbet.tj", true }, + { "1xbet.tl", true }, + { "1xbet.to", true }, + { "1xbet.ug", true }, + { "1xbet.vg", true }, + { "1xbet.vu", true }, + { "1xbet1.com", true }, + { "1xbet101.com", true }, + { "1xbet102.com", true }, + { "1xbet105.com", true }, + { "1xbet12.com", true }, + { "1xbet13.com", true }, + { "1xbet14.com", true }, + { "1xbet15.com", true }, + { "1xbet172345.top", true }, + { "1xbet2.com", true }, + { "1xbet26.com", true }, + { "1xbet27.com", true }, + { "1xbet3.com", true }, + { "1xbet352575.top", true }, + { "1xbet359348.top", true }, + { "1xbet36.com", true }, + { "1xbet4.com", true }, + { "1xbet50.com", true }, + { "1xbet6.com", true }, + { "1xbet657113.top", true }, + { "1xbet7.com", true }, + { "1xbet733390.top", true }, + { "1xbet8.com", true }, + { "1xbet82.com", true }, + { "1xbet84.com", true }, + { "1xbet88.net", true }, + { "1xbet9.com", true }, + { "1xbet928606.top", true }, { "1xbetapk.com", true }, + { "1xbetasia2018.com", true }, + { "1xbetasia2018.net", true }, + { "1xbetasia2018.space", true }, + { "1xbetbk16.com", true }, + { "1xbetbk17.com", true }, + { "1xbetbk2.com", true }, + { "1xbetbk4.com", true }, + { "1xbetbk6.com", true }, + { "1xbetbola.com", true }, + { "1xbetet.com", true }, + { "1xbetga.com", true }, + { "1xbethp.com", true }, + { "1xbetjap.com", true }, + { "1xbetkk.com", true }, + { "1xbetkor.com", true }, + { "1xbetkr.com", true }, + { "1xbetkr1.com", true }, + { "1xbetmm.com", true }, + { "1xbetqq.com", true }, + { "1xbetsd.com", true }, + { "1xbetst.com", true }, + { "1xbetsz.com", true }, + { "1xbettz.com", true }, + { "1xbetua.com", true }, + { "1xbit.com", true }, + { "1xbit1.com", true }, + { "1xbit4.com", true }, + { "1xbit5.com", true }, + { "1xbk.mobi", true }, + { "1xbkbet3.com", true }, + { "1xbkbet4.com", true }, + { "1xcinta.com", true }, { "1xde.com", true }, + { "1xfast.com", true }, + { "1xfifa.com", true }, + { "1xgames.online", true }, + { "1xgokil.com", true }, + { "1xir-red.com", true }, + { "1xj.net", true }, + { "1xjago.com", true }, + { "1xjkt.com", true }, + { "1xjuara.com", true }, + { "1xmakati.com", true }, + { "1xmalaysia.com", true }, + { "1xmaubix.com", true }, + { "1xmenang.com", true }, + { "1xmob1pl.top", true }, + { "1xmobi.com", true }, + { "1xmyanmar.net", true }, + { "1xpartners.com", true }, + { "1xraja.com", true }, + { "1xraya.com", true }, + { "1xrindu.com", true }, + { "1xsinga.com", true }, + { "1xslot-ua.com", true }, + { "1xslot.casino", true }, + { "1xslot.space", true }, + { "1xslot2.xyz", true }, + { "1xslot3.com", true }, + { "1xslot6.xyz", true }, + { "1xslot7.xyz", true }, + { "1xslot76161.com", true }, + { "1xslotpartners.com", true }, + { "1xslotspartners.com", true }, + { "1xsport.mobi", true }, + { "1xspport.mobi", true }, { "1xstavka.ru", true }, + { "1xsukan.com", true }, + { "1xsultan.com", true }, + { "1xsultanah.com", true }, { "1xtranslate.com", true }, + { "1xvhy.xyz", true }, { "1zagon.tk", true }, { "1zavse.si", true }, + { "1zwolle.nl", true }, { "2-ae.com", true }, { "2-euromuenzen.de", true }, - { "2.ag", true }, + { "2-faktor-betaling.dk", true }, + { "2.pe", true }, { "2.wtf", true }, { "20-jahre-auslandsdienst.tk", true }, { "200.ee", true }, @@ -1500,19 +1844,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "20071019780415.com", true }, { "2007nea.tk", true }, { "200fcw.com", true }, + { "200mmx.net", true }, { "200pppp.com", true }, { "2012.ovh", true }, { "2012review.tk", true }, { "2013review.tk", true }, { "20140301.xyz", true }, - { "20150412.xyz", true }, { "2015review.tk", true }, { "2016.ga", true }, { "2016.tk", true }, - { "2017c.com", true }, { "2018-frisuren.tk", true }, { "2018.wales", true }, { "2018fifaworldcup.tk", true }, + { "2020cadillac.com", true }, + { "2020spaces.com", true }, { "2021.dog", true }, { "2021bleibtsernst.at", true }, { "2021sb.com", true }, @@ -1534,12 +1879,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2033a.com", true }, { "2033c.com", true }, { "2033z.com", true }, + { "203700.com", true }, { "204504byse.info", true }, { "2048-spiel.de", true }, + { "207708.com", true }, { "208.es", true }, { "2083236893.com", true }, + { "208930.com", true }, { "208garfield.com", true }, - { "208wns.com", true }, { "20at.com", true }, { "20denier.com", true }, { "20four7va.com", true }, @@ -1551,14 +1898,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2113.ch", true }, { "2122bet.com", true }, { "2132vip.com", true }, + { "2137.eu", true }, { "2138vip.com", true }, { "213k8.com", true }, { "21566365.com", false }, - { "215advisors.com", true }, - { "215dy.net", true }, + { "215advisors.com", false }, { "218strand.com", true }, { "219k8.com", true }, - { "21cbd.com", true }, + { "21appart.com", true }, { "21ce.com", true }, { "21domain.com", true }, { "21done.ph", true }, @@ -1569,27 +1916,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "21god.com", true }, { "21gou.com", true }, { "21green.com", true }, - { "21hours.com", true }, { "21isp.com", true }, { "21jobs.com", true }, + { "21kampus.com", true }, + { "21lab.co", true }, { "21love.com", true }, - { "21new.com", true }, { "21nurse.com", true }, { "21ol.com", true }, - { "21pet.com", true }, { "21photo.com", true }, - { "21property.com", true }, - { "21risk.com", true }, - { "21rocs.com", true }, + { "21risk.com", false }, + { "21run.com", true }, { "21soccer.com", true }, { "21stcenturycarpentry.com.au", true }, { "21stcenturyoptics.com", true }, + { "21stnc.us", true }, { "21tax.com", true }, { "21up.com", true }, { "21venture.com", true }, + { "22-bets.org", true }, + { "22-gradusa.ru", true }, + { "22007apply.gov", true }, { "220220.de", true }, { "220control.ru", true }, + { "2211.cf", true }, { "22168365.com", true }, + { "221791.com", true }, { "221b.store", true }, { "222001.com", true }, { "222138vip.com", true }, @@ -1597,16 +1948,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "222321365.com", false }, { "2226321.com", true }, { "2227552.com", true }, - { "222b58.com", false }, { "222bet86.com", true }, { "222k8.net", true }, { "222tips.com", true }, { "225485.com", true }, { "2255motion.com", true }, + { "225950.com", true }, { "2264707.ru", true }, { "2277bet.com", true }, { "228668.com", true }, - { "22884.org", true }, { "2288422.com", true }, { "2288499.com", true }, { "22884a.com", false }, @@ -1617,7 +1967,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "22884f.com", false }, { "22884g.com", false }, { "22884h.com", false }, - { "22994.org", true }, { "2299411.com", true }, { "2299422.com", true }, { "2299433.com", true }, @@ -1626,13 +1975,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2299477.com", true }, { "2299488.com", true }, { "22b58.com", true }, + { "22bet-top.com", true }, + { "22bet.co.ke", true }, { "22bet.com", true }, { "22bet.ng", true }, { "22bet86.com", true }, { "22betglobal.com", true }, + { "22betpartners.com", true }, + { "22bets.me", true }, { "22ccaa.com", true }, { "22d.io", true }, { "22delta.com", true }, + { "22emesiecle.com", true }, + { "22ffaaa.com", true }, + { "22ffbbb.com", true }, + { "22ffccc.com", true }, + { "22ffddd.com", true }, + { "22ffeee.com", true }, + { "22fffaa.com", true }, + { "22fffbb.com", true }, + { "22fffcc.com", true }, + { "22fffdd.com", true }, + { "22fffee.com", true }, + { "22fffgg.com", true }, + { "22fffhh.com", true }, + { "22fffii.com", true }, + { "22fffjj.com", true }, + { "22fffkk.com", true }, + { "22fffll.com", true }, + { "22fffmm.com", true }, + { "22fffnn.com", true }, + { "22fffoo.com", true }, + { "22fffpp.com", true }, + { "22fffqq.com", true }, + { "22fffrr.com", true }, + { "22fffss.com", true }, + { "22ffftt.com", true }, + { "22fffuu.com", true }, + { "22fffvv.com", true }, + { "22fffww.com", true }, + { "22fffxx.com", true }, + { "22fffyy.com", true }, + { "22fffzz.com", true }, + { "22ffggg.com", true }, + { "22ffhhh.com", true }, + { "22ffiii.com", true }, + { "22ffjjj.com", true }, + { "22ffkkk.com", true }, + { "22fflll.com", true }, + { "22ffmmm.com", true }, + { "22ffnnn.com", true }, + { "22ffooo.com", true }, + { "22ffppp.com", true }, + { "22ffqqq.com", true }, + { "22ffrrr.com", true }, + { "22ffsss.com", true }, + { "22ffttt.com", true }, + { "22ffuuu.com", true }, + { "22ffvvv.com", true }, + { "22ffwww.com", true }, + { "22ffxxx.com", true }, + { "22ffyyy.com", true }, + { "22ffzzz.com", true }, + { "22hd.ru", true }, { "22i.co.uk", true }, { "22lc8.com", false }, { "22momo.com", true }, @@ -1657,9 +2062,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "22yyrr.com", true }, { "22yyss.com", true }, { "22yytt.com", true }, + { "230594.com", true }, { "230beats.com", true }, { "232192.com", true }, - { "2322bet.com", true }, { "233.be", true }, { "233.land", true }, { "233.services", true }, @@ -1667,54 +2072,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "233333.ga", true }, { "233356.xyz", false }, { "2333blog.com", true }, + { "2333boy.com", true }, { "2333hub.com", true }, { "2333z6.com", true }, { "23365t.com", true }, - { "2337365.com", false }, { "233abc.com", false }, { "233blog.com", true }, { "233boy.com", true }, + { "233boy.net", true }, + { "233boy.org", true }, { "233hub.com", true }, { "233hub.net", true }, { "233hub.org", true }, { "233hugo.com", true }, { "233image.land", true }, + { "233leyuan.top", true }, { "233ss.net", true }, { "233try.com", true }, { "233v2.com", true }, { "233vps.com", true }, + { "234.fi", true }, { "2340365.com", false }, - { "23436565.com", true }, + { "2345.lgbt", true }, { "2345666365.com", false }, { "2345678365.com", true }, { "23456789365.com", false }, { "2346321.com", true }, { "2347porthcawlatc.tk", true }, - { "235551.com", true }, { "235u.net", true }, { "236530.com", true }, { "236560.com", true }, { "236570.com", true }, - { "2366bet.com", true }, - { "2377bet.com", true }, - { "238212.com", true }, - { "2399bet.com", true }, + { "238923.com", true }, + { "23andme.com", true }, + { "23andme.io", true }, { "23ks.app", true }, { "24-7.fi", true }, { "24-7.jp", true }, + { "24-7intouch.com", true }, { "24-restore.com", true }, - { "24.ie", true }, + { "240786.com", true }, { "241552.com", true }, { "242552.com", true }, + { "243581.com", true }, + { "2444.cf", true }, + { "244821.com", true }, { "245990.xyz", true }, { "245meadowvistaway.com", false }, { "246060.ru", true }, { "247a.co.uk", true }, { "247able.com", true }, + { "247analsex.com", true }, + { "247asiansex.com", true }, { "247bar.fr", true }, - { "247computersupport.net", true }, + { "247bigboobs.com", true }, + { "247butts.com", true }, + { "247cumshots.com", true }, { "247dns.net", true }, { "247healthshop.com", true }, + { "247maturesex.com", true }, { "247medplan.com", true }, { "247megamart.com.au", true }, { "247naijabuzz.com", true }, @@ -1757,27 +2173,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "24fan.com", true }, { "24gazette.ga", true }, { "24gis.com", true }, + { "24go.me", true }, { "24h.com.br", true }, - { "24heaven.com", true }, { "24hod.com", true }, { "24hour-locksmithsanantonio.com", true }, { "24hourcyclist.co.uk", true }, - { "24hourelectricalservices.co.uk", true }, { "24hourlocksmithdallastx.com", true }, - { "24hourlocksmithhoustontx.com", true }, { "24hourlocksmithspring.com", true }, { "24hourscienceprojects.com", true }, - { "24hunter.com", true }, + { "24hrbrandbash.com", true }, { "24images.com", true }, - { "24kbet.com", true }, + { "24k.co.jp", true }, { "24livene.com", true }, { "24london.com", true }, { "24meg.com", true }, { "24monitor.com", true }, - { "24motor.com", true }, { "24ohrana.com", true }, { "24onlain.tk", true }, - { "24onlinereview.com", true }, { "24read.com", true }, { "24see.com", true }, { "24share.com", true }, @@ -1787,10 +2199,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "24vod.com", true }, { "24webserver.eu", true }, { "24webservice.nl", true }, - { "24zpravy.cz", true }, + { "24x7aircargoservices.co.in", true }, + { "2500.cf", true }, { "2502.net", true }, { "250708.com", true }, { "2525admin.nl", true }, + { "253007.com", true }, + { "253325.com", true }, { "254vc.ml", true }, { "2555z6.com", true }, { "255k8.com", true }, @@ -1799,6 +2214,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "258management.cf", true }, { "258management.ga", true }, { "258management.ml", true }, + { "259454.com", true }, { "259885.com", true }, { "25may.tk", true }, { "25oclock.com", true }, @@ -1809,9 +2225,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2600hq.com", true }, { "2601.de", true }, { "260150.com", true }, + { "261082.com", true }, { "262569.com", true }, { "263email.com", true }, { "263mail.com", true }, + { "267326.com", true }, + { "268162.com", true }, { "269196.com", true }, { "2698pacificave.com", true }, { "26bbc.com", true }, @@ -1820,51 +2239,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "26uuu.us", true }, { "27.gay", true }, { "27000.best", true }, + { "271624.com", true }, { "2718282.net", true }, { "272live.com", true }, + { "275004.com", true }, + { "275763.com", true }, + { "276112.com", false }, { "27728522.com", true }, { "277z6.com", true }, { "27lx.me", true }, { "27skycake.com", true }, { "28-industries.com", true }, - { "281116.com", true }, + { "280.social", true }, { "281180.de", true }, { "281ks.com", true }, { "282ks.com", true }, + { "283228.com", true }, { "28365cn-365.com", true }, + { "283928.com", true }, { "28428.com", false }, { "284365.com", true }, - { "285551.com", true }, - { "2858958.com", true }, + { "285128.com", true }, + { "285928.com", true }, + { "287328.com", true }, + { "287628.com", true }, { "2881dh.com", true }, + { "288628.com", true }, { "288cn-563.com", true }, { "288game.net", true }, { "288k8.com", true }, + { "2890.ltd", true }, + { "289728.com", true }, { "28spots.net", true }, { "291167.xyz", true }, { "2912.nl", true }, - { "29227.com", true }, + { "293685.com", true }, { "2948.ca", true }, { "297computers.com", true }, { "2991236.com", true }, { "299ks.com", true }, - { "299ks.net", true }, { "299zzz.com", true }, + { "29a.ch", true }, { "29dejuniode1997.tk", true }, { "2ae86.com", true }, - { "2au.ru", true }, { "2b2b.pro", true }, { "2b2t.fi", true }, - { "2badvintage.tk", true }, { "2bas.nl", true }, { "2bcompany.ch", false }, { "2bet86.com", true }, { "2bis10.de", true }, + { "2bitboer.com", true }, { "2bitout.com", true }, { "2blazing.cf", true }, - { "2boost.com", true }, { "2bougie.com", true }, - { "2btv.eu", true }, { "2bu2t.online", true }, { "2bu2t.ru", true }, { "2buldzha2t.ru", true }, @@ -1876,28 +2303,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2c-t-7.com", true }, { "2c-t-8.com", true }, { "2cars.com", true }, - { "2cash.ru", true }, { "2cat.cc", true }, { "2cb.rocks", true }, { "2chan.eu", true }, { "2chan.jp", true }, + { "2chi1.com", true }, { "2choose.com", true }, + { "2class.eu.org", true }, { "2cv-co.be", true }, - { "2cv-fahrer.de", true }, { "2cvclubdepicardie.tk", true }, + { "2date4love.com", true }, + { "2daysmood.asia", true }, + { "2daysmood.eu", true }, + { "2daysmood.nl", true }, + { "2daysmood.us", true }, + { "2diets.ru", true }, { "2dk.info", true }, { "2dns.com", true }, { "2driver-ok.ml", true }, { "2earn-online.com", false }, { "2fa.directory", true }, - { "2feel.sk", true }, { "2finish.com", true }, { "2fm.ie", true }, { "2fm.radio", true }, { "2fr3.com", true }, { "2fraud.pro", true }, { "2free.com", true }, - { "2fusion.com", true }, { "2g1s.net", true }, { "2gallery.com", true }, { "2gen.com", true }, @@ -1915,32 +2346,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2insights.com", true }, { "2isk.in", true }, { "2jhb.com", true }, + { "2jtech.net", true }, { "2k2solutions.com", true }, { "2k7.link", true }, { "2kgwf.fi", true }, { "2kinds.tk", true }, { "2krueger.de", true }, + { "2ladd.com", true }, { "2learncomputing.ga", true }, { "2learncomputing.ml", true }, { "2leplace.fr", true }, { "2li.ch", true }, { "2link.ga", true }, + { "2logical.net", true }, + { "2mades.be", true }, + { "2manydits.com", true }, { "2manydots.nl", true }, { "2mb.solutions", true }, - { "2me.cl", false }, - { "2melo.fr", true }, + { "2mfitnessduo.com", true }, { "2milebridge.com", true }, { "2mileservice.com", true }, { "2mir.com", true }, { "2mkz.eu", true }, - { "2monkeysandme.com", true }, + { "2mp.ca", true }, { "2nains.ch", true }, { "2ndface.info", true }, { "2ndmileservice.com", true }, { "2ndtivertonscouts.tk", true }, { "2nerds1bit.com", true }, { "2nimpresores.es", true }, + { "2nodez.com", true }, { "2of.me", true }, + { "2one.one", true }, { "2or3.tk", true }, { "2pi.finance", true }, { "2pi.network", true }, @@ -1954,65 +2391,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "2target.com", true }, { "2tausend19.de", true }, { "2th.me", true }, + { "2think.org", true }, + { "2todrive.nl", true }, { "2travel8.world", true }, - { "2tuu.com", true }, { "2ulcceria.nl", true }, { "2url.link", true }, { "2ustyle.com", true }, { "2value.com", true }, + { "2vnews.com", true }, { "2vp-an.online", true }, { "2wheel.com", false }, { "2x.nu", true }, - { "2x2x.de", true }, { "2xgraphik.com", true }, { "2y.fi", true }, { "2y3x.com", true }, { "2yar.tk", true }, { "2yy.nl", true }, { "3-ae.com", true }, - { "3-dot-careapp1-146314.appspot.com", true }, { "3.sb", true }, { "30-v-minutu.ml", true }, - { "3000peaks.com", true }, { "3000security.co.uk", true }, { "30019cc.com", true }, { "3007337.com", true }, { "300jjjj.com", true }, + { "301.moe", true }, + { "301.one", false }, + { "301.sh", true }, { "301.technology", true }, - { "302422.com", true }, - { "3033888.com", true }, - { "303422.com", true }, + { "301334.com", true }, { "30375500.com", true }, { "30375533.com", true }, - { "304122.com", true }, - { "304322.com", true }, - { "304622.com", true }, { "3056999.com", true }, { "305westendassistedliving.com", true }, - { "309422.com", true }, + { "3078i.com", true }, { "30bet365.com", true }, + { "30daystosoc.com", true }, { "30deagosto.tk", true }, { "30for30podcasts.com", true }, { "30minut.com", true }, { "30nama1.tk", true }, { "30region.tk", true }, { "31-elagage.fr", true }, - { "310422.com", true }, - { "311186.com", true }, - { "311191.com", true }, { "3133bet.com", true }, - { "313422.com", true }, { "313xpj.com", false }, - { "314022.com", true }, - { "314122.com", true }, - { "314322.com", true }, - { "314522.com", true }, + { "314257.com", true }, { "314553.com", true }, - { "314622.com", true }, - { "314633.com", true }, { "315422.com", true }, { "315xpj.com", false }, - { "316433.com", true }, { "317811111.com", false }, { "317822222.com", false }, { "31783333.com", true }, @@ -2060,58 +2485,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3178yy.com", false }, { "3178yyy.com", true }, { "3178zzz.com", false }, + { "319064.com", true }, { "319k3.com", true }, { "319xpj.com", true }, - { "31du.cn", false }, { "31fss.com", true }, { "31fss.marketing", true }, { "31fss.net", true }, { "31fss.support", true }, - { "31fsspo.net", true }, { "320281.net", true }, + { "320331.com", false }, { "321132.com", true }, { "321666365.com", true }, { "321live.nl", true }, { "3233bet.com", true }, { "323kkk.com", true }, - { "324022.com", true }, - { "324122.com", true }, - { "324133.com", true }, - { "324522.com", true }, - { "324533.com", true }, - { "324922.com", true }, - { "325552.com", true }, { "325fss.marketing", true }, + { "326243.com", true }, { "3265623.com", true }, - { "329422.com", true }, { "32bet365.com", true }, { "32h.de", true }, { "32kk.edu.ee", true }, - { "32y.ru", true }, { "33-couvreur.fr", true }, { "33-elagage.fr", true }, { "33-km.ru", true }, { "3306.io", true }, + { "33132.com", true }, + { "33132a.com", true }, + { "33132b.com", true }, + { "33132c.com", true }, + { "33132d.com", true }, + { "33132e.com", true }, { "33138app.com", true }, { "33138vip.com", true }, { "33168365.com", true }, + { "331977.com", false }, + { "3332444.com", false }, { "333321365.com", false }, { "3333365t.com", true }, { "333365t.com", true }, { "3333k8.net", true }, { "3333ylc.cc", true }, { "3336321.com", true }, - { "33365t.com", true }, { "333bet86.com", true }, { "333capital.com", true }, + { "333capital.com.au", true }, { "33445111.com", true }, { "33445222.com", true }, { "33445444.com", true }, - { "3345.com", true }, { "335a.cc", false }, - { "3369p.com", true }, { "336yh.com", true }, - { "338393.com", true }, { "3389p.com", true }, { "338da.com", true }, { "338sa.com", true }, @@ -2119,75 +2541,92 @@ static const nsSTSPreload kSTSPreloadList[] = { { "33acac.com", true }, { "33b58.com", true }, { "33devici.ml", true }, + { "33ffaaa.com", true }, + { "33ffbbb.com", true }, + { "33ffccc.com", true }, + { "33ffddd.com", true }, + { "33ffeee.com", true }, + { "33fffaa.com", true }, + { "33fffbb.com", true }, + { "33fffcc.com", true }, + { "33fffdd.com", true }, + { "33fffee.com", true }, + { "33fffgg.com", true }, + { "33fffhh.com", true }, + { "33fffii.com", true }, + { "33fffjj.com", true }, + { "33fffkk.com", true }, + { "33fffll.com", true }, + { "33fffmm.com", true }, + { "33fffnn.com", true }, + { "33fffoo.com", true }, + { "33fffpp.com", true }, + { "33fffqq.com", true }, + { "33fffrr.com", true }, + { "33fffss.com", true }, + { "33ffftt.com", true }, + { "33fffuu.com", true }, + { "33fffvv.com", true }, + { "33fffww.com", true }, + { "33fffxx.com", true }, + { "33fffyy.com", true }, + { "33fffzz.com", true }, + { "33ffggg.com", true }, + { "33ffhhh.com", true }, + { "33ffiii.com", true }, + { "33ffjjj.com", true }, + { "33ffkkk.com", true }, + { "33fflll.com", true }, + { "33ffmmm.com", true }, + { "33ffnnn.com", true }, + { "33ffooo.com", true }, + { "33ffppp.com", true }, + { "33ffqqq.com", true }, + { "33ffrrr.com", true }, + { "33ffsss.com", true }, + { "33ffttt.com", true }, + { "33ffuuu.com", true }, + { "33ffvvv.com", true }, + { "33ffwww.com", true }, + { "33ffxxx.com", true }, + { "33ffyyy.com", true }, + { "33ffzzz.com", true }, { "33knkn.com", true }, { "33weishang.com", true }, + { "33zv.com", false }, { "33zxzx.com", true }, - { "34-restaurant.co.uk", true }, - { "340422.com", true }, - { "340622.com", true }, - { "340922.com", true }, - { "341422.com", true }, - { "341433.com", true }, - { "341533.com", true }, - { "341633.com", true }, - { "341733.com", true }, - { "341922.com", true }, - { "342022.com", true }, - { "342033.com", true }, - { "342922.com", true }, - { "342933.com", true }, - { "343022.com", true }, + { "342960.com", true }, { "3433bet.com", true }, - { "343622.com", true }, { "34365t.com", true }, - { "343722.com", true }, - { "343922.com", true }, + { "3444.cf", true }, { "34536565.com", false }, { "3455bet.com", true }, { "345666365.com", false }, { "3456666365.com", false }, { "345678365.com", true }, { "3456789365.com", true }, - { "346122.com", true }, - { "346233.com", true }, - { "346322.com", true }, - { "346422.com", true }, - { "346522.com", true }, - { "346533.com", true }, { "3466bet.com", true }, - { "346722.com", true }, - { "346922.com", true }, { "3473-wiki.de", true }, { "347552.com", true }, { "3477bet.com", true }, - { "348233.com", true }, { "348663.com", true }, - { "349022.com", true }, - { "349033.com", true }, - { "349433.com", true }, - { "349533.com", true }, { "34bg.com", true }, { "34ja.com", true }, { "34jw.com", true }, - { "34metiza.ru", true }, + { "34metiza.ru", false }, { "34nh.com", true }, { "34nj.com", true }, { "350.org", true }, - { "350422.com", true }, { "35089y.com", true }, { "351079.com", true }, - { "351113.com", true }, { "351365.com", true }, { "3539783.com", true }, - { "354022.com", true }, - { "354622.com", true }, - { "354633.com", true }, - { "354922.com", true }, - { "354933.com", true }, { "3555500.com", true }, { "3559365.com", true }, { "355fss.com", true }, - { "356433.com", true }, + { "356338.com", true }, + { "356338a.com", true }, + { "356338b.com", true }, { "357601.com", true }, { "35898a.com", true }, { "35898b.com", true }, @@ -2204,17 +2643,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "35898w.com", true }, { "35898x.com", true }, { "35898y.com", true }, + { "35mm.im", true }, { "35uj.com", true }, + { "35wsolutions.com", true }, { "360-ot.de", true }, { "3602020.xyz", true }, { "360365.com", true }, { "360bcty.com", true }, - { "360buyer.com", true }, - { "360china.com", true }, { "360cycling.com.br", true }, + { "360degreecloud.com", true }, { "360dental.com", true }, + { "360dialog.com", true }, { "360e-commerce.de", true }, { "360e-commerce.net", true }, + { "360ecogroup.com", true }, { "360ecommerce.de", true }, { "360ecommerce.net", true }, { "360faces.com", true }, @@ -2224,20 +2666,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "360kuvia.fi", true }, { "360now.com", true }, { "360organic.com", true }, + { "360primeview.ie", true }, { "360prokuvat.fi", true }, { "360rail.nl", true }, { "360spider.com", true }, - { "360stone.com", true }, - { "360sushi.com", true }, { "360system.com", true }, + { "360tr.com", true }, { "360trust.com", true }, { "360videoshare.com", true }, { "360vrs.com", true }, { "361116.com", true }, { "3615jacky.fr", true }, - { "363331.com", true }, { "364553.com", true }, - { "365.asia", true }, { "365.systems", true }, { "36506088.com", true }, { "36506099.com", true }, @@ -2281,7 +2721,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3654.vip", true }, { "3655053.com", true }, { "36554ll.com", false }, - { "36554mm.com", false }, { "3655612.com", false }, { "3655623.com", false }, { "3655634.com", false }, @@ -2304,6 +2743,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3656745.com", false }, { "3656778.com", false }, { "36587654321.com", true }, + { "365886.com", true }, + { "3658887654.com", false }, { "36594a.com", true }, { "36594b.com", true }, { "36594c.com", true }, @@ -2314,10 +2755,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "365air.com", true }, { "365beautyworld.com", true }, { "365blog.com", true }, + { "365canvas.com", true }, { "365check.com", true }, { "365cn-288.com", true }, { "365coupon.com", true }, - { "365daysreview.com", true }, { "365eib.com", true }, { "365eif.com", true }, { "365eil.com", true }, @@ -2328,15 +2769,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "365fast.com", true }, { "365healthworld.com", true }, { "365iosapp.com", false }, - { "365jeans.com", true }, { "365labs.cloud", true }, { "365nnnn.com", false }, { "365pet.com", true }, - { "365propertybuyer.co.uk", false }, { "365proxy.com", true }, { "365q01.com", true }, { "365r.co", false }, { "365sb-cn.com", true }, + { "365securitymg.com", true }, { "365skulls.com", true }, { "365slot.com", true }, { "365vision.com", true }, @@ -2352,19 +2792,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "365y6.com", false }, { "365y66.com", false }, { "365y7.com", false }, - { "365y77.com", true }, - { "365y9.com", true }, + { "365y77.com", false }, + { "365y9.com", false }, { "365y99.com", false }, { "365yapan.com", true }, { "365ypw.com", true }, - { "365yuwen.com", true }, { "365zg.org", true }, { "369369.xyz", true }, + { "369bin.com", true }, { "369dp.com", true }, { "369eq.com", true }, { "369ex.com", true }, + { "369ra.com", true }, { "369rr.com", true }, - { "36ag8.com", true }, { "36ga.com", true }, { "36ja.com", true }, { "36jn.com", true }, @@ -2375,93 +2815,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "36xk.com", true }, { "36xn.com", true }, { "36yf.com", true }, - { "370422.com", true }, - { "371422.com", true }, + { "370337.com", true }, + { "371037.com", true }, + { "371137.com", true }, + { "371437.com", true }, { "371cloud.com", false }, { "372bbb.com", true }, { "373.moe", true }, - { "373422.com", true }, - { "374933.com", true }, - { "375422.com", true }, + { "373521.com", true }, + { "374161.com", true }, + { "375337.com", true }, + { "375realty.com", true }, + { "376064.com", true }, + { "376937.com", true }, { "377625.com", true }, { "377632.com", true }, + { "377837.com", true }, { "377ks.com", true }, { "377zzz.com", true }, - { "37879.com", false }, + { "378537.com", true }, + { "378837.com", true }, { "37889658.com", false }, { "378901.com", true }, { "378902.com", true }, - { "378bbb.com", true }, + { "379237.com", true }, + { "379437.com", true }, + { "379637.com", true }, { "379700.com", true }, + { "379737.com", true }, { "3798.com", false }, { "37987.com", true }, { "37987d.com", true }, { "37987e.com", false }, { "37987f.com", false }, + { "379937.com", true }, { "379efss.com", true }, { "37zk.com", true }, { "37zw.com", true }, + { "3800.cf", true }, { "380111000.com", true }, { "380111777.com", true }, { "380222444.com", false }, - { "380422.com", true }, { "380805.com", true }, - { "381115.com", true }, { "38138938.com", true }, - { "382225.com", true }, { "38317.tk", true }, - { "3837a.com", false }, - { "3837app.com", false }, - { "3837app3837app.com", false }, - { "3837app3837app3837app.com", false }, - { "3837b.com", false }, - { "3837c.com", false }, - { "3837d.com", false }, - { "3837e.com", false }, - { "3837g.com", false }, - { "3837h.com", false }, - { "3837i.com", false }, - { "3837j.com", false }, { "3837k.com", false }, - { "3837l.com", false }, - { "3837m.com", false }, - { "3837n.com", false }, - { "3837o.com", false }, - { "3837p.com", false }, - { "3837q.com", false }, - { "3837r.com", false }, - { "3837s.com", false }, - { "3837u.com", false }, - { "3837v.com", false }, - { "3837w.com", false }, { "3837x.com", false }, - { "3837y.com", false }, - { "3837z.com", false }, { "383838.plus", true }, { "3838onndo.tk", true }, { "3839.ca", true }, { "383aaa.com", true }, + { "385833.com", true }, + { "387538.com", true }, { "3880p.com", true }, { "38888msc.com", true }, { "388da.com", true }, { "38irkutsk.tk", true }, - { "390422.com", true }, - { "391119.com", true }, + { "390539.com", true }, { "391231.com", true }, { "392365.com", false }, - { "392422.com", true }, + { "393239.com", true }, { "393335.ml", false }, - { "393422.com", true }, - { "394022.com", true }, - { "394122.com", true }, - { "394322.com", true }, { "394553.com", true }, - { "394622.com", true }, - { "394922.com", true }, + { "395039.com", true }, { "3957b.com", true }, { "3957d.com", true }, - { "3957f.com", true }, { "3957g.com", true }, + { "396039.com", true }, { "396228.com", false }, { "396301.com", false }, { "396303.com", false }, @@ -2470,7 +2890,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3963bb.com", true }, { "3963cc.com", false }, { "3963dd.com", false }, - { "396422.com", true }, + { "396539.com", true }, + { "397039.com", true }, { "3970a.com", true }, { "3970aa.com", true }, { "3970abc.com", true }, @@ -2480,7 +2901,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3970ccc.com", true }, { "3970d.com", true }, { "3970dd.com", true }, - { "3970ee.com", true }, { "3970f.com", true }, { "3970fa.com", true }, { "3970ff.com", true }, @@ -2506,7 +2926,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3970r.com", true }, { "3970s.com", true }, { "3970ss.com", true }, - { "3970t.com", true }, { "3970tt.com", true }, { "3970u.com", true }, { "3970uu.com", true }, @@ -2515,7 +2934,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3970w.com", true }, { "3970win.com", true }, { "3970ww.com", true }, - { "3970x.com", true }, { "3970xx.com", true }, { "3970y.com", true }, { "3970yes.com", true }, @@ -2523,6 +2941,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3970yy.com", true }, { "3970z.com", true }, { "3970zz.com", true }, + { "398039.com", true }, + { "399739.com", true }, + { "399839.com", true }, { "39news.tk", true }, { "39sihu.com", false }, { "39w66.com", true }, @@ -2534,12 +2955,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3ags.de", true }, { "3ameldaw.ml", true }, { "3amtoolbox.se", true }, + { "3arena.ie", true }, + { "3b-concept.fr", true }, { "3b.pm", true }, { "3bb365.com", true }, { "3bet86.com", true }, { "3bigking.com", true }, { "3blazing.cf", true }, - { "3c-d.de", true }, { "3candy.com", true }, { "3cbalance.pl", true }, { "3cc365.com", true }, @@ -2548,28 +2970,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3countiescastlehire.co.uk", true }, { "3creation.com", true }, { "3cs.ch", false }, + { "3cup90.com", true }, { "3d-animator.net", true }, { "3d-glow.de", true }, - { "3d-station.fr", false }, + { "3d-station.fr", true }, + { "3d47.com", true }, { "3dagentur.com", true }, { "3danimation.tk", true }, { "3dapartment.com", true }, { "3dc9.jp", true }, { "3dcaipiao.com", true }, { "3dcollective.es", true }, - { "3dcollege.com", true }, { "3dcopy.com", true }, { "3dd365.com", true }, - { "3deeplearner.com", true }, { "3degreedesign.co.uk", true }, { "3deni.com", true }, { "3dexpose.tk", true }, { "3dfeel.com", true }, { "3dfiguur.nl", false }, { "3dflat.tk", true }, + { "3dflipbook.net", true }, { "3dgep.com", true }, - { "3dgifts.ro", true }, - { "3dicomviewer.com", false }, + { "3dinosaurs.com", true }, { "3dissue.com", true }, { "3djapan.com", true }, { "3djava.ml", true }, @@ -2578,18 +3000,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3dm.audio", true }, { "3dmedium.de", true }, { "3dmetalprinting.tk", true }, + { "3dmili.com", true }, { "3dmusiclab.nl", true }, - { "3dn-modell.hu", true }, - { "3dnchu.com", true }, + { "3dnovedades.com", false }, { "3do3dont.com", true }, { "3down.com", true }, { "3dprintedobjects.be", true }, - { "3dprinterwiki.org", true }, { "3dprintsondemand.eu", true }, { "3dranger.com", true }, { "3dreal.tk", true }, { "3dscanners.co.uk", true }, - { "3dscenes.com", true }, { "3dsites.tk", true }, { "3dsmarket.com", true }, { "3dstandard.com", true }, @@ -2597,6 +3017,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3dsupplies.be", true }, { "3dtech.pt", true }, { "3dvisual.studio", true }, + { "3dzip.org", true }, { "3ecpa.com.hk", true }, { "3ecpa.com.my", true }, { "3ecpa.com.sg", true }, @@ -2607,15 +3028,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3eyonetim.com", true }, { "3ff365.com", true }, { "3g-bandet.tk", true }, + { "3gdev.com", true }, { "3gdu.tk", true }, { "3gg365.com", true }, - { "3gibi.com", true }, { "3h-co.de", true }, { "3haeuserprojekt.org", true }, { "3haueserprojekt.org", true }, { "3hh365.com", true }, { "3huan.com", true }, { "3i-infotech.com", true }, + { "3ieimpact.org", true }, { "3ii365.com", true }, { "3james.com", true }, { "3jj365.com", true }, @@ -2626,71 +3048,90 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3logic.ru", true }, { "3lot.ru", true }, { "3marilynthemedia.cf", true }, - { "3mbuilders.co.uk", true }, - { "3mediaweb.com", true }, { "3mind-solutions.com", true }, - { "3ml.org.uk", true }, - { "3n5b.com", false }, - { "3n5b.net", false }, + { "3ml.org.uk", false }, + { "3newsnow.com", true }, + { "3niu007.com", true }, + { "3niu010.com", true }, { "3niu10.com", true }, + { "3niu100.com", true }, { "3niu11.com", true }, { "3niu111.com", true }, { "3niu12.com", true }, + { "3niu126.com", true }, { "3niu13.com", true }, { "3niu15.com", true }, { "3niu16.com", true }, + { "3niu161.com", true }, { "3niu168.com", true }, { "3niu1688.com", true }, { "3niu17.com", true }, { "3niu178.com", true }, { "3niu18.com", true }, + { "3niu186.com", true }, { "3niu19.com", true }, { "3niu2.com", true }, { "3niu222.com", true }, - { "3niu26.com", true }, + { "3niu226.com", true }, + { "3niu24.com", true }, + { "3niu27.com", true }, + { "3niu28.com", true }, + { "3niu282.com", true }, { "3niu3.com", true }, { "3niu333.com", true }, + { "3niu353.com", true }, { "3niu36.com", true }, + { "3niu37.com", true }, { "3niu388.com", true }, { "3niu39.com", true }, { "3niu4.com", true }, { "3niu5.com", true }, + { "3niu505.com", true }, + { "3niu51.com", true }, { "3niu566.com", true }, { "3niu568.com", true }, + { "3niu57.com", true }, { "3niu58.com", true }, { "3niu588.com", true }, { "3niu59.com", true }, + { "3niu599.com", true }, { "3niu61.com", true }, { "3niu62.com", true }, + { "3niu626.com", true }, { "3niu636.com", true }, { "3niu64.com", true }, { "3niu66.com", true }, { "3niu666.com", true }, { "3niu6666.com", true }, { "3niu668.com", true }, + { "3niu67.com", true }, { "3niu686.com", true }, { "3niu69.com", true }, + { "3niu699.com", true }, { "3niu7.com", true }, { "3niu711.com", true }, + { "3niu72.com", true }, + { "3niu727.com", true }, { "3niu768.com", true }, + { "3niu770.com", true }, { "3niu771.com", true }, { "3niu777.com", true }, { "3niu7777.com", true }, { "3niu8.com", true }, - { "3niu81.com", true }, + { "3niu836.com", true }, { "3niu85.com", true }, { "3niu855.com", true }, { "3niu868.com", true }, { "3niu88.com", true }, + { "3niu880.com", true }, + { "3niu885.com", true }, { "3niu888.com", true }, { "3niu89.com", true }, { "3niu9.com", true }, - { "3niu901.com", true }, { "3niu922.com", true }, { "3niu928.com", true }, { "3niu99.com", true }, { "3niusurl.com", true }, - { "3niuurl.com", true }, { "3niuurls.com", true }, { "3orod.ml", true }, { "3os.ooo", true }, @@ -2698,12 +3139,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3pestki.org", true }, { "3phase.pw", true }, { "3pif.de", true }, + { "3pillarglobal.com", true }, { "3plusdesign.gr", true }, - { "3plwow.com", true }, { "3pm.tw", true }, { "3prn.com", true }, + { "3pro.ca", true }, { "3proxy.org", true }, { "3proxy.ru", true }, + { "3q.video", true }, { "3queens.cz", true }, { "3queens.io", true }, { "3r.org.uk", true }, @@ -2719,23 +3162,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "3s-hosting.de", true }, { "3s-mail.de", true }, { "3scort.tk", true }, + { "3sd.it", true }, { "3sdatasolution.de", true }, { "3sdatasolutions.de", true }, { "3sddns.de", true }, { "3sdns.de", true }, { "3shosting.de", true }, + { "3sisecurity.com", true }, { "3sixtydutyfree.com", true }, { "3smail.de", true }, { "3speak.tv", true }, { "3techjournal.cf", true }, + { "3tiers.xyz", true }, { "3trees.tk", true }, { "3u15.com", true }, { "3v3s.tk", true }, { "3v4l.org", true }, { "3varta.com.ua", false }, + { "3vensen.no", true }, { "3vlnaeet.cz", true }, { "3w-solutions.fr", true }, - { "3wcafe.com", true }, { "3wid.com.br", true }, { "3wincorp.com", true }, { "3xx.click", true }, @@ -2754,8 +3200,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4000sf.com", true }, { "40010monogatari.com", true }, { "4005365.com", true }, - { "400china.com", true }, + { "4008810.com", true }, { "400yaahc.gov", true }, + { "401go.com", true }, + { "401ksite.com", true }, { "4025360.com", true }, { "4025361.com", true }, { "4025362.com", true }, @@ -2768,32 +3216,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4025369.com", true }, { "403.ch", true }, { "403page.com", true }, + { "404.blue", false }, + { "404.city", true }, { "404.guide", true }, + { "404.pw", true }, { "404888.xyz", true }, { "4048kkk.com", true }, { "4048v.com", true }, { "404group.tk", true }, { "404notfound.com.br", true }, - { "406811.com", true }, { "408663.com", true }, + { "409564.com", true }, { "40acts.org.uk", true }, { "40anospaguemenos.com.br", true }, { "40daysnutrition.com", true }, { "40percentpapermache.com", true }, + { "4100.cf", true }, { "41199.com", true }, - { "411movie.com", true }, + { "413504.com", true }, { "4144bet.com", true }, { "414553.com", true }, { "415.ai", true }, { "4151365.com", true }, - { "416365.com", false }, { "418663.com", true }, { "419sport.tk", true }, { "41southbar.com", true }, { "420.nerdpol.ovh", true }, - { "420hq.xyz", true }, { "420screen.com", true }, { "420weedcenter.com", true }, + { "4222.cf", true }, { "4233065.com", true }, { "4233068.com", true }, { "4233069.com", true }, @@ -2809,44 +3260,103 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4245pay.com", true }, { "4251365.com", true }, { "425degree.com", true }, - { "426773.com", true }, - { "427552.com", true }, + { "426773.com", false }, + { "427552.com", false }, + { "4285533.com", true }, { "428northampton.com", true }, + { "429637.com", true }, + { "42bit.io", true }, { "42ch.com", true }, { "42day.info", true }, + { "42degrees.com", true }, { "42entrepreneurs.fr", false }, { "42fss.us", true }, + { "42gears.com", true }, { "42l.fr", true }, { "42t.ru", true }, - { "42usd.com", true }, - { "4305design.com.au", true }, + { "4305design.com.au", false }, { "432666365.com", true }, { "432web.net", true }, + { "4333.cf", true }, { "434365.com", true }, { "4344bet.com", true }, { "4345.me", false }, { "4351365.com", true }, { "436773.com", true }, + { "437348.com", true }, { "437844.com", true }, { "438663.com", true }, { "439050.com", true }, + { "439182.com", true }, { "43klive.com", true }, { "44-k.com", true }, { "44168365.com", true }, - { "443.one", true }, - { "44321365.com", false }, + { "443.one", false }, + { "443.org", true }, { "443658.com", false }, { "44365t.com", true }, { "444321365.com", false }, + { "4444.com.tw", true }, { "4447552.com", true }, - { "444b58.com", false }, { "444bet86.com", true }, + { "444manualtherapy.com", true }, { "444takip.com", true }, { "44ada.pl", true }, { "44bet86.com", true }, { "44feelings.com", true }, + { "44ffaaa.com", true }, + { "44ffbbb.com", true }, + { "44ffccc.com", true }, + { "44ffddd.com", true }, + { "44ffeee.com", true }, + { "44fffaa.com", true }, + { "44fffbb.com", true }, + { "44fffcc.com", true }, + { "44fffdd.com", true }, + { "44fffee.com", true }, + { "44fffgg.com", true }, + { "44fffhh.com", true }, + { "44fffii.com", true }, + { "44fffjj.com", true }, + { "44fffkk.com", true }, + { "44fffll.com", true }, + { "44fffmm.com", true }, + { "44fffnn.com", true }, + { "44fffoo.com", true }, + { "44fffpp.com", true }, + { "44fffqq.com", true }, + { "44fffrr.com", true }, + { "44fffss.com", true }, + { "44ffftt.com", true }, + { "44fffuu.com", true }, + { "44fffvv.com", true }, + { "44fffww.com", true }, + { "44fffxx.com", true }, + { "44fffyy.com", true }, + { "44fffzz.com", true }, + { "44ffggg.com", true }, + { "44ffhhh.com", true }, + { "44ffiii.com", true }, + { "44ffjjj.com", true }, + { "44ffkkk.com", true }, + { "44fflll.com", true }, + { "44ffmmm.com", true }, + { "44ffnnn.com", true }, + { "44ffooo.com", true }, + { "44ffppp.com", true }, + { "44ffqqq.com", true }, + { "44ffrrr.com", true }, + { "44ffsss.com", true }, + { "44ffttt.com", true }, + { "44ffuuu.com", true }, + { "44ffvvv.com", true }, + { "44ffwww.com", true }, + { "44ffxxx.com", true }, + { "44ffyyy.com", true }, + { "44ffzzz.com", true }, { "451.ooo", true }, { "451365.com", true }, + { "452895.com", true }, { "45365t.com", true }, { "4544bet.com", true }, { "4551365.com", true }, @@ -2855,11 +3365,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "455328.com", true }, { "4553s.com", true }, { "4553vip.com", true }, + { "455555.xyz", true }, { "45636565.com", true }, { "456365t.com", true }, { "4566321.com", true }, { "4567.plus", true }, { "4567666365.com", false }, + { "4567989.com", true }, { "457552.com", true }, { "458663.com", true }, { "45b.org", true }, @@ -2875,71 +3387,90 @@ static const nsSTSPreload kSTSPreloadList[] = { { "47essays.com", true }, { "47tech.com", true }, { "47yr.com", true }, + { "47yt.com", false }, + { "480ptvseries.com", true }, + { "482449.com", true }, + { "483329.com", true }, { "48365365cn.com", true }, { "48365cn-365.com", true }, + { "486138.com", false }, + { "486662.xyz", true }, { "486773.com", true }, { "487511.com", true }, { "487552.com", true }, { "487866.com", true }, + { "489491.com", true }, { "48coin.cf", true }, { "48d88.com", true }, { "48hr.com", true }, { "48lipetsk.tk", true }, { "48times.online", true }, + { "491783.com", true }, { "491mhz.net", true }, - { "4927a.com", true }, - { "492977.com", true }, - { "492y.com", true }, + { "4927a.com", false }, + { "492977.com", false }, + { "492y.com", false }, + { "493455.com", true }, { "497552.com", false }, - { "497773.com", true }, - { "498663.com", true }, + { "497891.com", true }, { "49889.com", true }, { "49948522.com", true }, { "499ks.net", true }, - { "49dollaridahoregisteredagent.com", true }, { "4ads.de", true }, { "4ae86.com", true }, + { "4allpromos.com", true }, { "4am.click", true }, + { "4armed.com", true }, + { "4b.gg", true }, { "4baby.com.br", true }, { "4beats.ml", true }, { "4best.tk", true }, { "4bet86.com", true }, - { "4blm.org", true }, + { "4bmt-vld.xyz", true }, { "4budget.ga", true }, - { "4car.site", true }, { "4cavaleiros.com.br", true }, + { "4chairs.bg", true }, + { "4chan.com", true }, { "4child.tk", true }, { "4cloud.cf", true }, + { "4creative.net", true }, { "4cut.tk", true }, { "4d2.xyz", true }, - { "4dbygg.se", true }, + { "4daagse.nl", true }, { "4dclub.com", true }, + { "4devs.com.br", true }, + { "4digital.it", true }, { "4digitiq.nl", true }, { "4dillusion.tk", true }, { "4dimension.net", true }, - { "4dlatest.com", true }, { "4dplay.com", true }, - { "4dsoft.com", true }, + { "4dsignworx.com", true }, + { "4dstyle.com", true }, { "4everdosti.tk", true }, { "4everproxy.com", true }, + { "4exchange.ru", true }, { "4filtre.com", true }, + { "4filtre.com.tr", true }, { "4fit.ro", true }, { "4flex.info", true }, { "4freepress.com", true }, + { "4freeprintable.com", true }, { "4g-server.eu", false }, { "4game.my.id", true }, { "4garage.com.br", true }, { "4gnews.pt", true }, + { "4grad.in.ua", true }, + { "4gtrackers.com", true }, + { "4gwz.com", true }, { "4hmediaproductions.com", true }, { "4host.ch", true }, { "4hourcourse.com", true }, - { "4huawei.ru", true }, + { "4hourmini.com", true }, { "4hw.ru", true }, { "4hypo.cz", true }, - { "4iners.com", true }, { "4investors.de", true }, { "4iplatform.com", true }, - { "4just.com", true }, + { "4iq.lt", true }, { "4k3dyptt.com", true }, { "4kpi.eu", true }, { "4kprojektory.cz", true }, @@ -2953,12 +3484,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4meizu.ru", true }, { "4mm.org", true }, { "4motionsgmbh.de", true }, - { "4muscle.com", true }, { "4nature.com", true }, + { "4netguides.org", true }, { "4nikola.de", true }, + { "4o.pw", true }, { "4obgyne.com", true }, { "4ourbest.tk", true }, { "4pals.org", true }, + { "4peace.gent", true }, { "4played.de", true }, { "4played.vip", true }, { "4project.co.il", true }, @@ -2966,17 +3499,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4ree.tk", true }, { "4screens.net", true }, { "4season-flowers.com", true }, + { "4seeds.co.za", true }, { "4seo.ml", true }, + { "4server.ch", true }, { "4share.tv", true }, { "4sics.se", true }, + { "4sightdesignz.com", true }, { "4sjnc.org", true }, { "4smart.cz", true }, { "4smart.house", true }, { "4sun.cf", true }, - { "4swmstl.com", true }, { "4tgw34.tk", true }, { "4th-ave-studio.com", true }, { "4thfebruary.tk", true }, + { "4thjdcar.gov", true }, { "4true.com", true }, { "4u.services", false }, { "4u2ore.net", true }, @@ -2992,8 +3528,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "4x4.lk", true }, { "4x4coatingen.nl", true }, { "4x4tt.com", true }, - { "4xiaomi.ru", true }, - { "4xlabs.co", true }, { "4y4.me", true }, { "4y4a-arts.space", true }, { "4yowipes10yo.gq", true }, @@ -3006,11 +3540,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "5000yz.com", true }, { "5002888.com", true }, { "5007999.com", true }, + { "500f500.com", true }, { "500fcw.com", true }, { "500k.nl", true }, { "500k8.com", true }, { "500promokodov.ru", true }, { "500wordessay.gq", true }, + { "501371.com", true }, { "5017501.com", true }, { "5017502.com", true }, { "5017503.com", true }, @@ -3028,14 +3564,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "501stcl.tk", true }, { "502312.com", true }, { "502fss.marketing", true }, - { "504122.com", true }, - { "504322.com", true }, - { "504922.com", true }, { "5060711.com", true }, { "5060715.com", true }, - { "506422.com", true }, - { "508kb.com", true }, { "50balles.com", true }, + { "50firstavenue.com.au", true }, { "50fss.marketing", true }, { "50hertz.tk", true }, { "50lakeshore.com", true }, @@ -3047,6 +3579,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "50plusnet.nl", true }, { "50refer.tk", true }, { "50ten40.com", true }, + { "51-83-136-132.xyz", true }, + { "511.org", true }, + { "511in.org", true }, + { "512pixels.net", true }, { "5132vip.com", true }, { "513651.com", true }, { "51365a.com", true }, @@ -3064,19 +3600,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "514-media.com", true }, { "514-media.de", true }, { "514-media.fr", true }, - { "514122.com", true }, - { "514522.com", true }, + { "514.moe", true }, { "514622.com", true }, - { "514922.com", true }, { "515188.xyz", true }, - { "515422.com", true }, { "5155bet.com", true }, - { "516422.com", true }, { "517vpn.cn", true }, { "518.com.tw", true }, - { "51877.net", true }, { "518k8.com", true }, - { "519422.com", true }, { "5197aa.co", true }, { "5197bb.co", true }, { "5197cc.co", true }, @@ -3125,9 +3655,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "51cls.tw", true }, { "51club8.com", true }, { "51collection.com", true }, - { "51cps.com", true }, - { "51daxue.com", true }, - { "51dazhe.com", true }, { "51dinghuo.com", true }, { "51fish.com", true }, { "51fishing.com", true }, @@ -3141,8 +3668,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "51logo.com", true }, { "51motor.com", true }, { "51nurse.com", true }, - { "51patent.com", true }, - { "51pda.com", true }, { "51photos.com", true }, { "51pic.com", true }, { "51pig.com", true }, @@ -3150,10 +3675,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "51power.com", true }, { "51resume.com", true }, { "51rose.com", true }, - { "51sell.com", true }, + { "51senluo.com", true }, { "51share.com", true }, { "51shoes.com", true }, { "51space.com", true }, + { "51talk.ph", true }, { "51tiaojiu.com", true }, { "51train.com", true }, { "51wear.com", true }, @@ -3189,65 +3715,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "5205365.com", false }, { "52062z.com", true }, { "5206365.com", false }, - { "52067.vip", false }, { "5209365.com", false }, { "520xpjxpj.com", false }, { "521.dog", true }, { "5219.ml", true }, { "521keyvista.com", true }, { "5225sf.com", true }, - { "524022.com", true }, - { "524622.com", true }, - { "524922.com", true }, - { "5287.com", true }, { "528sss.com", true }, { "529kb.com", true }, { "529sss.com", true }, { "52b9.com", true }, { "52b9.net", true }, - { "52car.com", true }, { "52danji.cc", true }, { "52dashboard.com", true }, + { "52evar.com", true }, { "52fanpai.com", true }, { "52fish.com", true }, { "52fss.com", true }, { "52fss.marketing", true }, - { "52happy.com", true }, { "52hentai.ml", true }, { "52itt.com", true }, { "52kb1.com", true }, { "52kb365.com", false }, { "52ncp.net", true }, - { "52share.com", true }, + { "52pojie.cn", true }, { "52sykb.com", false }, { "52weekspodcast.com", true }, + { "52xuanmi.com", true }, { "52yanhao.com", true }, - { "531422.com", true }, { "531k8.com", true }, { "533sss.com", true }, - { "534122.com", true }, { "534365.com", true }, - { "534622.com", true }, - { "534922.com", true }, { "535kb.com", true }, - { "536422.com", true }, + { "5364b.com", true }, + { "5364c.com", true }, + { "5364d.com", true }, { "5364jc.com", true }, + { "538507.com", true }, + { "53ningen.com", false }, { "53pluk.cz", true }, - { "54.sb", false }, - { "540922.com", true }, { "540interactive.com", true }, - { "541022.com", true }, - { "541622.com", true }, { "541651.com", true }, - { "541722.com", true }, - { "541922.com", true }, { "5424vip.com", true }, { "5454app.com", true }, { "5454pk.com", true }, { "5455bet.com", true }, - { "545755.com", true }, - { "545922.com", true }, - { "54below.com", true }, + { "545755.com", false }, + { "54below.com", false }, { "54cuatro.com", true }, { "5518k3.com", true }, { "55321365.com", false }, @@ -3255,8 +3769,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "55365t.com", true }, { "5536z.com", true }, { "555321365.com", false }, + { "555554.xyz", true }, { "5557552.com", true }, - { "555b58.com", false }, { "555bet86.com", true }, { "555btt.com", true }, { "555kb.com", true }, @@ -3270,55 +3784,103 @@ static const nsSTSPreload kSTSPreloadList[] = { { "557bbb.com", true }, { "55bet86.com", true }, { "55club.com", true }, + { "55ffaaa.com", true }, + { "55ffbbb.com", true }, + { "55ffccc.com", true }, + { "55ffddd.com", true }, + { "55ffeee.com", true }, + { "55fffaa.com", true }, + { "55fffbb.com", true }, + { "55fffcc.com", true }, + { "55fffdd.com", true }, + { "55fffee.com", true }, + { "55fffgg.com", true }, + { "55fffhh.com", true }, + { "55fffii.com", true }, + { "55fffjj.com", true }, + { "55fffkk.com", true }, + { "55fffll.com", true }, + { "55fffmm.com", true }, + { "55fffnn.com", true }, + { "55fffoo.com", true }, + { "55fffpp.com", true }, + { "55fffqq.com", true }, + { "55fffrr.com", true }, + { "55fffss.com", true }, + { "55ffftt.com", true }, + { "55fffuu.com", true }, + { "55fffvv.com", true }, + { "55fffww.com", true }, + { "55fffxx.com", true }, + { "55fffyy.com", true }, + { "55fffzz.com", true }, + { "55ffggg.com", true }, + { "55ffhhh.com", true }, + { "55ffiii.com", true }, + { "55ffjjj.com", true }, + { "55ffkkk.com", true }, + { "55fflll.com", true }, + { "55ffmmm.com", true }, + { "55ffnnn.com", true }, + { "55ffooo.com", true }, + { "55ffppp.com", true }, + { "55ffqqq.com", true }, + { "55ffrrr.com", true }, + { "55ffsss.com", true }, + { "55ffttt.com", true }, + { "55ffuuu.com", true }, + { "55ffvvv.com", true }, + { "55ffwww.com", true }, + { "55ffxxx.com", true }, + { "55ffyyy.com", true }, + { "55ffzzz.com", true }, { "55fss.net", true }, - { "55jam.com", true }, + { "55goal.com", true }, { "55k66.vip", true }, { "55opt.org", true }, - { "561-gotpain.com", true }, + { "56011s.com", false }, + { "56011v.com", false }, + { "5611.cf", true }, { "5611bet.com", true }, { "5622bet.com", true }, + { "562656.com", true }, + { "562956.com", true }, + { "563398.com", true }, { "5633bet.com", true }, { "56365t.com", true }, { "5663.cc", true }, { "5663.co", true }, - { "566380.com", true }, - { "56695.com", true }, - { "567.hu", false }, + { "566380.com", false }, { "56736565.com", true }, { "5676321.com", true }, { "567666365.com", true }, { "567667.cc", true }, + { "5677.cf", true }, { "5678666365.com", false }, + { "568756.com", true }, { "56877.com", true }, { "572kb.com", true }, { "573sss.com", true }, - { "575380.com", true }, - { "5763.org", true }, - { "576422.com", true }, + { "5758cp.com", true }, { "5765.io", true }, { "5781.org", true }, { "578380.com", true }, { "5792.org", true }, + { "579514.com", true }, { "5795444.com", true }, { "5795887.com", true }, - { "5796.org", true }, - { "5797.org", true }, + { "582303.com", true }, + { "582343.com", true }, { "585380.com", true }, - { "585422.com", true }, { "588e.com", true }, + { "589174.com", true }, + { "589704.com", true }, { "5898657.com", true }, { "589team.com", true }, - { "58w66.com", true }, - { "591380.com", true }, { "592227.com", true }, - { "592422.com", true }, - { "5930593.com", true }, { "593380.com", true }, - { "594022.com", true }, - { "594622.com", true }, + { "593398.com", true }, { "595380.com", true }, - { "595422.com", true }, - { "596422.com", true }, { "5981168.com", true }, { "5981611.com", true }, { "5981622.com", true }, @@ -3340,7 +3902,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "5981877.com", true }, { "5981899.com", true }, { "5981918.com", true }, - { "5981a.com", true }, { "5981b.com", true }, { "5981c.com", true }, { "5981d.com", true }, @@ -3349,11 +3910,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "5981g.com", true }, { "5981h.com", true }, { "5981i.com", true }, - { "5981j.com", true }, { "5981k.com", true }, { "5981l.com", true }, { "5981m.com", true }, - { "5981n.com", true }, { "5981o.com", true }, { "5981p.com", true }, { "5981q.com", true }, @@ -3372,52 +3931,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "59859l.vip", true }, { "59859y.vip", true }, { "5986fc.com", true }, - { "59937.com", true }, - { "5997891.com", true }, + { "5997891.com", false }, { "599980.com", true }, { "59dcmi.gov", true }, { "59rus.tk", true }, { "59yanhao.com", true }, { "5aelettroni.ga", true }, { "5agks.com", true }, + { "5am.is", true }, { "5amat.com", true }, { "5apps.com", true }, { "5baiwan.com", true }, { "5bet86.com", true }, { "5c1fd0f31022cbc40af9f785847baaf9.space", true }, + { "5ca.com", true }, { "5cake.com", true }, { "5ccapitalinvestments.com", true }, { "5chat.it", true }, { "5dm.tv", true }, - { "5dtech.com", true }, + { "5drachenschule.de", true }, { "5e.tools", true }, { "5eki.jp", false }, + { "5elementostudio.co", true }, + { "5escorts.com", true }, { "5francs.com", true }, - { "5gb.space", true }, + { "5g.co.uk", true }, { "5goglobal.com", true }, { "5h0r7.com", true }, - { "5i.gs", false }, { "5icsb.com", true }, { "5ilg.com", true }, { "5in.win", false }, - { "5keys.ru", true }, { "5long88.com", true }, { "5minutemystery.com", true }, + { "5mustsee.com", true }, { "5net.ga", true }, { "5ososea.com", true }, { "5peciali5t.tk", true }, { "5penazi.sk", true }, { "5percentperweek.com", true }, { "5pila.com", true }, + { "5snb.club", true }, { "5sporn.com", true }, { "5starcruises.com.au", true }, { "5stardesigner.tk", true }, + { "5starexterior.com", false }, { "5stars.tv", true }, + { "5startrucksales.us", true }, { "5tar.jp", true }, { "5tart.tk", true }, { "5thchichesterscouts.org.uk", true }, + { "5thfloormedia.com", true }, { "5thgenrams.com", true }, - { "5thmedia.com", true }, { "5tiptop.com", true }, { "5top.nl", true }, { "5u15.com", true }, @@ -3428,30 +3992,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6.vu", true }, { "600cao.com", true }, { "600k8.com", false }, - { "602422.com", true }, - { "602yb.com", true }, - { "603yb.com", true }, - { "604122.com", true }, - { "604522.com", true }, - { "604622.com", true }, { "604windswell.ca", true }, - { "605422.com", true }, { "6060fm.tk", true }, - { "606422.com", true }, + { "6080.ga", true }, + { "6080ga.com", true }, + { "608325.com", true }, + { "608854.com", true }, { "608vets.com", true }, + { "60d.cn", true }, + { "60i.cn", true }, { "60n13.com", true }, { "60w.co", true }, { "610.co", true }, - { "611121.com", true }, - { "611125.com", true }, - { "611135.com", true }, - { "611165.com", true }, - { "611195.com", true }, { "6132-vip.com", true }, { "6132pk.com", true }, { "6132vip.com", true }, - { "614022.com", true }, - { "614922.com", true }, { "616578.com", true }, { "616675.com", true }, { "616728.com", false }, @@ -3459,31 +4014,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "616798.com", true }, { "616btt.net", true }, { "616f88.com", true }, - { "61730123.com", true }, + { "61730123.com", false }, { "618034.xyz", true }, - { "618media.com", true }, + { "618btt.com", true }, { "61ag8.com", true }, { "61d88.com", true }, { "61fss.net", true }, { "620207.com", true }, - { "621422.com", true }, + { "620862.com", true }, + { "621424.com", true }, { "621kb.com", true }, { "621nn.com", false }, - { "622283.com", true }, - { "622812.com", true }, - { "624022.com", true }, - { "624122.com", true }, - { "624322.com", true }, - { "624522.com", true }, - { "624922.com", true }, + { "6228800.com", true }, + { "6228811.com", true }, { "625kb.com", true }, - { "630422.com", true }, - { "631422.com", true }, - { "632017.com", true }, + { "626562.com", true }, + { "628062.com", true }, + { "628462.com", true }, + { "632017.com", false }, { "632025.com", true }, { "632026.com", true }, { "632027.com", true }, - { "632035.com", true }, + { "632035.com", false }, { "632040.com", true }, { "632045.com", true }, { "632046.com", true }, @@ -3500,23 +4052,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "632148.com", false }, { "632174.com", false }, { "632365.com", true }, - { "633362.com", true }, { "633663.net", true }, { "633663.vip", true }, - { "634022.com", true }, - { "634322.com", true }, { "634365.com", true }, - { "634622.com", true }, - { "634922.com", true }, { "635-488.com", false }, { "635-588.com", false }, { "635-788.com", false }, { "635-888.com", true }, { "635-988.com", true }, - { "635422.com", true }, - { "636422.com", true }, + { "636051.com", true }, + { "637663.com", true }, { "638566.com", true }, - { "639422.com", true }, { "6396000.com", true }, { "63960000.com", true }, { "63961111.com", true }, @@ -3535,9 +4081,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "639666666.com", false }, { "63967777.com", true }, { "639677777.com", false }, - { "63968888.com", true }, + { "63968888.com", false }, { "639688888.com", true }, - { "63969999.com", true }, + { "63969999.com", false }, { "639699999.com", false }, { "6396aaa.com", true }, { "6396bbb.com", true }, @@ -3559,45 +4105,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6396zzz.com", false }, { "63fg.com", true }, { "63gaming.com", true }, - { "640622.com", true }, - { "640922.com", true }, - { "641022.com", true }, - { "641322.com", true }, - { "641422.com", true }, - { "641522.com", true }, - { "641722.com", true }, - { "641822.com", true }, - { "641922.com", true }, - { "642022.com", true }, - { "642322.com", true }, - { "642422.com", true }, - { "642722.com", true }, - { "643022.com", true }, - { "643122.com", true }, - { "643722.com", true }, - { "643922.com", true }, - { "645122.com", true }, - { "645322.com", true }, - { "645722.com", true }, { "645ds.cn", false }, { "645ds.com", false }, - { "646.io", false }, - { "646322.com", true }, - { "646722.com", true }, - { "649022.com", true }, - { "649622.com", true }, { "64970.com", true }, - { "649722.com", true }, - { "649822.com", true }, { "64bitgaming.de", true }, { "64i.de", true }, - { "64media.com", true }, { "64stacks.com", true }, + { "650.org", true }, { "65131a.com", true }, { "65131b.com", true }, { "65131c.com", true }, { "65131d.com", true }, - { "65131g.com", true }, { "65131h.com", true }, { "65131i.com", true }, { "65131j.com", true }, @@ -3608,12 +4126,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "65131x.com", true }, { "65131y.com", true }, { "65131z.com", true }, - { "651422.com", true }, - { "652422.com", true }, { "6541166.com", true }, { "6542277.com", true }, { "6543399.com", true }, - { "65477.com", true }, { "6547700.com", true }, { "6547711.com", true }, { "6547722.com", true }, @@ -3623,16 +4138,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6547766.com", true }, { "6548855.com", true }, { "6548877.com", true }, - { "655591.com", true }, { "655ks.com", true }, + { "656265.com", true }, { "657660.com", true }, - { "659422.com", true }, + { "658565.com", true }, + { "659265.com", true }, { "65d88.com", true }, + { "6601.cf", true }, + { "6602.cf", true }, { "6602p.com", true }, + { "6603.cf", true }, + { "6604.cf", true }, + { "6605.cf", true }, + { "6606.cf", true }, + { "6607.cf", true }, + { "6608.cf", true }, + { "6609.cf", true }, + { "6610.cf", true }, + { "6612.cf", true }, + { "6613.cf", true }, { "661326.com", true }, + { "6614.cf", true }, + { "6615.cf", true }, + { "6616.cf", true }, { "66168365.com", true }, { "6616fc.com", true }, + { "6617.cf", true }, + { "6618.cf", true }, + { "6619.cf", true }, { "661z6.com", true }, + { "6620.cf", true }, + { "6623.cf", true }, + { "6624.cf", true }, + { "6625.cf", true }, + { "6626.cf", true }, + { "6627.cf", true }, { "66321365.com", false }, { "6633445.com", true }, { "663365666.com", true }, @@ -3646,31 +4186,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "663365f.vip", true }, { "663365g.vip", true }, { "663365h.vip", true }, - { "663365i.com", false }, { "663365i.vip", true }, - { "663365j.com", false }, { "663365j.vip", true }, - { "663365k.com", false }, { "663365k.vip", true }, - { "663365l.com", false }, - { "663365m.com", false }, - { "663365n.com", false }, - { "663365o.com", false }, - { "663365p.com", false }, - { "663365q.com", false }, - { "663365r.com", false }, - { "663365s.com", false }, - { "663365t.com", false }, - { "663365u.com", false }, - { "663365v.com", false }, - { "663365w.com", false }, - { "663365x.com", false }, - { "663365y.com", false }, - { "663365z.com", false }, { "663651.com", false }, - { "664048.com", true }, - { "6652566.com", true }, + { "664048.com", false }, + { "6660.cf", true }, { "6660111.ru", true }, + { "6661.cf", true }, { "666111bet.com", true }, { "666222bet.com", true }, { "666321365.com", false }, @@ -3680,7 +4203,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "666365iosapp.com", false }, { "666365t.com", true }, { "6664553.com", true }, - { "666555bet.com", true }, { "666668722.com", true }, { "666689999.xyz", true }, { "666777bet.com", true }, @@ -3695,17 +4217,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "668825.vip", true }, { "668k8.net", true }, { "66b.com", true }, - { "66b58.com", false }, { "66bet86.com", true }, { "66bwf.com", true }, + { "66ffaaa.com", true }, + { "66ffbbb.com", true }, + { "66ffccc.com", true }, + { "66ffddd.com", true }, + { "66ffeee.com", true }, + { "66fffaa.com", true }, + { "66fffbb.com", true }, + { "66fffcc.com", true }, + { "66fffdd.com", true }, + { "66fffee.com", true }, + { "66fffgg.com", true }, + { "66fffhh.com", true }, + { "66fffii.com", true }, + { "66fffjj.com", true }, + { "66fffkk.com", true }, + { "66fffll.com", true }, + { "66fffmm.com", true }, + { "66fffnn.com", true }, + { "66fffoo.com", true }, + { "66fffpp.com", true }, + { "66fffqq.com", true }, + { "66fffrr.com", true }, + { "66fffss.com", true }, + { "66ffftt.com", true }, + { "66fffuu.com", true }, + { "66fffvv.com", true }, + { "66fffww.com", true }, + { "66fffxx.com", true }, + { "66fffyy.com", true }, + { "66fffzz.com", true }, + { "66ffggg.com", true }, + { "66ffhhh.com", true }, + { "66ffiii.com", true }, + { "66ffjjj.com", true }, + { "66ffkkk.com", true }, + { "66fflll.com", true }, + { "66ffmmm.com", true }, + { "66ffnnn.com", true }, + { "66ffooo.com", true }, + { "66ffppp.com", true }, + { "66ffqqq.com", true }, + { "66ffrrr.com", true }, + { "66ffsss.com", true }, + { "66ffttt.com", true }, + { "66ffuuu.com", true }, + { "66ffvvv.com", true }, + { "66ffwww.com", true }, + { "66ffxxx.com", true }, + { "66ffyyy.com", true }, + { "66ffzzz.com", true }, + { "66gal.com", true }, { "66k66.vip", true }, { "6700.ar", true }, { "670102.com", true }, - { "670422.com", true }, - { "671422.com", true }, { "671660.com", true }, { "671990.com", true }, - { "6728365.com", false }, + { "672367.com", true }, { "6729.co", false }, { "672990.com", false }, { "6729a.co", true }, @@ -3781,7 +4351,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6729qq.co", true }, { "6729qq.com", false }, { "6729r.co", true }, - { "6729r.com", false }, { "6729rr.co", true }, { "6729rr.com", true }, { "6729s.co", true }, @@ -3818,12 +4387,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6729zz.co", true }, { "6729zz.com", false }, { "672bbb.com", true }, - { "673422.com", true }, + { "673395.com", true }, { "673569.com", true }, { "673660.com", true }, { "673990.com", true }, { "673bbb.com", true }, - { "676422.com", true }, + { "676812.com", true }, { "677314.com", true }, { "677340.com", true }, { "677341.com", true }, @@ -3832,6 +4401,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "677354.com", true }, { "677364.com", true }, { "677384.com", true }, + { "6777.cf", true }, { "67836565.com", true }, { "678365app.com", false }, { "678365cc.com", false }, @@ -3839,11 +4409,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "678678365.com", true }, { "67877777.com", true }, { "6789666365.com", false }, - { "679422.com", true }, - { "679660.com", false }, + { "679470.com", true }, + { "67wine.com", true }, { "67y7.com", false }, - { "680422.com", true }, + { "682368.com", true }, { "68277.me", true }, + { "683168.com", true }, + { "683968.com", true }, + { "684781.com", true }, { "68522.com", true }, { "68522c.com", true }, { "68522k.com", true }, @@ -3852,18 +4425,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "68622.com", true }, { "68622a.com", true }, { "68622b.com", true }, - { "686848.com", true }, + { "68636.cc", true }, + { "68636.com", true }, + { "68636.vip", true }, { "68722.com", true }, + { "689368.com", true }, { "68reg.tk", true }, - { "690422.com", true }, - { "691422.com", true }, - { "692422.com", true }, - { "692660.com", true }, + { "690469.com", true }, + { "690569.com", true }, + { "690669.com", true }, + { "692269.com", true }, { "692b8c32.de", true }, - { "69420.reviews", true }, - { "694322.com", true }, - { "694622.com", true }, - { "694922.com", true }, + { "693369.com", true }, { "695660.com", true }, { "6957.co", true }, { "6957a.co", true }, @@ -3925,7 +4498,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6957z.co", true }, { "6957z.com", true }, { "6957zz.co", true }, - { "695990.com", true }, + { "69759.com", false }, + { "698134.com", true }, { "6997896.com", true }, { "69asmr.com", true }, { "69butterfly.com", true }, @@ -3933,8 +4507,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "69level.com", true }, { "69mentor.com", true }, { "69wasted.net", true }, + { "6a.nz", true }, { "6b.com.au", true }, - { "6b9t.org", true }, { "6bet86.com", true }, { "6bwcp.com", true }, { "6dec.gc.ca", true }, @@ -3946,77 +4520,91 @@ static const nsSTSPreload kSTSPreloadList[] = { { "6play.fr", true }, { "6t-montjoye.org", true }, { "6thmarch.com", true }, - { "6v.vc", true }, { "6wbz.com", true }, { "6x6project.com", true }, { "7-it.ml", true }, + { "7-zip.de", true }, { "700.az", true }, + { "700creditsolution.com", true }, + { "700dealer.com", true }, { "700wns.com", true }, { "701605.com", true }, { "701squad.tk", true }, + { "702341.win", true }, + { "702342.win", true }, + { "702343.win", true }, + { "702344.win", true }, + { "702345.win", true }, { "70365365.com", false }, - { "704233.com", true }, - { "704533.com", true }, - { "704633.com", true }, + { "703700.com", true }, + { "703740.com", true }, { "705994.com", true }, { "708090.ru", true }, { "70872.com", false }, { "709129.com", true }, + { "709611.com", true }, + { "709644.com", true }, { "70mpg.org", true }, - { "712433.com", true }, + { "7100.cf", true }, { "712kb.com", true }, { "713367.com", false }, - { "713433.com", true }, { "71365365.com", false }, - { "7139365.com", true }, { "713kb.com", true }, - { "714133.com", true }, - { "714533.com", true }, - { "714633.com", true }, - { "715433.com", true }, { "716176.com", false }, { "7177bet.com", true }, { "717966833.xyz", true }, { "718113.com", false }, { "7183.org", false }, - { "718433.com", true }, { "71fss.marketing", true }, { "71tuiguang.com", true }, + { "7203.ru", true }, + { "7203.xn--p1ai", true }, + { "721010.xyz", true }, + { "721172.com", true }, { "7214.cc", true }, { "721aa.com", false }, { "722201.com", false }, - { "724233.com", true }, + { "723421.com", true }, { "724go.com", true }, { "724online.com", true }, + { "725134.com", true }, { "7261696e626f77.net", true }, + { "727877.com", false }, { "727sss.com", true }, - { "728433.com", true }, - { "729433.com", true }, { "72hours2sold.com", true }, { "730.no", true }, - { "731433.com", true }, - { "732433.com", true }, + { "732273.com", true }, + { "732473.com", true }, + { "732959.com", true }, { "733575.com", false }, { "73365365.com", false }, - { "7337app.com", true }, + { "733673.com", true }, { "734365.com", true }, - { "735433.com", true }, - { "736433.com", true }, - { "738433.com", true }, - { "739433.com", true }, - { "73eg.com", true }, - { "73eq.com", true }, - { "73ez.com", true }, - { "73yp.com", true }, - { "740833.com", true }, - { "741833.com", true }, + { "734551.com", true }, + { "736373.com", true }, + { "736416.com", true }, + { "736573.com", true }, + { "739373.com", true }, + { "739673.com", true }, + { "739973.com", true }, + { "73fy.com", false }, + { "740424.ml", true }, + { "740660.com", true }, { "743365.com", true }, { "74365365.com", true }, - { "743833.com", true }, + { "7444.cf", true }, + { "746104.com", true }, + { "7478vip1.cc", true }, + { "7478vip2.cc", true }, { "74d88.com", true }, { "74dy.org", true }, { "74th.jp", true }, + { "750275.com", true }, + { "750375.com", true }, + { "750475.com", true }, + { "751175.com", true }, { "753365.com", true }, + { "753375.com", true }, { "7552001.com", true }, { "7552002.com", true }, { "7552005.com", true }, @@ -4033,13 +4621,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "755246.com", true }, { "755249.com", true }, { "755274.com", true }, - { "755284.com", false }, { "755294.com", false }, { "755k3.com", true }, + { "756975.com", true }, + { "757409.com", true }, + { "758375.com", true }, + { "758393.com", true }, + { "759375.com", true }, + { "759675.com", true }, { "75codes.com", true }, { "75refer.tk", true }, { "761.com", true }, - { "762.ch", false }, + { "761link.net", true }, + { "762media.com", true }, + { "763361.com", true }, { "763365.com", true }, { "76365365.com", true }, { "7654654.xyz", true }, @@ -4047,12 +4642,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "76668.com", true }, { "7666898.com", true }, { "76669.com", true }, - { "76956.com", true }, + { "766788.xyz", true }, { "7699.org", true }, { "769k.com", false }, { "769sc.com", false }, { "76networks.tk", true }, - { "77-elagage.fr", true }, + { "76o.cn", true }, { "77018dd.com", false }, { "77018vip.com", false }, { "77168365.com", true }, @@ -4060,31 +4655,95 @@ static const nsSTSPreload kSTSPreloadList[] = { { "77321365.com", false }, { "7733445.com", true }, { "773buy.com", true }, - { "775018.com", true }, + { "775018.com", false }, { "777365t.com", true }, { "7776321.com", false }, { "7776365.com", true }, { "777bet86.com", true }, { "777coin.com", true }, + { "777mage.com", true }, + { "777tv.tv", true }, { "7788bet.vip", true }, + { "77909a.com", false }, + { "77909b.com", false }, + { "77909c.com", false }, + { "77909d.com", false }, + { "77909dhz.com", true }, + { "77909e.com", false }, + { "77909f.com", false }, + { "77909g.com", false }, + { "77909h.com", false }, + { "77909i.com", false }, + { "77909k.com", false }, + { "77999xl.com", true }, { "77b58.com", true }, { "77bet86.com", true }, - { "77zxdy.com", true }, + { "77ffaaa.com", true }, + { "77ffbbb.com", true }, + { "77ffccc.com", true }, + { "77ffddd.com", true }, + { "77ffeee.com", true }, + { "77fffaa.com", true }, + { "77fffbb.com", true }, + { "77fffcc.com", true }, + { "77fffdd.com", true }, + { "77fffee.com", true }, + { "77fffgg.com", true }, + { "77fffhh.com", true }, + { "77fffii.com", true }, + { "77fffjj.com", true }, + { "77fffkk.com", true }, + { "77fffll.com", true }, + { "77fffmm.com", true }, + { "77fffnn.com", true }, + { "77fffoo.com", true }, + { "77fffpp.com", true }, + { "77fffqq.com", true }, + { "77fffrr.com", true }, + { "77fffss.com", true }, + { "77ffftt.com", true }, + { "77fffuu.com", true }, + { "77fffvv.com", true }, + { "77fffww.com", true }, + { "77fffxx.com", true }, + { "77fffyy.com", true }, + { "77fffzz.com", true }, + { "77ffggg.com", true }, + { "77ffhhh.com", true }, + { "77ffiii.com", true }, + { "77ffjjj.com", true }, + { "77ffkkk.com", true }, + { "77fflll.com", true }, + { "77ffmmm.com", true }, + { "77ffnnn.com", true }, + { "77ffooo.com", true }, + { "77ffppp.com", true }, + { "77ffqqq.com", true }, + { "77ffrrr.com", true }, + { "77ffsss.com", true }, + { "77ffttt.com", true }, + { "77ffuuu.com", true }, + { "77ffvvv.com", true }, + { "77ffwww.com", true }, + { "77ffxxx.com", true }, + { "77ffyyy.com", true }, + { "77ffzzz.com", true }, + { "77online.com", true }, { "78-couvreur.fr", true }, { "78-elagage.fr", true }, { "780aa.com", true }, + { "781534.com", true }, + { "782354.com", true }, + { "783306.com", true }, + { "783346.com", true }, { "78365b.com", false }, - { "78365cc.com", true }, { "783lab.com", true }, { "787637.com", true }, { "7877bet.com", true }, - { "7878365.com", false }, { "787k3.com", true }, { "787kb.com", true }, { "7885765.com", true }, - { "7888813.com", true }, { "7888815.com", true }, - { "7888821.com", true }, { "788zzz.com", true }, { "7891553.com", true }, { "7891997.com", true }, @@ -4093,57 +4752,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "789365t.com", true }, { "7894.net", true }, { "789zr.com", false }, + { "790951.com", true }, + { "792379.com", true }, { "795sss.com", true }, + { "797715.com", true }, { "797sss.com", true }, + { "798392.com", true }, { "798sss.com", true }, + { "799146.com", true }, { "7992.org", true }, + { "799713.com", true }, { "799ks.com", true }, { "799z6.com", true }, { "79ch.com", true }, + { "7across.com", true }, + { "7aga7.mk", true }, { "7akawyna.tk", true }, + { "7az.com.br", true }, { "7bandarqq.com", true }, { "7bet86.com", true }, - { "7careconnect.com", true }, + { "7binaryreviews.com", true }, { "7daystodie.top", true }, - { "7daystrader.com", false }, { "7delights.in", true }, + { "7dies.net", true }, { "7eastgenetics.com", false }, { "7emka.tk", true }, { "7extranews.tk", true }, { "7f.is", true }, + { "7gr.uk", true }, { "7graus.pt", true }, + { "7hills.us", true }, + { "7hq.ru", true }, + { "7im.co.uk", true }, { "7in0.me", true }, { "7ki.photography", true }, { "7kicks.com", true }, { "7kovrikov.ru", true }, + { "7kvadratov.by", true }, { "7l00p.com", true }, - { "7lb.de", true }, { "7links.com.br", true }, { "7milesglobal.com", true }, - { "7mu.top", true }, + { "7money.co", true }, + { "7net.uk", true }, + { "7networking.com", true }, { "7pets.net", true }, { "7plus.com.au", true }, - { "7press.com", true }, { "7proxies.com", true }, { "7qly.com", true }, { "7sdre.am", true }, { "7sisters.tk", true }, + { "7sotok.info", true }, { "7starhealth.ga", true }, { "7th-heaven.me", true }, { "7thcircledesigns.com", true }, { "7url.ml", true }, { "7x24servis.com", true }, + { "7x7cajalosandes.cl", true }, { "7zet.ml", true }, { "80001234.com", true }, + { "8000plus.si", true }, { "8001d.com", true }, { "8001d88.com", true }, { "8003pay.com", true }, { "8006d.com", true }, { "8006d88.com", true }, - { "8007d88.com", true }, { "800999.xyz", true }, + { "800bar.com", true }, + { "800email.com", true }, { "800ink.com", true }, + { "800live.com", true }, + { "800mattress.com", true }, { "800perkins.com", true }, + { "800sports.com", true }, + { "800tea.com", true }, + { "800tutor.com", true }, { "8010d88.com", true }, { "8012d88.com", true }, { "8017d.com", true }, @@ -4152,7 +4834,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8020d88.com", true }, { "8021d.com", true }, { "8022d.com", true }, - { "8026d88.com", true }, { "8027d.com", true }, { "8028d.com", true }, { "8028d88.com", true }, @@ -4165,11 +4846,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "80365365.com", false }, { "8036d88.com", true }, { "8038d88.com", true }, + { "803970.com", true }, { "8039d.com", true }, - { "804322.com", true }, { "8050d.com", true }, { "8059d88.com", true }, - { "805hao.com", false }, { "8060d88.com", true }, { "80630.com", true }, { "8069d88.com", true }, @@ -4177,26 +4857,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8077d.com", true }, { "80780780.com", true }, { "8078d.com", true }, - { "807hao.com", false }, { "807software.com", true }, { "8081d.com", true }, { "808cleanups.org", true }, - { "808hao.xyz", false }, + { "808gutterking.com", true }, { "808mao.com", true }, { "809088.cc", true }, { "8091.info", true }, { "8092d88.com", true }, { "8093d.com", true }, - { "809422.com", true }, { "8097d.com", true }, { "80993.net", true }, - { "809hao.com", false }, { "80bin.com", true }, - { "80daysofsummer.be", true }, - { "80kittens.net", true }, { "80motorsclub.tk", true }, + { "80thcork.com", true }, { "81.cz", true }, - { "8100d.com", true }, + { "8100.cf", true }, { "8102d.com", true }, { "8102d88.com", true }, { "8106365.com", false }, @@ -4208,39 +4884,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "811fsspentagon.com", true }, { "8121d.com", true }, { "8121d88.com", true }, - { "812221.com", true }, { "8128d.com", true }, { "8129d.com", true }, { "8130d88.com", true }, - { "8132365.com", false }, { "8135d88.com", true }, { "81365365.com", false }, - { "81365b.com", true }, - { "81365c.com", true }, - { "81365d.com", true }, - { "81365e.com", true }, - { "81365f.com", true }, - { "81365g.com", true }, - { "81365h.com", true }, - { "81365i.com", true }, - { "81365j.com", true }, - { "81365k.com", true }, - { "81365l.com", true }, - { "81365m.com", true }, - { "81365n.com", true }, - { "81365o.com", true }, - { "81365p.com", true }, - { "81365q.com", true }, - { "81365r.com", true }, { "81365s.com", true }, - { "81365t.com", true }, - { "81365u.com", true }, - { "81365v.com", true }, - { "81365w.com", true }, - { "81365x.com", true }, - { "81365y.com", true }, { "8139d.com", true }, - { "814022.com", true }, { "8151d.com", true }, { "8153365.com", false }, { "8153d.com", true }, @@ -4254,9 +4904,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8162d.com", true }, { "8167365.com", false }, { "816jz.com", true }, + { "817181.com", true }, { "8171d.com", true }, { "817209.com", false }, { "8173d.com", true }, + { "817615.com", true }, { "8176d.com", true }, { "8178d.com", true }, { "81818app.com", false }, @@ -4268,11 +4920,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8183d.com", true }, { "8183d88.com", true }, { "8186d.com", true }, - { "8189196.com", true }, { "8189d.com", true }, { "818bwf.com", true }, { "8190d.com", true }, { "8190d88.com", true }, + { "819323.com", true }, { "8193d.com", true }, { "8193d88.com", true }, { "8196d.com", true }, @@ -4281,7 +4933,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8198d.com", true }, { "8198d88.com", true }, { "81alarm.cz", true }, - { "81d88.com", true }, { "81klima.cz", true }, { "81klima.sk", true }, { "81uc.com", true }, @@ -4295,7 +4946,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8211d88.com", true }, { "8216d.com", true }, { "8216d88.com", true }, - { "8217d.com", true }, { "8217d88.com", true }, { "8218d88.com", true }, { "8219d88.com", true }, @@ -4306,6 +4956,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8226d.com", true }, { "8228d.com", true }, { "8229d88.com", true }, + { "823582.com", true }, { "82365a.com", true }, { "82365b.com", true }, { "82365c.com", true }, @@ -4332,14 +4983,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "82365x.com", true }, { "82365y.com", true }, { "82365z.com", true }, - { "827774.com", true }, + { "825148.com", true }, + { "825382.com", true }, + { "826282.com", true }, + { "826382.com", true }, { "82781111.com", false }, { "82783333.com", false }, { "82784444.com", false }, { "82785555.com", false }, { "82786666.com", false }, { "82789999.com", false }, - { "8278a.com", false }, { "8278b.com", false }, { "8278bb.com", false }, { "8278ee.com", false }, @@ -4351,23 +5004,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8278rr.com", false }, { "8278tt.com", false }, { "8278yy.com", false }, + { "829882.com", true }, + { "829917.com", true }, { "82fss.com", true }, { "82fss.marketing", true }, { "82kb88.com", true }, + { "830891.com", true }, + { "830res.com", true }, + { "831783.com", true }, { "832365.com", true }, { "83365365.com", true }, { "833792.com", false }, { "833z6.com", true }, { "834365.com", true }, { "8349822.com", true }, + { "835183.com", true }, + { "836436.com", true }, + { "838180.com", true }, + { "838888.net", true }, { "83i.de", true }, { "83ir2k8b.duckdns.org", true }, { "83kb88.com", true }, { "84036.ml", true }, - { "842365.com", false }, { "842844.com", true }, + { "8444.cf", true }, { "846773.com", true }, - { "847773.com", true }, { "848jz.com", true }, { "848sf.com", true }, { "84ag.com", true }, @@ -4381,12 +5042,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "84cx.com", true }, { "84dp.com", true }, { "84dt.com", true }, - { "84eg.com", true }, { "84ek.com", true }, { "84et.com", true }, { "84ew.com", true }, - { "84ez.com", true }, - { "84fd.com", true }, { "84fe.com", true }, { "84fi.com", true }, { "84ft.com", true }, @@ -4400,22 +5058,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "84hp.com", true }, { "84hs.com", true }, { "84ia.com", true }, - { "84if.com", true }, - { "84jl.com", true }, { "84jt.com", true }, { "84kc.com", true }, - { "84kl.com", true }, { "84kn.com", true }, { "84kq.com", true }, { "84lb.com", true }, - { "84lh.com", true }, { "84pg.com", true }, - { "84qx.com", true }, { "84rd.com", true }, { "84rn.com", true }, { "84sg.com", true }, - { "84sr.com", true }, - { "84sv.com", true }, { "84tn.com", true }, { "84tp.com", true }, { "84tw.com", true }, @@ -4428,64 +5079,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "84yd.com", true }, { "84yj.com", true }, { "84yp.com", true }, - { "84yq.com", true }, { "84yv.com", true }, { "84yw.com", true }, { "84zb.com", true }, - { "84zu.com", true }, { "850226.com", true }, - { "8521.me", true }, + { "8521.co", false }, { "8522hk.com", true }, { "8522ph.com", true }, { "8522top.com", true }, { "8522tw.com", true }, { "8522usa.com", true }, { "8560.be", true }, + { "8586cp.com", true }, { "86001688.com", true }, { "8602010.com", true }, - { "861kb.com", true }, + { "864686.com", true }, { "8649955.com", true }, { "8649966.com", true }, { "8649977.com", true }, + { "86606.com", true }, { "866300.vip", true }, { "866305.vip", true }, { "866308.vip", true }, { "866341.com", true }, { "8666321.com", true }, - { "8666ks.com", true }, { "866z6.com", true }, + { "867104.com", true }, { "8688fc.com", true }, { "868z6.com", true }, { "8699bet.com", true }, - { "869kb.com", true }, { "86kb88.com", true }, { "86metro.ru", true }, - { "870.cc", true }, - { "8722cn.com", true }, + { "870.cc", false }, + { "872291.com", true }, { "8722ph.com", true }, { "8722usa.com", true }, + { "872787.com", true }, + { "873394.com", true }, { "87365365.com", false }, { "87577.com", true }, + { "877027.com", false }, + { "877287.com", true }, { "877791.com", true }, - { "878365bb.com", true }, + { "878365bb.com", false }, { "878365c.com", true }, { "878365cn.com", true }, { "878365ii.com", true }, { "878365jj.com", true }, { "878365ll.com", true }, { "878365nn.com", true }, + { "878431.com", true }, { "878989.com", true }, { "8796.jp", true }, { "8799bet.com", true }, { "87kb88.com", true }, - { "88-eline.com", true }, - { "88-line.com", true }, { "8800.ru", true }, + { "880557.com", true }, { "8806d.com", true }, { "8809d.com", true }, { "8809d88.com", true }, { "8809ks.com", true }, - { "881-line.com", true }, { "8815d.com", true }, { "88168365.com", true }, { "8816d.com", true }, @@ -4494,7 +5147,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8817d88.com", true }, { "8818k3.com", true }, { "881z6.com", true }, - { "8822d88.com", true }, { "8826d.com", true }, { "8826d88.com", true }, { "88321365.com", false }, @@ -4510,14 +5162,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "885kb.com", true }, { "885z6.com", true }, { "8860d.com", true }, - { "8861ks.com", true }, { "88661234.com", true }, - { "886666f.com", true }, + { "886666f.com", false }, { "886666l.com", false }, - { "886666n.com", false }, - { "886666p.com", false }, + { "886666n.com", true }, + { "886666p.com", true }, { "886666q.com", true }, - { "886666r.com", true }, + { "886666r.com", false }, { "886666s.com", true }, { "886666t.com", false }, { "886666u.com", false }, @@ -4532,7 +5183,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8871d.com", true }, { "8872d.com", true }, { "88740b.com", true }, - { "88740d.com", true }, { "88740e.com", true }, { "88740f.com", true }, { "88740i.com", true }, @@ -4563,14 +5213,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "888700.xyz", true }, { "888789j.com", true }, { "888806.xyz", true }, + { "88881.pw", false }, { "888888722.com", true }, { "88889822.com", true }, { "888900.xyz", true }, { "8889ks.com", true }, - { "888b58.com", false }, { "888bet86.com", true }, { "888bwf.com", true }, - { "888funcity.net", true }, + { "888casino-canada.com", true }, + { "888starz-5b.bet", true }, + { "888starz.bet", true }, + { "888starz22.bet", true }, { "888xpjxpj.com", false }, { "8890d.com", true }, { "8891d.com", true }, @@ -4592,10 +5245,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "889vip9.com", true }, { "889w889.com", true }, { "889w889.net", true }, + { "88acesmaritime.com", true }, { "88bet86.com", true }, + { "88bill.com", true }, { "88cakescorner.com", true }, { "88d.com", true }, { "88djl.cc", true }, + { "88ffaaa.com", true }, + { "88ffbbb.com", true }, + { "88ffccc.com", true }, + { "88ffddd.com", true }, + { "88ffeee.com", true }, + { "88fffaa.com", true }, + { "88fffbb.com", true }, + { "88fffcc.com", true }, + { "88fffdd.com", true }, + { "88fffee.com", true }, + { "88fffgg.com", true }, + { "88fffhh.com", true }, + { "88fffii.com", true }, + { "88fffjj.com", true }, + { "88fffkk.com", true }, + { "88fffll.com", true }, + { "88fffmm.com", true }, + { "88fffnn.com", true }, + { "88fffoo.com", true }, + { "88fffpp.com", true }, + { "88fffqq.com", true }, + { "88fffrr.com", true }, + { "88fffss.com", true }, + { "88ffftt.com", true }, + { "88fffuu.com", true }, + { "88fffvv.com", true }, + { "88fffww.com", true }, + { "88fffxx.com", true }, + { "88fffyy.com", true }, + { "88fffzz.com", true }, + { "88ffggg.com", true }, + { "88ffhhh.com", true }, + { "88ffiii.com", true }, + { "88ffjjj.com", true }, + { "88ffkkk.com", true }, + { "88fflll.com", true }, + { "88ffmmm.com", true }, + { "88ffnnn.com", true }, + { "88ffooo.com", true }, + { "88ffppp.com", true }, + { "88ffqqq.com", true }, + { "88ffrrr.com", true }, + { "88ffsss.com", true }, + { "88ffttt.com", true }, + { "88ffuuu.com", true }, + { "88ffvvv.com", true }, + { "88ffwww.com", true }, + { "88ffxxx.com", true }, + { "88ffyyy.com", true }, + { "88ffzzz.com", true }, { "88home9.com", true }, { "88kb88.com", true }, { "88laohu.cc", true }, @@ -4610,32 +5315,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "88yule13.com", true }, { "88yule15.com", true }, { "88yule16.com", true }, - { "88yule3.com", true }, - { "88yule6.com", true }, { "88yule7.com", true }, { "88yule9.com", true }, + { "8900.cf", true }, { "8900d.com", true }, { "890238.com", true }, { "8906d.com", true }, + { "890789d.com", true }, { "8908d.com", true }, { "8919d.com", true }, - { "8920d.com", true }, { "8921d.com", true }, { "8925d.com", true }, { "8925d88.com", true }, { "8926d88.com", true }, - { "8927d.com", true }, { "8927d88.com", true }, { "8929d88.com", true }, - { "893067.com", true }, - { "89365t.com", true }, + { "893067.com", false }, { "89386.com", true }, - { "89386b.com", true }, - { "89386d.com", true }, + { "89386b.com", false }, + { "89386d.com", false }, { "89386e.com", true }, { "89386l.com", true }, { "8938885.com", true }, { "893fm.com.au", true }, + { "894324.com", true }, + { "895865.com", true }, { "8966bet.com", true }, { "897774.com", true }, { "8977bet.com", true }, @@ -4649,6 +5353,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8ballbombom.uk", true }, { "8balls.nl", true }, { "8bet86.com", true }, + { "8bit.ltd", true }, + { "8bitpickle.com", true }, { "8bitsafe.com", true }, { "8cent.com", true }, { "8crafty.com", true }, @@ -4656,20 +5362,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8daysaweek.tk", true }, { "8duhu.com", true }, { "8e8z.com", true }, + { "8fit.com", true }, { "8freeporn.com", true }, + { "8fs000.com", true }, + { "8fs111.com", true }, + { "8fs222.com", true }, + { "8fs333.com", true }, + { "8fs444.com", true }, + { "8fs555.com", true }, + { "8fs666.com", true }, + { "8fs777.com", true }, + { "8fs888.com", true }, + { "8fs999.com", true }, { "8gaming.net", true }, { "8gerd.tk", true }, { "8hrs.net", true }, { "8l.com.au", true }, + { "8link.com", true }, { "8maerz.at", true }, { "8me.nl", true }, - { "8o8wave.com", true }, + { "8mpay.com", true }, + { "8points9seconds.com", true }, { "8shequapp.com", true }, + { "8show.com", true }, { "8t8.eu", true }, { "8tech.com.hk", true }, { "8thportsmouth.org.uk", true }, + { "8thstreetlatinas.com", true }, + { "8time.com", true }, { "8tuffbeers.com", true }, { "8ung.online", true }, + { "8xx.io", false }, { "8xx888.com", true }, { "8xxxxxxx.com", true }, { "8y.network", true }, @@ -4678,32 +5401,209 @@ static const nsSTSPreload kSTSPreloadList[] = { { "8yun.ga", false }, { "9-11commission.gov", true }, { "9.lviv.ua", true }, + { "90.cx", true }, + { "9002.cf", true }, + { "9003.cf", true }, + { "9004.cf", true }, + { "9005.cf", true }, { "9005424.com", true }, + { "9006.cf", true }, + { "9007.cf", true }, { "9009019.com", false }, { "900hosting.com", true }, { "900k8.com", true }, { "900pk.com", true }, + { "9011.cf", true }, + { "9012.cf", true }, + { "9013.cf", true }, + { "9014.cf", true }, + { "9015.cf", true }, { "901543.com", true }, + { "9016.cf", true }, + { "9018.cf", true }, + { "9019.cf", true }, + { "902.gr", true }, + { "9020.cf", true }, + { "9021.cf", true }, { "9021.io", true }, - { "903422.com", true }, - { "905422.com", true }, + { "9022.cf", true }, + { "9023.cf", true }, + { "9023n.com", true }, + { "9023w.com", true }, + { "9024.cf", true }, + { "9025.cf", true }, + { "9026.cf", true }, + { "9028.cf", true }, + { "9029.cf", true }, + { "9030.cf", true }, + { "9031.cf", true }, + { "9032.cf", true }, + { "9033.cf", true }, + { "9034.cf", true }, + { "9035.cf", true }, + { "9036.cf", true }, + { "9037.cf", true }, + { "9038.cf", true }, + { "9039.cf", true }, + { "9040.cf", true }, + { "9041.cf", true }, + { "9042.cf", true }, + { "9043.cf", true }, + { "9044.cf", true }, + { "9045.cf", true }, + { "9046.cf", true }, + { "9047.cf", true }, + { "9048.cf", true }, + { "9049.cf", true }, + { "9050.cf", true }, + { "9051.cf", true }, + { "9052.cf", true }, + { "9053.cf", true }, + { "9055.cf", true }, + { "9056.cf", true }, + { "9057.cf", true }, + { "9058.cf", true }, + { "9059.cf", true }, + { "9060.cf", true }, + { "9061.cf", true }, + { "9062.cf", true }, + { "9063.cf", true }, + { "9064.cf", true }, + { "9065.cf", true }, + { "9066.cf", true }, + { "9067.cf", true }, + { "9068.cf", true }, + { "9069.cf", true }, + { "9070.cf", true }, + { "9070989.com", true }, + { "9071.cf", true }, + { "9073.cf", true }, + { "9074.cf", true }, + { "9075.cf", true }, + { "9076.cf", true }, + { "9077.cf", true }, + { "9078.cf", true }, + { "907856.com", true }, + { "9079.cf", true }, + { "9080.cf", true }, + { "9081.cf", true }, + { "9082.cf", true }, + { "9085.cf", true }, + { "9086.cf", true }, + { "9087.cf", true }, + { "9088.cf", true }, + { "9090.cf", true }, + { "9091.cf", true }, { "90920.cn", true }, + { "9093.cf", true }, + { "9094.cf", true }, + { "9095.cf", true }, + { "9096.cf", true }, + { "9097.cf", true }, + { "9098.cf", true }, { "90daydiet.org", true }, + { "90minut.com", true }, { "90r.jp", true }, { "90splease.com", true }, + { "9100.cf", true }, + { "9100.ga", true }, + { "9100.gq", true }, + { "9100.ml", true }, + { "9101.cf", true }, + { "9102.cf", true }, + { "9103.cf", true }, + { "9104.cf", true }, + { "9105.cf", true }, + { "9106.cf", true }, + { "910635.com", true }, + { "9107.cf", true }, + { "9108.cf", true }, + { "9109.cf", true }, { "911.gov", true }, { "9111s.ru", true }, { "911216.xyz", true }, + { "9113.cf", true }, + { "9114.cf", true }, + { "9115.cf", true }, + { "9116.cf", true }, + { "9117.cf", true }, { "9118.com", true }, { "9118.hk", false }, + { "9118.la", true }, + { "91181.cc", true }, + { "91186.cc", true }, { "9118inc.com", false }, { "911commission.gov", true }, - { "912422.com", true }, - { "9132365.com", true }, - { "913422.com", true }, - { "9137365.com", false }, - { "914122.com", true }, + { "911dispatcheredu.org", true }, + { "911pestpatrol.com", true }, + { "9120.cf", true }, + { "9121.cf", true }, + { "912191.com", true }, + { "9122.cf", true }, + { "9123.cf", true }, + { "9124.cf", true }, + { "9125.cf", true }, + { "9126.cf", true }, + { "9127.cf", true }, + { "912791.com", true }, + { "912891.com", true }, + { "9129.cf", true }, + { "912912.xyz", true }, + { "9130.cf", true }, + { "9131.cf", true }, + { "9132.cf", true }, + { "913291.com", true }, + { "9133.cf", true }, + { "913391.com", true }, + { "9134.cf", true }, + { "9135.cf", true }, + { "9136.cf", true }, + { "913691.com", true }, + { "9137.cf", true }, + { "9139.cf", true }, + { "9140.cf", true }, + { "9141.cf", true }, + { "9142.cf", true }, + { "9143.cf", true }, + { "9144.cf", true }, + { "9145.cf", true }, + { "9146.cf", true }, + { "9147.cf", true }, + { "9148.cf", true }, + { "9149.cf", true }, + { "9150.cf", true }, + { "9151.cf", true }, + { "9152.cf", true }, + { "9153.cf", true }, + { "9154.cf", true }, + { "9155.cf", true }, + { "9156.cf", true }, + { "9157.cf", true }, + { "9159.cf", true }, + { "915991.com", true }, + { "9160.cf", true }, + { "9161.cf", true }, + { "9162.cf", true }, + { "916294.com", true }, + { "9164.cf", true }, + { "9165.cf", true }, + { "9166.cf", true }, + { "9167.cf", true }, + { "9168.cf", true }, + { "9169.cf", true }, + { "9170.cf", true }, + { "9171.cf", true }, + { "9172.cf", true }, + { "9173.cf", true }, + { "9174.cf", true }, + { "9175.cf", true }, + { "9176.cf", true }, + { "9177.cf", true }, + { "9179.cf", true }, + { "917991.com", true }, { "918-siteinfo.com", true }, + { "9180.cf", true }, + { "9181.cf", true }, { "918116.com", true }, { "9181181.com", true }, { "9181182.com", true }, @@ -4713,38 +5613,124 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9181186.com", true }, { "9181187.com", true }, { "9181189.com", true }, + { "9182.cf", true }, { "9182289.com", true }, - { "9186.fun", false }, + { "9183.cf", true }, + { "9184.cf", true }, + { "9185.cf", true }, + { "9186.fun", true }, { "9186119.com", true }, + { "9187.cf", true }, + { "918991.com", true }, + { "918991a.com", false }, + { "918991b.com", false }, + { "918991c.com", false }, + { "918991d.com", false }, + { "918991dhz.com", false }, + { "918991e.com", false }, { "918bbm.co", true }, { "918bcf.co", true }, { "918bcw.co", true }, { "918bio.co", true }, { "918bip.co", true }, { "918bis.co", true }, - { "918crr.com", false }, { "918dc04.com", true }, { "918dc19.com", true }, + { "918kisse.com", true }, { "918kissinw.com", true }, - { "919422.com", true }, - { "919898.com", true }, + { "9190.cf", true }, + { "919101.xyz", true }, + { "919102.xyz", true }, + { "919103.xyz", true }, + { "919104.xyz", true }, + { "919105.xyz", true }, + { "919106.xyz", true }, + { "919107.xyz", true }, + { "919108.xyz", true }, + { "919109.xyz", true }, + { "919110.xyz", true }, + { "9193.cf", true }, + { "919391.com", true }, + { "9194.cf", true }, + { "9195.cf", true }, + { "9197.cf", true }, + { "9198.cf", true }, + { "91bbr.com", true }, + { "91beauty.com", true }, { "91d52.com", true }, { "91d72.com", true }, { "91d81.com", true }, { "91d83.com", true }, { "91d85.com", false }, + { "91dh.cc", false }, + { "91fashion.com", true }, { "91fldz.com", true }, { "91imh.com", true }, - { "91milk.net", true }, + { "91milk.net", false }, { "91news.tk", true }, + { "91quanji.com", true }, { "91tianmi.com", false }, { "91tvg.com", true }, - { "924322.com", true }, - { "924622.com", true }, + { "9200.cf", true }, + { "9200.ml", true }, + { "9201.cf", true }, + { "9202.cf", true }, + { "9203.cf", true }, + { "920392.com", true }, + { "9204.cf", true }, + { "9205.cf", true }, + { "9206.cf", true }, + { "9207.cf", true }, + { "9208.cf", true }, + { "9209.cf", true }, + { "9210.cf", true }, + { "9212.cf", true }, + { "9214.cf", true }, + { "9215.cf", true }, + { "9216.cf", true }, + { "9217.cf", true }, + { "921792.com", true }, + { "9218.cf", true }, + { "921892.com", true }, + { "9219.cf", true }, + { "9220.cf", true }, + { "9221.cf", true }, + { "9223.cf", true }, + { "9224.cf", true }, + { "9225.cf", true }, + { "9226.cf", true }, + { "9227.cf", true }, + { "9228.cf", true }, + { "9230.cf", true }, + { "9231.cf", true }, + { "9232.cf", true }, + { "9233.cf", true }, + { "9234.cf", true }, + { "9235.cf", true }, + { "9236.cf", true }, + { "923601.com", true }, + { "9237.cf", true }, + { "9239.cf", true }, + { "9240.cf", true }, + { "9241.cf", true }, + { "9242.cf", true }, + { "9243.cf", true }, + { "9245.cf", true }, + { "924592.com", true }, + { "9246.cf", true }, + { "9247.cf", true }, + { "924892.com", true }, + { "924992.com", true }, + { "925892.com", true }, { "925silverjewelry.com", true }, - { "926422.com", true }, - { "927774.com", true }, + { "926792.com", true }, + { "927092.com", true }, + { "927892.com", true }, + { "928092.com", true }, + { "928492.com", true }, + { "928592.com", true }, { "929349.com", true }, + { "929592.com", true }, { "9297.co", true }, { "9297a.co", true }, { "9297aa.co", true }, @@ -4804,11 +5790,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9297z.co", true }, { "9297zz.co", true }, { "92url.com", true }, - { "931422.com", true }, - { "932422.com", true }, - { "933325.com", true }, - { "934122.com", true }, + { "9301.cf", true }, + { "9302.cf", true }, + { "9303.cf", true }, + { "9304.cf", true }, + { "9305.cf", true }, + { "9306.cf", true }, + { "9307.cf", true }, + { "9308.cf", true }, + { "9309.cf", true }, + { "9310.cf", true }, + { "9311.cf", true }, + { "9312.cf", true }, + { "9313.cf", true }, + { "9314.cf", true }, + { "9315.cf", true }, + { "931593.com", true }, + { "9316.cf", true }, + { "9317.cf", true }, + { "9318.cf", true }, + { "9319.cf", true }, + { "9320.cf", true }, + { "9321.cf", true }, + { "9322.cf", true }, + { "9323.cf", true }, + { "9324.cf", true }, + { "9325.cf", true }, + { "9326.cf", true }, + { "9327.cf", true }, + { "9328.cf", true }, + { "9329.cf", true }, + { "932993.com", true }, + { "9330.cf", true }, + { "9331.cf", true }, + { "9332.cf", true }, + { "9334.cf", true }, + { "9335.cf", true }, + { "9336.cf", true }, + { "9337.cf", true }, + { "9338.cf", true }, + { "9339.cf", true }, + { "9340.cf", true }, + { "9341.cf", true }, + { "9342.cf", true }, + { "9343.cf", true }, { "934365.com", true }, + { "9344.cf", true }, + { "9345.cf", true }, + { "9347.cf", true }, + { "9348.cf", true }, + { "9349.cf", true }, + { "9351.cf", true }, + { "9352.cf", true }, + { "9353.cf", true }, + { "9354.cf", true }, + { "9355.cf", true }, + { "9356.cf", true }, + { "9357.cf", true }, + { "9358.cf", true }, + { "9359.cf", true }, + { "935themix.com", true }, + { "9360.cf", true }, + { "9361.cf", true }, + { "9362.cf", true }, + { "9363.cf", true }, + { "9364.cf", true }, { "93644.com", false }, { "93644a.com", false }, { "93644b.com", false }, @@ -4817,7 +5863,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "93644x.com", false }, { "93644y.com", false }, { "93644z.com", false }, + { "9365.cf", true }, + { "9366.cf", true }, + { "9367.cf", true }, + { "9368.cf", true }, + { "9369.cf", true }, + { "9370.cf", true }, + { "937093.com", true }, + { "9371.cf", true }, + { "9372.cf", true }, + { "9373.cf", true }, + { "9374.cf", true }, + { "937493.com", true }, + { "9375.cf", true }, + { "9376.cf", true }, + { "937693.com", true }, + { "9377.cf", true }, + { "9378.cf", true }, + { "937893.com", true }, + { "9379.cf", true }, + { "9381.cf", true }, + { "938193.com", true }, + { "9382.cf", true }, + { "9383.cf", true }, + { "9384.cf", true }, + { "9385.cf", true }, + { "9386.cf", true }, + { "9387.cf", true }, + { "9388.cf", true }, + { "9389.cf", true }, + { "9390.cf", true }, + { "9391.cf", true }, + { "9392.cf", true }, + { "9393.cf", true }, { "939394.org", true }, + { "939394.xyz", true }, + { "939493.com", true }, + { "9395.cf", true }, + { "9396.cf", true }, + { "9397.cf", true }, { "9397a.com", true }, { "9397b.com", true }, { "9397bb.com", false }, @@ -4864,25 +5948,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9397yy.com", false }, { "9397z.com", false }, { "9397zz.com", false }, + { "9398.cf", true }, { "939wns.com", true }, { "93ag8.com", true }, { "93cq.com", true }, { "93jc.cn", true }, - { "940365.com", false }, + { "9401.cf", true }, + { "9402.cf", true }, + { "9403.cf", true }, + { "9404.cf", true }, + { "9405.cf", true }, + { "9406.cf", true }, + { "9407.cf", true }, + { "9409.cf", true }, + { "9410.cf", true }, + { "9411.cf", true }, + { "9412220.de", true }, + { "9417k.cf", true }, + { "9417k.com", true }, { "941988.cn", true }, - { "943022.com", true }, + { "943359.com", true }, + { "9444.cf", true }, { "9449-27a1-22a1-e0d9-4237-dd99-e75e-ac85-2f47-9d34.de", true }, - { "944cq.com", true }, - { "946022.com", true }, - { "946321.com", true }, - { "946422.com", true }, - { "946773.com", true }, + { "946773.com", false }, { "947cq.com", true }, - { "949022.com", true }, - { "949122.com", true }, - { "949622.com", true }, - { "949722.com", true }, - { "9499060.com", false }, + { "9499060.com", true }, { "9499066.com", true }, { "9499068.com", true }, { "9499113.com", true }, @@ -4892,11 +5982,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9499137.com", true }, { "9499151.com", true }, { "9499212.com", true }, - { "9499232.com", true }, + { "9499232.com", false }, { "9499238.com", true }, { "9499263.com", true }, { "9499278.com", true }, - { "9499293.com", true }, { "9499343.com", true }, { "9499369.com", true }, { "9499399.com", true }, @@ -4904,43 +5993,183 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9499459.com", true }, { "9499518.com", true }, { "9499558.com", true }, - { "9499565.com", true }, + { "9499565.com", false }, { "9499568.com", true }, { "9499575.com", true }, - { "9499668.com", false }, + { "9499668.com", true }, { "9499676.com", true }, { "9499682.com", true }, { "9499737.com", true }, - { "9499757.com", true }, + { "9499757.com", false }, { "9499835.com", true }, { "9499855.com", false }, { "9499869.com", true }, { "9499958.com", true }, - { "9499jjj.com", false }, + { "9499jjj.com", true }, { "9499l.com", true }, { "9499mmmm.com", true }, { "9499ttt.com", true }, { "9499xxx.com", true }, { "9499yl.com", true }, - { "94imk.com", true }, { "95-the-mix.com", true }, + { "9500.cf", true }, + { "9501.cf", true }, + { "9502.cf", true }, + { "9503.cf", true }, + { "9504.cf", true }, + { "9505.cf", true }, + { "9506.cf", true }, + { "9507.cf", true }, + { "9508.cf", true }, + { "9509.cf", true }, + { "9510.cf", true }, { "95105.com", true }, + { "95107.com", true }, { "95108.com", true }, - { "9528365.com", false }, + { "9511.cf", true }, + { "9512.cf", true }, + { "9513.cf", true }, + { "9514.cf", true }, + { "9515.cf", true }, + { "951562.com", true }, + { "9516.cf", true }, + { "9517.cf", true }, + { "9519.cf", true }, + { "951thebull.com", true }, + { "9522.cf", true }, + { "9523.cf", true }, + { "9524.cf", true }, + { "9525.cf", true }, + { "9528.cf", true }, + { "9529.cf", true }, + { "9531.cf", true }, + { "9532.cf", true }, + { "9533.cf", true }, + { "9534.cf", true }, + { "9535.cf", true }, + { "9536.cf", true }, + { "9537.cf", true }, + { "9538.cf", true }, + { "9539.cf", true }, + { "9540.cf", true }, + { "9541.cf", true }, + { "9542.cf", true }, + { "9543.cf", true }, + { "9544.cf", true }, + { "9545.cf", true }, + { "9546.cf", true }, + { "9547.cf", true }, + { "9548.cf", true }, + { "9549.cf", true }, + { "9550.cf", true }, + { "95500.com", true }, + { "9551.cf", true }, + { "95518.com", true }, { "95519.com", true }, + { "9552.cf", true }, + { "9553.cf", true }, + { "9554.cf", true }, { "95544.com", true }, { "95558.com", true }, + { "95559.com", true }, + { "9556.cf", true }, { "95566.com", true }, - { "95567.com", true }, { "95568.com", true }, + { "9557.cf", true }, { "95577.com", true }, + { "9558.cf", true }, + { "9559.cf", true }, + { "9560.cf", true }, + { "9561.cf", true }, + { "9562.cf", true }, + { "9564.cf", true }, + { "9565.cf", true }, + { "9566.cf", true }, + { "9567.cf", true }, + { "9568.cf", true }, + { "9569.cf", true }, { "956jj.com", false }, + { "9570.cf", true }, + { "95700.com", true }, + { "9571.cf", true }, + { "9572.cf", true }, + { "9573.cf", true }, + { "9574.cf", true }, + { "9575.cf", true }, + { "9576.cf", true }, + { "9578.cf", true }, + { "9579.cf", true }, + { "9580.cf", true }, { "95808.com", true }, + { "9581.cf", true }, + { "9582.cf", true }, + { "95828.com", true }, + { "9584.cf", true }, + { "9585.cf", true }, + { "9586.cf", true }, + { "95868457.xyz", true }, + { "9587.cf", true }, + { "9588.com.cn", true }, + { "9590.cf", true }, + { "9591.cf", true }, + { "9592.cf", true }, + { "9593.cf", true }, + { "9594.cf", true }, + { "9595.cf", true }, + { "9596.cf", true }, + { "959606.com", true }, + { "9597.cf", true }, + { "95996.com", true }, + { "9600.cf", true }, { "96002.com", false }, + { "9601.cf", true }, + { "9602.cf", true }, + { "9603.cf", true }, + { "960303.xyz", true }, + { "9604.cf", true }, + { "9605.cf", true }, + { "9606.cf", true }, + { "9607.cf", true }, + { "9608.cf", true }, + { "9609.cf", true }, { "960server.net.co", true }, + { "9610.cf", true }, + { "9611.cf", true }, + { "9612.cf", true }, + { "9613.cf", true }, + { "9614.cf", true }, + { "9615.cf", true }, + { "9616.cf", true }, + { "9617.cf", true }, { "9617818.com", true }, { "9617818.net", true }, - { "963cq.com", true }, + { "9618.cf", true }, + { "96181.com", true }, + { "9619.cf", true }, + { "9620.cf", true }, + { "96200.com", true }, + { "9621.cf", true }, + { "9622.cf", true }, + { "96220.com", true }, + { "96229.com", true }, + { "9623.cf", true }, + { "9624.cf", true }, + { "9625.cf", true }, + { "9626.cf", true }, + { "9628.cf", true }, + { "9629.cf", true }, + { "9630.cf", true }, + { "9631.cf", true }, + { "96316.com", true }, + { "9632.cf", true }, + { "9633.cf", true }, + { "963696.com", true }, + { "96448.com", true }, + { "964515.com", true }, + { "96577.com", true }, + { "96605.com", true }, + { "96606.com", true }, + { "96607.com", true }, { "96658.com", true }, { "96658.la", true }, { "9666ks.com", true }, @@ -4949,10 +6178,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "966kb.com", true }, { "966ty.com", true }, { "967606.com", true }, - { "9679693.com", true }, { "967you.com", true }, - { "9681909.com", true }, + { "96896.com", true }, + { "96961.com", true }, + { "9697cp.com", true }, + { "9700.cf", true }, + { "9701.cf", true }, + { "9702.cf", true }, + { "9703.cf", true }, + { "9705.cf", true }, + { "9706.cf", true }, + { "9707.cf", true }, + { "9708.cf", true }, + { "9709.cf", true }, { "970locksmithservices.tech", true }, + { "9710.cf", true }, + { "9711.cf", true }, + { "9712.cf", true }, + { "9714.cf", true }, + { "9716.cf", true }, + { "9717.cf", true }, + { "9718.cf", true }, + { "9719.cf", true }, + { "9720.cf", true }, { "9721a.com", false }, { "9721aa.com", false }, { "9721b.com", false }, @@ -4961,7 +6209,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9721cc.com", false }, { "9721d.com", false }, { "9721dd.com", false }, - { "9721dh.com", false }, + { "9721dh.com", true }, { "9721e.com", false }, { "9721ee.com", false }, { "9721ff.com", true }, @@ -5000,7 +6248,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9721xx.com", false }, { "9721z.com", false }, { "9721zz.com", false }, - { "972422.com", true }, + { "9722.cf", true }, + { "9723.cf", true }, + { "9724.cf", true }, + { "9725.cf", true }, + { "9726.cf", true }, + { "9727.cf", true }, + { "9728.cf", true }, { "9728.com", true }, { "9728a.co", true }, { "9728aa.co", true }, @@ -5010,7 +6264,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9728cc.co", true }, { "9728d.co", true }, { "9728dd.co", true }, - { "9728dh.com", false }, + { "9728dh.com", true }, { "9728dns.com", true }, { "9728dz.com", true }, { "9728e.co", true }, @@ -5060,16 +6314,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9728yy.co", true }, { "9728z.co", true }, { "9728zz.co", true }, + { "9729.cf", true }, + { "972citizenjournalism.org", true }, + { "972mag.com", true }, + { "9730.cf", true }, + { "9731.cf", true }, + { "9732.cf", true }, + { "9733.cf", true }, + { "973325.com", true }, + { "9734.cf", true }, + { "9735.cf", true }, + { "9736.cf", true }, + { "9737.cf", true }, + { "9738.cf", true }, + { "9739.cf", true }, + { "9740.cf", true }, + { "9741.cf", true }, + { "9742.cf", true }, + { "9743.cf", true }, + { "9744.cf", true }, + { "9745.cf", true }, + { "9746.cf", true }, + { "9747.cf", true }, + { "9748.cf", true }, + { "9749.cf", true }, + { "9750.cf", true }, + { "9751.cf", true }, + { "9752.cf", true }, + { "9753.cf", true }, + { "9754.cf", true }, + { "9756.cf", true }, + { "9757.cf", true }, + { "9758.cf", true }, + { "9759.cf", true }, + { "976-tuna.com", true }, + { "9760.cf", true }, + { "9761.cf", true }, + { "9764.cf", true }, + { "9765.cf", true }, + { "9766.cf", true }, + { "9767.cf", true }, { "97736.com", true }, { "97738.com", false }, - { "97739.com", true }, { "977kb.com", true }, - { "9788876.com", true }, { "97bros.com", true }, { "97m.cc", true }, { "9800.cc", true }, + { "9801.cf", true }, { "980709.xyz", true }, { "9822.am", true }, + { "9822.bz", false }, { "9822am.com", true }, { "9822cn.com", true }, { "9822hk.com", true }, @@ -5078,27 +6372,101 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9822usa.com", true }, { "982zzz.com", true }, { "984.ch", true }, + { "985684.com", true }, { "9859365.com", false }, { "985ccc.com", true }, { "986ccc.com", true }, { "9877bet.com", true }, { "987987.com", true }, + { "987kisscountry.com", true }, { "988.gov", true }, + { "9882258.com", true }, { "988316.com", true }, + { "9883358.com", true }, + { "9884458.com", true }, + { "98877.com", true }, + { "98944448.com", true }, + { "98944449.com", true }, + { "98944555.com", true }, + { "98944666.com", true }, + { "98944888.com", true }, + { "98999555.com", true }, + { "98999666.com", true }, { "98e.site", true }, { "98laba.com", false }, { "98laba.net", false }, + { "9901.cf", true }, + { "9901.ml", true }, + { "9902.cf", true }, + { "9902.ml", true }, + { "9903.cf", true }, { "990313.xyz", true }, - { "9918883.com", true }, + { "9904.cf", true }, + { "9904.ml", true }, + { "9905.cf", true }, + { "9905.ml", true }, + { "9906.cf", true }, + { "9906.ml", true }, + { "9907.cf", true }, + { "9908.cf", true }, + { "9908.ml", true }, + { "9909.cf", true }, + { "9910.cf", true }, + { "9912.cf", true }, + { "9913.cf", true }, + { "9914.cf", true }, + { "9915.cf", true }, + { "9917.cf", true }, + { "9918.cf", true }, + { "9920.cf", true }, + { "9921.cf", true }, + { "9923.cf", true }, + { "9925.cf", true }, + { "9926.cf", true }, + { "9927.cf", true }, + { "9928.cf", true }, { "992ccc.com", true }, + { "9930.cf", true }, + { "9931.cf", true }, + { "9932.cf", true }, { "99321365.com", false }, { "9933445.com", true }, + { "9934.cf", true }, + { "9935.cf", true }, + { "9936.cf", true }, { "99365t.com", true }, + { "9937.cf", true }, + { "9938.cf", true }, + { "9939.cf", true }, + { "9940.cf", true }, + { "9941.cf", true }, + { "9941y.top", true }, + { "9942.cf", true }, + { "9943.cf", true }, { "99456j.com", false }, + { "9946.cf", true }, + { "9947.cf", true }, + { "9948.cf", true }, + { "9949.cf", true }, + { "9950.cf", true }, + { "9951.cf", true }, { "99511.fi", true }, - { "99599.fi", true }, - { "99599.net", true }, + { "9952.cf", true }, + { "9953.cf", true }, + { "9954.cf", true }, + { "9957.cf", true }, + { "9958.cf", true }, + { "9959.cf", true }, + { "99599.fi", false }, + { "99599.net", false }, { "995ccc.com", true }, + { "9961.cf", true }, + { "9962.cf", true }, + { "9963.cf", true }, + { "9964.cf", true }, + { "9965.cf", true }, + { "9967.cf", true }, + { "9968.cf", true }, { "9968101.com", false }, { "9968110.com", false }, { "9968121.com", false }, @@ -5131,16 +6499,117 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9968love.com", false }, { "9968xl.com", true }, { "9968xpj.com", false }, + { "9969.cf", true }, + { "9970.cf", true }, + { "9971.cf", true }, + { "9972.cf", true }, + { "9973.cf", true }, + { "9974.cf", true }, + { "9975.cf", true }, + { "9976.cf", true }, { "9977432.com", true }, + { "9978.cf", true }, + { "9979.cf", true }, { "997z6.com", true }, - { "998081.com", true }, + { "9980.cf", true }, + { "9982.cf", true }, + { "9983.cf", true }, + { "9984.cf", true }, + { "9986.cf", true }, { "998sa.com", true }, { "998wei.com", true }, { "998wns.com", true }, { "998z6.com", true }, + { "999003.xyz", true }, + { "999004.xyz", true }, + { "999005.xyz", true }, + { "9990058.com", true }, + { "999006.xyz", true }, + { "999008.xyz", true }, + { "999011.xyz", true }, + { "999014.xyz", true }, + { "999015.xyz", true }, + { "999016.xyz", true }, + { "999017.xyz", true }, + { "999018.xyz", true }, + { "999019.xyz", true }, + { "999021.xyz", true }, + { "999023.xyz", true }, + { "999024.xyz", true }, + { "999025.xyz", true }, + { "999026.xyz", true }, + { "999027.xyz", true }, + { "999028.xyz", true }, + { "999029.xyz", true }, + { "999030.xyz", true }, + { "999031.xyz", true }, + { "999032.xyz", true }, + { "999033.xyz", true }, + { "999034.xyz", true }, + { "999035.xyz", true }, + { "999036.xyz", true }, + { "999037.xyz", true }, + { "999038.xyz", true }, + { "999040.xyz", true }, + { "999041.xyz", true }, + { "999042.xyz", true }, + { "999043.xyz", true }, + { "999044.xyz", true }, + { "999045.xyz", true }, + { "999046.xyz", true }, + { "999047.xyz", true }, + { "999048.xyz", true }, + { "999049.xyz", true }, + { "999050.xyz", true }, + { "999051.xyz", true }, + { "999052.xyz", true }, + { "999053.xyz", true }, + { "999054.xyz", true }, + { "999055.xyz", true }, + { "999056.xyz", true }, + { "999057.xyz", true }, + { "999058.xyz", true }, + { "999059.xyz", true }, + { "999060.xyz", true }, + { "999061.xyz", true }, + { "999062.xyz", true }, + { "999063.xyz", true }, + { "999064.xyz", true }, + { "999065.xyz", true }, + { "999067.xyz", true }, + { "999068.xyz", true }, + { "999070.xyz", true }, + { "999072.xyz", true }, + { "999073.xyz", true }, + { "999074.xyz", true }, + { "999075.xyz", true }, + { "999076.xyz", true }, + { "999078.xyz", true }, + { "999079.xyz", true }, + { "999080.xyz", true }, + { "999081.xyz", true }, + { "999082.xyz", true }, + { "999083.xyz", true }, + { "999084.xyz", true }, + { "999085.xyz", true }, + { "999086.xyz", true }, + { "999089.xyz", true }, + { "999092.xyz", true }, + { "999093.xyz", true }, + { "999094.xyz", true }, + { "999095.xyz", true }, + { "999096.xyz", true }, + { "999097.xyz", true }, + { "999098.xyz", true }, + { "9991.cf", true }, + { "9991158.com", true }, + { "9992258.com", true }, { "999321365.com", true }, + { "9993358.com", true }, { "999365t.com", true }, + { "9994.cf", true }, { "9994553.com", true }, + { "9995558.com", true }, { "999700.xyz", true }, { "999814.com", true }, { "9998722.com", true }, @@ -5148,21 +6617,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "99998522.com", true }, { "99999822.com", true }, { "999998722.com", true }, - { "99999999977.rocks", true }, - { "999b58.com", false }, { "999bet86.com", true }, { "999btt.net", true }, { "999salon.co", true }, { "999salon.com", true }, { "999zlong.com", true }, - { "99billionaire.com", true }, + { "99bt.com", true }, { "99buffets.com", true }, { "99casinos.com", true }, + { "99dog.com", true }, + { "99ffaaa.com", true }, + { "99ffbbb.com", true }, + { "99ffccc.com", true }, + { "99ffddd.com", true }, + { "99ffeee.com", true }, + { "99fffaa.com", true }, + { "99fffbb.com", true }, + { "99fffcc.com", true }, + { "99fffdd.com", true }, + { "99fffee.com", true }, + { "99fffgg.com", true }, + { "99fffhh.com", true }, + { "99fffii.com", true }, + { "99fffjj.com", true }, + { "99fffkk.com", true }, + { "99fffll.com", true }, + { "99fffmm.com", true }, + { "99fffnn.com", true }, + { "99fffoo.com", true }, + { "99fffpp.com", true }, + { "99fffqq.com", true }, + { "99fffrr.com", true }, + { "99fffss.com", true }, + { "99ffftt.com", true }, + { "99fffuu.com", true }, + { "99fffvv.com", true }, + { "99fffww.com", true }, + { "99fffxx.com", true }, + { "99fffyy.com", true }, + { "99fffzz.com", true }, + { "99ffggg.com", true }, + { "99ffhhh.com", true }, + { "99ffiii.com", true }, + { "99ffjjj.com", true }, + { "99ffkkk.com", true }, + { "99fflll.com", true }, + { "99ffmmm.com", true }, + { "99ffnnn.com", true }, + { "99ffooo.com", true }, + { "99ffppp.com", true }, + { "99ffqqq.com", true }, + { "99ffrrr.com", true }, + { "99ffsss.com", true }, + { "99ffttt.com", true }, + { "99ffuuu.com", true }, + { "99ffvvv.com", true }, + { "99ffwww.com", true }, + { "99ffxxx.com", true }, + { "99ffyyy.com", true }, + { "99ffzzz.com", true }, + { "99firms.com", true }, { "99furnitureideasandtips.gq", true }, { "99furnitureideasexamples.ga", true }, { "99laptops.com", true }, { "99lib.net", true }, + { "99music.com", true }, { "99naturalfoods.de", true }, + { "99perf.com", true }, { "99qp.org", true }, { "99rst.org", true }, { "99sitedesign.com", true }, @@ -5173,17 +6694,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9bet86.com", true }, { "9ccn.top", true }, { "9de.net", true }, - { "9dragonstea.com", true }, - { "9elements.com", true }, + { "9elements.com", false }, + { "9etl.com", true }, { "9farm.com", true }, + { "9fruit.com", true }, { "9fvip.net", true }, { "9gag.com", true }, { "9hosts.net", true }, { "9i0.com", true }, { "9iwan.net", true }, { "9jajuice.com", true }, - { "9k233.com", true }, - { "9k258.com", true }, { "9k262.com", true }, { "9k267.com", false }, { "9k268.com", true }, @@ -5196,7 +6716,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9k339.com", true }, { "9k373.com", true }, { "9k376.com", true }, - { "9k378.com", true }, { "9k379.com", true }, { "9k387.com", true }, { "9k388.com", true }, @@ -5249,7 +6768,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9k859.com", true }, { "9k862.com", true }, { "9k865.com", true }, - { "9k866.com", false }, + { "9k866.com", true }, { "9k867.com", true }, { "9k869.com", true }, { "9k872.com", true }, @@ -5257,7 +6776,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9k875.com", true }, { "9k877.com", true }, { "9k879.com", true }, - { "9k882.com", true }, { "9k883.com", true }, { "9k885.com", true }, { "9k886.com", true }, @@ -5273,30 +6791,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "9l.com.au", true }, { "9lab.jp", true }, { "9mp.ro", true }, - { "9nu.org", true }, + { "9nu.org", false }, { "9pkfz.com", true }, { "9point6.com", true }, { "9riddles.com", true }, { "9saves.com", true }, { "9ss6.com", false }, { "9sw.de", true }, + { "9tailedkitsune.com", true }, + { "9tl.ru", true }, { "9to5linux.com", true }, { "9to5notes.in", true }, - { "9uelle.jp", true }, + { "9uelle.jp", false }, { "9ungnir.xyz", true }, { "9vnd.com", true }, { "9vx.org", true }, + { "9xbuddy.com", true }, + { "9xbuddy.xyz", true }, + { "9xmoviesapp.com", true }, { "9yw.me", true }, { "9zlatan9.tk", true }, { "a-1waterproofing.com", true }, - { "a-actor.com", true }, - { "a-air.com.ua", true }, - { "a-allard.be", true }, - { "a-better-planet.com", true }, + { "a-allard.be", false }, + { "a-better-planet.com", false }, { "a-busty.com", true }, { "a-care.net", true }, { "a-classinflatables.co.uk", true }, - { "a-development.se", true }, { "a-dish.com", true }, { "a-frique.com", true }, { "a-fx.ru", true }, @@ -5305,9 +6825,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a-hitoduma.com", true }, { "a-invest.de", true }, { "a-ix.net", true }, + { "a-lexx.de", true }, { "a-little-linux-box.at", true }, + { "a-louest.info", true }, { "a-moe.com", true }, - { "a-msystems.com", true }, { "a-oben.org", true }, { "a-players.team", true }, { "a-pools.com.ua", true }, @@ -5318,7 +6839,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a-systems.ru.com", true }, { "a-up.info", true }, { "a-wife.net", true }, - { "a-ztransmission.com", true }, { "a.ac", true }, { "a.tt", true }, { "a.wtf", true }, @@ -5326,17 +6846,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a04gameapp.com", true }, { "a04webapp.com", true }, { "a05webapp.com", true }, + { "a06.ch", true }, + { "a06.me", true }, { "a06gameapp.com", true }, { "a06webapp.com", true }, { "a0print.nl", true }, + { "a1.ro", true }, { "a11ybadges.com", true }, { "a11ywatch.com", true }, { "a122.cc", true }, - { "a12k.nz", true }, + { "a12k.nz", false }, { "a163.top", true }, - { "a1a.com.ua", true }, { "a1bouncycastlehire.com", true }, { "a1cashforcar.com.au", true }, + { "a1cdrinks.com", true }, + { "a1cookingequipment.com.au", true }, { "a1demolitionhauling.com", true }, { "a1earthworks.com.au", true }, { "a1expresscarremoval.com.au", true }, @@ -5348,23 +6872,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a1scrapmetalrecyclers.com.au", true }, { "a1scuba.com", true }, { "a1seowebdirectory.com", false }, + { "a1solarstore.com", true }, { "a1spareparts.com.au", true }, + { "a1speedyrooter.com", true }, { "a1websitepro.com", true }, { "a210.online", true }, { "a22z.xyz", true }, { "a24dmng.de", true }, + { "a24help.ru", true }, { "a2a.me", true }, { "a2c-co.net", true }, { "a2censo.com", true }, { "a2ch.ru", true }, { "a2g.io", true }, { "a2gamer.com", true }, - { "a2ls.ru", true }, { "a2os.club", true }, { "a2ssrl.duckdns.org", true }, - { "a2zcatalog.com", true }, + { "a2zplumbing.com.au", true }, { "a2zva.com", true }, { "a30.tokyo", false }, + { "a340.com", true }, { "a356.top", true }, { "a36533.com", true }, { "a365vip2.com", false }, @@ -5373,12 +6900,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a365vip9.com", false }, { "a3m.gmbh", true }, { "a3mobile.com", true }, - { "a3r2.se", true }, { "a3sys-elodie.fr", true }, + { "a4.com", true }, { "a4sound.com", true }, { "a5197.co", true }, - { "a567.top", true }, { "a632079.me", true }, + { "a64.me", true }, { "a66.la", false }, { "a6619.com", true }, { "a6621.com", true }, @@ -5406,7 +6933,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "a789.top", true }, { "a7m2.me", true }, { "a7sa2eat.com", true }, - { "a81365.com", true }, { "a82365.com", true }, { "a88fc.com", true }, { "a899365.com", false }, @@ -5428,14 +6954,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aa9728.co", true }, { "aaa-racing.com", true }, { "aaa-racing.net", true }, + { "aaa.ma", true }, { "aaa.my", true }, { "aaa.ua", true }, { "aaablindfactory.com", true }, { "aaacomms.com", true }, + { "aaahosting70.de", true }, { "aaainfosystems.com", true }, { "aaapl.com", true }, + { "aaaplumbers.com", true }, { "aaapo.com.br", true }, - { "aaaportaserve.com", false }, + { "aaapucrio.com.br", true }, { "aabanet.com.br", true }, { "aabeltech.com", true }, { "aabenjaminjewelry.com", false }, @@ -5444,45 +6973,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aachen-quiz.de", true }, { "aacs-design.com", true }, { "aad-gp.com", true }, + { "aadhibaat.org", true }, { "aadl.ga", true }, { "aadv.com.br", true }, - { "aaex.uk", true }, { "aaflalo.me", true }, { "aagetransport.no", true }, + { "aahhbali.com", true }, { "aajkakavi.in", false }, { "aakf.org.pk", true }, { "aalalbayt.com", true }, { "aalalbayt.net", true }, + { "aalaslearninglibrary.org", true }, { "aalborgoutdoor.dk", true }, - { "aalborgroklub.dk", true }, { "aalen.tk", true }, { "aalianbinhaider.ml", true }, { "aaliyahclothing.com", true }, + { "aalright.org", true }, { "aalstmotors-usedcars.be", true }, { "aaltocapital.com", true }, { "aaltocapital.de", true }, { "aaltocapital.fi", true }, - { "aalvarezs.com", false }, { "aama.tk", true }, + { "aamlive.com", true }, { "aamt.es", true }, + { "aamva.org", true }, { "aan-shop.co.il", true }, { "aandachtsmeditatie.nl", true }, + { "aandeautobody.com", true }, { "aandkevents.co.uk", true }, { "aanhuisgebakken.tk", true }, { "aanlynskool.co.za", true }, { "aanwp.com", true }, { "aanyasri.com", true }, + { "aaogaragedoorrepairaustin.com", true }, { "aaomidi.com", true }, { "aaoth.xyz", true }, { "aapant.org.au", true }, { "aapar.nl", true }, + { "aapifund.org", true }, + { "aapipower.org", false }, + { "aappb.org", true }, { "aappe.fr", false }, { "aaprotocol.tk", true }, + { "aarailfan.com", true }, { "aardvarksoep.nl", true }, { "aareptan.ch", true }, + { "aarestation.ch", true }, { "aarhus-protein.dk", true }, { "aarhusinside.dk", true }, { "aariefhaafiz.com", true }, + { "aarisings.com", true }, { "aarklendoia.com", true }, { "aarkue.eu", false }, { "aaron-gustafson.com", true }, @@ -5491,20 +7031,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aaron-smith-cpa.com", true }, { "aaronbonine.com", true }, { "aaronburrows.com", true }, + { "aaronchiangmd.com", true }, { "aaronfurtado.com", true }, { "aaronhorler.com", true }, { "aaronkimmig.de", true }, { "aaronmaar.de", true }, { "aaronosmani.com", true }, { "aaronr.digital", true }, - { "aaronroyle.com", true }, { "aarons.law", true }, { "aaronsilber.me", true }, { "aaronspain.tk", true }, { "aarontechnology.net", true }, { "aarquiteta.com.br", true }, { "aarsen.me", true }, - { "aarsunwoods.com", true }, + { "aarsunwoods.com", false }, { "aartbouman.nl", true }, { "aarvinproperties.com", true }, { "aarwer.com", true }, @@ -5514,22 +7054,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aati.be", true }, { "aati.info", true }, { "aattrans.com", true }, + { "aau.edu", true }, { "aautoline.tk", true }, { "aavaa.org", true }, { "aave.com", false }, { "aavienna.com", true }, { "aavstudio.com", true }, { "aawt.net.au", false }, + { "aax.com", true }, + { "aayan.com", true }, { "aayub.xyz", true }, { "ab-design.tk", true }, - { "ab-mfbnigeria.com", false }, { "ab-pflege.de", true }, - { "ab-photography.nl", false }, { "ab-solutepilates.com", true }, + { "ab-uk.com", true }, { "ab-west.tk", true }, { "ab288.com", true }, { "ab2888.cn", true }, - { "ab28s.com", true }, { "ab2web.com", true }, { "ab91corp.com", true }, { "abaapplianceservice.com", true }, @@ -5537,20 +7078,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ababyco.com.hr", true }, { "abaca.bar", true }, { "abaco.cr", true }, + { "abaconappliancerepairs.co.za", true }, { "abacross.com", true }, { "abacus-essen.de", true }, { "abacus-marketing.uk", true }, + { "abacus.ai", false }, + { "abacus.com", true }, { "abacusbouncycastle.co.uk", true }, { "abacusfi.com", true }, { "abacuslouisville.com", true }, + { "abacuste.ch", true }, { "abacustech.co.jp", true }, { "abacustech.jp", true }, + { "abacustech.net", true }, + { "abacustech.org", true }, { "abadie-architecture.com", true }, { "abaev.uk", true }, + { "abahanavillas.com", true }, { "abalsa.tk", true }, { "abambo.tk", true }, + { "abancommercials.com", true }, { "abandoned-zone.tk", true }, - { "abandoned.photo", true }, { "abandoned.tk", true }, { "abandonedmines.gov", true }, { "abanico.tk", true }, @@ -5566,20 +7114,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abashevo.tk", true }, { "abasite.tk", true }, { "abasky.net", true }, + { "abasteo.mx", true }, { "abastor.tk", true }, { "abateroad66.it", true }, { "abattepeluqueriacitas.com", true }, { "abay-today.tk", true }, - { "abazola.cl", true }, - { "abbadabbabouncycastles.co.uk", true }, { "abbas.ch", true }, + { "abbaye-chaise-dieu.com", true }, { "abbevillecountysc.gov", true }, + { "abbeycarefoundation.com", true }, { "abbeyvetspets.co.uk", true }, + { "abbl.com", true }, { "abborsjo.fi", true }, { "abbotkinneys.com", true }, { "abbottscastles.co.uk", true }, { "abbreviated-adult-course.com", true }, - { "abbruch-star.de", true }, { "abbtw.com", true }, { "abbuc.de", true }, { "abbyairsoft.tk", true }, @@ -5587,21 +7136,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abbyvangrinsven.co.nz", true }, { "abc-kinderbetreuung.at", true }, { "abc-people.tk", true }, + { "abc-pneupascher.eu", true }, { "abc-rz.de", true }, { "abc.li", true }, { "abc001.ga", true }, { "abc123autumn.com", true }, + { "abc15.com", true }, { "abcbouncyfactory.co.uk", true }, - { "abcbusinesspark.com.br", true }, { "abcc.dk", true }, + { "abccomputerservices.com", false }, { "abcdreamusa.com", true }, { "abcdthesis.net", true }, { "abceducationacademy.com", true }, { "abcempreendimentos.com.br", true }, { "abcensax.tk", true }, + { "abcfinance.co.uk", false }, { "abcgruppen.se", true }, { "abch2o.net", true }, { "abcheck.se", true }, + { "abcideabased.com", true }, { "abcine.tk", true }, { "abckam.com", true }, { "abclyrics.tk", true }, @@ -5633,7 +7186,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abdullahavci.com", true }, { "abdullahavci.com.tr", true }, { "abdullahavci.net.tr", true }, + { "abdullahavci.org.tr", true }, { "abdullahzubayerofficial.ml", true }, + { "abdulraheem.org", true }, + { "abdulraheemalick.com", true }, { "abdulrahman.eu", true }, { "abdulwahaab.ca", true }, { "abduramshad.ml", true }, @@ -5641,11 +7197,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abdurrehman.tk", true }, { "abe-elektro.de", true }, { "abe-medical.jp", true }, + { "abecedarios.co", true }, { "abecodes.net", true }, { "abecon.com.br", true }, + { "abeervinum.it", true }, { "abeestrada.com", false }, + { "abeilleduhain.be", true }, { "abeilles-idapi.fr", false }, { "abelbarretto.tk", true }, + { "abella.ro", true }, + { "abelladangerpornstar.com", true }, { "abellagranitecountertops.com", true }, { "abellao.com", true }, { "abelles.cf", true }, @@ -5657,10 +7218,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abemarx.hu", true }, { "abenteuer-ahnenforschung.de", true }, { "abenteuerschule4u.eu", true }, + { "abenteuerteam.de", true }, { "abeontech.com", true }, { "aber.travel", true }, { "aberdeenalmeras.com", true }, - { "aberdeencastles.co.uk", true }, { "aberdeencriticalmass.tk", true }, { "aberon.pl", true }, { "aberrantvascular.tk", true }, @@ -5668,30 +7229,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abetterdeath.com", true }, { "abetterwichita.org", true }, { "abeus.com", true }, + { "abfluss.com", true }, { "abg.ninja", true }, { "abgame.it", true }, { "abgeo.ga", true }, { "abgrafstenen.nl", true }, + { "abhaken.com", true }, { "abhaldus.ee", true }, + { "abhayaranya.com", true }, { "abhijit.today", true }, { "abhijitvalluri.com", true }, { "abhisharma.me", true }, { "abhishekkabdijain.tk", true }, + { "abhy.net", true }, { "abi-2017.tk", true }, { "abi-fvs.de", true }, { "abi95oha.de", true }, { "abiapp.net", true }, { "abibliasagrada.tk", true }, - { "abibruce.co.uk", true }, { "abidinginhesed.com", true }, { "abierta.cr", true }, + { "abigailfriedland.com", true }, { "abigailstark.com", true }, { "abigisp.com", true }, { "abigruppe.de", true }, + { "abileneef.org", true }, { "abilenemachine.com", true }, { "abilities-inc.jp", true }, - { "abilitycaresoftware.com", true }, - { "abilitylifesolutions.com", true }, { "abilityone.gov", true }, { "abilix.tk", true }, { "abilma.com", true }, @@ -5699,8 +7263,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abilympics.org.au", true }, { "abimelec.com", false }, { "abinferis.com", true }, - { "abinferis.net", true }, + { "abinmetall.ru", true }, { "abinyah.com", true }, + { "abirmas.com", true }, { "abitaspringsla.gov", true }, { "abitech.tk", true }, { "abitextra.eu", true }, @@ -5710,8 +7275,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abiturient-test.tk", true }, { "abiturma.de", true }, { "abkhazianews.tk", true }, + { "abl.com", true }, + { "ablauf.com", true }, { "ablebits.com", true }, { "ablecha.tk", true }, + { "ablehorsehandlers.au", true }, + { "ablehorsehandlers.com", true }, + { "ablehorsehandlers.com.au", true }, + { "ablehorsehandlers.net.au", true }, + { "ablehorsetransport.au", true }, + { "ablehorsetransport.com", true }, + { "ablehorsetransport.com.au", true }, + { "ablehorsetransport.net.au", true }, + { "ableitungsrechner.net", true }, { "ableofficeadmin.com", true }, { "ableprop.net", true }, { "abli.at", true }, @@ -5723,22 +7299,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ablx.de", true }, { "abmackenzie.com", true }, { "abmahnhelfer.de", true }, + { "abmc.gov", true }, + { "abmelden.com", true }, { "abminiplex.in", true }, { "abminv.com", true }, { "abmledger.ca", true }, { "abn-consultants.ie", true }, - { "abnamropensioenen.nl", true }, + { "abnamropensioenen.nl", false }, { "abnarnro.com", false }, + { "abnbfcu.org", true }, { "abnehmen-sport-fitness.de", true }, - { "abnehmen.com", true }, { "abnobapetstore.co.uk", true }, { "abnradiofm.tk", true }, { "aboces.org", true }, { "aboderenovation.co.uk", false }, + { "abogadocriminalorlando.com", false }, { "abogadoperu.com", true }, { "abogadophd.com", true }, { "abogadoscav.com", true }, + { "abogadosescobarysanchez.es", true }, + { "abogadosviolenciagenero.es", true }, { "abogehad.tk", true }, + { "abol.us", true }, { "abolicionistas.com", true }, { "abolition.net", true }, { "abolitionism.ca", true }, @@ -5747,6 +7329,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abolitionism.in", true }, { "abolitionism.net", true }, { "abolitionism.us", true }, + { "abolitionist-movement.com", true }, { "abolitionist-project.com", true }, { "abolitionist-society.com", true }, { "abolitionist.ca", true }, @@ -5768,16 +7351,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abonilla.com", false }, { "aborla.net", true }, { "abormez.es", true }, + { "abortionprotest.org", true }, { "aborto.tk", true }, + { "abortopr.com", true }, { "abos.eu", false }, { "aboticaprodutosnaturais.com", true }, { "abouncycastleman.co.uk", true }, { "about-bangladesh.tk", true }, { "about-e-bags.tk", true }, + { "about-it.pl", true }, { "about-jewelry.tk", true }, { "about-sects-and-cults.tk", true }, { "about.gq", true }, { "about.photos", true }, + { "aboutadhd.com", true }, { "aboutajax.tk", true }, { "aboutamit.com", true }, { "aboutandroid.tk", true }, @@ -5815,23 +7402,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aboutwealthcreation.tk", true }, { "aboutyou.at", true }, { "aboutyou.be", true }, + { "aboutyou.bg", true }, { "aboutyou.ch", true }, { "aboutyou.com", true }, { "aboutyou.cz", true }, { "aboutyou.de", true }, + { "aboutyou.dk", true }, + { "aboutyou.ee", true }, + { "aboutyou.es", true }, + { "aboutyou.fi", true }, + { "aboutyou.gr", true }, + { "aboutyou.hr", true }, + { "aboutyou.hu", true }, + { "aboutyou.ie", true }, + { "aboutyou.it", true }, + { "aboutyou.lt", true }, + { "aboutyou.lv", true }, { "aboutyou.nl", true }, + { "aboutyou.no", true }, + { "aboutyou.pl", true }, + { "aboutyou.pt", true }, + { "aboutyou.ro", true }, + { "aboutyou.se", true }, { "aboutyou.si", true }, + { "aboutyou.sk", true }, { "aboveall.love", true }, - { "aboveaverageplumbing.com", true }, { "abovethefirehouse.com", true }, { "abox-kb.com", true }, - { "aboyle.ca", true }, + { "abpages.com", true }, { "abpis.hr", true }, { "abplive.com", true }, - { "abpoolsub.com", true }, + { "abplusz.hu", true }, { "abr.ru", true }, - { "abracadabra.co.jp", false }, { "abracadabra.com", true }, + { "abracadabramagicas.com.br", true }, { "abrah.am", true }, { "abrahamboray.tk", true }, { "abrahametalero.tk", true }, @@ -5839,10 +7443,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abramochkin.tk", true }, { "abramovich.tk", true }, { "abramowskimi.tk", true }, + { "abraofilho.blog.br", true }, { "abrarahmed.tk", true }, { "abraxan.pro", true }, { "abraxas-apis.ch", true }, { "abraxas-apps.ch", true }, + { "abre.cloud", true }, { "abreactive.com", true }, { "abreactive.net", true }, { "abreactive.org", true }, @@ -5850,21 +7456,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abrec.ga", true }, { "abrecenze.cz", true }, { "abri29.com", false }, - { "abrightsolution.co.uk", true }, { "abrilect.com", true }, - { "abristolgeek.co.uk", true }, { "abritek.ca", true }, + { "abrody.com", true }, { "abroferlendo.tk", true }, + { "abrolhosoctopus.com", true }, { "abrupt.co", true }, + { "abruptgames.com", true }, { "absat.tk", true }, - { "absb.ca", true }, - { "abschleppdienst-hilfe.de", true }, { "abschleppdienst-in-recklinghausen.de", true }, - { "absconse.com", true }, + { "abseher-technology.com", true }, { "abseits.org", false }, { "absentia.cf", true }, { "absinsurance.com", true }, - { "absintheaura.com", true }, { "absolab.xyz", true }, { "absolem.cc", true }, { "absoluav.com", true }, @@ -5873,12 +7477,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "absolugroupe.com", true }, { "absoluphoto.com", true }, { "absolute.com", true }, - { "absoluteautobody.com", true }, { "absolutebritney.com", true }, + { "absolutechristmas.com", true }, { "absolutedouble.co.uk", true }, { "absolutegames.ga", true }, { "absolutelybaching.com", true }, + { "absolutepackaging.net", true }, + { "absolutepondcare.com", true }, { "absoluterush.net", true }, + { "absoluteup.com.au", true }, { "absolutezero.tk", true }, { "absolution.ga", true }, { "absolutperm.tk", true }, @@ -5886,18 +7493,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abssoft.tk", true }, { "abstechs.ae", true }, { "abstimmen.online", true }, + { "abstract27.com", true }, { "abstractbarista.com", true }, { "abstractbarista.net", true }, + { "abstractive.ai", true }, { "abstractqatar.com", true }, { "abstudio.de", true }, { "absurdia.tk", true }, { "absurdopedia.wiki", true }, - { "absynthe-inquisition.fr", true }, { "absyscyborg.com", true }, { "abteam.tk", true }, { "abtech.link", true }, { "abteutonia.de", true }, { "abth.tk", true }, + { "abtherapy.co.uk", true }, { "abthorpe.org", true }, { "abtinheydari.tk", true }, { "abu-auftrag.ch", true }, @@ -5905,7 +7514,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abuahmed.ga", true }, { "abulanov.com", true }, { "abun-motorsport.tk", true }, - { "abundanteconomy.com", true }, { "abundent.com", true }, { "abusamraphotography.tk", true }, { "abuse.cat", true }, @@ -5913,9 +7521,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abuse.fi", true }, { "abuse.io", true }, { "abusive-host.tk", true }, + { "abuzihipnoterapi.com", true }, + { "abuziyadhsds.com", true }, { "abvent.net", false }, { "abvlbasketviganello.ch", false }, { "aby-action.com", true }, + { "abyaction.net", true }, { "abys.se", true }, { "abysra.com", true }, { "abyss.moe", true }, @@ -5924,8 +7535,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "abyssiniankitty.com", true }, { "abyssproject.net", true }, { "abysswebsite.tk", true }, - { "abyzebyzek.tk", true }, { "abzarkosaran.ir", true }, + { "abzunraid.com", true }, { "ac-admin.pl", true }, { "ac-booster.net", true }, { "ac-spain.tk", true }, @@ -5933,47 +7544,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ac.id.au", true }, { "ac.milan.it", true }, { "ac0g.dyndns.org", true }, + { "ac8.es", true }, { "acab.love", true }, + { "acachau.synology.me", true }, { "acacia-gardens.co.uk", true }, + { "acaciab.com", true }, { "academiacivilbalonmano.tk", true }, + { "academiacomercialalpina.com", true }, { "academiadelmolino.com.uy", true }, { "academiadeufologia.com.br", true }, { "academiaeureka.tk", true }, { "academiasdemodelos.com", true }, + { "academic-master.com", true }, { "academica.nl", true }, + { "academicassignmentexperts.com", true }, { "academichealthscience.net", true }, { "academichelp.gq", true }, { "academicperks.org", true }, + { "academie-angoumois.org", true }, { "academie-de-police.ch", false }, { "academika.tk", true }, { "academkin.com", true }, { "academy-awards.ml", true }, - { "academyof.com", true }, { "academyonlinetoyou.tk", true }, + { "academyruins.com", true }, { "academytv.com.au", true }, { "acadiate.com", true }, { "acaeum.com", false }, + { "acafellas.com", true }, { "acalcio.ga", true }, { "acallawayroofing.com", true }, - { "acalvio.com", true }, - { "acampar.com.br", true }, - { "acanbi.com", true }, + { "acaltair.com", true }, { "acandroid.top", true }, { "acani.xyz", true }, { "acaonegocios.com.br", true }, { "acapadena.co", true }, { "acapana.com", true }, + { "acapara.net", true }, { "acapellalanguage.tk", true }, { "acapetahua.tk", true }, { "acaptureservices.com", true }, { "acara-yoga.de", true }, + { "acara.edu.au", true }, { "acasadavella.tk", true }, { "acasadoprodutor.com.br", true }, { "acaseta.com", true }, { "acat.io", true }, { "acatec.de", true }, { "acatiimi.fi", true }, + { "acb.com.vn", true }, + { "acbcoop.com", true }, { "acbrussels-used.be", true }, + { "acbug2018.com", true }, { "accademia24.it", true }, { "accademiacimarosa.tk", true }, { "accademiadelgolden.com", true }, @@ -5981,34 +7603,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "accademiaprati.tk", true }, { "accademiapugilistica.it", true }, { "accadia.academy", true }, + { "accalendar17.net", true }, { "acccnyc.org", false }, { "accedeainternet.gov", true }, { "accedia-distribution.com", true }, { "accelaway.com", true }, - { "acceleranda.com", true }, + { "acceldigital.com.au", true }, { "acceleratedpayments.com", true }, { "acceleratedreading.cf", true }, { "acceleratethesale.com", true }, { "accelerateyourworld.org", true }, + { "accelerationsummit.com", true }, { "accelerator.nyc", true }, { "accelerator.tk", true }, { "accelsnow.com", true }, + { "accent-homedecor.com", true }, { "accentchair.net", true }, + { "accentsduterroir.fr", true }, + { "acceptthisrose.com", true }, { "acces-elevation.fr", true }, - { "accescites.fr", true }, { "accesloges.com", true }, + { "accesoriiutilaje.ro", true }, { "access-board.gov", true }, + { "access-nl.org", true }, { "access-not-allowed.gq", true }, { "access-odata.com", true }, { "access-token.tk", true }, { "accessacab.co.uk", true }, - { "accessauto-occasions.be", true }, + { "accessauto-occasions.be", false }, + { "accessauto.co.uk", true }, { "accesseap.com.au", true }, - { "accessgaragedoors.com", true }, { "accesshq.com", true }, { "accessibility.gov", true }, { "accessibilityguidelines.com", true }, { "accessibletravelclub.com", true }, + { "accessingram.com", true }, { "accessiware.com", true }, { "accesskeycloning.com", true }, { "accesslogisticgroup.com", true }, @@ -6016,20 +7645,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "accessnetworks.com", true }, { "accessoh.gov", true }, { "accessoirescheveuxchic.com", true }, + { "accessoklahoma.gov", true }, { "accessories-for-women.tk", true }, { "accessoriesautoparts.tk", true }, { "accessoripersmartphone.it", true }, + { "accesspress.org", true }, { "accesstosystem.cf", true }, { "acchan-fun.com", true }, + { "acchiappasognibedandbreakfast.it", true }, + { "accio.be", true }, { "accionesyreacciones.com", true }, { "accioninmobiliaria.tk", true }, { "acclivity.pro", true }, { "accme.co", true }, { "accolade.com.br", false }, { "accoladescreens.com.au", true }, - { "accomexicana.com.mx", true }, { "accomexico.com", true }, - { "accontabilidad.cl", true }, { "accord-application.com", true }, { "accordable.gq", true }, { "accordimento.de", true }, @@ -6037,20 +7668,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "accordius.com.au", true }, { "accordproject.tk", true }, { "account.bbc.com", true }, + { "account.gov.mo", true }, { "account.gov.uk", true }, + { "accountancymanager.co.uk", true }, + { "accountingedu.org", true }, { "accountmanager.tips", true }, { "accountmover.io", true }, { "accounts.firefox.com", true }, { "accounts.google.com", true }, + { "accountsfilingmadesimple.com", true }, { "accpl.co", true }, { "accpressurewashing.com", true }, { "accreditamento.net", true }, - { "accreditedproperty.com", true }, + { "accreditedbuildingservices.com", true }, + { "accreditedsafety.com", true }, + { "accretech.vn", true }, { "accrosoft.com", true }, + { "acct-affiliate.com", true }, { "accubitsdemo.ml", true }, + { "accudemia.net", true }, + { "accueil-paysan.com", true }, + { "accueillons.org", true }, { "acculex.co.uk", true }, { "acculongrange.com", true }, + { "accuracast.com", true }, + { "accuracast.de", true }, + { "accuracast.es", true }, + { "accuracast.fr", true }, { "accurateinfosolutions.in", true }, + { "accuride.com", true }, + { "accuritconsulting.com", true }, { "accurx.nhs.uk", true }, { "accurxinc.com", true }, { "accustandard.com", true }, @@ -6058,52 +7705,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "accutint.com", true }, { "accutone.com.mx", true }, { "accwing.com", true }, + { "acd-c.ru", true }, + { "acdc-tech.eu", true }, + { "acdc-tech.lv", true }, { "acdcbrasil.net", true }, { "acdk2.de", true }, { "ace-aegon.cloud", true }, { "ace-clan.tk", true }, - { "ace-familydental.com", true }, + { "ace-familydental.com", false }, { "ace-translations.tk", true }, + { "ace-uk.net", true }, { "ace-wiki.com", true }, { "ace.one", true }, { "ace0328.com", true }, - { "ace360.org", true }, { "aceai.com", true }, { "acealters.com", false }, { "aceanswering.com", true }, { "acebeam.com", true }, { "acebovirtual.tk", true }, + { "acecardiologyclinic.com", true }, { "acecerts.co.uk", true }, - { "aceconcept.net", true }, { "acectamentit.tk", true }, { "acedstudy.com", true }, { "acefishing.tk", true }, { "acefreightco.com", true }, + { "acefront.co.uk", true }, { "aceinflatables.com", true }, { "aceinstituteonline.com", true }, { "aceleraguria.com.br", true }, - { "aceleratuweb.com", true }, { "acelpb.com", true }, + { "acelyrin.com", true }, { "acem.org.au", true }, { "acemadeira.pt", true }, { "acemobileforce.com", true }, { "acemsa.ga", true }, { "acemypaper.com", true }, + { "acen.edu.au", true }, + { "acendas.com", true }, { "acendealuz.com.br", true }, { "aceofdiamondspainting.com", true }, + { "aceofheartsgiftbaskets.com", true }, { "aceparking.com", true }, + { "acepi.pt", true }, { "acercapartners.com", true }, - { "acerentalandsales.com", true }, { "acerislaw.com", true }, + { "acerosfortuna.com.mx", true }, { "aceshop702.com", true }, { "acessoeducacao.com", true }, - { "acetianyi.top", true }, { "acetudy.com", true }, { "aceweb.ga", true }, { "aceycity.ml", true }, { "acftienda.tk", true }, { "acfun.eu.org", true }, - { "acg.codes", true }, + { "acg.ac", true }, { "acg.mn", true }, { "acg.sb", false }, { "acgaudio.com", true }, @@ -6119,6 +7773,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acheconcursos.com.br", true }, { "achered.cf", true }, { "acheter-ethylotest.fr", true }, + { "acheter-louer.fr", true }, { "achicrip.org", true }, { "achievenewsfrance.tk", true }, { "achiever.ga", true }, @@ -6129,47 +7784,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "achill.org", true }, { "achinsk.tk", true }, { "achintyaesbee.tk", true }, + { "achireland.com", true }, { "achkandiro.ml", true }, { "achkandiro.tk", true }, + { "achl.fr", true }, { "achlochan.tk", true }, { "achmadfamily.com", true }, { "achmazstore.ir", true }, - { "achromatisch.de", true }, + { "achmea.com.au", true }, + { "achousaude.com.br", true }, + { "achromatisch.de", false }, + { "acht-pfade.de", true }, + { "achtenhagen.me", true }, { "achterblog.de", true }, { "achterhoekseveiligheidsbeurs.nl", true }, - { "achterstieg.dedyn.io", true }, + { "achtpfade.de", true }, { "achtzehn.de", true }, { "achtzehn.eu", true }, { "achtzig20.de", false }, { "achwo.de", true }, { "aciclovir.ga", true }, - { "acid.ninja", true }, { "acidchrist.tk", true }, { "acidoascorbico.com", true }, + { "acidtool.com", true }, + { "acierto.com", true }, { "acihotel.vn", true }, { "aciksite.com", true }, { "acilicraft.cn", true }, { "acina.fr", true }, + { "acingov.pt", true }, { "acinq.co", true }, - { "ackadia.com", true }, + { "acio.de", false }, + { "acisms.es", true }, + { "ack.tax", true }, { "ackermann.ch", true }, + { "ackermannevents.de", true }, + { "ackersplastering.co.uk", true }, { "acklandstainless.com.au", true }, { "acl.gov", true }, + { "aclandia.fr", true }, { "aclhire.com", true }, { "aclipt.com", true }, { "acloud.one", true }, { "acls13.fr", true }, { "aclu.org", false }, - { "acluva.org", false }, { "acm.vc", true }, { "acmebookkeepingsolutions.com", true }, - { "acmegamer.com", true }, { "acmilan.gq", true }, { "acmilan.ml", true }, - { "acnenaturalhealing.com", false }, + { "acnenaturalhealing.com", true }, { "acnj.gov", true }, { "acnjpolice.gov", true }, { "acnoventa.it", true }, + { "acobex.be", true }, { "acodess.com", true }, { "acodonline.be", true }, { "acolicy.com", true }, @@ -6178,45 +7845,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acomplia20mg.cf", true }, { "acopatableware.com", true }, { "acordes.online", true }, + { "acorespro.com", true }, { "acorncastles.co.uk", true }, - { "acorta.me", true }, + { "acornmetal.com.au", true }, { "acosa.com.gt", true }, - { "acosa.com.hn", true }, - { "acosa.com.sv", true }, { "acotadecalle.tk", true }, { "acourse.io", true }, { "acousticalsolutions.com", true }, - { "acousticbiotech.com", true }, + { "acousticandfire.co.uk", true }, { "acoustics.network", true }, { "acoustics.tech", true }, { "acousticsoundrecords.com", true }, { "acoustictabs.tk", true }, { "acoustique-tardy.com", false }, { "acovadamoura.tk", true }, + { "acp-integrative.fr", true }, { "acpbenefit.gov", true }, { "acpcoils.com", false }, { "acperu.ch", false }, { "acpica.org", true }, { "acpinformatique.fr", true }, + { "acpny.com", true }, { "acquadiparma.kr", true }, { "acquaparrucchieri.it", true }, { "acquari.roma.it", true }, { "acquasuisse.tk", true }, { "acquire.co.nz", true }, + { "acquirebpo.com", true }, { "acquireit.com.au", true }, { "acquisition.gov", true }, + { "acquisitiongateway.gov", true }, { "acquistorealestate.com", true }, + { "acraftedpassion.com", true }, { "acrealamendolara.tk", true }, { "acredperu.org", true }, + { "acreinfoco.com", true }, { "acrepairgeorgetown.com", true }, { "acrepairhutto.com", true }, { "acrepairroundrocktx.com", true }, - { "acrfashion.com.br", true }, { "acrhnc2020.dedyn.io", true }, { "acriticismlab.org", true }, + { "acroaccounting.au", true }, + { "acroballe-circus.fr", true }, { "acrobatic.cf", true }, { "acrobatic.tk", true }, + { "acrolife.cz", false }, { "acronis.com", true }, + { "acronis.events", true }, { "acronis.org", false }, { "acronis.work", true }, { "acropolis.edu.mx", true }, @@ -6233,8 +7908,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acsb.ro", false }, { "acsbbs.org", true }, { "acsc.gov.au", true }, + { "acscargo.ca", true }, { "acscbasket.com", true }, + { "acscu.net", true }, { "acsd-az.gov", true }, + { "acse.net", true }, { "acsemb.org", true }, { "acsihostingsolutions.com", false }, { "acsiresearch.com", true }, @@ -6242,10 +7920,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acsports.ca", true }, { "act-interactive.com", true }, { "act-news.com", true }, + { "act-on.com", true }, + { "act-web-sa.com", true }, { "actabg.net", true }, { "actacapital.com.au", true }, + { "actaflytt.se", true }, { "actc.org.uk", true }, - { "actdigital.agency", true }, + { "acteon.com", true }, { "actexpo.com", true }, { "actfleetforum.com", true }, { "actforrights.com", true }, @@ -6257,51 +7938,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "actievloerkleden.com", true }, { "actievloerkleden.nl", true }, { "actifii.com", true }, + { "actifiogo.com", true }, + { "actifyleads.com", true }, { "actigamer.pt", true }, { "actilove.ch", true }, { "actimap.ga", true }, { "acting.by", true }, { "actingcxo.com", true }, + { "action-education.org", true }, { "action-intell.com", true }, { "action-parapente.fr", true }, { "action-verite.fr", true }, - { "actionablefuturist.com", true }, + { "action.eu", true }, + { "action.nl", true }, { "actioncameraaccessories.ga", true }, { "actioncleaningnd.com", true }, - { "actioncoachignite.co.za", true }, { "actioncovid.nl", true }, { "actioncutprint.com", true }, + { "actionglasshouston.com", true }, { "actionlabs.net", true }, { "actionmadagascar.ch", false }, { "actionminecraft.tk", true }, { "actions.today", true }, { "actionsack.com", true }, { "actionsandreactions.com", true }, + { "actionsecuritycameras.com", true }, { "actionverb.com", true }, { "actiumhealth.com", true }, { "activat3rs.com", true }, { "activatenow.com", true }, + { "activationkeys.co", true }, + { "activationkeys.org", true }, { "activators.ml", true }, - { "active-baby.com", true }, { "active-english.tk", true }, { "active247.info", true }, { "activeaerogels.com", true }, { "activecare-monitor.com", false }, { "activeclearweb.com", true }, - { "activeexcavator.com", true }, + { "activeexcavator.com", false }, { "activegateball.tk", true }, + { "activehealth.com", true }, { "activehire.co.uk", true }, { "activeleisure.ie", true }, { "activelife.travel", true }, { "activenl.co.uk", true }, { "activephoto.se", true }, + { "activephysiohealth.com.au", true }, { "activeplatesystem.ga", true }, + { "activeprospect.com", true }, { "activespaceautomation.com", true }, { "activespacetech.com", true }, { "activetk.cf", true }, { "activetk.jp", true }, + { "activexperts.com", true }, { "activeyogi.tk", true }, - { "actividadesempresa.com", true }, { "activism.cf", true }, { "activiteithardenberg.nl", true }, { "activitesaintnicaise.org", true }, @@ -6312,12 +8002,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "activityhub.cloud", true }, { "activityhub.xyz", true }, { "activityinfo.org", true }, + { "activitypub.cyou", true }, + { "activityshelter.com", true }, + { "activlux.pt", true }, { "activohotels.com", true }, - { "activproject.ro", true }, + { "activosenlaweb.com", true }, + { "activpilot.at", true }, { "activs.ru", true }, { "actom.cc", true }, { "actonwoodworks.com", true }, { "actopan.tk", true }, + { "actoragecheck.com", true }, { "actoralcareprofessional.com", true }, { "actoresonlinevenezuela.tk", true }, { "actorsanthosh.tk", true }, @@ -6328,17 +8023,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "actro.ga", true }, { "actro.gq", true }, { "actronx.tk", true }, - { "actserv.co.ke", true }, { "actu-itech.cf", true }, { "actualadmins.com", true }, + { "actualidad-rt.com", true }, { "actualite-videos.com", true }, { "actualizarapp.com", false }, - { "actualpost.com", true }, { "actualprogressivevotersguide.com", true }, { "actualsizemusic.tk", true }, { "actualsolutions.am", true }, - { "actuatemedia.com", true }, + { "actus-banque.fr", true }, { "actuse.tk", true }, + { "actzero.ai", true }, { "acuarios.tk", true }, { "acuarismo-iquique.tk", true }, { "acuarius.tk", true }, @@ -6348,6 +8043,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aculocity.com", true }, { "acupofsalt.tv", true }, { "acupuncture.ml", true }, + { "acupuncturefoundation.com", true }, + { "acupuncturefoundation.org", true }, { "acupuntura.coach", true }, { "acupuntura.doctor", true }, { "acupuntura.institute", true }, @@ -6355,11 +8052,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acupunturavalencia.xyz", true }, { "acurapartswarehouse.com", true }, { "acus.gov", true }, - { "acusticocoffeehouse.com", true }, { "acutane.cf", true }, { "acutane.ga", true }, { "acutane.gq", true }, - { "acutehoest.nl", true }, { "acutewealthadvisors.com", true }, { "acutica.ro", true }, { "acutron.net", true }, @@ -6373,6 +8068,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "acyclovir-cream.cf", true }, { "acyclovir400mg.ml", true }, { "acytec.cl", true }, + { "ad-bp.top", true }, { "ad-disruptio.fr", false }, { "ad-education.com", true }, { "ad-notam.asia", true }, @@ -6387,42 +8083,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ad-notam.us", true }, { "ad-s.cn", true }, { "ad-web.tk", true }, + { "ad.nl", true }, { "ad13.in", true }, - { "ad4msan.com", true }, - { "ad5001.eu", true }, + { "ad4tube.com", true }, + { "ad5.io", true }, { "ada.eco", true }, { "ada.gov", true }, { "adab-mans.tk", true }, + { "adacomputerscience.org", true }, { "adacprod.fr", true }, { "adaera.com", true }, + { "adaeze-wolf.com", true }, + { "adagencycreatives.com", true }, { "adagia.eu", true }, - { "adaio.es", true }, - { "adaio.eu", true }, - { "adaio.net", true }, { "adalis.org", true }, { "adalite-staging-testnet.herokuapp.com", true }, { "adalite.io", true }, { "adaly.io", true }, { "adam-ant.co.uk", true }, { "adam-kostecki.de", true }, + { "adam.com", true }, { "adam.id.au", true }, { "adam.lgbt", true }, { "adam.pt", true }, { "adamabernathy.com", true }, - { "adamadr.com", true }, + { "adamandeveinc.in", true }, + { "adamant.ua", true }, + { "adamante.com.br", true }, { "adamas-magicus.ru", true }, { "adamaveray.com.au", true }, { "adambryant.ca", false }, { "adamcarbonell.com", true }, { "adamcoffee.net", true }, { "adamdixon.co.uk", true }, - { "adamdorman.com", true }, + { "adame.io", true }, + { "adameveplus.com", true }, + { "adamevevod.com", true }, { "adamfontenot.com", true }, { "adamgian.com", true }, - { "adamgibbins.com", true }, { "adamh.us", true }, - { "adamh.website", true }, + { "adamiok.online", true }, + { "adamj.eu", true }, { "adamjoycegames.co.uk", true }, + { "adamkissee.com", true }, { "adamkostecki.de", true }, { "adamlevine.ga", true }, { "adamliu.net", false }, @@ -6445,13 +8148,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adamstas.com", true }, { "adamsweb.tk", true }, { "adamwallington.co.uk", true }, - { "adamyuan.xyz", true }, - { "adappt.co.uk", true }, + { "adaoconde.art", true }, { "adapt-elektronik.com", true }, { "adapt-iq.co.nz", true }, { "adapt-iq.com", true }, - { "adaptationplatform.ca", true }, { "adapti.de", true }, + { "adaptimmune.com", true }, { "adaptiv.ltd", true }, { "adaptivecenter.net", true }, { "adaptiveequipment.com.au", true }, @@ -6460,31 +8162,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adaptivesite.cf", true }, { "adaptivesite.gq", true }, { "adaptiveu.io", true }, - { "adaptsolvents.com", true }, { "adaptyourlifeacademy.com", true }, { "adarixconsultores.com", true }, { "adarshcloud.in", true }, - { "adarshthapa.in", true }, - { "adarshthapa.net", true }, { "adarshthapa.org", true }, { "adarsvidler.me", true }, { "adasbench.com", true }, + { "adaselin.com", true }, + { "adata-c.kz", true }, { "adata.kz", true }, + { "adatitleiii.com", true }, { "adativos.com.br", true }, - { "adauge.com", true }, { "adawolfa.cz", true }, + { "adbanker.com", true }, { "adbexcavation.ca", true }, + { "adbglobal.com", true }, + { "adblock.ee", true }, { "adblockextreme.com", true }, { "adblockextreme.net", true }, { "adblockextreme.org", true }, { "adbpub.com", true }, + { "adc-dentalcare.com", true }, { "adc64.com", true }, { "adceuta.tk", true }, + { "adclickmedia.com", true }, { "adcnvs.com", true }, + { "adcoglazing.co.uk", true }, { "add-image.tk", true }, + { "add-in-express.com", true }, { "add-ons.co.uk", true }, + { "add.pics", true }, { "adda.io", true }, { "addag.de", true }, + { "addall.com", true }, { "addax.com.tr", true }, { "addbonus.ml", true }, { "addcrazy.com", true }, @@ -6492,44 +8202,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adderall.ml", true }, { "adderall.space", true }, { "addict.tk", true }, - { "addictedtolength.co.uk", true }, { "addictedtotravel.pl", true }, + { "addiction-counselors.com", true }, { "addictioncounsellors.co.nz", true }, { "addictionresource.com", true }, { "addictionsolutionsllc.com", true }, { "addictlaw.com", true }, + { "addictless.ru", true }, { "addictstore.it", true }, - { "addiko.rs", true }, + { "addiko.net", true }, { "addisoncrump.info", true }, { "addisonwi.gov", true }, + { "additioacademy.com", true }, { "addition.ml", true }, { "addlink.ga", true }, { "addlink.gq", true }, { "addmarketing.uk", true }, { "addmefast.tk", true }, { "addnewsite.tk", true }, - { "addnine.com", true }, + { "addnine.com", false }, { "addo-addo.com", true }, { "addon.watch", true }, { "addones.org", true }, + { "addownit.com", true }, { "addr.space", true }, { "addresstobe.com", true }, { "addscoop.ml", true }, { "addspi.com", true }, { "addstar.jp", false }, + { "addtelegrammember.com", true }, { "addtoany.com", true }, + { "adducation.info", true }, { "adduono.com", true }, { "addurls.tk", true }, + { "addviseo.com", true }, + { "addy.io", true }, { "addydari.us", true }, { "addymail.com", true }, { "addyourlink.tk", true }, { "ade-power.com", true }, { "adea.mx", true }, + { "adeabramihza.com", true }, { "adec-emsa.ae", true }, { "adeelshahid.tk", true }, - { "adel.lol", false }, - { "adelaidecc.com.au", false }, + { "adeex.co.uk", true }, + { "adeex.in", true }, + { "adeex.us", true }, + { "adeexaustralia.com", true }, + { "adelaidamountainresidences.ph", true }, { "adelaidecoldlaser.com.au", true }, + { "adelaidefestivalsquare.com.au", true }, { "adelapereira.com", true }, { "adeldz-foot.cf", true }, { "adelebeals.com", true }, @@ -6540,24 +8262,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adelina.com.br", false }, { "adeline.mobi", true }, { "adelonline.tk", true }, + { "adelphiawines.com", true }, { "ademaulana.tk", true }, - { "ademy.ml", true }, { "adenhurra.cf", true }, { "adenhurra.ml", true }, { "adenoma.tk", true }, { "adenopatia.com", true }, { "adenos.in", true }, { "adenplus1.com", false }, - { "adentalsolution.com", false }, { "adeon.ml", true }, { "adept-elearning.com", true }, { "adept.org.pl", true }, - { "adesa.co.uk", true }, { "adescb.ga", true }, { "adese.es", true }, { "adesex.in", true }, - { "adeshome.com", true }, + { "adeshome.com", false }, { "adesignguy.co.uk", true }, + { "adespresso.com", true }, { "adevel.eu", true }, { "adevo.be", true }, { "adex.network", true }, @@ -6565,7 +8286,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adf-safetytools.com", true }, { "adf.gov", true }, { "adfconsumer.gov.au", true }, + { "adfinternational.org", true }, { "adfisicateca.org", true }, + { "adflegal.org", true }, { "adfs.pro", true }, { "adftrasporti.it", true }, { "adfyl.tk", true }, @@ -6574,73 +8297,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adgh.ml", true }, { "adgift.ro", true }, { "adglue.io", true }, + { "adgreetz.com", true }, { "adh.org.au", true }, + { "adhadse.com", true }, { "adhd-explained.com", true }, { "adhd-inattentive.com", true }, - { "adhdsnap.com", true }, { "adhdyoga.ca", true }, - { "adhgroup.ug", true }, - { "adhidrm.me", false }, { "adhigamindia.com", true }, { "adhockery.ga", true }, { "adhocracy.plus", true }, - { "adhyayanclasses.com", true }, { "adi.com.au", true }, - { "adi.company", true }, { "adi.net.au", true }, + { "adiaz.us", true }, { "adib.family", true }, { "adictosdominantescdls.tk", true }, { "adidas-2020-spring.com", true }, - { "adidog.store", true }, { "adiehard.party", false }, { "adiesyndrome.tk", true }, { "adigolifestyle.com", true }, + { "adiguezel-bau-gmbh.de", true }, + { "adihomes.com", true }, { "adilsabri.tk", true }, { "adimaja.com", true }, + { "adimo.com.pl", true }, { "adimplere.com.br", true }, + { "adinaporter.com", true }, { "adinfinitum.gq", true }, { "adinternational.com.au", true }, + { "adiph.fr", true }, + { "adiph.org", true }, { "adiprospero.it", true }, { "adiraku.co.id", true }, { "adiscorduser.com", true }, - { "aditro.com", true }, + { "adit.com", true }, + { "adityaes.eu.org", true }, { "adityatelange.in", true }, - { "adiyamanarackiralama.com", true }, { "adiyamandanal.com", true }, { "adiyamanhaberleri.tk", true }, { "adje-fansite.tk", true }, { "adjudicating.tk", true }, + { "adjur.com.br", true }, + { "adjustablebeds.ca", true }, + { "adjustablebeds.org", true }, + { "adjusterpro.com", true }, { "adjustingoursails.com", true }, { "adjutor.xyz", true }, { "adkinvest.co.il", true }, { "adkwinefest.com", true }, - { "adlabz.com", true }, + { "adler-kornwestheim.de", true }, { "adlerneves.com", true }, { "adlerneves.com.br", true }, { "adlerosn.com", true }, { "adlerosn.com.br", true }, - { "adlerpapier.pl", true }, { "adlershop.ch", true }, { "adlignum.se", true }, { "adliomar.tk", true }, { "adm-sarov.ru", true }, - { "adme.co.il", true }, + { "admanmedia.fr", true }, + { "admglass.co.uk", true }, { "admicos.cf", true }, { "admin-gator.com", true }, { "admin-gator.net", true }, { "admin-serv.net", true }, + { "admin-wp.com", true }, + { "admin-wp.pl", true }, { "admin.academy", true }, { "admin.fedoraproject.org", true }, { "admin.google.com", true }, + { "admin.se", true }, { "admin.stg.fedoraproject.org", true }, + { "adminconnection.net", true }, { "admindaily.com", true }, { "adminforge.de", true }, - { "admingateway.net", true }, { "admingator.net", true }, { "admini.cl", true }, { "administracionessaez.es", true }, { "administradoresdefincasvalencia.net", true }, { "administradorvalencia.es", true }, + { "administraitor.video", true }, { "administrarmeusite.tk", true }, { "administratiekantoorblom.nl", true }, { "administrator.de", true }, @@ -6651,17 +8385,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adminlinux.pl", true }, { "admino.cz", true }, { "adminova.tk", true }, + { "adminplus.bg", true }, { "adminresurs.tk", true }, { "adminrezo.fr", false }, - { "adminton.eu", true }, + { "adminwells.com", true }, { "admirable.pro", false }, { "admody.com", true }, { "admongo.gov", true }, - { "admxj.com", true }, - { "adn-recrutement.fr", true }, + { "admstudio.co.uk", true }, + { "admus.pl", true }, { "adnanotoyedekparca.com", true }, + { "adndigital.com.br", true }, { "adnempresa.es", true }, { "adnexa.it", true }, + { "adnfiscal.com", true }, { "adnolesh.com", true }, { "adnotam.ch", true }, { "adnscript.tk", true }, @@ -6669,13 +8406,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adnsolutions.com", true }, { "adoll.ml", true }, { "adomani-italia.com", true }, - { "adomicilio.com.gt", false }, + { "adomicilio.gt", true }, + { "adonairelogios.com.br", true }, { "adondevamosmundo.com", true }, { "adonis.hosting", true }, { "adonisgrup.ro", true }, { "adonizer.science", true }, { "adonnante.com", false }, { "adontenchambers.com", true }, + { "adoperator.com", true }, { "adopt.tk", true }, { "adoptabeehive.co.uk", true }, { "adoptabeehive.com", true }, @@ -6686,29 +8425,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adoption.tk", true }, { "adoptionpregnancycenter.com", true }, { "adoptionpregnancycenter.net", true }, + { "adoptium.net", true }, + { "adorable-home.com", true }, { "adorade.ro", false }, { "adorai.tk", true }, { "adoran.ga", true }, { "adorecricket.com", true }, { "adores.gq", true }, - { "adorewe.com", true }, { "adorez.tk", true }, { "adoric.com", true }, + { "adorkable.eu", true }, + { "adorkable.social", true }, { "adorned.ga", true }, - { "adorno-gymnasium.de", true }, + { "adoropets.com.br", true }, { "adotta.me", true }, { "adoucishop.fr", true }, { "adoxy.com.br", true }, { "adpesp.org.br", true }, + { "adplist.org", true }, { "adpost.com", true }, - { "adprospb.com", false }, - { "adquisitio.co.uk", true }, - { "adquisitio.es", true }, + { "adpot.xyz", false }, + { "adr-stock.com", true }, { "adr.gov", true }, { "adrabataille.fr", false }, + { "adradio.ae", true }, { "adrafinil.wiki", true }, { "adrans.com", true }, { "adreaminsteel.tk", true }, + { "adreana.com", true }, { "adregain.com", true }, { "adregain.ru", true }, { "adrenalin.is", true }, @@ -6720,29 +8464,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adrian-riemer.tk", true }, { "adrian.web.id", true }, { "adrian2023.com", true }, + { "adrian2023.de", true }, + { "adrianachechikpornstar.com", true }, { "adrianadelrossi.com", true }, + { "adrianadelrossi.net", true }, { "adrianagonzalez.tk", true }, { "adrianajewelry.my", true }, { "adrianasantos.me", true }, { "adrianbartsch.de", true }, { "adrianbechtold.de", true }, + { "adrianbrad.com", true }, { "adriancitu.com", true }, { "adriancostin.ro", true }, { "adrianfeliciano.com", true }, { "adrianhardy.com", true }, { "adrianjensen.com", true }, - { "adriankeenan.co.uk", true }, { "adrianmejias.com", true }, { "adrianobarbosa.xyz", true }, { "adrianpetcu.tk", true }, { "adrianpole.tk", true }, { "adrianseo.ro", false }, + { "adrianspeyer.com", true }, + { "adriantwpmi.gov", true }, { "adrianwalls.tk", true }, { "adrianweb.ml", true }, { "adriarae.xyz", true }, { "adriatic.hr", true }, { "adriatika.tk", true }, { "adriatrans.ga", true }, + { "adrienfelsmann.fr", true }, { "adrieng.fr", true }, { "adrienkohlbecker.com", true }, { "adriennekiss.net", true }, @@ -6752,14 +8502,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adrino.gq", true }, { "adrino.ml", true }, { "adrup.com", true }, + { "ads-kuwait.net", true }, + { "adsamcik.com", true }, + { "adsb.lol", true }, { "adsbouncycastles.co.uk", true }, { "adscambodia.com", true }, { "adsense-arbitrage.com", true }, { "adseye.tk", true }, { "adsforcash.ga", true }, + { "adshooter.com", true }, { "adsib.gob.bo", true }, { "adsl2meg.fr", true }, - { "adsmagic.us", true }, { "adsmarketing.tk", true }, { "adsmobilefor.win", true }, { "adsmodels.com", true }, @@ -6780,6 +8533,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adson.no", true }, { "adson.pt", true }, { "adspire.tk", true }, + { "adsports.ae", true }, { "adspottest.tk", true }, { "adspu.org", true }, { "adstop.ga", true }, @@ -6787,33 +8541,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adstune.com", true }, { "adsviews.gq", true }, { "adswoo.com", true }, + { "adt.pl", true }, { "adtelligent.com", true }, { "adtgroup.com", true }, { "adti.pt", false }, + { "adtv.ae", true }, { "adubosvidere.com.br", true }, { "adultbizz.eu", true }, + { "adultdvdparadise.com", true }, + { "adulteducation.org.uk", true }, + { "adultforum.gr", true }, { "adultgames.pro", true }, { "adultmalecontent.com", true }, - { "adultshop.com.au", true }, + { "adultshop.com.au", false }, { "adultwebcams1.com", true }, + { "aduro.com.tr", true }, { "adurra.com", true }, { "adutoras.com.br", true }, { "adv.cr", true }, - { "adv.studio", true }, { "advair-generic.ga", true }, { "advairgeneric.ga", true }, { "advairprice.ga", true }, { "advaitghaisas.in", true }, { "advaith.fun", true }, { "advaith.io", true }, + { "advaith.link", true }, { "advaithbot.xyz", true }, { "advaithnikhi.ml", true }, { "advaithnikhi.tk", true }, { "advance.hr", true }, + { "advancealabama.gov", true }, { "advanced-online.eu", true }, - { "advanced.info", false }, + { "advancedaquaticservice.com", true }, { "advancedboilers.com", true }, { "advancedbotoxclinic.com", true }, + { "advancedbuildings.com.au", true }, + { "advancedconcrete.construction", true }, { "advanceddermmohssurgery.com", true }, { "advanceddermtribeca.com", true }, { "advanceddieselspokane.com", false }, @@ -6821,13 +8584,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advancedelectricalservicesqld.com.au", true }, { "advancedfueladditives.com", true }, { "advancedhealthmedical.com.au", true }, - { "advancedheatinginc.com", true }, { "advancedinteg.com", true }, + { "advancedmd.com", true }, + { "advancedmedicalcertification.com", true }, { "advancednetflowtraining.com", true }, { "advancedob-gyn.com", true }, { "advancedoneroofing.com", true }, - { "advancedprotectionkey.com", true }, - { "advancedprotectionsecuritykey.com", true }, + { "advancedridertraining.co.uk", true }, { "advancedroofingmuskoka.com", true }, { "advancedsepticandpumping.com", false }, { "advancedsurgicalconsultantsllc.com", true }, @@ -6835,26 +8598,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advancedurologyca.com", true }, { "advancedurologyswla.com", true }, { "advancedwriters.com", true }, - { "advanceeasymoving.it", true }, { "advancemoversnc.com", true }, { "advanceoptical.com", true }, { "advanceworx.com", true }, { "advania.info", true }, - { "advantagehomeexteriors.com", true }, + { "advanqi.se", true }, { "advantagehomeinteriors.com", true }, { "advantagemechanicalinc.com", true }, { "advantageroofer.com", true }, + { "advantagetowing.com.au", true }, { "advantis.cf", true }, { "advantis.ga", true }, { "advantis.gq", true }, { "advantis.tk", true }, + { "advantmed.com", true }, { "advapacs.com", true }, { "advara.com", true }, { "advarra.com", true }, { "advasa.jp", true }, { "advasa.net", true }, { "advbizintel.com", true }, - { "advc.tk", true }, { "advenacs.com", true }, { "advenacs.com.au", true }, { "advenapay.com", true }, @@ -6867,6 +8630,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adventure-runner.tk", true }, { "adventureally.com", true }, { "adventurealpinetreks.com", true }, + { "adventureartphotography.com.au", true }, { "adventurearts.tk", true }, { "adventureboy.co.uk", true }, { "adventurecorps.cf", true }, @@ -6874,17 +8638,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adventurecorps.gq", true }, { "adventurecorps.ml", true }, { "adventurecreators.com", true }, + { "adventuredental.com", true }, { "adventuredrives.com", false }, { "adventurefishinggear.com", true }, { "adventureforest.co.nz", true }, - { "adventureforest.de", false }, { "adventureforest.nz", true }, { "adventuregamers.com", true }, { "adventurenow.nl", true }, { "adventureprooutdoors.com", true }, + { "adventureprovisionco.com", true }, { "adventures.com", true }, - { "adventuresofmo.com", true }, - { "adventureswithlillie.ca", true }, + { "adventuretoursbend.com", true }, { "adventuringup.com", true }, { "adventurousway.com", true }, { "adventus.space", true }, @@ -6893,7 +8657,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adverganda.de", true }, { "adversus-test.tk", false }, { "adversus-web-staging.tk", false }, - { "advertis.biz", true }, + { "advertis.biz", false }, { "advertise-ment.tk", true }, { "advertising-design.tk", true }, { "advertisingcompany.tk", true }, @@ -6901,23 +8665,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advertisingphonesest.ga", true }, { "advertisment.ga", true }, { "advery.tk", true }, - { "adveszker.hu", true }, { "advice24.tk", true }, + { "advicepay.com", true }, { "adviceprime.tk", true }, { "adviesfactuur.nl", true }, { "adviesgv.nl", true }, + { "advinix.fr", true }, { "advirk.tk", true }, { "advisercentre.com.au", true }, { "adviserplus.com", true }, { "advisorperspectives.com", true }, { "advmaster.cf", true }, { "advocaat-dejonge.be", true }, + { "advocaatzoeken.nl", true }, { "advocatae.com", true }, { "advocatburo.tk", true }, + { "advocatealliancegroup.com", true }, { "advocateanakha.com", true }, + { "advocatechannel.com", true }, { "advocatize.com", true }, { "advocator.ca", true }, { "advoervice.ga", true }, + { "advogadavaleria.com.br", true }, { "advogatech.com.br", true }, { "advokat-dtp.cf", true }, { "advokat-dtp.ga", true }, @@ -6925,6 +8694,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advokat-dtp.ml", true }, { "advokat-dtp.tk", true }, { "advokat-malinovskii.ml", true }, + { "advokat-romanov.com", true }, { "advokat-teigstad.no", true }, { "advokat-vvp.com.ua", true }, { "advokat73.gq", true }, @@ -6943,12 +8713,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "advokaty-yuristy.tk", true }, { "advokaty.cf", true }, { "advokaty.gq", true }, + { "advritujeph.in", true }, { "advst.uk", true }, { "advtran.com", false }, + { "adwallgate.com", true }, { "adware.pl", false }, { "adwokatkosterka.pl", true }, { "adwokatzdunek.pl", true }, - { "adws.io", true }, { "adxperience.com", true }, { "adygeya.cf", true }, { "adzie.xyz", true }, @@ -6962,7 +8733,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "adzuna.de", true }, { "adzuna.fr", true }, { "adzuna.in", true }, - { "adzuna.it", true }, { "adzuna.nl", true }, { "adzuna.pl", true }, { "adzuna.ru", true }, @@ -6985,7 +8755,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ae86dy.com", true }, { "ae86j.com", true }, { "ae86k.com", true }, - { "ae86nb.com", true }, { "ae86t.com", true }, { "ae86tt.com", true }, { "ae86u.com", true }, @@ -7010,58 +8779,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aecom.digital", true }, { "aecom.io", true }, { "aedollon.com", true }, - { "aefcleaning.com", true }, + { "aedus-design.ru", true }, + { "aegcl.co.in", true }, { "aegeanmep.com", true }, { "aegee-academy.eu", true }, { "aegee-academy.org", true }, { "aegee-utrecht.nl", true }, { "aegee.eu", true }, + { "aegee.org", true }, { "aegis.moe", true }, { "aegisaccounting.co.uk", true }, { "aegisalarm.co.uk", true }, { "aegisalarm.com", true }, { "aegisalarms.co.uk", true }, { "aegisalarms.com", true }, + { "aegon.hu", true }, { "aegrel.ee", true }, { "aeh5134.cc", true }, { "aeha.tk", true }, - { "aei.co.uk", true }, + { "aehe.us", true }, + { "aeis-api-stg.azurewebsites.net", true }, + { "aeis-api.azurewebsites.net", true }, { "aeksantcugat.tk", true }, { "aeksistem.com", true }, { "aelgame.com", true }, - { "aelieve.com", false }, { "aelintx.com", true }, { "aelisya.net", false }, { "aelurus.com", true }, - { "aemoria.com", false }, - { "aemteatre.com", true }, { "aenes.com", true }, { "aenmail.com", true }, - { "aenterprise.info", true }, { "aeolservice.es", true }, { "aeon.co", false }, + { "aeon.wiki", false }, { "aeonc.com", true }, { "aeonct.org", true }, { "aeonian.live", false }, { "aeonmall.global", true }, - { "aepx.org", true }, + { "aeperocovilha.pt", true }, + { "aeperodacovilha.pt", true }, { "aequometer.de", true }, { "aeradesign.com", true }, + { "aeradoresgaivota.com.br", true }, { "aerandir.fr", true }, { "aeraustral.com.au", true }, + { "aere.com", true }, + { "aereco.com", true }, { "aerelon.de", true }, { "aergia.eu", true }, { "aerialawesome.com", true }, + { "aerialforce.co.uk", true }, + { "aerialworks.ddns.net", true }, { "aerisnetwork.com", true }, { "aerlux.md", true }, - { "aero-pioneer.com", true }, { "aero.parts", true }, + { "aeroalbrook.com", true }, { "aerobasegroup.com", true }, { "aerobatt.com", true }, { "aerobiconline.tk", true }, { "aerobotz.com", true }, { "aeroclub-tolhuin.tk", true }, + { "aeroequity.com", true }, { "aeroexpress.tk", true }, + { "aerofarms.com", true }, { "aeroflot.gq", true }, { "aeroframe.tk", true }, { "aeroglass.ml", true }, @@ -7069,6 +8848,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aeroklub.tk", true }, { "aerolineasvenezolanas.net", true }, { "aerolog.co", false }, + { "aeromot.com", true }, + { "aeron.aero", true }, { "aeronautix.com", true }, { "aeronote.net", true }, { "aeroplan.tk", true }, @@ -7081,15 +8862,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aerospace-schools.com", true }, { "aerospacearchives.tk", true }, { "aerospacescience.ml", true }, - { "aerotechcoatings.com", true }, + { "aerospeceng.com.au", true }, { "aerotrophy.fr", true }, { "aerowillys.tk", true }, { "aerozone.tk", true }, { "aertel.ie", true }, { "aerztezentrum.io", true }, - { "aes-freundeskreis.de", true }, + { "aes-freundeskreis.de", false }, { "aes.org.pt", true }, { "aesculapliterature.com", true }, + { "aeslifesciences.com", true }, { "aesmoris.es", true }, { "aesre.com", true }, { "aesre.de", true }, @@ -7099,19 +8881,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aesthetikpiercing.de", true }, { "aesthetix.icu", true }, { "aesthetx.com", true }, + { "aesthway.com", true }, { "aestore.by", true }, - { "aestuar.de", true }, { "aesvalanalys.com", true }, { "aesyours.com", true }, { "aeterna-ufa.ru", true }, { "aeternus-darkermonument.tk", true }, { "aeternus.tech", true }, + { "aether.industries", true }, { "aetherc0r3.eu", true }, - { "aethereahealth.com", true }, - { "aethereal.xyz", true }, + { "aetherdigitalplatform.com", true }, + { "aethereahealth.com", false }, { "aetherlink.de", true }, + { "aethernia.net", true }, + { "aethon.com", true }, { "aethonan.pro", true }, { "aethopy.ga", true }, + { "aetna-medicareplans.com", true }, { "aevo-vergleich.de", true }, { "aevpn.org", true }, { "aextron.com", true }, @@ -7121,29 +8907,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "af-clan.tk", true }, { "af.link", true }, { "afadvantage.gov", true }, - { "afafootball.co.th", true }, - { "afalina-hotel.su", true }, { "afanasev.tk", true }, + { "afandou.com", true }, { "afanias.org", true }, { "afas-apps.nl", true }, { "afasim.tk", true }, + { "afasstatus.nl", true }, { "afbouw-gevelsupport.nl", true }, - { "afbrlf.com", true }, - { "afbrtv.com", true }, { "afbrunswick.com", true }, - { "afbryt.com", true }, { "afc-capital.mx", true }, { "afcmrstest.org", true }, - { "afcurgentcarelyndhurst.com", false }, + { "afd-bedburg.de", true }, + { "afd-elsdorf.de", true }, + { "afd-frechen.de", true }, + { "afd-huerth.de", true }, + { "afd-kerpen.de", true }, + { "afd-pulheim.de", true }, { "afdah.se", true }, + { "afdpulheim.de", true }, + { "afdrhein-erft.de", true }, { "afearlessventure.com", true }, + { "aferagetback.eu", true }, + { "aff1xstavka.com", true }, + { "aff1xstavka.top", true }, + { "affaire.com", true }, { "affairefacile.net", true }, { "affairemateriaux.fr", true }, { "affairs.com", true }, + { "affarsnatverk.nu", false }, { "affcreations.com", true }, + { "affect3d.com", true }, + { "affect3dstore.com", true }, { "affectionate.tk", true }, - { "affektblog.de", true }, - { "affengine.xyz", true }, + { "affibody.se", true }, { "affidea.ie", true }, { "affilatura.it", true }, { "affilia.tk", true }, @@ -7155,10 +8951,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "affiliateprogram.ga", true }, { "affiliateprograms.cf", true }, { "affiliateprograms.gq", true }, + { "affiliates-psychicsource.com", true }, { "affiliates.trade", true }, { "affine.space", true }, + { "affinipay.com", true }, { "affinity.co", true }, + { "affinity.com", true }, { "affinity.vc", true }, + { "affinitycu.ca", true }, + { "affinityplus.org", true }, + { "affinitysync.com", true }, + { "affinityweb.co", true }, { "affissioni.roma.it", true }, { "affittacamere.roma.it", true }, { "affittialmare.it", true }, @@ -7167,26 +8970,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "affle.com", true }, { "afflictedquarter.tk", true }, { "affordable.icu", true }, + { "affordableasphaltcompany.com", true }, + { "affordableautoglass.com", true }, { "affordableblindsexpress.com", true }, { "affordablecameras.tk", true }, { "affordableconnectivity.gov", true }, { "affordableelectronics.tk", true }, - { "affordableenvironmental.net", true }, { "affordablehealthquotesforyou.com", true }, { "affordablepapers.com", true }, { "affordableracingparts.com.au", true }, { "affordablevaccinesest.ga", true }, + { "affordacode.com", true }, + { "affpa.top", true }, { "affpass.com", true }, { "affping.com", true }, { "affproduct.com", true }, + { "affsoft.cc", true }, { "affumico.it", true }, { "affusio.com", true }, - { "affvps.net", true }, { "afg-team.tk", true }, { "afganistan.cf", true }, { "afghan-media.tk", true }, { "afghan-sites.tk", true }, - { "afghan.dating", true }, { "afghan.gq", true }, { "afghandonia.tk", true }, { "afghanen4life.tk", true }, @@ -7197,9 +9002,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afgn.com.ua", true }, { "afgphotographers.com", true }, { "afgraphic.tk", true }, - { "afi-business-consulting.com", true }, { "afiador.com.br", true }, - { "afiawealth.com", true }, + { "afiawealth.com", false }, { "aficards.com", true }, { "aficionados.com.br", true }, { "afilio.de", true }, @@ -7213,18 +9017,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aflattr.com", true }, { "aflebedevo.tk", true }, { "afoikrali.gr", true }, - { "afonso.io", true }, { "aforadearrastu.tk", true }, { "aforism.tk", true }, { "afp548.com", true }, + { "afrag.fr", true }, { "afreelancersworld.com", true }, + { "afres.com", true }, { "afreshperspective.com", true }, - { "africa.dating", true }, { "africaclassifieds.ga", true }, { "africaindemander.tk", true }, { "africalebanon.tk", true }, { "african-artmosphere.tk", true }, - { "africanconstellations.co.za", true }, + { "africanbiblesafari.org", true }, { "africanewstest0.ml", true }, { "africangazda.tk", true }, { "africangreyparrotscare.com", true }, @@ -7239,12 +9043,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "africaone-publishing.com", true }, { "africaricecenter.org", true }, { "afrijet.ga", true }, + { "afrilatest.com", true }, { "afrimarket.ci", true }, - { "afripay.africa", true }, { "afrique.buzz", true }, - { "afriregister.bi", true }, { "afriregister.ci", true }, - { "afriregister.co.ke", true }, { "afriregister.co.tz", true }, { "afriregister.co.ug", true }, { "afriregister.com.ss", true }, @@ -7260,7 +9062,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afrogospel.tk", true }, { "afroludi.tk", true }, { "afroto.com", true }, - { "afsys.com.br", true }, + { "afseguros.com", true }, + { "afslankstudiovelserbroek.nl", true }, { "aftamurae.com", true }, { "after-whoru.tk", true }, { "after.digital", true }, @@ -7270,6 +9073,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afterfostercare.tk", true }, { "afterhate.fr", true }, { "afterhoursglass.com.au", true }, + { "aftermagic.com", true }, + { "aftermix.com", true }, { "afternoonhereyes.tk", true }, { "afteroblivion.tk", true }, { "afterpay.com", true }, @@ -7278,48 +9083,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "afterstack.net", true }, { "aftodioikisi.gr", true }, { "aftonbladet.se", true }, + { "aftontickets.com", true }, + { "afute.fr", true }, { "afuturewithoutfear.org", true }, { "afuturewithoutfear.us", true }, { "afva.net", true }, { "afwd.international", true }, { "afxsoft.ml", true }, - { "ag000.com", true }, + { "afzetbak.nl", true }, { "ag018.cc", true }, { "ag066.vip", true }, - { "ag11.net", true }, { "ag123.la", true }, - { "ag138.com", true }, { "ag13842.com", true }, { "ag1386.com", true }, { "ag158.cc", false }, { "ag1603.com", false }, { "ag1604.com", true }, { "ag1607.com", true }, - { "ag166.com", true }, { "ag2.app", true }, - { "ag2776.com", true }, - { "ag2821.com", true }, - { "ag299.vip", true }, { "ag3.la", true }, { "ag3232g.com", true }, - { "ag3792.com", true }, { "ag388.vip", true }, - { "ag393.com", true }, { "ag399.vip", true }, { "ag4.app", false }, { "ag518518.net", true }, { "ag5369.com", true }, { "ag5373.com", true }, - { "ag556.com", true }, { "ag5623.com", true }, { "ag5761.com", true }, - { "ag5767.com", true }, { "ag5933.com", true }, { "ag5956.com", true }, { "ag5967.com", true }, { "ag6.im", true }, { "ag6.pub", true }, - { "ag6.us", true }, { "ag6.vc", true }, { "ag6.vip", true }, { "ag600.la", true }, @@ -7332,31 +9128,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ag68ks.com", true }, { "ag69000.com", true }, { "ag72.vip", true }, - { "ag775.com", true }, { "ag8-game.com", true }, - { "ag8.email", true }, { "ag8.im", true }, { "ag8.live", true }, - { "ag8.us", true }, { "ag8.vip", true }, - { "ag806.tv", true }, { "ag80808.com", true }, { "ag80880.com", true }, - { "ag812.com", true }, { "ag812.tv", true }, - { "ag816.com", true }, { "ag818.net", true }, { "ag819.tv", true }, { "ag82011.vip", true }, { "ag82018.cc", true }, { "ag82018.com", true }, - { "ag821.com", true }, - { "ag822.com", true }, - { "ag8400.com", true }, { "ag8500.com", true }, - { "ag860.com", true }, { "ag8600.com", true }, - { "ag865.com", true }, { "ag88.com", true }, { "ag880.win", true }, { "ag8808.com", true }, @@ -7365,7 +9150,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ag8819-livechat.com", true }, { "ag8859.com", false }, { "ag8876.com", true }, - { "ag8879.com", true }, { "ag888818.com", true }, { "ag889.com", true }, { "ag8890.com", true }, @@ -7373,66 +9157,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ag88dc22.com", true }, { "ag88ks.com", true }, { "ag89000.com", true }, - { "ag891.com", true }, { "ag898.cc", true }, - { "ag899.com", true }, { "ag8vip.com", true }, { "ag9.im", true }, - { "ag905.com", true }, - { "ag908.com", true }, { "ag9100.com", true }, { "ag918.cc", true }, { "ag918.co", true }, { "ag918.top", true }, { "ag96.win", true }, - { "ag961.com", true }, { "ag9757.com", true }, - { "ag9773.com", true }, { "ag98.tv", false }, { "ag9800.com", true }, { "ag9815.com", true }, - { "ag983.com", true }, { "ag9835.com", true }, { "ag98ks.com", true }, - { "ag992.com", true }, - { "ag995.com", true }, { "ag9999.co", true }, { "ag9ks.com", true }, { "ag9vip.com", true }, { "aga-eiken.tk", true }, { "aga.gov.au", true }, { "agabucheros.tk", true }, - { "agaclinicaltrials.com", true }, { "agad.tk", true }, { "agagent.vip", true }, { "against.tk", true }, { "againstgynexams.tk", true }, { "againsttheneighbour.tk", true }, { "againsttheodds.es", true }, - { "agalexusfix.com", true }, + { "agalia.com", true }, { "agalloch.tk", true }, { "agambition.eu", true }, { "agamsecurity.ch", false }, - { "agape24-7.com", true }, { "agapelove.tk", true }, { "agar.kr", true }, { "agargiulo.com", true }, { "agari-mj.com", true }, { "agarioforum.ga", true }, - { "agasaya.com", true }, + { "agas.com", true }, { "agasport.nl", false }, + { "agastia.com", true }, { "agatajanik.de", true }, { "agate.pw", true }, { "agateh.com.au", true }, { "agaveandpine.com", true }, { "agavesurgery.com", true }, - { "agaviria.co", true }, { "agbremen.de", false }, + { "agcdn.cc", true }, + { "agcdn.top", true }, { "agceauditores.cl", true }, { "agcegroup.cl", true }, { "agcpapp.com", true }, { "agdalieso.com.ba", true }, { "agds.pw", true }, + { "agdsenice.cz", true }, { "age-encryption.org", true }, { "agearo.com", true }, { "ageasagentessummit.pt", true }, @@ -7441,12 +9217,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agedgamer.com", true }, { "agefriendlyri.org", true }, { "ageg.ca", true }, - { "agehotel.com", true }, { "ageless-world.tk", true }, { "agelesscitizen.com", true }, { "agelesscitizens.com", true }, { "agellonia.com", true }, - { "agemfis.com", true }, { "agenbandarq.cf", true }, { "agenbandarq.ga", true }, { "agenbandarq.gq", true }, @@ -7454,24 +9228,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agenbandarq.tk", true }, { "agence-immobiliere-hossegor.com", true }, { "agence-initiale.fr", true }, - { "agence-wazacom.fr", true }, + { "agence-matrimoniale-paris.com", true }, + { "agence.tw", true }, { "agenceimmoselect.com", true }, + { "agencelcinvestigations.com", true }, { "agences-cegee.fr", true }, { "agencesaintpierre.fr", true }, + { "agencestaff.fr", true }, { "agencetourismemali.ml", true }, { "agenciacanina.tk", true }, + { "agenciacoder.com", true }, { "agenciacolors.com.br", true }, { "agenciacolors.digital", true }, { "agenciacorujadesign.com.br", true }, { "agenciacrown.es", true }, - { "agenciaempleo.tk", true }, { "agenciafiscal.pe", true }, { "agenciahangar.com.br", true }, - { "agenciaimpulsionar.com.br", true }, { "agenciaingenium.cl", true }, { "agenciaonnmarketing.com", true }, + { "agenciaplanner.com.br", true }, + { "agenciarse.com", true }, { "agenciarubik.com", true }, - { "agenciaspaces.com.br", true }, + { "agenciatecben.com.br", true }, + { "agenciauniversitariadq.online", true }, + { "agenciazoe.com.br", true }, { "agencja-interaktywna.ga", true }, { "agencja-interaktywna.tk", true }, { "agencxy.ga", true }, @@ -7479,19 +9259,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agencygood.tk", true }, { "agencyinmotion.com", true }, { "agencymanager.be", true }, + { "agencymasala.com", true }, { "agenda-loto.net", false }, { "agenda21senden.de", true }, { "agendadelvolo.info", true }, { "agendamuslim.tk", true }, - { "agendas.tk", true }, { "agendaspectacles.fr", true }, { "agendatelefonica.net", true }, { "agendavalencia.es", true }, { "agendominoq.tk", true }, + { "agenslot128.com", true }, { "agent-007.tk", true }, { "agent-grow.com", true }, { "agent.sk", true }, { "agent47.tk", true }, + { "agent4fl.com", true }, { "agentabuseest.ga", true }, { "agenter.cf", true }, { "agenter.tk", true }, @@ -7500,7 +9282,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agentpak.com", true }, { "agentpatrolest.ga", true }, { "agentpoint.website", true }, - { "agentprocessing.com", true }, + { "agentprovocateur.com", true }, { "agentrisk.com", false }, { "agentsmith.tk", true }, { "agentum.ga", true }, @@ -7510,11 +9292,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agenziaimmobiliarezeta.it", true }, { "agenziapubblicitaria.milano.it", true }, { "agenziapubblicitaria.roma.it", true }, + { "agenziefunebri.it", true }, { "ageofreason.tk", true }, { "agesofarda.net", true }, { "agfmedia.com", true }, { "agg097.com", true }, - { "agg66.com", true }, { "agg88.com", true }, { "aggielandtutoring.com", true }, { "agglo-sion.ch", true }, @@ -7522,41 +9304,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aggression.tk", true }, { "aggressionpvp.com", true }, { "aggressivecarwraps.com", true }, + { "aggtechconcrete.com", true }, { "aghayeva-edler.de", true }, + { "aghtas.com", true }, { "agiairini.cz", true }, { "agic-geneve.ch", true }, + { "agiftinside.com", true }, { "agilan.nl", true }, { "agile.coach", true }, { "agileacademy.technology", true }, { "agilealliance.org", true }, { "agilebits.com", true }, { "agilebits.net", false }, + { "agilecoldstorage.com", true }, { "agilecraft.com", true }, { "agilecyber.com", true }, { "agilee.io", true }, { "agilepeopleopsframework.com", true }, - { "agiley.se", true }, + { "agileui.com", false }, + { "agilextra.com.au", true }, { "agilicus.ca", true }, { "agilicus.com", true }, { "agility-westvlaanderen.tk", true }, { "agilityconsulting.be", true }, - { "agilob.net", true }, + { "agill.me", true }, { "agiloo.tk", true }, + { "agilusdiagnostics.com", true }, { "aging.gov", true }, { "agingstats.gov", true }, { "agingstop.net", true }, + { "aginion.com", true }, { "aginion.net", true }, { "agioanmark.tk", true }, { "agiosthomas.tk", true }, + { "agirc-arrco.fr", true }, { "agirlknows.com", true }, - { "agiserv.fr", true }, { "agitmedia.ru", true }, { "agk.co.com", true }, { "agks02.com", true }, { "agks1.com", true }, - { "agks11.com", false }, { "agks116.com", true }, - { "agks131.com", true }, { "agks136.com", true }, { "agks16.com", true }, { "agks188.com", true }, @@ -7574,7 +9361,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agks63.com", true }, { "agks67.com", true }, { "agks68.com", true }, - { "agks69.com", false }, + { "agks69.com", true }, { "agks7.com", true }, { "agks70.com", true }, { "agks71.com", true }, @@ -7584,20 +9371,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agks8.com", true }, { "agks82.com", true }, { "agks83.com", true }, - { "agks85.com", false }, { "agks86.com", true }, { "agks87.com", true }, - { "agks88.com", true }, { "agks888.com", false }, { "agks89.com", true }, - { "agks9.com", false }, + { "agks9.com", true }, { "agks90.com", false }, { "agks92.com", true }, { "agktest1.ga", true }, + { "aglar.com.ec", true }, { "aglar.tk", true }, { "agleventis.com", true }, { "aglow.nl", true }, { "agm4545.com", true }, + { "agmarvels.com", true }, { "agmuscle.com", true }, { "agnconnect.com", true }, { "agnesk.blog", true }, @@ -7608,19 +9395,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agnosticism.tk", true }, { "agnusbostel.tk", true }, { "agocs.me", true }, - { "agonpro.ch", true }, - { "agonworks.com", false }, + { "agonworks.com", true }, + { "agora-energiewende.de", true }, { "agora-soft.cf", true }, + { "agora-verkehrswende.de", true }, { "agora.co.il", true }, { "agora.ru", true }, + { "agorabet.com.br", true }, { "agoracupom.com.br", true }, { "agoradanza.tk", true }, { "agoradesk.com", true }, + { "agorapulse.com", true }, { "agoratek.fr", true }, { "agoravm.tk", true }, - { "agoravox.fr", true }, { "agoravox.it", true }, { "agoravox.tv", true }, + { "agorism.eu.org", true }, { "agossearch.tk", true }, { "agostonegro.tk", true }, { "agouraelectrical.com", true }, @@ -7638,26 +9428,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agouraoutdoorlighting.com", true }, { "agowa338.de", true }, { "agpideas.com", true }, - { "agpp.net", true }, - { "agpsn.com", true }, { "agr.asia", true }, + { "agrabah.com", true }, + { "agradi.de", true }, + { "agradi.nl", true }, { "agralines.tk", true }, + { "agrarking.com", true }, + { "agrarking.de", true }, + { "agrarkredit.de", true }, + { "agravery.com", true }, { "agraw.tk", true }, { "agregator.tk", true }, - { "agregavino.com.br", true }, { "agrekov.ru", true }, { "agremo.com", false }, - { "agrente.pl", true }, { "agreor.com", true }, + { "agressief.com", true }, { "agri-meet.com", true }, { "agri.ee", true }, { "agricult.tk", true }, { "agricultural-technology.tk", true }, { "agriculture-schools.com", true }, + { "agriculture.vic.gov.au", true }, + { "agrifoglio.com", true }, { "agrifoodtoday.it", true }, + { "agrifutures.com.au", true }, { "agrigentonotizie.it", true }, { "agrikulturchic.com", true }, { "agripartner.fr", true }, + { "agripick.com", true }, + { "agriportal.online", true }, { "agrippa.tk", true }, { "agriprofocus.com", true }, { "agriresearch.tk", true }, @@ -7666,21 +9465,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agro-dom.solutions", true }, { "agro-ferma.tk", true }, { "agro-forestry.net", true }, - { "agrobase.uz", false }, + { "agro-market24.ru", true }, + { "agro-portal.info", true }, + { "agrobank.uz", true }, + { "agrobase.uz", true }, { "agrobaza.com.ua", true }, + { "agrobolsa.com.co", true }, { "agrocare.tk", true }, { "agroclan.tk", true }, { "agroclimat.tk", true }, { "agroconsultoraplus.com", true }, { "agrodoki.hu", true }, - { "agrodronechile.cl", true }, - { "agroequation.fr", true }, { "agrofetch.co.ke", true }, { "agrofind.com.br", true }, + { "agroguia.com.co", true }, + { "agrohim.com", true }, + { "agroinsider.com", true }, { "agrokomi.tk", true }, { "agrokredit.ga", true }, { "agroland.tk", true }, { "agrolife.tk", true }, + { "agroma.com", true }, { "agromotorsburzaco.com", true }, { "agron.tk", true }, { "agronomi.tk", true }, @@ -7690,16 +9495,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agropool.tk", true }, { "agropotter.com.ua", true }, { "agrospan.ga", true }, + { "agrosvit.kz", true }, { "agroteam.tk", true }, { "agrotek.lt", true }, { "agrotender.com.ua", true }, + { "agrotodo.com.co", true }, { "agrotraktor.gq", true }, + { "agrowbio.com", true }, { "agroyard.com.ua", true }, { "agrus-wow.tk", true }, { "agscapeslandscaping.com", true }, { "agscinemas.com", true }, { "agscinemasapp.com", true }, { "agsun6.com", true }, + { "aguaazul.com.co", true }, + { "aguajero.com", true }, { "aguantepimpinero.tk", true }, { "aguarani.com.br", true }, { "aguaviva.tk", true }, @@ -7709,31 +9519,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "agul.tk", true }, { "agullo.tk", true }, { "agung-furniture.com", true }, + { "agurskie-vodopadi.ru", true }, + { "agusandelsur.gov.ph", true }, { "agusik.com.ua", true }, { "agustian.tk", true }, { "agusticarmona.tk", true }, { "agustin.cf", true }, { "agustin.ml", true }, + { "agustinfotografia.com", true }, { "agusto.tk", true }, { "aguz.tk", true }, { "agviet88.com", true }, + { "agvins.fr", true }, { "agvip1000.com", true }, { "agvip168.com", true }, { "agvip2001.com", true }, { "agvip2008.com", true }, - { "agvip88.com", true }, + { "agvip88.com", false }, { "agvip986.com", true }, { "agwa.name", true }, - { "agweili.com", false }, { "agwin1.com", false }, { "agwin7.com", true }, { "agwin8.com", true }, { "agwin9.com", true }, { "agworkers.com", true }, { "agzlapp.com", true }, + { "agzy.tw", true }, + { "agzy.vip", true }, { "ahanet.tk", true }, { "ahansen.is", false }, - { "ahc.fyi", true }, + { "ahbap.org", true }, + { "ahbvlp.pt", true }, + { "ahccmadison.com", true }, { "ahccorleone.tk", true }, { "ahcpb.com", true }, { "ahcpr.gov", true }, @@ -7741,22 +9558,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ahealthyjourney.ca", true }, { "ahegaoroulette.com", true }, { "ahelos.tk", true }, - { "ahenkerp.com", true }, { "ahg-offices.fr", true }, { "ahhcomfortshoes.com", true }, { "ahidta.gov", true }, { "ahiha-design.com", true }, + { "ahima.org", true }, { "ahityayinlari.com", true }, { "ahityayinlari.org", true }, { "ahj.no", true }, + { "ahjy.com", true }, { "ahl.gov.au", false }, { "ahlac.tk", true }, { "ahlaejaba.com", true }, - { "ahlan.com", true }, { "ahli-antenatv.tk", true }, - { "ahlsenutbildning.se", true }, + { "ahlibank.com.qa", true }, { "ahlz.sk", true }, - { "ahmad.works", true }, + { "ahm.com.au", true }, + { "ahmad.space", true }, { "ahmadfathy.ml", true }, { "ahmadjakfar.tk", true }, { "ahmadmaher.tk", true }, @@ -7765,6 +9583,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ahmadrafiq.tk", true }, { "ahmadramadan.tk", true }, { "ahmed-alasadi.tk", true }, + { "ahmed-soliman.de", true }, { "ahmed.tk", true }, { "ahmedabadflowermall.com", true }, { "ahmedcorp.tk", true }, @@ -7773,59 +9592,82 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ahmerjamilkhan.org", true }, { "ahmetazgin.net", true }, { "ahmetcadirci.com.tr", true }, - { "ahmetkucukonder.com", true }, { "ahmetshina.tk", true }, + { "ahmt.net", true }, + { "ahmu.com", true }, { "ahmud.net", true }, { "ahoefer.de", true }, + { "ahoeheng.com", true }, + { "ahoj.email", true }, { "ahoj.hu", true }, { "ahollamby.com", true }, + { "ahomeconcept.com", true }, { "ahorasalud.com", true }, { "ahornblatt.org", true }, + { "ahosamuel.com", true }, + { "ahosenjoni.fi", true }, { "ahosi.com", true }, + { "ahqf.com", true }, { "ahroproject.org", true }, + { "ahrora.com", true }, { "ahrq.gov", true }, { "ahs.com", true }, - { "ahsanautos.pk", true }, { "ahsinsaleem.tk", true }, { "ahstrem.com", true }, + { "ahswarranty.com", true }, { "ahsyg.com", true }, { "ahtuxpk.ru", true }, { "ahughes03.com", true }, { "ahwah.net", true }, + { "ahwahnee.today", true }, { "ai-english.jp", true }, { "ai-genit.com", true }, - { "ai-media.tv", true }, { "ai-practitioners.com", true }, { "ai-soft.co.jp", true }, - { "ai.design", true }, { "ai.gov", true }, - { "ai.mr", true }, + { "ai.gov.ae", true }, + { "ai.market", true }, + { "ai.moda", true }, + { "ai.mr", false }, { "ai00.vip", true }, { "ai1989.com", true }, { "ai2-jp.com", true }, { "ai5.me", true }, { "aia-alkmaar.nl", true }, { "aiaccinu.eu.org", true }, + { "aiaidaxue.com", true }, + { "aiaidou.com", true }, + { "aiainiu.com", true }, { "aianetwork.net", true }, { "aianipid.ee", true }, { "aiasesoriainmobiliaria.com", true }, { "aiat.net", true }, + { "aiatsis.gov.au", true }, { "aibaoyou.com", true }, { "aibes-staging.com", true }, { "aibes.org", true }, + { "aibili.pt", true }, { "aibiying.com", true }, { "aibolit-apteka.tk", true }, { "aibolit.ga", true }, + { "aibolit.md", true }, { "aibolit.ml", true }, { "aibolitik.tk", true }, { "aibot.tk", true }, { "aibsoftware.mx", true }, - { "aicamilwaukee.com", true }, + { "aicampo.com", true }, { "aiccc.com.au", true }, + { "aiccon.id", true }, + { "aiccorp.com", true }, { "aicfb.in", true }, + { "aichat.io", true }, + { "aichat.site", true }, + { "aichat.us", true }, + { "aichi-tokko-shien.com", true }, + { "aichou.com", true }, { "aicial.co.uk", true }, { "aickelin.eu", true }, - { "aicv.club", true }, + { "aicr.org", true }, { "aicv.io", true }, { "aid-web.ch", true }, { "aida.org.au", true }, @@ -7833,8 +9675,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aidaccess.org", true }, { "aidanamavi.com", true }, { "aidanapple.com", true }, - { "aidanmitchell.co.uk", true }, - { "aidanmitchell.uk", true }, + { "aidanmitchell.uk", false }, { "aidanmontare.net", true }, { "aidanpr.com", true }, { "aidanpr.net", true }, @@ -7843,14 +9684,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aide-hebergement.ca", true }, { "aide-valais.ch", true }, { "aide.com", true }, - { "aiden.cool", false }, - { "aiden.link", false }, + { "aidenashleypornstar.com", true }, { "aidenlx.top", true }, + { "aidenoliver.au", true }, { "aidhan.net", true }, { "aidi-ahmi.com", true }, - { "aidie.cc", true }, + { "aidie.cc", false }, { "aidliveers.ga", true }, { "aido.gq", true }, + { "aidoc.com", true }, { "aidoru.net", true }, { "aids-dissidents.tk", true }, { "aids.gov", true }, @@ -7858,13 +9700,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aiecosystem.com.au", true }, { "aiesecarad.ro", true }, { "aievaluare.ro", true }, + { "aifartsakh.com", true }, { "aifob.tk", true }, - { "aiforsocialmedia.com", true }, { "aifriccampbell.com", true }, { "aifx.ml", false }, { "aigcev.org", true }, { "aigenpul.se", true }, - { "aiglow.io", true }, { "aigm.cc", true }, { "aigner-club.com", true }, { "aigner-club.de", true }, @@ -7873,11 +9714,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aignermunich.de", true }, { "aignermunich.jp", true }, { "aigua.it", true }, + { "aiguemarine-spa.fr", true }, { "aiguilhe-querre.com", true }, + { "aiha.com", true }, { "aihaamua.tk", true }, { "aiho.stream", true }, { "aihschgo.org", true }, { "aiinsurance.xyz", true }, + { "aikareborn.com", true }, { "aiken.golf", true }, { "aikenpromotions.com", true }, { "aiki.de", true }, @@ -7893,65 +9737,105 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aikidosaltadojo.tk", true }, { "aikijutsu.tk", true }, { "aikiva.com", true }, + { "aikoly.com", true }, + { "aila.org", true }, { "aileenwatt.co.uk", true }, + { "ailife.blog", true }, { "ailitonia.com", true }, { "ailitonia.xyz", true }, { "ailladearousa.com", true }, - { "aim-port.com", true }, { "aim.org.pt", true }, + { "aimara.com", true }, { "aimare-web.tk", true }, + { "aimarketingdesk.com", true }, { "aimax.com", true }, + { "aimaye.com", true }, { "aimbot.games", true }, - { "aimd.tech", true }, { "aimdigital.tk", true }, { "aimeeandalec.com", true }, - { "aimerworld.com", false }, - { "aimi-salon.com", true }, + { "aimeisi.com", true }, + { "aimgroup.co.tz", true }, + { "aiminet.com", true }, { "aimless.tk", true }, { "aimlessempire.tk", true }, { "aimmuneinstitute.org", true }, + { "aimoda.bid", true }, + { "aimoda.click", true }, + { "aimoda.cloud", true }, + { "aimoda.download", true }, + { "aimoda.info", true }, + { "aimoda.io", true }, + { "aimoda.life", true }, + { "aimoda.live", true }, + { "aimoda.loan", true }, + { "aimoda.lol", true }, + { "aimoda.ltd", true }, + { "aimoda.online", true }, + { "aimoda.shop", true }, + { "aimoda.solutions", true }, + { "aimoda.space", true }, + { "aimoda.store", true }, + { "aimoda.stream", true }, + { "aimoda.trade", true }, + { "aimoda.website", true }, + { "aimoda.wtf", true }, + { "aimoda.xyz", true }, { "aimotive.com", true }, { "aimrom.org", true }, + { "aina.moi", true }, + { "ainaishi.com", true }, + { "ainameals.com", true }, { "ainamoroms.com", true }, + { "aine.com.br", true }, { "ainfographie.com", true }, { "aini99.club", false }, + { "ainong.com", true }, { "ainrm.cn", true }, { "ainsa.tk", true }, { "ainutrition.co.uk", true }, { "ainvest.de", true }, { "ainzu.net", true }, { "aioboot.com", true }, - { "aiofx.net", true }, { "aiois.com", true }, { "aioj.ac", true }, { "aiom.tk", true }, { "aiosetups.com", true }, - { "aip.ai", true }, + { "aiot.pw", true }, { "aipbarcelona.com", true }, { "aipcardio.ai", true }, { "aipcardio.com", true }, - { "aipdemos.com", true }, + { "aipcardio.hu", true }, { "aipderm.ai", true }, { "aipderm.com", true }, + { "aipderm.com.mx", true }, + { "aipderm.es", true }, + { "aipderm.eu", true }, + { "aipderm.mx", true }, + { "aipderm.ro", true }, + { "aipderm.sk", true }, + { "aipee.org", true }, { "aiphyron.com", true }, + { "aipi.at", true }, + { "aipi.ch", true }, { "aipi.de", true }, { "aipi.tel", true }, - { "aiplabs.ai", true }, - { "aiplabs.hu", true }, - { "aiplabs.io", true }, + { "aipi.uk", true }, + { "aipixel.top", true }, { "aipor.pt", false }, - { "aiprecipecollection.com", true }, { "aipregnancy.com", true }, { "aipregnant.com", true }, - { "aiqidm.com", true }, + { "aiqinggu.com", true }, + { "aiqingli.com", true }, { "air-business.tk", true }, { "air-clan.tk", true }, { "air-flot.tk", true }, { "air-planning.co.jp", true }, { "air-rishon.tk", true }, { "air-soft.ga", true }, + { "air-swift.com", true }, { "air-techniques.fr", true }, { "air-ticket.ga", true }, + { "airalarm.com", true }, { "airbender.tk", true }, { "airbnb.ae", true }, { "airbnb.at", true }, @@ -8015,6 +9899,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airbnb.mx", true }, { "airbnb.nl", true }, { "airbnb.no", true }, + { "airbnb.org", true }, { "airbnb.pl", true }, { "airbnb.pt", true }, { "airbnb.ru", true }, @@ -8025,63 +9910,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airborne-commando.tk", true }, { "airborne-inflatables.co.uk", true }, { "airbossofamerica.com", true }, + { "airburners.com", true }, + { "airburners.com.au", true }, + { "airburners.net", true }, { "airbusters.com", true }, { "aircareair.tk", true }, + { "aircash.eu", true }, { "aircharteradvisors.com", true }, { "airchartervirginislands.com", true }, - { "aircheapfare.com", true }, - { "aircheapfares.com", true }, { "aircomet.tk", true }, { "aircompressormachine.com", true }, { "airconditioning.tk", true }, { "airconditioningcondensers.tk", true }, - { "airconditioningmidrand.co.za", true }, - { "airconmidrand.co.za", true }, - { "airconrandburg.co.za", true }, - { "airconsandton.co.za", true }, { "airconsboksburg.co.za", true }, + { "airconservicingcapetown.co.za", true }, { "airconsfourways.co.za", true }, - { "airconsrandburg.co.za", true }, - { "airconuncle.sg", true }, { "aircraft-database.com", true }, { "aircraftnoisemodel.org", true }, { "aircraftspruce.ca", true }, { "aircraftspruce.com", true }, { "airday.tk", true }, + { "airdeer.com", true }, { "airdropics.com", true }, { "airdropkings.com", true }, { "airductcleaninggrandprairie.com", true }, { "airdur.eu", true }, { "aireaseleaks.org", true }, { "airedaleterrier.com.br", true }, + { "airensmuseum.com", true }, { "aires-autoroute-areas.com", true }, + { "airesourcezone.com", true }, { "airethilien.tk", true }, - { "airetvie.com", true }, - { "aireuropeflights.com", true }, + { "airetvie.com", false }, { "airez.tk", true }, { "airfan.cf", true }, - { "airfareandcheap.com", true }, { "airfarecheapdeal.com", true }, { "airfarecheapeurope.com", true }, { "airfarecompareprices.com", true }, { "airfaredealstoindia.com", true }, - { "airfarefrom.com", true }, - { "airfarehonolulu.com", true }, - { "airfarehoteldeals.com", true }, - { "airfareinindia.com", true }, { "airfaremexicocity.com", true }, - { "airfareorlando.com", true }, { "airfaresdomestic.com", true }, { "airfareseconomy.com", true }, - { "airfaresfrom.com", true }, - { "airfareshotels.com", true }, + { "airfarestoamerica.com", true }, + { "airfarestogermany.com", true }, + { "airfareticketsdeals.com", true }, { "airfaretracking.com", true }, + { "airfax.io", true }, { "airfield.gq", true }, { "airfocused.com", true }, { "airforce.com", true }, + { "airformosa.com", true }, { "airfoto.tk", true }, { "airfox.cf", true }, { "airfox.gq", true }, + { "airgreen.com", true }, { "airgun.tk", true }, { "airgundepot.com", true }, { "airhart.me", true }, @@ -8091,71 +9973,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airi.ga", true }, { "airicy.com", true }, { "airikai.com", true }, + { "airism.com", true }, { "airit.de", true }, { "airjet.cf", true }, + { "airjordan11.cc", true }, + { "airjordan1phatwhite.info", true }, + { "airjordan2017.site", true }, { "airjordanpascher.tk", true }, + { "airjordansshoes.us", true }, + { "airjordanwholesale.us", true }, { "airkiss.ga", true }, { "airknowledge.gov", true }, + { "airlapse.net", false }, { "airline-rabota.tk", true }, - { "airlineairlines.com", true }, - { "airlineairways.com", true }, - { "airlinec.com", true }, - { "airlinecheapdeals.com", true }, + { "airlineafrica.com", true }, + { "airlinebookingonline.com", true }, + { "airlinebookingtickets.com", true }, { "airlinecheapflightinternationalticket.com", true }, + { "airlinecheapflightticket.com", true }, { "airlinecheapprices.com", true }, + { "airlinecheaptravel.com", true }, { "airlinedenmark.com", true }, + { "airlineeconomy.com", true }, + { "airlinefarecheap.com", true }, + { "airlinefaredeals.com", true }, + { "airlinefarediscount.com", true }, + { "airlinefarelow.com", true }, { "airlinefareprices.com", true }, - { "airlinefarescompare.com", true }, - { "airlinefee.com", true }, + { "airlinefaresdiscount.com", true }, { "airlinefees.com", true }, + { "airlineflightsdeals.com", true }, + { "airlineflightsdiscount.com", true }, + { "airlineflightsfares.com", true }, + { "airlineflightsprices.com", true }, + { "airlineflightsreservations.com", true }, { "airlineflyingclub.tk", true }, - { "airlinehawaii.com", true }, - { "airlinelondon.com", true }, + { "airlineforsale.com", true }, + { "airlinefr.com", true }, + { "airlinegermany.com", true }, + { "airlinekorea.com", true }, + { "airlinenationwide.com", true }, { "airlinenews.tk", true }, - { "airlineoil.com", true }, - { "airlineplanetickets.com", true }, - { "airlinesair.com", true }, - { "airlinesaustralia.com", true }, - { "airlinesbritish.com", true }, - { "airlinescheapfare.com", true }, - { "airlinescheapflights.com", true }, - { "airlinescheapticket.com", true }, - { "airlineseconomy.com", true }, + { "airlinenewzealand.com", true }, + { "airlinesau.com", true }, { "airlinesettlement.com", true }, - { "airlinesfrom.com", true }, - { "airlinesincanada.com", true }, - { "airlinesingapore.com", true }, - { "airlinesinsingapore.com", true }, - { "airlineslasvegas.com", true }, - { "airlineslowfare.com", true }, - { "airlinesnashville.com", true }, - { "airlinesnyc.com", true }, - { "airlinesseating.com", true }, + { "airlinesfleet.com", true }, + { "airlinesjordan.com", true }, + { "airlinesmiddleeast.com", true }, + { "airlinesnorthamerica.com", true }, + { "airlinesofdubai.com", true }, + { "airlinesofmexico.com", true }, { "airlinesticketbooking.com", true }, - { "airlinesto.com", true }, - { "airlinestoamerica.com", true }, - { "airlinestolasvegas.com", true }, - { "airlinestoorlando.com", true }, - { "airlinestophoenix.com", true }, - { "airlinestosingapore.com", true }, - { "airlinesunitedstates.com", true }, - { "airlineti.com", true }, - { "airlinetic.com", true }, - { "airlineticketscheapflights.com", true }, - { "airlineticketsfrom.com", true }, - { "airlineto.com", true }, - { "airlinetohawaii.com", true }, - { "airlinetolasvegas.com", true }, - { "airlinetolondon.com", true }, - { "airlinetovegas.com", true }, - { "airlinetravelnetwork.com", true }, - { "airloge.com", true }, + { "airlinestogermany.com", true }, + { "airlinestoturkey.com", true }, + { "airlinetocanada.com", true }, + { "airlinetomiami.com", true }, + { "airlinetour.com", true }, + { "airlinewholesale.com", true }, { "airm.aero", true }, { "airmag.tk", true }, { "airmail.cc", false }, { "airman.cf", true }, - { "airmanproduction.com", true }, { "airmap.com", true }, + { "airmap.io", true }, { "airmash.online", true }, { "airmaxinflatables.com", true }, { "airnet.tk", true }, @@ -8164,12 +10044,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airparana.com.br", true }, { "airpark-roissy.fr", true }, { "airpbx.com", true }, - { "airplaneairline.com", true }, { "airplanepictures.tk", true }, { "airplanestatsers.ga", true }, { "airplanestatsest.ga", true }, { "airplanet.tk", true }, - { "airplanetick.com", true }, { "airplaneticketcheap.com", true }, { "airplay-inflatable-hire.co.uk", true }, { "airplayradio.nl", true }, @@ -8177,31 +10055,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airport-acap.eu", true }, { "airport-car-rental.tk", true }, { "airport-charlotte.com", true }, - { "airportairline.com", true }, { "airportal.cn", true }, { "airportbarking.eu", true }, { "airportcoc.cf", true }, { "airportcoc.ga", true }, { "airportcoc.ml", true }, { "airportcyprus.com", true }, - { "airportgatwick.com", true }, + { "airportdriver.vip", true }, + { "airportfrankfurtgermany.com", true }, + { "airportgrandhotel.com", true }, { "airportguam.com", true }, - { "airportinrome.com", true }, - { "airportlimototoronto.com", true }, - { "airportparkingcoupon.info", true }, - { "airportsdc.com", true }, - { "airportsflorida.com", true }, - { "airportsfo.com", true }, + { "airporthotelsgatwick.com", true }, + { "airportnigeria.com", true }, + { "airportnz.com", true }, + { "airportofdubai.com", true }, + { "airportperth.com", true }, + { "airportsbarcelona.com", true }, + { "airportstickets.com", true }, { "airportstuttgart.com", true }, - { "airporttaxibudapest.com", false }, - { "airporttransferbudapest.co.uk", false }, - { "airporttransferbudapest.com", false }, - { "airportturkey.com", true }, { "airportzo.net.in", true }, { "airportzostage.in", true }, { "airpurifierproductsonline.com", true }, { "airquestion.org", true }, { "airrestoration.ch", true }, + { "airscope.ae", true }, + { "airscorp.com", true }, { "airsculpture.us", true }, { "airsculptureballoonart.com", true }, { "airsculptureballoonart.net", true }, @@ -8210,33 +10088,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "airseatac.net", true }, { "airship.com", true }, { "airship.eu", true }, - { "airskystore.com", true }, + { "airsial.com", true }, { "airslate.com", true }, - { "airsnore.com", true }, { "airsoft.ch", true }, { "airsoft.fr", true }, { "airsofthub.fr", true }, { "airsoftpark.cz", true }, { "airsoftpinoso.tk", true }, + { "airstop.cz", true }, { "airstrike.tk", true }, { "airswap.io", true }, { "airtable.com", true }, + { "airtame.cloud", true }, { "airtec-france.fr", true }, + { "airtel.co.tz", true }, { "airtel.com.ng", true }, { "airterms.cf", true }, - { "airticketstravel.com", true }, { "airtimerewards.co.uk", false }, - { "airtoolaccessoryo.com", true }, { "airtrain.gq", true }, { "airtrolinc.com", true }, + { "airupdate.com", true }, { "airventilation.ca", true }, { "airventuri.com", true }, + { "airvida.sg", true }, { "airvpn.org", true }, - { "airvuz.com", true }, { "airwaystorage.net", true }, + { "airweb.top", false }, { "airwolf.tk", true }, { "airwolfthemes.com", true }, - { "airwrenchei.com", true }, { "airzone.tk", true }, { "airzox.com", true }, { "ais.fashion", true }, @@ -8245,19 +10124,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aisedomains.ga", true }, { "aisera.com", true }, { "aish.ml", true }, + { "aishatibetanterriers.ca", true }, { "aisi316l.net", true }, + { "aisp.sg", true }, { "aispirit.tk", true }, { "aisrvs.net", true }, - { "aissel.com", true }, { "aisselkolm.com", true }, - { "aisteru.ch", true }, + { "aistdent.ru", true }, { "aisthesthai.tk", true }, { "aistockcharts.com", true }, { "aistrope.com", true }, { "aistsist.ga", true }, { "aistsist.tk", true }, { "ait.com.ar", true }, + { "aita.global", true }, + { "aitanaedu.org", true }, + { "aither.cc", true }, + { "aitidings.com", true }, { "aitkincountymn.gov", true }, + { "aitokyolab.com", true }, + { "aitooling.net", true }, { "aitosoftware.com", true }, { "aitrading.uk", true }, { "aitrust.ro", true }, @@ -8268,14 +10154,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aivan.ai", true }, { "aivd.lol", true }, { "aiwadubai.com", true }, + { "aiwansky.com", true }, + { "aiwo.ai", true }, { "aiwosq.cn", true }, { "aiwriter.tools", true }, { "aixamfinancialservices.nl", true }, + { "aixlab.de", true }, { "aixm.aero", true }, + { "aixploringprovence.com", true }, + { "aixue.net", true }, + { "aizhuan.com", true }, + { "aizxxs.com", true }, + { "aizxxs.net", true }, { "aj-laixada.tk", true }, - { "aja.de", true }, + { "ajansmanisa.com", true }, { "ajansseo.com", true }, + { "ajapplegatepornstar.com", true }, { "ajarope.com", true }, + { "ajatelier.com", true }, { "ajax-fanatics.tk", true }, { "ajax-magazine.tk", true }, { "ajaxboys.tk", true }, @@ -8284,7 +10180,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ajaxfansite.tk", true }, { "ajaxfansonly.tk", true }, { "ajaxforever.tk", true }, + { "ajaxified.com", true }, { "ajaxmasterdam.tk", true }, + { "ajaxmfs.com", true }, { "ajaxnetwerk.tk", true }, { "ajaxnow.tk", true }, { "ajaxplaza.tk", true }, @@ -8302,25 +10200,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ajforum.tk", true }, { "ajhstamps.co.uk", true }, { "ajiboye.com", true }, + { "ajiloot.com", true }, { "ajinabraham.com", true }, { "ajl.io", true }, { "ajman-realty.ga", true }, + { "ajmanded.com", true }, { "ajmanepay.ae", true }, { "ajmanpay.gov.ae", true }, + { "ajmansewerage.ae", true }, { "ajmara.pl", true }, { "ajnah.net", true }, { "ajnasz.hu", true }, + { "ajoke.eu", true }, { "ajoliveira.com", true }, { "ajoliveira.net", true }, { "ajoliveira.org", true }, { "ajoneuvokeskitys.fi", true }, - { "ajorban.com", true }, + { "ajop.loan", true }, { "ajramos.tk", true }, { "ajsb85.com", true }, { "ajscred.online", true }, - { "ajsrp.com", true }, - { "ajt.io", true }, - { "ajutor.tk", true }, + { "ajto.pro", true }, + { "ajvandeven.com", true }, { "ajvco.com.hk", true }, { "ajvco.net", true }, { "ajvocab.com", true }, @@ -8328,43 +10229,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ak-design.tk", true }, { "ak-online.tk", true }, { "ak-varazdin.hr", true }, - { "ak-vsk.cz", true }, + { "ak-wohnen.de", true }, + { "ak.sb", true }, { "ak2000.tk", true }, { "ak47-miyamoto.spdns.org", true }, { "ak68.tk", true }, { "ak85.tk", true }, { "ak96.tk", true }, { "aka.ms", true }, + { "aka.pw", true }, { "akabandokonlamierda.tk", true }, { "akachanikuji.com", true }, { "akachanwebsite.tk", true }, { "akaconvention.org", true }, { "akad.com.br", true }, { "akademiaantykorupcyjna.pl", true }, - { "akademialazarev.pl", true }, { "akademiawawer.pl", true }, + { "akademiawellbeing.pl", true }, { "akademie-frankfurt.de", true }, { "akadseguros.com.br", true }, { "akagiauto.net", true }, + { "akaike.co.jp", true }, { "akalashnikov.ru", true }, + { "akamaiseo.com", true }, { "akamon.ac.jp", true }, + { "akamu.de", true }, { "akaoma.com", true }, - { "akapumkin.com", true }, { "akaratasker.com", true }, + { "akari.net", true }, { "akarisoftware.com", true }, { "akaritakai.net", true }, { "akaritaste.ch", true }, + { "akasa.red", true }, { "akasha.world", true }, { "akashdsouza.now.sh", true }, + { "akashi-kiharu.com", true }, + { "akashiya-b.com", true }, { "akashstephen.com", true }, { "akasi.cf", true }, + { "akasmedikal.com", true }, + { "akasmedikal.net", true }, + { "akatony.com", true }, { "akaxaka.tk", true }, + { "akayu.com", true }, { "akaziya.cf", true }, { "akbam.co.uk", true }, { "akbarsempoi.tk", true }, { "akbas.tk", true }, + { "akblasch.com.au", true }, { "akbtv.ru", true }, - { "akc3n.org", true }, + { "akcenty.com.ua", true }, { "akdenizim.tk", true }, { "akdigitalegesellschaft.de", false }, { "akdusekbudil.cz", true }, @@ -8372,21 +10286,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "akeldam.tk", true }, { "akelius.com", true }, { "akemineko.tk", true }, + { "akemisp.com.br", true }, { "akerberri.tk", true }, { "akerboom.family", true }, { "akerboom.me", true }, { "akerboom.org", true }, { "akeroh.com", true }, + { "akeroh.nl", true }, { "akesinti.tk", true }, { "aketzasantacoloma.tk", true }, - { "akewe.com", false }, { "akfoundationindia.com", true }, { "akhabar.tk", true }, { "akhbaralam.cf", true }, { "akhbareldesh.tk", true }, { "akhbarmisr.tk", true }, { "akhealthconnection.com", false }, - { "akhenaten.eu", true }, { "akhepcat.com", true }, { "akhilindurti.com", false }, { "akhomesforyou.com", true }, @@ -8403,31 +10317,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "akillitelefon.com", true }, { "akimeder.tk", true }, { "akimitsu.co.jp", true }, - { "akinavn.vn", true }, + { "aking.com.my", true }, { "akinix.com", true }, { "akinokae.de", true }, { "akiranet.tk", true }, { "akisazame.tk", true }, { "akita-boutique.com", true }, { "akita-stream.com", true }, + { "akita.cloud", true }, { "akitacyber.com", true }, - { "akito.moe", true }, - { "akiyama.website", true }, + { "akitra.net", true }, + { "akiv.net", true }, { "akiym.com", true }, { "akj.io", true }, { "akkerwinde.tk", true }, + { "akko.wtf", true }, { "akkordy-skachat.ga", true }, + { "akkoremaji.club", true }, { "akkorturizm.com", true }, { "akl.city", true }, { "aklagare.se", true }, { "akmatrix.org", true }, + { "akmens.id", true }, + { "ako-world.com", true }, { "akoben.cloud", true }, { "akoch.net", true }, + { "akode.in", true }, { "akonlineworks.tk", true }, { "akoofs.com", false }, - { "akoplant.com", true }, { "akordeoiak.tk", true }, - { "akorlar.com", true }, { "akostecki.de", true }, { "akouryy.net", true }, { "akoya.fi", true }, @@ -8438,25 +10356,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "akr.services", true }, { "akracing.se", true }, { "akramvet.tk", true }, + { "akrasa.com.au", true }, + { "akrasa.pro", true }, + { "akrasa.xyz", true }, { "akrep.com", true }, { "akrilikhavuz.com", true }, { "akritikos.info", true }, { "akrobat.cf", true }, + { "akrochem.com", true }, { "akronohiorescue.gov", true }, { "akropolis-ravensburg.de", true }, + { "akrzon.com", true }, { "aksaramedia.com", true }, { "aksehir.bel.tr", true }, { "akselinurmio.fi", true }, { "aksenov.tk", true }, { "aksenovalexey.tk", true }, { "akses.co", true }, + { "aksesuarai.com", true }, { "akshavitrends.com", true }, { "akshay.in.eu.org", true }, { "akshit.me", true }, + { "aksnapshots.com", true }, + { "aksnwn.com", true }, { "aksot.com", true }, { "akssma.com", true }, { "akszita.com", true }, - { "aktfotozas.eu", true }, + { "aktelectric.com.co", true }, + { "aktia.fi", true }, { "aktin.cz", true }, { "aktin.sk", true }, { "aktion-vielfalt.ch", true }, @@ -8468,12 +10395,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aktivierungscenter.de", true }, { "aktivitetatil.com", true }, { "aktivpark-lumdatal.de", true }, + { "aktransmission.com", true }, { "aktuel-urunler.com", true }, + { "aktuelfirsat.com", true }, { "aktuelleprospekte.at", true }, + { "aktueller.com", true }, { "aktuellsakerhet.se", true }, { "akuislam.com", true }, - { "akukas.com", false }, { "akul.co.in", true }, + { "akumarjain.com", true }, { "akumat.com.pl", true }, { "akumat.eu", true }, { "akumat.pl", true }, @@ -8482,10 +10412,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "akupunktura.tk", true }, { "akura.cf", true }, { "akura.tk", true }, - { "akuseorangtraveler.com", true }, { "akuston.eu", true }, { "akustyka.tk", true }, { "akutun.cl", true }, + { "akvakm.eu", true }, { "akvaristika.cf", true }, { "akvilon.tk", true }, { "akvorrat.at", true }, @@ -8494,11 +10424,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "al-bahrain.tk", true }, { "al-capone.ga", true }, { "al-capone.tk", true }, - { "al-f.net", true }, + { "al-craft.info", true }, { "al-hekka.com.ua", true }, + { "al-monitor.com", true }, + { "al-pres.com", true }, { "al-salam.tk", true }, + { "al-wood.it", true }, { "al-yawm.ga", true }, { "al2schaos.tk", true }, + { "al3abmizo.com", true }, { "al3ilm.com", true }, { "al3ilm.net", true }, { "al3xpro.com", true }, @@ -8510,6 +10444,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alabamabuys.gov", true }, { "alabamacoastalradiology.com", true }, { "alabamadebtrelief.org", true }, + { "alabamafurs.com", true }, { "alabamanet.tk", true }, { "alabamaonlinedivorce.com", true }, { "alabamasoilandwater.gov", true }, @@ -8541,13 +10476,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alamak.cc", true }, { "alamalsahara.co", true }, { "alamanceconstruction.com", true }, + { "alamancecountync.gov", true }, { "alamanceinsulationllc.com", true }, + { "alamancetv.com", true }, { "alamani.tk", true }, { "alambazarmath.tk", true }, { "alambique.tk", true }, - { "alamitosbaytraders.com", true }, { "alamo-analytics.com", true }, + { "alamotownshipmi.gov", true }, { "alamowellnessalliance.com", true }, + { "alan-lam.co.uk", true }, { "alan-turnbull.co.uk", true }, { "alana.com.ua", true }, { "alanberger.me.uk", false }, @@ -8555,21 +10493,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alanburr.us.eu.org", true }, { "alancabrera.com", true }, { "alancat.ml", true }, + { "alancolephotography.com", true }, { "aland.co.uk", true }, - { "alandoyle.com", true }, + { "alanet.org", true }, { "alanhua.ng", true }, { "alanhuang.name", true }, { "alanina.com", true }, { "alaninkenya.org", true }, - { "alaniz-law.com", true }, { "alankardresswalla.tk", true }, + { "alankatona.com", true }, { "alankritstories.com", true }, { "alanokling.nl", true }, { "alanonsantabarbara.info", true }, + { "alanpearce.eu", true }, + { "alanrogers.com", true }, { "alansilson.tk", true }, { "alantica.ga", true }, { "alanyaescmagazin.tk", true }, { "alanyatur.tk", true }, + { "alaoui.eu.org", true }, { "alapa-tatsuno.com", true }, { "alapetite.fr", true }, { "alarbnet.tk", true }, @@ -8584,6 +10526,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alasdupur.tk", true }, { "alaska.com.tr", true }, { "alaskabuylocal.org", true }, + { "alaskacapitol.gov", true }, { "alaskacruises.com", true }, { "alaskadentalcare.com", true }, { "alaskafishinglodges.net", true }, @@ -8593,14 +10536,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alasta.info", true }, { "alastairs-place.net", true }, { "alatest.com", true }, + { "alatienne.fr", true }, { "alatkesehatan.tk", true }, - { "alaturkaonline.com", true }, + { "alaturkaonline.com", false }, { "alaunus.com", true }, { "alavieestbelle.be", true }, + { "alazaherah.net", true }, { "alb-flirt.de", true }, { "alb-media.tk", true }, { "albaadani.com", true }, { "albadon.tk", true }, + { "albadr.top", true }, + { "albaform.com", true }, { "albagold.tk", true }, { "albagora.nl", true }, { "albakham.eu.org", true }, @@ -8609,8 +10556,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "albalatedelarzobispo.tk", true }, { "albalew.is", true }, { "albalinks.tk", true }, + { "albamiss.com", true }, { "albamusic.tk", true }, - { "albaneselorenzo.com", true }, + { "albaneselorenzo.com", false }, { "albanesi.it", true }, { "albaniachat.tk", true }, { "albaniaonline.tk", true }, @@ -8618,50 +10566,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "albanildedios.tk", true }, { "albanskpaskhare.tk", true }, { "albanyca.gov", true }, + { "albanylaser.ca", true }, { "albanyoregon.gov", true }, { "albarius.ga", true }, { "albaronventures.com", true }, { "albarugby.tk", true }, { "albatrosboat.it", true }, { "albayan.ae", true }, - { "albbounce.co.uk", true }, { "albemarlehistory.org", true }, { "albendazole.ga", true }, { "albendazole.ml", true }, { "albergointernational.it", true }, { "albergolafiorita.com", true }, { "alberguecovadonga.es", true }, - { "alberoraydolap.com", false }, - { "albersdruck.de", true }, { "albert-yu.com", true }, { "albertathome.org", true }, { "albertcuyp-markt.amsterdam", true }, { "alberteinsteinbiography.tk", true }, - { "albertforfuture.de", true }, + { "albertforfuture.de", false }, { "albertgibb.tk", true }, { "albertify.xyz", true }, { "albertofarina.tk", true }, { "albertolopezaroca.tk", true }, { "albertosobrino.tk", true }, { "albertovr.com", true }, + { "albertovr.net", true }, { "albertpedersen.com", true }, - { "alberts-blatt.de", true }, + { "alberts-blatt.de", false }, { "albertspahiu.tk", true }, - { "alberttonrubbleremovals.co.za", true }, + { "alberttwpmi.gov", true }, + { "albertvillemn.gov", true }, { "albeso.ml", true }, { "albhof-wasserfall.de", true }, + { "albi-tourisme.fr", true }, { "albilaga.id", true }, - { "albinma.com", false }, + { "albinonderdelen.nl", true }, { "albinvega.tk", true }, { "albion2.org", true }, { "albionfaeries.org.uk", true }, { "albleuchten.de", true }, { "albme.gov", true }, { "albourne.com", true }, - { "albrightcompliance.com", true }, { "albrocar.com", true }, { "albstaedter-kids-cup.de", true }, + { "albufeira-car-hire.com", true }, { "albuic.tk", true }, + { "albumsepeti.com.tr", true }, + { "albuquerquebaroqueplayers.com", true }, { "alburquerquerock.tk", true }, { "albuterol.ga", true }, { "albuterolonline.ga", true }, @@ -8670,34 +10621,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "albylane.com.au", true }, { "alca31.com", false }, { "alcalainos.tk", true }, - { "alcaldia.info", true }, { "alcamilo.cloudns.cc", true }, { "alcanaan.com", true }, + { "alcanaplata.com", true }, { "alcantara.cf", true }, { "alcapalis.tk", true }, { "alcapone.gq", true }, { "alcar.tk", true }, { "alcaralifusi.tk", true }, - { "alcasan.de", false }, { "alcatelonetouch.us", true }, { "alcatraz-webdesign.tk", true }, + { "alcatrazeast.com", true }, { "alcatraztourtickets.com", true }, { "alchakov.tk", true }, { "alchemist-heaven.tk", true }, { "alchemisten.tk", true }, { "alchemiya.ru", true }, - { "alchemy-media-marketing.com", true }, { "alchemy.gr", true }, + { "alchemyequities.com.au", true }, { "alchimic.ch", false }, { "alchimist-paulo-coelho.tk", true }, { "alchosting.net", false }, { "alcineconamor.com", true }, - { "alcionesakugawa.com", false }, { "alcites.com", true }, { "alcnutrition.com", true }, { "alcobendas.tk", true }, { "alcoclinica.moscow", true }, { "alcoclinica.ru", true }, + { "alcogolizmstop.ru", true }, { "alcoholapi.com", true }, { "alcoholia.tk", true }, { "alcoholicbeverages.tk", true }, @@ -8708,7 +10659,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alcorncountyms.gov", true }, { "alcove.cf", true }, { "alcovidvaccine.gov", true }, - { "alctel.com.br", true }, + { "alctel.com.br", false }, { "alcubillas.tk", true }, { "aldarcake.com", true }, { "aldastv.tk", true }, @@ -8720,17 +10671,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aldersgateumc.org", true }, { "aldervets.co.uk", true }, { "aldevadigital.com", true }, - { "aldiabcs.com", true }, { "aldien.com.br", true }, { "aldino-redagno.com", true }, { "aldipresscentre.co.uk", true }, - { "aldiwan-mobile.com", true }, { "aldo-saputra.ga", true }, { "aldo-shop.tk", true }, + { "aldolafontana.be", true }, { "aldomedia.com", true }, - { "aldorr.net", false }, + { "aldorlocal.gov", true }, + { "aldot.gov", true }, { "aldous-huxley.com", true }, { "aldridge-ringers.tk", true }, + { "aldridge.com", true }, { "aldyputra.net", true }, { "ale5000.altervista.org", true }, { "alea-prevention.com", true }, @@ -8740,14 +10692,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alecpap.com", true }, { "alecpapierniak.com", true }, { "alecrimacessorios.com.br", true }, - { "alecrust.com", true }, + { "alector.com", true }, { "aledoil.gov", true }, { "aledotx.gov", true }, { "aleftinka.tk", true }, + { "alega.com.br", false }, { "alegriafm.tk", true }, { "alegromania.tk", true }, + { "alehinta.fi", true }, { "alejandrocruz.es", true }, { "alejandromateoconde.tk", true }, + { "alejandromoda.com", true }, { "alejandromunoz.es", true }, { "alejandropernett.tk", true }, { "alejandrophones.com.mx", true }, @@ -8756,6 +10711,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aleks.com", true }, { "aleksa.ga", true }, { "aleksa.tk", true }, + { "aleksac.me", true }, { "aleksandar-vukmirovic.tk", true }, { "aleksanderkilinski.tk", true }, { "aleksanders.tk", true }, @@ -8767,21 +10723,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alemagia.pl", true }, { "alemangranada.tk", true }, { "alemautos.com.co", true }, + { "alen.nl", true }, { "alena.ga", true }, { "alena.tk", true }, { "alenafugueroa.tk", true }, { "alenaserezhina.cf", true }, { "alenbadel.com", true }, { "alendronate.gq", true }, + { "alendronato.com", true }, + { "alenvlahovljak.com", true }, { "alenwich.com", true }, { "aleph.land", true }, + { "alephindia.in", true }, + { "aleragroup.com", true }, { "alerbon.net", true }, { "aleromtrowbank.tk", true }, { "alerque.com", true }, { "alert-software.com", true }, - { "alertboxx.com", true }, + { "alertaenlinea.gov", true }, + { "alertaspopup.com", true }, { "alertes.biz", true }, + { "alertlogic.com", true }, + { "alertmedia.com", true }, + { "alertoc.gov", true }, { "alerts.sg", true }, + { "alertsclk.com", true }, { "alertwire.com", true }, { "alescan.it", true }, { "alesha.tk", true }, @@ -8790,29 +10756,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alessandrobasi.it", true }, { "alessandrolapiana.com", true }, { "alessandroonline.com.br", true }, - { "alessandropuccistudio.com", true }, { "alessandrotravel.com", true }, { "alessandroz.ddns.net", true }, + { "alethea.ai", true }, { "aletheia.moe", true }, - { "aletm.it", true }, + { "aletm.it", false }, { "alevel.tech", false }, { "alevi-forum.tk", true }, { "alevi.tk", true }, { "alex-n.net", true }, { "alex-ross.co.uk", true }, + { "alex-werbung.de", true }, + { "alex-wohl.fr", true }, + { "alex.net.co", true }, { "alex3.tk", true }, { "alex97000.de", false }, { "alexaconnect.tk", true }, { "alexada.ms", true }, + { "alexadamsddns.com", true }, { "alexalist.tk", true }, { "alexaminers.gov", true }, { "alexander-beck.eu", true }, { "alexander-net.tk", true }, { "alexander-van-nieuwenhoven.tk", true }, { "alexander.dk", true }, + { "alexanderandwilks.co.uk", true }, { "alexanderb.info", true }, { "alexanderbernitz.eu", true }, + { "alexandererber.com", true }, { "alexanderg.tk", true }, + { "alexanderiwan.de", true }, { "alexanderjshapiro.com", true }, { "alexanderkhen.tk", true }, { "alexanderlau.ga", true }, @@ -8826,14 +10799,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexandertutoring.com", true }, { "alexanderwagner.tk", true }, { "alexandra-schulze.de", true }, + { "alexandra-siegel.com", true }, { "alexandraandnicolay.com", true }, + { "alexandraschick.at", true }, { "alexandraschmidt.coach", true }, { "alexandrastrauss.fr", true }, - { "alexandrawett.net", true }, + { "alexandrawett.org", true }, { "alexandre-acaries.fr", true }, + { "alexandre-barret.fr", true }, { "alexandreguarita.com.br", true }, { "alexandremottier.tk", true }, + { "alexandrepedrosa.com", true }, { "alexandrevicente.net", true }, + { "alexandrianh.gov", true }, + { "alexandrin.com", true }, { "alexandrite.cf", true }, { "alexandros.io", false }, { "alexandryimmobilier.fr", true }, @@ -8841,6 +10820,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexarthur.net", true }, { "alexauto.tk", true }, { "alexberts.ch", true }, + { "alexblanck.com", true }, { "alexblock.io", true }, { "alexbogovich.com", false }, { "alexbosch.net", true }, @@ -8848,6 +10828,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexcoman.com", true }, { "alexcpp.tk", true }, { "alexdaniel.org", true }, + { "alexdelpiero.ru", true }, { "alexdesigner.tk", true }, { "alexdowns.tk", true }, { "alexdutton.co.uk", true }, @@ -8855,13 +10836,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexeydrach.ru", true }, { "alexeykamalov.tk", true }, { "alexeykopytko.com", true }, - { "alexfabian.myftp.org", true }, { "alexgaynor.net", true }, - { "alexgebhard.com", true }, { "alexgonzalez-online.tk", true }, { "alexguti.com", true }, { "alexhd.de", true }, { "alexhodgkinson.tk", true }, + { "alexia.fr", true }, + { "alexia.lol", true }, + { "alexidls.com", true }, { "alexio.ml", true }, { "alexion.nl", true }, { "alexisabarca.com", true }, @@ -8873,25 +10855,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexispoficial.tk", true }, { "alexisquero.tk", true }, { "alexisshaw.com", true }, - { "alexitor.com", true }, + { "alexistexaspornstar.com", true }, { "alexjsully.me", true }, { "alexlambertz.de", true }, { "alexlombardo.tk", true }, { "alexlouden.com", true }, { "alexmainz.com", true }, + { "alexmathews.blog", true }, { "alexmedia.tk", true }, { "alexmerkel.com", true }, { "alexmerkel.me", true }, { "alexmerkel.xyz", true }, + { "alexmods.com", true }, { "alexmol.tk", true }, { "alexmroberts.net", true }, { "alexmunroe.co.uk", true }, { "alexn.org", true }, - { "alexnewson.co.uk", true }, - { "alexnguyen.co.nz", false }, + { "alexnedea.ro", true }, { "alexpavel.com", true }, { "alexpetryk.com", true }, - { "alexpnixon.com", true }, { "alexpotter.net", true }, { "alexridevski.net", true }, { "alexridge.tk", true }, @@ -8902,7 +10884,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alexschokker.tk", true }, { "alexschroeder.ch", true }, { "alexsergeyev.com", true }, - { "alexsexton.com", true }, + { "alexsexton.com", false }, { "alexstudio.tk", true }, { "alextaffe.com", true }, { "alexthayne.co.uk", true }, @@ -8910,6 +10892,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alextweewielers.tk", true }, { "alexustinoff.cf", true }, { "alexvdveen.nl", true }, + { "alexveil.com", true }, { "alexvetter.de", false }, { "alexwardweb.com", true }, { "alexweber.tk", true }, @@ -8918,80 +10901,101 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aleymedya.ga", true }, { "aleymedya.gq", true }, { "aleymedya.ml", true }, + { "aleynadavetiye.com", true }, { "aleynamasajsalonu.gq", true }, - { "alezaragoza.com", true }, { "alfa-auto.tk", true }, { "alfa-books.ga", true }, { "alfa-host.ml", true }, { "alfa-music.tk", true }, + { "alfa-pack.com.ua", true }, { "alfa-tech.su", true }, { "alfaair.aero", true }, + { "alfabank-info.ru", false }, { "alfabetajuega.com", true }, { "alfabuster.com", true }, { "alfacharlie.co", true }, { "alfadecor.ml", true }, { "alfadefiant.tk", true }, - { "alfagroup-aluminium.com", true }, - { "alfagroupaluminium.com", true }, + { "alfafile.net", true }, + { "alfaforex.ru", true }, { "alfalasteenyia.cf", true }, { "alfamask.de", true }, { "alfambra.tk", true }, - { "alfaperfumes.com.br", true }, + { "alfapack-shop.com", true }, { "alfaproweb.fr", true }, { "alfastone.com.ua", true }, { "alfateks.com.ua", true }, - { "alfavideocirurgica.com.br", true }, { "alfavipambulans.com", true }, { "alfavit.cf", true }, { "alfawedding.com", true }, - { "alfiebarker.com", true }, { "alfonso-baya.tk", true }, { "alfonsostriano.it", true }, { "alforto.nl", false }, { "alfratehotelcampiglio.it", true }, { "alfred-figge.de", true }, + { "alfred-g-fischer.de", true }, + { "alfred.co.in", true }, { "alfredapp.com", true }, { "alfredlin015.com", true }, { "alfredo-misael.tk", true }, + { "alfredopotena.it", true }, + { "alfromuez.es", true }, { "alfryadi.my.id", true }, - { "alfst.com", true }, { "alftrain.com", true }, { "alg-fotografie.de", true }, { "algarmatic-automatismos.pt", true }, + { "algarve-1.com", true }, + { "algarve-carhire.net", true }, + { "algarve-transfers.co.uk", true }, { "algbee.com", true }, { "algbra.com", true }, + { "alge.xyz", true }, { "algebra-quiz.com", true }, { "algercounty.gov", true }, { "algerianportal.tk", true }, { "algeriaweb.tk", true }, { "algerie-music.tk", true }, + { "algerie360.com", true }, { "alghadpowersolutions.com", true }, { "alghanimcatering.com", true }, - { "alghubaibatours.com", false }, + { "algibranstore.id", true }, + { "algo-invest.in", true }, { "algoarmada.com", true }, { "algoentremanos.com", true }, + { "algoexplorer.io", true }, { "algofactory.de", true }, { "algolia.com", true }, - { "algomacas.org", true }, + { "algonaiowa.gov", true }, { "algopix.com", true }, { "algorista.tk", true }, { "algorithmic.ml", true }, { "algorithmofsuccess.com", true }, + { "algorithms.guide", true }, { "algoritm.gq", true }, + { "algoritmika.org", true }, { "algoritmususpechu.cz", true }, { "algorytm.tk", true }, + { "algotest.in", true }, { "alhamedeia.tk", true }, + { "alhareth.net", true }, { "alhomaidani.com", true }, { "alhost.ml", true }, { "alhs-archives.com", true }, { "alhuqul-kh.com", true }, { "ali-shariati.tk", true }, + { "ali360.com", true }, { "alia-helianthi.tk", true }, - { "aliacraft.net", true }, + { "aliaakademi.com.tr", true }, + { "aliads.com", true }, + { "aliahmadi.me", true }, + { "aliakpoyraz.com", true }, { "alialkurdy.tk", true }, + { "aliamakeup.com", true }, { "aliancadesentupidora.com.br", true }, + { "aliancatrainingcenter.online", true }, { "alianet.org", true }, { "aliantsoft.pl", true }, + { "aliasbox.ovh", true }, { "aliasinfoforums.tk", true }, { "aliaswp.com", true }, { "alibabau.tk", true }, @@ -8999,22 +11003,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alibamu.org", true }, { "alibangash.com", true }, { "alibi-ua.com.ua", true }, + { "alibiloungelv.com", false }, { "alibip.de", true }, { "alicante-spain.tk", true }, { "alice-memorial.de", true }, { "alice.tw", true }, { "alicebaldenegro.tk", true }, + { "alicecastle.com", true }, { "alicedepret.com", true }, { "alicehairstyling.tk", true }, { "alicehartley.com", true }, { "alicekinkycat.net", true }, - { "aliceophotographie.fr", true }, + { "alicekinkycat.org", true }, { "alicestudio.it", true }, { "alicetone.net", true }, { "alicialab.org", true }, + { "alicjacezary.eu", true }, { "alicomalimentari.com", true }, + { "alidanbao.com", true }, { "aliefirfany.com", true }, { "alieke.design", true }, + { "aliel.fr", true }, { "alien-life.tk", true }, { "alien.net.au", true }, { "alienantfarm.tk", true }, @@ -9031,10 +11040,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aliexfantaisies.com", true }, { "alifan.tk", true }, { "alifeadjacent.com", true }, + { "alifnasiya.uz", true }, { "alighierirescaldina.it", true }, + { "alight.ge", true }, + { "alightwell.com", true }, { "alignedchiro.org", true }, - { "alignedtoachieve.com", true }, { "alignedweb.com", true }, + { "alignforce.de", true }, { "alignminds.com", true }, { "alignrs.com", true }, { "alignthoughts.com", true }, @@ -9043,36 +11055,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aliim.gdn", true }, { "alikarslanov.tk", true }, { "alikasimoglu.com", true }, + { "alikgriffin.com", true }, { "alikhan.org", true }, { "alikulov.me", true }, { "alila.dog", true }, { "alilepro.cf", true }, { "alilialili.ga", true }, + { "alilog.com", true }, + { "alimahmood.com", true }, { "alimanaka-rabesata.tk", true }, + { "alimate.com", true }, { "aliment-covid19.com", true }, - { "alimentosemgluten.com.br", true }, { "alimentosmcf.com", true }, { "alimentsduquebecaumenu.com", true }, { "alimenty.tk", true }, { "alimeta.it", true }, { "alimwilliams.tk", true }, - { "alina-fox.com", true }, { "alinalamour.com", true }, { "alinasmusicstudio.com", true }, { "alinatinen.cf", true }, { "alinatinen.gq", true }, - { "alinbu.net", true }, + { "aline-cannabis.com", true }, { "alinecordeiro.adv.br", true }, - { "alinecordeiro.com.br", true }, { "alineonline.tk", true }, - { "alinode.com", true }, - { "alinol.com", true }, + { "alingroove.com", true }, + { "alinneata.com", true }, + { "alio.lt", true }, { "aliorange.com", true }, { "aliosmanyuksel.com.tr", true }, { "alireza2love.tk", true }, { "alirezahesari.com", true }, { "alis-test.tk", true }, { "alisblog.ml", true }, + { "alisearch.com", true }, + { "aliseihotelspa.com", true }, { "alishanova.tk", true }, { "alisoft.gq", true }, { "alisondavenport.ga", true }, @@ -9080,18 +11096,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alisonlitchfield.com", true }, { "alisonmatter.tk", true }, { "alisonmcalpine.com", true }, + { "alisonswindles.com", true }, { "alissa-group.com", true }, { "alissagerhard.de", true }, { "alissanoir.net", true }, { "alisstyle.tk", true }, { "alista.design", true }, { "alistaku.tk", true }, - { "alisync.com", true }, { "alitabergert.tk", true }, { "alitajran.com", true }, { "alitec.it", true }, { "alitpedia.ga", true }, + { "alittledelightful.com", true }, + { "aliud.be", true }, { "aliv.biz", true }, + { "alivecast.co.jp", true }, { "alix-board.de", true }, { "aliyasin.org", true }, { "alizah.id", true }, @@ -9103,12 +11122,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aljaspod.hu", true }, { "aljaspod.net", true }, { "aljaspod.org", true }, + { "aljfinance.com", true }, { "aljoschairmer.com", true }, { "aljullusims.tk", true }, { "aljweb.com", true }, { "alkaabi.io", true }, { "alkacoin.net", true }, { "alkamitech.com", true }, + { "alkanbelgelendirme.com.tr", true }, { "alkel.info", true }, { "alkemy.mx", true }, { "alko-centr.ru", true }, @@ -9118,39 +11139,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alkogol.ga", true }, { "alkopedia.tk", true }, { "alkor.tk", true }, - { "alkozeroks-wiki.ru", true }, { "all-bikes.fr", true }, { "all-blogs.tk", true }, { "all-bronza.ru", true }, { "all-connect.net", false }, { "all-credits.cf", true }, { "all-ebooks.gq", true }, + { "all-eu-recruitment.com", true }, { "all-fashion-schools.com", true }, { "all-for-u.tk", true }, { "all-gsm-solutions.tk", true }, { "all-inhealth.com", true }, - { "all-markup-news.com", true }, { "all-music.ml", true }, { "all-music.tk", true }, { "all-pics.tk", true }, { "all-rating.tk", true }, { "all-seo.tk", true }, + { "all-star-autoglass.com", true }, { "all-stuff.tk", true }, { "all-tec.com.mx", true }, { "all-things.tk", true }, { "all-top.tk", true }, { "all-waystraining.com.au", true }, { "all-wot.ml", true }, - { "all4games.net", true }, + { "all.li", true }, { "all4hardware4u.de", true }, + { "all4phones.de", true }, + { "all4running.nl", true }, { "all4web.tk", true }, { "all878.com", true }, + { "alla-famiglia-p-otto.de", true }, { "alla.tk", true }, - { "allaboutclassifieds.com", true }, + { "allaboutcovers.co.za", true }, + { "allabouteyesvet.com", true }, { "allaboutfunuk.com", true }, { "allaboutgoats.com", true }, { "allaboutgreg.net", true }, { "allabouthome.ml", true }, + { "allabouthtml.com", true }, { "allaboutmadonna.tk", true }, { "allaboutnothing.cf", true }, { "allaboutnothing.ga", true }, @@ -9160,8 +11186,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allaboutswing.com", true }, { "allabouttechh.tk", true }, { "allaboutthekink.org", true }, + { "allaboutyouspa.co.uk", true }, { "allaccessglobal.tech", true }, + { "allaccountingcareers.com", true }, { "allactioneventhire.co.uk", true }, + { "allactionsecurity.com", true }, { "allamakee.k12.ia.us", true }, { "allamericangutterprotection.com", true }, { "allamericanmuslim.com", true }, @@ -9177,54 +11206,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allarticles.tk", true }, { "allas.se", true }, { "allas.tk", true }, + { "allasianpics.com", true }, { "allattaremoda.com.br", true }, + { "allauthor.com", true }, + { "allazohealth.com", true }, { "allbenjoy.de", true }, { "allbestby.tk", true }, { "allbetgame.cn", true }, { "allbetgaming.com", true }, { "allbetnet.com", true }, - { "allbigdicks.com", true }, { "allboard.tk", true }, { "allbookmark.cf", true }, { "allbooks.cf", true }, { "allbouncesurrey.co.uk", true }, + { "allboxes.ru", true }, { "allboymodeling.com", true }, { "allbrestby.tk", true }, { "allbrestorg.tk", true }, { "allbridges.tk", true }, { "allbs.pt", true }, + { "allbuttpics.com", true }, { "allcapa.org", true }, { "allcarecorrectionalpharmacy.com", true }, { "allcarepharmacy.com", true }, { "allcarespecialty.pharmacy", true }, { "allcelebs.tk", true }, + { "allchan.io", true }, { "allcinema.net", true }, + { "allcitynews.net", true }, { "allcleanservices.ca", true }, { "allcloud.com", true }, + { "allcomic.com", true }, { "allcompanycorp.com", true }, { "allcooking.tk", true }, + { "allcountyins.com", true }, { "allcourts.tk", true }, { "allcoveredbyac.com", true }, { "allcrimea.tk", true }, - { "alldentalalanya.com", true }, + { "allcumshotpics.com", true }, { "alldewall.de", true }, - { "alldigitalsolutions.com", false }, + { "alldigitalsolutions.com", true }, { "alldm.ru", true }, { "alldogs.tk", true }, { "alldrives.tk", true }, { "alle-zonvakanties.nl", true }, { "alle.bg", true }, + { "alle.com", true }, { "allefrisuren.de", true }, { "alleganyco.gov", true }, + { "allegiancemd.com", true }, { "allegorymetal.tk", true }, { "allegra.ga", true }, { "allegra180.ga", true }, { "allegra180mg.ga", true }, { "allegrapark.ga", true }, + { "allegreto.com", true }, { "allegrettoresort.com", true }, { "allegrettoresortandvineyard.com", true }, { "allegrettoresortandvineyardbyayres.com", true }, { "allegrettovineyard.com", true }, + { "allegrettovineyardresort.com", true }, { "allegrettovineyards.com", true }, { "allegrettowine.com", true }, { "allegrettowines.com", true }, @@ -9236,7 +11277,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allencountyinvoters.gov", true }, { "allencountykentucky.gov", true }, { "allendalecounty.gov", true }, + { "allenivory.com", true }, { "allensun.org", true }, + { "allentertainment.de", false }, { "allentherapeuticmassage.com", true }, { "allenturley.com", true }, { "allenwillis.ga", true }, @@ -9249,15 +11292,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allergyweb.ga", true }, { "allerlei-havelte.nl", true }, { "allerstorfer.at", true }, + { "allerzeiten.com", true }, { "alles-kan.be", true }, { "alles-nur-ge.cloud", true }, { "alles.cx", true }, + { "allesisgezondheid.nl", true }, + { "allesisonline.nl", true }, { "alleskan.gent", true }, { "alleskomtgoed.org", true }, { "allesley.com", true }, { "allesmartphonehoesjes.nl", true }, + { "allesovercrypto.nl", true }, { "allesoverdieren.tk", true }, { "allesoverhondentraining.tk", true }, + { "allesoversport.nl", true }, { "allesrocknroll.de", true }, { "allesuitdekast.be", true }, { "allesvoorbeton.be", true }, @@ -9265,46 +11313,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alletattoo.de", true }, { "allevamentoticinella.tk", true }, { "allexpress.su", true }, + { "alleyread.com", true }, + { "allfaithsfoodbank.org", true }, + { "allfansleak.net", true }, { "allfashionews.tk", true }, + { "allfatpics.com", true }, { "allfaucet.ml", true }, + { "allfile.club", true }, { "allfoodrecipes.ga", true }, + { "allforcreate.ru", true }, { "allforex.ml", true }, { "allforhon.tk", true }, { "allforlocal.com", true }, - { "allformsweden.com", true }, + { "allfortennessee.com", true }, { "allfortips.com", true }, + { "allfreelancers.su", false }, { "allfundsconnect.com", true }, { "allfur.love", true }, { "allgadgetsfree.tk", true }, + { "allgaragedoorandgates.com", true }, { "allgaragefloors.com", true }, { "allgemeinarzt-wenta-bralla.de", true }, { "allglobal.net", true }, { "allgooddeedshomes.com", true }, { "allgrass.net", true }, { "allgreek.tk", true }, + { "allgreenlawncare.ca", true }, { "allhallows.tk", true }, { "allhard.org", true }, { "allhits.ml", true }, { "allhomemueble.com", true }, + { "allhonest.com", true }, { "allhsa.com", true }, { "alli-diet-pill.cf", true }, { "alli-pills.cf", true }, { "alliaancebiotech.com", true }, { "alliance-immobilier-service-neuf.fr", true }, - { "alliance-psychiatry.com", true }, + { "alliance-psychiatry.com", false }, { "allianceautomation.com.au", true }, - { "allianceautomotive.fr", false }, - { "alliancefitnesscenter.com", true }, + { "alliancebank.com", true }, + { "allianceblock.io", true }, + { "allianceborderservices.com", true }, { "allianceforafreesociety.com", true }, { "allianceforafreesociety.net", true }, + { "allianceforafreesociety.org", true }, + { "alliancehealthcareservices-us.com", true }, { "alliances-globalsolutions.com", false }, + { "alliancetrading.ch", true }, { "allianskyrkan.se", true }, + { "allianz-pro-schiene.de", true }, + { "allianzdirect.com", true }, + { "allianzdirect.de", true }, + { "allianzdirect.it", true }, + { "allianzdirect.nl", true }, + { "alliedartistswv.org", true }, + { "alliedmedia.org", true }, + { "allier-vichy-moulins-expert-comptable.fr", true }, + { "alliiertenmuseum.de", false }, { "allincoin.shop", true }, { "allindiacityguide.com", true }, { "allindiajobs.ga", true }, { "allindiatanzeem.ml", true }, + { "allindustriessolutions.com.au", true }, { "allinform.ga", true }, { "allinoutfits.com", true }, + { "allinpdf.com", true }, { "allinsuranceinformation.com", true }, { "allis.co.jp", true }, { "allis.jp", true }, @@ -9315,43 +11388,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alljamin.com", true }, { "alljokesaside.tk", true }, { "alllaboutchickens.tk", true }, - { "allladyboys.com", true }, + { "alllatinapics.com", true }, { "allline.shop", true }, { "allmagic.tk", true }, { "allmandlaw.com", true }, { "allmaps.tk", true }, { "allmaster.ga", true }, { "allmba.cf", true }, - { "allmco.com", true }, { "allmemy.com", false }, { "allmen.tk", true }, + { "allmendenetz.de", true }, { "allmessedup.tk", true }, { "allmobilenews.tk", true }, { "allmousepads.com", true }, { "allmoviesonline.tk", true }, + { "allnaijagists.com.ng", true }, { "allnations4christ.org", true }, + { "allnodes.com", true }, { "allnovosibirsk.tk", true }, { "allns.fr", true }, - { "allnutritionrd.com", true }, + { "allnumis.com", true }, { "allo-credit.ch", false }, { "allo-luxembourg.tk", true }, { "allofthestops.com", true }, { "allohol.de", true }, + { "alloldpics.com", true }, { "allontanamentovolatili.it", true }, { "allontanamentovolatili.milano.it", true }, + { "alloprof.qc.ca", true }, { "allopurinal.tk", true }, { "allopurinol.gq", true }, { "allopurinol100mg.tk", true }, { "allopurinol300mg.ml", true }, + { "alloutauto1.com", true }, { "alloverthehill.com", true }, + { "allpantypics.com", true }, { "allpedia.tk", true }, - { "allphaseclean.com", true }, - { "allplayer.tk", true }, + { "allpinouts.org", true }, { "allpointsblog.com", true }, - { "allpointsheating.com", true }, + { "allporn.pics", true }, { "allpornvids.com", true }, { "allprices.world", true }, { "allprints.tk", true }, + { "allpropertyservices.com", true }, { "allproptonline.com", true }, { "allpussynow.com", true }, { "allrad-buck.de", true }, @@ -9366,6 +11445,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allsaintspreschoolyj.com.au", true }, { "allsarms.com", true }, { "allscammers.exposed", true }, + { "allschool.com.ng", true }, { "allscience.tk", true }, { "allsearch.io", true }, { "allseasons-cleaning.co.uk", true }, @@ -9374,21 +11454,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allset.ml", true }, { "allshapes.co.nz", true }, { "allshousedesigns.com", false }, - { "allsoftfree.com", true }, - { "allsoulinc.com", true }, - { "allsoulmobile.com", true }, - { "allsoultech.com", true }, + { "allsmart.gr", true }, + { "allsouls.co.za", true }, { "allspinecare.com", true }, { "allstakesupply.com.au", true }, + { "allstar-janitorial.com", true }, { "allstarautokiaparts.com", true }, - { "allstarcashforcars.com", true }, - { "allstarcustompools.com", true }, { "allstarquilts.com", true }, + { "allstatedealerservices.com", true }, { "allsun.online", true }, { "allsurpl.us", true }, + { "allsurplus.com", true }, { "allsync.com", true }, - { "allsync.nl", false }, - { "allterrainfence.com", true }, + { "allsync.nl", true }, { "allthatblings.online", true }, { "allthebots.com", true }, { "allthefallen.moe", true }, @@ -9399,17 +11477,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "allthethings.co.nz", true }, { "allthewaynorth.xyz", true }, { "allthings.me", true }, - { "allthingsfpl.com", true }, + { "allthingshappen.com", true }, { "allthingshealthy.org", true }, { "allthingsroyal.nl", true }, { "allthingssquared.com", true }, { "allthingzit.com", true }, + { "alltimespost.com", true }, { "alltourism.tk", true }, { "alltrade.ga", true }, { "alltubedownload.net", true }, { "alltwwk.tk", true }, { "alluance.nl", true }, + { "allucanheat.com", true }, { "allucinati.tk", true }, + { "alluel.com", true }, + { "allufilm.com", true }, { "allur-club.cf", true }, { "allurebikerental.com", true }, { "allurechiro.com", true }, @@ -9420,31 +11502,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alluvion.studio", true }, { "allvideofoot.tk", true }, { "allvips.ru", true }, - { "allvitalconstruction.com", true }, + { "allwaterjet.com", true }, { "allways.tk", true }, { "allwebkeys.gr", true }, { "allwebsites.tk", true }, { "allwebtuts.com", true }, { "allwiki.tk", true }, + { "allwithinmyhands.org", true }, { "allwordpress.tk", true }, { "allworld.ga", true }, { "allwrestling.ga", true }, + { "allxon.com", true }, { "allyachts.cf", true }, { "allyachts.gq", true }, { "allyfile.com", true }, { "allyoucanstyle.de", true }, { "allysonsouza.com.br", true }, { "allyweds.com", true }, - { "alma365.it", true }, { "almaarkansas.gov", true }, { "almaascosmetics.com", true }, { "almaatlantica.com", true }, { "almablanca.tk", true }, + { "almacenterwi.gov", true }, { "almadeviajante.com", true }, { "almagalla.com", true }, { "almajaniyate.ga", true }, { "almamarket.com", true }, - { "almancax.com", true }, { "almanea.email", true }, { "almanea.family", true }, { "almanea.net", true }, @@ -9454,23 +11537,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "almarail.tk", true }, { "almargen.ga", true }, { "almargen.tk", true }, + { "almarin.es", true }, { "almasoft.ga", true }, { "almastabriz.com", true }, { "almasteb.com", true }, { "almatinki.com", true }, + { "almatybusiness.gov.kz", true }, { "almatytips.com", true }, { "almayadeen.education", true }, + { "almayoreo.com.co", true }, { "almaz-host.ml", true }, { "almaz-host.tk", true }, { "almaz-sait-rp.ml", true }, + { "almeera.online", true }, { "almeerajtour.com", true }, { "almeeraloyalty.com", true }, + { "almeezangroup.com", true }, { "almeidaesilvaseguros.com.br", true }, { "almenatownship.gov", true }, { "almenrausch-pirkhof.de", true }, { "almeriaplayer.tk", true }, - { "almi.cz", true }, - { "almiriatechstore.co.ke", true }, + { "almette.pl", true }, + { "almeva.swiss", true }, + { "almhtnews.com", true }, + { "almirall.com", true }, { "almlab.tk", true }, { "almlc.gov", true }, { "almokhlifoud.com", true }, @@ -9480,26 +11570,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "almost.fit", true }, { "almost.gq", true }, { "almostobjective.com", true }, + { "almudenallacer.com", true }, + { "almujadilah.qa", true }, { "almukhtar.se", false }, + { "almurtaqa.com", true }, { "almusbahperfume.com", true }, { "almut-zielonka.de", true }, + { "almutawapharmacies.com.kw", true }, { "almx.net", true }, - { "alnamic.com", true }, - { "alnamic.de", true }, - { "alng.me", true }, + { "alnaierh.com", true }, { "alnilam.co.uk", true }, { "alnitech.com", false }, + { "alnoorintl.com", true }, + { "aloalosalomao.com.br", true }, + { "alodavetiye.com.tr", true }, { "alodokita.com", true }, { "aloe-care.tk", true }, { "aloe-vera-info.tk", true }, { "aloemeda.de", true }, { "aloesbienetre.be", true }, { "aloesoluciones.com.ar", true }, + { "aloeveralisboa.pt", true }, { "alofone.vn", true }, { "alohapartyevents.co.uk", true }, { "alohotel.com", true }, { "alohotelorange.com", true }, { "alohotels.com", true }, + { "alojadalu.com.br", true }, { "alola.co.uk", true }, { "alolabor.org", true }, { "alomch.gq", true }, @@ -9510,16 +11607,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alonephoenix.tk", true }, { "alonetone.com", true }, { "along.org", false }, + { "alonlevinart.com", true }, { "alonsoluzgas.es", true }, { "aloo.ga", true }, + { "aloomic.com.au", true }, { "aloop.cloud", true }, - { "alopocos.com", true }, + { "alopezlawfirm.com", true }, + { "alorica.com", true }, { "aloris-controle.fr", true }, + { "aloro.io", true }, { "alotso.com", true }, { "alottajava.com", true }, { "alov.blog", true }, + { "alovesinh.com", true }, { "aloys233.top", true }, + { "alp-eastlink-portal-model.azurewebsites.net", true }, + { "alp-samsungca-portal-model.azurewebsites.net", true }, + { "alp-spectrum-portal-model.azurewebsites.net", true }, { "alp.od.ua", true }, + { "alp1ne.net", true }, + { "alpa.is", true }, + { "alpa.social", true }, { "alpaca.haus", true }, { "alpahandling.com", true }, { "alpan.ml", true }, @@ -9531,117 +11639,138 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alpencams.com", true }, { "alpencams.de", true }, { "alpencams.fr", true }, + { "alpencams.it", true }, { "alpencams.net", true }, { "alpencams.nl", true }, { "alpenguides.de", true }, { "alpenhof-suedtirol.com", true }, { "alpenjuice.com", true }, { "alpenrose.de", true }, + { "alpenschmarrn.de", true }, + { "alpensternderl.de", true }, { "alperenremziunal.me", true }, { "alperozmen.kim", true }, { "alpertron.com.ar", true }, { "alpes-deis-tools.com", true }, { "alpes-deis.fr", true }, - { "alpes-mariages.fr", true }, { "alpetrov.cf", true }, { "alpha-ag.ru", true }, { "alpha-assistant.com", true }, + { "alpha-associates.ch", true }, { "alpha-bet.com.ua", true }, { "alpha-centauri.tk", true }, { "alpha-force.net", false }, + { "alpha-kamera.de", true }, { "alpha-protein.de", true }, { "alpha-shop.gr", true }, { "alpha-showcase.com", true }, { "alpha.ch", true }, - { "alpha88uat.com", true }, - { "alphaantileak.net", true }, + { "alpha91.co.za", true }, + { "alphaassurances.com", true }, { "alphabet-z.xyz", true }, - { "alphabeta.com", true }, - { "alphabetmobilier.com", true }, { "alphabetsigns.com", true }, + { "alphabetworksheetsfree.com", true }, { "alphabouncycastles.co.uk", true }, { "alphabytes.uk", false }, { "alphachannel.tk", true }, { "alphachat.net", true }, { "alphacity.tk", true }, + { "alphacodingskills.com", true }, + { "alphacomputersllc.com", false }, { "alphaconsult.sk", false }, - { "alphaconvites.com.br", true }, { "alphacorp.tk", true }, - { "alphacyp.com", true }, { "alphadance.tk", true }, { "alphadefense.co.za", true }, + { "alphadetroit.com.au", true }, { "alphadote.com", true }, { "alphadronten.tk", true }, { "alphaetomega3d.fr", true }, + { "alphafoo.dk", true }, { "alphagames.tk", true }, + { "alphageek.blog", true }, { "alphahosting.hu", true }, { "alphahunks.com", true }, { "alphainflatablehire.com", true }, + { "alphakites.de", true }, { "alphalab.tk", true }, { "alphalibraries.com", true }, - { "alphalight.id", true }, - { "alphalightgear.com", true }, + { "alphamosa.fr", true }, { "alphanodes.com", true }, { "alphapengu.in", true }, { "alphaperfumes.com.br", true }, { "alphapoker.ru", true }, { "alpharail.se", true }, + { "alpharettaga.gov", true }, { "alpharoofga.com", true }, { "alpharotary.com", true }, - { "alphasall.com", true }, - { "alphasib.ru", true }, + { "alphasall.com", false }, { "alphasoft-i.net", true }, { "alphasolartech.com", true }, { "alphassl.de", true }, + { "alphastrip.com", true }, { "alphat.net", true }, { "alphatam.com", true }, { "alphatrading.tk", true }, { "alphatrash.de", true }, { "alphatv.cf", true }, { "alphatv.ga", true }, + { "alphavit.ru", true }, { "alphazure.co.uk", true }, { "alphera.nl", true }, - { "alphie.me", true }, { "alphimedia.com", true }, { "alphipneux.fr", true }, { "alpholiday.it", true }, { "alphotelmilano.it", true }, + { "alpilean.com", true }, { "alpinar.tk", true }, + { "alpinatours.nl", true }, { "alpine-holiday.de", true }, { "alpine-tuning.de", true }, - { "alpinechaletrental.com", false }, + { "alpinebank.com", true }, + { "alpinedental.us", true }, { "alpinedentalhealth.com", true }, { "alpinehighlandrealty.com", true }, - { "alpineitltd.co.uk", false }, { "alpineplanet.com", true }, + { "alpinepubliclibrary.org", true }, { "alpinestarmassage.com", true }, - { "alpinisci.pro", true }, + { "alpinewy.gov", true }, + { "alpis.fr", true }, { "alplogopedia.it", true }, { "alpparts.com", true }, { "alquiler-de-coches.tk", true }, { "alquiler-de-furgonetas.tk", true }, { "alquran-online.tk", true }, - { "alrait.com", true }, + { "alrahman.ch", true }, + { "alrahman.de", true }, + { "alrawdhawaterproofing.com", true }, { "alre-outillage.fr", true }, { "alrehmantech.tk", true }, + { "alrioart.com", true }, { "alrobotics.net", true }, + { "alroniks.com", false }, { "alsaagency.tk", true }, { "alsabil.tk", true }, + { "alsace-informatique.shop", true }, + { "alsetat.com", true }, { "alshabab.tk", true }, { "alshamil.tk", true }, { "alsharkest.net", true }, + { "alskar.co", true }, { "alsops.cf", true }, { "alsteadnh.gov", true }, { "alstertouch.com", true }, { "alstertouch.de", true }, - { "alt-three.com", true }, + { "alt-bookings.com", true }, + { "alt-three.com", false }, { "alt-til-windows.dk", true }, + { "alt-wien.com", true }, { "alt.org", true }, { "alta-densidad.tk", true }, { "alta-ict.nl", true }, { "altabadia.com", true }, { "altabadia.it", true }, { "altabash.tk", true }, + { "altabg.com", true }, { "altabib.me", true }, { "altabooks.ga", true }, { "altacomunicazione.tk", true }, @@ -9653,28 +11782,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "altai-zemlya.ml", true }, { "altai-zemlya.tk", true }, { "altai22.tk", true }, - { "altailife.ru", false }, + { "altair.com", true }, { "altairfp.es", true }, { "altairlyh.com", true }, + { "altaiscience.com", true }, { "altaizemlya.cf", true }, { "altaizemlya.ga", true }, { "altaizemlya.ml", true }, { "altaizemlya.tk", true }, + { "altana.com", true }, { "altaplana.be", true }, { "altavaldinon.com", true }, - { "altaynews.kz", false }, - { "altco.group", true }, + { "altavoces.guru", true }, { "altcoaching.fr", true }, - { "altcoinandme.com", true }, { "altcoinfiyatlari.com", true }, { "altd.cz", true }, { "altdforyou.tk", true }, { "alte-wassermuehle-friesoythe.de", true }, + { "altea.it", true }, { "alteah.com", true }, { "altec.pl", true }, { "altecgmbh.de", true }, { "altedirect.com", true }, - { "alteiria.fr", true }, + { "altenagala.nl", true }, + { "altenheim.it", true }, { "alteralife.eu", true }, { "alteraro.com", true }, { "alteraro.org", true }, @@ -9686,6 +11817,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alterengine.tk", true }, { "altergalaxy.tk", true }, { "alteria.xyz", true }, + { "alterian.com", true }, { "alterlinks.com", true }, { "alterlinks.fr", true }, { "alterlinks.it", true }, @@ -9693,7 +11825,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "altermidya.net", true }, { "altern-in-wuerde.com", true }, { "alternador.com.br", true }, + { "alternahaircare.com", true }, { "alternatieva.tk", true }, + { "alternatifin.com", true }, { "alternativagospel.tk", true }, { "alternative-e-energy.tk", true }, { "alternative-kultur.tk", true }, @@ -9708,9 +11842,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alternativeinternet.ca", true }, { "alternativet.party", true }, { "alternativetomeds.com", true }, + { "alternativewireless.com", true }, { "alternativnizivot.tk", true }, { "alternatiwa.tk", true }, - { "alternatyv.ch", true }, + { "alternatyv.ch", false }, { "alternego.com", true }, { "alternet.ml", true }, { "alterspalter.de", true }, @@ -9718,69 +11853,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "altes-sportamt.de", true }, { "altesses.eu", true }, { "altestore.com", true }, - { "altezza-autore.ru", true }, + { "althacare.com", true }, + { "althi.nl", true }, { "althistory.ga", true }, { "altidrabat.dk", true }, { "altieresgomes.com.br", true }, { "altijdleroy.nl", true }, { "altijdleroy.online", true }, { "altimetrique.ca", true }, + { "altimetry.com", true }, { "altinea.fr", true }, + { "altinity.com", true }, { "altinopoliscervejaria.com.br", true }, + { "altiplano.travel", true }, { "altisnet.ga", true }, { "altitude-dev.com", true }, + { "altitudeco.com.au", true }, + { "altiup.ch", false }, { "altiup.com", false }, { "altius-europe.com", true }, - { "altius.co.uk", true }, { "altius.com.pa", true }, { "altiusconsulting.com", true }, { "altiusconsulting.net", true }, - { "altiusdata.co.uk", true }, - { "altiusdata.com", true }, { "altiusondemand.com", true }, + { "altkia.com", true }, { "altkremsmuensterer.at", true }, { "altmaestrat.es", true }, { "altmann-systems.de", true }, { "altmedicine.tk", true }, { "altoa.cz", true }, - { "altonkey.com", true }, + { "altoinsuranceagency.com", true }, { "altoona-wi.gov", true }, - { "altopartners.com", true }, + { "altopartners.com", false }, { "altopia.com", true }, { "altoplan.de", true }, - { "altorise.com", true }, { "altos.tk", true }, + { "altospam.net", true }, { "altovalemarmoraria.com.br", true }, { "altovoltaggio.tk", true }, { "altoweb.tk", true }, { "altphotos.com", true }, - { "altporn.xyz", false }, { "altralamezia.tk", true }, { "altramarsala.tk", true }, - { "altrasoluzione.com", true }, + { "altransport.ca", true }, { "altratella.tk", true }, + { "altravita-ivf.ru", true }, { "altrei.ch", true }, { "altria.wang", true }, { "altrui.st", true }, { "altsdigital.com", false }, { "altsetup.com", true }, { "altspacex.com", true }, + { "altstadt-it.de", true }, { "alttrackr.com", true }, { "altunbas.info", true }, { "altur.tk", true }, { "alturiak.net", true }, { "altusbiologics.com", true }, + { "altusgroup.com", true }, { "altview.gq", true }, - { "altweb.ro", true }, + { "alua.com", true }, { "aluchta.tk", true }, { "alugha.com", true }, { "aluguer-rodagigante.pt", false }, + { "alukard.gq", true }, { "alukard.ml", true }, { "alulasails.com", true }, + { "aluminaty.com", true }, { "aluminium-giesserei.de", true }, { "aluminumfencestlouis.com", true }, { "alumni-kusa.jp", true }, { "alumni-skensa.tk", true }, + { "alumni.education", true }, { "alumnifire-staging.com", true }, { "alumnifire.com", true }, { "alumnispecialers.ga", true }, @@ -9794,9 +11938,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alushta.tk", true }, { "alusib.ga", true }, { "alusim.ga", true }, - { "alvaiazere.net", true }, { "alvarez.tk", true }, { "alvarezmorales.tk", true }, + { "alvaria.com", true }, { "alvaritoeresnuestradulcelocura.tk", true }, { "alvaro-smith.link", true }, { "alvarocastillo.net", true }, @@ -9806,18 +11950,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alviano.com", false }, { "alvicom.hu", true }, { "alvimedika.com.ua", true }, + { "alvinalvelino.com", true }, { "alvinaonline.com", true }, { "alvinhu.com", false }, { "alvirzy.tk", true }, { "alvn.ga", true }, { "alvordtx.gov", true }, { "alvosec.com", true }, - { "always.com", false }, - { "always.com.mx", true }, + { "alwaysdata.com", true }, { "alwayshowher.tk", true }, { "alwayslookingyourbest.com", true }, { "alwaysmine.fi", true }, { "alwaysonssl.com", true }, + { "alwayswanderlust.com", true }, + { "alwiam.info", true }, + { "alwib.net", true }, + { "alwistra.eu", true }, { "alwuz.com", true }, { "alxclub.tk", true }, { "alxlegal.com", true }, @@ -9831,9 +11979,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "alza.co.uk", true }, { "alza.cz", true }, { "alza.de", true }, - { "alza.hu", true }, { "alza.sk", true }, { "alzashop.com", true }, + { "alzheimers.gov", true }, { "alziamoiltetto.it", true }, { "alzlogarforensics.com", true }, { "alzon.cf", true }, @@ -9847,36 +11995,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "am-schlossgarten.haus", true }, { "am-sonnenblick.de", true }, { "am-sonnengarten.de", true }, + { "am-yu.jp", true }, { "am190.com", true }, { "am22i6xaf1m2a5m9k.xyz", true }, { "am3.se", true }, - { "am5039.com", true }, { "am5188.com", true }, - { "am5199.com", true }, { "am7000.com", true }, { "am8009.com", true }, { "am8028.com", true }, { "am8213.com", true }, { "am8811.net", true }, - { "am8833.net", true }, - { "am8895.com", true }, { "am8898.net", true }, { "am8900.com", true }, { "ama.com.au", true }, { "ama.ne.jp", true }, { "amabiligranilhas.com", true }, + { "amac.tv", true }, + { "amadera.com", true }, { "amaderforum.tk", true }, { "amadeusproject.cf", true }, { "amadin.tk", true }, - { "amadispa.com.br", true }, + { "amadispa.com.br", false }, { "amadoraslindas.com", true }, { "amadvice.com", true }, - { "amadvocates.com", true }, { "amaeruinc.com", true }, { "amaforro.com", true }, { "amagdic.com", true }, { "amagical.net", false }, { "amagraduates.tk", true }, + { "amagroup.io", true }, { "amaiz.com", true }, { "amalbansode.com", true }, { "amalfi5stars.com", true }, @@ -9884,48 +12031,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amalgaamvrij.tk", true }, { "amalgaamziekte.tk", true }, { "amalgamma.ml", true }, - { "amalievonstein.net", true }, { "amalou-photografie.de", true }, { "amambebe.com", true }, - { "amanandalens.com", true }, { "amandablain.com", true }, { "amandadamsphotography.com", true }, { "amandahamilton.tk", true }, { "amandamachado.nl", true }, - { "amandamaedesign.com", true }, { "amandasage.ca", true }, { "amandaworldstudies.com", true }, { "amanduscommunication.com", true }, { "amanet.ro", true }, + { "amango.se", true }, { "amani-kinderdorf.de", true }, - { "amansinghbhogal.com", true }, + { "amanmerceria.com", true }, + { "amansinghbhogal.com", false }, + { "amanydesignstudio.com", true }, { "amapspa.it", true }, { "amaranth.gq", true }, { "amaranth.tk", true }, { "amaranthinewanderlust.com", true }, { "amaranthus.com.ph", true }, + { "amarasbutterflies.com", true }, { "amardham.org", true }, { "amaresq.com", true }, - { "amarildoruci.com", true }, { "amarilio.com.mx", true }, + { "amarillosquare.com", true }, + { "amarinbabyandkids.com", true }, + { "amaris-pr.ru", true }, + { "amaris.com", true }, + { "amarrada.com", true }, { "amarresdeamorconelbrujoguillermo.com", true }, { "amarresperuanos.com", true }, { "amarresydominio.com", true }, { "amartaramitramandal.tk", true }, + { "amartours.pt", true }, { "amaruddinmufid.com", true }, { "amaruz.tk", true }, - { "amas.sd", true }, + { "amarylis.com", true }, { "amasea.yachts", true }, { "amasing.tk", true }, + { "amateku.jp", true }, { "amateri.com", true }, { "amateur-boxing.tk", true }, - { "amateur-ham-rad.io", true }, + { "amateur.cash", true }, { "amateur.cf", true }, { "amateur101.tk", true }, { "amateureuro.com", true }, { "amateurplayerstour.com", true }, - { "amateurpornhours.com", true }, - { "amateurprospog.com", true }, { "amateurradionotes.com", true }, { "amateurs.ga", true }, { "amateurs.gq", true }, @@ -9934,7 +12086,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amati.solutions", true }, { "amato.tk", true }, { "amatoryasamak.tk", true }, - { "amatsuka.com", true }, + { "amatsu.xyz", true }, { "amatutis.lt", true }, { "amatya.co.uk", true }, { "amatzen.dk", true }, @@ -9942,38 +12094,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amaurijogos.tk", true }, { "amavis.org", true }, { "amavo.tk", true }, + { "amaxa.com", true }, { "amaxautomotive.com.au", true }, { "amazcareer.com", true }, + { "amazcode.ooo", true }, { "amazdriver.com", true }, - { "amazefabrics.com", false }, { "amazetimberfurniture.com.au", true }, - { "amazhiring.com", true }, - { "amazighlove.com", true }, { "amazinations.com", true }, { "amazing-cars98.tk", true }, { "amazing-castles.co.uk", true }, + { "amazing-maids.com", true }, { "amazingpetshere.com", true }, { "amazingraymond.com", true }, { "amazingraymond.com.au", true }, { "amazingribs.com", true }, { "amazingstore.gq", true }, + { "amazingtattooideas.com", true }, + { "amazon-dynamodb-labs.com", true }, { "amazon.ae", true }, + { "amazon.at", true }, + { "amazon.care", true }, { "amazon.com.tr", true }, { "amazon.eg", true }, { "amazon.pl", true }, { "amazon.sa", true }, { "amazon.se", true }, - { "amazon.sg", true }, + { "amazonadviser.com", true }, + { "amazondynamodblabs.com", true }, { "amazonemotions.com", true }, - { "amazonspacosmeticos.com.br", true }, + { "amazonteckathon.com", true }, { "amazstaff.com", true }, + { "amaztravail.com", true }, + { "amazwerk.com", true }, + { "amb.com.br", true }, { "amb.tf", true }, + { "ambarbyarihant.com", true }, + { "ambasador-dibo.pl", true }, { "ambasady.cz", true }, + { "ambassadeurs.com", true }, { "ambassify.com", true }, { "ambassify.eu", true }, { "ambc.es", true }, - { "amberalert.gov", true }, + { "amber-teething-necklace.com", true }, { "amberba.tk", true }, + { "amberesdetective.be", true }, { "amberhouse.cf", true }, { "amberhouse.ga", true }, { "amberhouse.gq", true }, @@ -9981,50 +12145,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amberonline.tk", true }, { "ambersafety.info", true }, { "ambersoftware.co.uk", true }, - { "amberstudent.com", true }, { "ambertears.tk", true }, { "amberwiz.com", true }, { "ambholding-usedcars.be", true }, { "ambiancewindowcoverings.com", true }, + { "ambient.digital", true }, { "ambiente.one", true }, { "ambientskies.tk", true }, { "ambigramasdecarmela.tk", true }, { "ambion.am", true }, - { "ambiq.nl", true }, { "ambisonia.com", true }, + { "ambitionbox.com", true }, { "ambivalence.tk", true }, + { "amblin.com", true }, { "ambor.com", true }, { "ambor.org", true }, { "ambouncyhire.com", true }, { "ambra.net.nz", true }, + { "ambrosia.cafe", true }, { "ambrosiamosaicos.co", true }, { "ambrosio.tk", true }, - { "ambrosius.io", true }, + { "ambtpay.com", true }, { "ambulanceplus.cz", true }, { "ambulancieros.tk", true }, { "ambulanza.it", true }, { "ambulanza.milano.it", true }, { "ambulanza.roma.it", true }, + { "ambulanzaprivata.roma.it", true }, { "ambulari.cz", true }, - { "ambulatori.it", true }, + { "amburgo.com", true }, { "amcanalense.tk", true }, { "amcangroup.com", true }, { "amcchemical.com", false }, - { "amcfirst.com", true }, { "amchainitiative.org", true }, { "amcs.website", false }, { "amdelisi.tk", true }, { "amdental.lv", true }, + { "amdiving.ru", true }, { "amdm.ru", true }, - { "amdouglas.com", true }, { "amdrumors.com", true }, { "amdukis-bordercollies.tk", true }, { "ameba-capital.com", true }, { "amebavirtual.tk", true }, { "amebolounge.tk", true }, { "amechancez.work", true }, + { "amecopress.net", true }, { "amedeo.pro", true }, - { "amedtest.org", true }, { "ameego.com", true }, { "ameego.it", true }, { "ameego.net", true }, @@ -10032,6 +12198,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ameego.org", true }, { "ameeradubai.com", true }, { "amees.me", false }, + { "ameeventos.pt", true }, + { "amefrec.co.jp", true }, { "ameho.me", false }, { "ameinteriores.pt", true }, { "ameisenbaer.tk", true }, @@ -10061,43 +12229,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "americanartwarehouse.com", true }, { "americanbooks.cf", true }, { "americanbuzz.tk", true }, - { "americancarcenter.com", true }, { "americancasinoguide.shop", true }, { "americancomfortexperts.com", true }, { "americandisinfectingassociation.com", true }, { "americandisinfectingassociation.org", true }, - { "americanenergysystemswa.com", true }, { "americanews.ml", true }, + { "americanfan.com", true }, { "americanfandl.com", true }, { "americanflooring.co", true }, { "americanflooringservicesinc.com", true }, { "americanfootball.ml", true }, { "americanfootball.tk", true }, + { "americanfreight.com", true }, { "americangods.tk", true }, { "americanimageawards.com", true }, { "americanindiannursing.com", true }, + { "americaninsuranceplus.ml", true }, { "americankickoff.ga", true }, + { "americanmessaging.net", true }, { "americanpop.be", true }, { "americanreservations.us", true }, { "americans.cam", true }, - { "americansamaritan.org", true }, { "americanstrategic.com", true }, - { "americantowers.org", true }, + { "americantowers.org", false }, { "americanunicornparty.tk", true }, + { "americanwalkincoolers.com", true }, { "americanwater.lk", true }, { "americapitalfunding.com", true }, { "americasbasementcontractor.com", true }, { "americasdirector.com", true }, { "americasgottalentauditions.com", true }, { "americathebeautifulquarters.gov", true }, + { "americatracker.com", true }, { "americavip.tk", true }, { "americawiki.tk", true }, - { "americkykongres.cz", true }, { "americolorcorp.com", true }, + { "americorps.gov", true }, { "americorpsoig.gov", true }, { "amerigrouphealthyliving.com", true }, { "ameriikanpoijat.org", true }, - { "amerika-forum.de", true }, { "amerikanloto.tk", true }, { "amerikanpaketim.com", true }, { "amerikasepetim.com", true }, @@ -10106,18 +12276,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amerimex.org", true }, { "amerion.nl", true }, { "ameriondental.nl", true }, + { "ameripacfund.com", true }, + { "ames-fzco.ae", true }, { "amesagesse.com", true }, { "amesgen.de", true }, - { "amesite.me", true }, + { "amessage.de", true }, + { "amessage.eu", true }, + { "amessage.info", true }, { "amesvacuumrepair.com", true }, { "amethystbodyart.co.za", true }, { "amethystcards.co.uk", true }, { "amethystdevelopment.co.uk", true }, { "amethystwebsitedesign.com", true }, + { "ametinsurance.com", true }, + { "ametrin.biz", true }, { "amevoice.com", true }, { "amex.ua", true }, { "amexemp.com", true }, - { "ameza.me", false }, { "amf.to", true }, { "amfelt.dk", true }, { "amfiteatr.tk", true }, @@ -10127,17 +12302,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amh-entertainments.co.uk", true }, { "ami-de-bastanes.fr", true }, { "ami.com", true }, - { "ami.im", true }, + { "amianto.milano.it", true }, { "amianto.roma.it", true }, { "amica-travel.com", true }, { "amicalecanyon.ch", false }, + { "amicare.fr", true }, { "amicipadrealdo.tk", true }, + { "amiciperibambini.org", true }, { "amiciperlatesta.it", true }, + { "amicon.com", true }, { "amicosauro.tk", true }, + { "amicus-webdesign.de", true }, { "amicusjunior.ro", true }, + { "amie.so", true }, + { "amiez.com", true }, { "amifoundation.net", true }, { "amigatraktor.tk", true }, + { "amightyoakbedandbreakfast.com", true }, { "amigodeltoro.tk", true }, + { "amigoenergy.com", true }, { "amigosdelvalenciadeastorga.tk", true }, { "amigosencanada.com", true }, { "amigosgranada4050.tk", true }, @@ -10156,9 +12339,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aminformatica.ml", true }, { "aminformatica.tk", true }, { "aminko.ga", true }, - { "aminoagro.agr.br", true }, { "aminoro.de", true }, - { "aminorth.com", true }, { "aminos.tk", true }, { "aminsabeti.com", true }, { "aminta.de", true }, @@ -10172,6 +12353,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amirarsalan.tk", true }, { "amirasyraf.com", false }, { "amirautos.com", false }, + { "amirhanova-a.ru", true }, { "amirkaraj.tk", true }, { "amirmahdy.com", true }, { "amis-du-cinema.com", true }, @@ -10181,6 +12363,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amisoft.co.jp", true }, { "amisoft.tk", true }, { "amissing.link", true }, + { "amisun.com", true }, { "amithvijayan.in", true }, { "amitopia.tk", true }, { "amitpatra.com", false }, @@ -10188,20 +12371,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amitriptyline25mg.cf", true }, { "amitriptylineonline.tk", true }, { "amitt.ga", true }, + { "amityvillepdny.gov", true }, { "amitywebsitedesign.com", true }, { "amiv.ch", true }, { "amjaadabdullah.com", true }, { "amjesusdespojado.tk", true }, { "amjinc.ca", true }, - { "amlakresan.ir", true }, { "amlakzibakenar.com", true }, { "amlameiras.pt", false }, { "amleather.pl", true }, { "amliorefemme.tk", true }, { "amm6e.com", true }, - { "ammachiyudeadukkala.net", true }, { "ammanagingdirectors.com", true }, - { "ammboi.my", false }, { "amministratore.biz", true }, { "amministratore.roma.it", true }, { "amministratorecondominiale.it", true }, @@ -10209,7 +12390,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amministratoredicondominio.roma.it", true }, { "amministratoristabilitorino.tk", true }, { "amministrazioni.roma.it", true }, + { "ammoland.com", false }, { "ammrio.com.br", true }, + { "ammsystems.pl", true }, + { "amnathrig.com", true }, { "amnepal.ml", true }, { "amnesia-zone.tk", true }, { "amnesty.cf", true }, @@ -10221,31 +12405,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amnistiya.tk", true }, { "amoatuaexistencia.com.br", true }, { "amobileway.co.uk", true }, + { "amoc.org", true }, { "amodeocarlo.com", true }, { "amoderm.com", true }, + { "amogus.cloud", true }, { "amokinio.com", true }, { "amolaccum.tk", true }, { "amolador.com.br", true }, { "amolare.com.br", true }, + { "amoliogames.com", true }, { "amollare.com.br", true }, { "amon.tech", true }, { "amondial.com", true }, + { "among-us.me", true }, { "amongtheflora.com", true }, { "amongus-guru.ru", true }, + { "amongusmerch.co", true }, { "amoozesh98.ir", true }, { "amoralizm.tk", true }, - { "amoraparavoce.com.br", true }, { "amoraquatropatas.org", true }, - { "amordetelas.com", true }, + { "amordoce.com", true }, { "amorfestival.com", true }, { "amorgos-aegialis.com", true }, { "amorgosrentandgo.gr", true }, { "amorim.ca", true }, + { "amoroso-vivace.ch", true }, + { "amorph.aero", true }, { "amorphis.tk", true }, + { "amorphsys.com", true }, + { "amorszexshop.hu", true }, { "amortyzator.tk", true }, { "amorxyoga.com", true }, { "amorymerced.tk", true }, { "amoryurgentcare.com", true }, + { "amos.ovh", true }, { "amosca.tk", true }, { "amotarget.com", true }, { "amoursucre.com", true }, @@ -10259,13 +12452,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amoxil875.ga", true }, { "amoxilonline.gq", true }, { "amp-logistics.com", true }, + { "amp-wp.org", true }, + { "amp.chat", true }, { "ampact.co", true }, { "amped4ski.co.nz", false }, + { "ampedairsoft.com", true }, { "amper.kharkov.ua", true }, - { "amperapark.com", true }, { "ampersandnbspsemicolon.com", true }, { "ampersandsmallbusiness.com", true }, { "ampetronic.com", true }, + { "ampflower.gay", true }, { "ampgroep.nl", true }, { "amphetamines.org", true }, { "amphibo.ly", true }, @@ -10274,6 +12470,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amphost.tk", true }, { "ampicillin.ga", true }, { "ampicillin.ml", true }, + { "ampicillin24.com", true }, { "ampicilliniv.tk", true }, { "ampicillinonline.gq", true }, { "amplead.com", true }, @@ -10281,21 +12478,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ampleinfographics.com", true }, { "ampleitsolutions.com.au", true }, { "ampleroads.com", true }, + { "amplifi.io", true }, + { "amplifiedit.com", true }, { "amplifier-technics.tk", true }, + { "amplifire.com", true }, { "ampparit.com", true }, { "ampproject.com", true }, { "ampproject.org", true }, { "ampselectricsolar.com", true }, - { "amptubes.com.au", true }, { "ampullen.tk", true }, { "amputated.tk", true }, { "amputatedgenitals.tk", true }, { "amr.de", true }, - { "amrcaustin.com", true }, - { "amrcla.com", true }, - { "amrff.com", true }, - { "amrita.cafe", true }, + { "amrealtypr.com", true }, + { "amref.org", true }, { "amritps.com", true }, + { "amroelkhatib.fi", true }, + { "amroz.xyz", true }, { "amrun-verlag.de", true }, { "amruta.org", true }, { "ams-web-qa.azurewebsites.net", true }, @@ -10306,8 +12505,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amsfoodhk.com", true }, { "amsmart.hu", true }, { "amsochile.cl", true }, + { "amstat.org", true }, { "amstelradio.tk", true }, { "amstelveentje.nl", true }, + { "amsterdam.nl", true }, { "amsterdam4u.tk", true }, { "amsterdam5.nl", true }, { "amsterdamian.com", true }, @@ -10315,10 +12516,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amsterdamtypography.nl", true }, { "amsuisse.com", false }, { "amt-taxfrance.com", true }, - { "amtentertainments.co.uk", true }, { "amtheone.com", true }, { "amtrakoig.gov", true }, - { "amujuul.dk", true }, { "amule.cf", true }, { "amunanalytics.eu", true }, { "amundi-ca-assurances.com", true }, @@ -10330,8 +12529,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amur-photo.ml", true }, { "amur.tk", true }, { "amusa.cl", true }, + { "amuzante.com", true }, + { "amva.it", true }, { "amvip9.com", true }, + { "amvisor.com", true }, { "amvisualgraphics.com", true }, + { "amwake.com", true }, + { "amwine.ru", true }, { "amxm.aero", true }, { "amxpj888.com", false }, { "amy-nichols.ga", true }, @@ -10346,11 +12550,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "amytuarez.ml", true }, { "amywinehouseaddicted.tk", true }, { "amyyeung.com", true }, + { "amz-tas.ba", true }, { "amzik.tk", true }, { "amzinfotech.com", true }, + { "amzn.com", true }, { "amzn.rocks", true }, - { "amzndrivers.com", true }, { "amznworks.com", true }, + { "amzsupply.com", true }, { "an-alles-gedacht.de", true }, { "an0ns.ru", true }, { "an0ns.tk", true }, @@ -10371,12 +12577,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anabolika.ga", true }, { "anabolika.gq", true }, { "anabolika.ml", true }, + { "anabolitics.com", true }, { "anachristinarodriguez.com", true }, { "anachronaeon.tk", true }, { "anachronis.gq", true }, { "anacom.pt", true }, - { "anacreon.de", true }, + { "anacron.pl", true }, { "anacruz.es", true }, + { "anadiuvo.fi", true }, { "anaelog.com.au", true }, { "anaethelion.fr", true }, { "anafranil.cf", true }, @@ -10385,6 +12593,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anagir.tk", true }, { "anagramma.tk", true }, { "anahitascribe.tk", true }, + { "anahtarfikir.com", false }, { "anahwaftah.ga", true }, { "anaiscoachpersonal.es", true }, { "anaisfae.art", true }, @@ -10394,6 +12603,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anakliarmalam.ml", true }, { "analbabsi.com", true }, { "analebear.com", true }, + { "analfistula.com.sg", true }, { "analgesia.ga", true }, { "analgesia.net", true }, { "analinsting.tk", true }, @@ -10401,16 +12611,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "analisi-logica.it", true }, { "analisi-periodo.it", true }, { "analisi.roma.it", true }, - { "analisilaica.it", true }, { "analitik.ml", true }, { "analizator.tk", true }, { "analogfreeers.ga", true }, { "analogical.ga", true }, { "analogist.net", true }, + { "analogman.com", true }, + { "analottery.com", true }, + { "analotto.com", true }, { "analpantyhose.org", true }, + { "analpics.com", true }, + { "analyser-mon-site.fr", true }, { "analystexamers.ga", true }, + { "analysts.com", true }, { "analytics-media.com", true }, - { "analytics-shop.com", true }, { "analyticsinmotion.com", true }, { "analyticum.at", true }, { "analyticum.com", true }, @@ -10418,23 +12632,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "analyticum.eu", true }, { "analyticum.net", true }, { "analytik.news", true }, - { "analyze-ed.com", true }, { "analyzemyfriends.com", true }, { "analyzepoker.com", true }, { "anamelikian.com", true }, { "anamterminal.tk", true }, { "ananas.gq", true }, - { "anandchowdhary.com", true }, - { "anandsah.in", true }, + { "ananasposter.ru", true }, { "anangeix.tk", true }, { "anankecosmetics.com", true }, { "anantshri.info", true }, { "ananyagupta.tk", true }, - { "ananyoo.com", false }, { "anaprieto.com", true }, { "anapsi.tk", true }, + { "anar.biz", true }, { "anarajaoui.ma", true }, { "anarcasmetalicos.tk", true }, + { "anarchapulco.com", true }, { "anarchie-in-lippe.tk", true }, { "anarchie.tk", true }, { "anarchista.top", true }, @@ -10443,11 +12656,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anarchistischegroepnijmegen.nl", false }, { "anarchistos.tk", true }, { "anarchotv.tk", true }, + { "anarchy.eu.org", true }, { "anarchyhax.ml", true }, { "anarchyrp.life", true }, { "anarchyweb.tk", true }, { "anarhia.tk", true }, { "anarhija.tk", true }, + { "anarhist.net", true }, + { "anarhist.org", true }, + { "anaricompras.com", true }, { "anarka.org", true }, { "anarkhe.net", true }, { "anarky.tk", true }, @@ -10459,18 +12676,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anastasiaweb.tk", true }, { "anastasis.lu", true }, { "anastasis.studio", true }, + { "anastore.com", true }, { "anatoliarles.com", true }, { "anatoly.tk", true }, { "anatomized.tk", true }, { "anatoray.com", true }, { "anatorywap.gq", true }, { "anaxios.ga", true }, + { "anaxvip-sp.gr", true }, { "anayahuasca.com.br", true }, { "anayarealm.com", true }, + { "anbaicreative.com", true }, { "anbank.pl", true }, { "anbigift.nl", true }, { "anblife.com", true }, - { "anblik.com", false }, { "anborn.tk", true }, { "ancade.es", true }, { "ancaebacia.pt", true }, @@ -10480,7 +12699,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ance.lv", false }, { "ancentury.com", true }, { "ancestramil.fr", true }, + { "ancestry.ca", true }, + { "ancestry.co.uk", true }, + { "ancestry.com", true }, + { "ancestry.com.au", true }, + { "ancestry.de", true }, + { "ancestry.fr", true }, + { "ancestry.mx", true }, + { "ancestry.se", true }, + { "ancestrycdn.com", true }, + { "ancestryinstitution.com", true }, { "anchev.net", true }, + { "anchorbvfs.com", true }, { "anchorit.gov", true }, { "anchoritsg.com", true }, { "anchovy.nz", false }, @@ -10488,25 +12718,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anciennes-automobiles.fr", true }, { "anciens.org", true }, { "ancient-gates.de", true }, - { "ancientcraft.eu", true }, { "ancientnorth.com", true }, { "ancientnorth.nl", true }, + { "anclarma.fr", true }, { "ancolies-andre.com", false }, { "anconatoday.it", true }, - { "ancow2020.com", true }, { "ancroma.ro", true }, - { "ancusrd.com", true }, + { "ancuong.com", true }, { "and-stuff.nl", true }, - { "and.com", false }, + { "and-tax.jp", true }, + { "andain.com", true }, { "andalosse.tk", true }, + { "andalucia.com", true }, { "andaluciaboard.tk", true }, { "andalusiaal.gov", true }, { "andantepiano.studio", true }, + { "andefang.com", true }, { "andel.info", false }, { "anderbelt.com.br", true }, { "anders.hamburg", true }, + { "andersen.it", true }, { "anderskp.dk", false }, { "andersoncountytn.gov", true }, + { "andersonlegal.co", true }, + { "andersonmanufacturing.com", true }, { "andersonpowerservices.com", true }, { "andersonshatch.com", true }, { "andersontownshipoh.gov", true }, @@ -10514,16 +12749,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anderstoneel.tk", true }, { "anderstornkvist.se", true }, { "andesnevadotours.com", true }, + { "andesoftconsulting.com", true }, { "andfaraway.tk", true }, { "andfrankly.com", true }, - { "andhaniawan.my.id", true }, + { "andhrawishesh.com", true }, { "andibo.net", true }, { "andiplusben.com", true }, { "andisadhdspot.com", true }, { "andiscyber.space", true }, - { "andnames.com", true }, { "andnet.tk", true }, { "andoaingo-gaztetxea.tk", true }, + { "andobil.com", true }, { "andoms.fi", true }, { "andonivr.com", true }, { "andor.com.au", true }, @@ -10539,14 +12775,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrasnagy.net", true }, { "andrazaharia.com", true }, { "andre-ballensiefen.de", true }, + { "andre-baum.com", true }, { "andre-otto.com", true }, { "andre-schlichting.de", true }, { "andrea-kiaora.de", true }, { "andrea-m.me", true }, { "andrea-wirthensohn.at", false }, - { "andrea18.net", true }, + { "andreaalloway.com", true }, { "andreaassenti.it", true }, { "andreaboero.it", false }, + { "andreacarreno.com", true }, { "andreadraghetti.it", true }, { "andreae.nl", true }, { "andreafruggi.it", true }, @@ -10558,13 +12796,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andreamcnett.com", true }, { "andreapalermo.tk", true }, { "andreapavone.com", true }, + { "andreas-kluge.eu", true }, { "andreas-kurtz.de", true }, { "andreaseracleous.com", false }, { "andreasfeusi.ch", true }, { "andreashartmann.net", true }, { "andreashellkvist.tk", true }, { "andreasjanker.de", true }, - { "andreaskloebl.at", true }, { "andreaskluge.eu", true }, { "andreaskrasa.com", true }, { "andreaslicht.nl", true }, @@ -10574,37 +12812,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andreasxp.me", true }, { "andreatedeschi.it", true }, { "andrecanuto.com.br", true }, + { "andrecarvalho.net.br", true }, { "andredaus.com", true }, { "andreeapasat.ro", true }, { "andreferreira.website", true }, - { "andrehansen.de", true }, { "andrehartensveld.tk", true }, { "andrehazeswinactie.nl", true }, { "andrei-nakov.org", true }, + { "andreichira.ro", true }, + { "andreihodorog.com", true }, { "andreina-atencio.com", true }, { "andrejbenz.com", true }, { "andrejstefanovski.com", true }, { "andremaciel.pt", true }, { "andrematosband.tk", true }, - { "andreo.ch", true }, { "andreoliveira.io", true }, { "andreotti-furniture.com", true }, { "andrepicard.de", true }, { "andresbandb.tk", true }, { "andrescuartas.tk", true }, + { "andresgarciapersonal.com", true }, { "andresgarciapersonal.es", true }, { "andresgarzon.net", true }, { "andresguiarealtor.com", true }, { "andrespaz.com", true }, { "andrespr.es", true }, + { "andresrios.nl", true }, { "andressaflores.com.br", true }, { "andresvillanueva.mx", true }, { "andreundnina.de", true }, { "andrew-lazarev.com", true }, - { "andrew-simon.ml", false }, { "andrew.fi", true }, { "andrewbennett.ltd", true }, - { "andrewbroekman.com", true }, { "andrewcountymo.gov", true }, { "andrewdaws.co", true }, { "andrewdaws.info", true }, @@ -10613,9 +12852,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrewdaws.tv", true }, { "andrewensley.com", true }, { "andrewfergusonbooks.com", true }, + { "andrewglucas.com", true }, + { "andrewglucas.net", true }, { "andrewhowden.com", false }, { "andrewimeson.com", true }, { "andrewin.ru", true }, + { "andrewjphotography.com", true }, { "andrewlarson.org", true }, { "andrewmcfarlane.tk", true }, { "andrewmichaelsmith.com", true }, @@ -10625,11 +12867,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrewpeng.net", true }, { "andrewpucci.com", false }, { "andrewrdaws.com", true }, - { "andrewreaganm.com", true }, { "andrewrgoss.com", true }, - { "andrewryno.com", false }, + { "andrewryno.com", true }, + { "andrews-waste.co.uk", true }, { "andrewsfasteners.uk", true }, { "andrewsfss.marketing", true }, + { "andrewsnc.gov", true }, + { "andrewsoutar.com", true }, { "andrewsun.com", true }, { "andrewtasso.com", true }, { "andrewtaylor.eu", true }, @@ -10642,6 +12886,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andreypopp.com", true }, { "andreysmirnov.tk", true }, { "andrian.ga", true }, + { "andrian.io", true }, { "andrian.tk", true }, { "andriano.net", true }, { "andrianova.ml", true }, @@ -10649,6 +12894,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andrienko.tk", true }, { "andrija-i-andjelka.com", true }, { "andro4all.com", true }, + { "androgain.in", true }, { "android", true }, { "android-10-inch-tablets.tk", true }, { "android-center.tk", true }, @@ -10664,20 +12910,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "android1.co.id", true }, { "androidcrunch.com", true }, { "androide.com", true }, + { "androidfinal.com", true }, { "androidgadgematic.com", true }, { "androidgaming.tk", true }, { "androidhack.tk", true }, { "androidhry.cz", true }, - { "androidhub.ru", true }, + { "androidification.com", true }, + { "androidification.info", true }, + { "androidification.net", true }, + { "androidification.org", true }, + { "androidinfotech.com", true }, + { "androidioswindows18378.ml", true }, { "androidkatalog.cz", true }, { "androidlab.tk", true }, { "androidmafia.ru", true }, { "androidmarket.gq", true }, { "androidmarketturkiye.tk", true }, { "androidmax.tk", true }, - { "androidmovile.com", true }, { "androidnovinky.cz", true }, { "androidphones.ga", true }, + { "androidplanet.nl", true }, { "androidplay.tk", true }, { "androidru.ml", true }, { "androidservicetool.com", true }, @@ -10685,15 +12937,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "androidtcpdump.com", true }, { "androidtelefony.cz", true }, { "androidtools.gq", true }, + { "androidtorrent.info", true }, { "androidtotal.ml", true }, { "androidwale.ga", true }, + { "androidwedakarayo.com", true }, + { "androidweekly.net", true }, + { "androidzone.me", true }, { "androlab.tk", true }, { "andromeda.se", true }, { "andropia-online.fr", true }, + { "androscoggincountyema.gov", true }, { "androtics.com", true }, { "androtix.com", true }, - { "androx.es", true }, - { "androx.ovh", true }, { "andrush.eu", true }, { "andruvision.cz", true }, { "andschwa.com", true }, @@ -10701,13 +12956,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andthisismyodyssey.tk", true }, { "anduril.de", true }, { "anduril.eu", true }, - { "andwebtraffic.org", true }, { "andy-hagans.tk", true }, - { "andyblu.me", true }, + { "andyante.cz", true }, + { "andyattorney.com", true }, { "andybrett.com", true }, - { "andyc.cc", true }, { "andycatteceur.tk", true }, { "andyclark.io", false }, + { "andyconcreting.com.au", true }, { "andycraftz.eu", true }, { "andycrockett.io", true }, { "andykenward.com", true }, @@ -10717,17 +12972,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "andysmith.tk", true }, { "andyson.at", true }, { "andysroom.dynu.net", true }, - { "andystar.org", true }, + { "andysroom.net", true }, { "andyt.eu", true }, { "andythomasonline.tk", true }, { "andythomsonbooks.ca", true }, + { "andytownsendphotography.com", true }, { "andytsoi.nyc", true }, { "andyvandermeyde.tk", true }, - { "andyveal.com", true }, { "andywalkeronline.tk", true }, { "andywilliamsonline.tk", true }, { "andzia.art.pl", true }, - { "anebel.com", true }, { "anecuni-club.com", true }, { "anecuni-rec.com", true }, { "anedot-sandbox.com", true }, @@ -10738,32 +12992,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anegabawa.com", false }, { "anehost.com", true }, { "anehtaconseil.com", true }, - { "anekatempatwisata.com", false }, + { "aneirin.net", true }, + { "anekatempatwisata.com", true }, { "anekdot-pr.tk", true }, { "anekdotik.tk", true }, { "anekdotiki.tk", true }, { "anelik.tk", true }, - { "anelki.net", true }, + { "anelki.net", false }, { "aneslix.com", false }, { "anessex.wedding", true }, { "anesterov.xyz", true }, { "anetaben.nl", true }, + { "anetofwellness.com", true }, { "anetteolzon.tk", true }, + { "anewperspectiveconstruction.com", true }, { "anex.us", true }, { "anexperimentedblog.tk", true }, { "anextraordinaryday.net", true }, { "anfadern.com", true }, + { "anfarabic.com", true }, + { "anfei.com", true }, + { "anfloors.ru", true }, { "anfr.fr", true }, + { "angablade.com", true }, + { "angazajamii.com", true }, { "ange-de-bonheur444.com", true }, + { "angeben.com", true }, { "angel-body.com", true }, { "angel-jrk.com", true }, { "angel-wing.jp", true }, - { "angel163.ru", true }, + { "angel163.ru", false }, { "angela.baby", true }, { "angeladietrich.com", true }, { "angelaheck.com", true }, { "angelalombardo.it", true }, { "angelarellano.tk", true }, + { "angelawhitepornstar.com", true }, { "angelbulldog.tk", true }, { "angelcastellanos.tk", true }, { "angelcorpus.tk", true }, @@ -10772,7 +13036,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "angelefloramendy.org", true }, { "angelesdelabismo.com", true }, { "angelesydemonios.es", true }, + { "angelfood.org", true }, + { "angelhaken.com", true }, { "angelhammer.tk", true }, + { "angelic.icu", true }, { "angelic47.com", true }, { "angelicapanganibansite.tk", true }, { "angelicare.co.uk", true }, @@ -10780,58 +13047,70 @@ static const nsSTSPreload kSTSPreloadList[] = { { "angelikaclothing.com", true }, { "angelinadevil.tk", true }, { "angelinafilipski.tk", true }, + { "angelineroguel.com", true }, { "angeliquewoudenberg.tk", true }, { "angeljmadrid.com", true }, + { "angelkeepers.net", true }, { "angelnumber.faith", true }, + { "angelnumber.one", true }, { "angelo4ek.tk", true }, { "angeloangioi.tk", true }, { "angelok.ru", true }, { "angeloroelen.tk", true }, + { "angelpowwow.com", true }, { "angelremigene.com", false }, { "angelsanctum.tk", true }, { "angelsandairwaves.tk", true }, + { "angelsandfriends.com", true }, { "angelschlesser.tk", true }, { "angelsdecay.tk", true }, { "angelsgirl.eu.org", true }, { "angelsmile.tk", true }, { "angelsmithphotography.com", true }, - { "angelsoft.com", false }, + { "angelsoft.com", true }, { "angelspabeauty.co.uk", true }, { "angelswar.ga", true }, - { "angeltechone.com", true }, + { "angeltechone.com", false }, + { "angelthump.com", true }, { "angeltorri.tk", true }, - { "angelzapien.com", true }, + { "angelvisionary.com", true }, { "angem.gq", true }, { "angem.tk", true }, { "angepsychedelices.tk", true }, { "angeredmoon.tk", true }, { "angermanalvorna.tk", true }, + { "angesehen.com", true }, { "angestoepselt.de", true }, + { "angie-webdesign.ch", true }, { "angiejones.com", true }, + { "angiel.com.br", true }, { "angielynx.net", true }, { "angiesite.tk", true }, - { "angievancise.com", true }, { "angiewickes.com", true }, { "anginf.de", true }, { "angiolinikids.it", true }, - { "angiology.sk", true }, { "angione.ca", true }, { "angione.se", true }, { "angisonline.cz", true }, + { "angkapaito.net", true }, { "angkasa.net.id", true }, { "anglais-angouleme.com", true }, { "anglarsports.com", true }, + { "angleline.cn", true }, { "anglersconservation.net", true }, { "anglertanke.de", true }, { "anglesgirl.eu.org", true }, { "anglesya.win", true }, - { "anglicanwatch.com", true }, { "anglictina-sojcak.cz", true }, { "anglictinasojcak.cz", true }, { "anglingactive.co.uk", false }, + { "anglingnewfoundlandlabrador.com", true }, { "anglirl.eu.org", true }, + { "anglogoldashanti.com", true }, + { "anglopoltransport.pl", true }, + { "angolo.com", true }, { "angolo.ga", true }, - { "angora.me", true }, + { "angora.id", true }, { "angorarabbitsaspets.com", true }, { "angristan.fr", true }, { "angristan.xyz", true }, @@ -10843,46 +13122,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "angrydragonproductions.com", true }, { "angrymoulinex.tk", true }, { "angrysnarl.com", true }, - { "angryteeth.net", true }, + { "angryteeth.net", false }, + { "angstakademie.com", true }, { "angstrommold.com", true }, { "angular-js.ga", true }, - { "angular-software.at", true }, + { "anguloconsulting.com", true }, { "angusandperthpgl.tk", true }, + { "angusbarn.com", true }, { "anh-dv.com", true }, { "anhaffen.lu", true }, + { "anhangabau.com", true }, { "anhdvboot.com", true }, { "anhdvshop.com", true }, + { "anhembi.br", true }, { "anhqv.es", true }, { "ani-man.de", true }, { "aniababan.com", true }, { "aniabuduje.pl", true }, { "aniaimichal.eu", true }, { "anian.ch", true }, - { "aniblackfox.net", true }, { "aniblizzard.tk", true }, + { "anichief.com", true }, + { "anievo.id", true }, { "aniforprez.net", true }, { "anightmareonelmstreet.tk", true }, { "anihilated.tk", true }, { "anihonetwallpaper.com", true }, { "anikabyaabi.com", true }, { "anikaras.ga", true }, - { "anikaras.ml", true }, - { "anilasansor.com", true }, - { "anillosdecompromiso.co", true }, + { "anikschwall.com", true }, { "anilom.tk", true }, { "anim.ee", true }, { "anima.digital", true }, { "animaalternative.it", true }, { "animacionclub.tk", true }, { "animadoc.cl", true }, + { "animaeducacao.com.br", true }, { "animaemundi.be", false }, { "animal-clothing.com", true }, { "animal-liberation.com", true }, + { "animal-paris.fr", true }, { "animal-rights.com", true }, { "animal-world.cf", true }, { "animal-world.tk", true }, { "animalarkvets.co.uk", true }, - { "animalcaretrust.org", true }, { "animalcenterunomas.tk", true }, { "animalcrossingwiki.de", true }, { "animaletnous.be", true }, @@ -10892,7 +13175,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animalnutritionwizard.org", true }, { "animalpetblog.ml", true }, { "animalpetgroup.ml", true }, - { "animalpix.ch", true }, + { "animalpix.ch", false }, { "animalplace.tk", true }, { "animalratingsers.ga", true }, { "animalratingsest.ga", true }, @@ -10916,9 +13199,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animari.eu", true }, { "animasencia.tk", true }, { "animashka.tk", true }, - { "animata.tk", true }, { "animataz.ga", true }, { "animate.de", true }, + { "animatedtimes.com", true }, { "animazul.tk", true }, { "anime-and-manga-news.tk", true }, { "anime-best.tk", true }, @@ -10927,6 +13210,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anime-drift.tk", true }, { "anime-list.ga", true }, { "anime-news.tk", true }, + { "anime-rg.com", true }, { "anime-tip.com", true }, { "anime-tv.tk", true }, { "anime.my", false }, @@ -10936,7 +13220,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animeai.com", true }, { "animebase.me", true }, { "animebits.moe", true }, - { "animecracks.com", true }, + { "animecasepremium.id", true }, + { "animecollective.com", true }, { "animecracks.net", true }, { "animecreed.ga", true }, { "animeday.ml", true }, @@ -10950,7 +13235,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animefun.cf", true }, { "animegroup.tk", true }, { "animeheaven.ml", true }, - { "animehentaihub.com", true }, { "animehf.com", true }, { "animehomeworld.tk", true }, { "animeinsights.net", true }, @@ -10965,6 +13249,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animemotivation.com", true }, { "animeonsen.xyz", true }, { "animepahe.com", true }, + { "animepahe.org", true }, + { "animepahe.ru", true }, { "animeplus1.tk", true }, { "animepower.gq", true }, { "animepower.tk", true }, @@ -10985,20 +13271,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "animesun.tk", true }, { "animetosho.org", true }, { "animetriad.com", true }, + { "animeuknews.net", true }, { "animewallpapers.tk", true }, + { "animixplays.net", true }, { "animmouse.com", true }, + { "animocreator.com", true }, + { "animonda.de", true }, + { "animotica.com", true }, { "animoxavilorza.tk", true }, { "aninews.tk", true }, { "anip.icu", true }, { "anipassion.com", false }, { "aniplus.cf", true }, { "aniplus.gq", true }, + { "anishnayak.com", true }, { "anisimov.ml", true }, { "anisotomatikkapi.com", true }, { "anitaalbersen.nl", true }, { "anitahebe.com", true }, { "anitalk.dk", true }, - { "anitcloud.cc", true }, + { "anitaxcph.dk", true }, { "anitklib.ml", true }, { "anitop.ga", true }, { "anitop.tk", true }, @@ -11006,34 +13298,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anitube.ch", true }, { "aniviasport.store", true }, { "anivision.tk", true }, + { "aniwatch.me", true }, { "aniwhen.com", true }, { "aniya.moe", true }, { "anja-vastgoed.nl", true }, - { "anjaamelia.com", true }, { "anjaliandthekid.com", true }, { "anjanbiswas.in", true }, { "anjara.eu", true }, { "anjocerdena.com", true }, { "anjoola.com", true }, + { "ankam.com", true }, { "ankane.org", true }, + { "ankanetworks.net", true }, + { "ankaraarabakiralama.com.tr", true }, { "ankaraarabakiralama.name.tr", true }, { "ankaraarackiralama.name.tr", true }, { "ankaraciftkabin.com", true }, + { "ankaracikma.com.tr", true }, + { "ankaracikmaparca.com.tr", true }, { "ankaradaozelders.tk", true }, { "ankaraevdenevenakliyat.name.tr", true }, + { "ankarafiziktedavimerkezi.com.tr", true }, + { "ankarajeneratorkiralama.com.tr", true }, { "ankarakurumsalwebtasarim.com", true }, { "ankaramotosikletyedekparca.com", true }, + { "ankaraotocikmaparca.com.tr", true }, { "ankaraotokiralama.name.tr", true }, { "ankaraotokiralama.tk", true }, { "ankaraotomobilcikmaparca.com", true }, + { "ankaraotomobilcikmaparca.com.tr", true }, { "ankaraotomobilyedekparca.com", true }, - { "ankaraprofesyonelwebtasarim.com", true }, + { "ankaraotomobilyedekparca.com.tr", true }, { "ankararentacar.name.tr", true }, { "ankaraseo.name.tr", true }, { "ankarasondajkuyusutemizleme.com", true }, - { "ankarauzmanlarnakliyat.com", true }, { "ankarawebtasarim.name.tr", true }, { "ankarawebtasarim.tk", true }, + { "ankarayedek.com.tr", true }, { "anker-wladyslawowo.pl", true }, { "anketlekazan.net", true }, { "ankitha.in", true }, @@ -11043,7 +13344,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ankos.cf", true }, { "ankureurope.co.uk", true }, { "ankurray.com", true }, - { "ankwanoma.com", true }, { "ankya9.com", true }, { "anleitung-deutsch-lernen.de", true }, { "anleitung-zum-flechten.de", true }, @@ -11065,20 +13365,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "annaaurora.eu", true }, { "annabelcinemas.com", true }, { "annabelmassina.net", true }, + { "annabet.com", true }, { "annadebrux.cf", true }, { "annadebrux.ga", true }, { "annadebrux.gq", true }, { "annadebrux.ml", true }, { "annaenemma.nl", true }, { "annafiore.com.br", true }, + { "annainstitute.org", true }, { "annalaudel.gallery", true }, { "annaleon.tk", true }, { "annalisefashion.ga", true }, { "annalitvinova.pro", true }, { "annalouise.tk", true }, { "annaluizaferreira.com.br", true }, + { "annandaleonline.net", true }, + { "annandaleonline.org", true }, { "annangela.cn", true }, - { "annangela.moe", true }, + { "annangela.moe", false }, { "annarborplasticsurgery.com", true }, { "annarokina.com", true }, { "annat.cf", true }, @@ -11087,19 +13391,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "annawagner.pl", true }, { "annaweb.tk", true }, { "annazweglinska.pl", true }, + { "anne-gb.ch", true }, { "anne-marie.tk", true }, { "annedaniels.co.uk", true }, { "anneeden-porn.com", true }, { "anneeden.com", true }, { "annefit.ro", true }, + { "annefrank.org", true }, { "annejan.com", true }, { "annekleinert.de", true }, + { "annelida.com", true }, { "annelies-monsere.tk", true }, { "anneliesonline.nl", true }, { "anneliesvanhoof.tk", true }, + { "annelisetouya.com", true }, { "annema.biz", true }, + { "annemakeslovelycandles.co.uk", true }, { "annemarielaponder.com", true }, - { "annemation.de", true }, + { "annesfotografie.de", true }, { "annetta.com", true }, { "annetta.net", true }, { "annettewindlin.ch", true }, @@ -11109,26 +13418,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anniangel-porn.com", true }, { "annicascakes.nl", true }, { "anniecloth.com", true }, + { "anniegagnonphotographie.com", true }, + { "annies.com", true }, + { "anniesdollhouse.com", true }, { "annihilation-squad.tk", true }, { "annikarose-porn.com", true }, { "annitrinity.com", true }, + { "annitrinity.net", true }, { "anniversary-cruise.com", true }, { "anniversaryforumers.ga", true }, { "annonasoftware.com", true }, { "annoncer.ga", true }, { "annonces-immobilier.tk", true }, + { "annonces-moto.org", true }, + { "annonces-vacances.info", true }, { "annonces34.tk", true }, { "annonseringonline.se", true }, - { "annotate.software", true }, { "announcement.tk", true }, { "annoyinggui.de", true }, { "annoyingguide.de", true }, { "annrusnak.com", true }, { "anns.eu", true }, + { "annthegran.com", true }, { "annu.tk", true }, { "annuaire-auto-ecole.com", true }, { "annuaire-express.tk", true }, - { "annuaire-photographe.fr", false }, { "annual.ga", true }, { "annuire.org", true }, { "annuitycommunity.com", true }, @@ -11137,9 +13451,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "annunciationbvmchurch.org", true }, { "annuncisesso.tk", true }, { "annyaurora.net", true }, + { "annygraces.com", true }, { "annynantasiri.com", true }, { "anodas.lt", true }, - { "anojan.com", true }, + { "anohana.org", true }, + { "anokacountybuys.gov", true }, + { "anol.loan", true }, { "anomalous.eu", true }, { "anomaly.tk", true }, { "anon-gap.tk", true }, @@ -11153,28 +13470,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anoncrypto.org", true }, { "anoneko.com", true }, { "anongoth.pl", false }, + { "anonhq.com", true }, { "anonicloud.ch", true }, + { "anoniem-domein.nl", true }, { "anonimizers.tk", true }, { "anonmega.tk", true }, { "anonofficial.tk", true }, { "anonrea.ch", true }, { "anons.fr", false }, + { "anonsearch.org", true }, { "anonser.tk", true }, - { "anontekno.com", false }, + { "anontekno.com", true }, { "anonwonders.tk", true }, { "anonybus.com", true }, { "anonym-surfen.de", false }, { "anonym-surfen.online", true }, { "anonyme-spieler.at", true }, + { "anonymfile.com", true }, + { "anonymous.com.pt", true }, { "anonymousbitcoinexchange.org", true }, + { "anonymousemail.me", true }, { "anonymshare.com", true }, - { "anonymster.com", true }, + { "anoopcnair.com", true }, { "anopan.tk", true }, { "anora.ai", true }, { "anoracdn.net", true }, { "anorak.tech", true }, { "anordinaryhousewife.com", true }, { "anorexia-nervosa.tk", true }, + { "anoservices.co.uk", true }, { "another.ch", true }, { "anotherfatgeek.net", true }, { "anotherinvest.pl", true }, @@ -11187,13 +13511,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anoual-lycee.tk", true }, { "anoujaa.com", true }, { "anouncer.ga", true }, - { "anova-irm.com", true }, + { "anova.com", true }, { "anowicki.pl", true }, { "anoxinon.de", true }, { "anoxinon.media", true }, { "anpaju.gq", true }, { "anpigabon.ga", true }, { "anquankongjian.com", true }, + { "anrworldwide.com", true }, { "ans-ge.ch", false }, { "ans-solutions.com", true }, { "ansas.net", false }, @@ -11201,49 +13526,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ansellchallenge.azurewebsites.net", true }, { "anseo.ninja", true }, { "ansermet.net", false }, + { "ansermfg.com", true }, { "ansgar-sonntag.de", true }, { "ansgar.tk", true }, { "ansgarsonntag.de", true }, { "anshar.eu", true }, + { "anshlag.co.il", true }, { "ansibeast.net", true }, { "ansichtssache.at", true }, { "ansogning-sg.dk", true }, + { "anson.ru", true }, { "ansoncountync.gov", true }, { "ansperformance.eu", true }, + { "anstaskforce.gov", true }, + { "anster.org", true }, { "anstorino.tk", true }, - { "answeraddiction.com", true }, { "answerbookstore.tk", true }, + { "answerconnect.co.uk", true }, { "answerconnect.com", true }, { "answerforce.com", true }, - { "answering365.com", true }, + { "answering365.com", false }, { "answernow.cf", true }, { "answers-online.ru", true }, + { "answersincme.com", true }, { "answersreviews.com", true }, { "antabuse.ga", true }, { "antabuse500mg.ga", true }, { "antabuskaufen1.gq", true }, + { "antagning-vn.se", true }, { "antagning.se", true }, { "antagonist1.tk", true }, { "antalya-taxi.cf", true }, { "antalya-turkey.tk", true }, { "antalya-yesim.cf", true }, + { "antalyaduvarkagidi.com.tr", true }, { "antalyaescmagazin.tk", true }, { "antalyaescortyaren.tk", true }, + { "antalyahomes.com", true }, { "antalyamasajsalonu.gq", true }, { "antama.eu", true }, { "antama.nl", true }, - { "antanavagefarbiarz.com", true }, { "antani.cloud", true }, { "antarcti.co", true }, { "antarctida.tk", true }, { "antaresmedia.com.py", true }, + { "antaris.industries", true }, + { "antarktida.ru", true }, { "antarktida.tk", true }, + { "antarlina.com", true }, + { "antarvasnastory.co.in", true }, + { "antavo.com", true }, { "antcas.com", false }, { "antechrista.tk", true }, { "antecim.fr", true }, { "antecipa.com", true }, { "antelope.ai", true }, { "antena.ga", true }, + { "antenaplay.ro", true }, + { "antenasmundosat.com", true }, { "antenasmundosat.com.br", true }, { "antenaweb.tk", true }, { "antenna-lyubertsy.cf", true }, @@ -11262,32 +13602,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antennisti.roma.it", true }, { "anteny.ml", true }, { "antephaber.tk", true }, - { "anteprima.info", true }, - { "anteroleppanen.fi", true }, + { "anteros.shop", true }, { "antfarm.cf", true }, + { "anthes.is", true }, + { "anthiago.com", true }, { "anthisis.tv", true }, { "anthony-bardon.eu", true }, { "anthonycarbonaro.com", false }, - { "anthonychampagne.fr", true }, { "anthonychampagne.me", true }, { "anthonydegrande.tk", true }, { "anthonyellis.com", true }, { "anthonyfontanez.com", true }, - { "anthonygaidot.fr", true }, { "anthonylaberge.tk", true }, { "anthonyloop.com", true }, { "anthonymineo.com", false }, { "anthonytimbers.com", true }, { "anthonytutorials.tk", true }, { "anthonyvadala.me", true }, + { "anthro.asia", true }, { "anthro.icu", true }, { "anthrocon.com", true }, { "anthrocon.net", true }, { "anthrocon.org", true }, { "anthroper.com", true }, { "anthropoid.ca", true }, + { "anti-akw-ac.de", true }, { "anti-bible.com", true }, { "anti-civilisation.tk", true }, + { "anti-ddos.group", true }, { "anti-depressants.tk", true }, { "anti-doping.tk", true }, { "anti-eniologia.ml", true }, @@ -11312,9 +13654,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antichat.tk", true }, { "antichatresources.ga", true }, { "anticipating.tk", true }, + { "anticonceptieportaal.nl", true }, { "anticopyright.com", true }, { "anticorruption.tk", true }, { "antics.tk", true }, + { "antidayton.com", true }, { "antidepressants.tk", true }, { "antidopamine.com", true }, { "antidope.tk", true }, @@ -11331,6 +13675,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antifaschistischeaktioncelle.tk", true }, { "antifilter.network", true }, { "antifraud.cf", true }, + { "antifraudcentre-centreantifraude.ca", true }, { "antifurti.roma.it", true }, { "antigravity.cf", true }, { "antihelp-tomsk.tk", true }, @@ -11346,17 +13691,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antikfloors.ga", true }, { "antikfloors.gq", true }, { "antikfloors.ml", true }, + { "antikpest.hu", true }, { "antikvar-i-ya.tk", true }, { "antikvar-net.tk", true }, { "antikvariat22.cz", true }, - { "antikvarius.ro", false }, { "antikvarshop.tk", true }, { "antilaserpriority.com", true }, { "antiled.by", true }, - { "antimateri.com", true }, { "antimaterie.tk", true }, { "antimine.me", true }, { "antiminutemen5.tk", true }, + { "antinatalism.com", true }, + { "antinatalists.com", true }, { "antinazi.org", true }, { "antincendio.it", true }, { "antincendio.roma.it", true }, @@ -11364,14 +13710,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antipa.ch", true }, { "antipodi.ga", true }, { "antipolygraph.org", true }, + { "antiquario.roma.it", true }, { "antique-pedalcars.ch", true }, { "antiquecenter.gq", true }, { "antiquefirearms.tk", true }, + { "antiquemotorcycle.org", true }, { "antiquesinvestorsest.ga", true }, - { "antirayapmalang.com", true }, { "antireklams.tk", true }, { "antirepressionbayarea.com", true }, { "antiseptik.me", true }, + { "antishell.ru", true }, { "antisocialist.tk", true }, { "antispamcloud.dk", true }, { "antispeciesism.com", true }, @@ -11384,16 +13732,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antiuser.tk", true }, { "antivandal.tk", true }, { "antivigilancia.tk", true }, + { "antivirus.com", true }, { "antivirus.cz", true }, { "antivirusnet.tk", true }, { "antivirusnik.tk", true }, { "antivirusprotection.reviews", true }, + { "antiwarsongs.org", true }, { "antize.tk", true }, { "antizon.net", true }, { "antlerprojects.com", true }, { "antnetwork.tk", true }, { "antocom.com", true }, - { "antocom.ru", true }, { "antoga.eu", true }, { "antoinat.fr", true }, { "antoine-data.tk", true }, @@ -11404,7 +13753,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antoinelounis.xyz", true }, { "antoineschaller.ch", false }, { "anton-media.tk", true }, - { "anton-nb.com", true }, { "antonchen.com", true }, { "antonellabb.eu", true }, { "antoni.xyz", true }, @@ -11416,14 +13764,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antonio-gartenbau.de", false }, { "antoniojr.adv.br", true }, { "antoniomarques.eu", false }, - { "antonioneto.org", true }, - { "antonioordonez.es", true }, { "antoniorodriguesadv.com.br", true }, { "antonios.ch", true }, + { "antonioso.ng", true }, { "antonis.cy", true }, { "antonis.org", true }, { "antonjuulnaber.dk", true }, - { "antonmcclure.com", true }, { "antonoff.tk", true }, { "antonok.com", true }, { "antonovka.ga", true }, @@ -11432,8 +13778,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antopie.org", true }, { "antoshka-net.tk", true }, { "antota.lt", true }, - { "antragsgruen.de", false }, + { "antragsgruen.de", true }, { "antraxx.ee", true }, + { "antrimnh.gov", true }, + { "antrodiulisse.eu", false }, + { "antropico.com", true }, { "antroposboutique.it", true }, { "antroposofica.com.br", true }, { "ants-and-me.ml", true }, @@ -11441,25 +13790,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "antstoolbox.com", true }, { "antti.codes", true }, { "anttitenhunen.com", true }, - { "antvklik.com", true }, + { "antts.uk", true }, + { "antts.xyz", true }, + { "anturis.com", true }, { "antwire.net", true }, { "antyblokada.pl", true }, - { "antyfake.pl", true }, - { "anuartaxi.com", true }, + { "antyware.pl", true }, { "anubandarage.com", true }, { "anubislinux.tk", true }, { "anubisz.tk", true }, + { "anubixx.com", true }, { "anujag.tk", true }, { "anukaweb.com", true }, { "anuke.eu.org", true }, { "anulowano.pl", true }, + { "anunciosclasificados.co", true }, + { "anunciosclasificadosquindio.com", true }, { "anuntulmeu.tk", true }, { "anunturitv.ro", true }, - { "anvilcargotrailers.com", true }, { "anvilmetal.tk", true }, { "anvilsales.tk", true }, { "anvilsecure.com", true }, { "anvish.in", true }, + { "anwalt-website.de", true }, { "anwalt.us", true }, { "anwarulislam.tk", true }, { "anwarverdict.ml", true }, @@ -11472,8 +13825,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "any-download.gq", true }, { "any-download.ml", true }, { "any-download.tk", true }, + { "any-id.be", true }, + { "any-id.eu", true }, + { "any-id.nl", true }, + { "any-id.online", true }, + { "any-id.store", true }, + { "any-link-page.de", true }, + { "any6.com", true }, { "anya-carter.com", true }, + { "anya.moe", true }, { "anyad.at", true }, + { "anyboat.com.au", true }, + { "anybus.com", true }, + { "anycoindirect.eu", true }, { "anydaytour.cf", true }, { "anyduchildren.tk", true }, { "anyebooks.cf", true }, @@ -11483,14 +13847,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anyfood.fi", true }, { "anyhobby.ga", true }, { "anyi.in", true }, + { "anyid.be", true }, + { "anyid.uk", true }, + { "anyid.us", true }, { "anyilin.cn", true }, { "anyma.it", true }, - { "anymeta-global.com", true }, + { "anymatch.ai", true }, + { "anymuscle.com", true }, { "anyone.cf", true }, { "anypeer.net", true }, { "anyplant.ga", true }, { "anyprime.net", true }, - { "anypromo.com", true }, { "anyquestions.govt.nz", true }, { "anyradio.ga", true }, { "anyrisk.ru", true }, @@ -11499,109 +13866,144 @@ static const nsSTSPreload kSTSPreloadList[] = { { "anyshapemusic.com", true }, { "anyshow.ga", true }, { "anystack.xyz", true }, + { "anytimefitness.co.in", true }, + { "anytimefitness.co.uk", true }, + { "anytimefitness.nl", true }, { "anytimefundingers.ga", true }, { "anytimefundingest.ga", true }, + { "anytimeicon.io", true }, { "anytimeoffices.ga", true }, { "anytimesewerrepair.com", true }, + { "anytots.com", true }, { "anyuta-mebel.tk", true }, - { "anyval.com", false }, + { "anywayanyday.com", true }, { "anywhereworks.com", true }, { "anz.co.nz", true }, { "anzalikala.com", true }, + { "anzca.edu.au", true }, { "anzeiger.ag", true }, - { "anzimatech.com", true }, + { "anztb.org", true }, { "ao-vivo.net", true }, + { "ao.com", true }, { "ao2.it", true }, { "ao27.net", true }, - { "ao3-cn.top", true }, - { "ao3unlock.xyz", true }, { "ao6.me", true }, { "ao6.works", true }, + { "aoa.gov", true }, + { "aoa2.ch", true }, { "aoadatacommunity.us", true }, { "aoaprograms.net", true }, { "aobogo.com", true }, { "aocai.com", true }, { "aod-tech.com", true }, + { "aodisco.co.uk", true }, { "aodnovel.com", false }, + { "aoe2de.com", true }, { "aoe9.com", true }, + { "aoeuaoeu.com", true }, + { "aofusa.me", true }, { "aofusa.net", true }, + { "aohao.com", true }, { "aoicollege.edu", true }, { "aoicprobationil.gov", true }, { "aoil.gr", true }, { "aojf.fr", true }, - { "aojiao.org", true }, + { "aok-bv.de", false }, { "aokae.com", true }, - { "aoku3d.com", true }, + { "aoku3d.com", false }, { "aolcollege.com", true }, { "aomar-mohammedi.tk", true }, + { "aomi.com", true }, + { "aonedatasolution.com", true }, { "aooobo.com", true }, + { "aopa.org", true }, { "aopedeure.nl", true }, { "aopsy.de", true }, { "aorangi-debt.co.nz", true }, + { "aorgroup.id", false }, + { "aorhan.com", true }, { "aori.com", true }, - { "aorosora.com", true }, + { "aorui.com", true }, + { "aosc.kz", true }, { "aosclan.tk", true }, + { "aoshiya.com", true }, + { "aosika.com", true }, + { "aospa.co", true }, { "aostacarnavals.it", true }, { "aosus.org", true }, { "aotearoa.maori.nz", true }, { "aotearoafreepress.com", true }, { "aotearoaleaks.org", true }, + { "aotopo.com", true }, { "aotuo.com", true }, - { "aoutec.com", true }, + { "aova.loan", true }, { "aoyagi-farm.jp", true }, { "aoyamacc.co.jp", true }, { "aozora.moe", true }, + { "ap-bg.eu", true }, + { "ap.icu", true }, + { "ap.nic.in", true }, + { "ap314.com", true }, + { "apa-canal.ro", true }, + { "apac-fxcm.com", true }, { "apache-portal.com", true }, { "apachecountyaz.gov", true }, { "apachehaus.de", false }, { "apachelounge.com", true }, + { "apachetoday.com", true }, { "apadmi.com", false }, { "apadrinaunolivo.org", true }, { "apadvantage.com", true }, - { "apalachicolaboatslips.com", true }, - { "apalancamiento.trade", true }, + { "apaesthetics.com", true }, { "apambiente.pt", true }, { "apaniwebsite.xyz", true }, + { "apannpyaymedia.com", true }, { "apapinspection.ca", true }, { "aparaatti.org", true }, + { "aparatosinteligentes.com", true }, { "aparistravel.com", true }, { "apart-hotel-weimar.de", true }, + { "apartamentnawydmie.pl", true }, { "apartamentoslostejos.tk", true }, { "apartamentscalpatoi.cat", true }, { "apartamentsvituri.com", true }, - { "apartema.eu", true }, - { "apartema.se", true }, { "apartmani-kamenik.com.hr", true }, { "apartment-in-rijeka.com", true }, { "apartment-market.ml", true }, + { "apartment.loans", true }, { "apartmentkroatien.at", true }, { "apartmentregister.com.au", true }, { "apartments-promajna.tk", true }, { "apartments.co.nz", true }, { "apartrentrotterdam.nl", true }, { "apasaja.tech", true }, + { "apassodarte.com", true }, + { "apatransport.com", true }, { "apbforum.tk", true }, { "apbio.org", true }, { "apbox.de", true }, + { "apcassistant.com", true }, { "apcdistri.com", true }, - { "apcpky.com", true }, + { "apcmc.pt", true }, { "apcube.com", true }, { "apcw.org", true }, { "apdfawl.com", false }, + { "apdtalents.org.tw", true }, { "apdx.com", true }, + { "apea.com", true }, { "apeasternpower.com", true }, - { "apecservices.com", true }, { "apedreira.com", true }, { "apef.ch", false }, { "apefrog.tk", true }, { "apeiri.de", true }, + { "apeironassets.com", true }, { "apelsin.ml", true }, + { "apem.com", true }, { "aperature.com", true }, { "apercloud.es", true }, { "aperioadvice.ga", true }, { "aperiomoney.ga", true }, { "aperiotaxation.ga", true }, - { "apert.be", true }, { "aperta.ro", true }, { "aperta.shop", true }, { "apertis.org", false }, @@ -11619,20 +14021,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apex-promotion.com", true }, { "apex-writers.com", true }, { "apex.ac", true }, - { "apex.to", true }, { "apexchain-dev.com", true }, + { "apexchimneyrepairs.com", true }, { "apexconsulting.io", true }, { "apexfacades.com.au", true }, { "apexitsolutions.ca", true }, + { "apexnc.gov", true }, { "apexperformancegym.com", true }, + { "apexxglobalevents.com", true }, { "apfhaiti.org", true }, { "apfm.fr", true }, { "apfnxg.com", true }, { "apgw.jp", true }, { "aphantasiac.com", true }, - { "aphelion-design.jp", true }, { "aphelionband.ga", true }, { "aphelionentertainment.com", true }, + { "aphelis.net", true }, + { "aphorismen-archiv.de", true }, { "api-agri.ga", true }, { "api-bitrefill.com", true }, { "api-geek.com", true }, @@ -11640,16 +14045,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "api.biz.tr", true }, { "api.lookout.com", true }, { "api.recurly.com", true }, - { "apiary.blog", true }, + { "api42.ch", true }, + { "api64.com", true }, { "apiary.shop", true }, { "apiary.store", true }, { "apiary.supplies", true }, { "apiary.supply", true }, { "apicep.com", true }, { "apico-fish.ru", true }, + { "apiculture.net", true }, + { "apienergisahomol.com", true }, + { "apiinfotech.com", true }, + { "apil.org.uk", true }, { "apila.care", true }, - { "apila.us", true }, { "apiled.io", true }, + { "apilicens.nu", true }, { "apimon.de", true }, { "apimoveisorocaba.com.br", true }, { "apinat.de", true }, @@ -11657,53 +14067,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apio.systems", true }, { "apiora.ru", true }, { "apiordie.com", true }, - { "apipalominos.cl", true }, { "apiplus.fr", true }, { "apipsandiego.ga", true }, { "apipsandiego.gq", true }, { "apipsandiego.ml", true }, - { "apirest.top", true }, { "apirie.uk", true }, { "apiris.fr", true }, { "apis.blue", true }, - { "apis.com.py", true }, { "apis.google.com", true }, - { "apisyouwonthate.com", false }, { "apit-kovrov.ru", true }, { "apitodemestre.com.br", true }, { "apiu.me", true }, + { "apix.se", true }, { "apix.uz", true }, + { "apixmessaging.com", true }, + { "apixplatform.com", true }, { "apk-world.cf", true }, { "apk.li", true }, { "apk4fun.com", true }, + { "apkclup.com", true }, + { "apkcunk.com", true }, + { "apkdownloadhunt.com", true }, { "apkdv.com", false }, { "apkfame.com", true }, + { "apkfree.com", true }, { "apkfuse.com", true }, { "apkindirsene.com", true }, - { "apklatte.com", true }, { "apkmaze.com", true }, { "apkmint.co", true }, + { "apkmodders.com", true }, + { "apkmodo.net", false }, { "apkmody.io", true }, - { "apkmody.ir", false }, { "apknut.com", true }, { "apkoc.com", true }, { "apkpokemongo.ga", true }, { "apkpokemongo.gq", true }, { "apkpokemongo.tk", true }, + { "apksdroid.com", true }, { "apktechy.com", true }, { "apkteen.com", true }, + { "apkxi.com", true }, + { "aplaceforpops.com", true }, { "aplausse.tk", true }, { "aplazame.com", true }, { "aplcare.com", true }, { "aplibrary.org", true }, - { "aplikaceproandroid.cz", true }, + { "aplicaciones.ai", true }, { "aplis-online.de", false }, { "aplpackaging.co.uk", true }, { "aplteam.tk", true }, { "aplu.fr", true }, { "aplusdownload.com", true }, { "aplusteachingresources.com.au", true }, - { "apluswaterservices.com", true }, + { "aplusz.nl", true }, { "apm.com.tw", true }, { "apn-dz.org", true }, { "apn-einstellungen.de", true }, @@ -11712,8 +14128,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apnanaudero.tk", true }, { "apnee-sommeil.ml", true }, { "apnews.com", true }, + { "apnic.network", true }, { "apnisites.tk", true }, - { "apnsettingss.com", true }, { "apobot.de", true }, { "apocalipsisdot.tk", true }, { "apocalypseboard.tk", true }, @@ -11721,20 +14137,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apocalypsje.ga", true }, { "apod.com.au", true }, { "apod.ml", true }, + { "apoderus.net", true }, { "apogaea.com", true }, { "apogeephoto.com", true }, + { "apoia.se", true }, { "apoiocoletivo.com", true }, { "apokalipsis.tk", true }, - { "apolearn.com", true }, - { "apollochiropractor.com", true }, + { "apolitical.co", true }, { "apollodiet.com", true }, { "apollogames.cz", true }, { "apolloheatingandair.com", true }, + { "apollointeractive.com", true }, { "apollomobile.ga", true }, { "apollomobile.gq", true }, { "apollonas.tk", true }, { "apollonia.tk", true }, - { "apollonion.com", true }, + { "apollosoftware.pro", true }, { "apollowallet.org", true }, { "apollux.ro", true }, { "apollyon.work", true }, @@ -11742,14 +14160,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apometria.site", true }, { "aponkral.com", true }, { "aponkral.com.tr", true }, + { "aponkral.dev", true }, { "aponkral.net", true }, { "aponkral.net.tr", true }, { "aponkral.org", true }, + { "aponkral.org.tr", true }, { "aponte-systems.com", true }, { "apopka.gov", true }, { "apopov.tk", true }, { "apordi.fr", true }, - { "aporia.io", true }, + { "aposan.de", true }, { "aposke.com", true }, { "aposke.net", true }, { "aposke.org", true }, @@ -11757,20 +14177,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apostalegal.pt", true }, { "apostascomvalor.com", true }, { "apostasolida.com", true }, + { "apostasonline.guru", true }, { "apothecarydouglasville.com", true }, { "apotheek-ict.nl", true }, - { "apotheke.market", true }, - { "apotheke55.de", true }, + { "apotheke.nrw", true }, + { "apotheke.social", true }, { "apothekeonline.tk", true }, { "apotom.tk", true }, { "apoyoentareas.tk", true }, { "apozitivenergiasport.hu", true }, { "app", true }, + { "app-alp-cp-boost-model.azurewebsites.net", true }, { "app-at.work", true }, + { "app-capacitymanager-v1-pro-crd-hd.azurewebsites.net", true }, { "app-cinveninfostream-qa.azurewebsites.net", true }, + { "app-control-fcu.de", true }, + { "app-finanzas-services-v1-pro-ol.azurewebsites.net", true }, { "app-online.cloud", true }, { "app-scantech.com", true }, { "app-scope.com", true }, + { "app-uks-stg-projectb-website.azurewebsites.net", true }, { "app.do", true }, { "app.gp", true }, { "app.lookout.com", true }, @@ -11779,11 +14205,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "app.yinxiang.com", false }, { "app00228.com", true }, { "app11018.com", true }, - { "app2attract.nl", true }, { "app2get.de", true }, { "app3w.nl", true }, + { "app4legal.com", false }, { "app666365.com", false }, - { "app7337.com", true }, { "app77018.com", true }, { "appac.com.tr", true }, { "appac.ltd", true }, @@ -11797,6 +14222,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appartement-andrea.at", true }, { "appartement-evolene.net", false }, { "appartement-oostduinkerke.tk", true }, + { "appartementhaus-am-uke.de", true }, { "appartementhaus-badria.de", true }, { "appartementmarsum.nl", true }, { "appartementspanje.tk", true }, @@ -11805,21 +14231,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appbet43.com", true }, { "appbot.co", true }, { "appbydl.com", true }, - { "appcitor.com", true }, { "appcoins.io", true }, + { "appcraver.com", true }, + { "appdividend.com", true }, { "appdrinks.com", true }, { "appearinsequel.tk", true }, { "appel-aide.ch", true }, + { "appelboom.com", true }, { "appelboomdefilm.nl", true }, { "appelerintrt.tk", true }, + { "appelhof.com", true }, { "appemployees.tk", true }, + { "appen.com", true }, + { "appen.com.cn", true }, { "appengine.google.com", true }, { "appers.co", true }, { "appetiser.com.au", true }, { "appetitesanonymous.com", true }, - { "appfarm.io", false }, + { "appfollow.io", true }, { "appgeek.com.br", true }, - { "appharbor.com", true }, + { "appgrowing.cn", true }, + { "appgrowing.net", true }, + { "appgurus.com.au", true }, + { "apphr.io", true }, + { "appian-cdn-gov.com", true }, { "appian-cdn.com", true }, { "appiancloud-dynamic.com", true }, { "appiancloud-static.com", true }, @@ -11827,9 +14262,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appify.org", true }, { "appimlab.it", true }, { "appingrove.com.au", true }, + { "appinplace.com.au", true }, + { "appinvalley.com.au", true }, { "appjobs.com", true }, - { "applaudit.com", true }, { "applaus-kornwestheim.de", true }, + { "apple-droid.com", true }, + { "apple-droid.ru", true }, { "apple-watch-zubehoer.de", true }, { "apple.ax", true }, { "apple.markets", true }, @@ -11838,9 +14276,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apple77.net", true }, { "applebee1558.com", true }, { "applecare.cz", true }, + { "appledroid.ru", true }, + { "appleedu.com", true }, { "appleexterminating.com", true }, + { "applefeel.com", true }, + { "appleglasscompany.com", true }, { "applegun.com", true }, + { "appleii-box.de", true }, { "applejacks-bouncy-castles.co.uk", true }, + { "applelp.com", true }, { "applemaclover.tk", true }, { "applemon.com", true }, { "applemon.net", true }, @@ -11848,48 +14292,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appleoosa.com", true }, { "appleric.tk", true }, { "applesaph.nl", true }, - { "appleseedcontent.com", true }, { "applesencia.com", true }, { "appleslayer.cf", true }, { "applet.cyou", true }, { "appletonmn.gov", true }, - { "appletonsupply.com", true }, { "appletonwi.gov", true }, + { "appletoy.com", true }, { "appletree.is", true }, - { "appletreelanewm.com", true }, + { "appletreelanewm.com", false }, + { "appletreemedicalgroup.com", true }, { "applevalleyca.gov", true }, { "applewatch.co.nz", true }, - { "applian.jp", true }, + { "applian.com", true }, { "appliancedoctorofwestmichigan.com", true }, { "appliancepronwi.com", true }, + { "appliancerepairtime.com", true }, { "appliances-for-home.tk", true }, { "appliancesrepairservice.ca", true }, - { "applic8.com", false }, + { "appliancist.com", true }, + { "applicablesecurity.net", true }, { "application-travel.us.com", true }, { "applicationmanager.gov", true }, + { "applicationtracker.com", true }, { "applied-privacy.net", true }, + { "appliedbehavioranalysisedu.org", true }, + { "appliedbiomath.com", true }, { "appliedmaths.lk", true }, + { "appliedtesting.com", true }, + { "applingcounty.gov", true }, + { "applique.co.jp", false }, + { "appliquette.com.au", true }, { "appllio.com", true }, + { "apploye.com", true }, { "apply-esta.us.com", true }, { "apply-eta.org", true }, { "apply-visa.us.com", true }, { "apply.eu", true }, { "apply55gx.com", true }, + { "applybe.com", true }, { "applydirect.org", true }, + { "applythis.net", true }, { "applytofaceblog.com", true }, { "appmania.cf", true }, { "appmania.gq", true }, { "appmedia.tk", true }, { "appmeucredito.com.br", true }, - { "appmobi.com", true }, { "appmobile.io", true }, { "appninjas.com", true }, + { "appodeal.com", true }, { "appoggiature.fr", true }, + { "appointible.com", true }, { "appointment.ga", true }, { "apponic.com", true }, { "apponline.com", true }, { "appopay.com", true }, { "apppage.net", true }, + { "appperformance.com.br", true }, { "appraf.com", true }, { "appraisalroomest.ga", true }, { "apprank.in", true }, @@ -11900,19 +14358,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apprentimillionnaire.com", true }, { "approbo.com", true }, { "approval-workflow.com", true }, + { "approve.me", true }, { "approvedcashmax.com", true }, { "approvedlawyersers.ga", true }, - { "approvedtreecare.com", true }, + { "approveme.com", true }, { "apps.facebook.com", false }, { "apps.fedoraproject.org", true }, { "apps.stg.fedoraproject.org", true }, { "apps4all.sytes.net", true }, { "apps4inter.net", false }, + { "appsafrica.com", true }, { "appsaraby.com", true }, + { "appsbd.com", true }, { "appsbud.com", true }, + { "appscan360.com", true }, + { "appscan360.net", true }, + { "appscan360.org", true }, { "appscem.mx", true }, { "appscloudplus.com", true }, { "appsecmonkey.com", false }, + { "appservice.ru", true }, { "appshuttle.com", true }, { "appsimplex.pt", true }, { "appsoda.net", true }, @@ -11921,19 +14386,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "appsren.com", true }, { "appstory.co.kr", true }, { "appt.ch", false }, + { "appt.to", true }, { "apptesters.com", true }, + { "apptio.com", true }, { "apptoutou.com", true }, + { "apptrigger.com", true }, { "appuals.com", true }, { "appub.co.jp", true }, { "appugo.tk", true }, { "appui-de-fenetre.fr", true }, + { "appuntidallarete.com", true }, + { "appunwrapped.com", true }, { "appveyor.com", true }, { "appwardbeta.com", true }, { "appworld.ga", true }, + { "appy.la", true }, + { "appy.us", true }, { "appzoojoo.be", true }, { "aprazivel.com.br", true }, - { "aprendafotografia.org", true }, + { "aprendadesign.com", true }, { "aprendaingles123.com", true }, + { "aprendainglesnabiblia.com.br", true }, + { "aprendaviaweb.com.br", true }, { "aprende.com", true }, { "aprendejainternet.tk", true }, { "aprenderexcel.com.br", true }, @@ -11942,26 +14416,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apresski-pictures.tk", true }, { "apresskistuntteam.tk", true }, { "apretatuercas.es", true }, + { "apriadirect.com", true }, + { "apricavia.com", true }, { "apricaviabranding.com", true }, { "apricotactuaries.com.au", true }, { "aprilagentur.de", true }, { "aprilspecialsest.ga", true }, { "aprofunda.art.br", true }, - { "apropont.hu", false }, { "apropotv.ro", true }, { "apropotv.tk", true }, + { "aprovatotal.com.br", true }, { "aprpullmanportermuseum.org", false }, { "aprsdroid.org", true }, - { "apruebaexamenes.com", true }, + { "apruvd.com", true }, { "aprz.de", true }, { "apsa.paris", true }, { "apsb.cz", true }, { "apsbengdubi.org", true }, { "apse.ga", true }, + { "apsistemas.info", true }, + { "apsnewcastle.com", false }, + { "apspayroll.com", true }, + { "apsportseditors.org", true }, + { "apsprofessions.gov.au", true }, + { "apsreform.gov.au", true }, + { "apsreview.gov.au", true }, { "apssb.in", true }, { "apssolucoesfinanceiras.online", true }, { "apstats.tk", true }, { "apstudynotes.org", true }, + { "apstylebook.com", true }, { "apsua.tk", true }, { "apt-one.com", true }, { "aptcaust.com.au", true }, @@ -11969,28 +14453,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "apteka38.com", true }, { "aptekakolska.pl", true }, { "aptekas.tk", true }, - { "aptelink.pl", true }, + { "aptern.pt", true }, + { "apthesys.com", true }, + { "aptient.com", true }, { "aptitudetests.org", true }, { "aptive.co.uk", true }, + { "aptos.com", true }, { "aptumseguros.mx", true }, { "apu-board.de", true }, { "apuestalegal.com", true }, + { "apuestalegal.mx", true }, { "apuestalegal.pe", true }, + { "apuestalegalchile.com", true }, { "apunkt.dk", true }, - { "apuntesmedicos.net", true }, { "apur.org", true }, { "apuraytravel.com", true }, { "apuyou.io", false }, { "apv-ollon.ch", true }, { "apviz.io", true }, { "apw-dortmund.de", true }, - { "aqalat.com.sa", true }, { "aqarategypt.com", true }, { "aqarbab.com", true }, + { "aqdance.com.sg", true }, + { "aqdlt.tv", true }, { "aqdun.com", true }, { "aqlivia.com", true }, { "aqqrate.com", true }, { "aqsiq.net", true }, + { "aqua-academy.at", true }, + { "aqua-accelerator.com", true }, { "aqua-dom33.ru", true }, { "aqua-ferra.co.uk", true }, { "aqua-fitness-nacht.de", true }, @@ -11999,23 +14490,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aqua-minsk.tk", true }, { "aqua-print.com.ua", true }, { "aqua-richtig.de", true }, + { "aquababy.at", true }, { "aquabio.ch", false }, { "aquabiodesign.tk", true }, { "aquablue.tk", true }, { "aquabotanic.tk", true }, - { "aquabyte.co.uk", true }, - { "aquabyte.net", true }, { "aquacapsule.cf", true }, { "aquacitylands.com", true }, { "aquaconcepts.be", true }, { "aquadarts.tk", true }, { "aquadecor.cf", true }, - { "aquadonis.ch", false }, { "aquadrom.cz", true }, + { "aquaexpo.com.ec", true }, { "aquafc.com", true }, { "aquafilm.cf", true }, { "aquafirm.com", true }, { "aquagino.nl", true }, + { "aquahill.net", true }, { "aquaholic.tk", true }, { "aquahomo.com", true }, { "aquaist.com", true }, @@ -12023,21 +14514,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aqualife.cf", true }, { "aqualife.com.gr", true }, { "aqualifeprojects.com", true }, + { "aqualogis.co.uk", true }, { "aqualysis.nl", false }, { "aquamarin.icu", true }, { "aquamart.tk", true }, + { "aquantia.com", true }, { "aquapets.tk", true }, + { "aquaphor.com", true }, + { "aquaphor.ru", true }, { "aquaplaning.tk", true }, { "aquaplays.net", true }, { "aquapoint.kiev.ua", true }, { "aquaponics.ga", true }, { "aquapool.es", true }, { "aquapraat.tk", true }, - { "aquarden.com", true }, { "aquarel-games.tk", true }, { "aquarel.tk", true }, { "aquarelleren.tk", true }, - { "aquariawise.com", true }, + { "aquarillon.fr", true }, { "aquariu.ms", true }, { "aquarium-supplement.net", true }, { "aquariumhobby.tk", true }, @@ -12047,9 +14541,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aquasaur.tk", true }, { "aquascaping.tk", true }, { "aquaselect.eu", true }, + { "aquasplash.ae", true }, + { "aquastudios.games", true }, { "aquasun.pl", true }, { "aquatherm72.ru", true }, + { "aquaticbyte.com", false }, { "aquatiq.com", true }, + { "aquato.com.ua", true }, { "aquatropical.tk", true }, { "aquaviaspa.es", true }, { "aquaworld.tk", true }, @@ -12057,43 +14555,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aqueducttech.com", true }, { "aquienguate.com", true }, { "aquila.co.uk", true }, + { "aquila.earth", true }, { "aquilogia-patrimoine.fr", true }, { "aquimisa.com", true }, { "aquiparoxetina.gq", true }, - { "aquitainebrasserie.com.au", true }, { "aquivardenafilo.gq", true }, { "aqwire.io", true }, { "aqworlds.cf", true }, + { "ar-1xbet.com", true }, { "ar-android.com", true }, { "ar-informatique.ch", false }, { "ar-oma.tk", true }, { "ar-vernet.fr", true }, { "ar.al", true }, { "araadvocats.net", true }, + { "arab-btc.net", true }, { "arab-romance.tk", true }, - { "arab.dating", true }, { "arab1info.cf", true }, + { "arab2cam.com", true }, { "arabakiralama.name.tr", true }, + { "arabam.com", true }, { "arabapps.org", true }, - { "arabarba7.com", true }, { "arabbook.ga", true }, { "arabearthcommunity.ml", true }, { "arabedia.tk", true }, - { "arabhardware.net", true }, + { "arabeyes.com", true }, { "arabi-news.ml", true }, { "arabi-online.net", true }, { "arabia-news.gq", true }, + { "arabia.fi", true }, { "arabian-gulf.tk", true }, - { "arabianlingo.com", true }, { "arabic-for-nerds.com", true }, { "arabic-shirts.com", true }, { "arabicbayan.tk", true }, - { "arabicclass.tk", true }, { "arabicdress.com", true }, + { "arabicpost.live", true }, { "arabictranslation.tk", true }, { "arabicxz.com", true }, { "arabigolestan.tk", true }, { "arabmusic.tk", true }, + { "arabschools.edu.sa", true }, { "arabseed.cf", true }, { "arabska.tk", true }, { "arabskills.tk", true }, @@ -12103,7 +14604,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arabtones.tk", true }, { "arabwomen.ml", true }, { "aracbul.com", true }, - { "arachina.com", true }, { "arachnid.tk", true }, { "arachnida.ml", true }, { "arackiralama.name.tr", true }, @@ -12111,15 +14611,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aradiantlyhealthylife.com", true }, { "arados.de", true }, { "aradpulse.tk", true }, + { "aragotownshipmn.gov", true }, + { "arahtekno.com", false }, { "arai21.net", true }, + { "arainfo.org", true }, + { "arais.com", true }, { "arakanis.tk", true }, { "aral.ml", true }, - { "araleeniken.com", true }, { "araluenvalleyhotel.ga", true }, { "aralys.com", true }, { "aram-designs.com", true }, { "aramido.de", true }, { "aramloebmd.com", true }, + { "aramsco.com", true }, { "aramyayinevi.com", true }, { "aranchhomes.com", true }, { "arandinacf.tk", true }, @@ -12138,42 +14642,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ararrl.com", true }, { "ararrl.net", true }, { "ararrl.org", true }, - { "araseifudousan.com", true }, + { "arasozgun.net", true }, { "aravitor.com", true }, { "aravo.com", true }, { "arawaza.info", true }, { "araxis.com", true }, { "araya.ga", true }, { "arbaiten.tk", true }, + { "arbaswedan.id", true }, + { "arbat.media", true }, { "arbautocare.com", true }, { "arbavere.ee", true }, { "arbeidsplassen.no", true }, { "arbeiten.ga", true }, + { "arbeiterkammer.at", true }, { "arbeitskraft.de", true }, { "arbeitskreis-asyl-eningen.de", true }, { "arbeitslosenverwaltung.de", true }, { "arbejdsdag.dk", true }, - { "arbeta-online.com", true }, { "arbil.com.ar", true }, { "arbitrarion.com", true }, { "arbitrary.ch", true }, { "arbitrations.tk", true }, { "arbitrazh.tk", true }, + { "arbitrazhstavki.com", true }, + { "arbitrazhtraff.com", true }, { "arbobille.es", true }, { "arboleda-hurtado.com", true }, { "arbolesdenavidad.info", true }, { "arbolesdenavidad.site", true }, + { "arbologic.nl", true }, { "arborio.com.ua", true }, { "arboristic.de", true }, - { "arborpress.cf", true }, + { "arbounie.nl", true }, + { "arbousier.com", true }, { "arbradio.com", true }, + { "arbschg.com", true }, { "arbu.eu", false }, { "arbucks.io", true }, { "arc-relight.com", true }, { "arc.run", true }, + { "arca.am", true }, { "arca.info.ro", true }, { "arca.live", true }, { "arcada-company.com", true }, + { "arcadami.gov", true }, { "arcadeencasa.com", true }, { "arcadegame.ga", true }, { "arcadegames.com", true }, @@ -12184,16 +14697,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arcaik.net", true }, { "arcana-noctis.tk", true }, { "arcandadults.org", true }, + { "arcane.no", true }, { "arcanefrost.de", true }, { "arcanehardware.com", true }, { "arcanetides.com", true }, + { "arcanoid.com", true }, + { "arcantel.ch", true }, { "arcbouncycastles.co.uk", true }, { "arcdesantmarti.net", true }, { "arcenergy.co.uk", true }, { "arcese.com", true }, + { "arceusx.net", true }, { "arch-design.com", true }, { "archaeoadventures.com", true }, - { "archaeology.lk", true }, { "archambault.paris", true }, { "archangelbio.com", true }, { "archauthority.com", true }, @@ -12209,15 +14725,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "archerytaghuren.be", true }, { "archeton.ga", true }, { "archframe.net", true }, - { "archi.net.tw", false }, { "archi.ve.it", true }, + { "archibuilt.net.au", true }, { "archief-ocmwgent.be", true }, - { "archimedesconsult.com", true }, { "archimedicx.com", true }, { "archina.ir", true }, { "archined.nl", true }, - { "archipaedia.org", true }, + { "archion.ro", true }, { "archispace.com.cn", true }, + { "archistart.net", true }, { "archit.in", true }, { "architect-cassiman.be", true }, { "architectphd.tk", true }, @@ -12226,11 +14742,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "architecture-colleges.com", true }, { "architectureblog.ml", true }, { "architectus.ga", true }, + { "architekt-website.de", true }, { "architekt.tk", true }, { "architekten.tk", true }, { "architektur.ga", true }, { "architektur.tk", true }, - { "architekturbuero-petersen.de", true }, { "architekturwiki.tk", true }, { "archival-services.gov.ge", true }, { "archive.gov.ge", true }, @@ -12238,7 +14754,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "archives.cf", true }, { "archives.gov", true }, { "archivesdelavieordinaire.ch", true }, + { "archivesfoundation.org", true }, { "archivestesting.tk", true }, + { "archivi.ddns.net", true }, { "archivistas.tk", true }, { "archivium.biz", true }, { "archivosmercury.com", true }, @@ -12248,17 +14766,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "archlinux.org", true }, { "archlinuxcn.org", true }, { "archmacro.ga", true }, - { "archmediamarketing.com", false }, { "archmirror.it", true }, { "archoit.org", false }, + { "archphila.org", true }, { "archsec.info", true }, { "archtekton.com.ve", true }, - { "archwaypromotions.com", true }, - { "archwomen.org", true }, { "arcinapoli.it", true }, { "arcj.es", true }, { "arckr.com", true }, - { "arcleanarcondicionado.com.br", true }, { "arclookup.com", true }, { "arcmarine.eu", true }, { "arco.lu", true }, @@ -12267,11 +14782,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arcoidaho.gov", true }, { "arcoiriscastellon.tk", true }, { "arcolapdtx.gov", true }, + { "arcolasecurities.com", true }, { "arcolatexas.gov", true }, { "arcopay.io", true }, + { "arcosa.com", true }, { "arcosatank.com", true }, { "arcosdelallana.tk", true }, { "arcosdequejana.com", true }, + { "arcourts1st.gov", true }, { "arcourts6th.gov", true }, { "arcovix.com", true }, { "arcproject.org.uk", true }, @@ -12284,6 +14802,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arcticfiber.net", true }, { "arcticfox.email", true }, { "arcticfoxes.net", true }, + { "arcticpolitics.com", true }, { "arcticvillage.gov", true }, { "arcticwolf.com", true }, { "arctus-security.com", true }, @@ -12295,11 +14814,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ardadanal.com", true }, { "ardakannews.tk", true }, { "ardania.de", true }, + { "ardennes.com", true }, + { "ardenwolfsky.com", true }, { "arditech.ml", true }, { "ardmoreok.gov", true }, { "ardo.tk", true }, { "ardor.noip.me", true }, { "ardtrade.ru", true }, + { "arduino.cc", true }, { "are-you-experienced.tk", true }, { "area.ge", true }, { "area21.ga", true }, @@ -12309,9 +14831,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "area51.social", true }, { "area51bit.com", true }, { "area51bit.it", true }, + { "area536.com", false }, { "areacinquentaeum.tk", true }, - { "areaclienti.net", false }, - { "areafiftylan.nl", true }, { "areallyneatwebsite.com", true }, { "arealsultan.ga", true }, { "areanet.tk", true }, @@ -12319,19 +14840,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "areatrend.com", true }, { "areavoipers.ga", true }, { "areavoipest.ga", true }, + { "areawidepainting.com", true }, { "areege.tk", true }, { "arefidgetspinnersgay.com", true }, { "arefly.com", true }, { "aregus.tk", true }, - { "areis.pt", true }, + { "areins.com", true }, + { "areinsmuseum.com", true }, { "arekatieandchrisgettingmarried.com", true }, { "arekatieandchrisgettingmarried.today", true }, { "arekatieandchrismarriedyet.com", true }, + { "arekkusu.net", true }, + { "arellak.de", true }, { "areminder.co", true }, - { "arena-lemgo.de", true }, { "arena-news.tk", true }, { "arenaalbionu.pl", true }, { "arenadagon.tk", true }, + { "arenaforum.ru", true }, { "arenas-architecte.com", true }, { "arenatennis.ga", true }, { "arenda-auto.com", false }, @@ -12339,6 +14864,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arenda247.by", false }, { "arendabotov.tk", true }, { "arendadoma.tk", true }, + { "arendakemper.by", true }, { "arendakrana.tk", true }, { "arendaskuterov.cf", true }, { "arendburgers.nl", true }, @@ -12351,18 +14877,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "areqgaming.com", true }, { "ares.systems", true }, { "ares.watch", true }, + { "aresico.cz", true }, { "aresproject.org", true }, { "arest.web.id", true }, { "aresztowany.pl", true }, { "aresztsledczy.pl", true }, + { "aret.eu.org", true }, { "arete.net", true }, { "aretemusic.tk", true }, + { "areteortho.com.sg", true }, { "arex-corp.com", true }, { "arezzonotizie.it", true }, { "arforingenieria.com", true }, { "arfycat.com", true }, { "arg.zone", true }, { "argama-nature.com", true }, + { "arganaddict.com", true }, + { "arganaddict.net", true }, { "arganaderm.ch", false }, { "arganwinkel.nl", true }, { "argb.de", true }, @@ -12372,69 +14903,101 @@ static const nsSTSPreload kSTSPreloadList[] = { { "argentinaxp.com", true }, { "argentinetownship.gov", true }, { "argentumonline.tk", true }, + { "argico.com", true }, { "argilo.net", true }, + { "argo-vision.com", true }, + { "argo-vision.it", true }, + { "argo.vision", true }, + { "argocasino.com", true }, { "argon2.online", true }, - { "argonium.com.au", true }, + { "argonnewi.gov", true }, + { "argos.co.uk", true }, { "argosasist.co.uk", true }, + { "argosrisk.com", true }, + { "argotplan.com", true }, { "argovpay.com", true }, { "argovpn.com", true }, { "argrafiche.it", true }, { "argumentative-essay.gq", true }, { "argumentplus.ru", true }, + { "argus01.bg", true }, + { "argusinformation.com", true }, + { "argxentakato.me", true }, + { "argyrouminas.digital", true }, + { "argyrouminas.eu", true }, { "arheh.com", true }, { "arhgrille.com", true }, { "arhipka.tk", true }, - { "arhitekti.hr", true }, + { "arhivpalanka.rs", true }, { "ari-web.xyz", true }, { "ari.gg", true }, { "aria-best.ru", true }, { "aria-best.su", true }, + { "aria-sante.org", true }, { "aria.be", true }, { "aria2.cf", true }, { "ariaartgallery.com", true }, - { "ariacellini.com", true }, { "ariacreations.net", true }, + { "ariacres.ca", true }, { "ariadermspa.com", true }, { "ariag.tk", true }, { "ariajourney.com", false }, - { "ariamag.com", true }, + { "ariamag.com", false }, { "ariaman.tk", true }, { "arian.io", true }, { "ariana.wtf", true }, - { "arianagrande.pro", true }, { "ariashii.tk", true }, { "ariba.info", true }, { "aribicara.tk", true }, + { "aric-assurances.fr", true }, { "aricabus.tk", true }, { "aricaluchalibre.tk", true }, - { "ariden.net", true }, { "aridhia.com", true }, { "aridhia.io", true }, - { "ariege-pyrenees.net", true }, { "arielasher.cf", true }, + { "arieldiaz.codes", true }, + { "arielhr.ca", true }, { "arielpereira.tk", true }, { "ariens.com", true }, { "ariensco.com", true }, + { "ariensco.uk", true }, { "arienscohospitality.com", true }, + { "arienscompany.com", true }, + { "arienscompanydealer.com", true }, + { "ariensconordiccenter.com", true }, + { "arienscorp.com", true }, + { "ariensfamilyfoundation.org", true }, { "ariensfoundation.org", true }, - { "arienstocht.nl", true }, + { "ariensmuseum.com", true }, + { "ariensnordiccenter.com", true }, + { "ariensparts.com.au", true }, + { "arienssnotek.com", true }, + { "ariensstore.com", true }, + { "aries.it", true }, { "ariesclark.com", true }, { "arieswdd.com", true }, - { "ariettahoods.com", true }, { "arifarma.com", true }, { "arifburhan.online", true }, { "arifer.tk", true }, { "arifp.me", true }, { "arifrachmanhakim.tk", true }, { "arigato-java.download", true }, + { "arihantabode.com", true }, + { "arihantarden.com", true }, + { "arihantbuildcon.com", true }, + { "arihantone.com", true }, + { "arihantone.in", true }, + { "arihantsouthwinds.com", true }, { "arihunt.com.au", true }, + { "arij.net", true }, { "arijitdg.net", true }, { "arilto.com", true }, - { "arima.co.ke", true }, { "arima.tk", true }, + { "arimarie.com", true }, { "arimarie.net", true }, { "arimarie.org", true }, { "arina.is", true }, + { "arina.moscow", true }, { "arinahashimoto.com", true }, { "arinde.ee", true }, { "arinflatablefun.co.uk", true }, @@ -12442,8 +15005,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arious.uk", true }, { "aripiprazolee.gq", true }, { "arirabinowitz.com", true }, + { "aris.io", true }, { "arisaka.tk", true }, - { "arise19.com", true }, { "ariseconference.org.nz", true }, { "arisevendor.net", true }, { "arishastyle.tk", true }, @@ -12453,6 +15016,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aristokratia.tk", true }, { "ariston-center.gq", true }, { "aristotle.tk", true }, + { "aristra.ch", true }, + { "aristra.com", true }, + { "aristra.de", true }, { "aritec-la.com", true }, { "arithmetic.ga", true }, { "arithmetica.at", true }, @@ -12470,13 +15036,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arjansteevels.nl", true }, { "arjanvaartjes.net", true }, { "arjen-robben.tk", true }, - { "arjunasdaughter.pub", true }, + { "arjunasdaughter.pub", false }, { "arjweb.co.uk", true }, { "arkaan.tk", true }, { "arkadaslik.tk", true }, { "arkadelphia.gov", true }, { "arkadiahill.tk", true }, { "arkadian.tk", true }, + { "arkadien.com", true }, { "arkadiumdesign.com", true }, { "arkadiyt.com", true }, { "arkagis.com", true }, @@ -12485,6 +15052,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arkantos.agency", true }, { "arkenco.net", true }, { "arkenstone.ml", true }, + { "arkforum.de", true }, { "arkfoundationrepair.com", true }, { "arkhamasylum.tk", true }, { "arkhangelsk.cf", true }, @@ -12492,6 +15060,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arkhangelsk.tk", true }, { "arkholmevillage.ml", true }, { "arkhvoid.xyz", true }, + { "arklow.io", false }, { "arkm6.gq", true }, { "arknights.work", false }, { "arknodejs.com", true }, @@ -12499,27 +15068,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arkrowd.eu.com", true }, { "arks.cards", true }, { "arksan.com.tr", true }, - { "arktalentsolutions.com.mx", true }, { "arkulagunak.com", false }, - { "arlaperu.com", true }, + { "arkutinofamilyresort.com", true }, { "arlatools.com", true }, { "arle.moe", true }, - { "arlecchinobuongustaio.it", true }, { "arlenarmageddon.com", true }, { "arlenitas.com", true }, - { "arlingtonelectric.com", true }, + { "arleo.eu", true }, + { "arlingtonlibrary.org", true }, + { "arlingtonmn.gov", true }, { "arlingtonva.gov", true }, + { "arlingtonwine.net", true }, { "arlon.com", true }, - { "arm.gov", false }, + { "arm-host.com", true }, + { "arm.gov", true }, + { "arma3.com", true }, { "armacom.tk", true }, + { "armadale.au", true }, { "armadale.wa.gov.au", true }, { "armadalelearningpathways.co.uk", true }, { "armadaquadrat.com", true }, { "armadateam.tk", true }, + { "armadilloscubatx.com", true }, { "armado.tk", true }, { "armageddonclan.tk", true }, { "armahackers.tk", true }, { "armamentevolved.com", true }, + { "armand-colin.com", true }, { "armanddesign.com", true }, { "armanddesign.nl", true }, { "armandmusic.nl", true }, @@ -12528,14 +15103,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "armandsdiscount.com", true }, { "armanozak.com", true }, { "armansazehradis.com", true }, - { "armaringross.com", true }, + { "armaplatform.com", true }, { "armarinhovirtual.com.br", true }, + { "armaselektronik.com", true }, + { "armateursderhum.fr", true }, + { "armatura.kiev.ua", true }, { "armazemdaminiatura.com.br", true }, { "armazemdeminasmg.com.br", true }, { "armazone.tk", true }, { "armbrust.me", true }, { "armcar.ga", true }, - { "armchairgames.com", true }, { "armchairwarlord.com", true }, { "armchess.tk", true }, { "armculturaltv.cf", true }, @@ -12547,34 +15124,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "armeria.roma.it", true }, { "armfilm.co", true }, { "armhistory.tk", true }, + { "armiantichesanmarino.eu", true }, { "armida.tk", true }, { "armil.it", true }, - { "armin-cme.de", true }, { "arminc.tk", true }, { "arminpech.de", true }, { "arminreiter.com", true }, { "arminsure.com", true }, { "armleads.com", false }, { "armo.re", true }, + { "armo.sk", true }, { "armoedebeleidgent.be", true }, { "armond.tk", true }, - { "armor.ai", true }, { "armorsoft.fr", true }, { "armourroofcolorado.com", true }, { "armourroofinc.com", true }, + { "arms-expo.ru", true }, + { "armsco.fr", true }, + { "armstrongremovals.com.au", true }, { "armstrongsengineering.com", true }, { "armtopnews.tk", true }, + { "army.ca", true }, { "army.gov.lb", true }, + { "armyburza.cz", true }, { "armycyberchallenge.xyz", true }, { "armyholidays.com.au", true }, { "armyofflyingmonkeys.com", true }, { "armyrtf.com.au", true }, + { "armyuniversity.edu", true }, { "armywear.ga", true }, { "arn0.cc", true }, { "arnados.tk", true }, { "arnamur.be", true }, { "arnaqueoufiable.com", true }, - { "arnaudardans.com", true }, { "arnaudb.net", true }, { "arnaudlanna.com", true }, { "arnaudligny.fr", true }, @@ -12592,7 +15174,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arno-klein.fr", true }, { "arno-klein.it", true }, { "arno-klein.net", true }, - { "arno.digital", true }, + { "arno.digital", false }, { "arno.pm", true }, { "arnoklein.eu", true }, { "arnoklein.fr", true }, @@ -12600,7 +15182,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arnold-schwarzenegger.tk", true }, { "arnoldkontz-occasions.lu", false }, { "arnonerba.com", true }, - { "arnor.org", true }, + { "arnor.org", false }, { "arnottindustries.ga", true }, { "arnoudraeven.nl", false }, { "arnoudvandalen.nl", true }, @@ -12610,17 +15192,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arnstein.it", true }, { "arny.ru", true }, { "aroablog.tk", true }, - { "arobaz-informatique.org", true }, + { "arobaz-informatique.org", false }, { "arockets.ru", true }, { "arod.tk", true }, { "arofabric.com", true }, { "arogov.com", true }, + { "arogyabharti2021.in", true }, { "arokha.com", true }, - { "aroma-dum.com.ua", true }, { "aroma-therapy.tk", true }, { "aroma24.ml", true }, { "aromachat.eu", true }, { "aromacos.ch", true }, + { "aromahookah.gr", true }, { "aromaimportado.com.br", true }, { "aromaonlinestore-korat.com", true }, { "aromateque.com.ua", true }, @@ -12628,20 +15211,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aromatlas.com", true }, { "aromatraining.com", true }, { "aromex.ml", true }, + { "aroncull.de", true }, { "aronsonrosenthal.com", true }, + { "aroofing.net", true }, { "aroonchande.com", false }, { "arooshi.website", true }, + { "aroramedicaleducation.co.uk", true }, { "aros.pl", true }, { "arose.io", true }, - { "around-cms.de", true }, { "around-tables.co.jp", true }, + { "arounddeal.com", true }, { "arouparia.com", true }, { "arouzing.xyz", true }, { "arowsoft.tk", true }, { "arox.eu", true }, + { "aroya.io", true }, { "arp-arena.ml", true }, { "arp-mb.de", true }, { "arpa-h.gov", true }, + { "arpagian.com", true }, { "arpah.gov", true }, { "arpamip.org", true }, { "arpasix.com", true }, @@ -12651,30 +15239,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arpasix.org", true }, { "arphotography.tk", true }, { "arpnet.co.jp", true }, + { "arpnet.net", true }, { "arpsel.de", true }, + { "arpsel.ws", true }, { "arpteamdiabolo.tk", true }, + { "arqandes.org", true }, { "arqpericial.es", true }, { "arqueo-ecuatoriana.ec", true }, { "arquipielago.tk", true }, { "arquitectura-ilimitada.tk", true }, { "arquitet.com.br", true }, { "arrakis.se", true }, + { "arrangeme.com", true }, { "arraudi.be", true }, { "arraudi.eu", true }, + { "array.io", true }, { "arrazane.com.br", true }, { "arrazola.org", true }, - { "arrestage.com", true }, { "arrestageinternational.com", true }, - { "arresttracker.com", true }, - { "arrive.by", true }, + { "arrival.com", true }, + { "arrive.by", false }, { "arrivedconsulting.com", true }, { "arrmaforum.com", true }, { "arroba.digital", true }, { "arrow-api.nl", true }, + { "arrowad.com", true }, { "arrowduty.ml", true }, { "arrowfastener.com", true }, { "arrowgrove.com", false }, - { "arrowheadaddict.com", true }, { "arrowwebprojects.nl", true }, { "arrt.xyz", true }, { "ars-online.pl", true }, @@ -12682,8 +15274,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arsalba.com", true }, { "arsalbania.tk", true }, { "arschkrebs.org", true }, - { "arscogitandi.com.pl", true }, - { "arscogitandi.pl", true }, { "arselvarol.com.tr", true }, { "arsenal-of-wisdom.org", true }, { "arsenal-trans.tk", true }, @@ -12691,21 +15281,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arsenalperu.tk", true }, { "arsenideas.ga", true }, { "arsenyan.cf", true }, + { "arset.net", true }, { "arshdeepsingh.tk", true }, { "arshia.cf", true }, { "arshidazarine.tk", true }, - { "arshina.su", false }, + { "arshina.su", true }, { "arshispana.com", true }, { "arsindecor.com", true }, { "arsk1.com", true }, { "arslankaynakmetal.com", true }, - { "arslonga.io", true }, { "arslonga.ovh", true }, { "arsmagazine.tk", true }, { "arsmedika.ru", true }, + { "arsmundi.de", true }, { "arsmuseum.com", true }, { "arstudentloanhelp.com", true }, + { "art-athens.com", true }, { "art-auction.jp", true }, + { "art-boeden.ch", true }, { "art-creative.tk", true }, { "art-design.tk", true }, { "art-dolls.com.ua", true }, @@ -12717,7 +15310,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "art-news.tk", true }, { "art-okno.com", true }, { "art-online.tk", true }, - { "art-pix.com", false }, { "art-pix.de", true }, { "art-pix.net", true }, { "art-polynesien.com", true }, @@ -12726,19 +15318,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "art-shinbi.com", true }, { "art-vida.com", true }, { "art-voronov.tk", true }, + { "art.art", true }, { "art21tv-armenian.tk", true }, { "art30.ro", true }, + { "art93.com", true }, + { "artabrian.com", true }, { "artacadia.org", true }, { "artadagroup.com", true }, { "artakids.tk", true }, { "artane.gq", true }, + { "artaurium.com", true }, { "artbalsam.com", true }, { "artbees.co.uk", true }, { "artboja.com", true }, { "artbygarr.com", true }, { "artc.at", true }, - { "artcatch.art", true }, { "artcenter.tk", true }, + { "artclasscontent.com", true }, + { "artcom-venture.de", false }, { "artcommunity.tk", true }, { "artcravers.in", true }, { "artdeco-photo.com", false }, @@ -12751,7 +15348,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arteaga.me", true }, { "arteaga.tech", true }, { "arteaga.uk", true }, - { "arteaga.xyz", true }, { "artebel.com.br", true }, { "artecat.ch", true }, { "artechip.net", true }, @@ -12783,8 +15379,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arterienundvenen.ch", true }, { "arterydb.ru", true }, { "artesacraloreto.it", true }, + { "artesaniafenix.cl", true }, { "artesaniascym.com.ar", true }, - { "artesaniaselmagodeoz.com", true }, { "artesaniastonalaytlaquepaque.com", true }, { "arteseideias.com.pt", true }, { "arteshesorkh.tk", true }, @@ -12794,23 +15390,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artestetica.tk", true }, { "artetbalade.tk", true }, { "artetculture.tk", true }, + { "arteventinews.it", true }, { "artevos.com", true }, { "artevos.de", true }, + { "artex.com.br", true }, { "artexhibition.jp", true }, { "artextasia.com", true }, { "arteya.net", true }, { "artfabrics.com", true }, { "artfullyelegant.com", true }, - { "artfuryou.com", true }, + { "artgaragecrewe.com", true }, { "artgorod.tk", true }, { "artgranit.tk", true }, - { "arthousecarousel.co.uk", true }, { "arthritisgrouppa.com", true }, { "arthritisrheumaticdiseases.com", true }, { "arthrosis.ml", true }, { "arthur.cn", true }, { "arthurdejong.org", true }, { "arthurdev.cf", true }, + { "arthurhoefer.com", true }, { "arthurlaw.ca", true }, { "arthurlewis.me", true }, { "arthuro.ca", true }, @@ -12818,7 +15416,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arti-group.ml", true }, { "arti-islam.tk", true }, { "articaexports.com", true }, + { "articexploit.xyz", true }, { "articlebyte.ga", true }, + { "articledaily.net", true }, { "articlefr.cf", true }, { "articlepub.ga", true }, { "articlequeue.com", true }, @@ -12826,9 +15426,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "articlestack.tk", true }, { "articlesutiles.cf", true }, { "articu.no", true }, - { "articulatedvaluation.com", true }, + { "articulo19.org", true }, { "artifact.center", true }, { "artifact.spb.ru", true }, + { "artifacthub.io", true }, + { "artifex.com", true }, { "artifex21.fr", true }, { "artifexnet.com", true }, { "artifice.tk", true }, @@ -12838,28 +15440,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artificialgrassandlandscaping.com", true }, { "artificialplants.tk", true }, { "artificialpoetry.com", true }, + { "artifort.com", true }, { "artifuse.ch", true }, { "artigianociao.jp", true }, { "artigoagency.com", true }, + { "artikel5ev.de", true }, { "artikel9.com", true }, - { "artinfo.ge", true }, + { "artilect.studio", true }, + { "artinfo.ge", false }, { "artinfo.tk", true }, - { "artintend.com", true }, + { "artintend.com", false }, { "artioml.net", true }, { "artionet.ch", true }, { "artis-game.net", true }, { "artisan-cheminees-poeles-design.fr", false }, { "artisan-emmanuel.fr", true }, + { "artisan-ravalement-facade.fr", true }, { "artisan.tk", true }, + { "artisanat2france.fr", true }, + { "artisanhd.com", true }, + { "artisanofbeauty.com", true }, { "artisanportrait.com", true }, + { "artisansbottega.com.au", true }, { "artisansofstone.com", true }, { "artisansoftaste.com", true }, { "artisavotins.com", true }, + { "artishevski.com", true }, + { "artismist.com", true }, + { "artiso.pl", true }, { "artisreit.com", true }, { "artistagenda.com", true }, { "artistcorporation.com", true }, { "artistedeparis.fr", true }, + { "artistieq.com", true }, { "artistiquementvotre.tk", true }, + { "artistiqueweddingphotography.com.au", true }, { "artistmovieers.ga", true }, { "artistrunwebsite.com", true }, { "artiwear.com.tw", true }, @@ -12876,16 +15491,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artlogo.cz", true }, { "artlogo.sk", true }, { "artmaker.kiev.ua", true }, + { "artmark.ro", true }, { "artmarketingnews.com", true }, { "artmaterials.com.ua", true }, { "artmaxi.eu", true }, - { "arto.bg", true }, - { "artofclouds.ru", true }, + { "artmo.com", true }, + { "arto.group", true }, { "artofcode.co.uk", true }, { "artofeyes.nl", true }, + { "artofgears.com", true }, { "artofhappyliving.com", true }, { "artoflinesmd.ca", true }, { "artofmonitoring.com", false }, + { "artofstonegardening.com", true }, { "artofwhere.com", true }, { "artofzoo.com", true }, { "artomalu.tk", true }, @@ -12893,28 +15511,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artouch.com", true }, { "artozoul.fr", true }, { "artplaneta-leto.by", true }, - { "artprojectsforkids.org", false }, + { "artprojectsforkids.org", true }, + { "artpsd.com", true }, { "artransparency.gov", true }, { "artrapid.com", true }, - { "artratio.net", true }, + { "artratio.co.uk", true }, { "artrofisio.com.br", true }, + { "artroom-design.com", true }, { "artroot.jp", true }, { "artroscopiaperlosport.it", true }, + { "artru.tk", true }, { "arts-polynesiens.com", true }, { "arts.gov", true }, { "artsalon.tk", true }, { "artsandculturessm.ca", true }, { "artsautomotive.com", true }, { "artschmidtoptical.com", true }, + { "artsguide.ca", true }, + { "artslife.com", true }, + { "artsmagazine.com", true }, + { "artsmeet.com", true }, { "artspac.es", false }, { "artspark.tk", true }, { "artstudioweb.tk", true }, { "artsy.cloud", true }, + { "artsygrl.ca", true }, + { "artteacheredu.org", true }, { "arttel-media.ru", true }, { "artucation.eu", true }, { "arturgaweda.de", true }, + { "arturkraak.duckdns.org", true }, { "arturoemilio.tk", true }, - { "arturopinto.com.mx", true }, + { "arturojimenez.es", true }, { "arturrossa.de", true }, { "arturszalak.com", true }, { "arturweb.tk", true }, @@ -12930,11 +15558,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "artwhoredistro.tk", true }, { "artworks.gd", true }, { "artworksthatlookgood.com", false }, - { "artworxbathrooms.com.au", true }, { "arty.name", true }, { "artycoz.fr", true }, { "artyengine.com", true }, { "artyhouse.be", false }, + { "aru.fi", false }, + { "aruanaseguradora.com.br", true }, { "arubasunsetbeach.com", true }, { "arul.io", true }, { "arunchullikkal.tk", true }, @@ -12947,9 +15576,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arvadafireco.gov", true }, { "arveex.eu", true }, { "arveron.ch", false }, + { "arviamedspa.com", true }, { "arviksa.co.uk", true }, { "arvindhariharan.com", true }, { "arvindhariharan.me", true }, + { "arvinovoyage.com", true }, { "arvutiladu.ee", true }, { "arvyncerezo.com", true }, { "arw.me", true }, @@ -12970,26 +15601,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "arytmicznie.pl", true }, { "arz-florian.tk", true }, { "arz-online.ml", true }, - { "arzaval.com", true }, { "arzid.com", true }, { "arzinfo.pw", true }, { "arzmercury.tk", true }, - { "as-aeu-ecp-dev-ecomeeting.azurewebsites.net", true }, + { "arztpraxis-kubalok.de", true }, + { "arzua.gal", true }, { "as-aeu-ecp-qas-ecomeeting.azurewebsites.net", true }, - { "as-kapmea-mark-swissbear.azurewebsites.net", true }, { "as.roma.it", true }, + { "as136964.com", true }, + { "as136964.net", true }, + { "as198768.eu.org", true }, + { "as200351.net", true }, { "as200753.com", true }, { "as200753.net", true }, + { "as202413.net", true }, + { "as203145.com", true }, { "as204982.net", true }, + { "as205794.net", true }, { "as207618.net", true }, + { "as207960.net", true }, { "as211960.net", true }, + { "as212993.net", true }, + { "as400566.com", true }, + { "as400566.net", true }, { "as41073.net", true }, { "as41405.net", true }, - { "as48550.net", true }, - { "as5158.com", true }, { "as6369.com", true }, { "as6369.net", true }, { "as8423.net", true }, + { "asaabforever.com", true }, { "asaacai.com.br", true }, { "asabacortoscaseros.tk", true }, { "asadatec.de", true }, @@ -13010,12 +15650,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asantosdev.com", true }, { "asanuma-clinic.jp", true }, { "asap-advice.com.au", true }, + { "asap-supplies.com", true }, { "asap.gov", true }, { "asapboardshop.com", true }, - { "asapboiler.co.uk", true }, { "asaphomeinspect.com", true }, - { "asapmail.me", true }, { "asapp.com", true }, + { "asapstory.com", true }, { "asara.tk", true }, { "asart.bg", true }, { "asas-tn.org", true }, @@ -13024,74 +15664,92 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asato-jewelry.com", true }, { "asatys-partners.com", true }, { "asb.edu.my", true }, + { "asbaces.com", true }, { "asbestos-awareness.cf", true }, { "asbestos-awareness.ga", true }, { "asbestos-awareness.gq", true }, { "asbestos-awareness.ml", true }, { "asbestosthedarkarts.com", true }, { "asbito.de", true }, + { "asburyparkreporter.com", true }, + { "asbweb.org", true }, + { "asc.es", true }, { "ascamo.tk", true }, - { "ascamso.com", true }, { "ascannes-non-officiel.tk", true }, { "ascar.us", true }, { "ascard.net", true }, { "ascauctions.com", true }, { "ascc.sg", true }, + { "asccontracts.com", true }, + { "ascenderhcm.com", true }, + { "ascendix.com", true }, { "ascension.run", true }, { "ascensiongt.com", true }, { "ascensionnyc.org", true }, { "ascensionparishla.gov", true }, + { "ascensoresdecostarica.com", true }, { "ascensori.biz", true }, - { "ascent360.com", true }, + { "ascentlogistics.com", true }, { "ascgathering.com", true }, { "aschaefer.net", false }, + { "aschc.co.uk", true }, { "aschismatic.com", true }, + { "ascholarship.com", true }, { "aschool.kiev.ua", true }, { "asciitable.tips", true }, + { "ascirno.com", true }, + { "ascl.org.uk", true }, + { "asco.com.mx", false }, { "ascolibasi.tk", true }, { "ascolympia.nl", false }, { "ascom.vi.it", true }, + { "ascon-profi.ru", true }, { "ascormovies.com", true }, - { "ascot.ac.th", true }, { "ascpaphilatelie.eu", true }, { "ascultaonlineradio.ml", true }, { "asd.gov.au", false }, - { "asdainfomanager.co.uk", true }, { "asdchieti.tk", true }, { "asdetrifolium.com", true }, { "asdf.one", true }, + { "asdfqwerty.duckdns.org", true }, { "asdwfwqd.com", true }, { "asdyx.de", true }, - { "aseaction.fr", true }, { "asec01.net", true }, + { "asecla.com", true }, { "asecus.ch", true }, { "asegem.es", true }, + { "aseglobal.com", true }, { "aseith.com", true }, + { "aseityresearch.com", true }, { "aselectionoffice.gov", true }, { "aselo.org", true }, { "asenaru.id", true }, + { "asennemedia.fi", true }, + { "asennestudio.fi", true }, { "asenno.com", true }, { "aseoblog.com", true }, { "aserbx.ga", true }, + { "asersagua.es", true }, + { "aserver.eu", true }, { "asesecours.com", true }, { "asesinosdeltarot.tk", true }, { "asesor.live", true }, { "asesorialigorred.es", true }, - { "asesoriavalledor.es", true }, { "asessiglo21.es", true }, { "asexualitat.cat", true }, { "asfaleianet.gr", true }, + { "asfalteros.cz", true }, { "asfalti.it", true }, { "asg-egy.com", true }, { "asgapps.co.za", true }, { "asgard-engineering.com", true }, - { "asgardiamc.fr", true }, { "asgeirolafs.com", true }, { "asgrep.com", true }, { "ashastalent.com", false }, { "ashburnr.com", true }, { "ashbusters.net", true }, { "ashbyhq.com", true }, + { "ashbymail.com", true }, { "ashbyprd.com", true }, { "ashbystg.com", true }, { "ashd1.goip.de", true }, @@ -13102,27 +15760,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asher.tools", true }, { "asherosborne.com", true }, { "asheroto.com", true }, - { "ashessin.com", true }, + { "ashesi.edu.gh", true }, { "ashevillemenshealth.com", true }, { "ashfak.tk", true }, + { "ashfordcastle.com", true }, { "ashgroveclinic.com.au", true }, + { "ashiba-kagu.com", true }, + { "ashikajewellers.com.au", true }, { "ashimwe.com", true }, + { "ashirwadfinefoods.com", true }, { "ashisharma.tk", true }, + { "ashishchamoli.com", true }, + { "ashlandcountywi.gov", true }, { "ashlee-club.tk", true }, { "ashley.net.in", true }, { "ashleyadum.com", true }, - { "ashleyashbee.com", false }, - { "ashleycumstar.net", true }, { "ashleyfoley.photography", true }, { "ashleykaryl.com", true }, { "ashleymadison.com", true }, { "ashleynicholsboudoir.com", true }, { "ashleythouret.com", true }, - { "ashlocklawgroup.com", true }, + { "ashlingonline.com", true }, + { "ashlynpeakspornstar.com", true }, { "ashmportfolio.com", true }, { "ashotofadrenaline.net", true }, { "ashraful-islam.ml", true }, { "ashridgetrees.co.uk", true }, + { "ashtabulacountyprosecutoroh.gov", true }, { "ashtar.tk", true }, { "ashtech.tk", true }, { "ashtonbromleyceramics.co.uk", true }, @@ -13131,98 +15795,112 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ashtonid.gov", true }, { "ashtonwealth.com", true }, { "ashtronaut.space", true }, + { "ashucg.com", true }, { "ashutoshmishra.org", true }, { "ashutov.rocks", false }, { "ashwainfo.in", true }, { "ashwaubenon.gov", true }, - { "asia-gazette.com", true }, - { "asia-global-risk.com", true }, + { "asia-fhjt.com", true }, + { "asia-fuhui.com", true }, { "asia.dating", true }, - { "asiacommerce.id", true }, + { "asiacan.com", true }, + { "asiaceo.com", true }, { "asiadirect.co.th", true }, - { "asiaflash.com", true }, + { "asiafaninfo.net", true }, { "asiafood-curator.com", true }, { "asiagate.ga", true }, + { "asiagps.com", true }, { "asiahabit.com", true }, { "asiakartu.tk", true }, { "asialeonding.at", true }, { "asialivenewscafe.gq", true }, { "asian-goku.tk", true }, { "asian-industry.eu", true }, + { "asian-sexfree.com", true }, { "asian-sirens.net", true }, - { "asian.school", false }, + { "asianbeautywholesale.com", true }, { "asianbusinesscards.com", true }, + { "asiancolor.com", true }, { "asiandickfor.me", true }, { "asiandubfoundation.tk", true }, { "asianet.tk", true }, + { "asianetbroadband.in", true }, { "asiangroceronline.com.au", true }, { "asianinside.tk", true }, { "asianmoney.biz", true }, - { "asianodor.com", true }, + { "asianpavilion.com", true }, + { "asianray.com", true }, + { "asianshop.com.pe", true }, { "asiansongs.tk", true }, { "asianspa.co.uk", true }, + { "asiantube.tv", true }, { "asianwebcams.webcam", true }, { "asiaproductsdirect.tk", true }, + { "asiaround.com", true }, { "asiasmi.tk", true }, { "asiaticas.cf", true }, { "asiaview.ml", true }, { "asiaview.tk", true }, + { "asiaviews.com", true }, + { "asiayuan.com", true }, { "asiba.com.au", true }, { "asier.tk", true }, { "asifinclusives.tk", true }, { "asikoo.com", true }, { "asikoo.xyz", true }, { "asikpasagazetesi.tk", true }, - { "asikqq.id", true }, { "asile-colis.fr", true }, { "asilo.roma.it", true }, + { "asilomar.com", true }, { "asinat.by", true }, { "asinetasima.com", true }, { "asisee.co.il", true }, { "asistencialegal.tk", true }, + { "asistentecx.com", true }, { "asitanc.com", true }, - { "asitanc.cz", true }, + { "asitanc.cz", false }, { "asitt.nl", true }, { "asiyasia.tk", true }, { "ask-thenutritionist.com", true }, { "ask.fi", true }, { "ask.stg.fedoraproject.org", true }, { "ask1.org", true }, - { "askana.my.id", true }, { "askapkmod.com", true }, { "askaret.cz", true }, + { "askart.com", true }, + { "askartza.com", true }, { "askatrans.tk", true }, { "askcaisse.com", true }, { "askcascade.com", false }, { "askdeliver.tk", true }, { "asker-massasje.no", true }, { "askerweb.cf", true }, - { "askeustache.com", true }, { "askeygeek.com", true }, { "askfree.net", true }, { "askgamblers.com", true }, { "askhow.co.il", true }, + { "askimsin.com", true }, { "askindia.tk", true }, - { "askizzy.org.au", true }, + { "askjan.org", true }, { "askkaren.gov", true }, - { "asklawyersforjustice.com", true }, + { "asklocals.net", true }, + { "asklyrics.com", true }, { "askmagicconch.com", false }, { "askme-events.vip", false }, { "askme-fast.tk", true }, { "askme24.de", true }, { "askmetutoring.com", true }, { "askmetutoring.org", true }, + { "asko-nabytek.cz", true }, + { "asko-nabytok.sk", true }, { "asko.ee", true }, { "askollelectric.bg", true }, { "asktanzania.com", true }, - { "askusutah.com", true }, { "askvg.com", true }, { "askwhy.cz", true }, { "askwhy.eu", true }, { "asla.info", true }, - { "aslamazyan.tk", true }, { "aslanadam.com", true }, - { "aslanpaslanmaz.com", true }, { "aslinfinity.com", true }, { "asm.io", true }, { "asm802.com", true }, @@ -13231,20 +15909,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asmdz.com", true }, { "asmeets.nl", true }, { "asmess.com", true }, + { "asmgroup.rs", true }, { "asmm.cc", false }, { "asmobox.ga", true }, { "asmood.net", true }, + { "asmpt.com", true }, + { "asmr-100.com", true }, + { "asmr-200.com", true }, + { "asmr-300.com", true }, + { "asmr.one", true }, { "asmrbuluo.com", false }, { "asmui.ml", true }, { "asmuncandle.com", true }, - { "asngear.biz", true }, { "asniereslesdijon.fr", true }, + { "aso.com", true }, { "asoagroca.com", true }, { "asoccu.ga", true }, { "asocedune.com", true }, { "asociacionatlas.tk", true }, { "asociaciones.tk", true }, { "asociacionlarueda.tk", true }, + { "asociatiaeuropas.ro", false }, { "asokan.org", true }, { "asonaderi2002.tk", true }, { "asoul.tw", true }, @@ -13255,17 +15940,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aspectcontext.com", true }, { "aspen.gov", true }, { "aspencat.tk", true }, - { "aspengoldgc.com", true }, { "aspenhillsdesign.com", true }, - { "aspenrealestate.com", true }, + { "aspenpsychologywy.com", true }, + { "aspenvocational.com", true }, { "asperatechnology.com", true }, { "asperatechnology.cz", true }, { "asperatechnology.de", true }, + { "aspernallee.at", true }, { "asperti.com", true }, + { "aspews.org", true }, { "asphaltfruehling.de", true }, - { "asphalting.org", true }, { "asphaltsolutionsnc.com", true }, { "asphyxia.su", true }, + { "aspi.cz", true }, { "aspiechattr.me", true }, { "aspietechygamer.tk", true }, { "aspiracloud.com", true }, @@ -13275,13 +15962,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aspirateur-univers.com", true }, { "aspiration.marketing", true }, { "aspire-dev2.com", true }, - { "aspireappliances.ca", true }, { "aspirecig.bg", true }, - { "aspireuniversal.com", true }, { "aspirevc-prod.com", true }, { "aspirevc.com", true }, { "aspisdata.com", true }, + { "aspjvm.com", true }, { "asportnoy.com", true }, + { "aspr.gov", true }, { "asprion.org", true }, { "asprivacy.com", true }, { "asprobet.com", true }, @@ -13296,46 +15983,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asra.gr", true }, { "asral7.com", true }, { "asremanoto.tk", true }, + { "asri.org", true }, { "asriyatno.tk", true }, { "asrob.eu", false }, { "asrtechnology.tk", true }, { "ass.org.au", true }, { "assaabloygaragedoors.ca", true }, + { "assafashowroom.com", true }, + { "assai.com.br", true }, { "assamtenders.gov.in", true }, { "assanti.com", true }, - { "assars.se", true }, { "assassinasian.tk", true }, { "assdecoeur.org", true }, + { "assecuro.com.ua", true }, { "assedo.tk", true }, { "asseenfromthesidecar.org", true }, + { "asseenontvonline.ru", true }, { "assegaimedia.com", true }, { "asselin.fr", true }, { "assemblage.gq", true }, { "assemble-together.org", true }, { "assemblee-copropriete.fr", true }, + { "assemblyai.com", true }, { "assemblywithoutthewalls.org", true }, + { "assendelft.com", true }, + { "assens.dk", true }, + { "assentis.ch", true }, + { "assentis.com", true }, + { "assentis.de", true }, + { "assentis.net", true }, { "assentooriginal.com.br", true }, { "assertion.de", true }, { "assertstack.com", true }, + { "assessmentpractitioner.co.za", true }, { "assessments.careers", true }, { "assessoriati.com.br", true }, { "assessorindie.tk", true }, + { "asset-metrix.com", true }, { "assetbacked.capital", false }, { "asseti.co", true }, - { "assetpanda.com", true }, + { "assetinvesting.com", true }, { "assets.schwarz", true }, { "assetsec.io", true }, { "assetsman-assetsvalue.com", true }, { "assettocorsa.tk", true }, { "assguidesporrentruy.ch", false }, + { "assicurare.it", true }, { "assid.com", true }, { "assignacii.ml", true }, + { "assignmenthelponline.co.uk", true }, + { "assignmenthelpservices.com", true }, + { "assignments4u.com", true }, { "assikerujked.tk", true }, { "assiplan.it", true }, { "assis.partners", true }, { "assist-team.co.il", true }, { "assistance-personnes-agees.ch", true }, - { "assistanteplus.fr", true }, + { "assistanceinparadise.com", true }, + { "assistantdemocraticleader.gov", true }, { "assistel.com", true }, { "assistentesanitario.it", true }, { "assistenzaferrodastiro.org", true }, @@ -13344,22 +16049,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "assistere-a-casa.it", true }, { "assistere-a-domicilio.it", true }, { "assistere-in-famiglia.it", true }, - { "assisteu.eu", true }, + { "assistouest.cloud", true }, + { "assistouest.fr", true }, + { "assistouest.net", true }, { "assmb.ly", true }, + { "assmgp.com", true }, { "asso.com.ua", true }, - { "associate.today", true }, { "associatedgamer.com", true }, { "associationguillaume.com", false }, { "associationhorizon.tk", true }, - { "associazionenazionalectu.it", true }, { "associazionerimborsi.it", true }, + { "associazioneterra.it", true }, + { "assoft.co", true }, { "assomydesk.fr", true }, { "asspoop.com", true }, + { "assr-online.com", true }, { "assta.ga", true }, - { "assumptionpj.org", false }, + { "assumptionla.gov", true }, + { "assumptionoep-la.gov", true }, { "assurance-emprunteur.bzh", true }, + { "assurances-brg.com", true }, { "assured.se", false }, { "assuredspc.com", true }, + { "assyriatwpmi.gov", true }, { "ast-nabytek.cz", true }, { "asta-bar.de", false }, { "astacreative.nl", false }, @@ -13368,6 +16080,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astanainform.tk", true }, { "astanakz.tk", true }, { "astaninki.com", true }, + { "astano.com", true }, { "astano.tk", true }, { "astaoffshore.com.au", true }, { "astaraday.com", true }, @@ -13378,30 +16091,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astarfrommosul.ml", true }, { "astarmathsandphysics.com", true }, { "astateoftrance.tk", true }, - { "astaxanthin.de", true }, - { "astcorporation.com", false }, { "asteelflash.com", true }, + { "astekbet.com", true }, { "astellaria.ee", true }, { "astengox.com", true }, { "astenotarili.online", false }, { "astenretail.com", true }, - { "asteracancercare.org", true }, + { "astera-led.com", true }, + { "astera.com", true }, + { "asterhu.com", true }, { "asterix-obelix.ga", true }, { "asterobot.net", true }, + { "asteronline.com", true }, { "astettner.de", true }, - { "astha.fr", true }, { "asthamishra.com", true }, { "asthma-explained.com", true }, { "asthowen.com", true }, { "asthowen.fr", true }, + { "asthrdp.com", true }, { "astiamministrazioni.it", true }, { "asticon.de", true }, + { "asticonnectedservices.com", true }, { "astifan.online", true }, { "astigmatic.gq", true }, + { "astilleroslagos.es", true }, + { "astleyplumbing.com", true }, + { "astmatiki.ru", true }, + { "astolfo.cool", true }, { "astonishing.tk", true }, { "astormueble.tk", true }, - { "astoure.fr", true }, + { "astorship.com", true }, + { "astour.ee", true }, { "astqx.com", true }, + { "astra.software", true }, { "astraalivankila.net", false }, { "astrakhan-gorod.ga", true }, { "astrakhan.cf", true }, @@ -13410,22 +16132,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astrakhan.ml", true }, { "astrakhan.tk", true }, { "astral-imperium.com", true }, + { "astral-prime.com", true }, { "astral.com.ar", true }, { "astral.gq", true }, { "astral.org.pl", true }, - { "astralgifts.com.au", true }, { "astralrank.com", true }, { "astralriders.tk", true }, + { "astralus.com", true }, + { "astralus.de", true }, { "astramundo.com", true }, { "astrategicedgecoaching.com", true }, { "astrath.net", true }, + { "astrawebhost.com", true }, { "astrea-voetbal-groningen.nl", true }, { "astrid-stolz.de", true }, { "astro-com.co.uk", true }, + { "astro22.com", true }, { "astro4u.tk", true }, { "astroalloys.com.au", false }, { "astrociencia.tk", true }, - { "astrodog.com.au", true }, { "astrogate.tk", true }, { "astrogift.cf", true }, { "astrogift.ga", true }, @@ -13436,13 +16161,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astrojunkies.com", true }, { "astrolab.tk", true }, { "astroloeches.tk", true }, - { "astrologiatarocchi.tk", true }, + { "astrologeminesolakoglu.com", true }, + { "astrologerumesh.com", true }, { "astrologic.cf", true }, + { "astrologics.in", true }, { "astrologie12.tk", true }, + { "astrologify.com", true }, { "astrologjia.com", false }, { "astrology-for-beginners.com", true }, { "astrology42.com", true }, { "astrolojiyorumcusu.com", true }, + { "astroluna.cz", true }, { "astroluxe.io", true }, { "astrong.pl", true }, { "astronomiadecolombia.tk", true }, @@ -13451,43 +16180,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "astronomygcse.cf", true }, { "astropackgulf.com", true }, { "astropar.tk", true }, - { "astrophena.name", true }, { "astroscopy.ch", false }, { "astrosnail.pt.eu.org", true }, { "astrosoc.ml", true }, + { "astrosociety.org", true }, + { "astrosofa.com", true }, { "astrostart.tk", true }, { "astroteam.tk", true }, { "astrovandalistas.cc", true }, - { "astrumadvies.nl", true }, { "astsummer.tk", true }, + { "astucas.com", true }, { "astucedirecte.tk", true }, { "astucewebmaster.com", true }, { "astuna.de", true }, + { "astur.school", true }, { "astural.org", false }, { "asturhackers.es", true }, - { "asturk.org", true }, + { "astutetm.com", true }, { "astutikhonda.com", true }, { "astutr.co", true }, { "astyork.com", true }, { "astypic.fr", true }, + { "asual.com", true }, { "asuamaytinh.com", true }, { "asuclassfinder.com", true }, { "asucrews.com", true }, + { "asufte.com", true }, + { "asugsvsummit.com", true }, { "asuikit.com", true }, { "asukalangley.tk", true }, { "asun.co", true }, { "asuntospropios.com", true }, - { "asur.store", true }, + { "asura.in.th", true }, { "asurbernardo.com", true }, - { "asurepay.cc", false }, { "asurgiant.ca", true }, - { "asus.com", true }, + { "asuro.de", true }, { "asustor.com", true }, { "asustreiber.de", true }, { "asvsa.ch", false }, { "aswakbladi.com", true }, { "asweetsmile.com", true }, + { "aswish.com", true }, { "asws.nl", true }, + { "asyadexpress.com", true }, + { "asyadiziizle.com", true }, { "asyaturk.org", true }, { "asyikbelanja.com", true }, { "asylbarn.no", true }, @@ -13496,9 +16232,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "asynchrono.cf", true }, { "asyotec.es", true }, { "asystent-dzierzawy.pl", true }, + { "asztrologus.eu", true }, { "aszurkolassport.com", true }, { "at-machining.com", true }, - { "at.md", true }, + { "at.govt.nz", true }, { "at.search.yahoo.com", false }, { "at.vg", true }, { "at2-architecten.be", true }, @@ -13511,49 +16248,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atacadocervejeiro.com.br", true }, { "atacadoclube.com.br", true }, { "atacadodesandalias.com.br", true }, + { "ataclogistics.com", true }, { "atacul.ro", true }, { "atafu-village.tk", true }, { "atahualpa.com", true }, - { "atakac.com", true }, - { "atakac.net", true }, + { "atakac.com", false }, + { "atakac.net", false }, { "atalantapsicologia.es", true }, + { "atallo.es", true }, { "atanas.ch", true }, { "atanet.it", true }, + { "atapindonesia.com", true }, { "atarinew.tk", true }, { "atary.tk", true }, { "ataton.ch", false }, { "atayia.com", true }, - { "atbtaxi.com", false }, { "atbwebservices.co.uk", true }, { "atc-fr.com", true }, { "atc.cuneo.it", true }, { "atc.io", false }, { "atcg.cc", true }, + { "atchisonkspolice.gov", true }, { "atchleyjazz.com", true }, { "atchleyjazz.org", true }, { "atchleylab.org", true }, { "atclan.tk", true }, - { "atcom.cl", true }, { "atcreform.gov", true }, { "atcstl.org", true }, { "atcworldaviation.com", true }, { "atds.ch", false }, { "ateamsport.dk", true }, { "atease-salon.jp", true }, + { "ateasesystems.net", true }, { "atebaa.ga", true }, { "atec.pt", true }, { "ateli.com", true }, { "atelier-aleph.fr", true }, { "atelier-coiffure.ch", false }, { "atelier-naruby.cz", true }, + { "atelier-rk.com", true }, { "atelier-viennois-cannes.fr", true }, + { "atelier20.ch", true }, { "atelieraphelion.com", true }, { "atelierbw.com", true }, { "atelierdefrancais.ch", false }, { "atelierdelacreation.com", true }, { "atelierdeloulou.fr", true }, { "atelierdesflammesnoires.fr", true }, - { "atelierdosul.com", true }, { "atelierfantazie.sk", true }, { "atelierferro.be", true }, { "atelierhsn.com", true }, @@ -13561,54 +16302,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atelierkuni.jp", true }, { "atelierlk.art", true }, { "ateliernaruby.cz", true }, + { "ateliernox.com", true }, { "atelierssud.swiss", true }, { "atelierverbeelding.nl", true }, - { "atemon.com", true }, { "atenasconservadora.com.br", true }, { "atencionbimbo.com", false }, - { "atenealaser.com", true }, { "ateneumontbui.tk", true }, { "ateneupalafrugell.tk", true }, { "atenolol25mg.ga", true }, { "atenolol50mg.ga", true }, { "atentadocumbiero.tk", true }, { "aterlectric.com", true }, + { "ateus.net", true }, { "atev.tk", true }, { "atf.gov", true }, { "atfonline.gov", true }, { "atfstudios.tk", true }, + { "atgnet.com", true }, { "atgoetschel.ch", false }, { "atgresultat.com", true }, { "atgseed.co.uk", true }, { "atgseed.uk", true }, + { "atgweb.es", false }, { "ath0.org", false }, + { "atharsale.com", true }, { "atheatac.com", true }, { "atheism.org", true }, - { "atheist-faq.com", true }, { "atheist-refugees.com", true }, + { "atheistfoundation.org.au", true }, { "atheistfrontier.com", true }, { "athekiu.com", true }, { "athelstanewiclerk.gov", true }, { "athemez.com", true }, { "athemis.de", true }, - { "athena-project.eu", true }, { "athena-security.net", true }, { "athenainvestmentsystems.com", true }, { "athenainvsys.com", true }, { "athenainvsys.net", true }, - { "athenasfoodtrucks.com", true }, { "athenaspark.com", true }, { "athenasystems.com", true }, { "athenasystems.net", true }, + { "atheneum-partners.cn", true }, + { "athenrymusicschool.net", true }, { "athensdrunktour.com", true }, + { "athensil.gov", true }, { "athenstn.gov", true }, { "athensvantours.com", true }, { "athensvantours.gr", true }, + { "athensvillageny.gov", true }, + { "athensvintagetours.com", true }, { "athensvt.gov", true }, { "atherosense.ga", true }, + { "athicart.com", true }, + { "athleteunseen.com", true }, + { "athleticstore.bg", true }, { "athlin.de", true }, + { "athome-nextcloud.ddns.net", true }, { "athomedeco.fr", true }, { "athorcis.ovh", true }, + { "athoris.net", true }, { "athritisexplained.com", true }, { "atide.cf", true }, { "atigerseye.com", true }, @@ -13620,17 +16372,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atimo.dj", true }, { "atinylittle.space", true }, { "atis-ars.ru", false }, + { "atis.net", true }, { "atishchenko.com", true }, { "atisoft.biz.tr", true }, { "atisoft.com.tr", true }, { "atisoft.name.tr", true }, { "atisoft.net", true }, { "atisoft.net.tr", true }, - { "atisoft.org", true }, { "atisoft.web.tr", true }, + { "atisoftbarkodetiket.com.tr", true }, { "atisoftseo.com", true }, { "atisoftwebtasarim.com", true }, { "atisoftwebyazilim.com", true }, + { "ativaplayfitness.com.br", true }, { "ativapsicologia.com.br", true }, { "atix.tk", true }, { "atizanvip.com", true }, @@ -13640,21 +16394,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atkinshealthcenter.com.au", true }, { "atkstore.com", true }, { "atl-paas.net", false }, + { "atlacademy.org", true }, { "atlan.digital", true }, - { "atlana.pro", true }, - { "atlantacustomfab.com", false }, + { "atlan.nl", true }, + { "atlantacustomfab.com", true }, { "atlantahealthcare.tk", true }, + { "atlantajewishconnector.com", true }, + { "atlantajewishlifefestival.com", true }, { "atlantareroof.com", true }, + { "atlantatai.org", true }, + { "atlantclinical.com", true }, { "atlantica.tk", true }, { "atlanticbeachacademy.com", true }, { "atlanticcitycasino.news", true }, { "atlanticcitycasinonews.com", true }, + { "atlanticcityweekly.com", true }, { "atlanticdatastream.ca", true }, { "atlanticfcu.com", true }, { "atlantichearingcare.com", true }, { "atlantichomes.com.au", true }, { "atlanticmarina.com", true }, - { "atlanticmenshealth.com", true }, { "atlanticpediatricortho.com", true }, { "atlanticradio.fr", true }, { "atlanticwatches.ch", true }, @@ -13664,41 +16423,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atlantikwall.ga", true }, { "atlantischild.hu", true }, { "atlantishop.si", true }, - { "atlantishq.de", true }, { "atlantismd.com", true }, { "atlantiswaterproofing.com", false }, { "atlantium.tk", true }, + { "atlarytm1x.com", true }, { "atlas-5.site", true }, { "atlas-multimedia.de", true }, { "atlas-sat.tk", true }, { "atlas-staging.ml", true }, + { "atlas.md", true }, + { "atlasams.com", true }, { "atlasauthority.com", true }, + { "atlasbridge.com", true }, { "atlasbrown.com", true }, + { "atlasbus.by", true }, + { "atlasbus.pl", true }, + { "atlasbus.ru", true }, { "atlascloud.cn", true }, { "atlascoffeeclub.com", true }, { "atlascultural.com", true }, + { "atlasdev.io", true }, { "atlasdev.nl", true }, { "atlasdog.org", true }, - { "atlasgaming.ma", true }, + { "atlasescorts.com", true }, + { "atlasgaming.ma", false }, { "atlasleeuwen.tk", true }, { "atlaso.cz", true }, { "atlasone.us", true }, + { "atlasrealestates.com", true }, { "atlasreclame.nl", true }, - { "atlassian.net", false }, + { "atlassen.com", true }, + { "atlassian.net", true }, { "atlassignsandplaques.com", true }, { "atlastax.ga", true }, { "atlastaxi.eu", true }, + { "atlastravelvic.com.au", true }, + { "atlastube.com", true }, { "atlasuno.com", true }, { "atlaswu.com", true }, { "atlcoaters.com", true }, { "atletico-guacuano.tk", true }, { "atletika.hu", true }, { "atletismomacotera.tk", true }, - { "atlseccon.com", true }, + { "atletismosudamericano.org", true }, + { "atlon-nn.ru", false }, { "atm-erasmus.com", true }, { "atm.net", true }, { "atmalta.com", true }, { "atmelook.com", true }, + { "atmetalwork.com", true }, { "atmi-zo.gr", true }, { "atmilanomoda.com", true }, { "atmind.nl", true }, @@ -13708,16 +16481,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atmondigital.com", false }, { "atmos.tk", true }, { "atmosferno.cf", true }, + { "atmospheremarketingwy.com", true }, { "atmox.eu", true }, { "atmoz.tk", true }, { "atmydesk.tech", true }, { "atnis.com", true }, { "atnteam.tk", true }, + { "atobtransfer.com", true }, { "atolm.net", true }, { "atom-china.org", true }, { "atom86.net", true }, { "atombase.org", true }, + { "atomeus.nl", true }, { "atomic-bounce.com", true }, + { "atomic-corals.de", true }, { "atomic.radio", true }, { "atomicanet.tk", true }, { "atomicbounce.co.uk", true }, @@ -13728,8 +16505,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atomictag.com", true }, { "atomik.biz", true }, { "atomism.com", true }, - { "atomsdigital.com", true }, - { "atomtechexport.ru", true }, { "aton-ensemble.tk", true }, { "atonibai.com", true }, { "atope.art", true }, @@ -13737,13 +16512,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atorcidabrasileira.com.br", true }, { "atovelin.gq", true }, { "atovelin.tk", true }, - { "atoz-union.org", true }, { "atozeventrentalsofpa.com", true }, { "atp-autoteile.de", true }, { "atplonline.co", true }, + { "atproducts.xyz", true }, + { "atpx.com", true }, { "atraining.ru", true }, - { "atrakcjenaeventy.com.pl", true }, { "atrands.com", true }, + { "atrasglobal.com", true }, { "atraverscugy.ch", false }, { "atresclick.com", true }, { "atrevillot.com", true }, @@ -13753,23 +16529,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atris-qa.media", true }, { "atris.media", true }, { "atriumschool.gr", true }, + { "atrs2023kobe.com", true }, + { "ats.net", true }, { "atspeeds.com", true }, { "att-lda.pt", true }, { "attac.us", true }, { "attahiyatsaffron.com", true }, - { "attain.com", false }, { "attanasioluigi.tk", true }, { "attatroll.de", true }, + { "attawauganfirect.gov", true }, { "attcleaning.com", true }, { "atte.fi", true }, { "attekaleva.fi", true }, { "attendanceondemand.com", true }, { "attendantdesign.com", true }, + { "attendhealth.com", true }, { "attendu.cz", true }, { "attengo.ga", true }, { "attention.horse", true }, { "attentionpleats.com.tw", true }, + { "attesawp.com", true }, { "atthehelmins.com", true }, + { "attic-design.com", true }, + { "atticlightstudio.net", true }, { "atticusblog.com", true }, { "attilagyorffy.com", true }, { "attilavandervelde.nl", true }, @@ -13780,16 +16562,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "attitudes-bureaux.fr", true }, { "attivazioneveloce.it", true }, { "attlane.fr", true }, + { "attoch.org", true }, { "attogtech.com", true }, { "attorneybiographies.ga", true }, { "attorneybiographiesest.ga", true }, + { "attorneyrebeccawhittington.com", true }, { "attorneystrialgroup.com", true }, { "attosoft.tk", true }, { "attractant.com", true }, { "attractieparken.tk", true }, + { "attsavings.com", true }, + { "atttrainings.com", true }, { "attuned.se", true }, - { "attunedstore.com", true }, { "attwood.org", true }, + { "attyhub.com", true }, + { "atuallemoveis.ind.br", true }, { "atuendomr.com", true }, { "atugan.com", true }, { "atunel.tk", true }, @@ -13798,19 +16585,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "atvsafety.gov", true }, { "atwatermn.gov", true }, { "atwel.de", true }, + { "atwey.fr", true }, + { "atwk.io", true }, { "atwonline.org", true }, + { "atworktechnology.com.au", true }, { "atxchirocoverage.com", true }, - { "atxtraumatherapycenter.com", true }, { "atyourleisureculinary.com", true }, { "atyourprice.net", true }, { "atyourscreen.com", true }, { "atyourscreen.events", true }, { "atypicom.es", true }, - { "atypicom.fr", true }, { "atypicom.it", true }, { "atypicom.pt", true }, { "atyuan.me", true }, { "atyuan.one", true }, + { "atyum.com", true }, { "atzenchefin.de", true }, { "atzeneta.tk", true }, { "atzzz.com", true }, @@ -13821,33 +16610,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "au.zj.cn", true }, { "au2pb.net", true }, { "au2pb.org", true }, + { "aubay.it", true }, + { "aubcon.com", true }, { "aubepine-restaurant.com", true }, { "aubergegilly.ch", false }, { "aubio.org", true }, - { "aubonmanger.fr", false }, { "auburn-housekeeper.com", true }, { "auburnma.gov", true }, - { "auburnperio.com", true }, + { "auburnmi.gov", true }, + { "auburnpub.com", true }, { "auc.ch", true }, { "aucarresainteloi.com", true }, { "aucc.org.nz", true }, + { "aucem.com", true }, { "aucielrose.com", true }, { "auckland-lawyer.co.nz", true }, { "auckland-painter.co.nz", true }, { "aucklandcastles.co.uk", true }, + { "aucoindubloc.com", true }, + { "auction.com", true }, { "auctionbv.tk", true }, - { "aucubin.de", false }, - { "audaces.com", true }, + { "audatopaz.com", true }, { "aude-mdb-hypnose.fr", true }, + { "audencia.com", true }, { "audian.com", true }, { "audiclubbahrain.com", true }, - { "audiense.com", false }, + { "audiense.com", true }, + { "audifs.com", true }, { "audilio.it", true }, - { "audio-detector.com", true }, - { "audioaudit.io", true }, + { "audio-extractor.net", true }, + { "audio-joiner.com", true }, + { "audio.servemp3.com", true }, { "audiobit.es", true }, { "audioblackmagic.com", true }, - { "audiobookboo.com", true }, + { "audiobone.com", true }, { "audiobookstudio.com", true }, { "audioboom.com", true }, { "audioboomers.ga", true }, @@ -13858,10 +16654,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "audiohub.com", true }, { "audiohub.de", true }, { "audiohub.fr", true }, + { "audiokinetic.com", true }, + { "audiokomis.pl", true }, { "audiolibri.org", true }, { "audiologiasinfronteras.com", true }, { "audiologistdirectory.com", true }, - { "audiolokah.tk", true }, { "audiolot.com", true }, { "audiomedica.com", true }, { "audiomind.tk", true }, @@ -13870,12 +16667,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "audionamix.com", true }, { "audionpack.de", true }, { "audioonly.stream", true }, - { "audiophix.com", true }, + { "audioplugin.deals", true }, { "audiorental.net", true }, { "audios.tk", true }, { "audioscenic.co.uk", true }, { "audioscenic.uk", true }, { "audioschoolonline.com", true }, + { "audiosciencereview.com", true }, { "audioslave.tk", true }, { "audiotrace.tk", true }, { "audiovegas.com", true }, @@ -13883,37 +16681,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "audiovoodoo.pl", true }, { "audirsq3.de", true }, { "audisto.com", true }, + { "audit.one", true }, { "audit.ovh", true }, { "auditingfirm.tk", true }, { "audition-radio.tk", true }, { "auditiontapes.co.uk", true }, { "auditmatrix.com", true }, { "auditore-host.tk", true }, + { "auditorwashingtoncountyohio.gov", true }, { "auditos.com", true }, - { "auditpartnership.com", true }, { "auditsquare.com", true }, { "audleyconstruction.tk", true }, - { "audrak.com", true }, { "audreyhossepian.fr", false }, { "audreyjudson.com", true }, { "auenhof-agrar.de", true }, { "auerbach-verlag.de", true }, { "auf-feindgebiet.de", true }, - { "auf-nach-mallorca.info", true }, + { "aufeerjob.cz", true }, { "aufildemesidees.fr", true }, { "aufmerksamkeitsstudie.com", true }, { "aufprise.de", true }, + { "aufschieben.com", true }, + { "aufwachzeit.at", true }, + { "aufwachzeit.com", true }, { "aufwecken.dynu.net", true }, - { "augehost.com", true }, + { "augehost.com", false }, { "augendre.info", true }, + { "augenklappe.com", true }, { "augenlaser-chemnitz.de", true }, { "augenlaser-dresden.de", true }, { "augenlasercenter-dresden.de", true }, { "augenlaserzentrum-dresden.com", true }, { "augenlaserzentrum-dresden.de", true }, { "augenlaserzentrum-dresden.eu", true }, + { "augeo.pt", true }, { "augesen.tk", true }, { "augix.net", true }, + { "augmedia.com", true }, { "augmedix.com", true }, { "augmentable.de", false }, { "augmentin.ga", true }, @@ -13922,8 +16726,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "augredutemps.ca", true }, { "augur.us", true }, { "auguri-shop.ro", true }, - { "august-don.site", true }, { "august-hoegn.tk", true }, + { "august.me", true }, + { "august.tw", true }, + { "augusta-apotheke.nrw", true }, { "augustanews.tk", true }, { "augustian-life.cz", true }, { "augustiner-kantorei-erfurt.de", true }, @@ -13935,22 +16741,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aukcioon-domenov.gq", true }, { "aukcioon-domenov.ml", true }, { "aukhygiene.com", true }, + { "auksi.co.id", true }, { "auksnest.ca", true }, { "aulacaribemar.com", true }, { "auladerepaso.com", false }, { "aulaschrank.gq", true }, { "aulasprofdanilo.com.br", true }, { "aulialaundry.cf", true }, + { "aulica-conseil.com", true }, { "aultcolorado.gov", true }, + { "aum.edu.kw", true }, + { "aumigona.com", true }, { "aumilieudumonde.gf", true }, - { "aumisc.com", true }, + { "aunali1.com", true }, { "auntiesnorkel.com", true }, { "auntmia.com", true }, { "aunto.xyz", true }, - { "auntodev.com", true }, + { "aupadenis.com", true }, + { "aupair.com", true }, { "aupapa.com", true }, { "aupaysdesanes.com", true }, { "auplidespages.fr", true }, + { "auqi.com", true }, { "aur.rocks", true }, { "aura.moe", true }, { "aura7chakr.com", true }, @@ -13964,16 +16776,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auralinna.blog", true }, { "aurantis.it", true }, { "aurbrowser.tk", true }, - { "aurea.bg", true }, + { "aurelharmoniebeaute.fr", true }, { "aureliavelvet.org", true }, { "aurelie-valognes.com", true }, { "aurelieburn.fr", true }, { "aureliecharlesguillot.com", true }, { "aurelien-duchene.fr", true }, - { "aurelien-pratviel.fr", true }, { "aurelienaltarriba.fr", true }, { "aurelvoica.ro", true }, { "aureshotels.com", true }, + { "auribus.io", true }, { "auricblue.com", true }, { "auricom.tk", true }, { "auriga.com", true }, @@ -13982,24 +16794,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auristelasaavedra.tk", true }, { "aurnik.com", true }, { "aurobindodash.tk", true }, + { "auronfencing.com.au", true }, { "aurora.net.au", false }, { "aurora403.com", true }, { "aurora911.net", true }, - { "aurorak12.org", true }, + { "auroracloud.com.au", true }, { "auroramarionvillepd-mo.gov", true }, { "auroranianoxx.net", true }, { "auroraofficefurniture.com.au", true }, - { "auroraoss.com", true }, { "aurorarecordings.com", true }, - { "aurorasa-coaching.com", true }, - { "aurorasa.com", true }, { "auroravtc.com", true }, + { "auroz.video", true }, { "aurtho.com", true }, - { "aurumautomaton.com", true }, { "aurumkoins.tk", true }, { "ausat.net", true }, { "ausbildung-rbg.de", true }, + { "ausbildungsmesse-digital.de", true }, + { "ausbrightfacilities.com.au", true }, { "auscanalliancecorp.com", true }, + { "auscert.org.au", true }, { "auscube.tk", true }, { "auscultador.com", true }, { "auscultador.net", true }, @@ -14008,27 +16821,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auscultadores.org", true }, { "ausec.ch", false }, { "auservicedeschiens.com", true }, + { "ausfin.com", true }, { "ausfinex.com", true }, + { "ausgesprochen.com", true }, + { "ausielogistics.com.au", true }, { "auskast.com", true }, { "auskate.tk", true }, { "auskunftsbegehren.at", true }, { "ausmwoid.de", true }, { "ausncp.gov.au", true }, { "auspicacious.org", true }, + { "ausruestungen.com", true }, + { "aussagen.com", true }, { "ausschreibungen-suedtirol.it", true }, { "ausset.me", true }, + { "aussiebum.com", true }, { "aussiecamping.com.au", true }, - { "aussiecampingstore.com", true }, { "aussiefinances.com.au", true }, { "aussiefunadvisor.com", false }, - { "aussiegemdesigns.com.au", true }, + { "aussiemilfs.com", true }, { "aussieofficefitout.com.au", true }, { "aussieofficefurniture.com", true }, - { "aussieparrotlets.com.au", true }, - { "aussiepie.es", true }, { "aussieservicedown.com", true }, { "aussiesmostlifted.com.au", true }, + { "aussiesnus.com", true }, { "aussiestoresonline.com", false }, + { "austcm.com.au", true }, { "austenplumbing.com", true }, { "austercita.tk", true }, { "austin-pearce.com", true }, @@ -14036,14 +16854,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "austinbestdjs.com", true }, { "austincardiac.com", true }, { "austinchase.com", true }, + { "austincosmetic.com", true }, { "austinhartzheim.me", true }, - { "austinheap.com", false }, { "austinlaw.co.uk", true }, { "austinonline.tk", true }, + { "austinoverheaddoorcompany.com", true }, { "austinsutphin.com", true }, - { "austintxacrepairtoday.com", true }, { "austinuniversityhouse.com", true }, + { "australiabusinessblog.com", true }, { "australiadaily.ga", true }, + { "australiainvest.info", true }, { "australiajetcharter.com", true }, { "australian.dating", true }, { "australian.tk", true }, @@ -14052,9 +16872,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "australianallnaturalskincare.com.au", true }, { "australianattractions.com.au", true }, { "australiancattle.dog", true }, + { "australiancurriculum.edu.au", true }, { "australianhimalayanfoundation.org.au", true }, { "australianhomemade.com", true }, { "australianimmigrationadvisors.com.au", true }, + { "australianjewishnews.com", true }, { "australianonlineappliances.ga", true }, { "australianpropertyanalytics.ga", true }, { "australiantemporarytattoos.com", true }, @@ -14069,8 +16891,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auszeit-lanzarote.com", true }, { "auszeit-walsrode.de", true }, { "auszeit.bio", true }, - { "autc.org.nz", true }, - { "autek.com.br", true }, + { "autantic.fr", true }, { "auteldesbrumes.com", true }, { "autenticismo.tk", true }, { "autenticoperfumes.com.br", true }, @@ -14078,18 +16899,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auth.adult", true }, { "auth.mail.ru", true }, { "authanet.ga", true }, - { "authbagstore.com", true }, { "authcom.ca", true }, + { "authcom.com", true }, + { "authenteak.com", true }, { "authenticate.be", true }, { "authenticate.computer", true }, + { "authentication.directory", true }, { "authentick.cloud", true }, { "authentick.online", true }, { "authentick.systems", true }, - { "authentictrucks.com.br", true }, - { "authenticwoodcraft.com", true }, + { "authic.io", true }, { "authinfo-bestellen.de", true }, { "authinity.com", false }, { "authland.com", true }, + { "author-it.com", true }, + { "author.cn", true }, { "author24.biz", true }, { "author24.info", true }, { "authorise.computer", true }, @@ -14097,21 +16921,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "authoritysolutions.com", true }, { "authorize.computer", true }, { "authorize.network", true }, + { "authorwise.com", true }, { "authress.io", true }, - { "authshoesstore.com", true }, { "authsrv.nl.eu.org", true }, { "autism-explained.com", true }, + { "autisme-france.fr", true }, { "autismewoerden.nl", true }, + { "autista.roma.it", true }, { "autisten.club", true }, { "autistici.org", true }, + { "auto-albrecht.de", true }, { "auto-anleitung.de", true }, { "auto-arsenal.tk", true }, { "auto-borse.tk", true }, { "auto-dealership-news.com", true }, + { "auto-delchev.com", true }, { "auto-ecole-remparts.fr", true }, { "auto-help.tk", true }, + { "auto-i-dat.ch", true }, { "auto-market.tk", true }, - { "auto-motor-i-sport.pl", true }, { "auto-none.com", true }, { "auto-parts-store.tk", true }, { "auto-plus.tn", true }, @@ -14121,13 +16949,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "auto-reklame.tk", true }, { "auto-res.ru", true }, { "auto-skills.ru", true }, + { "auto-wimar.pl", true }, { "auto1.fi", true }, { "auto10dacte.com", true }, { "auto2019.net", true }, { "auto365haiphong.com", true }, { "autoaccident.com", true }, + { "autoambulanza.it", true }, { "autoamor.com.br", true }, { "autoangels.ga", true }, + { "autoankaufen.com", true }, + { "autoapk.com", true }, + { "autoauctionsarizona.com", true }, { "autoauctionsohio.com", true }, { "autoauctionsvirginia.com", true }, { "autoaudio.pt", false }, @@ -14136,26 +16969,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autobedrijfgarant.nl", true }, { "autobella-hurtownia.pl", true }, { "autobelle.it", true }, + { "autobelt.com", true }, { "autobidbroker.com", true }, { "autobiz.tk", true }, { "autoblogs.ml", true }, - { "autoblok.com.ua", true }, { "autobot.com.ua", true }, { "autobourcier.com", true }, { "autobraga.ru", true }, + { "autobus.roma.it", true }, { "autobuseros4ever.tk", true }, { "autobusesonline.tk", true }, { "autobusiness.ml", true }, - { "autobutter.com", true }, { "autocadperfmon.azurewebsites.net", true }, + { "autocaption.org", true }, + { "autocardesign.org", true }, { "autocartruck.com", true }, { "autocashmachine.tk", true }, { "autocenters.ca", true }, + { "autocheck.co.nz", true }, { "autocirkel.tk", true }, { "autoclassics.com", true }, { "autocmall.com", true }, + { "autocoder.chat", true }, { "autoconcept.ga", true }, { "autoconcept.tk", true }, + { "autocont.cz", true }, { "autocorner.com", true }, { "autocross.tk", true }, { "autocrossfoto.tk", true }, @@ -14164,6 +17002,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autocrossteam-monein.tk", true }, { "autocrossteam.tk", true }, { "autocrypt.org", true }, + { "autodach.com", true }, + { "autodalas.com", true }, + { "autodeal.com.ph", true }, + { "autodekor.com", true }, { "autodemolizioni.roma.it", true }, { "autodidactic.ai", true }, { "autodidacticstudios.com", true }, @@ -14173,11 +17015,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autodocument.tk", true }, { "autodynamics.tk", true }, { "autoecoledumontblanc.com", true }, - { "autoedumator.com", true }, { "autoeet.cz", true }, { "autoelettricaperbambini.com", true }, { "autoentrepreneurinfo.com", true }, { "autoepc.ro", true }, + { "autoescolapontual.com.br", true }, + { "autoeshop.eu", true }, { "autoexprez.com", true }, { "autofficina.roma.it", true }, { "autofinancing.ga", true }, @@ -14185,9 +17028,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autofresh.tk", true }, { "autogarag.ru", true }, { "autogear.ga", true }, + { "autoglascenter.com", true }, { "autoglass.com.my", true }, + { "autohaus-brueggemann.de", true }, { "autohausmf-nord.de", true }, { "autohaussued.de", true }, + { "autohaussued.gmbh", true }, { "autohero.com.au", true }, { "autohit.ro", true }, { "autohomehub.com", true }, @@ -14195,12 +17041,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autohut.ca", true }, { "autohuttruckcenter.ca", true }, { "autoi.ch", true }, + { "autoidc.com", true }, { "autoinfa.tk", true }, { "autoinkoop.tk", true }, { "autoinsurancehavasu.com", true }, { "autojur.com.br", true }, { "autokasko.tk", true }, - { "autokeyreplacementsanantonio.com", true }, { "autokino-sachsen.de", true }, { "autoklub.cz", true }, { "autoknife.cf", true }, @@ -14213,25 +17059,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autoleaders.gr", true }, { "autoledky.sk", true }, { "autolet.tk", true }, - { "autolib.ru", true }, { "autologix.io", true }, { "automaatic.com", true }, { "automacity.com", true }, + { "automacro.com", true }, { "automagischeberegening.nl", true }, { "automasrl.it", true }, + { "automastercastlerock.com", true }, + { "automatentest.de", true }, + { "automaticmsp.com", true }, + { "automation-tools.stream", true }, { "automationpro.me", true }, { "automationstore.ga", true }, { "automatyczna-identyfikacja.pl", true }, + { "automechanicschooledu.org", true }, + { "automeeting.com", true }, { "automekano.com", false }, { "automekbromma.se", true }, { "automiata.de", true }, { "automir.online", true }, { "automobile-detail.com", true }, { "automobile-gadgets.ru", true }, + { "automobile-propre.com", true }, { "automobileescrowers.ga", true }, { "automobileescrowest.ga", true }, { "automobiliteit.nl", true }, - { "automodulegods.com", false }, + { "automods.com.au", true }, + { "automodulegods.com", true }, { "automotive.org.ua", true }, { "automotiveabundant.ga", true }, { "automotiveadaptive.ga", true }, @@ -14373,7 +17227,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "automotiveturbo.ga", true }, { "automotiveuk.tk", true }, { "automotiveultra.ga", true }, - { "automotiveunlimited.net", true }, { "automotiveurban.ga", true }, { "automotivevariety.ga", true }, { "automotivevector.ga", true }, @@ -14384,33 +17237,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "automotiveyankee.ga", true }, { "automoto-tom.net", true }, { "automuovifix.fi", true }, + { "automuse.com", true }, { "autonewsreview.com", true }, { "autonewssite.com", true }, { "autonoleggio.milano.it", true }, { "autonome-treinen.tk", true }, - { "autonomic.com", true }, - { "autoosijek.com", true }, + { "autoofficina.it", true }, + { "autopacking.com", true }, { "autopapo.com.br", true }, { "autopark-ost-fichtner.de", true }, { "autoparts-for-foreigncars.tk", true }, + { "autoparts-russia.ru", true }, { "autoparts.im", true }, { "autoparts.sh", true }, { "autoparts.wf", true }, { "autopartso.com", true }, + { "autopartsprime.com", true }, { "autopaulito.pt", true }, + { "autopilotapp.com", true }, + { "autopistadelitata.cl", true }, { "autopocket.co", true }, + { "autopod.com", true }, + { "autoporn.com", true }, { "autoportal.tk", true }, { "autopril.com", true }, { "autoprogconsortium.ga", true }, - { "autoproshouston.com", true }, + { "autopsy.com", true }, { "autopsyhouston.com", true }, + { "autorabit.com", true }, { "autorai.nl", true }, { "autorama.cf", true }, { "autorecoveryandtowing.com", true }, { "autorefuellings.com", true }, { "autorefuellings.ru", true }, { "autoreinigung-noack.de", true }, - { "autorepairseattle.com", true }, { "autorepguide.com", true }, { "autorepmans.com", true }, { "autoresponderilimitado.tk", true }, @@ -14418,7 +17278,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autorijschooldehaas.nl", true }, { "autorijschooljohanbos.nl", true }, { "autorijschoolrichardschut.nl", true }, + { "autorisweb.com", true }, { "autos-mertens.com", true }, + { "autos-motos.fr", true }, { "autosalesmachine.net", true }, { "autosalone.roma.it", true }, { "autosbodyest.ga", true }, @@ -14435,7 +17297,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autoshopsolutions.com", false }, { "autosiero.nl", true }, { "autoskolaplzen.cz", true }, - { "autosneed.com", false }, + { "autosneed.com", true }, + { "autosoftdms.com", true }, { "autosolution.tk", true }, { "autosprint.tk", true }, { "autospurghi.milano.it", true }, @@ -14452,6 +17315,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autostramites.com", true }, { "autostramites.com.ar", true }, { "autosupirkimas.tk", true }, + { "autosysiniestros.com", true }, { "autosystem.co.uk", true }, { "autoteched.com", true }, { "autoteplo.org", true }, @@ -14461,11 +17325,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autoto.hr", true }, { "autotonic.tk", true }, { "autotrac.com.br", true }, - { "autotradedubai.com", true }, { "autotransportquoteservices.com", true }, { "autotras.com", true }, { "autotriumph.ru", true }, - { "autotyreprest.ro", true }, { "autouncle.at", true }, { "autouncle.co.uk", true }, { "autouncle.com", true }, @@ -14478,6 +17340,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autouncle.pt", true }, { "autouncle.ro", true }, { "autouncle.se", true }, + { "autousados.net", true }, { "autoverhuur-tilburg.nl", false }, { "autovesti.cf", true }, { "autovesti.tk", true }, @@ -14495,31 +17358,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "autozen.com.co", true }, { "autozuki.com", true }, { "autres-talents.fr", true }, - { "autshir.com", true }, + { "autumnfallspornstar.com", true }, { "autumnhungary.tk", true }, + { "autumnmanor.com", true }, { "auturoa.nz", true }, { "autya.ga", true }, + { "auverdrift.ovh", true }, { "auvernet.org", true }, + { "auversum.com", true }, { "auvicom.nl", true }, { "auvidos.ru", true }, { "auviewpoint.tk", true }, { "aux-arts-de-la-table.com", true }, + { "aux-bonnes-affaires-by-alf.fr", true }, { "aux-scape.tk", true }, { "auxbrinstresses.fr", true }, { "auxessenceselfiques.fr", true }, { "auxiliame.com", true }, - { "auxille.com", true }, + { "auxilius.be", true }, + { "auxmode.com", true }, + { "auxomedical.com", true }, { "av-dnepr.com.ua", true }, { "av-th.net", true }, - { "av-yummy.com", false }, + { "av-yummy.com", true }, { "av01.tv", true }, { "av0ndale.de", true }, { "av163.cc", true }, { "ava-creative.de", false }, { "ava-sky.ga", true }, { "ava-software.at", true }, - { "ava.exposed", true }, { "ava360.com", true }, + { "avaaddamspornstar.com", true }, { "avaamo.com", true }, { "avaaz.org", true }, { "avacariu.me", true }, @@ -14530,108 +17399,81 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avaeon.com", true }, { "avagroup.ga", true }, { "avai.la", true }, - { "available.com", true }, { "available.direct", true }, { "availablecastles.com", true }, { "availablereportsest.ga", true }, { "avakore.com", false }, { "avalancha.tk", true }, { "avaland.tk", true }, + { "avalaunchmedia.com", true }, { "avalon-ami.tk", true }, { "avalon-rpg.com", true }, { "avalon-studios.de", true }, - { "avalonaardoom.nl", true }, + { "avalonaccess.com", true }, + { "avalonartstudio.com", true }, { "avalonbelltown.com", false }, { "avalondevelopment.tk", true }, { "avalontechsv.com", true }, { "avalyuan.com", true }, { "avamax.cz", true }, - { "avamax.eu", true }, + { "avaminoo.com", true }, { "avamix.com", true }, { "avanad.biz", true }, { "avanad.com", true }, - { "avanad.net", true }, - { "avanad.org", true }, { "avanade-consulting.com", true }, - { "avanade-jobs.com", true }, - { "avanade.at", true }, - { "avanade.be", true }, { "avanade.biz", true }, { "avanade.ca", true }, - { "avanade.ch", true }, { "avanade.cm", true }, - { "avanade.cn", true }, { "avanade.co.in", true }, - { "avanade.co.jp", true }, - { "avanade.co.uk", true }, - { "avanade.co.za", true }, - { "avanade.com.au", true }, { "avanade.com.br", true }, { "avanade.com.es", true }, - { "avanade.com.my", true }, - { "avanade.com.ph", true }, { "avanade.com.sg", true }, { "avanade.consulting", true }, - { "avanade.de", true }, - { "avanade.dk", true }, - { "avanade.es", true }, - { "avanade.fi", true }, - { "avanade.fr", true }, - { "avanade.ie", true }, { "avanade.in", true }, { "avanade.info", true }, - { "avanade.it", true }, { "avanade.jobs", true }, - { "avanade.my", true }, { "avanade.name", true }, { "avanade.net", true }, - { "avanade.nl", true }, - { "avanade.no", true }, { "avanade.org", true }, - { "avanade.pt", true }, - { "avanade.se", true }, - { "avanade.sg", true }, - { "avanade.us", true }, - { "avanadealumni.com", true }, { "avanadeblog.com", true }, { "avanadeconsulting.com", true }, - { "avanadeinsights.com", true }, - { "avanadejobs.com", true }, - { "avanadejobs.net", true }, { "avanadeonline.com", true }, { "avancen.com", true }, + { "avangard-bg.com", true }, { "avangard-tovar.tk", true }, { "avangard.tk", true }, + { "avangardmobile.ru", true }, { "avanguardia.tk", true }, { "avangvpn.ga", true }, { "avanovum.de", true }, - { "avanpatel.com", true }, - { "avanpost.co", true }, - { "avanta.co", true }, + { "avantagetaxi.ru", true }, { "avantcoequipment.com", true }, { "avantcoice.com", true }, { "avantcorefrigeration.com", true }, - { "avantech.it", true }, { "avanteinversiones.es", true }, + { "avantikachair.com", true }, { "avantitualatin.com", true }, - { "avanzbanc.com", true }, + { "avanza.ps", true }, + { "avanzagrupo.com", true }, { "avaralar.tk", true }, { "avarcom.tk", true }, + { "avarie.ru", true }, { "avariya.tk", true }, { "avarom.ir", true }, { "avarty.com", true }, { "avastantivirus.ro", true }, { "avasu.com", true }, - { "avatardiffusion.com", true }, { "avatarka.tk", true }, - { "avatype.ir", true }, { "avaxprices.com", true }, { "avay.vn", true }, { "avcafe.ru", false }, + { "avcd.cz", true }, + { "avcipets.com", true }, { "avclub.com", true }, { "avdagic.net", true }, - { "avdh.top", false }, + { "avday.tv", true }, { "ave.zone", true }, + { "aveamcorp.com", true }, { "aveapps.com", false }, { "aveclunettesoleil.fr", true }, { "avedesk.org", false }, @@ -14639,34 +17481,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avelengo.org", true }, { "avelinodiaz.gal", true }, { "avellinotoday.it", true }, + { "aveloair.com", true }, { "avelon.cloud", true }, { "avelux.ru", true }, { "avenad.com", true }, { "avenad.net", true }, - { "avenad.org", true }, { "avenade.com", true }, { "avenade.net", true }, - { "avenade.nl", true }, { "avenade.org", true }, - { "avenge.pet", true }, - { "avengepet.com", true }, + { "avengehub.com", true }, { "avengersonline.ml", true }, { "avengersonlinemovie.ga", true }, - { "aventuranursery.com", true }, - { "aventurasnorowa.com", false }, + { "avenir-now.at", true }, + { "avenir-now.ch", true }, + { "avenir-now.com", true }, + { "avenir-now.de", true }, + { "avensure.com", true }, + { "aventure-chasse-peche.com", true }, + { "avenue5.com", true }, { "avenuedesbebes.com", true }, { "avepoint.com", true }, { "avepol.cz", true }, { "avepol.eu", true }, { "averageinspired.com", true }, - { "averbuch.net", true }, { "averen.co.uk", true }, + { "averin.pro", true }, { "avernis.de", true }, { "avertoni.ru", true }, { "avery.com", true }, + { "aves.asso.fr", true }, { "avestagames.tk", true }, { "avevad.com", true }, { "avexon.com", true }, + { "avexongroup.com", true }, + { "avexonsecurity.com", true }, { "avg.club", true }, { "avg7.de", true }, { "avgindiantech.com", true }, @@ -14676,7 +17524,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avia-krasnoyarsk.ru", false }, { "avia-ufa.ru", false }, { "aviabilet.tk", true }, - { "aviacao.pt", false }, + { "avianbrands.com", true }, + { "aviandirectory.uk", true }, + { "avianotravel.com", true }, { "aviaphoto.tk", true }, { "aviapic.com", true }, { "aviapic.eu", true }, @@ -14687,6 +17537,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aviareis.tk", true }, { "aviasales.gq", true }, { "aviasalon.spb.ru", true }, + { "aviasg.com", true }, { "aviaskan.ru", true }, { "aviationcareerpal.com", true }, { "aviationmilitaire.tk", true }, @@ -14701,18 +17552,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avidmode-dev.com", true }, { "avidmode-staging.com", true }, { "avidmode.com", true }, - { "avidthink.com", false }, { "avie.de", true }, + { "avilas-style.com", true }, { "avilauto.com.es", true }, { "avilauto.net", true }, { "avincouture.de", true }, { "avinguard.com", true }, { "avinilo.com", true }, - { "avinserver.com", true }, { "avintivmedia.com", true }, + { "aviodrome.nl", true }, { "aviokarte.rs", true }, { "avionicbooks.tk", true }, { "avions.ga", true }, + { "aviprime.by", true }, + { "aviraantivirusreviews.com", true }, { "aviruptribedi.com", true }, { "avisbabes.com", true }, { "avishanx.com", true }, @@ -14720,18 +17573,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avisofi-credit-immobilier.fr", true }, { "avisoshuaraz.tk", true }, { "avisoversigten.dk", true }, + { "avispl.com", true }, { "avitahealth.org", true }, { "avitus.hu", true }, { "aviv-group.at", true }, - { "aviweisfogel.co", true }, + { "avivanuestroscorazones.com", true }, + { "avivaplasticsurgery.com", true }, { "aviweisfogelinfo.org", true }, - { "avizeci.tk", true }, { "avlasov.tk", true }, { "avlhostel.com", true }, + { "avlover.com", true }, { "avm-multimedia.com", true }, { "avm99963.com", true }, { "avmemo.com", true }, - { "avmrc.nl", true }, { "avmtn.net", true }, { "avmup.com", true }, { "avn-buses.tk", true }, @@ -14742,8 +17596,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avocad.studio", true }, { "avocadooo.stream", true }, { "avocadopress.ru", false }, + { "avocalpo.com.au", true }, { "avocat-alina-szilaghi.ro", true }, + { "avocat-bourgogne.fr", true }, { "avocat-divort-constanta.ro", true }, + { "avocat-droit-du-travail.org", true }, + { "avocat-karsenti.fr", true }, { "avocatcivil.net", true }, { "avocatpenal.net", true }, { "avocatro.net", true }, @@ -14754,7 +17612,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avogel.ch", true }, { "avogel.co.uk", true }, { "avogel.de", true }, - { "avogel.es", true }, { "avogel.gr", true }, { "avogel.ie", true }, { "avogel.nl", true }, @@ -14763,25 +17620,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avogelusa.com", true }, { "avoids-troops.gq", true }, { "avoinna24.fi", true }, - { "avoka.do", true }, { "avondaleestatesga.gov", true }, { "avonindiana.gov", true }, { "avonlearningcampus.com", true }, { "avonture.be", true }, { "avontuurlijk-natuurlijk.be", true }, { "avonvets.co.uk", true }, + { "avonwithedda.ca", true }, { "avoonix.com", true }, - { "avova.de", true }, + { "avounossoupes.be", true }, { "avp-emobility.de", true }, { "avpres.net", false }, { "avptp.org", true }, - { "avqueen.cn", true }, + { "avqueen.cn", false }, { "avrilhouse.tk", true }, { "avrilshine.tk", true }, + { "avris.it", true }, { "avrora-nov.ru", true }, { "avroramine.tk", true }, - { "avrupaotobusu.com", true }, - { "avsfinancialservices.com", true }, { "avspot.net", true }, { "avstack.io", true }, { "avt-ukraine.com", true }, @@ -14792,8 +17648,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avto-signal.ga", true }, { "avto-signal.gq", true }, { "avto-signal.ml", true }, - { "avto-skupka-dorogo.ru", true }, - { "avtobania.pro", true }, { "avtochip.tk", true }, { "avtodoki.tk", true }, { "avtodot.tk", true }, @@ -14805,7 +17659,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avtomaniya.tk", true }, { "avtomarket.ru", true }, { "avtoobzor.tk", true }, - { "avtorlab.ru", true }, + { "avtoritet78.ru", true }, + { "avtorspb.ru", true }, + { "avtoshini.md", true }, { "avtostolica.tk", true }, { "avtoucheba.tk", true }, { "avtours.gr", true }, @@ -14817,23 +17673,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "avtoyurist.gq", true }, { "avtoyurist.ml", true }, { "avtoyurist.tk", true }, - { "avtransformation.com", true }, { "avus-automobile.com", true }, { "avv.li", true }, { "avvaterra.ch", true }, - { "avvcorda.com", false }, { "avvocato.bologna.it", true }, + { "avvoka.com", true }, { "avweb.tk", true }, { "aw.gov.pl", true }, { "aw.net", true }, - { "awaan.ae", true }, + { "awac.com", true }, + { "awakenaija.com", true }, { "awakengr.com", false }, { "awakening-guild.com", true }, + { "awakenplace.tk", true }, + { "awakenplace.top", true }, { "awakenwow.ga", true }, { "awakinn.co.in", true }, { "awangardaszkola.pl", true }, { "awanteverde.tk", true }, { "award.ga", true }, + { "aware.org.sg", false }, + { "awaremi-tai.com", true }, { "awarenessadvisor.ga", true }, { "awarenessadvisorest.ga", true }, { "awaresec.com", true }, @@ -14841,6 +17701,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "awarify.io", true }, { "awarify.me", true }, { "awarity.be", true }, + { "awarner.co.uk", true }, { "awaro.net", true }, { "awaua.nl", false }, { "awaybot.com", true }, @@ -14852,10 +17713,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "awei.pub", true }, { "awersomecreatorfromrussia.tk", true }, { "awesome-coconut-software.fr", true }, - { "awesomebouncycastles.co.uk", true }, { "awesomelifedeals.today", true }, { "awesomenamegenerator.com", true }, - { "awesomesheep48.me", true }, { "awesomesit.es", false }, { "awf0.xyz", true }, { "awfulsport-news.tk", true }, @@ -14864,10 +17723,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "awk.tw", true }, { "awksolutions.com", true }, { "awlonline.tk", true }, - { "awningcanopyus.com", true }, + { "awmb.uk", true }, + { "awningcleaningchicago.com", true }, + { "awningpressurewashing.com", true }, { "awningsaboveus.com", true }, - { "awningsydney.ga", true }, { "awo-bremen.de", true }, + { "awo-sh.de", true }, { "awoau.com.au", true }, { "awomansplacenj.com", true }, { "awrd.cz", true }, @@ -14880,12 +17741,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "awsome-books.co.uk", true }, { "awsumchan.org", true }, { "awtogid.com", true }, - { "awtomator.com", true }, - { "awutar.com", false }, + { "awwwcats.com", true }, { "awxg.com", true }, + { "awxg.email", true }, { "awxg.eu.org", true }, { "awxg.net", true }, { "awxg.org", true }, + { "awxg.zone", true }, { "ax.mk", true }, { "ax25.org", true }, { "ax4health.nl", true }, @@ -14894,6 +17756,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "axavalon.tk", true }, { "axcess-electric-bikes.co.uk", true }, { "axchap.ir", true }, + { "axcient.com", false }, { "axe-formation.com", true }, { "axe.io", true }, { "axeapi.au", true }, @@ -14909,49 +17772,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "axeligence.com", true }, { "axelname.ru", true }, { "axelr.me", true }, + { "axeltheune.de", true }, { "axelvoss.eu", false }, - { "axendatranslations.com", false }, + { "axenhus.com", true }, { "axeonline.tk", true }, { "axessgroup.com", true }, + { "axesslab.com", true }, + { "axesslab.se", true }, { "axg.io", true }, { "axialhouse.cf", true }, { "axidocepabid.tk", true }, - { "axieglobal.io", true }, { "axin888.vip", true }, + { "axiniteguitars.ca", true }, + { "axiniteguitars.com", true }, { "axiodl.com", true }, { "axioinvest.com", true }, { "axiom-networks.org", true }, + { "axiomecpa.com", true }, { "axiomeosteopathie.ca", true }, { "axiomer.com", true }, { "axiomtechnologies.tk", true }, { "axios.tk", true }, + { "axiosint.com", true }, { "axis-of-evil.tk", true }, { "axis-stralis.co.uk", true }, { "axis2ofevil.com", true }, + { "axiscapital.com", true }, { "axisdesignarchitects.co.uk", true }, { "axisdesignarchitects.com", true }, { "axishw.com", true }, + { "axisinteriors.net", true }, + { "axislinx.com", true }, + { "axisortho.com.sg", true }, { "axispara-bg.com", true }, + { "axist.com.co", true }, + { "axisunderwriting.com.au", true }, + { "axitech.com.br", true }, + { "axl.net", true }, { "axmedmessi.tk", true }, { "axo.art", true }, + { "axoftglobal.com", true }, + { "axoftglobal.ru", true }, + { "axolotagencia.com", true }, { "axome.com", true }, { "axon-toumpa.gr", true }, + { "axon.link", true }, { "axoncoho.tk", true }, { "axone-computers.fr", false }, { "axonholdingse.eu", true }, { "axre.de", true }, { "axrec.de", true }, { "axstet.de", true }, - { "axstor.ru", true }, { "axton.ink", false }, { "axtux.tk", true }, { "axx.ax", true }, - { "axxa.one", false }, + { "axxemble.nl", true }, { "axxeptinq.tk", true }, { "axxess-marine.com", true }, { "axxial.tk", true }, - { "axxis.co.jp", true }, { "axyl.cloud", true }, + { "axzq.com", true }, { "ay-net.jp", true }, { "ayahya.me", false }, { "ayakatenshi.tk", true }, @@ -14961,7 +17841,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aycasac.com", true }, { "aycomba.de", true }, { "aydacosmetics.com", true }, - { "aydahwa.com", true }, + { "aydahwa.com", false }, { "aydesignco.com", true }, { "aydinescmagazin.tk", true }, { "aydinhaberleri.tk", true }, @@ -14978,6 +17858,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ayesh.win", true }, { "ayhankaraman.com", true }, { "ayj.solutions", true }, + { "aykiri.com.tr", true }, { "aykutcevik.com", true }, { "aykyamultifest.com", true }, { "aylak.com", true }, @@ -14987,8 +17868,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "aymerick-dupouey.fr", true }, { "aymericlagier.com", true }, { "aymhome.top", false }, + { "ayoa.com", true }, + { "ayomi.com", true }, { "ayon-games.tk", true }, { "ayothemes.com", true }, + { "ayovaksindinkeskdi.id", true }, { "ayresalpine.com", true }, { "ayresanaheim.com", true }, { "ayresapline.com", true }, @@ -15064,9 +17948,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ayudaconmibanco.gov", true }, { "ayudacontenedores.org", true }, { "ayudalabs.com", true }, + { "ayudamineduc.cl", true }, { "ayudamutua.red", true }, { "ayudapreview.com", true }, { "ayudaprogramacion.net", true }, + { "ayudasocialmex.com", true }, { "ayumi.network", true }, { "ayumindev.net", true }, { "ayumix3.xyz", true }, @@ -15081,30 +17967,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ayyz66.cc", true }, { "az-forum.ga", true }, { "az-moga.bg", true }, + { "az-raven.com", true }, { "az-vinyl-boden.de", true }, { "az.net.au", true }, { "az.search.yahoo.com", false }, { "az.st", true }, { "az.support", true }, { "az11018.com", true }, - { "az24saat.org", true }, - { "azabani.com", true }, { "azadblog.tk", true }, { "azadliq.info", true }, { "azadliq.online", true }, - { "azairline.com", true }, { "azaleos.com", true }, { "azaleos.net", true }, { "azallon.com.br", true }, - { "azan.live", false }, + { "azam.email", true }, + { "azami.com", true }, + { "azamserver.com", true }, { "azaria.blog", true }, { "azarkepic.com", true }, { "azartmania.ga", true }, { "azartmania.tk", true }, { "azarus.ch", true }, { "azarweb.tk", true }, - { "azbukazvetov.ru", true }, { "azcensus2020.gov", true }, + { "azcontech.com", true }, + { "azdailysun.com", true }, + { "azdevsmartviewwebportal.azurewebsites.net", true }, + { "aze.dk", true }, + { "azehosting.net", true }, { "azenot.com", false }, { "azeo.com", true }, { "azeo.fr", true }, @@ -15118,9 +18008,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azertyjobs.com", true }, { "azfreaks.tk", true }, { "azh-kunden.de", true }, - { "azhadev.com", true }, { "azhamevents.com", true }, { "azhapasa.com", true }, + { "azhappytails.com", true }, { "azhibo18.com", true }, { "azia.info", false }, { "azianpride.tk", true }, @@ -15129,8 +18019,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azimech.net", true }, { "azimps.com.br", true }, { "azimut.fr", true }, + { "azimuth-ast.ru", true }, { "azingostar.tk", true }, + { "azinmadaar.com", true }, { "azinmahab.com", true }, + { "azirevpn.com", true }, { "azithromycin.ga", true }, { "azithromycinbuy.ga", true }, { "azithromycine.gq", true }, @@ -15143,8 +18036,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azl.ink", true }, { "azlink.tk", true }, { "azlk-team.ru", true }, + { "azmi.me", true }, { "azmt.de", true }, + { "azmun.com", true }, { "aznaetelivy.ru", true }, + { "azoang.com", true }, + { "azoft.com", true }, { "azon.gr", true }, { "azonicinfotech.com", true }, { "azoogi.com.au", true }, @@ -15153,20 +18050,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azort.com", true }, { "azotobacter.nl", true }, { "azoulaygroup.org", true }, + { "azplayersclub.com", true }, { "azpogomap.com", true }, { "azquality.com", true }, { "azrangers.gov", true }, { "azrazalea.net", true }, + { "azreal.com", true }, { "azredistricting.gov", true }, + { "azrevolutionizingckd.com", true }, { "azrhymes.com", true }, { "azs-nw.ru", true }, { "azsalud.gov", true }, { "azsec.biz", true }, - { "azsgeniedev.azurewebsites.net", true }, { "azso.pro", true }, + { "azsoriginal.pw", true }, { "azsupport.com", true }, { "azsupport.host", true }, { "azsupport.org", true }, + { "aztecahome.com", true }, + { "aztekium.com", true }, + { "aztestsmartviewwebapp.azurewebsites.net", true }, { "azton.tk", true }, { "aztraslochi.it", true }, { "aztrix.me", true }, @@ -15175,12 +18078,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azu-l.jp", false }, { "azudream.tk", true }, { "azuki.cloud", true }, - { "azukie.com", true }, { "azul-elijah.tk", true }, { "azula.tk", true }, { "azulimparcial.pt", true }, { "azulweb.tk", true }, { "azur.ovh", true }, + { "azure", true }, + { "azure-informatique.cloud", true }, { "azurecraft.ga", true }, { "azurecrimson.com", true }, { "azurecup.cz", true }, @@ -15192,13 +18096,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "azurlane.cool", true }, { "azurpedia.cf", true }, { "azuxul.fr", true }, + { "azvirtualschool.com", false }, { "azvpn.tk", true }, - { "azzorti.com", true }, + { "azzorti.co", true }, { "azzurrapelletterie.it", true }, { "b-angel.info", true }, { "b-b-law.com", true }, { "b-bam.com", true }, - { "b-boom.nl", true }, { "b-coal.com", false }, { "b-cyclesshop.ch", false }, { "b-designer.tk", true }, @@ -15216,7 +18120,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b-ticket.ch", true }, { "b-tje.nl", true }, { "b-tree.be", true }, - { "b.nf", true }, + { "b-utstore.com", true }, + { "b-wartburg.de", true }, { "b.wtf", true }, { "b00de.ga", true }, { "b03aa.com", false }, @@ -15225,21 +18130,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b0k.org", true }, { "b0r.ch", true }, { "b0rk.com", true }, + { "b1.work", true }, + { "b1031.com", true }, { "b11p.com", true }, { "b131000.com", false }, - { "b144.co.il", true }, + { "b17turkiye.com", true }, { "b1c1l1.com", true }, + { "b1drivers.com", true }, + { "b1ggi.ovh", true }, { "b1nzy-pinged.me", true }, { "b1r0d4l0m.com", true }, { "b1rd.tk", true }, + { "b22diorsneakers.shop", true }, { "b24.pt", true }, { "b2b-leads.nl", true }, { "b2b-nestle.com.br", true }, { "b2bchiemihara.com", true }, + { "b2bhint.com", true }, + { "b2binpay.com", true }, { "b2bmail.ga", true }, - { "b2egroup.com.br", true }, + { "b2holding.no", true }, + { "b2markt.de", true }, + { "b2music.asia", true }, + { "b2socials.com", true }, { "b3.nu", true }, - { "b303.me", true }, { "b3103.com", false }, { "b31aa.com", false }, { "b31cc.com", false }, @@ -15248,20 +18162,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b31ff.com", false }, { "b3390.com", false }, { "b33app.com", false }, - { "b3gin.com", true }, + { "b36512.com", false }, + { "b3b4.com", true }, { "b3pacific.com", true }, { "b3tec.fr", true }, { "b422edu.com", true }, { "b4bouncycastles.co.uk", true }, { "b4ckbone.de", true }, + { "b4ifund.it", true }, { "b4lint.hu", true }, { "b4r7.de", true }, { "b4z.eu", true }, + { "b5189.com", false }, { "b5197.co", true }, - { "b58365.com", false }, - { "b58app.com", false }, - { "b58appb58app.com", false }, - { "b58appb58appb58app.com", false }, { "b5901.com", false }, { "b5902.com", true }, { "b5903.com", false }, @@ -15271,29 +18184,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b5908.com", false }, { "b5909.com", true }, { "b5910.com", false }, - { "b5dev.com", true }, + { "b5dev.com", false }, { "b5i.net", true }, { "b61688.com", true }, - { "b62a.com", true }, { "b62aa.com", true }, { "b62b.com", true }, { "b62bb.com", true }, - { "b62c.com", true }, { "b62cc.com", true }, { "b62d.com", true }, { "b62dd.com", true }, - { "b62e.com", true }, { "b62ee.com", true }, { "b64.club", true }, { "b6701.com", true }, { "b6703.com", true }, { "b6704.com", true }, { "b6705.com", true }, - { "b6720.com", true }, { "b6729.co", true }, - { "b6730.com", true }, - { "b6740.com", true }, - { "b6750.com", true }, { "b67701.com", true }, { "b67702.com", true }, { "b67703.com", true }, @@ -15303,11 +18209,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b67802.com", true }, { "b67803.com", true }, { "b67805.com", true }, - { "b67901.com", true }, - { "b67902.com", true }, - { "b67903.com", true }, - { "b67904.com", true }, - { "b67905.com", true }, + { "b67901.com", false }, + { "b67902.com", false }, + { "b67903.com", false }, + { "b67904.com", false }, + { "b67905.com", false }, { "b6957.co", true }, { "b70301.com", true }, { "b70302.com", true }, @@ -15328,7 +18234,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b73bb.com", false }, { "b73dd.com", false }, { "b767.net", true }, - { "b81365.com", true }, { "b82365.com", true }, { "b86255.com", true }, { "b8831.com", false }, @@ -15343,12 +18248,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b88vip8.com", true }, { "b88vip9.com", true }, { "b899365.com", true }, - { "b89ff.com", true }, { "b89gg.com", false }, { "b89hh.com", true }, { "b8a.me", true }, { "b9168.com", true }, - { "b91688.com", true }, { "b9297.co", true }, { "b9498.com", true }, { "b9586.net", true }, @@ -15358,11 +18261,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b960.com", true }, { "b96899.com", true }, { "b9728.co", true }, - { "b979333.com", false }, { "b979365.com", false }, - { "b979555.com", false }, { "b979666.com", true }, - { "b979999.com", false }, { "b9883.net", true }, { "b9884.net", true }, { "b9885.net", true }, @@ -15395,8 +18295,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b9957.com", false }, { "b9961.com", false }, { "b99618.com", false }, + { "b9962.com", false }, { "b9970.com", false }, { "b99718.com", true }, + { "b9973.com", false }, { "b9976.com", false }, { "b99818.com", false }, { "b99881.com", true }, @@ -15422,15 +18324,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "b9999zz.com", false }, { "b99iosapp.com", false }, { "b9winner.com", true }, + { "ba7jcm.live", true }, + { "ba7jcm.top", true }, { "ba7rain.tk", true }, { "baaam.se", true }, { "baac-dewellmed.com", true }, + { "baaiai.com", true }, { "baalajimaestro.me", true }, - { "baalsworld.de", true }, { "baams.tk", true }, - { "baanpingchan.com", false }, + { "baanlaesuan.com", true }, { "baaradvies.nl", true }, { "baas-becking.biology.utah.edu", true }, + { "baas-sabiogroup.com", true }, { "baas.agency", true }, { "baatar.idv.hk", true }, { "baazee.de", true }, @@ -15447,6 +18352,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babakhanalia.tk", true }, { "babakortane.ga", true }, { "babakshaabani.tk", true }, + { "babamamatermek.hu", true }, { "babarkata.com", true }, { "babaroxi4j2.com", false }, { "babaseo.ml", true }, @@ -15459,12 +18365,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babeeclothingandoutfits.com", true }, { "babehunt.tk", true }, { "babekids.tk", true }, + { "babel.es", true }, { "babeleo.com", true }, - { "babelfisch.eu", true }, + { "babelfisch.eu", false }, + { "babelfish.money", true }, + { "babes.com", true }, + { "babesnetwork.com", true }, { "babet365.com", true }, { "babetta.tk", true }, { "babettelandmesser.de", false }, + { "babevr.com", true }, + { "babia.to", true }, { "babibonami.tk", true }, + { "babichsteriliser.com.au", true }, + { "babico.name.tr", true }, + { "babindo.com", true }, { "babineaux.zone", true }, { "babitaji.tk", true }, { "babki-mgnovenno.ga", true }, @@ -15472,16 +18387,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babkitut.ga", true }, { "bablodel.biz", true }, { "bablodel.com", true }, + { "babo.ooo", true }, { "babo.tk", true }, { "babolsar.tk", true }, { "baboo.com.br", true }, - { "babounet.com", true }, { "babsbibs.com", true }, + { "babuccu.com", true }, { "baburhat.tk", true }, { "babursahvizeofisi.com", true }, { "babushkin-mir.tk", true }, { "baby-bath-tub.com", true }, - { "baby-digne.com", false }, { "baby-doll.tk", true }, { "baby-massage.tk", true }, { "baby-skin-care.ga", true }, @@ -15492,9 +18407,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babyatacado.com.br", true }, { "babybed.tk", true }, { "babyboom.pl", true }, + { "babyboomer.org", true }, + { "babyboomer.ro", true }, { "babybuddah.ga", true }, { "babybunnypictures.tk", true }, + { "babycaring.com", true }, { "babycat.tk", true }, + { "babycezi.ro", true }, { "babychou.me", true }, { "babyfights.tk", true }, { "babyfotograf-schweiz.ch", true }, @@ -15503,13 +18422,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babyinthehouse.com.br", true }, { "babykappy.com", true }, { "babyledweaning.website", true }, - { "babyliss-pro.net", false }, { "babylonclub.cf", true }, { "babylonplast.com", true }, + { "babymall.hk", true }, { "babymasaze.cz", true }, { "babymozg.ga", true }, { "babynamen.nl", true }, { "babynames.net", true }, + { "babynamespedia.com", true }, { "babynoise.tk", true }, { "babypaparadise.com", false }, { "babypharm.ga", true }, @@ -15520,21 +18440,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "babyprice.fr", false }, { "babysafety.tk", true }, { "babysdishes-bowls.tk", true }, + { "babysface.com", true }, { "babyshopsupport.com.au", true }, { "babyshower.cf", true }, { "babystrollers.ml", true }, - { "babytan.tk", true }, - { "babytandarts.nl", true }, { "babyvillagegt.com", true }, { "babyz.tk", true }, { "babyzen.tk", true }, + { "babyzoet.com", true }, { "bac-fiches.tk", true }, + { "bacamanga.id", true }, { "bacanal-intruder.tk", true }, + { "bacanaskincare.com", true }, { "bacaneriahlg.com", true }, { "bacanora.tk", true }, + { "bacanovel.id", true }, { "bacardi.cf", true }, { "bacardicola.tk", true }, { "baccarat.tk", true }, + { "bacchtalia.com", true }, + { "baccredomatic.voyage", true }, + { "bacgp.com", true }, + { "bacgroup.digital", true }, + { "bacgroupdigital.com", true }, + { "bacgroupinc.com", true }, { "bacgrouppublishing.com", true }, { "bach-frederiksen.dk", true }, { "bachata.berlin", true }, @@ -15546,8 +18475,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bache-hiver-piscine.com", true }, { "bache-hivernage.com", true }, { "bachelorampel.de", true }, + { "bachelornation.com", true }, { "baches-piscines.com", true }, { "bachlongbeach.com", true }, + { "bachlongmobile.com", true }, { "bachmannyachts.com", true }, { "bachmatt-baar.ch", true }, { "bachokiro.com", true }, @@ -15560,12 +18491,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "backd00red.org", true }, { "backenmachtgluecklich.de", false }, { "backflow.pl", true }, + { "backfront.com", true }, { "background-checks-systems.com", true }, { "background-checks.asia", true }, { "background-checks.biz", true }, { "background-checks.mobi", true }, - { "background4free.com", true }, - { "backgroundchecks.online", true }, { "backgroundscreenersofamerica.com", true }, { "backgroundz.net", true }, { "backingtrackbrasil.com", true }, @@ -15573,19 +18503,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "backjump.tk", true }, { "backlashband.tk", true }, { "backlink-builder.tk", true }, + { "backlinkboss.com", true }, + { "backlinkers.xyz", true }, { "backlinktr.tk", true }, + { "backlog.jp", true }, { "backlogapp.io", true }, + { "backlogs.org", true }, { "backmark.tk", true }, { "backmigo.com", true }, { "backmitra.com", true }, { "backmitra.mx", true }, { "backmitra.nl", true }, - { "backmountaingas.com", true }, { "backpacken.org", true }, - { "backpacker.dating", true }, { "backpackinglight.com", true }, { "backpackingtours.com", true }, { "backpacktour.ru", true }, + { "backpagegals.com", true }, { "backporchartists.com", true }, { "backrestored.gq", true }, { "backrip.tk", true }, @@ -15594,22 +18527,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "backschues.de", true }, { "backschues.net", true }, { "backseatbandits.com", true }, - { "backsideverbier.ch", false }, + { "backslash-n.com", true }, { "backsliderz.uk", true }, { "backspace.dev", true }, { "backspace.rocks", true }, + { "backstage.click", true }, { "backstienkboys.tk", true }, + { "backstopsolutions.com", true }, { "backstreetbrasil.tk", true }, { "backstreets-corner.tk", true }, { "backterris.com", true }, { "backtest.org", true }, { "backtheeffup.com", true }, + { "backtobed.com", true }, { "backup-kurumsal.com", true }, { "backupassist.de", true }, { "backupauthentication.com", true }, - { "backupcloud.ru", true }, { "backwardsalphabet.tk", true }, + { "backwpup.com", true }, { "backyardaddict.com", true }, + { "backyardbella.com", true }, + { "backyardchickens.com", true }, { "backyardtaco.com", true }, { "baclofen.ga", true }, { "baclofen.gq", true }, @@ -15620,6 +18558,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bacoux.com", true }, { "bacq.pro", true }, { "bacsmegye.hu", true }, + { "bacteri.com", true }, { "bacteriakit.com", true }, { "bactrim-antibiotic.gq", true }, { "bactrim-antibiotic.ml", true }, @@ -15632,11 +18571,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bacula.jp", true }, { "bacus.ga", true }, { "bad-homburg.tk", true }, + { "bad-influence.rocks", true }, { "bad.horse", true }, { "bad.pet", true }, { "bad.spdns.de", true }, { "badaa.info", true }, - { "badante.it", true }, { "badanteinfamiglia.it", true }, { "badaparda.com", true }, { "badass-women.club", true }, @@ -15651,9 +18590,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "badboyzclub.de", true }, { "badcarma.tk", true }, { "badcomputer.tk", true }, + { "baddiehub.com", true }, + { "baddielatina.com", true }, { "baddrones.llc", true }, { "badeand.net", true }, - { "baderscott.com", true }, + { "badekappen.com", true }, { "badeurlaub.tk", true }, { "badf00d.de", true }, { "badge.rs", true }, @@ -15670,12 +18611,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "badkamermarkt.net", true }, { "badkamermarkt.nl", true }, { "badkeys.info", true }, + { "badmania.fr", true }, { "badmessage.tk", true }, { "badmice.tk", true }, { "badminton-forum.tk", true }, { "badmintonargentina.tk", true }, { "badmintonbeersheva.co.il", true }, - { "badmintonbible.com", true }, { "badmintonclubwaarschoot.tk", true }, { "badmintonoverdag.tk", true }, { "badmonkey.fr", true }, @@ -15685,6 +18626,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "badnat.tk", true }, { "badnjar.rs", true }, { "badodds.ga", true }, + { "badoinkvr.com", true }, { "badoo.com", true }, { "badoo.com.ar", true }, { "badoo.de", true }, @@ -15701,6 +18643,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "badseacoffee.com", true }, { "badsl.nl", true }, { "badstar.tk", true }, + { "badudeal.lk", true }, { "badules.tk", true }, { "badwi.com", true }, { "badwolf.tk", true }, @@ -15711,44 +18654,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baederlacke.eu", false }, { "baehost.com", true }, { "baells.tk", true }, + { "baer-concepts.de", true }, { "baer-holger.de", true }, + { "baer.com", true }, { "baer.space", true }, { "baerkarrer.ch", true }, + { "baevserver.ddns.net", true }, + { "bafito.com", true }, { "baframedya.tk", true }, { "bafus.ru", true }, { "bag.bg", true }, - { "bag66.ru", true }, { "bagdagul.tk", true }, - { "bageez.us", true }, + { "bagelbrands.com", true }, { "bagelsbakery.com", false }, - { "bageluncle.com", true }, { "baggy.me.uk", true }, { "bagheera.me.uk", true }, { "baghtelecom.net", true }, + { "baginfo.com", true }, { "bagiobella.com", true }, { "bagirahome.bg", true }, - { "baglu.com", false }, + { "bagleytownshipmi.gov", true }, { "bagni-chimici.roma.it", true }, { "bagnichimici.milano.it", true }, { "bagnichimici.roma.it", true }, { "bagnichimici.veneto.it", true }, { "bagol.tk", true }, - { "bagoria.by", true }, + { "bagsbanny.de", true }, { "bagso.bg", true }, { "bagsofbounce.co.uk", true }, { "bagspecialist.nl", true }, { "bagssale.ga", true }, + { "bagtobag.com.gr", true }, { "bagu.biz", true }, { "bagu.fr", true }, + { "bagui.com", true }, { "bagwrap.com", true }, { "bah.im", false }, { "bahadirh.ml", true }, { "bahaiprayers.io", true }, + { "bahami.com", true }, { "bahana.net", true }, { "baharmusic24.tk", true }, - { "bahiastudios.com", true }, + { "bahcehavuz.com", true }, { "bahisbonus.work", true }, - { "bahislokal6.com", true }, { "bahnenimbild.de", true }, { "bahnenimbild.eu", true }, { "bahnhelden.de", true }, @@ -15759,28 +18707,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bahrainmarina.bh", true }, { "bahrainonline.tk", true }, { "bahrep.com", true }, + { "bahri.sa", true }, + { "baiask.com", true }, + { "baichi.cf", true }, + { "baichi.ml", true }, { "baidu-s.com", false }, { "baiduo.com", true }, + { "baier-michels.com", true }, + { "baif.hr", true }, + { "baifubao.com", true }, { "baikal.cf", true }, { "baikalfond.ml", true }, { "baikalppk.tk", true }, + { "baiki.ch", true }, { "baildonbouncycastles.co.uk", true }, { "baildonhottubs.co.uk", true }, { "baileebee.com", true }, + { "baileyh.xyz", true }, + { "baileyladders.com.au", true }, { "baileysafetyconsultants.com", true }, + { "baileysharborwi.gov", true }, + { "bailiang.com", true }, { "bailleux.be", true }, { "bailodromo.tk", true }, { "bailong.kr.ua", true }, { "bailonga.com", true }, + { "baimail.com", true }, { "bainba.com", true }, { "baindayman.com", true }, + { "baipay.com", true }, { "baircentral.com", true }, { "bairrosonline.com", true }, - { "bairuo.net", true }, - { "bairuo.top", true }, + { "bairuo.net", false }, + { "bairuo.top", false }, { "bairwell.com", true }, - { "bait55.ru", true }, + { "baise.cf", true }, + { "baise.ml", true }, + { "baise3x.com", true }, + { "baishitie.com", true }, + { "bait55.ru", false }, { "baitable.ml", true }, + { "baitapsgk.com", true }, + { "baithuti.com", true }, { "baitulongbaycruises.com", true }, { "baity.net", true }, { "baixadordemusica.tk", true }, @@ -15788,11 +18756,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baixarvideosgratis.com.br", true }, { "baiyangliu.com", false }, { "bajacalifornia.tk", true }, + { "bajajplasticsurgery.com", true }, { "bajalotodo.tk", true }, { "bajanowski-fotografie.de", false }, { "bajaprogramas.tk", true }, { "bajarjuegos.com", true }, { "bajic.ch", true }, + { "bajiotec.com", true }, { "bajj.de", true }, { "bajofondoradio.tk", true }, { "bajominimos.tk", true }, @@ -15807,36 +18777,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bakanin.ru", true }, { "bakaproxy.moe", true }, { "bakbi.tk", true }, + { "bakchich.biz", true }, { "bakcor.com", true }, { "baker-street.tk", true }, { "bakerbasements.com", true }, { "bakercity.gov", true }, { "bakercitypd.gov", true }, + { "bakercosheriffor.gov", true }, { "bakercounty911or.gov", true }, { "bakercountyor.gov", true }, { "bakercountysheriffor.gov", true }, - { "bakermen.com", true }, { "bakersafari.co", true }, + { "bakersfieldboardup.com", true }, { "bakersfieldhomeoffer.com", true }, { "bakerviewdentalcentre.com", true }, { "bakerymazowsze.co.uk", true }, + { "bakesy.shop", true }, { "bakeup.be", true }, { "bakibal.com", true }, { "bakimadair.com", true }, { "bakira.eu", true }, + { "bakivaxti.az", true }, + { "bakj.com", true }, { "bakkerij-janschrieks.nl", true }, { "bakkerinjebuurt.be", true }, { "bakkersmolen.tk", true }, { "bakkerstraatfeesten.tk", true }, { "bakkus.tk", true }, { "bakla.ml", true }, + { "baklavabg.com", true }, + { "bakoma.pl", true }, { "bakongcondo.com", true }, { "bakrypt.io", true }, { "baks.cf", true }, { "baksclub.cf", true }, { "baksclub.gq", true }, { "baku-club.tk", true }, - { "baku.news", true }, { "bakubest.tk", true }, { "bakupka.de", true }, { "bakuze.net", true }, @@ -15857,27 +18833,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "balance.education", true }, { "balance.equipment", true }, { "balance.technology", true }, - { "balance7.jp", true }, + { "balanceadosmendoza.com", true }, { "balancecreamers.ga", true }, { "balancecreamest.ga", true }, { "balancedbrawl.net", true }, - { "balancefitnesscr.com", true }, { "balancehairrestoration.com", true }, { "balancehits.com.br", true }, - { "balancemedical.com", true }, { "balancenaturalhealthclinic.ca", true }, { "balancer.gq", true }, + { "balancingbird.net", true }, + { "balancingbirthbaby.com", true }, + { "balancingeverything.com", true }, { "balanda.ga", true }, { "balashiha-podmoskovie.ml", true }, { "balasingandaru.cf", true }, { "balaskas.gr", true }, + { "balatarin.com", true }, { "balatonlelleapartman.tk", true }, { "balboa.io", true }, { "balboa.org.uk", true }, + { "balboacapital.com", true }, { "balbus.tk", true }, { "balca.ga", true }, - { "balcaonet.com.br", false }, - { "balcarek.pl", true }, + { "balcaonet.com.br", true }, { "balconnr.com", true }, { "balconsverdun.com", false }, { "balcony.cf", true }, @@ -15887,42 +18865,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baldvinringsted.com", true }, { "baldwin-mania.tk", true }, { "baleen.us", true }, + { "baleinesendirect.org", true }, { "balelabs.id", true }, { "balerma.tk", true }, { "balesetvedelem.hu", true }, { "balester.com", true }, { "balezovolley.fr", true }, + { "balhamrm.co.uk", true }, { "balia.de", true }, - { "balicari.com", true }, { "balicekzdravi.cz", false }, { "balicyclingtours.id", true }, { "balikesireftotoekspertiz.com", true }, { "balikesirhaberleri.tk", true }, { "baliklar.tk", true }, + { "balikturleri.com", true }, { "balilingo.ooo", false }, { "balimoves.com", true }, - { "balinese.dating", true }, + { "balingwiredirect.com", true }, { "balintjanvari.com", true }, { "balist.es", true }, + { "balita.net.ph", true }, { "balivacationhomes.com", true }, { "balivakantiewoning.nl", true }, { "balivillassanur.com", false }, { "baliwebsitedesign.info", true }, - { "baliyano.com", true }, - { "balkan-webcam-model.com", true }, { "balkannightlife.ga", true }, { "balkanpharmstore.com", true }, { "balkenbushmechanical.com", true }, { "balkoni.gq", true }, { "balkonien.org", true }, { "balkonov.com.ua", true }, + { "ball-bizarr.com", true }, { "ball-bizarr.de", true }, { "ball3d.es", true }, { "ball4training.com", true }, + { "ballajuraafc.com", true }, { "ballarin.cc", true }, { "ballast.tk", true }, { "ballbusting-cbt.com", true }, { "ballcancan.tk", true }, + { "balldurham.com", true }, { "ballejaune.com", true }, { "ballensiefen.net", true }, { "ballerkneipe.com", true }, @@ -15930,7 +18912,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ballinw.com", true }, { "ballisticbrass.tk", true }, { "ballitolocksmith.com", true }, - { "ballmerpeak.org", true }, + { "ballmusikband.de", true }, { "ballon-ballon.de", true }, { "ballonnenopdakpannen.tk", true }, { "balloon.gq", true }, @@ -15938,59 +18920,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ballothero.com", true }, { "ballparkbuns.com", false }, { "ballpythonsaspets.com", true }, - { "ballroom.info", true }, { "ballroompages.com", true }, { "balls.zone", true }, { "balluncar.tk", true }, - { "balmaindubai.com", true }, - { "balmofgilead.org.uk", true }, - { "balnova.com", true }, + { "balneariodearchena.com", true }, { "baloch-intelligence.tk", true }, { "balochism.tk", true }, + { "balogkrisztian.hu", true }, { "baloncestoarqueros.tk", true }, { "baloncestolliria.tk", true }, { "balonmano.co", true }, { "balonsiparis.com", true }, { "balopal.tk", true }, - { "balosport.com", true }, { "balsamaiso.es", true }, + { "balsara.com", true }, { "balski.com", true }, { "balslev.io", true }, + { "balt.net", true }, { "balter.com", true }, - { "balthazarlondon.com", true }, { "baltialcoholicos.tk", true }, + { "balticroofing.com", true }, { "baltimorecashflow.com", true }, + { "baltimorecitybnmd.gov", true }, { "baltimorecolonrectal.com", true }, { "baltimorejetcharter.com", true }, { "baltimoreroofingservices.com", true }, + { "baltoe.com", false }, + { "baluarte.com", true }, { "bam.com.gt", true }, - { "bamaagahi.ir", true }, { "bamahammer.com", true }, { "bamaland.org", true }, { "bamberger-maelzerei.de", true }, + { "bambergerdatenschutz.de", true }, { "bamboehof.nl", true }, + { "bamboo-team.online", true }, + { "bambooagile.eu", true }, { "bambooforest.nl", true }, - { "bamboorelay.com", true }, + { "bamboohr.co.uk", true }, + { "bamboohr.com", true }, + { "bambooplywood.com", true }, { "bamboostage.com", true }, - { "bambrick.com.au", true }, + { "bambrick.com.au", false }, { "bambuitalia.it", true }, - { "bambuk.com.br", true }, { "bambukshop.ml", true }, + { "bambulab.com", true }, { "bambumania.com.br", true }, { "bambusushibar.com", false }, { "bamfacts.tk", true }, { "bamifm.tk", true }, { "bamily.rocks", true }, { "baming.com", true }, - { "bamoza.com", true }, + { "bammatta.ch", true }, { "bampers.tk", true }, { "bamsmackpow.com", true }, { "ban-list.gq", true }, { "banabarka.tk", true }, { "banajanitorialservices.com", true }, - { "bananabandy.com", true }, { "bananabeer.xyz", true }, - { "bananaday.ru", true }, { "banananet.work", true }, { "bananathrash.tk", true }, { "bananatreenews.today", true }, @@ -15999,10 +18985,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bananenbr0t.de", true }, { "bananice.moe", true }, { "banatearab.tk", true }, + { "banbaog.com", true }, { "bancacrs.it", true }, + { "bancamiga.com", true }, { "bancastato.ch", true }, { "bancatransilvania.ro", true }, + { "banch.io", true }, + { "banchungcu.com", true }, { "banco.bradesco", true }, + { "bancoagricola.com", true }, { "bancobai.ao", false }, { "bancobica.com.ar", true }, { "bancobpm.it", true }, @@ -16011,7 +19002,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bancontinental.com.py", true }, { "bancosdominicanos.net", true }, { "bancoserfinanza.com", true }, + { "bancosol.com.bo", true }, + { "bancsource.net", true }, { "band.us", true }, + { "banda-car-service.com", true }, + { "bandaancha.eu", true }, { "bandademusicacarrion.tk", true }, { "bandadestino.tk", true }, { "bandally.net", true }, @@ -16023,13 +19018,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bandaumnikov.ru", true }, { "bandbattle.tk", true }, { "bandbelievo.tk", true }, + { "bandeaux.com", true }, { "bandeira1.com.br", true }, { "bandeiraimoveisitu.com.br", true }, { "bandeirasnacionais.com", true }, { "banderas-mundo.es", true }, { "banderasdelmundo.xyz", true }, + { "banderatx.gov", true }, { "banderol.tk", true }, - { "bandhayoga.paris", true }, + { "bandhanbank.com", true }, + { "bandidosmc.com", true }, { "bandiere-mondo.it", true }, { "bandiga.it", true }, { "bandirmaevdenevenakliyat.tk", true }, @@ -16038,28 +19036,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bando.de", true }, { "bandolino-bewind.nl", true }, { "bandoom.tk", true }, + { "bandtcollections.com.au", true }, { "bandures.tk", true }, { "bandvideos.tk", true }, { "bandwagon.tk", true }, { "bandwagonok.tk", true }, + { "bandwh.com", true }, { "bandymasarna.tk", true }, { "baneh-academic.com", true }, { "banerka.tk", true }, { "banes.ch", true }, { "banffcanmorespeedskating.ca", true }, + { "banfieldentertowin.com", true }, { "banfieldtravel.it", true }, { "banfun.org", true }, { "bang.com.au", true }, { "bangabandhu.tk", true }, + { "bangaichi.no-ip.org", false }, + { "bangandscrew.com", true }, { "bangbangboys.tk", true }, { "bangberlin.tk", true }, { "bangdaiviet.tk", true }, - { "bangdream.ga", true }, { "bangkok-dark-night.com", true }, { "bangkok-thailand.org", true }, { "bangkokcookingclass.com", true }, { "bangkokflightservices.com", true }, - { "bangkokthailandescorts.com", true }, + { "bangkoklife.com", true }, { "bangku.tk", true }, { "bangladesimagi.tk", true }, { "banglahotstory.tk", true }, @@ -16067,16 +19069,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "banglatec.tk", true }, { "banglatypography.com", true }, { "banglets.com", true }, - { "bangorfederal.com", true }, + { "bangsparks.com", true }, { "bangujero.tk", true }, + { "bangyu.wang", true }, { "banh.am", true }, { "banham.co.uk", false }, { "banham.com", true }, { "banhphongtomquangtran.com", true }, { "bani-hashem.tk", true }, + { "banimarket.by", false }, + { "baniuliuukis.lt", true }, { "banja-kulasi.ga", true }, { "banjonelson.tk", true }, - { "banjostringiz.com", true }, { "bank", true }, { "bank-credit.org", true }, { "bank-laan.dk", true }, @@ -16084,6 +19088,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bank.barclays.co.uk", true }, { "banka.space", false }, { "bankanswers.gov", true }, + { "bankassafa.com", true }, { "bankasubeleri.tk", true }, { "bankbranchlocator.com", true }, { "bankcardoffer.com", true }, @@ -16093,34 +19098,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bankee.us", true }, { "bankera.com", true }, { "banket-furshet-spb.ru", true }, - { "banket.fr", true }, { "banketbesteld.nl", true }, + { "bankffin.kz", false }, { "bankfreeoffers.com", true }, { "bankgradesecurity.com", true }, { "bankheadvegetables.com", true }, { "bankhelp.gov", true }, + { "banki-finance-credit.ru", true }, + { "bankid.com", true }, { "bankimsk.cf", true }, - { "bankin.com", true }, { "banking-services.tk", true }, + { "bankingadda.in", true }, { "bankingheralders.ga", true }, { "bankinter.pt", true }, { "bankio.se", true }, - { "bankipmr.ru", false }, { "bankiros.ru", true }, + { "bankislami.com.pk", true }, { "bankitt.network", true }, { "bankmno.ga", true }, { "bankmoney.cf", true }, { "banknet.gov", true }, { "banknews.ga", true }, - { "banknn.ru", false }, + { "banknn.ru", true }, { "bankofdenton.com", true }, + { "bankofguilin.com", true }, + { "bankofharbin.com", true }, { "bankofireland.com", true }, { "bankofrealty.review", true }, + { "bankofshaanxi.com", true }, { "bankowy-leasing.pl", true }, { "bankpolicies.com", true }, { "bankrbk.kz", true }, { "bankruptcy.ky", true }, - { "banksaround.com", true }, { "banksite.ga", true }, { "banksmalaysia.com", true }, { "banksouthern.com", false }, @@ -16130,12 +19139,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "banktender.ga", true }, { "banktool.com", true }, { "bankvanbreda.be", true }, + { "bankwithfidelity.com", true }, { "banland.net", true }, { "banlinhdanong.com", false }, - { "banlitang.com", true }, { "banned-bitches.tk", true }, { "banner-design.tk", true }, { "banner.ga", true }, + { "bannerbangbang.com.au", true }, { "bannercountyne.gov", true }, { "bannerexchange.tk", true }, { "bannermarquees.ie", true }, @@ -16148,32 +19158,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "banningca.gov", true }, { "banninglibraryca.gov", true }, { "bannisbierblog.de", true }, + { "bannockcounty.gov", true }, { "bannockcountyidaho.gov", true }, { "bannsecurity.com", true }, { "banquevanbreda.be", true }, { "banri.me", true }, + { "bans.info", true }, { "bantaihost.com", true }, + { "bantchev.com", true }, + { "bantchev.net", true }, { "bantenmien.tk", true }, { "banter.city", true }, - { "banterera.com", true }, { "bantik.by", true }, { "bantiki.ga", true }, + { "bantuanteknis.id", true }, { "banwagong.eu.org", true }, + { "banyan-advantech.com", true }, + { "banyarukami.ru", true }, { "banzay.ml", true }, { "banzhuti.com", true }, { "bao-in.net", true }, { "baobabgroup.com", true }, { "baobaoquming.net", false }, - { "baocaosuhp.com", true }, + { "baobiao.com", true }, { "baocheng.tech", true }, { "baofuzhuan.com", true }, { "baogao.store", true }, { "baoge55.com", true }, { "baogiathicongnoithat.com", true }, { "baogougou.com", false }, - { "baohiemdailoc.com", true }, { "baokhangfood.com", true }, + { "baoqiang.com", true }, + { "baoshun.com", true }, { "baoxue5.com", false }, + { "bapco.com", true }, { "bapeel.tk", true }, { "bapha.be", true }, { "baptiste-peugnez.fr", true }, @@ -16181,13 +19199,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baptisteplanckaert.tk", true }, { "baptistesale.tk", true }, { "bar-event.tk", true }, + { "bar-rique.de", true }, { "bar-valhalla.tk", true }, { "bar38.tk", true }, + { "baraboowi.gov", true }, { "barabrume.fr", true }, { "baracca.es", true }, { "barakayu.com", true }, { "baraklava.com", true }, { "baran-shop.ga", true }, + { "baranka.ru", true }, + { "baransys.com", true }, { "baranyavar.hu", true }, { "barao.tk", true }, { "barataeletrica.tk", true }, @@ -16196,7 +19218,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baraxolka.ga", true }, { "baraxolka.ml", true }, { "barbaderespeito.com.br", true }, - { "barbaleonecuador.com", true }, { "barbara-bertagnolli.co.uk", true }, { "barbara-fuchs-gruene-fuerth.de", true }, { "barbarabowersrealty.com", true }, @@ -16210,25 +19231,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barbarians.com", false }, { "barbaros.info", true }, { "barbate.fr", true }, - { "barberheatingandair.com", true }, { "barberscorner.tk", true }, { "barbershop-harmony.org", false }, - { "barbershop-lasvillas.com", false }, + { "barbershopbabo.com", true }, { "barbiecollectorjapan.cf", true }, { "barbiecollectorjapan.ga", true }, { "barbiecollectorjapan.gq", true }, { "barbieforteza.tk", true }, - { "barbiere.it", true }, + { "barbinlaw.com", true }, { "barbonnetje.nl", true }, { "barborakucerova.cz", true }, { "barbosha.ru", true }, + { "barbourcountyal.gov", true }, + { "barbourcountyhdwv.gov", true }, { "barbu.family", true }, { "barburas.com", true }, { "barca-movie.jp", true }, { "barcamp.koeln", true }, - { "barcats.co.nz", true }, - { "barcats.com.au", true }, - { "barcel.com.mx", true }, { "barcelonapremium.es", true }, { "barcelonapremiummini.es", true }, { "barcelonatours.net", true }, @@ -16236,19 +19255,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barchetta.org", true }, { "barcicuvele.tk", true }, { "barclays.net", true }, + { "barcodelookup.com", true }, { "barcoder.tk", true }, { "barcodewiz.com", true }, + { "barcotrucks.com", true }, + { "bard-college.com", true }, + { "bard-college.net", true }, { "bardak.ga", true }, + { "bardcollege.net", true }, + { "bardcollege.org", true }, { "bardes.org", true }, - { "bardiel.com.br", true }, + { "bardfarm.org", true }, + { "bardian.net", true }, + { "bardian.org", true }, { "bardiharborow.com", true }, { "bardtech.com", true }, + { "barduschinamusic.org", true }, { "bardziejkochani.pl", true }, { "barefoodinrome.it", true }, { "barelias.tk", true }, { "barentsz.co", true }, { "barer.me", true }, - { "baresquare.com", true }, + { "barexam.jp", true }, { "bargaindentistsers.ga", true }, { "bargaindentistsest.ga", true }, { "bargainsettelement.com", true }, @@ -16256,9 +19284,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barganhanaweb.ml", true }, { "bargenarenji.com", true }, { "bargerveen.tk", true }, + { "bargfeldt.de", true }, { "bargrill.ga", true }, { "bargroup.ga", true }, + { "barhan-sarykum.ru", true }, { "bariatricsurgerynewjersey.com", true }, + { "barichara.com", true }, { "barihandin.tk", true }, { "barikell.be", true }, { "barinasknot.tk", true }, @@ -16272,10 +19303,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baristabetter.com", true }, { "baristador.com", true }, { "baritoday.it", true }, + { "barke-schaltanlagen.de", true }, + { "barkerandstonehouse.co.uk", true }, { "barkerjr.xyz", true }, { "barkingspidersaspets.com", true }, + { "barkio.com", true }, { "barkstop.net", true }, - { "barlex.pl", false }, + { "barkysupplies.com", true }, + { "barlettaviva.it", true }, + { "barlex.pl", true }, { "barleyandbirch.com", true }, { "barlijst.net", true }, { "barlotta.net", true }, @@ -16285,14 +19321,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barmusic.tk", true }, { "barnabasgolf.org", true }, { "barnabycolby.io", true }, + { "barnacional.com.au", true }, { "barnaul-altai.tk", true }, - { "barnestransport.com", true }, { "barnesvilleohio.gov", true }, { "barneveldcentrum.nl", true }, + { "barney-media.com", true }, { "barneydavey.com", true }, - { "barnhardt4berks.com", true }, + { "barnflix.net", true }, { "barnhomega.com", true }, - { "barnrats.com", true }, + { "barnumiidev.com", true }, { "barnvaensveitarfelog.is", true }, { "barnvets.co.uk", true }, { "barobax.tk", true }, @@ -16300,8 +19337,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barok.tk", true }, { "baroloboys.de", true }, { "baron14.be", true }, + { "baronbunny.cn", true }, { "baronet.cf", true }, + { "baronpaintingservices.com", true }, { "baronspices.com", true }, + { "baroquemath.net", true }, + { "baroqueworksstudio.com", true }, { "barpodsosnami.pl", true }, { "barprive.com", true }, { "barqo.co", true }, @@ -16311,32 +19352,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "barrack.gq", true }, { "barrack.tk", true }, { "barracuda.blog", true }, + { "barracuda.com.tr", false }, { "barracudaswimmingclub.tk", true }, + { "barrahome.org", true }, { "barrancos.tk", true }, { "barrankest.ga", true }, { "barranquillero.tk", true }, { "barratennis.com.br", true }, { "barreiroappraisals.com", true }, + { "barrencountyky.gov", true }, { "barrenwuffett.com", true }, - { "barrera.io", true }, + { "barricader.com", true }, + { "barricader.network", true }, { "barrierefreie-medien.info", true }, + { "barrierpestservices.com", true }, { "barrikade.tk", true }, - { "barrilito.com.mx", true }, - { "barriofut.com", true }, - { "barrioitalia.com", true }, - { "barriotoboardroom.com", true }, { "barro.ga", true }, - { "barronbankruptcyattorney.com", true }, { "barruntos.tk", true }, { "barrydenicola.com", true }, { "barrymarkus.tk", true }, { "barrytownshipmn.gov", true }, { "barsashop.com.br", true }, { "barsgroup.com", true }, + { "barsleaks.com", true }, { "barsopen.ga", true }, - { "barss.io", true }, { "barsukas.net", true }, { "bart-f.com", true }, + { "bart-f.net", true }, { "bart1ebee.com", true }, { "barta.me", true }, { "bartavi.nl", true }, @@ -16346,13 +19388,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bartdesign.tk", true }, { "bartel.ws", true }, { "bartelt.name", true }, + { "barter.me", true }, { "barter.vg", true }, + { "bartg95.nl", true }, { "barth-herzberger.de", true }, { "barth.services", true }, { "bartholf.nu", true }, - { "bartkramer.nl", false }, { "bartlamboo.nl", true }, { "bartlettil.gov", true }, + { "bartoliconsulting.com", true }, { "bartolomebellido.com", true }, { "bartowcountyga.gov", true }, { "bartula.de", true }, @@ -16360,12 +19404,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baruch.me", true }, { "barwaldesigns.com", true }, { "barwave.com", true }, - { "barz.link", true }, { "barzallof.com", true }, { "barzus.com.ua", true }, { "barzza.tk", true }, + { "bas.bio", true }, { "bas.codes", true }, + { "bas.coffee", true }, { "bas.surf", true }, + { "bas.work", true }, { "basamadco.ir", true }, { "basar-horrheim.de", true }, { "basauristudios.com", true }, @@ -16376,17 +19422,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "base-autonome-durable.com", false }, { "base-people.ml", true }, { "base-radio.cf", true }, + { "base27.eu", true }, { "base2face.tk", true }, - { "base64-encode-decode.com", true }, + { "base48.systems", true }, { "basebalance.net", true }, { "baseballcrank.com", true }, + { "baseballjapan.org", true }, { "baseballpitchingmachine.tk", true }, { "baseballsapka.hu", true }, { "baseballsavings.com", true }, { "basebyte.nl", true }, { "basecamp.cf", true }, { "baseconvert.com", true }, - { "basedonline.nl", false }, + { "based.gr", true }, + { "basedonline.nl", true }, { "basedriver.com", true }, { "baseerapp.com", true }, { "basel-gynaecology.com", true }, @@ -16396,11 +19445,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "baselnazifrei.info", false }, { "basement961.co.nz", true }, { "basementdefender.net", true }, - { "basementdoctornorthwest.com", true }, { "basementdoctorwestvirginia.com", true }, - { "basementdoctorwv.com", true }, { "basementfinishingohio.com", true }, - { "basementproblems.com", true }, { "basementwaterproofingannarbor.com", true }, { "basementwaterproofingasheville.com", true }, { "basementwaterproofingdesmoines.com", true }, @@ -16409,14 +19455,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "basementwaterproofingwi.com", true }, { "basenio.de", true }, { "baserverz.ga", true }, + { "basetherm.com", true }, { "basetruck.cn", true }, { "baseweb.design", true }, { "basf-vcar.com", true }, { "bash.news", true }, { "bashari.tk", true }, - { "bashc.at", true }, + { "bashc.at", false }, { "bashhack.cf", true }, { "bashing-battlecats.com", true }, + { "bashkimi.com", true }, { "bashkiri.cf", true }, { "bashkiria.cf", true }, { "bashkiria.ga", true }, @@ -16433,11 +19481,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "basicattentiontoken.org", true }, { "basiccloud.nl", true }, { "basicguitarlessons.com", true }, + { "basicknowledge101.com", true }, { "basiclimits.tk", true }, { "basicports.com", true }, { "basicports.eu", true }, { "basicports.net", true }, { "basicports.org", true }, + { "basics.domains", true }, { "basics.net", true }, { "basicskillstest.co.uk", true }, { "basictools.tk", true }, @@ -16446,23 +19496,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "basilicproduction.fr", true }, { "basilm.co", true }, { "basilsys.com", true }, - { "basis.net", true }, + { "basis-online.eu", true }, { "basisbedarf.de", true }, { "basisofcare.com", true }, { "basisonline.nl", true }, { "basisonlinefiles.nl", true }, + { "basisschoolhundelgem.be", true }, + { "basisvaardigheden.nl", true }, { "basitplan.com", true }, { "basket-ballworld.fr", true }, + { "basket-malaunay.fr", true }, { "basket-sint-truiden.tk", true }, { "basketball-malavan.tk", true }, { "basketballnewz.tk", true }, + { "basketcase.shop", true }, { "basketforex.com", true }, + { "basketsandmore.bg", true }, + { "baskibu.com", false }, + { "baskideposu.com.tr", true }, { "baskingalkin.tk", true }, { "basllp.co.uk", true }, { "basmacioglu.com", true }, + { "basmp.ml", true }, { "basnachtegaal.tk", true }, { "basnoslovno.ru", true }, - { "basonlinemarketing.nl", true }, + { "basonlinemarketing.nl", false }, { "basradio.tk", true }, { "bass-pro.ru", true }, { "bassanova.tk", true }, @@ -16470,9 +19528,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bassblog.net", true }, { "bassculture.tk", true }, { "bassdentistry.com", true }, + { "basse-chaine.info", true }, { "bassethound.tk", true }, { "bassguy.tk", true }, + { "bassislandline.com.au", true }, { "basskickers.tk", true }, + { "bassment.org", true }, { "bassment.ph", true }, { "bassotto.it", true }, { "bassresource.com", true }, @@ -16487,40 +19548,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "basteltips.tk", true }, { "bastelwelt.ch", true }, { "bastelzauberwelt.de", true }, + { "bastenhorst.de", true }, { "bastionadvokat.ml", true }, { "bastionentifo.tk", true }, { "bastiv.com", true }, { "bastivmobile.com", true }, { "bastolino.de", true }, { "bastter.com", true }, + { "bastun.com", true }, { "basuramarina.com", true }, - { "basw.eu", true }, + { "basvurusu.net", true }, { "baswetter.photography", true }, { "basyrova.ml", true }, { "basysconsulting.com", true }, { "basyspro.net", true }, + { "batacas.com", true }, { "batailleros.tk", true }, { "bataminnovationhub.com", true }, + { "bataviail.gov", true }, + { "bataviaoh.gov", true }, + { "batca.ca", true }, { "batcave.tech", true }, { "batch.com", false }, - { "batdongsancongnghiep.vn", true }, + { "bateaux-sans-permis.com", false }, + { "batelco.com", true }, + { "baterias.com", true }, { "baterioverolety.cz", true }, + { "batescountymo.gov", true }, { "batesvillearkansas.gov", true }, { "batextiles.tk", true }, { "bath.limited", true }, + { "bath.ltd.uk", true }, { "bath.men", true }, { "bathbodyshop.tk", true }, + { "bathcountyva.gov", true }, { "bathok.tk", true }, + { "bathost.net", true }, { "bathrobes.tk", true }, + { "bathroomgurureview.com", true }, { "bathroomremodelinggeorgia.com", true }, { "bathroomsinkcabinet.tk", true }, { "bathscobensraker.ga", true }, { "bati-alu.fr", true }, - { "bati-renov.fr", true }, { "batiburrillo.net", true }, { "batiim.co.il", true }, { "batipiscine.com", true }, { "batipresta.ch", false }, + { "batista.g12.br", true }, + { "batitrakya.org", true }, { "batiweb.tv", true }, { "batiwebgroup.com", true }, { "batka-stealer.tk", true }, @@ -16530,51 +19605,75 @@ static const nsSTSPreload kSTSPreloadList[] = { { "batmod.com", true }, { "batoit.gq", true }, { "batonchik.tk", true }, - { "batook.org", true }, + { "batonger.com", true }, + { "batten-family.uk", true }, { "batten.eu.org", true }, + { "batterie-au-top.com", true }, { "batterman.ch", true }, { "battery-center.fr", true }, { "batteryboys.ca", true }, { "batteryboys.com", true }, + { "batterymax.org", true }, { "batteryreconditioning.ml", true }, { "batterystaple.pw", true }, { "battle-arena.tk", true }, { "battle-game.com", true }, - { "battleboxx.com", true }, { "battlefield1942.tk", true }, { "battleforkhashuri.tk", true }, { "battlefrontoldschool.cf", true }, { "battleguard.net", true }, + { "battlemedialab.com", true }, { "battleofthegridiron.com", true }, { "battlepetsonline.com", true }, { "battlerealms.cc", true }, { "battlerite.tk", true }, + { "battleservers.io", true }, { "battletech.tk", true }, { "battreil.tk", true }, { "batucadastore.nl", true }, + { "batucilegon.com", true }, { "batukhan.tk", true }, { "batulicin.tk", true }, { "batwatt.com", true }, + { "bau.ua", true }, { "baubau.bg", true }, + { "bauchredner-zauberer.de", true }, { "bauchtanz.tk", true }, - { "bauen-mit-ziegel.de", false }, + { "bauen-mit-ziegel.de", true }, + { "bauer-plus.de", true }, { "bauer-reininghorses.com", true }, { "bauer.network", false }, { "bauernhof-koch-edingen.de", true }, { "bauernhof-lercher.at", true }, { "bauernmarkt-fernitz.at", true }, - { "baufi24.de", true }, + { "baufi-express.ag", true }, + { "baufi-express.biz", true }, + { "baufi-express.com", true }, + { "baufi-express.de", true }, + { "baufi-express.eu", true }, + { "baufi-express.info", true }, + { "baufi-express.net", true }, + { "baufi-express.org", true }, + { "baufi24.de", false }, + { "baufiexpress.ag", true }, + { "baufiexpress.biz", true }, + { "baufiexpress.com", true }, + { "baufiexpress.de", true }, + { "baufiexpress.eu", true }, + { "baufiexpress.info", true }, + { "baufiexpress.net", true }, + { "baufiexpress.org", true }, { "baugelitt.eu", true }, { "baugemeinschaftbernstein.de", true }, { "baugeshite.de", true }, - { "bauingenieur24.de", true }, { "baukebies.nl", true }, { "baukelek.tk", true }, { "baumannfabrice.com", true }, + { "baumansound.com", true }, { "baumbet.ro", true }, { "baumfreund.ch", true }, { "baumkletterschule.de", true }, - { "baumkuchen-aus-dresden.de", true }, + { "baummer.com.br", true }, { "baur.de", true }, { "bausep.de", true }, { "bausparkassen.tk", true }, @@ -16588,11 +19687,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bavartec.de", true }, { "bavi.tk", true }, { "bavoogi.com", true }, + { "bawag.at", true }, { "bawamedical.com", true }, + { "bawanghitamalibanu.com", true }, { "bawbby.com", true }, { "baxir.fr", true }, { "baxleyga.gov", true }, { "baxomilowa.tk", true }, + { "baxtercountyar.gov", true }, + { "baxterstorey.online", true }, + { "baxterstoreyirelandonline.com", true }, + { "baxus.co", true }, + { "baxx.eu.org", true }, { "bayanbennett.com", true }, { "bayanradio.tk", true }, { "bayarea.ga", true }, @@ -16602,7 +19708,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bayareagynecology.com", true }, { "bayareamustangs.tk", true }, { "bayareaplasticsurgery.com", true }, + { "bayashi.net", true }, + { "bayburtgazetecilercemiyeti.org.tr", true }, { "bayburtmanset.com", true }, + { "baycialis.net", true }, + { "baycitymi.gov", true }, + { "baycountyfltax.gov", true }, { "bayden.com", true }, { "baydreamer.tk", true }, { "bayer-stefan.com", true }, @@ -16610,30 +19721,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bayer-stefan.eu", true }, { "bayer.earth", true }, { "bayerhazard.de", true }, + { "bayernstrikes.com", true }, { "bayernwaage.de", true }, { "bayerstefan.com", true }, { "bayerstefan.de", true }, { "bayerstefan.eu", true }, + { "bayfly.net", true }, { "bayherbalist.com", true }, { "bayilelakiku.com", true }, + { "bayliss.aero", true }, + { "bayliss.co.uk", true }, + { "bayliss.uk", true }, { "bayltd.com", true }, { "bayly.eu", true }, { "baymard.com", false }, + { "baymark.com", true }, { "bayofseo.com", true }, { "bayou.energy", true }, - { "bayportuganda.com", true }, { "bayraklar.info", true }, { "bayramov.tk", true }, { "bayrisch-fuer-anfaenger.de", true }, { "bayscollisionrepairs.co.nz", true }, - { "baysideaba.com", true }, + { "bayshore.ca", true }, { "baysidefamilydentist.com.au", true }, { "baysidemedicalgroup.net", true }, { "baysidephotography.ga", true }, { "bayt.com", true }, { "baytalebaa.com", true }, { "baytobayaircon.com.au", true }, - { "baytownent.com", true }, { "baytv.it", true }, { "bayvotesfl.gov", true }, { "baywatbemacom.cf", true }, @@ -16650,6 +19765,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bazar-online.tk", true }, { "bazar-pc.tk", true }, { "bazar.bg", false }, + { "bazardelcentro.net", true }, { "bazardunet.tk", true }, { "bazarfds.com.br", true }, { "bazari.com.pl", true }, @@ -16657,8 +19773,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bazarotehijos.com", true }, { "bazdell.com", false }, { "bazdidaval.ir", true }, - { "bazendefter.com", true }, - { "bazhan.me", true }, + { "baze.cz", true }, + { "bazel.build", true }, { "bazhan.wang", true }, { "bazinga-events.nl", true }, { "bazos.at", true }, @@ -16666,6 +19782,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bazos.pl", true }, { "bazos.sk", true }, { "bazziergraphik.com", true }, + { "bb-aroundtheworld.se", true }, { "bb.church", true }, { "bb00228.com", false }, { "bb057.com", false }, @@ -16684,15 +19801,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bbalposticino.it", true }, { "bbamsch.com", true }, { "bbb1991.me", false }, + { "bbbb.loan", true }, { "bbbff.net", true }, - { "bbc-anal.com", true }, + { "bbc.co.uk", false }, + { "bbc.com", false }, { "bbc67.fr", true }, { "bbcastles.com", true }, + { "bbcincorp.com", true }, { "bbclyra.tk", true }, { "bbcomcdn.com", true }, { "bbcsuk.co.uk", true }, { "bbcustomremodeling.com", true }, - { "bbforums.com", true }, + { "bbfandom.com", true }, { "bbfxtraders.com", true }, { "bbg.org", true }, { "bbgeschenke.ch", false }, @@ -16709,26 +19829,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bbkanews.com", true }, { "bbkanews.org", true }, { "bbkanews.uk", true }, - { "bbkl.org", false }, { "bbkworldwide.jp", true }, - { "bbld.de", true }, { "bblsa.ch", false }, - { "bbmagnagrecia.it", true }, + { "bbmagnagrecia.it", false }, { "bbmak.tk", true }, { "bbmsarauniteam.com", true }, { "bbnx.net", true }, - { "bbox-mag.fr", true }, + { "bbp.ng", true }, { "bbpnas.win", true }, + { "bbqblessings.com", false }, { "bbqs-algarve.com", true }, + { "bbrassart.fr", true }, { "bbrigittae.hu", true }, + { "bbrmonza.it", true }, + { "bbrp.org", true }, + { "bbs-buchholz.com", true }, + { "bbs-buchholz.eu", true }, + { "bbs.lc", true }, { "bbschat.tk", true }, { "bbsec.xyz", true }, - { "bbsgood.com", true }, + { "bbtk.com", true }, { "bbunits.de", true }, { "bbusa.tk", true }, { "bbw-wrestling.com", true }, { "bbw.dating", true }, + { "bbwanalsex.com", true }, { "bbwhale.org", true }, + { "bbwmellon.com", true }, + { "bbwmovies.com", true }, + { "bbwpictures.com", true }, + { "bbwpornpics.com", true }, + { "bbwpussytube.com", true }, { "bbwsexclips.com", true }, { "bbwteens.org", true }, { "bbxin9.net", true }, @@ -16737,66 +19868,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bc-diffusion.com", true }, { "bcabs.com", true }, { "bcaf.uk", true }, + { "bcakuwait.com", true }, + { "bcalabsokc.com", true }, { "bcalles.dk", true }, { "bcalles.eu", true }, { "bcallesen.dk", true }, { "bcallesen.eu", true }, { "bcansw.com.au", true }, + { "bcarpentrypro.com", true }, + { "bcbsfepvision.com", true }, { "bcbudonline.com", true }, { "bcbulle.ch", false }, { "bcccremeno.it", true }, + { "bccx.eu.org", true }, + { "bccxo.com", true }, { "bcdiesel.ca", true }, + { "bcdn.me", true }, { "bcdonadio.com", true }, { "bcdonadio.com.br", true }, { "bcdonadio.org", true }, + { "bceaf.org", true }, { "bcfp.gov", true }, { "bcgefatap.com", true }, { "bchep.com", true }, - { "bchi.xyz", true }, - { "bcis.co.uk", true }, + { "bcis.co.uk", false }, { "bck-koethen.de", true }, { "bck-lelystad.nl", true }, - { "bckaccompressoroz.com", true }, { "bckl.me", true }, - { "bclogandtimberbuilders.com", true }, + { "bclserver.se", true }, { "bcmguide.com", true }, { "bcmhire.co.uk", true }, - { "bcmlu.org", true }, { "bcn.cv", true }, { "bcnation.com", true }, { "bcnet.com.hk", true }, { "bcoffices.com.mx", true }, - { "bcome.nl", true }, { "bcomm.com.au", true }, + { "bconcept.be", true }, { "bcpc-ccgpfcheminots.com", true }, { "bcrnews.tk", true }, { "bcrook.com", true }, { "bcrypt.online", true }, + { "bcs-talk.com", true }, { "bcschool.cn", true }, - { "bcswampcabins.com", true }, + { "bcsnygroup.com", true }, { "bcsytv.com", false }, + { "bcu.ac.uk", true }, { "bcubeanalytics.com", true }, - { "bcubic.net", true }, + { "bcuniversity.tech", true }, + { "bcutah.gov", true }, { "bcyw56.live", false }, { "bcyw56.top", true }, { "bczeeland.tk", true }, + { "bd-friend.com", true }, { "bd-media.tk", true }, { "bd.foundation", true }, { "bda-boulevarddesairs.com", false }, + { "bdasites.in", true }, { "bdbe.ga", true }, { "bdbxml.net", true }, { "bdd.fi", true }, { "bddam.fr", true }, { "bddam.one", true }, + { "bdeducator.com", true }, + { "bdeep.org", true }, { "bdew.net", true }, { "bdfriends.tk", true }, { "bdgroup-lab.com", true }, { "bdix.link", true }, + { "bdli.de", true }, { "bdmusic25.us", true }, { "bdo-tools.jp", true }, + { "bdocfurniture.com", true }, { "bdpachicago.tech", true }, { "bdpestsolutionsstlouis.com", true }, + { "bdpn.ru", true }, { "bdragon.com", true }, + { "bdrmedia.rs", true }, + { "bdsdonghanh.com", true }, { "bdsmbibliothek.net", true }, { "bdsmcontrol.com", true }, { "bdsmdating.tk", true }, @@ -16804,13 +19952,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bdsu-connect.de", true }, { "bdsu-kongress.de", true }, { "bdsu.de", true }, - { "bdt001.com", true }, { "bdtc.com.bd", true }, { "bdtd.nl", true }, { "bdtechnews.tk", true }, { "be-craft.de", true }, { "be-free.gq", true }, - { "be-ka-tec.de", true }, { "be-nice.digital", true }, { "be-real.life", false }, { "be-up-developpement.com", true }, @@ -16818,24 +19964,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "be-webdesign.com", true }, { "be.ax", true }, { "be.search.yahoo.com", false }, + { "be.st", true }, { "be2cloud.de", true }, { "be4web.com", true }, { "be9418.com", true }, { "be9418.info", true }, { "be9418.net", true }, { "be9418.org", true }, + { "be9458.net", false }, + { "be9458.org", false }, { "be958.info", true }, { "be958.org", true }, { "be9966.com", true }, { "bea.expert", false }, { "bea.gov", true }, { "beabadoartesanato.com.br", true }, + { "beable.com", true }, { "beacham.online", true }, { "beachcitybody.com", true }, { "beachcitycastles.com", true }, { "beachcruisers.tk", true }, { "beachlife4life.cf", true }, - { "beachmarketing.co.uk", true }, { "beachmonster.tk", true }, { "beachpoint.tk", true }, { "beachsmile.com", true }, @@ -16844,9 +19993,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beachvolleyball.tk", true }, { "beachworldchampion.tk", true }, { "beacinsight.com", true }, + { "beaconcart.com", true }, { "beaconfed.org", true }, - { "beaconhospital.com.my", true }, - { "beaconmm.com", true }, + { "beaconhealthoptions.com", true }, + { "beaconhouse.org.uk", true }, { "beaconny.gov", true }, { "beaconstac.com", true }, { "beadaptive.ca", true }, @@ -16855,10 +20005,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beadedcouture.tk", true }, { "beadings.tk", true }, { "beadseh.ca", true }, - { "beaflamingo.today", true }, { "beager.ga", true }, - { "beagleboard.org", true }, - { "beaglecare.com", true }, { "beagles.tk", true }, { "beaglesaspets.com", true }, { "beaglesecurity.com", true }, @@ -16866,7 +20013,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beakbirds.com", true }, { "beaker.coffee", true }, { "beal.edu", true }, + { "bealcreative.com.au", true }, { "bealefss.marketing", true }, + { "bealeslandscaping.co.uk", true }, { "bealpha.pl", true }, { "beam-life.tk", true }, { "beam-to.me", true }, @@ -16875,10 +20024,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beamitaly.tk", true }, { "beamitapp.com", true }, { "beamrustproofing.com.au", true }, - { "beanandbarrel.co.za", true }, - { "beanbagaa.com", true }, + { "beamy-lake.com", true }, { "beanbot.party", true }, - { "beanboygames.com", true }, { "beancount.io", true }, { "beanilla.com", true }, { "beanjuice.me", true }, @@ -16890,15 +20037,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bearcosports.com.br", true }, { "bearcreekcubschildcare.com", true }, { "bearcreektownshipmi.gov", true }, + { "beard.se", true }, + { "beardboys.co.za", true }, { "bearded.sexy", true }, - { "beardedbearthegame.com", false }, { "bearden.io", true }, { "beardic.cn", true }, { "beardsome.me", true }, { "bearev.xyz", true }, { "bearfactory.tk", true }, { "bearfarm.tk", true }, - { "beargoggleson.com", true }, + { "beargarden.club", true }, + { "beargorilla.com", true }, { "bearings.tk", true }, { "bearingworks.com", true }, { "bearlakelife.com", true }, @@ -16907,37 +20056,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bearsunderland.com", true }, { "bearzoutdoor.com", true }, { "beasel.biz", true }, - { "beashandmade.com", true }, { "beast-books.com", true }, { "beast.rent", true }, { "beastiejob.com", true }, { "beastlog.tk", true }, { "beastnet.works", true }, { "beastnet.xyz", true }, + { "beastowner.com", true }, { "beastowner.li", true }, + { "beatachoroszynska.pl", true }, { "beatbreaker.tk", true }, { "beatday.com", true }, { "beatfeld.de", true }, { "beatfreaks.tk", true }, { "beatle.tk", true }, { "beatmaker.ml", true }, + { "beatmalaria.org", true }, + { "beatoapp.com", true }, + { "beatolympics.xyz", true }, { "beaton.tk", true }, { "beatquantum.com", true }, { "beatrice-nightscout.herokuapp.com", true }, { "beatrice-raws.org", true }, + { "beatricedailysun.com", true }, { "beatriz-urbano-vega.tk", true }, { "beatrizaebischer.ch", false }, { "beatrizmartinez.tk", true }, + { "beatsaberchampionship.eu", true }, { "beatsdope.com", true }, - { "beatsearch.net", true }, + { "beatsearch.net", false }, { "beatsnbits.nl", true }, { "beatsta.tk", true }, { "beatthebastards.tk", true }, - { "beatthecpa.com", true }, { "beatuprobot.net", true }, { "beatzone.tk", true }, { "beau.cat", true }, - { "beaucrabill.com", true }, + { "beaucrabill.com", false }, { "beaufortcastawaycharter.com", true }, { "beaufortcountync.gov", true }, { "beauhilton.com", true }, @@ -16945,6 +20099,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beaumontcabusiness.gov", true }, { "beaute-eternelle.ch", false }, { "beautiful-lingerie.tk", true }, + { "beautiful.ai", true }, { "beautifulart.ml", true }, { "beautifulplaces.tk", true }, { "beautifulreflectionsmedspa.com", true }, @@ -16972,6 +20127,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beautyarticles.tk", true }, { "beautybism.com", true }, { "beautybox.ro", true }, + { "beautyboxes.net", true }, { "beautyby.tv", true }, { "beautycarepack.com.ng", true }, { "beautycom.club", true }, @@ -16982,18 +20138,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beautyindistress.tk", true }, { "beautyinweb.net", true }, { "beautyisfine.tk", true }, + { "beautykatherin.com", true }, { "beautykiss.com", true }, { "beautylookz.nl", true }, { "beautymadel.de", true }, + { "beautyoverture.com", true }, + { "beautysane.com", true }, { "beautyschool.od.ua", true }, { "beautyseasons.ru", true }, + { "beautyspaceshop.com", true }, + { "beautyspacestore.com", true }, { "beautyspot.tk", true }, { "beaver-creek.ga", true }, { "beaver.com.br", true }, - { "beavercountian.com", true }, { "beaverdamautos.com", true }, + { "beavertails.com", true }, { "beavertales.ca", true }, { "beavillabea.it", true }, + { "beavivo.de", false }, { "bebaspedia.com", true }, { "bebbiboni.tk", true }, { "bebe2luxe.fr", true }, @@ -17003,37 +20165,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bebechegou.com.br", true }, { "bebef.de", true }, { "bebefofuxo.com.br", true }, - { "bebekyap.com", true }, { "bebemamae.com", true }, { "bebes.uno", true }, { "bebesreborns.com", true }, { "bebest.gov", true }, { "bebetrotteur.com", true }, { "bebidasrd.com", true }, + { "beble.pl", true }, + { "bebodywise.com", true }, { "beboldpr.com", true }, { "bebout.domains", true }, { "bebout.pw", true }, + { "bebr.loan", true }, { "bec.dk", false }, + { "becallgroup.com", true }, { "because.co.il", true }, { "becausecapitalism.org", true }, { "beccaanne.photography", true }, { "beccajoshwedding.com", true }, { "bech32.net", true }, + { "beck.pl", true }, { "beckdesign.tk", true }, { "becker-annika.de", true }, { "becker.wales", true }, { "beckerpumps.com", true }, { "becklove.cn", true }, - { "beckmccormick.com", true }, + { "beckmandxapps.com", true }, + { "beckmanngmbh.de", true }, { "beckylicious.tk", true }, { "beclan.tk", true }, { "becleverwithyourcash.com", true }, + { "becli.com", true }, { "beclick.co.il", true }, { "becoairandheat.com", true }, { "becollective.com", true }, + { "become-a-bounty-hunter.com", true }, { "become-lucky.com", true }, + { "becomeaparalegal.org", true }, + { "becomebravehorsemanship.nl", true }, { "becomewebdeveloper.tk", true }, { "beconnect.cf", true }, + { "beconstructive.com", true }, { "becquerelgroup.com", true }, { "becs.ch", false }, { "becubed.co", false }, @@ -17044,58 +20216,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bedandbreakfasteuropa.com", true }, { "bedandbreakfasthoekvanholland.com", true }, { "bedavainternet.club", true }, + { "beddingexperts.com", true }, { "bede.fr", true }, { "bedeiah.tk", true }, { "bedels.nl", true }, { "bedenica.hr", true }, { "bedford911.com", true }, { "bedfordnissanparts.com", true }, + { "bedful.com", true }, + { "bedienungsanleitung24.de", true }, + { "bedinfo.com", true }, { "bedlingtonterrier.com.br", true }, { "bedofcorpses.tk", true }, { "bedouille.com", true }, + { "bedrijfs-feesten.nl", true }, { "bedrijfsfeesten.tk", true }, { "bedrijfsfotoreportages.nl", true }, + { "bedrijfswasmachine.nl", true }, { "bedrockcommunity.ml", true }, { "bedrocklinux.org", true }, + { "bedsoon.com", true }, { "bedstecasinobonusser.dk", true }, { "bedtimeflirt.com", true }, { "bedum-blues.tk", true }, + { "bedwars.party", true }, { "bedwettingyoungsters.tk", true }, - { "bedziekryzys.pl", true }, { "bee-creative.nl", true }, { "bee-line.org.uk", true }, { "bee-removal-dublin.com", true }, - { "bee.supply", true }, { "bee.tools", true }, { "beebeads.ga", true }, { "beecambio.com.br", true }, { "beecare.ch", true }, + { "beechwoodindustrial.com", true }, { "beedsolyjas.tk", true }, { "beefclan.tk", true }, + { "beeg.hu", true }, + { "beegarage.com", true }, { "beehealthyllc.com", true }, { "beehive.govt.nz", true }, + { "beehive.systems", true }, { "beehive42.com", true }, { "beehive42.eu", true }, { "beehive42.net", true }, { "beehive42.nl", true }, { "beehive42.org", true }, { "beekbier.nl", true }, - { "beekeeper.blog", true }, - { "beekeeper.clothing", true }, { "beekeeper.supply", true }, { "beekeeper.tools", true }, - { "beekeeping.tools", true }, { "beekeepingfiji.com", true }, { "beeksnetwork.nl", true }, { "beeldbankgent.be", true }, + { "beeliarspirit.org", true }, + { "beeline.am", true }, { "beelit.com", false }, + { "beeming.co.za", true }, { "beeming.net", true }, { "beemprimelogistics.com", true }, + { "beeone.nl", true }, + { "beepcar.ru", true }, + { "beeportfolio.com", true }, { "beer-sheva.city", true }, { "beer9.com", true }, - { "beerarchy.tk", true }, + { "beerbruhs.com", true }, { "beercast.co.uk", true }, - { "beerdigung-hellersdorf.de", true }, + { "beeremovaljohannesburg.co.za", true }, + { "beeremovalpretoria.co.za", true }, { "beeremovalspretoria.co.za", true }, { "beergifts.tk", true }, { "beerglasses.tk", true }, @@ -17108,49 +20294,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beernews.ga", true }, { "beerradar.no", true }, { "beerradar.party", true }, - { "beers.my", true }, + { "beerre.com", true }, { "beersandco.ch", true }, { "beersconf.com", true }, { "beersheba.co.il", true }, { "beersheva.city", true }, { "beersheva.co.il", true }, { "beerview.ga", true }, + { "beerwallpa.com", true }, { "beerxa.cz", true }, - { "beesbuzzstudio.com", true }, { "beescloud.com", true }, { "beesco.us", true }, { "beesex.xyz", true }, + { "beesnoosa.com", true }, { "beestar.it", true }, { "beestation13.com", true }, + { "beestech.fr", true }, { "beeswarmrehoming.com.au", true }, { "beesweethoney.co.za", true }, { "beet-und-balkonpflanze-des-jahres.de", true }, { "beetech.global", true }, { "beetgroup.id", true }, { "beethoveninlove.com", true }, - { "beetman.net", true }, { "beetsforyou.xyz", true }, { "beeutifulparties.co.uk", true }, + { "beeweighed.co.uk", true }, { "beexfit.com", false }, { "beezkneezcastles.co.uk", true }, { "beeznest.com", true }, + { "befantasy.tk", true }, { "befoodsafe.gov", true }, { "beforeafter.gq", true }, { "beforethedawn.tk", true }, { "beforeyoueatoc.com", true }, { "beframed.ch", false }, { "befreewifi.info", true }, + { "befunddolmetscher.de", true }, { "befundonline.de", true }, - { "befunky.in", true }, { "bega-dc.gov", true }, { "begabungsfoerderung.info", true }, { "begemoth.tk", true }, { "begethost.cf", true }, { "begin-motorcycling.co.uk", true }, + { "beginnercampingguide.top", true }, { "beginwp.tips", true }, { "begleitung-zuhause.at", true }, { "begonias.tk", true }, - { "begoth.boutique", false }, + { "begoth.boutique", true }, { "begovel.shop", true }, { "begravningsbyranhumana.se", true }, { "begundal.tk", true }, @@ -17164,6 +20354,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "behaving.tk", true }, { "behaviorchangeimpact.org", true }, { "behead.de", true }, + { "behealthandrehab.com", true }, + { "behealthoncologia.com", true }, + { "behealthyeveryday.eu", true }, { "behemoth.cf", true }, { "beherit.pl", true }, { "behinam.co.il", true }, @@ -17171,37 +20364,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "behindenemyminds.be", true }, { "behindenemyminds.eu", true }, { "behindertenagentur.de", true }, + { "behindthebuckpass.com", true }, { "behindthedesk.tk", true }, + { "behindthemars.de", true }, { "behleem.tk", true }, - { "behmmjc.com", true }, { "behoerden-online-dienste.de", true }, { "behold.gq", true }, + { "behomewithlove.com.br", true }, { "behoreal.cz", true }, + { "behrami.com", true }, { "behrer.se", true }, { "bei18.com", true }, + { "beiduofu.com", true }, { "beiersdorf-svz.ch", true }, { "beijing.bj", true }, { "beijinglug.club", true }, + { "beijiquan.com", true }, + { "beikeil.de", true }, { "beimchristoph.de", true }, { "beinad.com", true }, { "beinad.ru", true }, { "beinghuman.tk", true }, + { "beinghumanpsychotherapy.com.au", true }, { "beingmad.org", true }, - { "beingtricky.com", true }, + { "beingoptimist.com", true }, { "beinsports.pro", true }, + { "beinsured.cloud", false }, { "beinteractive.pl", true }, + { "beiqilai.com", true }, + { "beira.pt", true }, { "beiramar.tk", true }, - { "beirutclis.com", true }, + { "beirel.ru", true }, { "beitmidrashrambam.com", true }, { "beizsoft.co.uk", true }, { "bejago.com", true }, { "bejarano.io", true }, { "bejbi.net", true }, { "bejo.be", false }, + { "bejo.bg", false }, { "bejo.by", false }, { "bejo.cl", false }, { "bejo.cn", false }, { "bejo.com", false }, + { "bejo.com.au", false }, { "bejo.com.br", false }, { "bejo.com.mx", false }, { "bejo.cz", false }, @@ -17216,6 +20421,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bejo.ro", false }, { "bejo.ru", false }, { "bejo.sk", false }, + { "bejo.ua", false }, { "bejo.vn", false }, { "bejoandes.cl", false }, { "bejogt.com", false }, @@ -17224,7 +20430,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bejoitalia.it", false }, { "bejosamen.de", false }, { "bejoseeds.com", false }, - { "beka-eg.com", true }, { "bekabazar.cz", true }, { "bekeltetes.hu", true }, { "beklenengazete.com", true }, @@ -17233,12 +20438,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beko.ie", true }, { "bekolite.com", true }, { "bekoplc.com", true }, + { "bel-air1998.com", true }, { "bel-assainissement-service.fr", true }, { "bel-snegirek.ru", false }, { "belacapa.com.br", true }, { "belacine.com", true }, { "belafonte.co", true }, - { "belajar.store", true }, + { "belajarcarabelajar.com", true }, { "belajarpsikology.tk", true }, { "belanews.tk", true }, { "belani.eu", true }, @@ -17250,6 +20456,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belarto.pl", true }, { "belarus-mtz.gq", true }, { "belarus.tk", true }, + { "belarusmemorials.com", true }, { "belarustoday.tk", true }, { "belarustravel.tk", true }, { "belastingdienst-in-beeld.nl", false }, @@ -17257,10 +20464,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belavis.com", true }, { "belayarus.tk", true }, { "belcanto.cz", true }, + { "beldet.be", true }, { "beleadsteam.com", true }, { "belebey.city", true }, { "beleefheemstede.nl", true }, { "beleggingspanden-financiering.nl", false }, + { "belegit.org", true }, { "belezadateresa.com.br", true }, { "belezashopping.com.br", true }, { "belf.ml", true }, @@ -17300,6 +20509,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belic.net", true }, { "belics.com", true }, { "belidi.tk", true }, + { "belidzs.hu", false }, { "belieber.tk", true }, { "belien-tweedehandswagens.be", true }, { "believablebook.com", false }, @@ -17308,10 +20518,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belindaweb.tk", true }, { "belinks.tk", true }, { "belinsky.tk", true }, + { "belivr.tech", true }, { "beliyo.tk", true }, { "belizemap.tk", true }, { "belk.io", true }, - { "belkamfish.com", true }, + { "belka.online", true }, { "belki.tk", true }, { "belknapcounty.gov", true }, { "belkys.net", false }, @@ -17320,17 +20531,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bella-klein.org", true }, { "bella.network", true }, { "bellaaroma.com.tw", true }, + { "bellacasarealtyaz.com", true }, { "belladeluxxe.net", true }, { "bellafashion.tk", true }, { "bellaflor.net", true }, + { "bellaireroofinginc.com", true }, { "bellamodeling.com", true }, { "bellamy.cloud", true }, + { "bellamy.md", true }, { "bellanews.tk", true }, { "bellaslokal.de", true }, { "bellassubsandpizza.com", true }, + { "bellastate.ca", true }, { "bellatight.com", true }, { "bellavistaoutdoor.com", true }, { "bellcomp.co.uk", true }, + { "bellcontainer.co.uk", true }, { "belle-bete.ca", true }, { "belle-epoque-toys.com", true }, { "belle-lingerie.co.uk", false }, @@ -17338,25 +20554,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bellebaum.eu", true }, { "bellecarmen.tk", true }, { "bellehorizon.co.za", true }, + { "bellenews.com", true }, { "bellenundballern.de", true }, { "belleplaineiowa.gov", true }, { "belleplainemn.gov", true }, { "bellesetrebelles.tk", true }, { "bellevilleboot.com", true }, { "bellevueduilawyers.com", true }, - { "bellezademujeres.com", true }, { "bellezanatural.life", true }, + { "bellezon-shop.com", true }, { "bellezzasenzalimiti.it", true }, { "bellflowerlactation.com", true }, - { "bellinifashion.nl", true }, + { "bellhowell.net", true }, { "bellissime.tk", true }, - { "bellizas.com.br", true }, + { "bellmeadtx.gov", true }, + { "belloo.date", true }, { "belloweb.tk", true }, { "bellowsafs.marketing", true }, { "belloy.net", false }, + { "bellpi.com", true }, { "bellreguard.tk", true }, - { "bellsapplianceservice.com", true }, { "bellsweets.com", true }, + { "belltech.it", true }, { "bellthrogh.com", true }, { "belltownfarms.com", true }, { "belltownpower.com", true }, @@ -17365,7 +20584,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belmontgoessolar.org", true }, { "belmontnh.gov", true }, { "belmontsheriffohio.gov", true }, - { "belmorrishotel.com.ng", true }, { "belmundo.org", true }, { "belocallyseo.com", true }, { "beloevino.ml", true }, @@ -17378,6 +20596,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "belrosstrakh.tk", true }, { "belrybalka.cf", true }, { "bels-lijntje.nl", true }, + { "belsat.be", true }, { "belsilos.com", true }, { "belt.black", true }, { "beltanelabrosse.tk", true }, @@ -17387,63 +20606,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beltramifashion.be", true }, { "belug.de", true }, { "belugadev.ml", true }, + { "belveb24.by", true }, + { "belvidereil.gov", true }, { "belviderepoliceil.gov", true }, + { "belvideretownshipmi.gov", true }, { "belvitajoreggelt.hu", true }, { "belvo.com", true }, + { "belvoc.be", true }, { "belvoirbouncycastles.co.uk", true }, { "belwederczykow.eu", true }, { "belzlongroup.com", true }, { "bembee.tk", true }, { "bemcorp.de", true }, + { "bemergroup.com", true }, { "bemindly.com", true }, + { "bempensadoconsul.com.br", true }, { "bemsoft.pl", true }, + { "bemvindoaolar.com.br", true }, { "ben-deneme.gq", true }, { "ben-energy.com", false }, { "ben-stock.de", true }, + { "ben.org.uk", true }, { "ben2.co.il", true }, { "benabbott.nz", true }, { "benabrams.it", true }, { "benadryl.ml", true }, { "benadryld.tk", true }, + { "benaldirma.net", true }, { "benary.org", true }, { "benas.tk", true }, { "benatherton.com", true }, { "benatskezrkadla.sk", true }, { "benazir-reaction.tk", true }, { "benbalter.com", true }, + { "benbenben.loan", true }, { "benbozsa.ca", true }, { "benc.io", true }, { "benceskorka.com", true }, + { "bencheetham.me.uk", true }, { "benchling.com", true }, + { "benchmark-dental.com", true }, + { "benchmark-ip.com", true }, { "benchmarkmonument.com", true }, - { "benchstoolo.com", true }, { "benclarkphotography.com.au", true }, { "bencrump.com", true }, { "bendechrai.com", false }, { "bendemaree.com", true }, { "bender.ga", true }, + { "benderssportsandspirits.com", true }, + { "bendhvacpros.com", true }, { "bendigoland.com.au", true }, { "bendingtheending.com", true }, - { "bendix.co", true }, { "bendjadid.com", true }, { "bendminding.com", true }, + { "bendwebs.com", true }, { "bendyworks.com", true }, { "beneathvt.com", true }, { "beneazy.cf", true }, { "benedetti.ca", true }, - { "benedict-balzer.de", true }, { "benedict.tk", true }, { "benedicthanshenwang.com", true }, { "benedictoaguilar.tech", true }, { "benedikto.tk", true }, { "benee-awraham.nl", true }, { "benefeds.com", true }, + { "benefitboys.com", true }, + { "benefitharbor.com", true }, + { "benefits.gov", true }, + { "benefitsbookcase.com", true }, + { "benefitsystems.ro", true }, { "benefitz.cf", true }, { "benefitz.ga", true }, { "benefitz.gq", true }, { "benefitz.ml", true }, { "benekill.tk", true }, - { "benepiscinas.com.br", true }, + { "benemortasia.com", true }, + { "benemortasia.eu", true }, + { "benemortasia.nl", true }, + { "benemortasia.us", true }, { "benepla.com", true }, { "benetcasablancas.tk", true }, { "benevisim.com", true }, @@ -17452,6 +20692,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "benevita.live", true }, { "benevita.organic", true }, { "benewahcountyid.gov", true }, + { "benflix.info", false }, { "bengalcat.tk", true }, { "bengalcatscare.com", true }, { "bengaldisom.tk", true }, @@ -17460,25 +20701,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bengaltourism.ml", true }, { "bengalurugifts.com", true }, { "bengaratei.com", true }, + { "bengcao.com", true }, { "bengisureklam.com", true }, { "bengkelkeramik.tk", true }, { "bengou.tk", true }, { "bengt.org", true }, + { "benhammoutex.com", true }, { "benhamplateau.tk", true }, { "benhaney.com", true }, { "benhartmann.de", false }, + { "benhavenarchives.org", true }, { "benhocking.com", true }, { "benhoeg.com", false }, + { "benia.cz", true }, { "beniajan.tk", true }, + { "benicee.com", true }, { "benidormcd.tk", true }, - { "benihyangbaik.com", true }, + { "benify.com", true }, + { "benify.se", true }, + { "benimseom.com", true }, { "benimsetin.com", true }, { "benimsetin.org", true }, { "beninca.link", true }, - { "benjamin-hering.com", true }, { "benjamin-horvath.com", true }, - { "benjamin-mary.herokuapp.com", true }, { "benjamin-suess.de", true }, + { "benjamin-thomsen.de", true }, { "benjaminbedard.com", true }, { "benjaminblack.net", true }, { "benjamindietrich.com", true }, @@ -17489,6 +20736,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "benjaminleupold.com", true }, { "benjaminpiquet.fr", false }, { "benjaminprevot.fr", true }, + { "benjaminrancourt.ca", true }, { "benjamins.com", true }, { "benjaminvasel.de", true }, { "benjamorphism.com", true }, @@ -17501,28 +20749,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "benleb.de", true }, { "benleemd.com", true }, { "benleggiero.me", true }, - { "benleurquin.be", true }, { "benmack.net", true }, { "benmarron.co.uk", true }, { "benmatthews.com.au", true }, { "benmedia.nl", true }, - { "bennet.org", true }, + { "bennet.org", false }, { "bennettsbouncycastlehire.co.uk", true }, { "bennettshire.co.uk", true }, { "benni1.eu", true }, { "bennie.com", true }, { "bennierobinson.com", true }, + { "benningtonne.gov", true }, { "benningtontownshipmi.gov", true }, { "bennink.me", true }, { "benno.frl", true }, - { "benny003.de", true }, { "bennygommers.nl", true }, { "bennythink.com", true }, { "benobi.one", false }, + { "benoit.jp.net", true }, { "benoitchantre.com", true }, - { "benoniplumber24-7.co.za", true }, { "benprisby.com", true }, { "benpro.fr", true }, + { "benq.com", true }, + { "benq.eu", true }, { "benrogers.tk", true }, { "bensbouncycastles.co.uk", true }, { "benschnarr.com", true }, @@ -17535,42 +20784,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "benstevinson.com", true }, { "bensvriend.tk", true }, { "bent-nails.com", true }, + { "bentallgreenoak.com", false }, + { "bentaylorforcroydonsouth.online", true }, + { "bentcreekfarm.us", true }, { "bentertain.de", false }, { "benthanhtourist.com", true }, + { "bentina.com", true }, { "bentley.blog", true }, { "bentley.link", true }, { "bentleyks.gov", true }, { "bento-kurumaya.co.jp", true }, { "bentoncountyia.gov", true }, { "bentoncountyor.gov", true }, + { "bentoncountywa.gov", true }, { "bentongroup.co.uk", true }, + { "bentonvillemedia.com", true }, + { "bentonvilleppc.com", true }, { "bentonweatherstone.co.uk", true }, { "bentonwi.gov", true }, { "bentpunk.tk", true }, { "bentrask.com", true }, { "benu.cz", true }, + { "benu.rs", true }, + { "benuapotheek.nl", true }, { "benulekaren.sk", true }, + { "benunapredpis.cz", true }, { "benwoo.org", true }, { "benz-hikaku.com", true }, { "benzblog.tk", true }, { "benzi.io", true }, + { "benzieco.gov", true }, { "benzin.tk", true }, { "benzonestore.tk", true }, { "benzou-space.com", true }, { "beonas.ddns.net", true }, { "beonline.ml", true }, + { "beornish.com", true }, { "beospain.tk", true }, { "bep.gov", true }, { "bepayd.com", true }, + { "bepersia.com", false }, { "bephoenix.org.uk", false }, - { "beplephan.com", true }, + { "bepick.blog", true }, + { "bepiratedo.gay", true }, { "bepositive.ml", true }, { "beptutotnhat.com", true }, { "bepxl.art", true }, { "bepzi.com", true }, { "beq.cc", true }, { "bequ1ck.com", true }, + { "bequeen.re", true }, { "bequiia.com", true }, + { "berakal.com", true }, { "beran.tk", true }, { "berandalcorp.tk", true }, { "beranovi.com", true }, @@ -17580,6 +20845,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beratungswelt.dvag", true }, { "berbatov.ga", true }, { "berbervandenberg.tk", true }, + { "berchialla.it", true }, { "berchtesgaden-hilft.de", true }, { "berdan.tk", true }, { "berdu.id", true }, @@ -17587,24 +20853,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bereelcorporation.com", true }, { "bereginy.com.ua", true }, { "bereginya-lada.ru", true }, + { "beregite-zdorovje.ru", true }, { "beregusha.com", true }, { "bereikbaargent.be", true }, + { "berekenen.nl", true }, + { "berekenhet.nl", true }, { "berend.tk", true }, { "bereregisdental.co.uk", true }, { "beresbalazs.tk", true }, { "berete.de", true }, { "beretinec.hr", true }, + { "berg-tal.com", true }, { "berg.social", true }, + { "bergaya.id", true }, { "berge.tk", true }, { "bergelevrad.tk", true }, { "bergenfieldnj.gov", true }, - { "bergenson.nl", false }, - { "berger-chiro.com", true }, { "bergerandgreen.com", true }, { "bergevoet-fa.nl", false }, { "bergfex.at", true }, + { "bergfex.ch", true }, { "bergfex.com", true }, + { "bergfex.de", true }, + { "bergfex.it", true }, { "berggeit.tk", true }, + { "berghof-foundation.org", true }, { "berghuus.ch", true }, { "berglust-pur.de", true }, { "bergman-gmbh.de", true }, @@ -17618,33 +20891,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bergwandercamp.info", true }, { "berhampore-gateway.tk", true }, { "berichtsheft-vorlage.de", true }, + { "berighthere.com", true }, { "berightthere.eu", true }, { "berikod.ru", true }, - { "beris.us", true }, - { "beritalima.com", true }, + { "berinovatif.net", false }, { "beritamotor.tk", true }, { "beritanow.tk", true }, { "beritatopbanten.com", false }, + { "beritavirall.com", true }, { "berjadagar.is", true }, { "berjou.me", true }, { "berk.tk", true }, + { "berkadia.com", true }, { "berkat-luqs.ddns.net", true }, { "berkbrands.com", true }, { "berkeleyca.gov", true }, + { "berkeleypolitical.review", true }, { "berkhills.com", true }, - { "berkkalkan.com.tr", true }, { "berksabstract.com", true }, { "berksestateplanning.com", true }, - { "berksnetworking.com", true }, + { "berkshire.com", true }, + { "berkshireesupply.com", true }, + { "berkspa.gov", true }, { "berkswatertech.com", true }, { "berlin-cuisine.com", true }, { "berlin-flirt.de", true }, { "berlin-hotel.tk", true }, + { "berlin-starlight-orchestra.de", true }, { "berlinal.gov", true }, { "berlincreators.de", true }, { "berlinct.gov", true }, { "berlindecouverte.fr", true }, { "berlingeriresort.it", true }, + { "berlinnhpd.gov", true }, { "berlintwpmi.gov", true }, { "berlinvt.gov", true }, { "berluga.com", true }, @@ -17660,77 +20939,92 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bernack.ga", true }, { "bernadette.tk", true }, { "bernadetteanderes.ch", false }, + { "bernadettehermsen.nl", true }, { "bernama.com.my", true }, { "bernar.do", true }, { "bernard-securite-protection.fr", true }, + { "bernard.fr", true }, + { "bernardbeneito.com", true }, { "bernardcontainers.be", false }, { "bernardez-photo.com", true }, { "bernarditadiaz.tk", true }, - { "bernardo.fm", true }, { "bernat.ch", true }, { "bernat.im", true }, - { "bernbrucher.com", true }, - { "bernbrucher.de", true }, + { "bernayslab.com", true }, { "berncoclerk.gov", true }, { "bernd-leitner-fotodesign.com", true }, { "bernd-leitner-fotodesign.de", true }, { "bernd-leitner.de", true }, + { "bernd-ungerer.com", false }, { "berndartmueller.com", false }, + { "berndtgen.org", true }, { "bernerland.cf", true }, { "bernerland.tk", true }, { "bernersennen.tk", true }, { "bernexskiclub.ch", false }, { "bernhard-eicher.ch", true }, { "bernhard-seidenspinner.de", true }, - { "bernhardkau.de", true }, { "bernhardluginbuehl.ch", true }, { "bernhardluginbuehl.com", true }, { "bernie.lol", true }, { "bernie.pics", true }, + { "bernieh.net", true }, { "bernieware.de", true }, + { "bernius.eu", true }, + { "bernius.xyz", true }, { "bernmail.ch", true }, { "bernoldi.com.ar", true }, + { "berntmuurling.nl", true }, { "bernyweb.net", true }, { "beroepenhuis.gent", true }, { "berr.yt", true }, { "berra.se", false }, { "berria.fi", true }, + { "berriabot.com", true }, + { "berriabot.fi", true }, { "berriacast.com", true }, { "berriacast.fi", true }, + { "berriainfo.com", true }, + { "berriainfo.fi", true }, + { "berriencountyga.gov", true }, + { "berries.com", true }, + { "berrnd.net", true }, { "berrus.com", true }, { "berry.cat", true }, { "berrycheapers.ga", true }, + { "berryevent.es", true }, { "berryvillear.gov", true }, { "berrywan.com", true }, + { "bersamatekno.com", true }, + { "bersatu.com.my", true }, { "berserk.gq", true }, { "berserk.tk", true }, { "bersierservices.ch", false }, { "bersotavocats.fr", false }, { "berst.cz", true }, { "bert-dijkink.tk", true }, + { "bert.org", true }, { "bertbrockham.org.uk", true }, + { "bertgroup.com", true }, { "berthabailey.com", true }, + { "berthaphil.com", true }, { "berthaundcarlbenzpreis.de", true }, { "berthelier.me", true }, - { "bertholdsson.com", false }, { "berthoudeconomicdevelopment.com", true }, - { "bertietrains.co.uk", true }, - { "bertietrains.com", true }, { "bertlight.com", true }, { "bertold.org", true }, { "bertoliniodontoiatria.it", true }, { "bertr.am", true }, - { "bertrand.bio", true }, - { "bertrandkeller.info", true }, + { "bertrand.bio", false }, + { "bertrandkeller.info", false }, { "bertrell.com", true }, { "bertsmithvwparts.com", true }, + { "bertusengelbrecht.com", true }, { "berwickpa.gov", true }, { "berz.one", true }, { "berzkalne.co.uk", true }, { "besanowsky.de", true }, { "besarfe.com", true }, - { "besate.ec", true }, - { "besb.io", true }, { "besb66.club", true }, { "besb66.me", true }, { "besb66.ninja", true }, @@ -17738,24 +21032,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "besb66.us", true }, { "bescoutednow.com", true }, { "bescover.com", true }, + { "besdev.uk", true }, { "besedovichi.tk", true }, { "besensi.com", true }, - { "beserved.eu", true }, { "besiconstruct.be", true }, { "besidemetal.tk", true }, { "besikta.se", true }, { "besiktasmtsk.com", true }, + { "besir.com", true }, + { "beskiden.com", true }, { "besnard.me", true }, { "besnik.de", false }, { "besnik.tk", true }, + { "besola.de", true }, { "besole.ch", true }, { "besolov.tk", true }, + { "besonderheit.com", true }, + { "besonders-s.at", true }, { "besox.be", true }, + { "bespaarbazaar.nl", true }, { "bespaarenergie.click", true }, { "bespaarnu.click", true }, { "bespoiled.nl", true }, { "bespokebathrooms.com.au", true }, - { "bespokemortgages.co.uk", true }, { "bespredel.tk", true }, { "bessels.tk", true }, { "bessems.com", true }, @@ -17785,17 +21084,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "best-mum.fr", true }, { "best-nursing-colleges.com", true }, { "best-of-bounce.co.uk", true }, + { "best-party.ru", true }, + { "best-pdf.com", true }, { "best-photobooth.ro", true }, - { "best-pool-cleaner.com", true }, { "best-seminar.gq", true }, { "best-seminar.ml", true }, { "best-software.tk", true }, - { "best-survival-bag.com", true }, + { "best-stroy.ru", true }, { "best-ticket.it", true }, { "best-tickets.co.uk", true }, { "best-tickets.com.au", true }, { "best-trucking-schools.com", true }, { "best-wedding-quotes.com", true }, + { "best10resumewriters.com", true }, { "best66.me", true }, { "besta.tk", true }, { "bestaction.tk", true }, @@ -17804,8 +21105,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestarts.tk", true }, { "bestasquadradas.org", true }, { "bestatos.com", true }, + { "bestatter.de", true }, { "bestattungen-kammerer.de", true }, { "bestattungshaus-kammerer.de", false }, + { "bestaucasinosites.com", true }, + { "bestaustraliancasinosites.com", true }, { "bestautoinsurance.com", true }, { "bestbatteriesonline.com", true }, { "bestbefore.com", true }, @@ -17817,13 +21121,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestbookmark.ml", true }, { "bestboot.cf", true }, { "bestbrakes.com", true }, - { "bestbrokerindia.com", true }, + { "bestbudseedbank.com", true }, { "bestbuyzone.com", true }, { "bestcamshow.tk", true }, + { "bestcanvaswallart.com", true }, { "bestcarscyprus.com", true }, - { "bestcivilattorneys.com", true }, + { "bestcash2020.com", true }, + { "bestcasinositesonline.com", true }, + { "bestchoicehomeinspections.com", true }, + { "bestclassifiedsusa.com", true }, { "bestclix.ml", true }, { "bestcms.tk", true }, + { "bestcollegeaid.com", true }, { "bestcreditcards.biz", true }, { "bestcreditcards.me", true }, { "bestcreditcards.news", true }, @@ -17834,55 +21143,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestdatingsite.ml", true }, { "bestdatingsite.tk", true }, { "bestdeal.co.in", true }, + { "bestdealstrips.com", true }, + { "bestdiabeteshealth.com", true }, { "bestdlsites2.tk", true }, { "bestdownloadscenter.com", true }, { "bestdslrcameras.tk", true }, { "bestecbdolie.com", true }, + { "bestech.de", true }, { "bestechgadgets.tk", true }, + { "besteckliste.com", true }, { "bestedeal.nl", true }, { "besteenergieleverancier.com", true }, + { "bestehen.com", true }, { "bestehostingproviders.nl", true }, { "bestelhetmaar.nl", true }, { "bestellipticalmachinereview.info", true }, { "bestelsportprijzen.nl", true }, { "bestemailmarketingsoftware.org", true }, + { "bestenlogin.com", true }, { "bestertagderwelt.de", true }, { "bestesb.net", true }, + { "bestescortsdirectory.com", true }, { "bestessayhelp.com", true }, - { "bestestofzuiger.com", true }, { "bestestquote.com", true }, { "bestethereumcasinos.io", true }, { "besteto.cz", true }, { "besteto.sk", true }, { "besteuitvaartverzekering.com", true }, { "bestfacts.ru", true }, + { "bestfewo.de", true }, { "bestfitnesswatchreview.info", true }, + { "bestforexeasy.com", true }, { "bestfornutrition.com", true }, { "bestfotostudio.com", true }, { "bestfriend.ga", true }, { "bestfriendsequality.org", true }, - { "bestgetest.nl", true }, + { "bestfriendsforever.com.br", true }, + { "bestgardener.info", true }, { "bestgiftever.ca", true }, + { "bestgolftrips.ca", true }, { "bestgriefbooks.com", true }, - { "besthairsale.com", true }, { "besthemes.tk", true }, { "besthobi.com", true }, - { "besthorsebedding.com", true }, + { "besthomescents.com", true }, + { "besthorsebedding.com", false }, { "besthost.cz", true }, { "besthouse.co.il", true }, { "besthumorsite.tk", true }, { "besti.it", true }, { "bestiahosting.com", true }, { "besties4life.ml", true }, - { "bestinbarter.com", true }, + { "bestincservices.com", true }, { "bestinductioncooktop.us", true }, - { "bestinfo.com.au", true }, - { "bestinshowing.com", true }, { "bestinsider.net", false }, { "bestinsulatedwaterbottle.tk", true }, - { "bestinterior.fr", true }, { "bestinver.es", false }, { "bestitwork.tk", true }, + { "bestjigsawreview.net", true }, { "bestjumptrampolines.be", true }, { "bestkbeauty.com", true }, { "bestkenmoredentists.com", true }, @@ -18032,7 +21349,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestliege.be", true }, { "bestlifek9training.com", true }, { "bestlyrics.tk", true }, + { "bestmasterofscienceinnursing.com", true }, + { "bestmastersinpsychology.com", true }, + { "bestmattressabout.com", true }, { "bestmattresses.tk", true }, + { "bestmaturepics.com", true }, { "bestmedsmmj.com", true }, { "bestmodels.ua", true }, { "bestmotherfucking.website", true }, @@ -18041,48 +21362,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bestnetflowanalyzer.com", true }, { "bestnewsmag.com", true }, { "bestnovelbooks.ga", true }, + { "bestnursingdegree.com", true }, + { "bestnursingmasters.com", true }, { "besto.cf", true }, { "besto.ga", true }, { "besto.tk", true }, { "bestofbooks.gq", true }, + { "bestofdate.com", true }, { "bestofjazz.org", true }, + { "bestofnuevovallarta.com", true }, { "bestoldmusic.tk", true }, { "bestoliveoils.com", true }, { "bestomania.tk", true }, - { "bestparking.xyz", true }, + { "bestonlinestuffs.com", true }, + { "bestparking.com", true }, { "bestpartyhire.com", true }, - { "bestperfumebrands.com", true }, + { "bestperfumebrands.com", false }, { "bestpig.fr", true }, { "bestplus.ml", true }, { "bestplus.tk", true }, + { "bestporn.pics", true }, + { "bestporn2022.com", true }, { "bestpornclip.com", true }, { "bestporngirls.com", true }, - { "bestpracticesblog.com", true }, - { "bestproductsaudit.com", true }, + { "bestpornpictures.com", true }, + { "bestportablegeneratorratings.com", true }, + { "bestpost.org", true }, + { "bestpressurewashingchicago.com", true }, + { "bestprofessionalchainsaw.com", true }, + { "bestpsychologydegrees.com", true }, + { "bestpsychologydegrees.org", true }, { "bestreleases.tk", true }, { "bestremote.io", true }, { "bestroofinginkansascity.com", true }, { "bestroutes.net", true }, { "bestsatoshifaucet.ga", true }, { "bestschools.io", true }, - { "bestsellers.co", true }, { "bestseo4u.co.uk", true }, - { "bestseries.tv", true }, { "bestsextoys.com", true }, { "bestshoesmix.com", true }, { "bestshopping.ga", true }, { "bestshops.ga", true }, + { "bestsidelka.ru", true }, { "bestsingingbowls.com", true }, { "bestsiteporn.com", true }, + { "bestsolution.at", true }, + { "beststock.kr", true }, + { "beststudio.ru", true }, { "besttechnews.ml", true }, { "besttipsntricks.tk", true }, { "besttrade.tk", true }, + { "besttrannytube.com", true }, { "besttraveluk.ga", true }, + { "bestvape.ie", true }, { "bestvetmortgage.com", true }, + { "bestvpns.co.uk", false }, + { "bestvpnsoftware.org", true }, { "bestwebcams.ga", true }, { "bestwebcams.ml", true }, { "bestwebsite.gallery", true }, - { "bestweleenbeetje.nl", true }, + { "bestweleenbeetje.nl", false }, { "bestwigs.ga", true }, { "bestwirelessdoorbell.ml", true }, { "bestwriterjobs.tk", true }, @@ -18097,7 +21436,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bet06vip.com", true }, { "bet074.com", false }, { "bet08vip.com", true }, - { "bet09vip.com", true }, { "bet166111.com", true }, { "bet166333.com", true }, { "bet166444.com", true }, @@ -18112,48 +21450,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bet166eee.com", true }, { "bet166fff.com", true }, { "bet166hhh.com", true }, - { "bet166tt.com", true }, { "bet166uu.com", true }, { "bet166ww.com", true }, - { "bet166xx.com", true }, { "bet166yy.com", true }, - { "bet333111.com", true }, - { "bet333123.com", true }, + { "bet1x-th.com", true }, + { "bet1x-thai.com", true }, + { "bet1x-thailand.com", true }, + { "bet333111.com", false }, + { "bet333123.com", false }, { "bet333222.com", true }, - { "bet333321.com", true }, + { "bet333321.com", false }, { "bet333345.com", false }, { "bet333432.com", false }, { "bet333444.com", true }, - { "bet333456.com", true }, + { "bet333456.com", false }, { "bet333567.com", true }, - { "bet333666.com", true }, - { "bet333678.com", true }, + { "bet333666.com", false }, + { "bet333678.com", false }, { "bet333789.com", false }, - { "bet333876.com", true }, - { "bet333987.com", true }, + { "bet333876.com", false }, + { "bet333987.com", false }, { "bet333999.com", false }, - { "bet333h.com", true }, + { "bet333h.com", false }, { "bet333i.com", false }, { "bet333j.com", false }, - { "bet333k.com", true }, + { "bet333k.com", false }, { "bet333l.com", true }, - { "bet333m.com", true }, + { "bet333m.com", false }, { "bet333n.com", true }, { "bet333o.com", false }, { "bet333p.com", false }, - { "bet333q.com", true }, + { "bet333q.com", false }, { "bet333r.com", false }, - { "bet333s.com", true }, - { "bet333t.com", true }, + { "bet333s.com", false }, + { "bet333t.com", false }, { "bet333u.com", false }, { "bet333v.com", false }, { "bet333w.com", false }, - { "bet333x.com", true }, + { "bet333x.com", false }, { "bet333y.com", true }, { "bet333z.com", false }, { "bet338c.com", true }, { "bet33app.com", false }, { "bet3639.com", false }, + { "bet365-fixed-matches.com", true }, { "bet365bc.net", true }, { "bet365bet2020.com", true }, { "bet365cn-casino.com", true }, @@ -18192,7 +21532,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bet365x2.com", true }, { "bet365x3.com", true }, { "bet365x6.com", true }, - { "bet365x8.com", true }, { "bet365x9.com", true }, { "bet391.com", false }, { "bet392.com", false }, @@ -18212,7 +21551,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bet5234.com", true }, { "bet531.com", false }, { "bet5757.com", true }, - { "bet5868.com", true }, { "bet600.co.uk", true }, { "bet631.com", false }, { "bet66.com", true }, @@ -18247,10 +21585,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bet86yn.com", true }, { "bet86zj.com", true }, { "bet909.com", true }, + { "bet99.com", true }, { "beta-cell.com", true }, { "beta-site-staging.azurewebsites.net", true }, { "betaa0.com", true }, - { "betaa1.com", true }, { "betaa2.com", true }, { "betaa3.com", true }, { "betaa5.com", true }, @@ -18258,34 +21596,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "betaa8.com", true }, { "betaa9.com", true }, { "betaal.my", true }, - { "betaalbaarverbouwen.com", true }, { "betaams.net", true }, + { "betabar.dk", true }, { "betacalc.com", true }, { "betaclouds.net", true }, { "betacommand.tk", true }, { "betadesign.dk", true }, + { "betahyp.de", true }, { "betalgroup.com", true }, - { "betalingsregelingen.nl", true }, + { "betalingsservice.dk", true }, { "betandslots.com", true }, { "betandyou.com", true }, + { "betandyou.mobi", true }, + { "betandyou1.com", true }, { "betanoapp.com", true }, { "betaoptimize.com", true }, { "betaprofiles.com", true }, + { "betasozluk.com", true }, { "betata.tk", true }, { "betatester.ml", true }, + { "betawi.com", true }, { "betaworx.de", true }, { "betaworx.eu", true }, { "betb33.com", false }, { "betb73.com", false }, { "betbed.ml", true }, { "betbravo.et", true }, + { "betc.com", true }, { "betcn-mart.com", true }, { "betecnet.de", true }, { "betel.tk", true }, + { "betelnatural.com", true }, { "betemyja.tk", true }, + { "betenemy.com", true }, + { "beteroud.nl", true }, { "betexperts.tk", true }, + { "betfair.com.co", true }, { "betformular.com", true }, { "bethanyhome.org", true }, + { "bethanymo.com", true }, + { "bethanytownshipmi.gov", true }, { "bethatkinson.tk", true }, { "bethelparkpa.gov", true }, { "bethelparkpapolice.gov", true }, @@ -18294,10 +21644,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bethematchclinical.org", true }, { "betheredge.us", true }, { "bethlehemnj.gov", true }, + { "bethlehemwv.gov", true }, { "bethpage.net", true }, { "bethulietourism.co.za", true }, { "bethzone.tk", true }, + { "beticaret.com", true }, + { "betingsite.com", true }, { "betish.tk", true }, + { "betkorea1.com", true }, { "betleakbot.com", true }, { "betmobilenigeria.com", true }, { "betobaccofree.gov", true }, @@ -18305,7 +21659,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beton-vloer.nl", true }, { "beton.ie", true }, { "betonbewerkingsmachines.be", true }, - { "betonbit.com", true }, { "betondrew.com", true }, { "betongereedschap.be", true }, { "betonline.bz", true }, @@ -18316,18 +21669,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "betop-lab.com", true }, { "betor.cz", true }, { "betor.sk", true }, - { "betosaso.de", true }, { "betoskip.tk", true }, + { "betpokies.com", true }, { "betrifft-mich-dsgvo.ch", true }, { "betrimus.xyz", true }, { "betrouwbarewifi.nl", true }, + { "bets.de", true }, + { "betsafe.lt", true }, { "betseven.pt", true }, { "betseybuckheit.com", true }, + { "betsfortoday.com", true }, { "betsharpangles.com", true }, { "betshoot.com", true }, { "betsonlinefree.com.au", true }, { "betspin.com", true }, - { "betsyshilling.com", true }, + { "betstop.gov.au", true }, + { "betsys.de", true }, { "bett1.at", true }, { "bett1.ch", true }, { "bett1.de", true }, @@ -18335,10 +21692,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bett1.pl", true }, { "bettaline.com.au", true }, { "bettashoerepairs.com.au", true }, - { "bettehochberger.com", true }, { "bettendorf.gov", true }, { "better.com", false }, { "better.fyi", true }, + { "betterbaseball.com", true }, + { "betterbedding.com", true }, { "betterbladders.com", true }, { "betterboards.net", true }, { "betterbuiltbasements.com", true }, @@ -18347,31 +21705,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bettercareclinic.co.uk", true }, { "bettercleaningcompany.co.uk", true }, { "bettercompass.com.au", true }, - { "betterconsult.com", true }, { "bettercrypto.org", true }, + { "betterdecoratingbible.com", true }, + { "betterhelp.co.il", true }, + { "betterhelp.com", true }, + { "betterhelp.com.au", true }, + { "betterhelporg.com", true }, + { "betterhelpteens.com", true }, { "betterhome.ml", true }, { "betterjapanese.blog", true }, { "betterjapanese.org", true }, { "betterjapanese.xyz", true }, { "betterlifekidsclub.com", true }, + { "betterlovestore.com", true }, { "betterna.me", true }, - { "betternet.co", true }, { "betternews.eu", true }, { "betteroffed.com", true }, { "betterscience.org", true }, { "bettersecurity.co", true }, { "bettersocialmedia.co.uk", true }, { "bettersound.id", true }, - { "bettertax.gov.au", true }, { "betterteam.com", true }, { "bettertech.pt", true }, { "bettertechsoftware.com", true }, { "bettertest.it", true }, { "bettertime.jetzt", true }, - { "betterweb.fr", false }, + { "betterviewrentals.com", true }, { "betterworlded.org", true }, { "bettflaschen.ch", true }, { "bettie.tk", true }, + { "betting-magic.com", true }, { "bettingbasket.com", true }, { "bettingbusiness.ru", true }, { "bettingonaverage.com", true }, @@ -18381,18 +21744,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bettyblue.tk", true }, { "betulashop.ch", true }, { "betus.tk", true }, - { "between.be", false }, + { "betvisa.com", true }, { "betweenthehills.be", true }, { "betweenthesheets.tk", true }, - { "betwin9.net", true }, - { "betwinner-giris.org", true }, + { "betwin9.net", false }, + { "betwinner-india.com", true }, + { "betwinner-ua.com", true }, { "betwinner-zerkalo.ru", true }, { "betwinner.cm", true }, { "betwinner.co.it", true }, + { "betwinner.co.ug", true }, + { "betwinner.co.zm", true }, + { "betwinner.com.gh", true }, { "betwinner.de.com", true }, + { "betwinner.ng", true }, + { "betwinner1.com", true }, + { "betwinner2.com", true }, + { "betwinner5.mobi", true }, { "betwinnerbahis.net", true }, { "betwinnerfrance.net", true }, - { "betwinnergiris.org", true }, { "betwinnerkenya.com", true }, { "betwinnerlive.com", true }, { "betwinnermobileapp.com", true }, @@ -18406,14 +21776,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "betxx1.com", true }, { "betxx2.com", true }, { "betza.online", true }, + { "betzgmbh.de", true }, + { "betzwhite.com", true }, + { "beudelbingers.nl", true }, { "beugelbekkie.tk", true }, { "beulahparks.com", true }, { "beulen.email", true }, { "beulen.link", true }, { "beulen.pro", true }, { "beurettes-en-chaleur.tk", true }, + { "beurteilt.com", true }, { "beus.ink", true }, { "beuteugeu.com", true }, + { "beutner.de", true }, { "beuty-flowers.tk", true }, { "bevallarta.com", true }, { "bevcrushesit.ca", true }, @@ -18427,14 +21802,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beverhof.nl", true }, { "beverley.tk", true }, { "beverleycounselling.co.uk", true }, + { "beverleymoneyman.com", true }, { "beverly.tk", true }, { "beverlydrive.tk", true }, + { "beverlyhillstx.gov", true }, + { "beverlyhospital.org", true }, { "beverlyinternational.com", true }, + { "bevestor.de", true }, + { "bevhost.com", true }, { "bevif.com", true }, { "bevinco2020.com", true }, { "bevinsco.org", true }, + { "bevmo.com", true }, { "bevmoir.com", true }, { "bevnut.com", true }, + { "bewaredevapi.azurewebsites.net", true }, { "bewegigsruum.ch", true }, { "bewegingdenk.nl", true }, { "bewegtes-lagern.at", true }, @@ -18445,9 +21827,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bewegteslagern.com", true }, { "bewegteslagern.de", true }, { "bewegungsfluss.com", false }, + { "bewerbung.net", true }, { "bewerbungsfibel.de", true }, { "bewerbungsfoto-deinfoto.ch", true }, { "bewildered.gq", true }, + { "beworksite.com", true }, + { "bewustwinkelen.nl", true }, { "bexit-hosting.nl", true }, { "bexit-security.eu", true }, { "bexit-security.nl", true }, @@ -18467,55 +21852,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "beyond-destiny.tk", true }, { "beyond-infinity.org", false }, { "beyond-rational.com", true }, - { "beyond.com.br", true }, - { "beyond360view.com", true }, + { "beyond.com.br", false }, + { "beyond.lk", true }, { "beyond3dview.com", true }, { "beyond3dviews.com", true }, { "beyondalderaan.net", true }, { "beyondauth.io", true }, { "beyondbounce.co.uk", true }, { "beyondboxgifts.com", true }, + { "beyondfrosting.com", true }, { "beyondgameplay.com", true }, + { "beyondinfinite.com", true }, { "beyondmydoor.com", true }, { "beyondnodes.com", true }, { "beyonds.fr", true }, { "beyondthecode.io", true }, - { "beyondthecrater.com", true }, { "beyondthecreek.com", true }, { "beyondthefive.org", false }, + { "beyondtheflag.com", true }, + { "beyondthemoments.com", true }, { "beyondthepitch.net", true }, { "beyondtherealm.tk", true }, { "beyondthisrealm.com.au", true }, { "beyondtrust.com", true }, { "beyondtv.ga", true }, { "beyondweb.net", true }, + { "beyondzeroacademy-reservations.fr", true }, { "beyonsolutions.com", true }, - { "beyours.be", true }, { "bezagentstva.cf", true }, { "bezahlbare-praemien.ch", true }, - { "bezbankrotstva.ru", true }, { "bezbik.tk", true }, { "bezdech.tk", true }, { "bezdomny.tk", true }, - { "bezemkast.nl", false }, { "bezin.ga", true }, - { "bezlepkovamatka.cz", true }, { "bezoek-benidorm.tk", true }, { "bezoomnyville.com", true }, { "bezopasna-rabota.tk", true }, + { "bezpaliuk.com", true }, { "bezpecnostsiti.cf", true }, + { "bezpieczny.pl", true }, + { "bezpiecznykierowca.info", true }, { "bezposrednio.net.pl", true }, { "bezpredel.tk", true }, { "bf-foto.eu", true }, - { "bfam.tv", true }, + { "bf2statistics.eu", true }, + { "bfas237blog.com", true }, { "bfbet365.com", true }, + { "bfbs.com", true }, + { "bfc-expertcomptable.com", true }, { "bfcgermania88.de", true }, + { "bfelob.gov", true }, { "bfem.gov", true }, + { "bferal.cl", true }, + { "bffr.wtf", true }, { "bfh.science", true }, + { "bfharrison.com", true }, + { "bfi.is", true }, { "bfkcloud.ddns.net", true }, { "bflix.tv", true }, + { "bflw.pl", true }, { "bfly.tech", true }, { "bfob.gg", true }, + { "bfoliver.com", true }, { "bforb.sk", true }, { "bfp-mail.de", true }, { "bfpg.org", true }, @@ -18523,17 +21921,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bfsasia.com", true }, { "bft-media.com", false }, { "bfw-online.de", true }, + { "bg-1xbet.com", true }, { "bg-sexologia.com", true }, { "bg2kuj.com", true }, { "bgbaby.net", true }, { "bgbet365.com", true }, { "bgbhsf.top", true }, { "bgd-info.tk", true }, + { "bgdesign.de", false }, { "bgemi.net", true }, { "bgeo.io", true }, { "bgfashion.net", true }, + { "bggcapital.com", true }, { "bghddevelopment.com", true }, - { "bghomerenovationsllc.com", true }, { "bghope.com", true }, { "bghost.xyz", true }, { "bgjargon.com", true }, @@ -18545,64 +21945,81 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bgmedia.tk", true }, { "bgmn.me", true }, { "bgmontaggi.com", true }, + { "bgmringtonedownload.com", true }, { "bgmsquad.com", true }, - { "bgp.space", true }, + { "bgmsquad.net", true }, + { "bgp.co", true }, { "bgr34.cz", true }, { "bgs-game.com", true }, - { "bgtoyou.com", true }, { "bgtraffic.tk", true }, { "bh-oberland.de", true }, { "bh.sb", true }, { "bhacit.com", false }, + { "bhagyaveer.com", true }, { "bhaiben.com", true }, + { "bhameshwarigraphics.com", true }, { "bhanaphotography.co.nz", true }, { "bharat-media.tk", true }, { "bharatanatyam-dancer.tk", true }, { "bharath-g.in", true }, + { "bharatskills.gov.in", true }, { "bhat.vn", true }, { "bhavansvidyamandir.tk", true }, { "bhaweshkumar.com", true }, { "bhbet365.com", true }, + { "bhcarroll.edu", true }, + { "bhf.im", true }, + { "bhfseo.com", true }, { "bhhscalhomes.com", true }, { "bhi.consulting", true }, + { "bhiglu.com", true }, { "bhitnews.tk", true }, { "bhitti.in", true }, { "bhodisoft.com", true }, { "bhogavati.tk", true }, { "bhosted.nl", true }, - { "bhpin.pl", true }, { "bhpropco.com", true }, { "bhrenovations.com", true }, { "bhserralheria.com.br", true }, + { "bhsfacilityservice.com", true }, + { "bhtechconnection.com", false }, + { "bhtelecom.ba", true }, { "bhub.tk", true }, { "bhuntr.com", true }, { "bhuvanreddy.space", true }, { "bhvapers.com", true }, - { "bhw.name", true }, { "bhxch.moe", true }, { "bi-fazlasi.com", true }, { "bi-in-beeld.nl", true }, { "bi-jenny.net", true }, + { "bi-medien.de", true }, { "bi.search.yahoo.com", false }, { "bi1gif.radio", true }, + { "bi3e.ma", true }, + { "bi4sb.com", true }, { "bi8cku.club", true }, { "bi8cku.tech", true }, - { "biabop.com", true }, + { "bia.gov", true }, + { "bia3consultores.es", true }, { "biaform.be", true }, + { "biagiowineandspirits.com", true }, { "bialamydlarnia.pl", false }, - { "biallywoodtv.com", true }, - { "bialogardzkihiphop.tk", true }, { "biancadark.tk", true }, { "biancapulizie.it", true }, { "biancasalgueiro.tk", true }, + { "biancavandenberg.nl", true }, { "biancazapatka.com", true }, { "bianco-band.tk", true }, { "bianinapiccanovias.com", true }, { "biano-ai.com", true }, + { "biantai.cf", true }, + { "biantai.ml", true }, + { "biantti.md", true }, { "bianyanan.xyz", true }, { "bianys.org", true }, { "biaoxiong.com", true }, - { "biapinheiro.com.br", true }, + { "biaozi.cf", true }, + { "biaozi.ml", true }, { "biarritzboys.tk", true }, { "biaservice.cz", true }, { "biasmath.es", true }, @@ -18615,23 +22032,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bibet365.com", true }, { "bibi-xxx.com", true }, { "bibica.net", true }, + { "bibimanga.com", true }, + { "bibit.id", true }, { "bibitbunga.com", true }, { "bible-maroc.com", true }, { "bible.ru", true }, { "bible4u.net", true }, + { "biblebrainhealth.com", true }, { "bibleforchildren.ru", true }, { "bibleinsiderest.ga", true }, { "bibleonline.ru", true }, + { "biblereadlist.com", true }, + { "biblesearch.com.tw", true }, + { "biblesearch.tw", true }, { "biblesignposts.com", true }, { "bibleversesfordailyliving.com", true }, { "biblia.es", true }, { "bibliaon.com", true }, { "bibliatodo.com", true }, + { "biblicalbeliefs.org", true }, + { "biblicalcounseling.com", true }, + { "biblicaudio.org", true }, { "biblico.tk", true }, + { "biblicom.org", true }, + { "biblinfo.com", true }, { "bibliobaldur.tk", true }, { "biblioblog.fr", true }, { "bibliobus.ch", true }, - { "bibliogram.art", true }, { "bibliomarkt.ch", true }, { "biblionaut.net", true }, { "biblionix.com", true }, @@ -18643,15 +22070,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bibliotecadeseguranca.com.br", true }, { "bibliotecaguate.ml", true }, { "bibliotecasantaoliva.tk", true }, + { "bibliotecaumana.it", true }, { "biblioteka-online.tk", true }, { "biblioteka17.tk", true }, { "bibliotekasnow.org", true }, { "bibliotheka.tk", true }, { "bibloteka.com", true }, { "biboran.ga", true }, - { "biboumail.fr", true }, { "bibuch.com", true }, { "bibun.gq", true }, + { "bicaraviral.com", true }, { "bicecontracting.com", true }, { "bicestore.cl", true }, { "bicha.net", true }, @@ -18666,18 +22094,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bicstone.me", true }, { "bicubic.tk", true }, { "bicycle-events.com", true }, - { "bicycle-works.com", true }, - { "bicycleframeiz.com", true }, + { "bicyclesoftheworld.com", true }, { "bidaah.tk", true }, { "bidadari.my", true }, + { "bidarzani.com", false }, + { "bidbuy.co.kr", true }, { "bidc.ltd", true }, { "biddl.com", true }, { "biddle.co", true }, + { "biddr.com", true }, + { "biddulphinbloom.org.uk", true }, { "bidenstopdeportations.com", true }, + { "bidlab.org", true }, + { "bidmachine.io", true }, { "bidman.cz", true }, { "bidman.eu", true }, + { "bidoluindirim.com", true }, { "bidonline.tk", true }, { "bidviewmarketing.com", true }, + { "bie.edu", true }, { "bieg.tk", true }, { "biegal.ski", true }, { "biegi.tk", true }, @@ -18686,10 +22121,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biekos.com", true }, { "bielefailed.de", true }, { "bielemenklen.tk", true }, + { "bien-etre-beaute.fr", true }, { "bien-etre-sante.info", true }, { "biene.rocks", true }, { "bienenfreunde.tk", true }, - { "bienestarfacial.com", true }, { "bienestarinmobiliarioyaliadas.com", true }, { "bienhacerlimpiezas.es", true }, { "bienici.com", true }, @@ -18701,8 +22136,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bienvenidoamerica.com", true }, { "bienvenue.tk", true }, { "bier-brothers.tk", true }, + { "bier.law", true }, + { "bier.legal", true }, { "bierbaumer.net", true }, + { "bierbringer.at", true }, { "bierbrouwerijderoos.nl", true }, + { "bieresamanger.fr", true }, { "bierlegal.com", true }, { "bierochs.org", true }, { "bierwebshop.be", true }, @@ -18713,17 +22152,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bietthudangcap.vn", true }, { "bieville-beuville.fr", true }, { "biewen.me", false }, + { "biffo.com", true }, { "biflosgknm.tk", true }, { "bifrost.cz", true }, { "bifrostwallet.com", true }, - { "biftin.moe", false }, { "biftin.net", true }, { "big-black.de", true }, { "big-books.gq", true }, - { "big-bounce.co.uk", true }, { "big-brother.ga", true }, { "big-file.tk", true }, - { "big-market.co.il", true }, { "big-music.tk", true }, { "big-office.lviv.ua", true }, { "big-orange.com.ua", true }, @@ -18736,9 +22173,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bigalba.ga", true }, { "bigambitions.co.za", true }, { "bigart.tk", true }, + { "bigassmonster.com", true }, + { "bigasstubes.com", true }, + { "bigband-a.com", true }, { "bigband.tk", true }, - { "bigbangco.com.br", true }, { "bigbearkh.com", false }, + { "bigbearlakecoins.com", true }, { "bigbeats.tk", true }, { "bigbeautysecrets.tk", true }, { "bigbendcoffeeroasters.com", false }, @@ -18746,15 +22186,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bigbendsentinel.com", true }, { "bigbenny.tk", true }, { "bigbit.tk", true }, + { "bigblockmotors.ru", true }, + { "bigblue.co.il", true }, { "bigbluecomputers.tk", true }, { "bigbluedoor.net", true }, { "bigboard.tk", true }, + { "bigboobporn.com", true }, + { "bigbooty.tv", true }, + { "bigbootytube.net", true }, { "bigboris.tk", true }, { "bigbouncebouncycastles.co.uk", true }, { "bigbouncetheory.co.uk", true }, { "bigbounceuk.com", true }, - { "bigboysbrand.dk", true }, - { "bigbunce.ru", true }, + { "bigbrother.fi", true }, + { "bigbuild.vic.gov.au", true }, + { "bigbunce.ru", false }, { "bigbyte.com.np", true }, { "bigcakes.dk", true }, { "bigchance.tk", true }, @@ -18767,32 +22213,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bigdaddyslash.tk", true }, { "bigdatatop.cf", true }, { "bigdayproductions.biz", true }, + { "bigdesiresolutions.co.za", true }, { "bigdiscounts.tk", true }, { "bigeaglesacademy.gq", true }, { "bigeasyfences.com", true }, - { "bigeasygrille.com", true }, + { "bigeasygrille.com", false }, { "bigfreebielist.tk", true }, { "biggernews.gq", true }, { "biggerpicture.agency", true }, + { "biggive.org", true }, { "biggles.io", true }, { "biggsconstruction.com", true }, + { "bighams.co.uk", true }, + { "bighams.com", true }, { "bighappy.com", true }, { "bighome.ml", true }, { "bighorn.co.jp", true }, - { "bighouse-events.co.uk", true }, - { "bighouse-events.com", true }, { "bighugbotanicals.com", true }, + { "bigid.com", true }, + { "bigideachallenge.org", true }, { "bigio.com.br", true }, - { "biglagoonrentals.com", true }, + { "bigland.com", true }, { "biglapa.ru", true }, { "biglistofporn.com", true }, + { "biglu.eu.org", true }, { "bigmoney.nu", true }, { "bigmonsters.tk", true }, { "bigmountainmail.com", true }, { "bigmuff.duckdns.org", true }, - { "bignet.bid", true }, + { "bignaturals.com", true }, + { "bignet.bid", false }, + { "bignudetits.com", true }, + { "bigone.com", true }, { "bigorangelab.com", true }, - { "bigorbitgallery.org", true }, { "bigpage.tk", true }, { "bigprintinglasvegas.com", true }, { "bigpurse.tk", true }, @@ -18807,23 +22260,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bigseo.tk", true }, { "bigshare.ga", true }, { "bigshopper.com", true }, - { "bigshopper.nl", true }, { "bigshort.org", true }, { "bigsister.tk", true }, { "bigskyhomebuyers.com", true }, { "bigskylifestylerealestate.com", true }, { "bigskymontanalandforsale.com", true }, { "bigskysir.com", true }, - { "bigskywaterheaters.com", true }, { "bigsmallhosting.com", true }, + { "bigsolar.com", true }, + { "bigspark.it", true }, { "bigstonecounty.gov", true }, { "bigthree.ga", true }, { "bigthunder.ca", true }, { "bigtimeiq.com", true }, + { "bigtitsmilf.com", true }, { "bigtix.io", true }, { "bigtown.tk", true }, - { "bigtrucker.co.uk", true }, + { "bigtstexasbbq.com", true }, { "bigudi.ee", true }, + { "bigudi.eu", true }, + { "bigwaterut.gov", true }, + { "bigzoo.com.br", true }, + { "biigtigconsulting.ca", true }, { "bij-juud.nl", true }, { "bijlesbart.nl", true }, { "bijlesportal.nl", true }, @@ -18831,6 +22289,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bijlokesite.be", true }, { "bijlokesite.gent", true }, { "bijou.be", true }, + { "bijoux-fantaisies.eu", true }, { "bijoux.com.br", true }, { "bijouxbrasil.com.br", true }, { "bijouxcherie.com", true }, @@ -18844,11 +22303,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bikeclub.tk", true }, { "bikehistory.org", true }, { "bikemaniacs.tk", true }, + { "bikemi.com", true }, { "bikemod.de", true }, { "biker.dating", true }, { "bikerawardsers.ga", true }, { "bikerawardsest.ga", true }, { "bikerebel.com", true }, + { "bikerestart.com", true }, + { "bikersbuddy.com", true }, { "bikersclub.tk", true }, { "bikersmadrid.es", true }, { "bikerteeshop.com", true }, @@ -18856,8 +22318,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bikeshopitalia.com", true }, { "bikesquadron.com", true }, { "bikestream.tk", true }, + { "bikesupermarket.it", true }, { "biketalk.ga", true }, - { "biketowork.ie", true }, { "biketrainer.tk", true }, { "bikhof.com", true }, { "biki.com", true }, @@ -18870,6 +22332,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bikkelbroeders.com", false }, { "bikkelbroeders.nl", false }, { "biknet.tk", true }, + { "bikroay.com", true }, { "bikyaku.fun", true }, { "bilalkilic.de", true }, { "bilalozdemir.me", true }, @@ -18879,10 +22342,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bilbayt.com", true }, { "bilbud.tk", true }, { "bilder-designs.de", true }, + { "bilderload.com", true }, { "bildermachr.de", true }, + { "bilderrahmen-baer.de", true }, + { "bilderrahmen-schluechtern-sinntal.de", true }, { "bildiri.ci", true }, { "bildkomponist.de", true }, { "bildschirmflackern.de", true }, + { "bildung-mv.de", false }, + { "bildungswelt.dvag", true }, { "bilecikhaberleri.tk", true }, { "biletkesfet.com", true }, { "biletru.net", true }, @@ -18893,17 +22361,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biletyplus.ru", true }, { "biletyplus.ua", true }, { "bilgehan.net", true }, + { "bilgilarus.com", true }, { "bilgiliksel.com", true }, { "bilgisayarkursu.tk", true }, + { "bilgisoft.ir", true }, { "bilgo.com", true }, { "bilhos.com.tr", true }, { "bilibili.link", true }, { "bilibili.party", true }, - { "bilibili.red", false }, { "bilimal.kz", true }, { "bilimoe.com", true }, { "bilingualunit.tk", true }, + { "bilirrubina.com", true }, { "bilisimdanismani.com", true }, + { "biljettmonster.se", true }, { "bilke.org", true }, { "bilkovita.bg", true }, { "bilkovitinkturi.bg", true }, @@ -18911,10 +22382,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "billaud.eu", true }, { "billaud.eu.org", true }, { "billboard-panama.ml", true }, + { "billboardchartstars.com", true }, { "billbuddy.co.uk", true }, + { "billchen.win", true }, { "billcompare.ga", true }, { "billcomparison.ga", true }, + { "billetes.gov", true }, { "billets-avion.tk", true }, + { "billetto.co.uk", true }, + { "billetto.dk", true }, + { "billetto.eu", true }, + { "billetto.it", true }, + { "billetto.se", true }, { "billfazz.com", true }, { "billgatos.tk", true }, { "billgoldstein.name", true }, @@ -18923,58 +22402,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "billiardmaster.com.ua", true }, { "billiebikes.com", true }, { "billigastehemsidan.se", true }, + { "billiger-mietwagen.de", true }, { "billigerfinder.de", true }, { "billigesommerhuse.nu", true }, { "billigflug.tk", true }, { "billigpoker.dk", true }, { "billigtech.tk", true }, - { "billingsgroup.com", true }, + { "billingsgazette.com", true }, + { "billingsgroup.com", false }, { "billingsmtpublicworks.gov", true }, { "billionaire.ml", true }, { "billionaire365.com", true }, { "billionkiaparts.com", true }, { "billkochman.com", true }, { "billo.life", true }, - { "billogr.am", true }, - { "billogram.be", true }, - { "billogram.ch", true }, - { "billogram.co", true }, - { "billogram.co.uk", true }, { "billogram.com", true }, - { "billogram.de", true }, - { "billogram.es", true }, - { "billogram.eu", true }, - { "billogram.fi", true }, - { "billogram.fr", true }, - { "billogram.io", true }, - { "billogram.it", true }, - { "billogram.me", true }, - { "billogram.net", true }, - { "billogram.nl", true }, - { "billogram.no", true }, - { "billogram.nu", true }, - { "billogram.org", true }, - { "billogram.se", true }, - { "billogramcontent.com", true }, - { "billograminternal.com", true }, - { "billogramstatic.com", true }, - { "billogramtest.com", true }, - { "billopay.com", true }, - { "billopay.de", true }, - { "billopay.se", true }, { "billpay.com", true }, { "billpro.com.au", true }, { "billrobinson.io", true }, { "billusherwood.com", true }, { "billview.com.au", true }, { "billwebb.com.au", true }, + { "billwerk.com", true }, + { "billwerk.io", true }, { "billy.pictures", true }, - { "billy.wales", true }, { "billybob.tk", true }, { "billykwok.me", true }, { "billyoh.com", true }, { "billywig.stream", true }, - { "bilmecelerim.com", true }, { "biloxihistoricalsociety.org", false }, { "biloxisportfishing.com", true }, { "bilsho.com", true }, @@ -18983,29 +22438,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bim.physio", true }, { "bim0s.com", true }, { "bimacitizen.com", true }, + { "bimatoprostrx.com", true }, { "bimbingan.tk", true }, { "bimbobakeriesusa.com", false }, - { "bimbole.it", false }, - { "bimechanics.com", true }, + { "bimedis.com", true }, + { "bimhomes.vn", true }, { "bimibroccoli.co.uk", true }, { "bimibroccoli.com", true }, { "bimibroccoli.dk", true }, { "bimibroccoli.it", true }, { "bimibroccoli.nl", true }, { "bimibroccoli.se", true }, + { "bimibrocoli.es", true }, { "bimibrocoli.fr", true }, { "bimibrokkoli.de", true }, - { "bimmae.com", true }, + { "bimigroup.org", true }, { "bimmerlabs.com", true }, { "bimoge.tk", true }, { "bimsynergistics.com", true }, + { "bin-laden.org", true }, { "bin95.com", true }, { "bina.az", true }, + { "binaa.co.il", true }, { "binafarma.com.br", true }, { "binairy.com", true }, { "binairy.nl", true }, { "binam.center", false }, - { "binans.co", true }, { "binans.com", true }, { "binans.com.tr", true }, { "binans.io", true }, @@ -19019,38 +22477,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "binaryappdev.com", true }, { "binarycom.ch", true }, { "binarycreations.scot", true }, - { "binarydream.fi", true }, { "binaryevolved.com", true }, { "binarypuzzle.nl", true }, { "binarystud.io", true }, { "binaryvision.tk", true }, + { "binbaz.org.sa", true }, { "binbin9.com", true }, { "binbo.cz", true }, { "binbo.sk", true }, { "bind.ch", true }, { "bindb.com", true }, { "binding-problem.com", true }, + { "binds.co", true }, { "bindsolutions.com", true }, { "binezalohar.tk", true }, { "binf.tk", true }, + { "bing", true }, { "bing-cdn.com", true }, { "bing-cdn.xyz", true }, { "bing.com", true }, { "bingcheung.com", true }, { "bingchunmoli.com", true }, + { "bingebooks.com", true }, + { "binggun.com", true }, { "binghamcountyid.gov", true }, - { "bingle.nu", true }, + { "binghamid.gov", true }, + { "bingning.com", true }, { "bingo-wear.com", true }, { "bingo9.net", true }, { "bingobank.org", true }, + { "bingoblue.com", true }, { "bingoclub.ga", true }, { "bingocounterers.ga", true }, { "bingoela.com", true }, { "bingofriends.com", true }, { "bingohalls.ca", true }, + { "bingoporno.com", true }, { "bingospelen.tk", true }, { "bingothemesers.ga", true }, { "bingothemesest.ga", true }, + { "bingyou.com", true }, { "binhdang.me", false }, { "binhex.net", true }, { "binhminhpc.com", true }, @@ -19058,15 +22524,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biniou.net", true }, { "binkanhada.biz", true }, { "binkconsulting.be", true }, + { "binkert-treuhand.ch", true }, + { "binnacle.mx", true }, + { "binnen-buten.de", true }, { "binnenmeer.de", true }, { "binoculars.ga", true }, { "binoqlo.com", true }, { "binoro.de", true }, + { "binpress.com", true }, { "binson-museum.tk", true }, { "binsp.net", true }, { "bintach.com", true }, { "bintanglautplatinum.com", true }, - { "bintangsyurga.com", true }, { "bintangtop.com", true }, { "bintelligence.cl", true }, { "bintelligence.info", true }, @@ -19075,29 +22544,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bintra.directory", true }, { "bintube.com", true }, { "bio-disinfestazione.it", true }, + { "bio-dolt-aveyron.fr", true }, { "bio-farma.net", true }, { "bio-feed.org", true }, { "bio-place.com", true }, { "bio-verzeichnis.de", true }, { "bio24.si", false }, { "bioadva.com", true }, - { "bioamtw.com", true }, + { "bioarc.com.au", true }, { "bioarchlinux.org", true }, + { "bioatrium.com", true }, { "bioaufvorrat.de", true }, { "bioblog.tk", true }, { "biobone.net", true }, { "biobuttons.ch", true }, { "biocal.eu", true }, { "biocal.nl", true }, + { "biocarbonregistry.com", true }, + { "biocentricinc.com", true }, { "biochart.ga", true }, { "biocheminee.com", true }, { "bioclaudia.it", true }, - { "bioconus.com", true }, { "biocrafting.net", false }, { "biodaan.com", true }, - { "biodiagnostiki.clinic", true }, { "biodieselbr.com", true }, { "biodieseldata.com", true }, + { "biodieselpumps.com", true }, { "biodit.com", false }, { "biodobavki.tk", true }, { "biodots.at", true }, @@ -19105,6 +22577,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biodots.info", true }, { "biodots.it", true }, { "bioedilizia.roma.it", true }, + { "bioemsan.cz", false }, { "bioenergie-eferding.at", true }, { "bioenergy-solutions.eco", true }, { "bioequivalence.design", true }, @@ -19116,20 +22589,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bioforce.tk", true }, { "biogaspuxin.es", true }, { "biogecho.ch", false }, - { "biogecho.swiss", false }, { "biogeist.de", true }, - { "biogenius.ca", true }, - { "bioghalm.com", true }, + { "biogenius.ca", false }, { "biogiardinaggio.it", true }, + { "biographybd.com", true }, { "biographyseriesers.ga", true }, { "biographyseriesest.ga", true }, - { "biographywiki.net", true }, { "biohappiness.com", true }, { "bioharmony.ca", true }, { "biohazardland.tk", true }, { "biohazardonline.tk", true }, { "biohazardous.tk", true }, - { "biohof-paas.de", true }, + { "biohof-paas.de", false }, + { "bioinfo-diag.fr", true }, { "bioinformaticsweb.tk", true }, { "biointelligence-explosion.com", true }, { "biokal-labsystems.eu", true }, @@ -19148,13 +22620,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biolegsanonims.tk", true }, { "bioligo.ch", false }, { "biolika.ua", true }, + { "biolink.vn", true }, + { "biolinky.co", true }, { "biolmarket.ru", true }, { "biologiaygeologia.tk", true }, + { "biologie-seite.de", true }, { "biologis.ch", true }, { "biologo.club", true }, { "biology-colleges.com", true }, + { "biologymusicvideos.com", true }, + { "biologynest.com", true }, { "biomarket24.pl", true }, - { "biomasscore.com", false }, { "biomassinfo.jp", true }, { "biomathalliance.org", true }, { "biomax-mep.com.br", true }, @@ -19167,24 +22643,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biomedyczne.pl", true }, { "biometriccoe.gov", true }, { "biometrics.gov", true }, + { "biometservices.com", true }, { "biomin.co.uk", true }, { "biomod.tk", true }, { "biomodra.cz", true }, - { "biomon.lt", true }, - { "bionaturalcosmetic.it", true }, { "bionic-karnage.tk", true }, { "bionicman.name", true }, { "bionovanaturalpools.com", true }, { "biontech24.pl", true }, + { "biontechworld.com", true }, + { "biopaltin.ro", true }, { "biopreferred.gov", true }, { "biopro-st.com", true }, { "biopsychiatry.com", true }, + { "bioreference.com", true }, { "bioresonanz-ibiza.com", true }, - { "biorev.com", false }, { "biosafe.ch", false }, { "biosalts.it", true }, { "biosbits.org", true }, + { "bioscapers.com", true }, { "biosearch.tk", true }, + { "bioseguridad.gob.pa", true }, { "bioselect.com.cy", true }, { "bioshine.com.sg", true }, { "bioshome.de", true }, @@ -19192,7 +22671,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biosky.tk", true }, { "biospeak.solutions", true }, { "biospw.com", true }, + { "biostar.com.tw", true }, { "biosuit.ga", true }, + { "biosupplyalliance.com", true }, { "biot.tk", true }, { "biotal.ua", true }, { "biotanquesbts.com", true }, @@ -19201,31 +22682,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bioteebook.com", true }, { "biotin.ch", true }, { "biotin24.cf", true }, + { "biotorrents.de", true }, + { "biotraxx.com", true }, { "biouhli.com", true }, { "biouhli.cz", true }, { "biouhli.sk", true }, - { "biouhlie.sk", true }, - { "biovaultfamily.com", true }, - { "biovial.pl", true }, { "bioweingut-baumann.de", true }, { "biowtage.cf", true }, { "biowtage.gq", true }, { "bip-online.tk", true }, { "bip.gov.sa", false }, + { "bipartisanreport.com", true }, { "bipedecurieux.com", true }, - { "bipolarblogging.com", true }, { "bipolardisorderexplained.com", true }, { "bipolargeek.com", true }, { "bipolargeek.net", true }, { "bipolargeek.org", true }, { "bipolarworld.us", true }, - { "bipyo.com", false }, + { "bippassistant.com", true }, { "birahugo.tk", true }, - { "biraktim.org", true }, { "birbaumer.li", false }, { "birchbarkfurniture.ch", true }, { "birchbarkfurniture.com", false }, { "birchbarkfurniture.fr", false }, + { "birchtree.me", true }, + { "bird-tech.co.uk", true }, { "bird.engineer", true }, { "birdbrowser.com", true }, { "birdgifs.nz", true }, @@ -19235,40 +22716,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "birdsite.ga", true }, { "birdslabel.com", true }, { "birdsnow.com", true }, - { "birdspundit.com", true }, - { "birdygaia.com", true }, + { "birdwatchireland.ie", true }, { "birdymanbestreviews.com", true }, + { "birebirvilla.com", true }, { "birgit-rydlewski.de", true }, { "birgitandmerlin.com", true }, { "birjdid.tk", true }, + { "birkanpusa.com.tr", true }, { "birkengarten.ch", true }, { "birkenstab.de", true }, { "birkhoff.me", false }, { "birkilise.com", true }, { "birkilise.net", true }, { "birkilise.org", true }, + { "birkman.com", false }, { "birlikdayanisma.com", true }, { "birman.tk", true }, - { "birmans.tk", true }, { "birminghamal911.gov", true }, + { "birminghamorthospine.com", true }, { "birminghamsunset.com", true }, { "birnenhain.de", true }, { "birobidjan.tk", true }, { "birone.tk", true }, + { "bironthemes.com", true }, { "birosuli.hu", true }, - { "biroumumsumut.id", true }, { "birra.tk", true }, { "birrapenombra.tk", true }, { "birtamode.tk", true }, { "birthday-to-you.com", true }, + { "birthdayapp.io", true }, { "birthdayapp.today", true }, + { "birthdaybuzz.org", true }, { "birthdayinsiderest.ga", true }, - { "birthinjurylawyer.com", true }, + { "birthlight-austria.com", true }, { "birthright.host", true }, + { "birtles.blog", true }, { "birulevo.tk", true }, { "birwa.tk", true }, { "birzan.org", true }, { "birzman.ga", true }, + { "bis-jeddah.com", true }, + { "bis.gov", true }, { "bisa-sis.net", true }, { "bischoff-mathey.family", true }, { "biscuit.town", true }, @@ -19278,18 +22766,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biscuits-shop.com", true }, { "biser-borisov.eu", true }, { "biser.online", true }, + { "biserica-antiohia.ro", true }, { "bishamon.pl", true }, - { "bishopp.com.au", true }, { "bishopscourt-hawarden.co.uk", true }, { "bishoptx.com", true }, { "bisik.ml", true }, { "bisix.tk", true }, { "bismantova.tk", true }, { "bismarck-tb.de", true }, + { "bismarcktribune.com", true }, { "bismi.solutions", false }, { "bismuth.it", true }, + { "bisnis.com", true }, { "bisnisesteen.tk", true }, { "bisnisinternetgratis.tk", true }, + { "bisnismuda.id", true }, { "bisnisonlinecerdas.tk", true }, { "biso.ga", true }, { "bisoga.ga", true }, @@ -19304,18 +22795,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bissalama.org", true }, { "bisschopssteeg.nl", true }, { "bissokush.cf", true }, - { "bistax.vn", true }, { "bistro-dengi.ml", true }, + { "bistrocean.com", false }, { "bistrodeminas.com", true }, - { "bistrotdelagare.fr", true }, { "bistrozaim.ml", true }, { "bistum-eichstaett.de", true }, - { "bit-cloud.de", false }, + { "bit-cloud.de", true }, { "bit-flex.com", true }, { "bit-rapid.com", false }, { "bit-saar.de", true }, { "bit-sentinel.com", true }, - { "bit-service-aalter.be", true }, { "bit8.com", false }, { "bitaccelerate.com", true }, { "bitace.com", false }, @@ -19326,10 +22815,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitbincomputers.com", true }, { "bitbonus.cf", true }, { "bitbonusss.tk", true }, + { "bitbotster.com", true }, { "bitbox.me", true }, { "bitbroker.exchange", true }, { "bitbucket.com", true }, - { "bitbucket.io", true }, + { "bitbucket.io", false }, { "bitbucket.org", true }, { "bitburner.de", true }, { "bitcalt.eu.org", true }, @@ -19337,6 +22827,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitchesabroad.com", true }, { "bitchyjana.com", true }, { "bitclusive.de", true }, + { "bitcoin-2go.de", true }, { "bitcoin-about.tk", true }, { "bitcoin-casino-no-deposit-bonus.com", true }, { "bitcoin-casino.monster", true }, @@ -19356,11 +22847,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoin.ch", true }, { "bitcoin.co.nz", true }, { "bitcoin.de", true }, + { "bitcoin.foundation", true }, { "bitcoin.im", true }, { "bitcoin.info", true }, { "bitcoin.ninja", true }, { "bitcoin.org", true }, { "bitcoin.us", true }, + { "bitcoinapi.de", true }, { "bitcoinbitcoin.com", true }, { "bitcoinbot.cf", true }, { "bitcoinbot.ga", true }, @@ -19376,36 +22869,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoinfaucet.tech", true }, { "bitcoinfax.net", true }, { "bitcoinfees.net", true }, + { "bitcoinforthe.lol", true }, { "bitcoinforthe.world", true }, - { "bitcoingambling.club", true }, + { "bitcoinfy.net", true }, { "bitcoingambling.pro", true }, { "bitcoingames.world", true }, { "bitcoingroup.ga", true }, { "bitcoinheaders.net", true }, { "bitcoinheaders.org", true }, - { "bitcoinindia.com", true }, { "bitcoinindy.com", true }, { "bitcoinissafe.com", true }, { "bitcoinjpn.com", true }, { "bitcoinkaufen.me", true }, { "bitcoinkaufen.news", true }, + { "bitcoinkurs.news", true }, { "bitcoinkurs.world", true }, - { "bitcoinmakesense.com", true }, { "bitcoinnews.digital", true }, { "bitcoinnews.guru", true }, { "bitcoinnews.world", true }, + { "bitcoinplay.net", true }, { "bitcoinprice.buzz", true }, { "bitcoinprice.international", true }, { "bitcoinprice.news", true }, { "bitcoinprice.pizza", true }, { "bitcoinprice.rocks", true }, { "bitcoinprice.world", true }, + { "bitcoinreserve.com", true }, { "bitcoinseed.net", true }, { "bitcoinset.pl", true }, { "bitcoinslots.info", true }, { "bitcoinstandard.jp", true }, { "bitcoinstock.ga", true }, - { "bitcoinsv.io", false }, + { "bitcointask.net", true }, { "bitcointech.ga", true }, { "bitcointransfer.tk", true }, { "bitcointv.com", true }, @@ -19413,9 +22908,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitcoinx.ro", true }, { "bitcork.io", true }, { "bitcrazy.org", true }, + { "bitdefender.de", true }, + { "bitdelta.com", false }, { "bitdizzle.xyz", true }, + { "bitdocs.xyz", true }, + { "bitdynamics.au", true }, { "bitech-ec.com", true }, { "bitedge.com", false }, + { "bitedu.pt", true }, + { "bitehazard.cz", true }, { "bitenose.com", true }, { "bitenose.org", true }, { "bitewinggames.com", true }, @@ -19423,29 +22924,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitfarm-archiv.com", true }, { "bitfarm-archiv.de", true }, { "bitfasching.de", false }, + { "bitfashion.pt", true }, { "bitfehler.net", true }, { "bitfinder.nl", true }, { "bitforge.tk", true }, { "bitforming.com", true }, { "bitfortune.fund", true }, + { "bitfortune.net", true }, { "bitfuse.net", true }, + { "bitga.in", true }, { "bitgarant.tk", true }, { "bitgo.com", true }, - { "bitgrapes.com", true }, - { "bithap.com", false }, - { "bither.net", true }, + { "bithosting.pt", true }, + { "bitiobmen.com", true }, { "bititrain.com", true }, { "bitix.tk", true }, { "bitjunkiehosting.com", true }, + { "bitkan.com", true }, + { "bitkiselreyonum.com", true }, { "bitkub-app.com", true }, + { "bitkub-int.com", true }, + { "bitlair.nl", true }, { "bitlaunch.io", true }, + { "bitlink.id", true }, { "bitljettnu.gq", true }, { "bitlo.com", true }, { "bitlo.com.tr", true }, { "bitlo.io", true }, { "bitlo.org", true }, { "bitloco.net", true }, - { "bitloco.org", true }, { "bitmag.ml", true }, { "bitmaincare.com.ua", true }, { "bitmaincare.ru", true }, @@ -19453,6 +22960,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitmainwarranty.ru", true }, { "bitmarket.net", true }, { "bitmart.com", true }, + { "bitmart.cool", true }, { "bitmessage.ch", true }, { "bitmexin.com", true }, { "bitmidi.com", true }, @@ -19464,20 +22972,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitname.it", true }, { "bitnoder.com", true }, { "bitnoise.nl", true }, + { "bitnovo.com", true }, { "bito3d.com.br", true }, { "bitovayatehn.tk", true }, - { "bitplay.space", true }, { "bitpod.de", true }, { "bitpoll.org", true }, - { "bitpress.pro", true }, { "bitpumpe.net", true }, { "bitradius.com", true }, { "bitrate.tk", true }, + { "bitredirixe.top", true }, { "bitref.com", true }, { "bitrefill.com", true }, { "bitrefill.info", true }, { "bitrefill.me", true }, - { "bitroll.com", false }, { "bitrush.nl", true }, { "bits-hr.de", false }, { "bitsafe.com.my", true }, @@ -19491,33 +22998,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bitsimnow.se", true }, { "bitsite.com", true }, { "bitski.com", true }, - { "bitskins.co", true }, { "bitsler.ie", true }, { "bitso.com", true }, { "bitsoffreedom.nl", true }, { "bitspaceonline.ml", true }, { "bitstage.uk", true }, - { "bitstep.ca", true }, { "bitstorm.nl", true }, { "bitstorm.org", true }, { "bitsum.com", true }, { "bitsync.nl", true }, { "bitten.pw", true }, + { "bittentechsolutions.in", true }, { "bitterspringscabins.com.au", true }, { "bittersweetcandybowl.com", true }, { "bittervault.xyz", true }, { "bittimaatti.fi", true }, { "bittiraha.fi", true }, - { "bittivarasto.fi", true }, { "bitton.com.au", true }, { "bittounsi.com", true }, { "bittrend.ga", true }, { "bittrust.com", true }, { "bittylicious.com", true }, { "bitunit.tk", true }, - { "bituptick.com", false }, - { "bitvegas.com", false }, { "bitvest.io", true }, + { "bitvise.com", true }, { "bitwarden.com", true }, { "bitwardit.com", true }, { "bitwards.io", true }, @@ -19531,24 +23035,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "biurokarier.edu.pl", true }, { "biuropulawy.pl", true }, { "bivi.us", false }, + { "bivvy.com", true }, { "bixbasement.com", true }, { "bixbydevelopers.com", true }, - { "bixilon.de", true }, { "bixservice.com", true }, { "biyouclub.com", true }, { "biysk.ml", true }, - { "biz-architect.com", true }, + { "biz-academy.it", true }, { "biz-pak.ml", true }, { "biz-secrety.cf", true }, { "biz-secrety.ga", true }, { "biz-secrety.gq", true }, { "biz-secrety.ml", true }, { "biz-seecrets.gq", true }, - { "biz4x.com", true }, + { "biz4solutions.com", true }, + { "biz4x.com", false }, { "bizapps.lv", true }, { "bizarrefuture.cf", true }, { "bizbelarus.tk", true }, { "bizboatest.ga", true }, + { "bizcalcs.com", true }, + { "bizcatalyst360.com", true }, { "bizcope.com", true }, { "bizdemevcut.com.tr", true }, { "bizdir.tk", true }, @@ -19559,21 +23066,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bizify.co.uk", true }, { "bizlatinhub.com", true }, { "bizleal.com", true }, - { "bizmerlin.com", true }, - { "biznakenya.com", true }, + { "bizmonthly.com", true }, { "biznes-bum.tk", true }, { "biznes-sekrety.gq", true }, { "biznes-sekrety.tk", true }, { "biznes.cf", true }, { "biznes4you.ml", true }, - { "biznesinfo.pl", false }, { "biznesone.ga", true }, { "biznesonline.info", true }, { "biznesowe.pl", true }, { "biznet.tk", true }, { "bizniskatalog.mk", true }, + { "biznotes.ru", true }, { "biznpro.ru", true }, + { "bizoneplan.com", true }, + { "bizontrip.com", true }, { "bizophub.com", true }, + { "bizopia.com", true }, { "bizor.tk", true }, { "bizpay.su", true }, { "bizprom.ga", true }, @@ -19581,10 +23090,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bizstarter.cz", true }, { "bizsugar.ga", true }, { "bizteam.ga", true }, - { "biztelnow.com", true }, { "biztera.com", true }, { "biztok.eu", true }, + { "biztositok.com", true }, { "biztouch.work", true }, + { "biztrend.ru", true }, { "bizuteria-laoni.tk", true }, { "bizuteria-naprezent-szczecin.ml", true }, { "bizzdesign.com", true }, @@ -19594,27 +23104,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bizzybee.buzz", true }, { "bizzysites.gr", true }, { "bj-caffe.tk", true }, + { "bja.gov", true }, + { "bjargradakerfi.is", true }, + { "bjarnerest.de", false }, { "bjarno.xyz", true }, { "bjbybbs.com", true }, { "bjc.hu", true }, + { "bjcw.com", true }, { "bjecard.buzz", true }, { "bjelimici.com", true }, + { "bjerregaard.me", true }, { "bjfuli.com", true }, + { "bjgwyj.com", true }, + { "bjjmississauga.com", true }, { "bjl688.cc", true }, { "bjm-gembas.be", true }, { "bjmgeek.science", true }, { "bjoern-thoroe.de", true }, { "bjolanta.pl", true }, { "bjordanov.com", true }, + { "bjorknet.com", false }, { "bjornhelmersson.se", true }, { "bjornjohansen.no", true }, { "bjornlarssen.com", true }, { "bjornsennbrink.se", true }, { "bjrn.io", true }, { "bjs.com.au", true }, + { "bjs.gov", true }, { "bjsbouncycastles.com", true }, + { "bjshare.com", true }, + { "bjsms.de", true }, { "bjtxl.cn", true }, + { "bjugard.io", true }, { "bjut.photos", true }, + { "bjxx.com", true }, + { "bk-art.ru", true }, + { "bk-info.lt", true }, + { "bk1x.mobi", true }, + { "bk1xbet.mobi", true }, { "bk27.ru", true }, { "bk622.com", true }, { "bk725.com", true }, @@ -19623,18 +23150,127 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bkgatl.com", true }, { "bkhonnun.is", true }, { "bkhpilates.co.uk", true }, + { "bkin-15340.space", true }, + { "bkin-15451.space", true }, + { "bkin-15530.website", true }, + { "bkin-15777.website", true }, + { "bkin-16490.space", true }, + { "bkin-16543.website", true }, + { "bkin-16836.space", true }, + { "bkin-17242.website", true }, + { "bkin-18126.website", true }, + { "bkin-18399.space", true }, + { "bkin-18734.top", true }, + { "bkin-18822.space", true }, + { "bkin-18825.space", true }, + { "bkin-18888.space", true }, + { "bkin-19138.website", true }, + { "bkin-19335.website", true }, + { "bkin-19342.space", true }, + { "bkin-19827.space", true }, + { "bkin-20245.space", true }, + { "bkin-20467.website", true }, + { "bkin-20855.space", true }, + { "bkin-21332.website", true }, + { "bkin-21703.space", true }, + { "bkin-21882.website", true }, + { "bkin-22350.website", true }, + { "bkin-22808.website", true }, + { "bkin-22962.space", true }, + { "bkin-23261.website", true }, + { "bkin-23612.space", true }, + { "bkin-23658.website", true }, + { "bkin-23906.website", true }, + { "bkin-24119.space", true }, + { "bkin-24239.space", true }, + { "bkin-24456.space", true }, + { "bkin-25297.space", true }, + { "bkin-25798.website", true }, + { "bkin-25982.xyz", true }, + { "bkin-26191.top", true }, + { "bkin-26470.xyz", true }, + { "bkin-27135.xyz", true }, + { "bkin-27185.xyz", true }, + { "bkin-27262.xyz", true }, + { "bkin-27733.top", true }, + { "bkin-27825.space", true }, + { "bkin-28035.xyz", true }, + { "bkin-28589.xyz", true }, + { "bkin-28659.xyz", true }, + { "bkin-28749.xyz", true }, + { "bkin-28767.space", true }, + { "bkin-28946.xyz", true }, + { "bkin-29253.xyz", true }, + { "bkin-29349.xyz", true }, + { "bkin-29531.xyz", true }, + { "bkin-29696.xyz", true }, + { "bkin-29957.space", true }, + { "bkin-29993.xyz", true }, + { "bkin-30246.xyz", true }, + { "bkin-30429.xyz", true }, + { "bkin-30668.xyz", true }, + { "bkin-30794.xyz", true }, + { "bkin-30845.xyz", true }, + { "bkin-30862.xyz", true }, + { "bkin-30883.xyz", true }, + { "bkin-31087.website", true }, + { "bkin-31170.xyz", true }, + { "bkin-31436.xyz", true }, + { "bkin-31447.xyz", true }, + { "bkin-31656.xyz", true }, + { "bkin-31789.xyz", true }, + { "bkin-31972.xyz", true }, + { "bkin-32482.xyz", true }, + { "bkin-32486.xyz", true }, + { "bkin-32744.xyz", true }, + { "bkin-32863.xyz", true }, + { "bkin-33383.xyz", true }, + { "bkin-33544.xyz", true }, + { "bkin-33740.xyz", true }, + { "bkin-33813.xyz", true }, + { "bkin-33970.xyz", true }, + { "bkin-34233.xyz", true }, + { "bkin-34299.xyz", true }, + { "bkin-34456.xyz", true }, + { "bkin-34797.xyz", true }, + { "bkin-35189.xyz", true }, + { "bkin-35365.xyz", true }, + { "bkin-35372.xyz", true }, + { "bkin-35499.xyz", true }, + { "bkin-35692.xyz", true }, + { "bkin-36700.xyz", true }, + { "bkin-36749.xyz", true }, + { "bkin-37699.xyz", true }, + { "bkin-37873.xyz", true }, + { "bkin-37968.xyz", true }, + { "bkin-38134.xyz", true }, + { "bkin-38325.xyz", true }, + { "bkin-38877.xyz", true }, + { "bkin-39139.xyz", true }, + { "bkin-39933.xyz", true }, + { "bkin-40545.xyz", true }, + { "bkin-41419.xyz", true }, + { "bkin-41934.xyz", true }, + { "bkin-41976.xyz", true }, + { "bkin-42525.xyz", true }, + { "bkin-42740.xyz", true }, + { "bkin-43450.xyz", true }, + { "bkin-46680.xyz", true }, + { "bkk24.de", true }, + { "bkkf.at", true }, { "bkkposn.com", true }, - { "bkl-ca-qa-employeeapp.azurewebsites.net", true }, { "bklaindia.com", true }, { "bklynsoap.com", true }, + { "bkmexpress.com.tr", true }, + { "bkms-system.com", true }, { "bkositspartytime.co.uk", true }, + { "bkphcoop.com", true }, + { "bkpm.tj", true }, { "bkr.com", true }, { "bkramericas.com", true }, { "bksites.tk", true }, { "bkt.to", true }, - { "bkulup.com", true }, { "bl-builder.tk", true }, - { "bl00.se", true }, { "bl0ck.org", true }, { "bl4ckb0x.biz", true }, { "bl4ckb0x.com", true }, @@ -19681,37 +23317,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "black-mail.nl", true }, { "black-market.ga", true }, { "black-pool.net", true }, - { "black-raven.fr", true }, + { "black-rider-studio.eu", true }, { "black-rosella.tk", true }, { "black-side.tk", true }, { "black.dating", true }, { "blackandblond.tk", true }, { "blackandwhite.tk", true }, { "blackapron.com.br", true }, - { "blackarch.sk", true }, + { "blackarch.org", true }, { "blackarts.co.za", true }, { "blackassassins.tk", true }, { "blackbag.nl", true }, { "blackbam.at", true }, { "blackbbwvideos.com", true }, { "blackbean.tk", true }, - { "blackbettybbq.com", true }, + { "blackbeltmag.com", true }, { "blackbird-whitebird.com", true }, { "blackbirdproperties.tk", true }, + { "blackbox.earth", true }, { "blackboxcity.tk", true }, { "blackbrookwi.gov", true }, + { "blackbyrne.com", true }, { "blackbyte.it", true }, { "blackcastle.tk", true }, { "blackcat.ca", true }, + { "blackcatcard.com", true }, { "blackcatinformatics.ca", true }, { "blackcatinformatics.com", true }, { "blackcatwanderlust.com", true }, { "blackchristmas.tk", true }, + { "blackchrome.com.au", true }, { "blackcicada.com", true }, { "blackco.ga", true }, - { "blackcorner.cl", true }, + { "blackcoffee.website", true }, { "blackcountrymusicband.co.uk", true }, { "blackdiam.net", true }, + { "blackdoordc.com", true }, { "blackdown.de", true }, { "blackdragoninc.org", true }, { "blackeaglenet.tk", true }, @@ -19720,6 +23361,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackestdespondency.tk", true }, { "blackeyes.gq", true }, { "blackeyes.tk", true }, + { "blackfeather.in", true }, { "blackfire.io", true }, { "blackfirecrew.tk", true }, { "blackforeststheoriginal.cf", true }, @@ -19733,10 +23375,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackhat.dk", true }, { "blackhat.nz", true }, { "blackheads.tk", true }, - { "blackhealthwealth.com", true }, + { "blackheartbar.com", true }, { "blackhelicopters.net", true }, { "blackhillsinfosec.com", true }, { "blackhistorymonth.gov", true }, + { "blackidfound.org", true }, + { "blackisbetter.com", true }, { "blackjackballroomcasino.info", true }, { "blackjackprogramest.ga", true }, { "blackjaguar.tk", true }, @@ -19746,35 +23390,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blacklane.com", true }, { "blacklava.tk", true }, { "blacklightparty.be", true }, + { "blacklist.support", true }, { "blacklodge.tk", true }, + { "blacklotusaudio.com", true }, { "blackmagic.sk", true }, { "blackmagick-candles.com", true }, { "blackmagickwitch.com", true }, { "blackmagicshaman.com", true }, + { "blackmaleme.com", true }, { "blackmaskpro.gq", true }, + { "blackmesa.com", true }, { "blackmetalencyclopedia.tk", true }, { "blackmetalist.tk", true }, { "blackmetaller.tk", true }, + { "blackmilftube.com", true }, { "blackminds.tk", true }, { "blackmistery.tk", true }, { "blackmodelsusa.tk", true }, - { "blacknova.io", true }, { "blackoutzone.tk", true }, { "blackpapermoon.de", true }, { "blackpayment.ru", true }, { "blackphantom.de", true }, { "blackphoenix.de", true }, { "blackpi.dedyn.io", true }, + { "blackpooltransport.com", true }, { "blackportal.tk", true }, { "blackpurl.com", true }, { "blackriverfalls.tk", true }, - { "blackroadphotography.de", true }, + { "blackriverfallswi.gov", true }, { "blackrockvet.ie", true }, { "blackroses.tk", true }, { "blacksamantha.tk", true }, { "blackscytheconsulting.com", true }, { "blackseals.net", true }, + { "blacksecurityamg.art", true }, { "blacksega.ga", true }, + { "blacksentry.io", true }, { "blackshark.cf", true }, { "blacksheepsw.com", true }, { "blackslots.club", true }, @@ -19782,8 +23433,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackspark.tk", true }, { "blackspider.tk", true }, { "blacksport.ru", true }, - { "blackstonehost.com", true }, + { "blacksprut.com", true }, + { "blackstoneone.net", true }, { "blackstonepress.tk", true }, + { "blackstonetubrefinishers.ca", true }, { "blackstrapsecurity.com", true }, { "blackstump.xyz", true }, { "blacksuitmedia.com", false }, @@ -19794,14 +23447,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blacktemplars.tk", true }, { "blacktown.eu", true }, { "blacktownbuildingsupplies.com.au", true }, + { "blacktube.tv", true }, { "blacktubes.cf", true }, { "blacktubes.ga", true }, { "blacktubes.ml", true }, { "blacktype.bet", true }, + { "blackwaterlounge.com", true }, { "blackwaterutilities.tk", true }, + { "blackwellsupport.com", true }, { "blackwidow.tk", true }, { "blackwire.tk", true }, { "blackwoodrugby.tk", true }, + { "blackwoodseventcenter.com", true }, + { "blackwoodsprotector.co.nz", true }, { "blackworld.ga", true }, { "blackwot.ru", true }, { "blackyau.cc", false }, @@ -19809,6 +23467,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blackzebra.audio", true }, { "blade-online.tk", true }, { "bladesofteal.com", true }, + { "blaetter.de", true }, { "blaeu.com", true }, { "blagger.tk", true }, { "blaggo.com", true }, @@ -19816,6 +23475,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blago-sostoyanie.gq", true }, { "blago-sostoyanie.ml", true }, { "blago.tk", true }, + { "blagomed.by", true }, { "blagosvet.ml", true }, { "blague.tk", true }, { "blahaj.eu", true }, @@ -19826,6 +23486,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blairtownshipmi.gov", true }, { "blaise.io", true }, { "blaizer.tk", true }, + { "blake-thickbroom.co.uk", true }, { "blakecoin.org", true }, { "blakecommagere.com", true }, { "blakekhan.com", true }, @@ -19837,16 +23498,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blan.tk", true }, { "blanboom.org", true }, { "blancamartinez.com", true }, + { "blanchardandcalhoun.com", true }, { "blanchardla.gov", true }, { "blanchardvillewi.gov", true }, - { "blancoltd.co.uk", false }, + { "blancoltd.co.uk", true }, { "blanickymanifest.eu", true }, { "blankersfamily.com", true }, { "blanket.technology", true }, { "blankgeneration.net", true }, { "blankhang.com", true }, { "blankpage.link", true }, - { "blankpagebiz.com", true }, + { "blanksreload.com", true }, { "blankstore.com.pe", true }, { "blankstyle.com", true }, { "blantik.net", true }, @@ -19854,16 +23516,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blanx.de", true }, { "blanzastore.com.br", true }, { "blardiblah.com", true }, + { "blasdelamo.es", true }, { "blasflittchen.net", true }, { "blasorchester-runkel.de", true }, + { "blastedmirror.com", true }, { "blastentertainment.co.nz", true }, { "blastentertainment.com.au", true }, { "blastersklan.com", true }, - { "blastertag.com.ua", true }, { "blastoffbuisness.in", true }, { "blastofftherapy.com", true }, { "blastoise186.co.uk", true }, + { "blasunafotocadadia.com", true }, { "blathinwheatens.tk", true }, + { "blatino.com", true }, { "blatnic.eu", true }, { "blatnice.cf", true }, { "blatnice.fun", true }, @@ -19875,20 +23540,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blau-weiss-stolberg.de", true }, { "blaudev.es", true }, { "blauequelle.de", true }, - { "blauerhunger.de", true }, { "blauesschwarz.de", false }, + { "blauglockenbaum.de", true }, + { "blaulicht-giessen.de", true }, { "blaumedia.com", true }, { "blautiefe.de", true }, + { "blauwereigercoaching.nl", true }, { "blauwgras.nl", true }, { "blauwwit.be", true }, + { "blavandbike.de", true }, + { "blavandbike.dk", true }, { "blavaty.tk", true }, { "blayne.me", false }, { "blayneallan.com", false }, { "blazebd.com", true }, + { "blazeeria.com", true }, { "blazefire.tk", true }, { "blazeit.io", true }, + { "blazenet.net", true }, + { "blazerworks.com", true }, { "blazeweb.ml", true }, - { "blazincreationz.com", true }, { "blazing.cz", true }, { "blazingsaddles.ga", true }, { "blazingsuns.tk", true }, @@ -19896,6 +23567,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blbcleaningservices.com.au", true }, { "blbet365.com", true }, { "blblblblbl.fr", false }, + { "blc.net.au", true }, { "bleachbattalion.tk", true }, { "bleaching-tipps.de", true }, { "bleaklyrics.tk", true }, @@ -19908,36 +23580,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bleedmoneyest.ga", true }, { "bleekerenbleeker.nl", true }, { "bleep.zone", true }, - { "bleepplc.co.uk", true }, { "blegalservicespty.com", true }, { "blekingeopen.tk", true }, { "blender.io", true }, { "blenderinsider.com", true }, { "blenderrecipereviews.com", true }, - { "blenderwallet.io", true }, { "blendessencial.com", true }, { "blending.kr", true }, { "blendle.com", true }, { "blendle.nl", true }, - { "blendr.com", true }, - { "blendstudios.com", true }, { "blenneros.net", false }, { "blero.tk", true }, { "blessedgeeks.org", true }, { "blessedgeeks.social", true }, { "blessedguy.com", true }, + { "blessings24x7.com", true }, + { "blessingtransportbromoijen.com", true }, { "bleta.io", true }, { "bleuwire.com", true }, { "blewebprojects.com", true }, { "bleyershoes.com", true }, + { "blgw51.xyz", true }, { "blheritage-tours.com", false }, { "blic-zajm.gq", true }, { "blichmann.eu", true }, { "blicy.net", true }, { "blideobames.com", true }, + { "blids.nl", true }, { "blidz.com", false }, { "blieque.co.uk", true }, - { "bliesekow.net", true }, { "bliesener.com", true }, { "blightnight.games", true }, { "blightnight.live", true }, @@ -19949,40 +23620,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blikund.swedbank.se", true }, { "blinblin.la", true }, { "blindaryproduction.tk", true }, + { "blindenfreizeiten.de", true }, { "blindfold.cf", true }, { "blindfold.ga", true }, { "blindpigandtheacorn.com", true }, - { "blinds-unlimited.com", true }, { "blindscribblings.com", true }, { "blindsjoburg.com", true }, { "blingbusinessest.ga", true }, + { "blingdot.com", true }, { "blingsparkleshine.com", true }, - { "blingwang.cn", false }, { "blink-security.com", true }, + { "blink.mortgage", true }, { "blinkdir.tk", true }, { "blinkdrivex.com", true }, { "blinken.co", true }, - { "blinkenlight.co.uk", true }, { "blinkenlight.com.au", true }, { "blinking.life", true }, { "blinking.ml", true }, { "blinkspeed.eu", true }, { "blinniza.tk", true }, + { "blinq.me", true }, { "blio.tk", true }, + { "blippr.com", true }, { "blissbox.com", true }, { "blissdrive.com", true }, { "blissfulsmile.com", true }, { "blissjoe.com", true }, { "blissplan.com", true }, + { "blissso.com", true }, { "blissway.tk", true }, + { "blissy.com.br", true }, { "blist.xyz", true }, { "blisterreview.com", true }, + { "blistertrackandtrace.com", true }, + { "blitz-idee24.de", true }, { "blitzarena.io", true }, { "blitzga.me", true }, { "blitzkrieg.tk", true }, { "blitzlotto.tk", true }, - { "blitzman.herokuapp.com", true }, { "blitzpaintball.net", true }, + { "blitztesting.com", true }, { "blitzvendor.com", true }, { "blivawesome.dk", true }, { "blivdj.dk", true }, @@ -19993,31 +23670,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blizhost.com", true }, { "blizhost.com.br", true }, { "blizko.tk", true }, - { "blizora.com", true }, - { "blk-booking.com", true }, - { "blk-lunch.com", true }, - { "blk.me", true }, { "blkbx.eu", true }, { "blkj.com", true }, { "bllb.ru", false }, + { "blm.gov", true }, { "blm36.cc", true }, { "blm69.cc", true }, { "blnc.gov", true }, + { "blnsoftware.com", true }, { "blo-melchiorshausen.de", true }, + { "blobby.com", true }, { "blobemoji.com", true }, { "blobfolio.com", true }, + { "blobfox.coffee", true }, { "blobs.gg", true }, - { "blocher.ch", true }, - { "blochoestergaard.com", true }, { "block-planet.xyz", true }, { "block-this.com", true }, + { "block.xyz", true }, { "block65.com", true }, { "blockchain.com", true }, { "blockchain.info", true }, { "blockchain.poker", true }, { "blockchainaiintegra.com", true }, { "blockchainbulteni.com.tr", true }, - { "blockchaindaigakko.jp", true }, + { "blockchaincasinos.online", true }, { "blockchaininfo.news", true }, { "blockchaintech.ga", true }, { "blockcheck.network", true }, @@ -20027,24 +23703,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blockedyourcar.com", true }, { "blockedyourcar.net", true }, { "blockedyourcar.org", true }, - { "blockexplorer.online", true }, { "blockhost.net", true }, { "blockified.io", true }, + { "blockinx.com", true }, { "blockmetry.com", true }, { "blockmomsest.ga", true }, - { "blockscape.network", true }, { "blocksettle.com", true }, { "blockshopauto.com", true }, { "blockstream.com", true }, + { "blockstream.info", true }, { "blockstudio.it", true }, { "blocktab.io", true }, + { "blockthis.xyz", true }, { "blockvideo.live", true }, { "blockwatch.cc", false }, { "blockxit.de", true }, + { "blodeuyn.com", true }, { "bloemenbesteld.nl", true }, { "bloemendaalsamen.nl", true }, { "bloemendal.me", true }, { "blog-erotyczny.pl", true }, + { "blog-gpt.pl", true }, { "blog-investimenti.it", true }, { "blog-ludmily.ml", true }, { "blog-page.tk", true }, @@ -20053,21 +23732,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blog-story.tk", true }, { "blog-trawnikowy.pl", true }, { "blog.fo", true }, + { "blog.gov.uk", true }, { "blog.gparent.org", true }, { "blog.gt", true }, { "blog.je", true }, - { "blog.ln.cn", true }, { "blog.torproject.org", false }, { "blog.vu", true }, { "blogabout.ru", true }, { "blogabouthealthy.tk", true }, + { "blogabr.it", true }, { "blogaid.net", true }, { "bloganchoi.com", true }, { "blogaram.tk", true }, { "blogarts.net", true }, - { "blogauto.cz", true }, + { "blogbegin.xyz", true }, { "blogbookcassiopee.fr", true }, { "blogbooker.com", true }, + { "blogbrew.org", true }, + { "blogbuz.org", true }, + { "blogcast.com", false }, + { "blogclouds.com", true }, { "blogcosmeticsurgeon.ga", true }, { "blogcrimesnews.tk", true }, { "blogcuaviet.com", true }, @@ -20077,61 +23761,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blogdieconomia.it", true }, { "blogdimoda.com", true }, { "blogdimotori.it", true }, + { "blogdiva.org", true }, { "blogdosimoveis.com.br", true }, { "blogexpress.org", true }, + { "blogext.com", true }, { "blogfeng.tk", true }, { "blogforprofit.tk", true }, + { "bloggeek.com.au", true }, { "bloggermobile.tk", true }, { "bloggermoney.ml", true }, { "bloggermumofthreeboys.com", true }, { "bloggerse.com", true }, { "bloggersonlinetrainings.tk", true }, + { "bloggervent.com", true }, { "bloggerzarausa.ga", true }, - { "bloggiamgia.vn", true }, { "blogging-life.com", true }, + { "bloggingfusion.com", true }, { "bloggingkits.org", true }, + { "bloggingqna.com", true }, + { "bloggingtriggers.com", true }, { "bloggingwithchildren.com", true }, { "blogguitar.tk", true }, + { "bloggyaani.com", true }, + { "bloggymoms.com", true }, { "bloggytalky.com", true }, { "bloghogger.tk", true }, { "blogidol.tk", true }, - { "bloginbeeld.nl", true }, { "bloginformatique.ml", true }, { "blogit.fi", true }, + { "blogjunta.com", true }, + { "blogke.cn", true }, { "bloglogistics.com", true }, + { "blogman.com", true }, { "blognews.cf", true }, + { "blognewspapers.com", true }, + { "blognik.pl", true }, { "blognone.com", true }, - { "blogofant.de", true }, { "blogofapps.com", true }, + { "blogoflegends.com", true }, { "blogom.at", true }, { "blogotomia.tk", true }, { "blogpark.tk", true }, { "blogpress.co.il", true }, { "blogpronto.com.br", true }, + { "blogpsy.net", true }, { "blogreen.org", true }, { "blogsnote.xyz", true }, { "blogspasest.ga", true }, - { "blogssl.com", true }, + { "blogssl.com", false }, { "blogstar.tk", true }, { "blogtechnologiczny.pl", true }, { "blogthedata.com", true }, { "blogthetindung.com", true }, + { "blogtienao.com", true }, { "blogtroterzy.pl", true }, { "bloguser.ru", true }, { "blogvadim.ga", true }, + { "blogville.us", true }, + { "blogworm.eu", true }, + { "blokino.org", false }, { "blokmap.be", true }, { "blokuhaka.fr", true }, { "blomberg.name", true }, { "blomberguk.com", true }, - { "bloms.de", false }, + { "bloms.de", true }, { "blonde-hexe.net", true }, - { "blonde-hexe.org", true }, + { "blondish.net", false }, + { "bloobasket.com", true }, { "blood-kirsche.tk", true }, { "blood4pets.tk", true }, { "bloodandbones.tk", true }, { "bloodandhonourcentral.tk", true }, { "bloodhaven.tk", true }, { "bloodhunt.eu", true }, + { "bloodmeter.com", true }, { "bloodmine.ga", true }, { "bloodmissionsest.ga", true }, { "bloodpop.tk", true }, @@ -20142,35 +23845,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bloodybiz-news.tk", true }, { "bloodycraft.ml", true }, { "bloodyhawks.tk", true }, - { "bloom.ec", true }, - { "bloom.sh", true }, + { "bloom.sh", false }, + { "bloomberg.com", false }, { "bloombergadria.com", true }, + { "bloomberglp.com", false }, + { "bloombergtv.mn", true }, + { "bloomfield-investment.com", true }, + { "bloomfire.com", true }, + { "bloomingbit.io", true }, { "bloomingpink.in", true }, + { "bloomingskills.com", true }, { "bloomingtonelectionsil.gov", true }, { "bloomingtonil.gov", true }, { "bloomingwoods.tk", true }, { "bloomnail.net", true }, { "bloomppm.com", true }, { "bloomscape.com", true }, + { "bloondl.com", false }, { "blopezabogado.es", true }, - { "blossom.so", true }, + { "blorbo.link", true }, { "blossomtexas.gov", true }, { "blountsherifftn.gov", true }, { "blounttn.gov", true }, + { "blowingrock.gov", true }, { "blrjmt.com", true }, - { "blsindia.sg", true }, + { "blsattestation.com", true }, + { "blsgermanyvisa.com", true }, + { "blsindiavisa-uae.com", true }, + { "blt-avocat-nantes.fr", true }, { "bltc.co.uk", true }, { "bltc.com", true }, { "bltc.net", true }, { "bltc.org", true }, { "bltc.org.uk", true }, { "bltdirect.com", true }, - { "bluamoeba.com", true }, { "bluavido.ml", true }, { "blubop.fr", true }, { "blubracket.com", true }, { "blubux.tk", true }, - { "blucee.com", true }, { "bluconductor.com", true }, { "blucouriers.com.au", true }, { "bludiode.com", true }, @@ -20180,74 +23892,90 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blue-olive.co.za", true }, { "blue-pool.de", true }, { "blue-python.tk", true }, + { "blue2purple.com", true }, { "blueangel.org.tw", true }, { "blueatlasmarketing.com", true }, { "bluebahari.gq", true }, - { "bluebill.net", false }, { "bluebird.com", true }, { "bluebirdelc.com", true }, { "bluebirdservice.us", true }, { "bluebnc.com", true }, { "blueboat.io", true }, + { "bluecam.com", true }, { "bluecanvas.io", true }, { "bluecat.tk", true }, + { "bluecatnetworks.com", true }, { "bluecherry.tk", true }, - { "bluechipspace.com", true }, { "bluecoastelectric.com", true }, { "bluecoatnetflowsupport.com", true }, { "bluecollarfetishwear.com", true }, { "bluecosmetics.tk", true }, + { "bluecrossmn.com", true }, { "blued.moe", true }, { "bluedeck.org", true }, { "bluedivision.tk", true }, { "bluedog-security.com", true }, + { "bluedotsigns.com", true }, { "blueenergy.tk", true }, { "blueeyesworld.tk", true }, + { "bluefieldwv.gov", true }, { "bluefieldwvpd.gov", true }, - { "bluefireflynwa.com", true }, { "blueflare.org", true }, + { "blueflystudios.com", true }, + { "bluefrontier.co.uk", true }, + { "bluefurniturerentals.com", true }, { "bluefuzz.nl", true }, { "bluegifts.ro", true }, { "bluegoat.jp", true }, + { "bluegolf.com", true }, { "bluegorilla.es", true }, - { "bluegrottoscuba.com", false }, - { "bluehillhosting.com", true }, { "bluehillme.gov", true }, { "blueimp.net", true }, + { "blueinc.com.au", true }, + { "bluejeans.com", true }, + { "blueknights6.eu", true }, { "bluekrypt.com", true }, { "bluelighter.tk", true }, { "bluelily.ga", true }, { "bluelime.it", true }, + { "bluelinestation.com", true }, { "bluemagnetinteractive.com", true }, { "bluemail24.com", true }, { "bluemango-studios.com", true }, { "bluemanhoop.com", true }, - { "bluemonte.com", true }, + { "bluemodus.com", true }, + { "bluemonte.com", false }, { "bluemoonrescue.org", true }, { "bluemosh.com", true }, { "bluemoundtexas.gov", true }, { "bluemountain-ms.gov", true }, { "bluemtnrentalmanagement.ca", true }, - { "bluenailsstudio.nl", true }, - { "bluenet-26.com", true }, + { "bluenetworks.xyz", true }, { "blueneuron.tk", true }, { "blueoakart.com", true }, { "blueoceanbrain.com", true }, { "blueparrotpainting.com", true }, { "bluepearl.tk", true }, { "blueperil.de", true }, + { "blueplanet.social", true }, + { "blueport.com", false }, { "bluepostbox.de", true }, - { "blueprintma.com", true }, { "blueprintrealtytn.com", true }, + { "blueprintsdogstudio.com", true }, { "bluepromocode.com", true }, + { "blueprotocol-cn.com", true }, { "bluerange.io", true }, + { "blueride.se", true }, { "blueridge.social", true }, + { "blueridgemachinery.com", true }, { "blueridgeplans.com", true }, { "bluerootsmarketing.com", true }, { "blues-and-pictures.com", true }, + { "blues.at", true }, { "bluesbarn.tk", true }, { "bluesbuyers.com", true }, { "bluescape.com", true }, + { "bluescape.io", true }, { "blueshouse.ro", true }, { "blueskiesmassage.com", true }, { "bluesky-it.uk", true }, @@ -20257,25 +23985,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blueskywebdesign.net", true }, { "bluesnews.tk", true }, { "bluesoap.com.au", true }, + { "bluespirit.com", true }, { "bluespotmedia.ro", true }, { "bluestarbus.co.uk", true }, { "bluestardiabetes.com", true }, - { "bluestarroofing.com", true }, { "bluestoneconstruction.com", true }, { "bluestrigger.tk", true }, - { "bluesuncamping.com", true }, { "bluesunhotels.com", true }, { "blueswandaily.com", true }, { "bluesync.co", true }, { "bluesystem.tk", true }, + { "bluetape.com", true }, { "bluetape.tk", true }, { "bluetexservice.com", true }, + { "bluetime.com", true }, { "bluetomatographics.com", true }, { "bluetoothlasersers.ga", true }, { "bluetoothspecialist.ga", true }, - { "bluetrout.nl", true }, - { "bluewatertaco.com", false }, - { "bluewavewebdesign.com", true }, + { "bluetrout.nl", false }, { "bluewire.ca", true }, { "bluewizardart.net", true }, { "bluex.im", true }, @@ -20283,6 +24010,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bluex.net", true }, { "bluex.org", true }, { "blueyonder.com", true }, + { "blufashion.com", true }, { "bluffcitytn.gov", true }, { "bluffplumber.co.za", true }, { "bluffsbyowner.com", true }, @@ -20302,121 +24030,162 @@ static const nsSTSPreload kSTSPreloadList[] = { { "blummedia.de", true }, { "blundell.wedding", true }, { "bluntandsnakes.com", true }, - { "blupig.net", true }, { "bluproducts.com.es", true }, + { "blur.io", true }, + { "blurbhack.com", true }, { "blurringexistence.net", true }, { "blurt.cf", true }, { "blushbymounika.com", false }, { "blushingweb.tk", true }, { "blusmurf.net", true }, { "blutooth.ga", true }, - { "bluuglass.com", true }, + { "blutspende.de", true }, { "bluware.com", true }, { "bluxus.com", true }, + { "bluzone.io", true }, { "blv38.fr", true }, { "blw-eschwege.de", true }, { "blw.moe", false }, - { "blwsongs.net", true }, { "blyat.science", true }, { "blyth.me.uk", true }, { "blythwood.com", true }, + { "bm-academy.fr", true }, { "bm-dataprotect.ch", true }, { "bm-i.ch", false }, - { "bm-immo.ch", false }, + { "bm-pc.ddns.net", true }, { "bm-trading.nl", true }, + { "bmac.cloud", true }, + { "bmak.me", true }, + { "bmak.xyz", true }, { "bmbfiltration.com", true }, - { "bmcorp.online", true }, { "bmeia.gv.at", true }, + { "bmelecevolution.com", true }, { "bmhglobal.com.au", true }, { "bmipestcontrol.com", true }, { "bmjphotography.tk", true }, { "bmk-kramsach.at", true }, { "bmm.com.co", true }, - { "bmoabogados.com", true }, { "bmoattachments.org", true }, { "bmoe.eu.org", true }, { "bmone.net", true }, { "bmotorsports.com", true }, + { "bmr.ar", true }, { "bmriv.com", true }, { "bmros.com.ar", true }, - { "bmrpainting.com", true }, { "bmsexperthub.hu", true }, + { "bmskibaru.com", true }, + { "bmsupermercados.es", true }, { "bmw-motorradclub-seefeld.de", true }, { "bmwcolors.com", true }, { "bmwdasauto.com", true }, { "bmwhocking.com", true }, + { "bmwhocking.nz", true }, { "bmwpartsdeal.com", true }, { "bmyjacks.cn", false }, { "bmzm.nl", false }, { "bnb-buddy.nl", true }, { "bnb.direct", true }, + { "bnbhome.com", true }, { "bnboy.cn", true }, { "bnbsinflatablehire.co.uk", true }, { "bnc.sh", true }, { "bnck.me", true }, { "bnct.us", true }, { "bnd.house", true }, + { "bnews.vn", true }, { "bnext.tech", true }, { "bngdigital.com", true }, { "bngs.pl", true }, { "bngsecure.com", true }, - { "bnicapital.ch", true }, { "bnicapital.com", true }, { "bnin.org", true }, { "bnjscastles.co.uk", true }, { "bnkconsulting.info", true }, { "bnnuy.com", true }, + { "bnpl.kz", true }, + { "bnpparibas-am.com", true }, + { "bnpparibas.be", true }, + { "bnpparibas.bg", true }, + { "bnpparibas.co.uk", true }, + { "bnpparibas.com.hk", true }, + { "bnpparibas.de", true }, + { "bnpparibas.es", true }, + { "bnpparibas.it", true }, + { "bnpparibas.lu", true }, + { "bnpparibas.no", true }, + { "bnpparibas.pt", true }, + { "bnpparibas.ru", false }, + { "bnpparibascardif.com.ar", true }, { "bnrailstories.com", true }, + { "bnssigns.com", true }, { "bnstree.com", false }, { "bnty.net", true }, - { "bnzblowermotors.com", true }, + { "bnwrdil.gov", true }, + { "bo-1xbet.com", true }, { "bo-rad.de", true }, + { "bo.ke", true }, { "bo1689.com", false }, - { "bo2projects.be", true }, { "bo4tracker.com", true }, { "boa.rw", true }, { "boam.nu", true }, { "boanastudio.com", true }, + { "board-portal.org", true }, + { "board-room.ca", true }, + { "boardcloud.org", false }, { "boardfree.tk", true }, { "boardgameforces.com", true }, { "boardgamegeeks.de", true }, + { "boardgameshots.com", true }, { "boardingschoolreview.com", true }, - { "boardoftheworld.com", true }, + { "boardlinks.gov.au", true }, + { "boardmad.com", true }, + { "boardroommind.com", true }, { "boards.ie", true }, + { "boardsoftware.net", true }, { "boardspot.com", true }, { "boardusersers.ga", true }, { "boat-engines.eu", true }, { "boathut.com.au", true }, - { "boatlogs.herokuapp.com", true }, { "boatmanwindsor.com", true }, - { "boatseller.org", false }, + { "boats.com", false }, + { "boatsandoats.com", true }, + { "boatsdonated.com", true }, + { "boatseller.org", true }, + { "boatsforveterans.org", true }, { "boattour.ru", true }, { "boattrader.com.au", true }, + { "boatyardx.com", true }, + { "boauganda.com", false }, + { "boazwi.gov", true }, { "bob-dylan.tk", true }, { "bob-fuchs.de", true }, + { "bob.nl", true }, + { "bob.pe", true }, + { "bob168.net", true }, { "bobaly.es", false }, { "bobancoamigo.com", true }, { "bobandbrians.com.au", true }, - { "bobandducky.com", true }, + { "bobandducky.com", false }, { "bobaobei.net", true }, { "bobaobei.org", true }, { "bobasy.pl", true }, { "bobazar.com", true }, - { "bobbleheads.com", true }, - { "bobbyblueplumbing.com", true }, { "bobbyfischer.tk", true }, { "bobbyhensley.com", true }, { "bobbyoriginal.tk", true }, { "bobbyrobinson.tk", true }, + { "bobcat.com", true }, { "bobcoffee.com.br", true }, { "bobcopeland.com", true }, { "bobek.cz", true }, + { "bobep.ru", true }, + { "bobet.it", true }, + { "bobfilm.ml", true }, { "bobigames.com", true }, { "bobiji.com", false }, { "bobijoel.ml", true }, { "bobkidbob.com", true }, { "boblog.tk", true }, - { "bobmaster.cyou", true }, { "bobnbounce.ie", true }, { "bobnbouncedublin.ie", true }, { "boboboboboaji.xyz", true }, @@ -20427,35 +24196,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bobstenancycleaning.co.uk", true }, { "bobstikkers.be", true }, { "bobstronomie.fr", true }, - { "bobtiell.com", true }, { "bobvincent.com", true }, { "bocaaboca.ml", true }, { "bocabeats.tk", true }, - { "bocada.com", true }, + { "bocada.com", false }, { "bocahkampus.com", true }, { "bocal.cf", true }, { "bocamo.it", true }, { "bocawa.es", true }, { "bocbot.tk", true }, { "boccabell.com", false }, - { "boccard.fr", true }, { "bocciatitanium.com", true }, - { "bochfernsh.com", true }, { "bochs.info", true }, { "bocloud.eu", true }, + { "boctok.space", true }, + { "bocusedormauritius.com", true }, { "bodas.com.mx", true }, { "bodas.net", true }, { "bodascartagena.com", true }, - { "bodegademuebles.com", true }, + { "bodclansite.tk", true }, + { "boddunan.com", true }, { "bodegagarces.tk", true }, { "bodegasvirei.com", false }, { "bodemplaten4x4.nl", true }, + { "boden.co.uk", true }, { "bodesi.com", true }, { "bodhi.fedoraproject.org", true }, + { "bodhionline.com", true }, { "bodin.cz", true }, - { "bodis.nl", true }, { "bodivo.vn", true }, { "bodixite.com", true }, + { "bodlsc.com", true }, { "bodrumescmagazin.tk", true }, { "bodrumfarm.com", true }, { "bodrus.com", true }, @@ -20465,15 +24236,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bodyblog.nl", true }, { "bodybuilding.com", false }, { "bodybuilding.events", true }, + { "bodybuilding.nl", true }, { "bodybuildingstyle.tk", true }, { "bodybuildingsupplementsexplained.com", true }, { "bodybuildingworld.com", true }, + { "bodycare.cn", true }, { "bodyecology.com", true }, { "bodygearguide.com", true }, { "bodyhealthcare.tk", true }, + { "bodyheightweight.com", true }, { "bodymassage.cf", true }, { "bodymod.tk", true }, { "bodymusclejournal.com", true }, + { "bodypad.com", true }, { "bodypainter.pl", true }, { "bodypainting.waw.pl", true }, { "bodyshaping.ml", true }, @@ -20482,15 +24257,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bodyweb.com.br", true }, { "bodyweightsolution.com", true }, { "boealpinelounge.it", true }, - { "boeddhashop.nl", true }, { "boegli.tk", true }, { "boehm.sh", true }, { "boehs.org", true }, { "boeing747.tk", true }, + { "boekstuk.com", true }, { "boeleo.ru", true }, + { "boelsen.net", true }, { "boensite.tk", true }, { "boenyc.gov", true }, { "boerandolphcountyga.gov", true }, + { "boerderijspel.nl", true }, + { "boeren.de", false }, + { "boerger.com", true }, + { "boesckens.de", true }, { "boese.one", true }, { "boevik.ml", true }, { "boew.de", true }, @@ -20499,41 +24279,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "boffin.tk", true }, { "bofn.com.tr", true }, { "bofoxdesign.com", false }, - { "bog8.com", true }, { "bogatyizhenih.tk", true }, - { "bogazreflusu.com", true }, { "bogdanbiris.com", true }, { "bogdancornianu.com", true }, { "bogdanepureanu.ro", true }, { "bogdanov.ga", true }, { "bogdanow.tk", true }, { "bogdatrend.ml", true }, - { "boggsinvesting.com", true }, { "bogner.sh", true }, + { "bogolyandras.com", true }, { "bogosity.tv", true }, { "bogoslov.tk", true }, { "bogs-consulting.de", true }, { "bogs.de", true }, { "bogtom.tk", true }, - { "bogurl.com", true }, { "bogus.ltd", true }, { "bogwitch.tk", true }, { "bohaishibei.com", true }, { "bohan.co", true }, { "bohemiantooers.ga", true }, - { "bohobasics.nl", true }, - { "bohostijl.nl", true }, { "bohramt.de", true }, { "bohyn.cz", true }, { "boikhor.com", true }, { "boilermechhr.com", true }, + { "boiliai.lt", true }, + { "boilingpoint.net", true }, { "boimmobilier.ch", false }, { "boingboing.net", true }, { "boingo00.wtf", true }, + { "bointon.com", true }, { "boip.in", true }, { "boira.tk", true }, { "boisebirthdoula.com", true }, - { "boisehomeoffers.com", true }, { "boiseonlinemall.com", true }, { "boizeau.fr", true }, { "bojan.tk", true }, @@ -20541,27 +24318,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bojiu99.cc", true }, { "bojoproductions.tk", true }, { "bokadoktorn.se", true }, + { "bokaldo.com", true }, { "bokatas.tk", true }, - { "boke.one", false }, { "boke112.com", true }, { "bokehandbows.ca", true }, + { "bokentau-company.kz", true }, { "bokhaldari.is", true }, { "bokhylle.eu", true }, { "bokkeriders.com", true }, { "bokkun.jp", true }, { "bokov.gq", true }, { "boksburgplumbing.co.za", true }, - { "boksburgrubbleremovals.co.za", true }, { "bokutake.com", true }, { "bol.io", true }, { "bolalocobrews.co.uk", true }, + { "bolaodarico.com.br", true }, + { "bolbilisim.com", true }, { "bolchettabolsos.es", true }, { "boldare.com", true }, { "boldbeau.pt", true }, { "bolderly.com", true }, { "boldhaus.de", true }, { "boldogsagadni.hu", true }, - { "boldsmartlock.com", true }, + { "boldorion.com", true }, + { "boldsmartlock.com", false }, { "bolehvpn.net", true }, { "bolektro.de", true }, { "bolele.org", true }, @@ -20571,6 +24351,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "boleyn.su", true }, { "bolgarnyelv.hu", true }, { "bolgarus.ru", false }, + { "bolha.one", true }, { "bolicforum.com", true }, { "bolid.tk", true }, { "bolivar-circuit-clerk.ms", true }, @@ -20579,6 +24360,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bolivarfm.com.ve", true }, { "boliviaverde.tk", true }, { "bolivin.ga", true }, + { "bollervilla.de", true }, { "bolli.tech", true }, { "bollymarket.com", true }, { "bollywoodacapellas4djs.tk", true }, @@ -20588,16 +24370,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bollywoodstrot.tk", true }, { "bologna-disinfestazioni.it", true }, { "bolognatoday.it", true }, + { "bolognatsrmpstrp.it", true }, { "bologoe.tk", true }, { "bololo.fun", true }, - { "bololo.online", true }, + { "bolonapps.com", true }, { "bolos.tk", true }, { "bolosbatiente.tk", true }, - { "bolovegna.it", true }, { "bolsa.tk", true }, { "bolsasbellagio.com.br", true }, - { "bolsashidrosolubles.com", true }, - { "bolseriacarioca.com.br", true }, { "bolshevik.tk", true }, { "bolshoi.tk", true }, { "bolshoy.tk", true }, @@ -20606,6 +24386,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bolte.org", true }, { "boltmobile.ca", true }, { "bolton-consulting.org", true }, + { "boltonct.gov", true }, { "boltreplassen.no", true }, { "boluhaberleri.tk", true }, { "bolur.is", true }, @@ -20615,8 +24396,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bolzanoavvocati.it", true }, { "bolzanoinfo.it", true }, { "boma.ml", true }, - { "bomb.codes", true }, + { "bomanufacture.com", true }, { "bombard.ga", true }, + { "bombasticthoughtexperiments.com", true }, { "bombe-lacrymogene.fr", true }, { "bomberosceuta.tk", true }, { "bomberus.de", true }, @@ -20633,8 +24415,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bomhard.net", true }, { "bomhard.org", true }, { "bomnet.tk", true }, - { "bomprezzi.eu", true }, { "bompus.com", true }, + { "bon-appetit-wesel.de", true }, { "bonaccordpestcontrol.co.uk", true }, { "bonaccorso.eu", true }, { "bonaemi.ga", true }, @@ -20648,13 +24430,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonami.si", true }, { "bonami.sk", true }, { "bonami.tech", true }, + { "bonamihome.ro", true }, { "bonanzateam.tk", true }, + { "bonaparte.com.co", true }, { "bonapati.tk", true }, { "bonapeti.ml", true }, + { "bonapp.restaurant", false }, { "bonaselect.lv", true }, { "bonawehouse.co.uk", true }, - { "bonbini.ga", true }, { "bonbonka.best", true }, + { "bonbonmania.com", true }, { "bonbonshop.ro", true }, { "bonchaboncha.com.tw", true }, { "bondagefetishstore.com", true }, @@ -20664,23 +24449,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bondcountysa.gov", true }, { "bondcouponers.ga", true }, { "bondingwithbaby.ca", true }, + { "bondlink.com", true }, { "bondmaster.tk", true }, - { "bondoptimiser.co.za", true }, { "bondpro.gov", true }, { "bondscript.tk", true }, - { "bondskampeerder.nl", true }, + { "bondvigilantes.com", true }, { "boneanu.tk", true }, { "bonebreakers.tk", true }, { "bonebunny.de", true }, - { "boneko.de", true }, { "boneros.tk", true }, + { "bonesserver.com", true }, { "bonexio.tk", true }, { "bonfi.net", true }, + { "bonfire.co.uk", true }, { "bonfireleads.com", false }, { "bong--brothers.tk", true }, { "bongbong-irl.com", true }, { "bongbongirl.com", true }, { "bongbongmarcos.com", true }, + { "bonghuyn.com", true }, { "bongit.de", true }, { "bongjukim.com", true }, { "bongloy.com", true }, @@ -20694,16 +24481,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonitadesax.com", true }, { "bonitamacas.tk", true }, { "bonitaslecturas.ml", true }, + { "bonitasoft.com", true }, { "bonitech.co.uk", true }, { "bonito.pl", true }, { "bonjourimmo.tv", true }, + { "bonjourlulu.com.ar", true }, + { "bonjourmademoiselle.fr", true }, { "bonk.pw", true }, { "bonkleagues.ml", true }, + { "bonkotsua.net", true }, { "bonn.digital", true }, - { "bonnant-associes.ch", false }, - { "bonnant-partners.ch", false }, { "bonneannee.tk", true }, - { "bonnebouffe.fr", true }, + { "bonnepart.fr", true }, + { "bonneribyen.no", true }, { "bonnetmoda.com", true }, { "bonnevillecountyidaho.gov", true }, { "bonniecoloring.com", true }, @@ -20713,7 +24503,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonniestylez.net", true }, { "bonnsustainabilityportal.de", true }, { "bonnydevil.com", true }, - { "bonnyprints.fr", true }, { "bono3.ir", true }, { "bonobo.cz", true }, { "bonprix.co.uk", true }, @@ -20721,10 +24510,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonsai-uk.cf", true }, { "bonsaiclubkengai.tk", true }, { "bonsaiclubsanvi.tk", true }, + { "bonsaicrm.com", true }, { "bonsaimedia.nl", true }, { "bonsaitree.tv", true }, { "bonsaj.tk", true }, - { "bonsi.net", false }, { "bonte.tk", true }, { "bonukset.cf", true }, { "bonukset.tk", true }, @@ -20737,29 +24526,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bonusup.tk", true }, { "bonviveur.com", true }, { "bonvorur.is", true }, + { "bonwari.com", true }, { "boo", true }, + { "boobsgirls.com", true }, { "boodmo.com", true }, { "boof.com", false }, - { "boogboi.club", true }, { "boogiedown.tk", true }, + { "booglobal.com", true }, { "boogschutters-perk.tk", true }, { "boojiboysbasement.tk", true }, { "book-excursion.com", true }, { "book-in-hotel.com", true }, { "book-online.tk", true }, { "book-sites.cf", true }, + { "book24.ru", true }, { "bookameeting.se", true }, + { "bookb.com", true }, { "bookbazar.co.in", true }, + { "bookchums.com", true }, + { "bookcreator.com", true }, { "booker.ly", true }, + { "bookfirm.com", true }, { "bookgeek.ga", true }, + { "bookginawest.com", true }, + { "bookingdjparis.fr", true }, + { "bookingpressplugin.com", true }, { "bookingready.com", true }, + { "bookingslog.com", true }, { "bookingsrit.tk", true }, { "bookingtool.com", true }, { "bookingtool.net", true }, { "bookingworldspeakers.com", true }, + { "bookitlive.net", true }, { "bookkeepingsolutions.com.au", true }, { "bookmaker.expert", true }, + { "bookmark.cam", true }, { "bookmark.gq", true }, + { "bookmark.porn", true }, { "bookmarkblog.tk", true }, { "bookmarkclub.ga", true }, { "bookmarkclub.gq", true }, @@ -20774,6 +24577,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bookmarkup.gq", true }, { "bookmarkup.ml", true }, { "bookmarkup.tk", true }, + { "bookmysplash.com", true }, { "booknooktutor.com", true }, { "bookourdjs.com", true }, { "bookposh.com", true }, @@ -20786,79 +24590,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bookshopofindia.com", true }, { "booksinthefridge.at", true }, { "booksjar.com", true }, + { "booksky.com", true }, { "bookslibrarybooks.gq", true }, { "booksoncamping.com", true }, { "bookstores.gq", true }, { "bookstrap.ga", true }, - { "booktoan.com", true }, - { "booktook.cz", true }, + { "booksy.com", true }, + { "booktruestorys.com", true }, { "bookvuz.tk", true }, + { "bookwear.com", true }, { "bookworld.gr", true }, - { "bookxuan.com", false }, + { "bookwormstory.social", true }, + { "bookwritingbureau.com", true }, { "bookyourdata.com", true }, { "bookzaga.com", true }, { "bool.be", true }, { "booldamm.llc", true }, { "boombangcreditos.tk", true }, { "boomboomboat.com", true }, - { "boomerangworkouts.com", true }, + { "boomcloud.net", true }, + { "boomerangwater.com", true }, { "boomersurf.com", true }, { "boomfestival.org", true }, - { "boomgamer.ru", true }, + { "boomfinity.xyz", true }, + { "boomingnewtech.com", true }, + { "boomingofthings.com", true }, { "boomkins.net", true }, { "boomshadow.net", true }, + { "boomshine.de", true }, + { "boomsocial.com", true }, + { "boomstyle.com", true }, { "boomsual.com", true }, { "boomtheme.com", true }, { "boomtownevents.com", true }, { "boomvm.pw", true }, - { "boon.so", true }, { "boonecountyfpdmo.gov", true }, { "boonecountyil.gov", true }, { "boonecountyne.gov", true }, { "boonecountywv.gov", true }, + { "boonecsdia.gov", true }, + { "booneiowa.gov", true }, { "boonemo.gov", true }, { "boonshoft.com", true }, - { "boontech.xyz", true }, { "booox.biz", true }, { "booox.cc", true }, { "booox.net", true }, { "booox.org", true }, { "booox.pw", true }, { "boop.gq", true }, - { "boop.pro", true }, + { "boop.icu", true }, { "booq.org", true }, { "booquiz.com", true }, { "booshka.ga", true }, { "boosinflatablegames.co.uk", true }, { "boosman.nu", true }, { "boosmanpoolservice.com", true }, + { "boost-collective.com", true }, { "boost.fyi", true }, { "boost.ink", true }, { "boostdesign.tk", true }, { "boostermachine.com", true }, + { "boostertonbusiness.com", true }, { "boostgame.win", true }, { "boostitco.com", true }, { "boostplm.com", true }, { "boostport.com", true }, { "boostport.com.au", true }, + { "boostroom.com", true }, { "boostsafety.com", true }, - { "boostup.ai", true }, - { "booter.es", true }, + { "boostup.com.tr", true }, + { "boostyour.bio", true }, { "booths.cyou", true }, { "bootlesshacker.com", true }, - { "bootmint.com", true }, { "boots-shop.tk", true }, { "bootsa.ga", true }, { "bootsa.tk", true }, - { "bootspropertycentral.co.uk", true }, + { "bootstrapcollab.com", true }, { "bootswinter.tk", true }, + { "bootsy.org", true }, + { "bootytube.net", true }, { "boozinyan.com", true }, { "bopiweb.com", true }, { "bopyx.com", false }, - { "boraboraphotos.com", true }, + { "boraarat.com", true }, + { "boraboraphotos.com", false }, { "boracay.tk", true }, + { "boraclub.com", true }, { "borafalardeguito.com", true }, - { "borahan.net", true }, + { "borahan.net", false }, { "boranco.tk", true }, { "borasol.tk", true }, { "borba-umov.tk", true }, @@ -20869,7 +24688,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "borde.network", true }, { "bordeiu.ro", true }, { "bordelique.tk", true }, - { "bordenmax.nl", true }, { "bordercolli.tk", true }, { "bordercollie.tk", true }, { "bordercolliesworkingdogs.tk", true }, @@ -20877,16 +24695,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "borderfever.cf", true }, { "borderfever.ga", true }, { "borderfever.ml", true }, + { "borderlens.com", true }, { "borderless.ro", true }, - { "borderless360.com", true }, + { "borderless360.com", false }, + { "borderpatroledu.org", true }, + { "bordersbuses.co.uk", true }, { "borderzoo.tk", true }, - { "bordes.com.ar", true }, { "bordes.me", true }, + { "bordo.com.au", true }, { "bordoeurope.com", true }, + { "bordonisport.com", true }, { "borduurcadeau.tk", true }, { "borduurpatronen.tk", true }, { "borduurshophengelo.nl", true }, { "bore.lt", true }, + { "borealis.gg", true }, + { "borealis.su", true }, { "boredhackers.com", true }, { "boredhoard.com", true }, { "boredhousewifeconfessions.cf", true }, @@ -20895,43 +24719,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "borein.cf", true }, { "boreo.si", true }, { "boresmail.ru", true }, + { "borfin.com", true }, + { "borgcube.com", true }, + { "borgmann-krankenfahrten.de", true }, { "borgmestervangen.xyz", true }, { "borgoaureo.com", true }, { "borgodigatteraia.it", true }, { "borgshof.tk", true }, + { "borhunter.pl", false }, { "boringnews.tk", true }, { "boringpoll.com", true }, { "boringsmith.com", true }, - { "boris64.net", true }, + { "borisandina.com", true }, { "borisenko-alexander.com", true }, { "borisenko.by", true }, { "borislam.tk", true }, { "borisof.tk", true }, + { "borispatagonia.com", true }, { "borja.io", true }, + { "borjaacost.com", true }, { "borjalucero.es", true }, { "borlangefk.tk", true }, { "borman.biz", true }, { "born2bounce.co.uk", true }, { "born2dance.tk", true }, - { "bornaandishan.ir", true }, { "bornandgrazed.com", true }, - { "bornbabies.com", true }, { "borneodictionary.com", true }, { "bornfiber.dk", true }, { "bornhack.dk", true }, { "bornreality.tk", true }, { "borntobetogether.eu", true }, { "borntocover.pl", true }, + { "borntoraid.com", true }, { "boros.tk", true }, { "borowski.pw", true }, { "borraxeiros.tk", true }, { "borriquillacuenca.tk", true }, + { "borsa2k.com.tr", true }, { "borsodsakk.hu", true }, { "bortebest.no", true }, - { "bortox.it", true }, + { "borygoai.org", true }, { "borysek.net", true }, { "borysenko.se", true }, - { "borza.blog", false }, { "borzaresearch.com", true }, { "borzov.tk", true }, { "bosabosa.org", false }, @@ -20953,35 +24782,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bosiquanao.vn", true }, { "boskant.tk", true }, { "bosnia-online.tk", true }, + { "bosniaks.com", true }, { "bosonogka.tk", true }, { "bospiraat.tk", true }, { "bospor.tk", true }, { "bosquedelasimagenes.tk", true }, { "bosquedepalabras.com", true }, { "boss.az", true }, + { "bossbox.com.py", true }, { "bossefors.tk", true }, - { "bossioboutique.it", true }, + { "bossongplumbing.com", true }, { "bossurl.tk", true }, + { "bostan.com", true }, { "boston-molly.tk", true }, { "boston-sailing.com", true }, { "bostonadvisors.com", false }, { "bostonaoii.com", true }, { "bostonblockchainassociation.org", true }, { "bostonews.tk", true }, + { "bostonfast.com", true }, { "bostonivy.co", true }, - { "bostonprocleaning.com", true }, + { "bostonmedicalgroup.com", true }, { "bostonsportsmedicinemd.com", true }, { "bosun.io", true }, + { "boswellboropd-pa.gov", true }, { "bot-manager.pl", true }, + { "botanical.house", true }, + { "botanicoved.com", true }, + { "botanischkunstenaarsnederland.nl", true }, { "botarticle.ga", true }, { "botbrother.ml", true }, - { "botcamp.org", true }, { "botcop.de", true }, { "botcore.ai", true }, { "botdiril.com", true }, { "botealis.ch", false }, { "botelegram.tk", true }, - { "botezdepoveste.ro", false }, { "botguard.net", true }, { "bothive.io", true }, { "boticadiservicio.com", true }, @@ -20997,28 +24832,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "botoes-primor.pt", true }, { "botoks.tk", true }, { "botox.bz", true }, - { "botoxclinic.gr", true }, + { "botpago.cl", true }, + { "botsa.com", true }, { "botschaften-an-das-volk-gottes.de", false }, { "botserver.de", true }, { "botsindiscord.me", true }, { "botstack.host", true }, { "botticelli.tk", true }, - { "bottineauneighborhood.org", true }, { "bottinquebec.com", true }, { "bottke.berlin", true }, { "bottle.li", true }, + { "bottlecapsbev.com", true }, + { "bottleking.com", true }, { "bottlerockshuttles.com", true }, + { "bottly.in", true }, { "bottom9clothing.com", true }, { "bottomfeedings.tk", true }, { "bou.cloud", true }, { "bou.ke", true }, { "bouah.net", false }, { "bouallaoui.tk", true }, + { "boubyranol-biere.com", true }, { "bouchard-mathieux.com", true }, { "boucherie-charcuterie.ca", true }, { "boucherie-lesnes.fr", true }, { "bouchonville-knifemaker.com", true }, { "bouckaert-usedcars.be", false }, + { "bouckaert.co", true }, { "boudah.pl", true }, { "bouffartigue.fr", true }, { "bougeer.gent", true }, @@ -21027,17 +24867,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bougerpourmasante.com", true }, { "bougharios.com", true }, { "boughariosbros.com", true }, - { "boughtbymany.com", false }, - { "boukoubengo.com", true }, - { "boulangerie-patisserie.ca", true }, { "bouldercounty.gov", true }, + { "bouldercountyassessor.gov", true }, { "bouldercountydronepilot.com", true }, + { "bouldercountyhhs.gov", true }, + { "bouldercountynavigatingdisaster.gov", true }, + { "bouldercountyrecovery.gov", true }, + { "bouldercountytreasurer.gov", true }, { "bouldercountyvotes.gov", true }, + { "boulderdowntown.com", true }, { "boulderlibrary.org", true }, + { "boulderodm.gov", true }, + { "bouldersheriff.gov", true }, { "boulderswap.com", true }, { "boulderwagonroad.org", true }, { "boulebar.duckdns.org", true }, { "boulevard-ruijschenbergh.nl", true }, + { "boulstory.ru", true }, { "boulzicourt.fr", true }, { "boumstudio.com", true }, { "bounce-a-roo.co.uk", true }, @@ -21074,10 +24920,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bouncetothebeat.tk", true }, { "bounceunlimited.co.uk", true }, { "bouncewithbovells.com", false }, - { "bouncewrightcastles.co.uk", true }, { "bouncincastles.co.uk", true }, { "bouncing4joy.co.uk", true }, - { "bouncingbuddiesleicester.co.uk", true }, { "bouncingbuzzybees.co.uk", true }, { "bouncinghigher.co.uk", true }, { "bouncingscotland.com", true }, @@ -21098,15 +24942,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bouncycastlehirelouth.co.uk", true }, { "bouncycastlehiremalvern.co.uk", true }, { "bouncycastlehireoldham.co.uk", true }, - { "bouncycastlehirestroud.co.uk", true }, { "bouncycastlehiresurrey.co.uk", true }, - { "bouncycastlehiretameside.co.uk", true }, { "bouncycastlehirewinchester.co.uk", true }, { "bouncycastleman.co.uk", true }, { "bouncycastleparade.com", true }, { "bouncycastlesgalway.com", true }, { "bouncycastleshire.co.uk", true }, - { "bouncycastleshireleeds.co.uk", true }, { "bouncycastlesin.co.uk", true }, { "bouncycastlesinderby.co.uk", true }, { "bouncycastlesisleofwight.co.uk", true }, @@ -21134,6 +24975,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bounty.software", true }, { "bountyfactory.io", true }, { "bountyhunter.tk", true }, + { "bountyhunteredu.org", true }, { "bountyhuntermetaldetector.tk", true }, { "bountyx.com", true }, { "bourasse.fr", true }, @@ -21142,13 +24984,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bourestonmedia.com", true }, { "bourgeoisdoor.com", true }, { "bourgeoisdoorco.com", true }, + { "bourhis.info", true }, + { "bourne-ma.gov", true }, { "bournefun.co.uk", true }, + { "bourrasque-info.org", true }, + { "bourrelier.be", true }, { "bourse-aux-jouets.org", false }, { "bourse-aux-vetements.org", false }, { "bourse-puericulture.org", false }, { "bourseauxservices.com", true }, + { "bourtalm.fr", true }, + { "boutique-pcland.fr", true }, + { "boutique.be", true }, { "boutiquedecanetas.com.br", true }, { "boutiquedelhogar.cl", true }, + { "boutiquedoartista.com.br", true }, { "boutiqueguenaelleverdin.com", true }, { "boutiqueinove.com.br", true }, { "boutoncoupdepoing.fr", true }, @@ -21156,15 +25006,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bouville.fr", true }, { "bouw.live", true }, { "bouwbedrijfdesmet.be", true }, - { "bouwbedrijfdevor.nl", true }, { "bouwbedrijfjstam.nl", true }, { "bouwbedrijfkorstanje.nl", true }, { "bouwhuisman.nl", true }, + { "bouwma.nl", true }, + { "bouwplaatscheckin.nl", true }, + { "bouwstenen.com", true }, { "bouzouada.com", true }, { "bouzouks.net", true }, { "bovenwebdesign.nl", true }, + { "bovileva.com.ua", true }, { "bovworkplacepensions.com", true }, - { "bowedwallcrackrepair.com", true }, + { "bowdens.me", true }, + { "bowdoinmaine.gov", true }, { "bowelcontroltherapy.com", true }, { "bowhill.me", true }, { "bowhunter-ahorn.de", true }, @@ -21176,17 +25030,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bowmar.gov", true }, { "bownhpd.gov", true }, { "bowntycdn.net", true }, + { "bowwowinsurance.com.au", true }, { "box.bz", true }, { "box2.cz", true }, { "boxbuttecountyne.gov", true }, + { "boxclaw.com", true }, + { "boxclub-marburg.de", true }, { "boxcritters.wiki", true }, { "boxcryptor.com", false }, { "boxdevigneron.fr", true }, - { "boxdropcc.com", true }, + { "boxdroplacrosse.com", true }, { "boxeomexicano.tk", true }, { "boxer-shorts.net", true }, { "boxerdogdiaries.com", true }, { "boxerdogsaspets.com", true }, + { "boxfordhistoricalsociety.com", true }, { "boxing-kangaroo.ga", true }, { "boxing-videos.com", true }, { "boxing247.com", true }, @@ -21196,19 +25054,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "boxingrankings.co", true }, { "boxingschedule.co", true }, { "boxintense.com", false }, - { "boxlitepackaging.com", false }, + { "boxiruem.ru", true }, + { "boxlegal.es", true }, { "boxmail.cn", true }, { "boxmania.tk", true }, { "boxofficebengal.tk", true }, - { "boxofninjas.ca", true }, + { "boxofficefunding.com", true }, { "boxoptions.com", true }, - { "boxpirates.to", true }, + { "boxpirates.to", false }, { "boxsite.ga", true }, { "boxspringbett-160x200.de", true }, + { "boxtreeclinic.com", true }, { "boxtub.com", true }, { "boxturtlesaspets.com", true }, { "boxview.com", true }, { "boyard.tk", true }, + { "boycewire.com", true }, { "boydcorp.com", true }, { "boydstree.com", true }, { "boydwi.gov", true }, @@ -21226,17 +25087,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "boysorebro.tk", true }, { "boywife.space", true }, { "bozdech.eu", true }, - { "bozdoz.com", true }, { "bozenadusseau.tk", true }, { "bozhok.tk", true }, { "bozit.com.au", true }, { "bp-systems.ovh", true }, - { "bp-wahl.at", true }, { "bpa.gov", true }, { "bpadvisors.eu", true }, { "bparlay.com", true }, - { "bpaste.net", true }, { "bpastudies.org", true }, + { "bpbdpadangsidimpuan.id", true }, + { "bpd.nl", true }, { "bpedia.org", true }, { "bphostels.com", true }, { "bpinvest.ch", true }, @@ -21255,17 +25115,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bqp.io", false }, { "bqr.ch", false }, { "bqtoolbox.com", true }, + { "br-1xbet.com", true }, + { "br-hq.net", true }, { "br-miyamoto.spdns.org", true }, { "br.search.yahoo.com", false }, + { "br.to", true }, { "br1334shop.com.br", true }, + { "br24-7.com", true }, { "br3in.nl", false }, { "br7.city", true }, { "br7.ru", true }, { "br8.pl", true }, { "bra-horapparat.se", true }, + { "bra360.com", true }, { "braathe.no", true }, - { "brabank.no", true }, - { "brabank.se", true }, { "brabantia.com", true }, { "braccialini.tk", true }, { "bracebridgechiro.com", true }, @@ -21273,12 +25136,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "braceletcuivre.com", true }, { "braces-supports.tk", true }, { "bracesbyberry.com", true }, - { "bracho.xyz", true }, { "brachotelborak.com", true }, { "bracken.jp", true }, { "bracket.land", true }, { "bracketofficial.com", true }, { "brackets-salad.com", true }, + { "brackettvilletx.gov", true }, { "bracknellvets.co.uk", true }, { "bractwogothica.ml", true }, { "brad.fi", true }, @@ -21289,16 +25152,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bradfordhottubhire.co.uk", true }, { "bradfordmascots.co.uk", true }, { "bradfordwoods.gov", true }, - { "bradkovach.com", true }, { "bradler.net", false }, { "bradturveyofficial.tk", true }, { "bradyosborne.com", true }, { "bradypatterson.com", true }, { "braemer-it-consulting.de", true }, - { "braeunlich-gmbh.com", true }, { "bragasoft.com.br", false }, { "bragaweb.com.br", true }, { "braggalabel.cf", true }, + { "brahammn.gov", true }, { "brahma.world", true }, { "brahmins.com", true }, { "braiampeguero.xyz", true }, @@ -21311,20 +25173,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brain.gov", true }, { "brainatwork.it", true }, { "brainball.fr", false }, + { "brainbashers.com", true }, { "brainboxai.com", true }, { "brainburger101.tk", true }, - { "braindiamond.com", true }, - { "braindiamonds.com", true }, + { "brainbus.com", true }, + { "braincandy.com", true }, + { "braincorebismarck.com", true }, + { "braineet.com", true }, { "brainefive.com", true }, { "brainfeed.nl", true }, + { "brainfirm.com", true }, + { "brainguru.co.in", true }, + { "brainguru.in", true }, { "brainhealth.gov", true }, { "brainhub.nl", true }, { "brainit.at", true }, { "brainjuice.tk", true }, { "brainmade.tk", true }, + { "brainmanager.io", true }, { "brainobeat.com", true }, { "brainotony.com", true }, { "brainoutlevel.com", true }, + { "brainporteindhoven.com", true }, + { "brainps.org", true }, { "brainrush.ga", true }, { "brainserve.ch", false }, { "brainserve.com", false }, @@ -21332,25 +25203,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brainshare.tk", true }, { "brainshit.fr", true }, { "brainsik.net", true }, - { "brainsoftict.nl", false }, + { "brainsoftict.nl", true }, { "brainspawn.tk", true }, + { "brainstache.com", true }, { "brainstew.tk", true }, - { "brainstorm.social", true }, { "brainstormproductions.tk", true }, { "braintensive.com", true }, { "braintonus.tk", true }, { "braintreevt.gov", true }, + { "brainup-clinic.com", true }, { "brainvation.de", true }, - { "brainwork.space", true }, - { "brajenovic.com", true }, + { "brainware-india.com", true }, + { "brakebills.org", true }, { "brakemanpro.com", true }, - { "brakketrecruit.com", true }, { "brakomecov.tk", true }, - { "brakpanplumber24-7.co.za", true }, { "brallog.tk", true }, { "bralnik.com", true }, { "bramberheights.com", true }, { "brambevers.tk", true }, + { "bramblerealestate.com", true }, + { "brambles.com", true }, + { "brambleski.com", true }, { "bramburek.net", true }, { "bramfri.dk", true }, { "bramhallsamusements.com", true }, @@ -21368,10 +25241,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bran.pw", true }, { "bran.soy", true }, { "bran.to", true }, + { "branaher.cz", true }, { "branch-bookkeeper.com", true }, { "branch.ga", true }, { "branchenbuch-potsdam.com", true }, { "branchrvparktexas.com", true }, + { "branchtobox.com", true }, { "branchtrack.com", true }, { "brand-design.studio", true }, { "brandabaski.tk", true }, @@ -21380,22 +25255,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brandathon.be", true }, { "brandathon.nl", true }, { "brandbags.gr", true }, + { "brandbastion.com", true }, { "brandbook.io", true }, { "brandcodestyle.com", false }, { "brandfactory.ml", true }, + { "brandfeatured.com", true }, { "brandfolder.com", true }, + { "brandfoto.com", true }, { "brandhost.tk", true }, { "brandhout-b-tree.be", true }, - { "brandingclic.com", true }, { "brandingclick.com", true }, { "brandingcoapps.com", true }, { "brandingforthepeople.com", true }, { "brandinspiration.fr", true }, + { "brandjapan.com", true }, { "brandketers.com", true }, + { "brandmixer.ru", true }, + { "brandmovers.co", true }, { "brandnucreations.com", true }, { "brando753.xyz", true }, { "brandon-manilow.tk", true }, - { "brandon-taylor.tech", true }, { "brandon.so", false }, { "brandonbonine.com", true }, { "brandoncricket.tk", true }, @@ -21411,18 +25290,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brandons.site", true }, { "brandontaylor-black.com", true }, { "brandonwalker.me", true }, - { "brandor.io", true }, - { "brandrocket.dk", true }, + { "brandosvault111.ca", true }, + { "brandpolgroup.com", true }, { "brands-clothings.tk", true }, { "brands-polo.cf", true }, { "brands-polo.gq", true }, { "brandsafe.io", true }, { "brandsclub.tk", true }, { "brandstead.com", true }, - { "brandstory.ae", true }, { "brandt.tech", true }, { "brandtechdesign.co.uk", true }, { "brandtrapselfie.nl", true }, + { "brandwatchmail.info", true }, { "brandweer-almelo.tk", true }, { "brandweer-sgravendeel.tk", true }, { "brandweerbarboek.nl", true }, @@ -21444,6 +25323,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "branemusic.com", true }, { "braniebananie.nl", true }, { "brank.as", true }, + { "brankor.net", true }, + { "brankor.rs", true }, + { "brankoradionica.com", true }, { "branobratoz.tk", true }, { "bransive.com.au", true }, { "bransonwestmo.gov", true }, @@ -21464,29 +25346,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brasilmatamata.ml", true }, { "brasilmedia.com", true }, { "brasilmobi.cf", true }, - { "brasilnatu.com.br", false }, { "brasiltopnews.tk", true }, { "brasilwear.biz", true }, { "brasilweb.tk", true }, { "braslet-bianshi.tk", true }, + { "braspetdf.com.br", true }, + { "brasrede.com.br", true }, { "brass.host", true }, { "brassbandwarmond.tk", true }, { "brasseursdubois.com", true }, + { "brasshow.com.br", true }, { "brasspipedreams.org", true }, { "bratan.ga", true }, + { "bratkartoffelking.de", true }, { "bratstvo.tk", true }, { "bratt.tk", true }, + { "bratteng.com", false }, { "bratteng.me", true }, { "bratteng.solutions", true }, + { "brattleboro.gov", true }, { "bratunaconline.tk", true }, { "bratvanov.com", true }, { "brau-ingenieur.de", true }, { "braudoktor.de", true }, { "brauer-augenoptik.de", true }, { "brauingenieur.de", true }, + { "braun-russia.ru", true }, { "braunbergerfreelance.com", true }, { "braunsteinpc.com", true }, { "braunwarth.info", false }, + { "brausch.co.nz", true }, + { "brauschtrucking.co.nz", true }, { "brausestube.de", true }, { "brave-foods.ch", false }, { "brave-foods.com", false }, @@ -21509,6 +25399,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bravodescuento.es", true }, { "bravogutschein.at", true }, { "bravogutschein.de", true }, + { "bravokorting.nl", true }, { "bravokupony.pl", true }, { "bravopromo.be", true }, { "bravopromo.fr", true }, @@ -21517,32 +25408,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bravurasolutions.com", true }, { "brawin.cf", true }, { "brawlstarsitalia.com", true }, - { "brawny.com", false }, + { "brawny.com", true }, { "braxtoncountywv.gov", true }, { "braxtonehle.com", true }, - { "braychappell.com", true }, { "brayden.gq", true }, { "braynblog.ml", true }, { "brazenfol.io", true }, { "brazilian-human-hair-extension.tk", true }, { "brazilian.dating", true }, { "brazilianbikinishop.com", true }, + { "braziliantop.com", true }, { "braziliaskincare.com", true }, { "brazillens.com", true }, - { "brazoriabar.org", true }, { "brazoriacountyclerktx.gov", true }, - { "brazzanova.de", true }, { "brazzers.com", true }, + { "brazzersnetwork.com", true }, + { "brazzersvod.com", true }, { "brb.city", true }, { "brba.nl", true }, { "brbcbd.com", true }, { "brbt.eu", true }, { "brbt.net", true }, { "brck.nl", true }, + { "brcshipsupply.com", true }, { "brd.ro", true }, + { "breachdata.io", true }, { "breachlock.com", true }, + { "breachmedia.ca", false }, { "bread.fish", true }, { "breadandlife.org", false }, + { "breadheads.net", true }, { "breadmash.tk", true }, { "breadpirates.chat", true }, { "breakberlin.tk", true }, @@ -21556,12 +25451,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "breakingnewskenya.tk", true }, { "breakingtech.fr", true }, { "breakingthesilence.org.il", true }, - { "breakingvap.fr", true }, { "breakmaps.net", true }, { "breakofdawn.tk", true }, - { "breakout.careers", true }, { "breakpoint.at", true }, { "breaksome.tech", true }, + { "breakthroughenergy.org", true }, { "breakwall.ml", true }, { "breaky.de", true }, { "breard.tf", true }, @@ -21571,9 +25465,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "breastenlargement.gq", true }, { "breathe-easy.tk", true }, { "breathedreamgo.com", false }, - { "breathfinder.io", true }, + { "breathing-underwater.com", true }, { "breathingblanket.com", true }, { "breathingsound.ml", true }, + { "breathingspace.scot", true }, { "breathlesssheranda.tk", true }, { "brechadigital.tk", true }, { "brecht.ch", true }, @@ -21588,47 +25483,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bredabeds.com", true }, { "bredahooligans.tk", true }, { "bredband.fi", true }, + { "breder.org", true }, { "breechdepot.com", true }, + { "breederpodcast.com", true }, { "breederworld.dog", true }, { "breen.com.br", true }, - { "breeyn.com", true }, { "breezyapp.hu", true }, + { "breezypointmn.gov", true }, { "breffa.pl", true }, { "brefy.com", true }, { "brege.org", true }, + { "bregmanfance.com", true }, { "bregnedal.dk", true }, { "bregnedalsystems.dk", true }, + { "bregroup.com", true }, { "brehoni.cz", true }, { "breinify.ai", true }, { "breinify.com", true }, { "breitband.bz.it", true }, { "breizh.pm", true }, + { "breizhetho.com", true }, + { "breizhpuffy.org", true }, { "breket.ml", true }, { "brelahotelberulia.com", true }, { "brelin.tk", true }, { "brellich.eu", true }, + { "breloque.com", true }, { "bremen-restaurants.de", true }, { "bremensaki.com", true }, { "bremerfriedensforum.de", true }, + { "breml.com", true }, + { "bremsscheiben.com", true }, { "brenbarnes.com", true }, { "brenbarnes.com.au", false }, + { "brenda-enzymes.org", true }, { "brendabecker.com", true }, + { "brendanbatliner.com", true }, { "brendancroker.tk", true }, { "brendanfarmer.ga", true }, { "brendanreev.es", true }, { "brendanscherer.com", true }, + { "brendasartstudio.com", true }, { "brentalbright.tk", true }, { "brentfieldschools.cf", true }, { "brentnewbury.com", true }, - { "breonart.com", true }, + { "brentonico.com", true }, + { "brentsoslibraries.org.uk", true }, { "bresciatoday.it", true }, { "breshka.be", true }, + { "bressem.com", false }, { "brest-bel.tk", true }, { "brest-biz-belarus.tk", true }, { "brest-brest.tk", true }, { "brest-master.tk", true }, { "brest-news.tk", true }, { "brest-region.tk", true }, + { "brest.fr", false }, { "brest24.tk", true }, { "brestnews.tk", true }, { "brestradio.tk", true }, @@ -21638,10 +25548,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "breteuilcommerceartisanat.com", true }, { "breton.pm", true }, { "bretonhouse.ca", true }, + { "bretonstripe.com", true }, { "brett.ml", true }, { "brettabel.com", true }, { "brettcornwall.com", true }, - { "brettelliff.com", true }, { "bretti.net", true }, { "brettlawyer.com", true }, { "brettlfohra.tk", true }, @@ -21649,8 +25559,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brettw.xyz", true }, { "bretzner.fr", false }, { "brevboxar.se", true }, + { "brevent.sh", true }, { "brew.fi", true }, { "brew.sh", true }, + { "brewcentralny.com", true }, { "brewin.ml", true }, { "brewit.online", true }, { "brewsouth.com", true }, @@ -21662,12 +25574,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "breyerslakesideresort.com", true }, { "breyersresort.com", true }, { "brezani.tk", true }, - { "breznet.com", true }, + { "breznet.com", false }, { "brf-tradgarden.se", true }, { "brferramentas.com.br", true }, { "brfvh24.se", true }, { "brg.to", true }, { "brgins.com", true }, + { "brgsmartcity.com", true }, { "brguk.com", true }, { "brhanhaki.org", true }, { "bri.fyi", true }, @@ -21676,25 +25589,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brian.gq", false }, { "brianalaway.com", true }, { "brianalawayconsulting.com", true }, - { "briandorey.com", false }, { "briandwells.com", false }, { "brianfanzo.com", true }, { "brianfoshee.com", true }, { "briangarcia.ga", true }, - { "briangosnell.com", true }, { "brianjohnson.co.za", true }, { "brianjosephdavis.tk", true }, { "briankanode.com", true }, { "brianlachapelle.tk", true }, { "brianlanders.us", true }, + { "brianleejackson.com", true }, { "brianleemarketing.com", true }, + { "brianm.com", true }, { "brianmwaters.net", true }, { "brianna.tk", true }, { "brianoost.com", true }, { "brianpagan.net", true }, + { "brianregan.com", true }, { "brianroadifer.com", true }, { "briansemrau.com", true }, { "briansmith.org", true }, + { "briantafoya.com", true }, { "brianum.de", true }, { "brianum.net", true }, { "brianvalente.tk", true }, @@ -21702,13 +25617,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brianwesaala.com", false }, { "brianwilson.tk", true }, { "briarcliffmanor.gov", true }, + { "briarpatchfrenchiesandpugs.com", true }, { "briarproject.org", true }, { "bribriescolawfirm.com", true }, { "brickadia.com", true }, { "brickfilmfestival.tk", true }, { "brickftp.com", true }, { "brickland.tk", true }, - { "bricklet.com.au", true }, { "bricks-clicks.com", true }, { "bricks4kidzelearn.com", true }, { "bricksandmotor.co.uk", true }, @@ -21718,57 +25633,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brickwerks.io", true }, { "bricmon.tk", true }, { "bricolajeux.ch", false }, - { "bricolea.fr", true }, { "bricomag-media.com", true }, { "bricomium.com", true }, { "brid.gy", false }, { "bridal.tk", true }, { "bridalfabrics.ru", true }, { "bridalgallerysalem.com", true }, + { "bridalreflections.com", true }, { "bridalshoes.com", true }, { "bridalweddingshow.ga", true }, { "bride.vn", true }, { "bridebook.com", true }, { "bridesbouquet.ml", true }, { "bridestarco.com", true }, - { "bridg-it.fr", true }, { "bridge-online.cloud", true }, { "bridge-to-knowledge.nl", true }, { "bridge.nl", true }, + { "bridgecon.com.au", true }, { "bridgedigest.cf", true }, { "bridgedigest.tk", true }, { "bridgedigestest.ga", true }, { "bridgedirectoutreach.com", true }, { "bridgefield.de", true }, { "bridgeforcefinancial.com", true }, - { "bridgehomeloans.com", true }, + { "bridgeitsolutions.com.au", true }, { "bridgemanualest.ga", true }, { "bridgement.com", true }, { "bridgeout.com", true }, { "bridgepayday.ph", true }, { "bridgeportlaboratory.tk", true }, + { "bridgeportne.gov", true }, + { "bridgeportwv.gov", true }, { "bridgercanyonfiremt.gov", true }, { "bridges.ml", true }, - { "bridges2understanding.com", true }, + { "bridgesem.io", true }, { "bridgesinbelize.org", true }, { "bridgethailand28chidlom.com", true }, + { "bridgetmcauliffe.ie", true }, + { "bridgetonmo.gov", true }, + { "bridgetosupport.org.uk", true }, { "bridgetownrecords.tk", true }, { "bridgetroll.org", true }, { "bridgewaterma.gov", true }, { "bridholm.se", true }, - { "bridltaceng.com", true }, - { "brie.tech", true }, { "briefassistant.com", true }, { "briefbiz-news.tk", true }, + { "briefly.ru", true }, { "briefs.in.th", true }, { "briefvorlagen-papierformat.de", true }, { "briellenj.gov", true }, { "briffoud.fr", true }, { "brigadasazules.tk", true }, { "brigady.tk", true }, - { "brigantinebeachguide.com", true }, + { "briggsandlittle.com", true }, { "briggsleroux.com", true }, { "brighouse-leisure.co.uk", true }, + { "bright-s.net", true }, + { "brightback.com", true }, { "brightbiz-news.tk", true }, { "brightblue.cf", true }, { "brightbock.co.uk", true }, @@ -21781,14 +25702,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brightendofleasecleaning.com.au", false }, { "brighterimagelab.com", true }, { "brightfuturemadebyme.com", true }, + { "brightgk.com", true }, { "brightideaspromotional.co.uk", true }, - { "brightlingseamusicfest.co.uk", true }, + { "brightmachines.com", true }, + { "brightmind.wiki", true }, + { "brightmls.com", true }, + { "brightmovers.com", true }, { "brightonbank.com", true }, { "brightonbouncycastles.net", true }, - { "brightonchilli.org.uk", false }, + { "brightonchilli.org.uk", true }, { "brightonfc.tk", true }, { "brightongrowlights.ga", true }, - { "brightonhoney.com", true }, { "brightonncmachine.com", true }, { "brightonvt.gov", true }, { "brightonvt.org", true }, @@ -21796,21 +25720,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brightside.com", true }, { "brightsparks.com.sg", true }, { "brightsport-news.tk", true }, + { "brighttax.com", false }, + { "brighttomorrowproductions.com", true }, + { "brightvalley.com.au", true }, { "brightview.net.cn", true }, { "brightwakeintranet.co.uk", true }, { "brightzonecleaning.com.au", true }, { "brightzoneofficecleaning.com.au", true }, { "brigidaarie.com", true }, { "brigittaseasons.com", true }, - { "brigittaspromise.org", true }, { "brigittebutt.tk", true }, { "brigittefontaine.tk", true }, { "brilalux.pe", true }, + { "brileytownshipmi.gov", true }, { "briliant.tk", true }, + { "brilliancesecuritymagazine.com", true }, { "brilliant-minds.tk", true }, + { "brilliant.plumbing", true }, { "brilliantbouncyfun.co.uk", true }, { "brilliantproductions.co.nz", true }, - { "brilliantvintage.co.uk", true }, { "brillie.tk", true }, { "brillio.com", true }, { "brillionwi.gov", true }, @@ -21819,13 +25747,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brimspark.systems", true }, { "brindabantheatre.tk", true }, { "brindesgrafica.com.br", true }, - { "brindespegassus.com.br", true }, { "brindisireport.it", true }, { "brindocorp.tk", true }, { "bring-heaven.com", true }, { "bringfido.com", true }, { "bringform.ml", true }, - { "brinkbem.com", true }, + { "bringonbusiness.com", true }, + { "brinker.com", true }, { "brinkhu.is", true }, { "brinksurl.com", true }, { "brinokidzonline.tk", true }, @@ -21841,13 +25769,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brisbine.cloud", true }, { "brisceremony.com", true }, { "brisignshop.com.au", true }, - { "briskbase.com", true }, + { "brisp.nl", true }, + { "brisq.design", true }, { "bristebein.com", true }, + { "bristol.se", true }, { "bristolandwestonsuperbounce.com", true }, + { "bristolctwatersewer.gov", true }, + { "bristolmoneyman.com", true }, + { "bristowpoliceok.gov", true }, { "brit-thoracic.org.uk", true }, { "britania.tk", true }, + { "britanicasalud.com.ar", true }, + { "britannia-jewellery.co.uk", true }, + { "britannia.no", true }, { "britanniapandi.com", true }, + { "britanniawellness.com", true }, { "britelocate.com", true }, + { "british-assessment.co.uk", true }, { "britishbee.org.uk", true }, { "britishbee.uk", true }, { "britishbeef.com", true }, @@ -21877,13 +25815,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "britneymanias.tk", true }, { "britneyuniverse.com", true }, { "britofootball.com", true }, + { "britsoc.co.uk", true }, { "brittainconsulting.ca", true }, + { "brittany.com.ph", true }, { "brittanyferriesnewsroom.com", true }, { "brittas-world.tk", true }, { "britton-photography.com", true }, + { "briween.com", true }, { "brix-central.tk", true }, { "brixxonline.nl", true }, { "brizawen.com", true }, + { "brizzo.net", true }, { "brk-t.com", true }, { "brk-t.org", true }, { "brk.dk", true }, @@ -21892,10 +25834,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brkt.church", true }, { "brktkiliseleri.com", true }, { "brktkiliseleri.org", true }, + { "brlcontracting.com.au", true }, + { "brloh.sk", true }, { "brmascots.com", true }, { "brmnn.de", true }, { "brmsalescommunity.com", true }, { "brn.by", true }, + { "brn.is", false }, { "brnogame.com", true }, { "brnogame.cz", true }, { "brnogame.online", true }, @@ -21908,20 +25853,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "broadax.ml", true }, { "broadbandchoices.co.uk", true }, { "broadbandexposed.co.uk", true }, + { "broadbandmap.gov", true }, { "broadbiz-news.tk", true }, { "broadcastlistingers.ga", true }, { "broadcastlistingest.ga", true }, { "broadcastrealtimeest.ga", true }, { "broadcasttowerers.ga", true }, - { "broadinstitute.org", true }, + { "broadfoundation.org", true }, { "broadjournalest.ga", true }, { "broadleft.org", true }, { "broadsheet.com.au", true }, + { "broadstreetalerts.com", true }, { "broadwayfamilydentalpc.com", true }, + { "broadwaytravel.com", true }, { "broadwayva.gov", true }, { "broadwayvets.co.uk", true }, - { "broadyexpress.com.au", true }, { "broansunited.tk", true }, + { "brobank.ru", true }, { "broca.dk", true }, { "broca.io", false }, { "brock.guide", true }, @@ -21929,40 +25877,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brockenhurstonline.com", true }, { "brockwayministorage.com", true }, { "brockwaytwpmn.gov", true }, + { "brocos.io", true }, + { "brodahose.com.au", false }, { "brodowski.cc", true }, { "brody.digital", true }, { "brody.ninja", true }, { "broe.ie", true }, + { "broedersvanliefde.be", true }, { "broemp.de", true }, { "broerbv.nl", false }, { "broersma.com", true }, { "broerweb.nl", true }, { "broeselei.at", false }, { "brogramo.com", true }, + { "broilerku.com", true }, { "broilertrade.com", true }, { "brojagraphics.de", true }, { "broke.network", true }, { "brokeinkorea.tk", true }, { "brokenbiz-news.tk", true }, + { "brokenbowokpd.gov", true }, + { "brokenbuild.net", true }, { "brokencityllc.ga", true }, + { "brokendollsmuseum.com", true }, { "brokenhands.io", true }, { "brokenminds.tk", true }, { "brokenneckgang.com", true }, + { "brokenrevolution.com", true }, + { "brokenships.com", true }, { "brokensword.tk", true }, { "brokentoaster.tk", true }, + { "broker.vn", true }, + { "broker4u.com", true }, { "brokerdecredite.ro", true }, { "brokerlink.ca", true }, - { "brokernet.ie", false }, + { "brokernews.com.au", true }, { "brokernotes.co", true }, { "brokerstalk.com", true }, { "brokeryouers.ga", true }, { "brokeryouest.ga", true }, + { "brokfolio.com", true }, { "brokgency.com", true }, { "brollopsfotografkalmar.com", true }, { "brols.eu", true }, { "bromfietsman.tk", true }, { "bromideas.ga", true }, - { "bromo.cf", true }, + { "bromo.com", true }, + { "bromonetwork.com", true }, { "brompton-cocktail.com", true }, { "bronco-atodogalope.tk", true }, { "bronevichok.ru", true }, @@ -21973,10 +25934,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "broochwithme.com", true }, { "broodbesteld.nl", true }, { "broodingblogger.com", true }, - { "brookeblogt.be", true }, - { "brookes.xyz", true }, + { "brookfordnc.gov", true }, { "brookframework.org", true }, - { "brooklynabortionclinic.nyc", true }, + { "brooklakeevents.com", true }, + { "brooklinenh.gov", true }, + { "brooklyn-drain-queens-sewer.com", true }, { "brooklynboyblues.cf", true }, { "brooklynboyblues.ga", true }, { "brooklynboyblues.ml", true }, @@ -21985,20 +25947,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brooklyndecker.tk", true }, { "brooklynentdoc.com", true }, { "brooklynrealestateblog.com", true }, + { "brooklynsigns.com", true }, { "brooklyntheborough.com", true }, { "brooklyntownwashburnwi.gov", true }, { "brooklynveinandvascular.com", true }, { "brookscountyga.gov", true }, + { "brookshirebrothers.com", true }, { "brooksideas.ga", true }, + { "brookskolb.com", true }, + { "brookstonelc.com", true }, { "brookvillepoliceny.gov", true }, + { "brookz.nl", true }, { "broomcastle.com", true }, { "broomcastle.eu", true }, { "broomcastle.net", true }, { "broomcastle.org", true }, + { "broomcastle.social", true }, + { "broomorchard.com", true }, { "brosay-legko.ml", true }, { "brossman.it", true }, { "brossmanit.com", true }, - { "brothers.gold", true }, + { "brotaufstriche.com", true }, + { "brother.com.hk", true }, { "brothersinbeetles.tk", true }, { "brottsfiltret.tk", true }, { "brotwurz.de", true }, @@ -22006,27 +25976,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brouskat.be", true }, { "brouwer-greonterp.nl", true }, { "brouwerijdeblauweijsbeer.nl", true }, - { "brouzuf.tk", false }, - { "brovary-eda.kiev.ua", true }, + { "brovary-eda.kiev.ua", false }, { "brovelton.com", false }, { "browardvotes.gov", true }, { "browfai.casa", true }, { "brown-bros.ca", true }, + { "brownacres.nz", true }, { "brownandjoseph.com", true }, { "brownavto-news.tk", true }, { "browncoil.gov", true }, + { "browncountyne.gov", true }, + { "browncountytx.gov", true }, + { "browndeerwi.gov", true }, { "brownforces.desi", true }, { "brownforces.org", true }, { "brownie.plus", true }, - { "brownihc.com", true }, + { "brownpipe.app.br", true }, { "brownrice-life.com", true }, - { "brownsprinkler.com", true }, { "brownstownmi.gov", true }, { "brownsville360.org", true }, { "brownsvillewi.gov", true }, { "browntiger.tk", true }, { "browntowncountryclub.com", true }, - { "brownwolfstudio.com", true }, + { "brownwolfstudio.com", false }, { "brownwoodnews.cf", true }, { "browsbybecca.ca", true }, { "browse-china.com", true }, @@ -22035,18 +26007,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "browsemycity.com", true }, { "browser.style", true }, { "browserleaks.com", true }, + { "brpmanuals.com", true }, + { "brq.com", true }, { "brr.fyi", true }, { "brrr.fr", true }, { "brskt.be", true }, + { "brsociety.club", true }, { "brsvcs.in", true }, { "brtve.tk", true }, { "bru6.de", true }, - { "brubank.com", true }, + { "brubaker.ac", true }, + { "brubaker.cc", true }, + { "brubakerairconditioningrepair.com", true }, { "brubankv1-staging.azurewebsites.net", true }, { "bruce-springsteen.tk", true }, { "brucebenes.com", true }, - { "brucekovner.com", true }, { "bruceleeitems.com", true }, + { "brucemines.ca", true }, { "bruckner.li", true }, { "brudevelopments.ca", true }, { "brudkista.nu", true }, @@ -22054,13 +26031,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brudkistan.nu", true }, { "brudkistan.se", true }, { "bruechner.net", true }, + { "brueggers.com", true }, { "brueggi.tk", true }, { "brueser-gmbh.de", true }, { "brugerklub.info", true }, + { "brugia.com", true }, { "brugpensioen.tk", true }, + { "bruhcontent.ru", true }, { "bruidstaarten.tk", true }, - { "bruisedsky.com", true }, + { "bruitparif.fr", true }, { "brujoincaperuano.com", true }, + { "bruk2fa.no", true }, + { "brukalai.lt", true }, { "brulewi.gov", true }, { "brun-despagne.com", true }, { "brun.rocks", true }, @@ -22072,6 +26054,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brunella.tk", true }, { "brunetderochebrune.com", false }, { "brunettipesco.com", true }, + { "brunhild.com", true }, { "brunhilde.ml", true }, { "brunner.ninja", true }, { "bruno-hoenel.de", false }, @@ -22081,12 +26064,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brunobeauvoir.com", true }, { "brunocesarlima.com.br", true }, { "brunodomingos.com", true }, + { "brunohenc.from.hr", true }, { "brunolt.nl", true }, + { "brunoperetti.com.br", true }, { "brunoramos.com", false }, { "brunoreno.be", true }, + { "brunosampaioblog.com", true }, { "brunroom.tk", true }, + { "brunswick.com", false }, + { "brunswickcove.com", true }, + { "brunswickncsheriff.gov", true }, { "brush.ninja", true }, { "brushcreekyachts.com", true }, + { "brushscene.de", true }, + { "brushyourideas.com", true }, { "brusselsbe.tk", true }, { "brusselsexpolive.ga", true }, { "brusselsexpoloft.ga", true }, @@ -22098,41 +26089,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "brusselspackagesers.ga", true }, { "brusselspackagesest.ga", true }, { "brusselswestapartment.ga", true }, + { "brust-zentrum.ch", true }, { "brutal.systems", true }, { "brutalica.tk", true }, { "brutality.cf", true }, { "brutdecom.fr", true }, { "brutecloud.com", true }, { "brutosanetos.com", true }, + { "brutosshopping.com", true }, { "brutus2.ga", false }, { "bruun.co", true }, { "bruxserv.net", true }, + { "bruyerre.eu", true }, { "brw-shop.by", true }, { "brweb.tk", true }, { "brwebsolutions.tk", true }, + { "brwn.loan", true }, { "brws.to", true }, { "bryanarmijomd.com", true }, { "bryancastillo.site", true }, { "bryancountyga.gov", true }, { "bryandesrosiers.com", true }, + { "bryandunnewald.com", true }, { "bryanfalchuk.com", true }, { "bryankaplan.com", true }, { "bryanley.com", true }, { "bryanquigley.com", true }, { "bryanski.tk", true }, { "bryantluk.com", true }, + { "bryantx.gov", true }, + { "bryceml.us", true }, { "bryggebladet.dk", true }, { "bryte-rp.tk", true }, + { "brzc.st", true }, { "brztec.com", true }, + { "bs-facilityservice.ch", false }, { "bs-network.net", true }, { "bs-security.com", true }, + { "bs.gl", true }, { "bs.sb", true }, { "bs.to", true }, { "bs2k.me", true }, + { "bs7671.tools", true }, { "bsa-dom.ru", true }, { "bsa157.org", true }, { "bsaab.se", true }, { "bsaft.ml", true }, + { "bsale.com.au", true }, { "bsalyzer.com", true }, { "bsapack564.org", true }, { "bsatroop1003.com", true }, @@ -22146,20 +26149,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bscyb.ch", true }, { "bsd-box.net", true }, { "bsd-sec.com", true }, + { "bsd-unix.org", true }, { "bsd.com.ro", true }, { "bsd.gay", true }, - { "bsdes.net", true }, - { "bsdfreak.dk", true }, + { "bsdbox.de", true }, + { "bsdex.de", true }, + { "bsdfreak.dk", false }, { "bsdguru.net", true }, + { "bsdly.net", true }, { "bsdracing.ca", true }, { "bsdug.org", true }, { "bsdunix.xyz", true }, + { "bsee.gov", true }, { "bserved.de", false }, { "bsf-knowledgecity.com", true }, { "bsg.ro", true }, { "bsgamanet.ro", true }, { "bsgcredit.ro", true }, - { "bsharptech.com.au", true }, + { "bsid-clan.com", true }, { "bsidesf.com", true }, { "bsidesf.org", true }, { "bsidessf.com", true }, @@ -22167,19 +26174,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bsktweetup.info", true }, { "bslim-e-boutique.com", true }, { "bslinguistics.co.uk", true }, + { "bslnow.co.uk", true }, + { "bslnowsigns.co.uk", true }, { "bsmsl.com", true }, + { "bsn.cloud", true }, + { "bsnedu.org", true }, { "bsociabl.com", true }, - { "bsolution.edu.vn", true }, { "bsp-southpool.com", true }, { "bspecialfx.nl", true }, { "bsq1492.com", true }, - { "bsquared.org", true }, { "bsrueti.ch", true }, + { "bss-solutions.net", true }, { "bss-systems.net", true }, { "bss.com.ph", true }, + { "bss.net.ph", true }, { "bss.solutions", true }, { "bss.systems", true }, { "bss01.de", true }, + { "bsskorcz.pl", true }, { "bssolvfagen-pre-storeswa-wap.azurewebsites.net", true }, { "bsstainless.com", true }, { "bst-brandschutz.at", true }, @@ -22189,13 +26201,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bsurfcr.com", true }, { "bsuru.xyz", true }, { "bsvfincorp.com", true }, - { "bsvmaterborn-1924.de", true }, { "bsw-solution.de", true }, { "bswears.com", true }, { "bsystem.net", false }, { "bszoft.hu", true }, { "bt-kc.de", true }, - { "bt121.com", true }, + { "bt121.com", false }, { "bt123.xyz", true }, { "bt3655.com", false }, { "bt3657.com", false }, @@ -22210,13 +26221,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "btcanalyse.com", true }, { "btcarg.com.ar", true }, { "btcarmory.com", true }, - { "btcbolsa.com", true }, { "btclients.tk", true }, - { "btcontract.com", false }, { "btcp.space", true }, { "btcpop.co", true }, { "btcrit.com", true }, + { "btcwiki.nl", true }, { "btcwip.com", true }, + { "btcx.com", true }, + { "btddd.com", true }, + { "btdirect.uk", true }, { "btdproductions.tk", true }, { "btec.ae", true }, { "bth.wtf", true }, @@ -22229,19 +26242,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "btln.de", true }, { "btmic.ro", true }, { "btnissanparts.com", true }, + { "btool.eu.org", true }, { "btopc.jp", true }, { "btorrent.xyz", true }, + { "btrade.io", true }, + { "btrans.by", true }, { "btraviswright.com", true }, { "btraviswrightmps.com", true }, { "btraviswrightmps.org", true }, { "btrb.ml", true }, { "btrfs.no", true }, { "btsline.co.id", true }, - { "btslr.co", true }, { "btsoft.eu", true }, { "btsou.org", true }, { "btsource.tk", true }, { "btsous.org", true }, + { "btsresearch.com", true }, { "btssiou.xyz", true }, { "btsybt.com", false }, { "btt-39.com", true }, @@ -22251,48 +26267,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "btta16.com", true }, { "btth.live", true }, { "btth.pl", true }, - { "btth.tv", true }, - { "btth.xyz", true }, { "bttorj45.com", true }, + { "bttrade.com", true }, { "bturboo.com", true }, { "btvw.de", true }, + { "btwj.com", true }, { "btwsa.tk", true }, + { "btxchange.io", true }, + { "bu-e.com", true }, + { "buai.cf", true }, + { "buai.gq", true }, + { "buai.ml", true }, + { "buai.tk", true }, { "buayacorp.com", true }, { "bub.cat", true }, + { "bubalova.com", true }, { "bubba.cc", true }, { "bubbelwafel.nl", true }, + { "bubblebuttpics.com", true }, { "bubbleclips.com", true }, { "bubbleclips.net", true }, { "bubbleclips.org", true }, { "bubbleclipsnetwork.com", true }, { "bubblegumblog.com", true }, { "bubblelist.tk", true }, + { "bubblemedia.com", true }, { "bubblesco.tk", true }, { "bubblespetspa.com", true }, { "bubblin.io", true }, - { "bubblinghottubs.co.uk", true }, { "bubhub.io", true }, { "bubnovsky.org", true }, + { "bubok.com.ar", true }, + { "bubok.es", true }, { "bubsngrubs.com.au", true }, + { "bubty.com", true }, { "bubu1.eu", true }, { "bubulazi.com", false }, - { "bubulazy.com", true }, + { "bubulazy.com", false }, + { "bucapositano.it", true }, { "bucek.cz", true }, { "buch-angucken.de", true }, { "buchanancountyvirginia.gov", true }, { "buchananga.gov", true }, + { "buchanantwpmi.gov", true }, { "buchangroupinc.com", true }, { "buchdata.it", true }, + { "buchelstore.com.br", true }, { "buchhaltung-muehelos.de", true }, { "buchhammer.tk", true }, { "buchholz-coaching.de", true }, + { "buchkatalog.de", true }, { "buchwegweiser.com", true }, { "buck-hydro.de", true }, { "buck.com", true }, { "bucket.tk", true }, { "buckethead.tk", true }, + { "buckeyemainstreet.org", true }, { "buckfast.tk", true }, { "buckglobal.com", true }, + { "bucklinmo.gov", true }, + { "buckmans.com", true }, { "bucknerrealtors.com", true }, { "buckscounty.gov", true }, { "bucksfund.com", true }, @@ -22300,13 +26334,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buckypaper.com", true }, { "buda.com", true }, { "budapestairport.tk", true }, - { "budapestairporttaxi.net", false }, - { "budapestairporttocity.com", false }, - { "budapestairporttransfer.biz", false }, - { "budapestairporttransfer.org", false }, { "budapestgraphics.hu", true }, { "budapestjazzclub.hu", true }, - { "budapesttaxi.co.uk", false }, { "budapesttaxi.de", false }, { "budapesttaxi.fr", false }, { "budapesttaxi.nl", false }, @@ -22321,45 +26350,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buddiescomputers.com.au", true }, { "buddingoptimist.com", true }, { "buddlycrafts.com", true }, + { "buddobot.com", true }, { "buddy-acceptance-authentication-frontend.azurewebsites.net", true }, { "buddy-acceptance-backoffice-frontend.azurewebsites.net", true }, { "buddy-acceptance-web-frontend.azurewebsites.net", true }, { "buddy-development-backoffice-webapp.azurewebsites.net", true }, { "buddy-development-rabodirectconnect-api.azurewebsites.net", true }, + { "buddy-locator.com", true }, + { "buddy.net", true }, + { "buddyfly.top", true }, { "buddyme.me", true }, - { "buddypayment.nl", true }, - { "buddytop.com", true }, - { "buddyworks.net", true }, { "budeanu.com", true }, { "buderus-family.be", true }, - { "budgerigarbirds.com", true }, { "budget-cuts.tk", true }, + { "budget.gouv.fr", true }, { "budget.gov", true }, - { "budget.gov.au", true }, - { "budgetboats.net", true }, + { "budget.ie", true }, + { "budget.ovh", true }, { "budgetimize.com", true }, { "budgetlob.gov", true }, { "budgetlovers.nl", true }, { "budgetrf.tk", true }, { "budgetscan.nl", true }, - { "budgetwebsites.com.au", true }, - { "budidayatani.com", true }, { "budilnik.ml", true }, { "budofjoy.com", true }, { "budolangnau.ch", true }, { "budolfs.de", true }, + { "budpolimer.com", false }, + { "budpop.com", true }, + { "buehler.rocks", true }, { "bueltge.de", true }, { "buena.me", true }, + { "buenavistawinery.com", true }, + { "buenosairesconnect.com", true }, { "buenosproductos.net", true }, + { "buentaller.com", true }, { "bueny.com", true }, { "bueny.net", true }, { "buergerwehr-ettlingen.de", true }, { "buerliag.ch", true }, { "buero13-design.de", true }, - { "bueromoebel-experte.de", true }, { "buesiforquo.cf", true }, { "buettgens.net", true }, + { "buetzer.ch", true }, { "bufete.tk", true }, + { "bufeteesquire.com", true }, { "buff-buff.tk", true }, { "buff360.xyz", true }, { "buffalo-ny-gay-chat.com", true }, @@ -22370,11 +26405,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buffalocountywi.gov", true }, { "buffalodrycleanerers.ga", true }, { "buffalodrycleanerest.ga", true }, + { "buffalogaptx.gov", true }, { "buffalohomerepairs.com", true }, { "buffalojewishfederation.org", true }, + { "buffalonews.com", true }, { "buffaloturf.com.au", false }, - { "buffalowdown.com", true }, { "buffetbouc.com", true }, + { "buffl.co", true }, { "buffup.media", true }, { "buffus.cz", true }, { "bufla.net", true }, @@ -22384,15 +26421,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bug321.com", true }, { "bugalert.org", true }, { "bugbounty.ch", true }, + { "bugbountytip.tech", true }, { "bugcrowd.com", true }, { "bugfender.com", true }, { "bugfuzz.com", true }, { "buggiano.com", true }, { "bugginslab.co.uk", true }, - { "buggshop.com", true }, { "buggy777.me", true }, { "buggymaven.com", true }, { "buggywonderland.tk", true }, + { "bugprove.com", true }, { "bugraseyhan.tk", true }, { "bugrayildiz.av.tr", true }, { "bugreader.com", true }, @@ -22400,28 +26438,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bugsmashed.com", true }, { "bugwie.com", true }, { "bugzilla.mozilla.org", true }, - { "buhayguro.com", false }, + { "buharkeyf1.com", true }, { "buhayprincipal.com", true }, - { "buhaystudent.com", true }, - { "buhonline.ru", true }, { "buhsantoandre.vip", true }, { "buhunov.tk", true }, { "buick1958.tk", true }, { "build-up.tk", true }, { "build.chromium.org", true }, { "build.gov", true }, - { "buildappleculvercrossings.com", true }, + { "build.stream", true }, { "buildbackbetter.gov", true }, { "buildbytes.com", true }, { "buildconcierge.ga", true }, + { "buildcor.com.au", true }, + { "builddirect.com", true }, + { "buildersdiscount.net", true }, { "buildersofthesilentcities.tk", true }, + { "buildfood.com", true }, + { "buildgp.com", true }, { "buildherers.ga", true }, { "buildherest.ga", true }, - { "buildhoscaletraingi.com", true }, { "building-cost-estimators.com", true }, { "building-materials.tk", true }, { "buildingbitcoin.org", true }, { "buildingchemistry.tk", true }, + { "buildingcleaningchicago.com", true }, { "buildingcostestimators.co.uk", true }, { "buildingdesign.tk", true }, { "buildinginspectionmandurah.ga", true }, @@ -22429,23 +26470,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buildingpassport.com", true }, { "buildingpoint.pt", true }, { "buildingpointne.com", true }, + { "buildingprojectsswanseama.gov", true }, + { "buildingqueries.com", true }, + { "buildingresiliency.org", true }, { "buildit.se", true }, { "builditsolutions.net", false }, { "buildkite.com", true }, - { "buildlbi.com", true }, { "buildmate.ml", true }, { "buildmorebuslanes.com", true }, { "buildnews.tk", true }, { "buildplease.com", true }, - { "buildr.gr", true }, { "builds.gg", true }, - { "buildthewall2022.com", true }, + { "buildstaging.com", true }, + { "buildwealth.uk", true }, { "buildworkout.com", true }, { "buileo.com", true }, { "builterra2.azurewebsites.net", true }, + { "builtin.com", true }, + { "builtinaustin.com", true }, + { "builtinboston.com", true }, + { "builtinchicago.org", true }, + { "builtincolorado.com", true }, + { "builtingym.com", true }, + { "builtinla.com", true }, + { "builtinnyc.com", true }, { "builtinseattle.com", true }, { "builtinsf.com", true }, + { "builtinvacuum.com", true }, { "builtory.my", true }, + { "builttosell.com", true }, { "builtvisible.com", true }, { "builtwith.com", true }, { "buissonchardin.fr", true }, @@ -22454,11 +26507,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buitrong.net", true }, { "buka.jp", true }, { "buketnevesti.cf", true }, - { "bukiko-test.net", true }, { "bukiko.net", true }, { "bukinist.tk", true }, { "bukiskola.hu", true }, { "bukkenfan.jp", true }, + { "bukn.uk", true }, { "bukowski.se", true }, { "bukowski.tk", true }, { "bukpcszerviz.hu", true }, @@ -22473,6 +26526,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bulavki.tk", true }, { "bulbagram.ml", true }, { "bulbcompare.com", true }, + { "bulbidea.com", true }, { "bulbonidos.tk", true }, { "bulbuly.tk", true }, { "buldogueingles.com.br", true }, @@ -22482,6 +26536,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bulgakov.tk", true }, { "bulgariablog.tk", true }, { "bulgarianhouse.tk", true }, + { "bulgarianproperties.com", true }, { "bulgariya.cf", true }, { "bulhost.com", true }, { "bulindir.tk", true }, @@ -22489,39 +26544,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bull.id.au", false }, { "bulldog-buss.tk", true }, { "bulldog-hosting.de", false }, + { "bulldogdriveways.com", true }, { "bulldogfrances.tk", true }, { "bulldogkennel.tk", true }, + { "bulldogmarketinggroup.com", true }, { "bulldogs-sipoo.tk", true }, - { "bulldogscuba.com", true }, { "bulledair-savons.ch", false }, { "bulledart.ga", true }, { "bullesdeculture.com", true }, { "bulletbabu.com", false }, { "bulletfrog.tk", true }, - { "bulletin.com", true }, { "bulletpoint.cz", true }, { "bullettags.com", true }, { "bullfitta.tk", true }, + { "bullfrogpooltilecleaning.com", true }, { "bulli.tk", true }, + { "bulliontradingllc.com", true }, { "bullish.com", true }, { "bullmarketing.nl", true }, { "bullockcountyal.gov", true }, { "bullpendaily.com", true }, - { "bullshitmail.nl", true }, { "bullterrierspain.tk", true }, + { "bulltorrent.com", true }, { "bullvalleyil.gov", true }, { "bullyprotection.ml", true }, { "bulmanat.tk", true }, { "bulmastife.com.br", true }, + { "bultdatabasen.se", true }, + { "bulten.com", true }, { "bultink.tk", true }, - { "bulutdonusumu.com", true }, { "bulutkey.com", true }, { "bulvar.tk", true }, { "bumble.com", true }, { "bumblebee.cf", true }, { "bumblebeekids.uk", true }, { "bumenn.is", true }, - { "bumianoa.com", false }, + { "bumianoa.com", true }, { "bumirc.tk", true }, { "bummelwelt.ch", true }, { "bummelwelt.com", true }, @@ -22534,6 +26592,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bunaken.tk", true }, { "bunbun.be", true }, { "bunburydad.tk", true }, + { "buncombecounty.org", true }, { "bund-von-theramore.de", true }, { "bundesamtsozialesicherung.de", true }, { "bundesanzeieger.com", true }, @@ -22547,6 +26606,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bungee.pw", true }, { "bungeeireland.tk", true }, { "bungotai.ga", true }, + { "buniq.com.br", true }, { "bunix.de", false }, { "bunker307.tk", true }, { "bunkerhilltx.gov", true }, @@ -22563,10 +26623,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bunnyvishal.com", true }, { "bunnyworld.xyz", true }, { "bunq.love", true }, - { "bunq.rip", true }, + { "buns.cc", true }, { "bunsnbagels.com", true }, { "bunto-import.tk", true }, - { "bunzy.ca", true }, { "buongiornolatina.it", true }, { "buonventosbt.eu", true }, { "bupa.com.au", true }, @@ -22587,45 +26646,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buralteria.tk", true }, { "buratino.tk", true }, { "buratiya.tk", true }, + { "burb.social", true }, { "burbaguena.tk", true }, { "burbankdental.com", true }, { "burberry-outlet.cf", true }, + { "burberrysunglasses.us", true }, { "burcevo.info", true }, - { "burchfabrics.com", true }, + { "burchfabrics.com", false }, { "burdurhaber.tk", true }, { "burdursondakika.tk", true }, - { "bureau86.be", true }, { "bureaubolster.nl", false }, + { "bureaubraam.nl", false }, { "bureaudirectoryers.ga", true }, - { "bureaugoodwork.nl", true }, + { "bureauzelfstandigenfryslan.nl", true }, { "burenvoorburen.gent", true }, { "burevestnik.tk", true }, + { "burewala.com", true }, { "burewala.tk", true }, { "burewalanews.tk", true }, - { "burg-hohnstein.com", true }, - { "burg-hohnstein.info", true }, + { "burg-esslingen.de", true }, + { "burgas.bg", true }, { "burgawnc.gov", true }, + { "burger.eu.org", true }, + { "burger.fitness", true }, { "burgerbudget.gent", true }, + { "burgerking.eu.org", true }, { "burgernet.nl", false }, { "burgers.io", true }, { "burgesspetcare.com", true }, + { "burghardt-neumann.de", true }, { "burghardt.pl", true }, { "burghtstam.tk", true }, { "burgoslacrosse.tk", true }, + { "burguesinhas.com.br", true }, { "burgundia.pl", false }, + { "burhan-autosattlerei.de", true }, { "burhanionlinestore.com", true }, { "buri.be", true }, { "buricloud.fr", true }, { "burienergy.com", true }, + { "burina.net", true }, { "buriramradio.com", true }, { "burke.services", true }, { "burkhardt.at", true }, + { "burkitech.com", true }, { "burkoff.tk", true }, { "burkow.ru", true }, { "burlaka.net", true }, { "burlapsac.ca", true }, + { "burlesonconstructioninc.com", true }, { "burlesontx.gov", true }, { "burling.cz", true }, + { "burlingamehistorical.org", true }, { "burlingameparentsclub.org", true }, { "burma-we-care.tk", true }, { "burmalin.ml", true }, @@ -22633,6 +26705,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burmeister-gmbh.de", true }, { "burmesecatscare.com", true }, { "burmesepythonpet.com", true }, + { "burnabyhighstar.com", true }, { "burncorp.org", true }, { "burndyt3.com", true }, { "burnedyouers.ga", true }, @@ -22643,15 +26716,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burnimage.co.uk", true }, { "burning-team.tk", true }, { "burning-wheels.tk", true }, - { "burningbase.com", true }, - { "burningbird.net", true }, + { "burningbase.com", false }, { "burningbooks.org", true }, { "burningflame.tk", true }, { "burningflipside.com", false }, + { "burningseries.co", true }, + { "burningseries.cx", true }, + { "burningseries.sx", true }, { "burnit.tk", true }, { "burnsland.com", true }, { "burntfish.com", true }, - { "burnworks.com", true }, + { "burnus.net", true }, + { "burnworks.com", false }, { "buro86.be", true }, { "buronducouderc.fr", true }, { "buronwater.com", true }, @@ -22663,7 +26739,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burroughsid.com", true }, { "bursamusik.tk", true }, { "bursapartner.tk", true }, - { "bursasite.ro", true }, { "burstequity.com", true }, { "burstequity.net", true }, { "burstequity.org", true }, @@ -22671,11 +26746,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burstsocial.net", true }, { "burstsocial.org", true }, { "burtai.com", true }, + { "burtcheboyganmi.gov", true }, { "burtcountyne.gov", true }, { "burtrum.family", true }, { "burtrum.me", true }, { "burtrum.name", true }, { "burtrum.org", true }, + { "burtsbees.ca", true }, + { "burttownshipcheboyganmi.gov", true }, { "burunucu.ga", true }, { "buryat-mongol.cf", true }, { "buryatia.tk", true }, @@ -22683,23 +26761,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "burz.eu.com", true }, { "burz.net", true }, { "burz.one", true }, + { "burz.ro", true }, { "burzcast.com", true }, { "burzcast.media", true }, { "burzgroup.com", true }, { "burzmali.com", true }, - { "burzmedia.com", true }, { "burzmedia.ro", true }, { "burzstudios.com", true }, { "burzum.ch", true }, { "bus-hit.me", true }, + { "bus2talent.eu", true }, { "busanhs.bid", true }, + { "buscaaviena.com", true }, { "buscacpf.se", true }, { "buscaebooks.tk", true }, { "buscagenealogia.tk", true }, { "buscahost.com", true }, { "buscalotodo.com", true }, { "buscandolosmejores.com", true }, - { "buscasimple.com", true }, { "buscatea.com", true }, { "buscatodo.tk", true }, { "buschavdar.tk", true }, @@ -22721,24 +26800,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "business-events.org.uk", true }, { "business-explosion-fortune.tk", true }, { "business-garden.com", true }, + { "business-institute.sk", true }, + { "business-network.or.jp", true }, { "business-secreti.cf", true }, { "business-secreti.ga", true }, { "business-secreti.gq", true }, { "business-secreti.tk", true }, + { "business-swiss.ch", true }, { "business.facebook.com", false }, { "business.gov", false }, { "business.medbank.com.mt", true }, + { "business.vic.gov.au", true }, { "business4all.gr", true }, { "business4beginners.co.uk", true }, + { "business808.com", true }, { "businessactivities.tk", true }, { "businessadaptive.ga", true }, { "businessadvance.tk", true }, { "businessafter.ga", true }, { "businessamongus.com", true }, { "businessanalyst.ml", true }, - { "businessanalytics24.com", true }, { "businessarrow.ga", true }, { "businessbad.ga", true }, + { "businessbasecamp.eu", true }, { "businessbetter.tk", true }, { "businessblod.ga", true }, { "businessbody.ga", true }, @@ -22754,6 +26838,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businesscharts.ga", true }, { "businesscircus.ga", true }, { "businesscisco.tk", true }, + { "businesscloud.co.uk", true }, { "businesscollect.ga", true }, { "businesscollections.ga", true }, { "businesscolor.ga", true }, @@ -22766,6 +26851,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businesscupcake.ga", true }, { "businesscupid.ga", true }, { "businesscurious.ga", true }, + { "businesscutter.com", true }, { "businessdelta.ga", true }, { "businessdevelopmentagency.tk", true }, { "businessdevelopmentarea.tk", true }, @@ -22808,6 +26894,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businessgun.ga", true }, { "businesshandsome.ga", true }, { "businesshome.ml", true }, + { "businesshosting.nl", false }, { "businesshotrod.ga", true }, { "businesshub.cz", false }, { "businessideaarea.tk", true }, @@ -22867,7 +26954,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businesskayak.ga", true }, { "businesskiss.ga", true }, { "businessknight.ga", true }, + { "businesslabs.space", true }, { "businesslead.tk", true }, + { "businessleader.co.uk", true }, + { "businessleadsworld.com", true }, { "businesslegacy.ga", true }, { "businessless.ga", true }, { "businesslion.ga", true }, @@ -22886,6 +26976,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businessnatural.ga", true }, { "businessnet.cf", true }, { "businessnetworks.tk", true }, + { "businessnews-nigeria.com", true }, { "businessnewsera.tk", true }, { "businessnight.ga", true }, { "businessoftheday.ga", true }, @@ -22914,7 +27005,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businesspride.ga", true }, { "businesspure.ga", true }, { "businessquality.ml", true }, - { "businessradar.com.au", true }, { "businessrainforest.ga", true }, { "businessraven.ga", true }, { "businessreborn.tk", true }, @@ -22932,10 +27022,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "businessslide.ga", true }, { "businesssonic.ga", true }, { "businesssouthbeach.ga", true }, + { "businessspare.com", true }, { "businesssparkle.ga", true }, { "businessspicy.ga", true }, { "businesssplash.ga", true }, { "businessstamp.ga", true }, + { "businessstudent.com", true }, + { "businesssupportbywilma.nl", true }, { "businesssurreal.ga", true }, { "businesstalking.tk", true }, { "businesstexas.tk", true }, @@ -22967,8 +27060,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "busold.ws", true }, { "buspark.com", true }, { "buspark.cz", true }, + { "buspatrol.com", true }, { "busphotos.tk", true }, { "busqnet.com", true }, + { "bussi.at", true }, { "bussinesconsulting.tk", true }, { "bussinesinsurance.tk", true }, { "bussinesman.tk", true }, @@ -22980,45 +27075,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bustadice.com", true }, { "bustany.org", true }, { "bustaura.lt", true }, + { "bustepaga.it", true }, { "buster.me.uk", true }, { "bustickets.ph", true }, { "bustillodeloro.tk", true }, + { "bustimes.org", true }, { "bustingbrackets.com", true }, { "bustmold.com", true }, { "bustmovesest.ga", true }, { "busty-milf.net", true }, - { "bustybombastic.com", true }, + { "bustyarchive.com", true }, + { "bustymilftube.com", true }, + { "bustypassion.com", true }, + { "bustypics.com", true }, + { "bustyrack.com", true }, + { "busuan.com", true }, { "busuttil.org.uk", true }, { "buswiki.ml", true }, { "busyon.cloud", true }, { "but-it-actually.work", true }, + { "but-its-not-your.business", true }, { "butarque.es", true }, + { "butcherboymarket.com", true }, { "butcherpaxtattoo.com", true }, - { "butekno.net", true }, + { "butenhofbomster.com", true }, { "buter-petersen.dk", true }, { "butfirstkoffee.in", true }, { "butianyun.com", true }, { "butik-mechty.tk", true }, + { "butikk-nesoddkatten.no", true }, { "butikvip.ru", true }, { "butl.nl", true }, { "butlaroo.com", true }, { "butlercountyne.gov", true }, - { "butlercountyogs.org", true }, { "butlerdisposal.com", true }, { "butlerfm.dk", true }, - { "butorkarpitos.com", false }, + { "butlins.com", true }, + { "butorvasarlas.hu", true }, { "butowka.tk", true }, { "butsa.tk", true }, { "butserdocumentary.tk", true }, - { "butsoccers.com", true }, { "butt.repair", false }, { "buttacakes.com", true }, + { "buttedesmortssd1wi.gov", true }, { "butter.horse", true }, { "butter.ml", true }, - { "butteramotors.com", true }, { "butterhost.ga", true }, { "buttermilk.cf", true }, + { "butternutbox.com", true }, { "buttertea.shop", true }, + { "buttertrick.com", true }, { "buttgun-tattoo.de", true }, { "buttonizer.pro", true }, { "buttonline.ch", true }, @@ -23026,6 +27132,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "butts-are.cool", true }, { "butttexters.ga", true }, { "butunoyunlar.net", true }, + { "butyric.com", true }, { "butz.cloud", true }, { "butzies.ddnss.org", true }, { "buumibar.fi", true }, @@ -23049,8 +27156,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buy-decadron.tk", true }, { "buy-deltasone.tk", true }, { "buy-essay-online.ga", true }, + { "buy-express-vpn.asia", true }, { "buy-human-hair-extension.tk", true }, { "buy-indocin.cf", true }, + { "buy-invertor.shop", true }, { "buy-jeansbiz.tk", true }, { "buy-kratom.us", true }, { "buy-lasix-without-a-doctor-s-prescription.ga", true }, @@ -23081,19 +27190,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buyatarax.gq", true }, { "buyazithromycin.gq", true }, { "buybaclofen.ga", true }, - { "buybike.shop", true }, + { "buybitmain.com", true }, { "buybuspar.ga", true }, { "buybutton.store", true }, { "buycafergot.ml", true }, { "buycbd.store", true }, { "buycheapandlow.tk", true }, - { "buycheapshirts.com", true }, { "buycialissmx.tk", true }, { "buycitalopram.ga", true }, { "buyclaritin.ml", true }, { "buycook.shop", true }, { "buycostarica.tk", true }, - { "buycoverartwork.com", true }, { "buycultureboxesers.ga", true }, { "buydataonline.tk", true }, { "buydegree.info", true }, @@ -23104,10 +27211,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buydiflucan.ml", true }, { "buydissertations.com", true }, { "buyeba.xyz", true }, - { "buyebook.xyz", true }, { "buyebooks.tk", true }, { "buyeffexor.tk", true }, { "buyer.pro", true }, + { "buyersinn.pk", true }, { "buyessay.org", true }, { "buyessays.net", true }, { "buyessayscheap.com", true }, @@ -23118,6 +27225,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buyingstatus.com", true }, { "buyingtvsers.ga", true }, { "buyingtvsest.ga", true }, + { "buyiptv.tech", true }, { "buyitmalta.online", true }, { "buyjewel.shop", true }, { "buylasix.ml", true }, @@ -23125,10 +27233,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buymetforminonline.tk", true }, { "buymobic.ml", true }, { "buymyvoip.com", true }, + { "buynairobi.com", true }, { "buyneurontin.ml", true }, { "buyonmov.online", true }, + { "buyorbye.com.au", true }, { "buyornot.tk", true }, + { "buyorsellcampers.com", true }, + { "buypal.com.pe", true }, { "buypapercheap.net", true }, + { "buypersonalproxy.com", true }, { "buyplore.com", true }, { "buyplussize.shop", true }, { "buyprednisolone24h.ml", true }, @@ -23138,6 +27251,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buypropecia.cf", true }, { "buyproperty.az", true }, { "buyproscaronlinecanada.ga", true }, + { "buyprosoma.com", true }, { "buyprovera.tk", true }, { "buyprozac.cf", true }, { "buypurenature.ga", true }, @@ -23145,13 +27259,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buyretinamicro.cf", true }, { "buyrimonabant.cf", true }, { "buyrogaine.ga", true }, - { "buyru.net", true }, + { "buyselldonothing.com", true }, { "buyshine.com", true }, { "buyshoe.org", true }, { "buysildenafil.ml", true }, { "buystromectol.cf", true }, { "buystromectol.ml", true }, { "buysuisse.shop", true }, + { "buytadalafiltabs.com", true }, { "buytermpaper.com", true }, { "buytetracycline.cf", true }, { "buytramadol.ga", true }, @@ -23167,19 +27282,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buyzithromaxonline.ml", true }, { "buyzofranonline.tk", true }, { "buyzoloft.cf", true }, + { "buzaao.com", true }, { "buziaczki.pl", true }, { "buzinessmarket.ml", true }, { "buzt.cn", true }, - { "buzye.com", true }, + { "buzzage.fr", true }, + { "buzzclub.com.br", true }, { "buzzconcert.com", true }, { "buzzcontent.com", true }, + { "buzzeditora.com.br", true }, + { "buzzenginegroup.com", true }, { "buzzfeast.com", true }, + { "buzzframe.com", true }, { "buzzhub.tk", true }, { "buzzkuri.co.jp", true }, { "buzzkuri.com", true }, { "buzzman.ga", true }, - { "buzzmedianetworks.com", true }, - { "buzzpop.tv", true }, { "buzzpost.tk", true }, { "buzzprint.it", true }, { "buzzsmithmusic.com", true }, @@ -23192,26 +27310,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "buzzworthy.biz", true }, { "buzzybites.com", true }, { "bv-driver.tk", true }, + { "bv-ferreiradozezere.pt", true }, + { "bvb.moe", false }, { "bvbbuzz.com", true }, { "bvblaboratory.hu", true }, { "bvbmedia.nl", true }, { "bvdp-saturn-prod.appspot.com", true }, - { "bvergnaud.fr", true }, { "bvexplained.co.uk", true }, { "bvfz.pt", true }, { "bvgg.eu", true }, { "bvgt.org", true }, { "bvionline.eu", true }, { "bviphotovideo.com", true }, - { "bvl.aero", true }, + { "bvlos.com.pl", true }, { "bvlp.com", true }, + { "bvng.nl", true }, + { "bvonesource.com", true }, { "bvop.org", true }, { "bvr-nsn.gov", true }, { "bvrd.com.do", true }, { "bvrlodge.com", true }, { "bvrlodge.ro", true }, + { "bvrpd-pa.gov", true }, { "bvsa.co.za", false }, { "bvv-europe.eu", true }, + { "bvwphotography.com", true }, { "bw.codes", true }, { "bwa.wroc.pl", true }, { "bwanglab.com", true }, @@ -23230,18 +27353,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bwgjms.org", true }, { "bwh1.net", false }, { "bwhbwh.net", true }, + { "bwigroup.com.au", true }, { "bwilkinson.co.uk", true }, { "bwin18.cc", false }, { "bwin2288.com", true }, { "bwin369.cc", true }, { "bwin58.cc", true }, + { "bwinvestments.com.au", true }, { "bwired.ca", true }, { "bwl-earth.club", true }, { "bwmcnc.com", true }, { "bwmlaser.com", true }, { "bwmovies.tk", true }, { "bws16.de", true }, - { "bwserhoscaletrainaz.com", true }, + { "bwsolar.com.au", true }, { "bwzc.be", true }, { "bx-n.de", true }, { "bx.ee", true }, @@ -23250,9 +27375,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bxdj3.com", true }, { "bxin.de", true }, { "bxp40.at", true }, + { "by-g.ch", true }, { "by-pixcl.com", true }, { "by-robyn.nl", true }, + { "by-the-sword.com", true }, { "by-yesilbag.com", true }, + { "by.com.vn", true }, { "by.cx", false }, { "by.place", true }, { "by1u.com", true }, @@ -23265,17 +27393,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "byblog.tk", true }, { "bybym.ml", true }, { "bycafeonline.com", true }, + { "bycatch.com", true }, + { "bycialis.com", true }, + { "bycorefi.com", true }, { "bydik.com", true }, { "bydisk.com", false }, { "bydoora.com", true }, - { "bye-bye.us", true }, { "byebyemylove.com", true }, + { "byebyewesp.nl", true }, { "byedzhang.tk", true }, { "byemediaers.ga", true }, { "byemediaest.ga", true }, { "byemedsers.ga", true }, { "byeskille.no", true }, - { "byfare.com", true }, { "byfeldt.dk", true }, { "byggindrustrin.ga", true }, { "byggonline.ga", true }, @@ -23290,7 +27420,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "byjudasarrieta.tk", true }, { "byjuschennai.com", true }, { "byken.cn", true }, - { "byket.lviv.ua", true }, { "byll.de", true }, { "byluthier.com", true }, { "bylz.me", true }, @@ -23298,24 +27427,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bymogarna.se", true }, { "bynder.com", true }, { "bynono.pt", true }, + { "bynss.com", true }, { "bynumlaw.net", true }, { "byootify.com", true }, - { "byostasys.com", true }, { "bypass-link.ga", true }, { "bypass.kr", true }, { "bypass.sh", true }, { "bypassgfw.tk", true }, { "bypetula.cz", true }, - { "byprata.com.br", true }, { "byraje.com", true }, { "byrddogpaving.com", true }, + { "byredo.com", true }, { "byrest.com", true }, { "byrko.sk", true }, { "byronkg.us", true }, { "byrtz.de", true }, + { "byrut.org", true }, { "byrutor.org", true }, { "bysb.net", true }, - { "bysgo.com", true }, { "byshep.com", true }, { "byshop.tk", true }, { "byskafasi.com", true }, @@ -23324,13 +27453,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bystryj-zajm.tk", true }, { "byte-lab.tk", true }, { "byte.nl", true }, + { "byte.surf", true }, { "byte128.com", false }, { "bytearts.net", true }, { "bytebe.at", false }, { "bytebodega.com", true }, - { "bytebucket.org", true }, - { "bytecrafter.com", true }, - { "bytecrafter.net", true }, + { "bytebolt.at", true }, + { "bytebucket.org", false }, + { "bytecrafter.com", false }, + { "bytecrafter.net", false }, { "byteflies.com", true }, { "bytema.cz", true }, { "bytema.eu", true }, @@ -23338,9 +27469,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bytema.sk", true }, { "bytemethod.ca", true }, { "bytemix.cloud", true }, + { "bytenews.org", true }, { "byteofdev.com", true }, { "bytepen.com", true }, { "bytes.co", true }, + { "bytes.com", true }, { "bytes.fyi", true }, { "bytesec.net", true }, { "byteshift.ca", true }, @@ -23354,6 +27487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "bytetechy.com", true }, { "bytetime.net", false }, { "byteultra.com", true }, + { "bytexd.com", true }, { "bytez.tk", true }, { "bytheglass.gr", true }, { "bythen.cn", false }, @@ -23364,43 +27498,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "byvdev.com", true }, { "byvshie.com", true }, { "byw.cymru", true }, + { "bywencke.nl", true }, + { "bywin9.com", false }, { "bzbet365.com", true }, + { "bzfit.ru", true }, { "bzh.tf", true }, { "bzhserv.ovh", true }, { "bzhub.bid", true }, { "bziaks.xyz", true }, { "bzik.cf", true }, + { "bzkj.de", true }, { "bzsparks.com", false }, { "bztech.com.br", true }, { "bztech.ru", true }, - { "bztraveler.net", false }, { "bzv-fr.eu", true }, + { "c-137.me", true }, { "c-14.de", true }, - { "c-3.moe", true }, { "c-3po.fr", true }, { "c-aeroconsult.com", true }, { "c-c-europeen.org", true }, { "c-chaud.com", true }, + { "c-data.nl", true }, + { "c-dome.com", true }, { "c-g-h.net", true }, { "c-ma-copro.com", true }, - { "c-netsys.fr", true }, { "c-ovidiu.tk", true }, - { "c-resource.tech", true }, + { "c-resource.tech", false }, { "c-rpg.eu", true }, { "c-rtx.com", true }, { "c-sagaseru.com", true }, { "c-shock.org", true }, + { "c-solarcity.com", true }, { "c-style.net", false }, { "c-three.jp", true }, { "c-world.co.uk", true }, + { "c-y1xbet.com", true }, { "c.cc", true }, { "c.im", true }, { "c.lu", true }, { "c.sl", true }, + { "c.wtf", true }, { "c00ke.com", true }, { "c057cl7.com", true }, { "c0mplicated.tk", true }, { "c0rn3j.com", true }, + { "c10.cz", true }, { "c16t.uk", false }, { "c19adoption.com", true }, { "c19aspirin.com", true }, @@ -23409,11 +27551,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c19colchicine.com", true }, { "c19curcumin.com", true }, { "c19early.com", true }, + { "c19early.org", true }, { "c19favipiravir.com", true }, { "c19fluvoxamine.com", true }, { "c19hcq.com", true }, + { "c19hcq.org", true }, { "c19ic.com", true }, { "c19ivermectin.com", true }, + { "c19ivermectin.org", true }, + { "c19ivm.org", true }, { "c19legacy.com", true }, { "c19ly.com", true }, { "c19melatonin.com", true }, @@ -23426,6 +27572,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c19quercetin.com", true }, { "c19regn.com", true }, { "c19rmd.com", true }, + { "c19study.com", true }, { "c19sv.com", true }, { "c19vitaminc.com", true }, { "c19vitamind.com", true }, @@ -23441,7 +27588,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c3boc.com", true }, { "c3hv.cn", true }, { "c3kidspace.de", true }, - { "c3sa.com", true }, { "c3soc.de", true }, { "c3speak.com", true }, { "c3speak.de", true }, @@ -23451,8 +27597,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c3wien.at", true }, { "c41ee55a-da20-4cff-8075-24afd0f22aac.com", true }, { "c4539.com", true }, - { "c4hr.org.mk", true }, - { "c4k3.net", true }, + { "c4b.tools", true }, { "c4me.online", true }, { "c5197.co", true }, { "c5h8no4na.net", true }, @@ -23463,7 +27608,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c7dn.com", true }, { "c7n.ch", true }, { "c7ra.com", true }, - { "c81365.com", true }, { "c82365.com", true }, { "c86255.com", true }, { "c899365.com", false }, @@ -23474,21 +27618,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "c9n.xyz", true }, { "ca-canovelles.tk", true }, { "ca-els.com", true }, + { "ca-immobilier.fr", true }, { "ca-key.de", true }, { "ca-saintdie.fr", true }, { "ca.gparent.org", true }, - { "ca.ma", true }, { "ca.search.yahoo.com", false }, { "ca3ahhet.tk", true }, { "ca5.de", true }, + { "caa.ca", true }, { "caalmn.org", true }, - { "caaps.org.au", true }, { "caarecord.org", true }, { "caasd.org", true }, { "caasda.tk", true }, - { "cabaladada.org", true }, + { "caasz.com", true }, + { "cabaladada.org", false }, { "cabale.fr", true }, { "cabalistic.tk", true }, + { "caball.com", true }, { "caballeroalba.cf", true }, { "caballerosdeltablero.tk", true }, { "cabanactf.com", true }, @@ -23500,6 +27646,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cabeceirasdebasto.pt", false }, { "cabecera-descendimiento.tk", true }, { "cabelgrano.tk", true }, + { "cabenoap.com.br", true }, { "cabezadeframontanos.tk", true }, { "cabezadelcaballo.tk", true }, { "cabina-photobooth.ro", true }, @@ -23508,11 +27655,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cabinet-bedin.com", false }, { "cabinet-life.fr", false }, { "cabinet-voyance-orca.tk", true }, - { "cabinetfurnituree.com", true }, { "cabinetlm.com", true }, + { "cabinetm.com", true }, { "cabinetmtc.com", true }, { "cabinetoumaima.tk", true }, { "cabinetselect.com", true }, + { "cable.ru", true }, { "cable360.de", true }, { "cableatierra.tk", true }, { "cablehighspeed.net", true }, @@ -23522,17 +27670,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cablesandkits.com", true }, { "cablogrammes.fr", true }, { "cabodream.ml", true }, + { "caboleisurerealestate.com", true }, { "cabooneconstruction.com", true }, { "cabosaferide.com", true }, + { "cabotagem.com", true }, { "caboverde.tk", true }, { "cabr.al", true }, { "cabrachicagritona.tk", true }, + { "cabrils.com", true }, + { "cabvertising.it", true }, { "cac-ua.com", true }, { "cacao-chocolate.com", true }, { "cacao-gang.ml", true }, { "cacao.supply", true }, { "cacaolalina.com", true }, + { "cacareerzone.org", true }, { "cacaumidade.com.br", true }, + { "caccc.com", true }, { "cachacasantaterezinha.com.br", true }, { "cachaceros.tk", true }, { "cache-checker.com", true }, @@ -23541,22 +27695,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cachethome.com", true }, { "cachetur.no", true }, { "cackette.com", false }, + { "cackl.io", true }, { "cacko.tk", true }, + { "cacnverslavingszorg.nl", true }, { "cacombos.com", true }, { "cacommenceavecmoi.ca", true }, { "cacoriccionline.tk", true }, { "cacr.pw", true }, { "cacrm.com", true }, + { "cactus-search.com", true }, { "cactusarium.tk", true }, { "cactusdentrepair.com", true }, { "cactusgreen.com.br", true }, + { "cactuskiev.com.ua", true }, { "cactuspedia.cf", true }, { "cactuspedia.ga", true }, { "cactuspedia.gq", true }, { "cactuspedia.ml", true }, + { "cactusplumbingandair.com", true }, { "cad-noerdlingen.de", true }, { "cadafalso.tk", true }, - { "cadafamilia.de", true }, { "cadams.io", false }, { "cadastroloteamento.com.br", true }, { "cadaunoescomoes.tk", true }, @@ -23564,14 +27722,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cadavre-exquis-musical.tk", true }, { "cadcc.cl", false }, { "cadconcrete.ca", true }, + { "cadcrowd.com", true }, { "caddo.gov", true }, + { "cadductcleaning.com", true }, { "caddyfashionshop.com", true }, { "caddyshackersmv.com", true }, { "cadeaux-anniversaires.net", true }, + { "cadeauxfolies.fr", true }, { "cadecobots.com", true }, { "cadeengineering.com", true }, { "cadeirasparaescritorio.ind.br", true }, { "cadenadereferidos.tk", true }, + { "cadenceluxpornstar.com", true }, + { "cadencescience.com", true }, { "cadetsge.ch", false }, { "cadflow.pt", true }, { "cadiar.tk", true }, @@ -23580,14 +27743,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cadillacfairview.com", true }, { "cadillacitalia.it", true }, { "cadiskitchen.ca", true }, - { "cadiztrabaja.com", true }, { "cadmail.nl", true }, { "cadman.pw", true }, { "cadman.uk", true }, { "cadmanlaw.ca", true }, { "cadmanlaw.com", true }, - { "cadmax.pro", true }, { "cadmechanic.com", true }, + { "cadonau.net", true }, + { "cadoneghe.com", true }, { "cadonet.tk", true }, { "cadooz.com", true }, { "cadoth.net", true }, @@ -23596,13 +27759,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cadre.com", true }, { "cadreok.com", true }, { "cadsys.net", true }, + { "cadusilva.com", true }, { "caduta-capelli.tk", true }, { "cadvending.ch", true }, { "cadventura.com", true }, { "cadwalk.de", true }, { "cady-jennifer.tk", true }, + { "cadynce.com", true }, { "caenergyprograms.com", true }, { "caerostris.com", true }, + { "caesar.today", true }, { "caesarkabalan.com", true }, { "caetanobenet.es", true }, { "caetanoflotas.es", true }, @@ -23611,19 +27777,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caetanoformulagalicia.es", true }, { "caetanomotorsmalaga.es", true }, { "caetanoreicomsa.es", true }, + { "caetanotec.pt", true }, { "cafe-cliche.tk", true }, { "cafe-georges.cf", true }, { "cafe-habis.de", true }, + { "cafe-hamlet.fr", true }, { "cafe-musica.org", true }, { "cafe-pauline.de", true }, { "cafe-service.ru", false }, + { "cafead.de", true }, { "cafeamazon.tk", true }, + { "cafeapple.com", true }, + { "cafebab.com", true }, + { "cafebeauty.com", true }, { "cafebeirut.tk", true }, { "cafecentraal.tk", true }, { "cafecentral.tk", true }, { "cafechesscourt.com", true }, { "cafechroma.tk", true }, - { "cafecliche.com", true }, { "cafecobus.tk", true }, { "cafedelcielo.co", true }, { "cafedesignbooks.com", true }, @@ -23644,10 +27815,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cafenix.tk", true }, { "cafenoorderzon.tk", true }, { "cafeobscura.nl", true }, + { "cafeplacedumarche.ch", true }, { "cafepress.com.au", true }, { "cafermin.com", true }, { "cafesforonda.com", true }, + { "cafeshervas.com", true }, { "cafetalks.net", true }, + { "cafetaste.com", true }, { "cafeterya.tk", true }, { "cafethevibes.com", true }, { "cafethrive.co.uk", true }, @@ -23657,51 +27831,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caffein.cf", true }, { "caffeinate.co.uk", true }, { "caffeinatedengineers.com", true }, + { "caffeineandconcrete.com", true }, { "caffeinebookly.com", true }, { "caffeinefiend.org", true }, { "caffelatte.tk", true }, { "cafferata.tk", true }, + { "caffeservice.hu", true }, + { "caffewasyl.pl", true }, { "cafled.org", true }, { "cafpatronato.it", true }, { "caftan.tk", true }, + { "cagalogluhamami.com.tr", true }, + { "cagao.com", true }, { "cagbuzau.ro", true }, { "cageworld.tk", true }, { "cagir.eu", true }, { "cagivaclub.tk", true }, { "caglarcakici.com", true }, { "cagranollers.tk", true }, + { "cagrierdogdu.com", true }, { "cagrimerkezinumarasi.com", true }, { "cahfee.com", true }, { "cahn-achn.ca", true }, - { "cai4cai.ml", true }, + { "cahuilla-nsn.gov", true }, + { "caian.com", true }, { "caiben.org", true }, { "caibi.io", true }, + { "caic.com.sg", true }, + { "caidao.com", true }, + { "caifan.com", true }, + { "caihuan.com", true }, { "caijunyi.net", false }, + { "caikuai.com", true }, { "caillou.eu", true }, { "cailoli.com", true }, + { "caimin.com", true }, { "caindelhi.in", true }, { "cainesjannif.com", true }, { "cainiao.moe", true }, { "caio.moe", true }, { "caipai.fm", true }, + { "caipiao.com.cn", true }, { "caipsnotes.com", true }, + { "caiqu.com", true }, { "caiqueparrot.com", true }, - { "cairnsmobilewillsandprobate.com.au", true }, + { "cairan.com", true }, { "cairnterrier.com.br", true }, { "cairohost.ml", true }, { "cairokebab.com", true }, + { "cairui.com", true }, { "cais.de", true }, { "caise.tk", true }, + { "caishikou.com", true }, { "caivps.com", true }, { "caiwenjian.xyz", true }, { "caixiange.com", true }, { "caixideal-serralharia.pt", true }, + { "caiyi.com", true }, + { "caiyou.com", true }, { "caizx.com", false }, { "caj-eichstaett.de", true }, { "caja-pdf.es", false }, { "cajadecoloreshome.com", true }, { "cajadelparque.tk", true }, { "cajamarca.blog", true }, + { "cajaregionalserrana.com.mx", true }, { "cajas.zone", true }, { "cajio.ru", true }, { "cak.nl", true }, @@ -23718,14 +27912,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cakes.tk", true }, { "cakesbyzoey.com", true }, { "cakeshop.xyz", true }, + { "cakesoverseas.com", true }, + { "cakessl.com", true }, { "cakestandscarriers.tk", true }, - { "cakestart.net", true }, { "caketoindia.com", true }, { "cakeup.in.ua", true }, { "cakingandbaking.com", true }, { "cakir.info.tr", true }, - { "cakirlarshipyard.com", true }, { "cakko.ml", true }, + { "caknowledge.com", true }, + { "cal-pacpainting.com", true }, { "cal.goip.de", true }, { "cal9000.com", true }, { "calaad.net", true }, @@ -23738,36 +27934,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "calabasasoutdoorlighting.com", true }, { "calaborlawnews.com", true }, { "calabozo.tk", true }, - { "calaca.me", true }, { "caladan.tk", true }, { "calaficirecords.cf", true }, - { "calafont.cat", true }, { "calaix.click", true }, { "calamidad.tk", true }, { "calamp.com", true }, { "calancamassages.ch", false }, { "calandrahosting.tk", true }, { "calantonieta.tk", true }, + { "calasiaoplantcoop.com.ph", true }, { "calaverascounty.gov", true }, { "calaverasmedicalcannabis.com", true }, + { "calcasieu.gov", true }, + { "calcasieuclerk.gov", true }, { "calcasieuparish.gov", true }, { "calcasieusheriff.gov", true }, { "calcedge.com", true }, { "calcettomania.com", true }, { "calcinacci.com", true }, { "calcinacci.roma.it", true }, + { "calcionews24.com", true }, { "calcioragusa.tk", true }, + { "calcioweb.eu", true }, { "calconcontractors.com", true }, + { "calconnectionnews.com", true }, { "calcoolator.pl", true }, { "calcsoft.tk", true }, + { "calculadora-de-derivadas.com", true }, + { "calculadora-de-integrales.com", true }, { "calculadoraconversor.com", true }, + { "calculadorade.net", true }, { "calcularis.ch", true }, - { "calculat.io", true }, { "calculate.co.kr", true }, { "calculateaspectratio.com", true }, { "calculates.org", true }, + { "calculator-app.com", true }, { "calculator-imt.com", true }, + { "calculator.aws", true }, { "calculator.tf", true }, + { "calculatorspace.com", true }, { "calculatortvers.ga", true }, { "calculatortvest.ga", true }, { "calcworkshop.com", true }, @@ -23777,17 +27982,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caldecotevillagehall.co.uk", true }, { "calderagallery.com", true }, { "calderasgranada.cf", true }, - { "caldersoldas.com.br", true }, + { "caldercenter.org", true }, { "caldervets.co.uk", true }, { "caldoletto.com", true }, + { "caldwell.com", true }, { "caleaders.cf", true }, { "caleatoxic.org", true }, { "caledoniaoh.gov", true }, { "caledonie.tech", true }, { "calefones-electricos.com", true }, - { "calehoo.com", true }, { "calendar.cf", false }, { "calendar.google.com", true }, + { "calendarinspiration.com", true }, + { "calendariodecorrida.com.br", true }, { "calendarpensers.ga", true }, { "calendarpensest.ga", true }, { "calendarr.com", true }, @@ -23795,25 +28002,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "calendly.com", true }, { "calendriergn.ch", true }, { "calendriergratuit.fr", true }, - { "calendum.ru", true }, - { "calenfil.com", true }, { "caletka.cz", true }, { "caletka.nl", true }, { "calgarydermatologisters.ga", true }, { "calgraf.com", true }, { "calhoun.tk", true }, + { "calhouncountyfl.gov", true }, { "calhouncountyflsheriff.gov", true }, + { "calhouncountyil.gov", true }, { "calhounfalls.gov", true }, + { "calhounmi911.gov", true }, { "caliber.to", true }, { "calibermind.com", true }, - { "calibra.com", true }, { "calibrationrecall.com", true }, { "calibreapp.com", true }, { "calibso.net", true }, - { "caliderumba.com", true }, + { "calidadbio.com", true }, { "calidoinvierno.com", true }, { "californiabalsamic.com", true }, { "californiabudgetfinance.tk", true }, + { "californiabuilding.ma", true }, { "californiahairmd.com", false }, { "californiahealth.tk", true }, { "californiahumanrights.tk", true }, @@ -23822,81 +28030,95 @@ static const nsSTSPreload kSTSPreloadList[] = { { "californiamusicacademy.com", true }, { "californianet.tk", true }, { "californiaonlinedivorce.com", true }, + { "californiapa.gov", true }, { "californiavalues.cf", true }, { "calim.com.ar", true }, { "calimero.tk", true }, + { "calindairy.com", true }, { "caliph.one", true }, { "calisteniaperu.ga", true }, + { "calisthenicroutines.com", true }, { "calitateavietii-ardeal.ro", true }, - { "calixte-concept.fr", true }, { "call.me", true }, + { "call2counter.com", false }, { "calla.pl", true }, { "callabs.net", true }, - { "callamnow.com", true }, - { "callanan.nl", true }, + { "callahancountytx.gov", true }, + { "callan.com", true }, { "callanenglish.tk", true }, + { "callanetica.ru", true }, { "callanjg.co.uk", true }, { "callantonia.com", true }, + { "callawaymn.gov", true }, { "callawayracing.se", false }, { "callaworker.ml", true }, { "callbackform.tk", true }, - { "callboyz.net", true }, + { "callbell.eu", true }, { "callcenterdeluxecalls.nl", true }, + { "callcriteria.com", true }, { "callear.org", true }, { "callerid4u.com", true }, { "callerstrom.se", true }, { "calleveryday.com", true }, + { "callflex.com.br", true }, { "callfordataspeakers.com", true }, { "callforkunst.de", false }, { "callfunc.com", true }, + { "callhappyhive.com", true }, + { "callhippo.com", true }, { "callhome.link", true }, { "callhub.io", true }, { "calligraph.gq", true }, { "calligraphychic.com", true }, { "callisabel.fr", true }, + { "callision.com", true }, { "callmebetty.com", true }, { "callmewhatever.com", true }, { "callmewhatever.de", true }, { "callmewhatever.net", true }, { "calloway.us", true }, + { "callrail.com", false }, { "callsign.com", false }, { "callsigns.ca", true }, { "calltoar.ms", true }, { "calltothepen.com", true }, + { "callum.au", true }, + { "callummoore.au", true }, { "callumsilcock.me", true }, { "calluro.hr", true }, { "callvip.tk", true }, { "callwork.tk", true }, { "cally.tk", true }, { "callychat.tk", true }, - { "calmamity.com", true }, { "calmaririshmusicfestival.tk", true }, { "calmer-cloud.de", true }, { "calminteractive.fr", true }, - { "calmrehab.com", true }, { "calmtech.com", true }, { "calomel.org", true }, { "calonmahasiswa.com", true }, { "calotte-academy.com", true }, { "calpaterson.com", true }, { "calposa.ml", true }, - { "calref.cc", true }, - { "calref.network", true }, + { "calref.cc", false }, { "calu.me", true }, { "calucon.de", true }, + { "caluette.com", true }, + { "calumcrawford.com", true }, { "calumetcounty.gov", true }, - { "calvadia.duckdns.org", true }, { "calvario.tk", true }, + { "calvaryhospital.org", true }, { "calverleyparish.church", true }, { "calvertcityky.gov", true }, + { "calverttx.gov", true }, { "calvin.my", true }, { "calvusconsultancy.nl", true }, { "calwildgarden.com", true }, + { "calystral.com", true }, { "calyxengineers.com", true }, { "calyxinstitute.org", true }, { "calzadonline1.com", true }, - { "calzaturesira.it", true }, { "camago.dk", true }, + { "camagro.com", true }, { "camaradecomerciosiguatepeque.hn", true }, { "camaradivisas.com", true }, { "camaras.uno", true }, @@ -23910,30 +28132,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "camaronazo.com", true }, { "camarzanadetera.tk", true }, { "camashop.de", true }, - { "camasirkazani.com", true }, { "camastowncar.com", true }, { "camazoon.com", true }, { "cambados.tk", true }, { "cambait.tk", true }, { "camberford.com", true }, + { "cambiamenti-climatici.it", true }, { "cambiamos.tk", true }, + { "cambiata.io", true }, { "cambier.org", true }, + { "cambioeuro.es", true }, + { "cambioeuro.it", true }, { "cambiowatch.ch", false }, { "cambodiainfo.tk", true }, - { "cambodian.dating", true }, { "cambopost.tk", true }, + { "camboysuniverse.com", true }, { "cambramanresa.cat", true }, { "cambreaconsulting.com", true }, { "cambriacoveapartments.com", true }, { "cambridge-security.com", true }, { "cambridgeanalytica.cz", true }, { "cambridgeanalytica.net", true }, - { "cambridgeanalytica.org", false }, + { "cambridgemoneyman.com", true }, { "cambridgesecuritygroup.org", true }, { "cambridgetutors.com", true }, { "cambuslangharriers.org", true }, - { "camcapital.com", true }, - { "camconn.cc", true }, + { "camconn.cc", false }, + { "camdenhistory.com", true }, { "camdenny.gov", true }, { "camdenpaws.com.au", true }, { "camdesign.pl", true }, @@ -23943,14 +28168,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "camelflight.tk", true }, { "camelforensics.com", true }, { "camelia-poezii.tk", true }, + { "camelia.bg", true }, { "camelion.tk", true }, { "camella.com.ph", true }, { "camelservers.com", true }, { "camenisch.ws", true }, - { "cameo-membership.uk", true }, + { "cameo-membership.uk", false }, { "cameo.ee", true }, { "cameos.bo", true }, { "camera-podvod.tk", true }, + { "camerahainam.net", true }, { "camerahire.com.au", true }, { "cameraman.tk", true }, { "cameramark.nl", true }, @@ -23958,6 +28185,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cameraslyphotography.tk", true }, { "camerata.com", true }, { "cameraviva.com.br", true }, + { "camerawisata.com", true }, { "cameria.tk", true }, { "cameroncountytx.gov", true }, { "cameronherold.com", true }, @@ -23965,6 +28193,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cameronsiguenza.com", true }, { "cameronstar.tk", true }, { "cameronwince.com", true }, + { "cameronwv.gov", true }, { "cameroonlounge.com", true }, { "camerweb.es", true }, { "camfire.family", true }, @@ -23974,7 +28203,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "camgirl.ga", true }, { "camgo.org", true }, { "camhavuz.com", true }, - { "camilalima.adv.br", true }, { "camilamoreno.tk", true }, { "camilaporto.tk", true }, { "camilat.tk", true }, @@ -23983,7 +28211,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caminoneocatecumenal.tk", true }, { "caminreal.tk", true }, { "camionerosdecoslada.tk", true }, + { "camionesdesegundamano.net", true }, { "camipress.ga", true }, + { "camisa12store.com.br", true }, { "camisado.tk", true }, { "camisantiago.tk", true }, { "camisetas-bones.com.br", true }, @@ -24001,19 +28231,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "camouflaged.tk", true }, { "camp-pleinsoleil.ch", false }, { "campaign-ad.com", true }, + { "campaign-center.net", true }, + { "campaign.gov.scot", true }, + { "campaign.gov.uk", true }, { "campaigner.gq", true }, { "campaignlake.com", true }, { "campaignwiki.org", true }, + { "campaignzee.com", true }, { "campalhilal.org", true }, { "campamentos.info", true }, + { "campamerika.de", true }, { "campanhamamypoko.com.br", true }, { "campbellcountywy.gov", true }, + { "campblocos.com.br", true }, { "campcambodia.org", true }, { "campcar-location.com", true }, { "campdesante.com", true }, { "campdetarragona.tk", true }, { "campeonatoalemao.com.br", true }, - { "campercaravanmosman.nl", true }, + { "camperdays.de", true }, { "camperdirectoryers.ga", true }, { "camperdirectoryest.ga", true }, { "camperlist.com", true }, @@ -24024,14 +28260,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "campfiretails.org", true }, { "campfourpaws.com", false }, { "campguaikinima.com", true }, - { "campineiraalimentos.com.br", true }, + { "camping-aupigeonnier.fr", true }, { "camping-chantemerle.com", true }, { "camping-dulac-dordogne.com", true }, + { "camping-everywhere.fun", true }, { "camping-le-pasquier.com", true }, { "camping-seilershof.de", true }, { "camping-trentino.it", true }, { "camping.it", true }, - { "campingalplan.com", true }, { "campingbuffs.com", true }, { "campingcarlovers.com", true }, { "campingdebergboer.tk", true }, @@ -24054,11 +28290,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "campona.hu", true }, { "camposolillo.tk", true }, { "camprunamutt.dog", true }, + { "campsite-explorer.top", true }, { "campsoulfestival.com", true }, { "campstuffs.com", true }, + { "camptonnh.gov", true }, { "camptuk.org", true }, { "campula.cz", true }, { "campus-finance.com", true }, + { "campuscom.jp", true }, + { "campuscore.eu", true }, { "campusdrugprevention.gov", true }, { "campuskota.com", true }, { "campuspodsers.ga", true }, @@ -24092,33 +28332,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "camsupplier.ml", true }, { "camsupplierers.ga", true }, { "camtor.ml", true }, + { "camtu.com", true }, + { "camuri.com", true }, + { "camview.nz", true }, + { "camworld.com", true }, { "camzroofing.ca", false }, { "can-amchains.com", true }, - { "can7.fr", true }, + { "can-fleet.com", true }, + { "can-tran.com", true }, { "canada-tourisme.ch", false }, { "canadaabroad.com", false }, { "canadabread.com", false }, + { "canadacloudpharmacy.com", true }, { "canadaclub.tk", true }, { "canadacommunity.org", true }, + { "canadacouncil.ca", true }, { "canadafactcheck.ca", true }, + { "canadagoosejacketscanada.ca", true }, + { "canadalife.de", true }, { "canadamails.tk", true }, { "canadapet.club", true }, { "canadapets.club", true }, + { "canadapost-postescanada.ca", true }, { "canadapropertyexpert.ca", true }, - { "canadaradon.com", true }, - { "canadasmotorcycle.ca", true }, - { "canadian.dating", true }, { "canadianatheists.ca", true }, { "canadianatheists.com", true }, + { "canadianbusiness.com", true }, { "canadianfriendsofyadsarah.com", true }, + { "canadianlandscapeart.ca", true }, + { "canadianlawyermag.com", true }, { "canadianmetalworking.com", true }, { "canadianmilitaryspouse.tk", true }, { "canadianoutdoorequipment.com", true }, + { "canadianpharmacyonline.com", true }, { "canadianpointerclub.tk", true }, + { "canadiansinternet.com", true }, { "canadiansrit.tk", true }, { "canadiantouristboard.com", true }, + { "canae.org", true }, { "canajoana.eu", true }, { "canal-onanismo.org", true }, + { "canal4.com.ni", true }, + { "canalbpv.com", true }, + { "canalcienciascriminais.com.br", true }, + { "canalconfidencial.com.br", true }, + { "canaldeintegridade.com.br", true }, { "canaldelaespartera.tk", true }, { "canalecontracting.com", true }, { "canalescape.tk", true }, @@ -24126,15 +28384,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "canalinterativo.ml", true }, { "canalinterativo.tk", true }, { "canalpatriotas.tk", true }, + { "canalrivertrust.org.uk", true }, + { "canaltrece.com.co", true }, { "canamo-solidario.tk", true }, { "canaresidences.com", true }, { "canaria.ga", true }, - { "canariasport.com", true }, + { "canariasport.com", false }, { "canariculturacolor.com", true }, + { "canary.city", true }, { "canaryaspets.com", true }, { "canarymod.net", true }, { "canarypower.tk", true }, { "canarys.cf", true }, + { "canastasderegalointernacionales.com", true }, { "canavilage.com", true }, { "canavillage.net", true }, { "canavillagepuntacana.com", true }, @@ -24142,6 +28404,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "canberraoutletcentre.com.au", true }, { "canberrarunners.org.au", true }, { "cancan.ml", true }, + { "cancer-info.org", true }, + { "cancer.gov", true }, { "canceraid.coach", true }, { "canceraid.com", true }, { "canceraid.com.au", true }, @@ -24151,13 +28415,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cancertherapy.tk", true }, { "cancomputers.hn", true }, { "cancunhealthers.ga", true }, + { "cancunvacationexperts.com", true }, { "candaceplayforth.com", true }, { "candas.tk", true }, { "candelaguatemala.tk", true }, { "candelec.com", false }, { "candex.com", true }, - { "candguchocolat.com", true }, { "candicecity.com", false }, + { "candicedarepornstar.com", true }, { "candidasa.com", true }, { "candidateexperiencemarketing.nl", true }, { "candidatlibre.net", true }, @@ -24177,6 +28442,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "candyalexa.net", true }, { "candyboulevard.tk", true }, { "candybouquet.tk", true }, + { "candybygrant.com", true }, + { "candydol.xyz", true }, { "candydoll11.com", true }, { "candydoll12.com", true }, { "candydoll13.com", true }, @@ -24186,6 +28453,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "candydoll7.com", true }, { "candydoll8.com", true }, { "candydoll9.com", true }, + { "candyflavor.com", true }, + { "candykidsentertainment.co.uk", true }, + { "candykurs.ru", true }, { "candylion.rocks", true }, { "candypalace.tk", true }, { "candysailing.ml", true }, @@ -24194,60 +28464,88 @@ static const nsSTSPreload kSTSPreloadList[] = { { "candyxs.org", true }, { "canecorsodogguide.com", true }, { "canek.es", false }, + { "canelaimobiliaria.com.br", true }, { "canellayachts.com", true }, - { "caneminder.com", true }, + { "caneswarning.com", true }, { "canetelareal.tk", true }, { "canfazz.com", true }, { "canfield.gov", true }, + { "canfleet.ca", true }, + { "canfleet.com", true }, + { "canfleet.info", true }, + { "canfleetglobal.com", true }, + { "canfleetlogistics.com", true }, { "cangku.in", true }, { "cangurin.com", true }, { "canhas.report", true }, { "canhazip.com", true }, { "canhq.tk", true }, - { "canhtuaone.com", false }, + { "canhtuaone.com", true }, { "cani-compostelle.fr", true }, - { "canidaerd.com", true }, + { "canibrowse.net", true }, + { "canidelite-toulouse.fr", true }, { "canihavesome.coffee", false }, { "canile.it", true }, { "caninecompilation.com", true }, + { "caninejournal.com", true }, { "caniuse.email", true }, { "canjo.gov", true }, + { "cankado.com", true }, { "canker.org", true }, { "cankhon.tk", true }, { "cankirihaber.tk", true }, + { "cankutahya.com.tr", true }, + { "canlidiziizlesene.org", true }, + { "canliradyodinle.fm", true }, { "canlitelefonhatti.ga", true }, { "canlom.tk", true }, { "canmipai.com", true }, + { "canmypet.net", true }, { "cannabis-marijuana.com", true }, - { "cannabiscare.ca", true }, + { "cannabisdiscounter.ca", true }, + { "cannabishouseyeg.com", true }, { "cannabislegality.info", true }, + { "cannabisoffers.net", true }, { "cannabisreports.org", true }, { "cannabistraininguniversity.com", true }, { "cannabiz.tk", true }, + { "cannabytes.net", true }, { "cannacards.ca", true }, { "cannagoals.com", true }, { "cannamaca.com", true }, - { "cannarobotics.com", true }, + { "cannamx.online", true }, { "cannaseedsonline.com", true }, + { "cannature.eu", true }, { "cannedcyberlabs.org", true }, { "cannellecitron86-biomonde.fr", true }, + { "canningcityfc.org.au", true }, { "canningpartners.com.au", true }, { "cannoli.london", true }, + { "cannon.org.cn", true }, { "cannoncountytn.gov", true }, + { "cannonriverwatershedmn.gov", true }, + { "canntinas.com", false }, { "cannyfoxx.me", true }, { "canobag.es", true }, + { "canondrivers-support.com", true }, + { "canondrivers.org", true }, { "canonisti.fi", true }, { "canoonic.se", true }, { "canopy.ninja", true }, { "canopycleaning.com.au", true }, { "canopycleaningmelbourne.com.au", true }, + { "canopyservicing.com", true }, { "canopytax.com", true }, - { "canormanyaran.com", true }, + { "canossagardens.org.au", false }, { "canossahospital.org.au", true }, { "canovamedical.co.uk", true }, { "canovamedical.com", true }, { "canperclinicaveterinaria.com", true }, { "canrarantra.tk", true }, + { "canstar.co.nz", true }, + { "canstar.com.au", true }, + { "canstarblue.co.nz", true }, + { "canstarblue.com.au", true }, { "cansworld.com", true }, { "cantaloupe.ga", true }, { "cantalupo.tk", true }, @@ -24262,38 +28560,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "canterburycrest.org", true }, { "canterburynh.gov", true }, { "canters.tk", true }, - { "cantik.co", true }, - { "cantinhodapetala.com.br", true }, + { "cantinhodabia.com", true }, + { "cantongroup.com", true }, { "cantonmi.gov", true }, + { "cantonmopolice.gov", true }, { "cantonms.gov", true }, + { "cantoo.fr", true }, { "cantor.cloud", true }, { "cantosdisidentes.tk", true }, { "cantrack.com", true }, { "cantstopart.com", true }, - { "canttboardpachmarhi.org", true }, { "canukseeds.com", true }, { "canuluduz.tk", true }, + { "canv4s.com", true }, { "canva-dev.com", true }, + { "canva-staging.cn", true }, + { "canva-staging.com", true }, { "canva.cn", true }, { "canva.com", true }, { "canvas-art.tk", true }, + { "canvaspersonalized.com", true }, { "canveganseat.com", true }, - { "canwehavefun.com", true }, { "canyoncreekjeep.com", true }, - { "canyons.media", false }, { "canyonshoa.com", true }, + { "canyontx.gov", true }, + { "canyou.ai", true }, + { "canyou.com.au", true }, { "canyoupwn.me", true }, - { "canyouseethemnow.com", true }, { "cao.bi", true }, { "cao.gov", true }, { "cao.la", true }, + { "caocao.cf", true }, { "caodecristachines.com.br", false }, { "caodesantohumberto.com.br", true }, - { "caos.ch", true }, + { "caos.ch", false }, + { "caoshanhu.com", true }, + { "caoshe.com", true }, { "caostura.com", true }, + { "caoyao.com", true }, + { "caozuo.com", true }, + { "cap-study.com", true }, + { "cap21-lrc.fr", true }, + { "cap50.be", true }, { "cap73.fr", true }, + { "cap75.com", true }, { "capa.digital", true }, - { "capachitos.cl", false }, { "capacityproject.org", true }, { "caparicasurfing.com", true }, { "caparicasurflessons.com", true }, @@ -24301,6 +28612,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capatech.co", true }, { "capctury.com", true }, { "capeannpediatrics.com", true }, + { "capebretonpiper.com", true }, { "capecod.gov", true }, { "capecoral.gov", true }, { "capecycles.co.za", true }, @@ -24309,6 +28621,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capellan.pe", true }, { "capellen.tk", true }, { "capeprivacy.com", false }, + { "capetown.travel", true }, + { "capetownelite.co.za", true }, { "caph.info", true }, { "caphane.com", true }, { "caphapupolas.ga", true }, @@ -24324,12 +28638,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capital-match.com", true }, { "capitalcap.com", true }, { "capitalcollections.org.uk", true }, - { "capitalgyan.com", true }, + { "capitalcounselor.com", true }, + { "capitalendurancegroup.com", true }, { "capitalibre.com", true }, + { "capitalindustrygroup.com.au", true }, + { "capitalise.ai", true }, { "capitalism.party", true }, { "capitalism.rip", true }, { "capitalist.cf", true }, - { "capitaliz.io", true }, { "capitalmarkets.online", true }, { "capitalmatters.cf", true }, { "capitalmatters.ga", true }, @@ -24339,25 +28655,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capitalmedicals.co.nz", true }, { "capitalnativenations.org", true }, { "capitaloneshopping.com", true }, + { "capitalontap.com", true }, { "capitalp.jp", true }, { "capitalpay.ml", true }, + { "capitalpipeline.tech", true }, { "capitalquadatv.org.nz", true }, { "capitalrooms.ga", true }, { "capitalroomsers.ga", true }, { "capitalscum.tk", true }, + { "capitalsejours.fr", true }, { "capitalspiderers.ga", true }, { "capitalstakepool.info", true }, { "capitaltruepartner.hk", true }, { "capitaltruepartnertechnology.cn", true }, + { "capitalwin.com", true }, { "capitan.ml", true }, { "capitanbeilinson.tk", true }, { "capitapeskanova.tk", true }, { "capitein.tk", true }, + { "capitolavenue62.co.in", true }, + { "capitolcounseling.net", true }, + { "capitolnational.com", true }, { "capitolpathways.org", true }, { "capitolrisk.tk", true }, { "capitoltrades.com", true }, + { "capitone.fr", true }, { "caplinbouncycastles.co.uk", true }, - { "capoeiravillenavedornon.fr", true }, { "caponte.io", true }, { "caporalmktdigital.com.br", true }, { "capota.tk", true }, @@ -24365,10 +28688,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cappp.cz", true }, { "capradip.in", false }, { "capriccio.to", true }, - { "caprice-holdings.co.uk", true }, { "caprichosdevicky.com", true }, { "caprigo.ru", true }, - { "capris.cr", true }, + { "capris.cr", false }, + { "capro.global", true }, { "caps-hats.tk", true }, { "caps.equipment", true }, { "caps.is", true }, @@ -24381,23 +28704,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "capstansecurity.co.uk", true }, { "capstansecurity.com", true }, { "capsuladigital.tk", true }, + { "capsulafinanciera.com", true }, { "capsule.org", false }, { "capsulekitchen.co", true }, { "capsulezone.tk", true }, { "captain-dandelion.com", true }, + { "captain-droid.com", true }, { "captainark.net", true }, + { "captainchef.net", true }, { "captainclaw.tk", true }, - { "captainfit.in", true }, + { "captainclinic.com.tw", true }, { "captainjanks.tk", true }, - { "captainpassword.com", true }, { "captainratnesh.tk", true }, { "captainscarlet.tk", true }, + { "captainsinn.com", true }, + { "captainsonic.com", true }, { "captainsunshine.tk", true }, { "captalize.com", true }, { "captivationscience.com", true }, { "captivationtheory.com", true }, { "capturapp.com", false }, - { "capture-app.com", true }, { "capturebilling.com", true }, { "captured-symphonies.com", true }, { "capturelead.tk", true }, @@ -24412,13 +28738,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "car-dismantling.tk", true }, { "car-expresso.com", true }, { "car-forums.com", true }, + { "car-hire-lisbon.com", true }, { "car-keys.tk", true }, { "car-market.tk", true }, { "car-seats-store.ga", true }, { "car-speed.tk", true }, { "car-touch.tk", true }, { "car.info", true }, - { "car24.de", true }, { "car24portal.de", true }, { "car3d.gq", true }, { "cara-bisnis.tk", true }, @@ -24433,51 +28759,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caralarm.cf", true }, { "caralarm.tk", true }, { "caraliadeluxe.net", true }, + { "caralina.com", true }, + { "caramelldansen.com", true }, { "caramellespinell.tk", true }, - { "caranya.my.id", true }, - { "carassure.de", true }, + { "caramplifier.com", true }, + { "caratennison.net", true }, { "carauctionnetwork.com", true }, { "carauctionsalabama.com", true }, { "carauctionscarolina.com", true }, { "carauctionsgeorgia.com", true }, { "carauctionsillinois.com", true }, + { "carauctionsnewyork.com", true }, { "caraudiostore.tk", true }, { "caravaca.tk", true }, { "caravansciences.tk", true }, - { "caravanserail.info", true }, { "caravelairclub.tk", true }, { "caraz.tk", true }, { "carballeira.tk", true }, + { "carbaza.ru", true }, { "carberra.io", true }, { "carberra.xyz", true }, + { "carbeso.co.network", true }, + { "carbeso.site", true }, + { "carbgrent.com", true }, { "carbon-project.org", true }, { "carbon.coop", true }, { "carbon12.org", true }, { "carbon12.software", true }, { "carbonadvantage.tk", true }, + { "carbonaphta.com", true }, { "carboncountypa.gov", true }, + { "carbondix.com", true }, { "carboneventsupport.be", true }, { "carboneventsupport.lu", true }, { "carbonholic.org", true }, { "carbonkiller.org", true }, { "carbonlib.com", false }, + { "carbonmapper.org", true }, { "carbonmonoxidelawyer.net", true }, { "carbonnel.me", true }, { "carbono.uy", true }, - { "carbonopuro.es", true }, + { "carbonopuro.es", false }, { "carbonswap.exchange", true }, { "carbonswap.finance", true }, { "carbontv.com", true }, { "carbonvision.cn", false }, - { "carburetorcycleoi.com", true }, - { "carbuzz.com", true }, { "carcani.com", false }, { "carcare.net.au", true }, { "carcatron.org", true }, { "carceloinfierno.tk", true }, { "carcheck123.com", true }, { "carck.co.uk", true }, - { "carck.uk", true }, { "carcleannord.de", true }, { "carclinichn.com", true }, { "carcloud.ch", true }, @@ -24487,19 +28819,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cardanalysisers.ga", true }, { "cardano.eco", true }, { "cardanoinvestment.com", true }, - { "cardanpolska.pl", true }, { "cardbouns.tk", true }, { "cardcaptorsakura.jp", true }, { "carddelivery.com", true }, { "cardexaminerers.ga", true }, { "cardexaminerest.ga", true }, - { "cardexchangesolutions.com", false }, { "cardiaccane.com", true }, { "cardiagnose.nl", true }, { "cardiagnostics.tk", true }, + { "cardiffjobs.org", true }, + { "cardiffmoneyman.com", true }, { "cardinauto.fr", true }, { "cardingforum.co", true }, { "cardington.tk", true }, + { "cardinus.com", true }, { "cardioagainstcancer.nl", true }, { "cardioai.com", true }, { "cardiology.academy", true }, @@ -24515,39 +28848,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cardmarketersest.ga", true }, { "cardmart.tk", true }, { "cardmates.com.br", true }, + { "cardmates.net", true }, + { "cardmates.org", true }, + { "cardmates.ua", true }, { "cardmetricsers.ga", true }, { "cardmetricsest.ga", true }, - { "cardoneshop.it", true }, { "cardoni.net", true }, { "cardpaymentoptions.com", true }, - { "cardpress.com.br", true }, { "cardpyramiders.ga", true }, { "cardranking.jp", true }, { "cardrecovery.fr", true }, - { "cardsbymaria.com", true }, + { "cards4jobs.com", true }, { "cardschat.com", true }, { "cardsolutionsbh.com.br", true }, { "cardstesting.tk", true }, { "cardstream.com", true }, { "cardtrekers.ga", true }, { "cardtrekest.ga", true }, + { "cardtronics.com", true }, { "cardwar.tk", true }, { "cardwars.hu", true }, { "care-pack.eu", true }, { "care-q.net", true }, { "care4all.com", true }, + { "care4homecare.nl", true }, { "careapp.com.au", true }, + { "carear.com", true }, + { "carecm.de", true }, { "career-conduct.jp", true }, + { "career-guidance.com", true }, { "careerandjobsearch.tk", true }, { "careercapital.co.za", true }, { "careerdiary.co.uk", true }, + { "careerfoundry.com", true }, + { "careergigo.com", true }, { "careergo.org", true }, + { "careernet.in", true }, { "careeroptionscoach.com", true }, + { "careerpower.co.in", true }, + { "careersinpsychology.org", true }, { "careertransformed.com", true }, - { "careerwatchlist.com", true }, - { "carefully.com.au", false }, + { "carefix.pro", true }, + { "carefree-creative.com", true }, { "carefy.ph", true }, - { "caregiverchecks.com", true }, { "carehomejob.co.uk", true }, { "careium.co.uk", true }, { "carekleen.com.au", true }, @@ -24557,62 +28900,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carepan.ga", true }, { "carepassport.com", true }, { "caresco.nl", true }, - { "carescorp.com", true }, - { "carespanclinic.ph", true }, + { "careshields.sg", true }, + { "carespot.com", true }, { "carespottravelmedicine.mobi", true }, + { "caretaker.com", true }, + { "carethehealth.com", true }, + { "caretoyou.com", true }, { "caretta.co.uk", true }, { "carevic.eu", true }, { "carevo.id", true }, { "careyohio.gov", true }, - { "careyshop.cn", true }, + { "careyolsen.com", true }, { "carezza.net", true }, { "carezzaperu.com", true }, + { "carfamily.com", true }, + { "carfashion.com.mx", true }, { "carfax.ca", true }, + { "carfaxcanadaappgateway.azurewebsites.net", true }, { "carfinancehelp.com", true }, { "carfinans.ru", true }, { "carforme.gr", true }, { "carfraemill.co.uk", true }, + { "cargo.build", true }, { "cargobas.com", true }, { "cargobay.net", true }, { "cargoio.com", true }, { "cargomaps.com", true }, + { "cargomatic.com", true }, { "cargorestraintsystems.com.au", true }, { "cargosapiens.com.br", true }, { "cargotariff.ml", true }, + { "cargotransinfo.ru", true }, { "carhunters.cz", true }, - { "caribbean-tekton.com", true }, - { "caribbean.dating", true }, + { "cari.com.my", true }, + { "caribank.org", true }, { "caribbeancinemas.com", true }, { "caribbeanexams.com", true }, { "caribbeansolutionslab.com", true }, { "caribeeficiente.com.co", true }, { "caribuku.tk", true }, { "caricature.fr", true }, - { "carien.eu", false }, + { "caricatureavenue.com", true }, + { "carien.eu", true }, + { "carif-idf.net", false }, + { "carigami.fr", true }, { "cariki.gq", true }, { "carikiv.gq", true }, { "carillon.tk", true }, { "carinaklijn.nl", true }, { "carine.ml", true }, + { "caringkitsforkids.org.uk", true }, { "caringmedicine.ga", true }, { "caringpups.com", true }, - { "carinsurance.es", true }, { "carinsuranceliveest.ga", true }, { "carintegrado.com.co", true }, { "carinthia.eu", true }, { "carioca-romania.ro", true }, { "cariocabelos.com.br", true }, + { "cariproperti.com", true }, { "carisenda.com", true }, { "carium.com", true }, + { "carkeysanantonio.com", true }, { "carkeysystem.com", true }, { "carl-blum-haus.tk", true }, - { "carl-topham.com", true }, + { "carl-topham.com", false }, { "carl.land", true }, { "carlansell.co.uk", true }, { "carlaschiavone.tk", true }, + { "carlasecrets.com", true }, + { "carlbwade.us", true }, { "carlcsaposs.com", true }, - { "carlesjavierre.com", true }, { "carlesribot.tk", true }, + { "carleycounselingservices.com", true }, { "carlgo11.com", true }, { "carlicahn.com", true }, { "carlife-at.jp", true }, @@ -24654,16 +29013,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carloshmoreira.com", true }, { "carlosjeurissen.com", true }, { "carlosjeurissen.nl", true }, - { "carlosmfalves.eu", true }, { "carlospiga.fr", true }, { "carlosvelezmarketing.com", true }, { "carlot-j.com", true }, { "carlovanwyk.com", true }, { "carls-fallout-4-guide.com", true }, { "carlsbadluxuryhotels.ga", true }, - { "carlssoninnovation.se", true }, + { "carlsonsw.com", true }, { "carltonelitetravel.ga", true }, { "carltontownfc.tk", true }, + { "carlysgarden.net", true }, { "carmageddon.tk", true }, { "carmarthenradiocontrolledcarclub.tk", true }, { "carmela.tk", true }, @@ -24675,6 +29034,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carmeni.tk", true }, { "carmeny.org", true }, { "carmineforsheriff.com", true }, + { "carminemastropierro.com", true }, { "carna.tk", true }, { "carnageheart.tk", true }, { "carnagevisors.tk", true }, @@ -24682,7 +29042,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carnavaldeltoro.tk", true }, { "carnavales.tk", true }, { "carnavalinrothem.tk", true }, + { "carneddau.cymru", true }, { "carnedelmercado.com", true }, + { "carnell.com", true }, { "carnet-du-voyageur.com", true }, { "carnetdeconducir.club", true }, { "carni.tk", true }, @@ -24691,17 +29053,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carnildo.com", true }, { "carnivalcostumes.tk", true }, { "carnivalkingsupplies.com", true }, + { "carnivorediet.gr", true }, { "carnivorousplants.co.uk", true }, { "carobme.de", true }, { "carocream.org", true }, { "caroes.be", true }, { "caroffer.ch", true }, + { "carohq.com", true }, + { "caroillab.com", true }, { "caroinstitute.cf", true }, { "carol-lambert.com", true }, { "carolcappelletti.com", true }, { "carolcestas.com", true }, - { "caroleblouin.ca", true }, - { "caroletolila.com", true }, { "caroli.biz", true }, { "caroli.com", true }, { "caroli.info", true }, @@ -24709,54 +29072,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caroli.net", true }, { "carolicious.tk", true }, { "carolina.cz", true }, - { "carolinacybercenter.com", true }, { "carolinaharboe.baby", true }, { "carolinaharboe.com", true }, - { "carolinalamujerdehoy.com.gt", true }, { "carolinaoliveira.tk", true }, + { "carolinarice.com", true }, { "carolinasaddictionfellows.com", true }, + { "carolinashoe.com", true }, { "carolinavarletaarriagada.tk", true }, - { "carolinavein.com", true }, { "carolineball.com", true }, + { "carolinebazin.fr", true }, { "carolineeball.com", true }, { "carolinegirvan.com", true }, { "carolinehanania.com", true }, - { "carolinelanthier.com", true }, + { "carolinehoule.com", true }, + { "carolinelanglois.fr", true }, { "carolineovercash.com", true }, { "carolinepleuvret.fr", true }, - { "carollmed.ro", true }, { "carolmolinari.tk", true }, { "carontetourist.hr", true }, { "carontetouristisoleminori.it", true }, + { "carottage-beton.com", true }, { "carousel.ga", true }, { "carouselbuses.co.uk", true }, { "carouselinsights.com", true }, { "carp-world.tk", true }, { "carp-zeeland.tk", true }, { "carp4life.tk", true }, - { "carparo.net", true }, - { "carpeleo.com", true }, + { "carparo.net", false }, { "carpeleo.mobi", true }, { "carpeleo.se", true }, { "carpentersvilleil.gov", true }, - { "carpentrybyallen.com", true }, { "carpet24.gr", true }, { "carpetandhardwoodflooringpros.com", true }, { "carpetcleanerswilmington.com", true }, - { "carpetcleaningprofessionals.co.uk", true }, - { "carpetcleaningtomball.com", true }, + { "carpetcleaning-cypress.com", true }, { "carpetcobblers.ga", true }, { "carpio.tk", true }, { "carplanet.ae", true }, { "carplus.es", true }, { "carplus.net", true }, + { "carportus.com", true }, + { "carpostal.com", true }, { "carprice.auction", true }, + { "carprice.ru", true }, + { "carproof.com", true }, { "carpticon.tk", true }, { "carpuya.ga", true }, { "carrabiners.tk", true }, + { "carraboucrafts.com", true }, { "carre-jardin.com", true }, { "carre-lutz.com", true }, + { "carre.nl", true }, { "carrecovery.co.uk", true }, + { "carrefour.ro", true }, { "carrelageetmosaique.fr", true }, { "carreraspopularescalendario.com", true }, { "carriage.fun", true }, @@ -24773,20 +29141,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carrollcotne911.gov", true }, { "carrollcountyil.gov", true }, { "carrollcountyiowa.gov", true }, + { "carrollcountynh.gov", true }, { "carrollcountynhdeeds.gov", true }, { "carrolltontx.gov", true }, { "carroseletricosbh.com.br", true }, { "carrosserie-delaval.be", true }, { "carrouselcompany.fr", true }, + { "carrozzeria.roma.it", true }, { "carrozziere.roma.it", true }, + { "carrumhealth.com", true }, { "carry.luxe", true }, { "carryvanbruggen.tk", true }, + { "cars-project.ru", true }, { "cars4salecy.com", true }, { "carseatchecks.ca", true }, { "carshippingcarriers.com", true }, { "carsinsuranceis.com", true }, + { "carsmate.com", true }, { "carsoft.tk", true }, - { "carson-aviation-adventures.com", true }, { "carson-matthews.co.uk", true }, { "carsonca.gov", true }, { "carsonkoziol.com", true }, @@ -24796,6 +29168,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "carspneu.cz", true }, { "carsreborn.com", true }, { "carstar.com.ua", true }, + { "carstub.com", true }, + { "carsurance.net", true }, { "carsworld.cf", true }, { "cartadeviajes.cl", true }, { "cartadeviajes.co", true }, @@ -24812,54 +29186,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cartago.co.cr", true }, { "cartaisapre.com", true }, { "cartaodigi.com", true }, + { "carte-resident.ci", true }, { "cartegrise.com", true }, { "cartegrise.xyz", true }, { "carteles.tk", true }, - { "cartellimax.it", true }, { "cartelloni.roma.it", true }, { "cartercountymo.gov", true }, { "carterdan.net", true }, + { "carterjonas.co.uk", true }, + { "carterkosturos.com", true }, { "carterstad.se", true }, - { "cartertonscouts.org.nz", false }, + { "cartertonscouts.org.nz", true }, { "cartes-voyance.fr", true }, + { "cartesfrance.fr", true }, { "cartfilm.tk", true }, { "cartft.com", true }, { "carthedral.com", true }, { "cartierplan.ga", false }, - { "carto.la", true }, { "cartomancieperso.tk", true }, { "cartongesso.roma.it", true }, { "cartons-cheap.tk", true }, { "cartooncastles.ie", true }, + { "cartooncollections.com", true }, + { "cartoonlists.com", true }, + { "cartoonstock.com", true }, + { "cartoontube69.com", true }, + { "cartoonvibe.com", true }, { "cartoonwap.tk", true }, { "cartoradio.fr", true }, { "cartorios.tk", true }, { "cartoservice.tk", true }, { "cartouche24.eu", true }, + { "cartridge.bg", true }, { "cartridge.gq", true }, { "cartridgereviewers.ga", true }, { "cartridgereviewsers.ga", true }, { "cartridgereviewsest.ga", true }, { "cartridgesave.co.uk", true }, - { "cartridgeworldme.com", true }, { "cartturbo.com", true }, { "cartucce24.it", true }, { "cartuchoonline.com.br", true }, { "cartunings.tk", true }, { "cartwrightrealestate.com", true }, + { "carty.bg", true }, + { "carun.us", false }, + { "carunion.nl", true }, + { "carus.com", true }, { "carver.tk", true }, { "carvercountymn.gov", true }, + { "carvoeiro-car-hire.com", true }, { "carwashdruten.nl", true }, { "carwashkampen.nl", true }, { "carwreckcowboy.com", true }, + { "caryl.fr", true }, + { "carymedicalgroup.com", true }, { "caryvilletn.gov", true }, { "cas-chauxdefonds.ch", false }, - { "casa-app.de", true }, + { "cas-ebbers.nl", true }, { "casa-brel.ml", true }, + { "casa-carla.it", true }, { "casa-due-pur.com", true }, { "casa-due-pur.de", true }, { "casa-due.com", true }, - { "casa-familia.com", true }, + { "casa-indigo.com", true }, { "casa-laguna.net", true }, { "casa-lunch-break.de", true }, { "casa-lunchbreak.de", true }, @@ -24869,26 +29258,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casaasia.es", true }, { "casaasia.eu", true }, { "casabella.com.tw", true }, - { "casabitare.it", true }, - { "casaboix.es", true }, + { "casacampolima.com", true }, + { "casacapalbio.com", true }, { "casacazoleiro.com", true }, { "casachameleonhotels.com", true }, + { "casachronicles.com", true }, { "casacochecurro.com", true }, { "casacoleccionistagaldar.tk", true }, + { "casacolosseo.com", true }, + { "casacomcharme.com.br", true }, { "casacoscolo.tk", true }, - { "casact.org", true }, + { "casadalaura.com", true }, { "casadasmolas.tk", true }, - { "casadasportasejanelas.com", true }, { "casadedios.tk", true }, { "casadegomes.com", true }, { "casadetiteres.tk", true }, { "casadoarbitro.com.br", true }, { "casadomarketingdigital.com.br", true }, - { "casadomus.de", true }, { "casadopulpo.com", true }, { "casaessencias.com.br", true }, { "casafina.tk", true }, { "casagami.ga", true }, + { "casagyn.com.br", true }, + { "casaibericadeli.com.au", true }, { "casajeannine.tk", true }, { "casalacabra.com", true }, { "casalborgo.it", true }, @@ -24902,21 +29294,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casamarrom.com.br", false }, { "casamentos.com.br", true }, { "casamentos.pt", true }, - { "casametrica.com", true }, { "casamiento.com.uy", true }, { "casamientos.com.ar", true }, { "casandraemge.tk", true }, - { "casanovafishtacos.com", true }, { "casanuova.tk", true }, + { "casaoggidomani.it", true }, { "casapalla.com.br", true }, { "casapedra.tk", true }, + { "casaplorer.com", true }, { "casaruralsantamaria.tk", true }, - { "casasincreibles.com", true }, + { "casasbandeirantes.com.br", true }, + { "casasensunbridge.com", true }, + { "casashops.com", true }, { "casasparaperross.com", true }, { "casasuara.com", true }, { "casasuleletrodomesticos.com.br", true }, { "casatendeiro.tk", true }, - { "casaunnuevosonido.com", true }, { "casavacanze.estate", true }, { "casavaleria.tk", true }, { "casavlas.ro", true }, @@ -24933,17 +29326,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cascd.pt", true }, { "case-vacanza-salento.com", true }, { "case3d.ro", true }, + { "case4you.bg", true }, + { "case4you.ro", true }, { "casecandy.in", true }, - { "casecoverkeygi.com", true }, { "casecurity.org", true }, + { "caseform.de", true }, { "caseificio.roma.it", true }, { "caselemnbarat.ro", true }, { "casemaka.com", true }, { "caseof.fr", true }, + { "casepariurionline.ro", true }, { "caseplus-daem.de", true }, { "casertanews.it", true }, { "cases.lu", true }, { "casetech.com", true }, + { "casewarecloud.com", true }, + { "caseycalvertpornstar.com", true }, { "caseycapitalpartners.com", true }, { "casgp.com", false }, { "cash-bot.tk", true }, @@ -24955,15 +29353,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cashamerican.tk", true }, { "cashati.com", true }, { "cashbackcow.us", true }, + { "cashbacksummit.com", true }, { "cashblog.ga", true }, { "cashbook.co.tz", true }, - { "cashbot.cz", true }, { "cashbot.sk", true }, + { "cashbuild.co.za", true }, { "cashcode.ga", true }, { "cashcoin.tk", true }, + { "cashconverters.co.uk", true }, + { "cashconverters.com", true }, + { "cashconverters.com.au", true }, { "cashdo.co.il", true }, { "cashdrop.ga", true }, { "cashenvoy.com", true }, + { "cashewmanufacturers.com", true }, { "cashflowstrategist.com", false }, { "cashforcarremovalsipswich.com.au", true }, { "cashfortulsahouses.com", true }, @@ -24972,10 +29375,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cashlogic.ch", false }, { "cashmanagerbg.com", true }, { "cashmaxtexas.com", true }, + { "cashola.com.br", true }, + { "cashortrade.org", true }, + { "cashper.de", true }, { "cashplk.com", true }, { "cashregistry.tk", true }, { "cashsector.ga", true }, - { "cashsmartbookkeeping.co.za", true }, + { "cashservices.com.au", true }, + { "cashwave.com", true }, { "cashworks.ga", true }, { "cashworks.tk", true }, { "cashyourcar.sydney", true }, @@ -24988,15 +29395,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casino-cash-flow.ru", true }, { "casino-cash-flow.su", true }, { "casino-cashflow.ru", true }, + { "casino-hero.de", true }, { "casino-online.info", true }, + { "casino-r.com", true }, + { "casino-spelletjes.com", true }, { "casino-trio.com", true }, - { "casino-z.com", true }, + { "casino-z-top.ru", true }, + { "casino.guide", true }, { "casino.org", true }, - { "casinobee.com", true }, + { "casinobonus360.de", true }, { "casinobonuscodes365.com", true }, { "casinobuyersguide.com", true }, - { "casinocash-flow.ru", true }, - { "casinocashflow.pro", true }, { "casinocashflow.ru", true }, { "casinocashflow.su", true }, { "casinocashflow.xyz", true }, @@ -25109,36 +29518,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casinocity.web.za", true }, { "casinocity.ws", true }, { "casinocitytimes.com", true }, + { "casinocosmopol.se", true }, { "casinocrit.com", true }, { "casinodays.com", true }, { "casinofollower.com", true }, + { "casinohex.co.nz", true }, + { "casinohex.co.za", true }, + { "casinohex.org", true }, + { "casinohex.se", true }, { "casinoleader.com", true }, { "casinolegal.pt", true }, { "casinolistings.com", true }, + { "casinologinaustralia.com", true }, { "casinomucho.com", true }, { "casinomucho.org", true }, { "casinomucho.se", true }, - { "casinoonline39.com", true }, + { "casinonieuws.nl", true }, { "casinoonlineprova.com", true }, { "casinoportugal.pt", true }, { "casinopromote.com", true }, { "casinoreal.com", true }, + { "casinoreviews.net.nz", true }, { "casinorewards.info", true }, { "casinorobots.com", true }, + { "casinosanalyzer.com", true }, { "casinosblockchain.io", true }, + { "casinoscout.ca", true }, + { "casinoscout.nl", true }, + { "casinoslotsww.com", true }, + { "casinosnederland.com", true }, { "casinospesialisten.net", true }, - { "casinospilnu.dk", true }, { "casinotokelau.tk", true }, + { "casinotop10.net", true }, { "casinotopplistan.com", true }, { "casinotopplisten.com", true }, { "casinotopsonline.com", true }, + { "casinoua.club", true }, + { "casinovalley.ca", true }, { "casinovendors.com", true }, - { "casinovergleich.com", true }, { "casio-caisses-enregistreuses.fr", true }, - { "casio.bg", true }, + { "casio.bg", false }, { "casitawn.cf", true }, { "casjay.cloud", false }, { "casjay.com", false }, + { "casjay.info", false }, { "casko-insurance.tk", true }, { "casman.tk", true }, { "casnoviatownshipmi.gov", true }, @@ -25149,12 +29572,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caspi.org.il", true }, { "caspianrentcar.com", true }, { "caspicards.com", true }, - { "cass.cz", true }, { "casscoroadmi.gov", true }, { "casscountyia.gov", true }, { "casscountyil.gov", true }, { "casscountymn.gov", true }, + { "casscountyne.gov", true }, { "cassembly.fr", true }, + { "cassia.gov", true }, { "cassies.com.au", true }, { "cassilandianoticias.com.br", true }, { "cassimo.com", false }, @@ -25165,15 +29589,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cast-london.co.uk", true }, { "castagnino.net", true }, { "castagnola.tk", true }, + { "castagnonavocats.com", true }, { "castalie.tk", true }, - { "castan-dichtungstechnik.de", true }, { "castaneatownshippa.gov", true }, { "castaneda.tk", true }, + { "castedart.com", true }, + { "castelflowers.it", true }, { "castella.tk", true }, { "castellet.tk", true }, { "castelletto.tk", true }, + { "castelli-media.de", true }, { "casteloinformatica.com.br", true }, { "castelsardo.tk", true }, + { "casterleyrock.com", true }, { "castglobal-china.biz", true }, { "casthull.co.uk", true }, { "castiana.xyz", true }, @@ -25185,7 +29613,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "casting-vote.tk", true }, { "castingallaitaliana.com", true }, { "castingfrancais.com", true }, + { "castingnetworks.com", true }, { "castings.tk", true }, + { "castit.biz", true }, { "castlabs.com", false }, { "castle-emarketing.com", true }, { "castle-engine.io", true }, @@ -25207,6 +29637,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "castrovirreyna.tk", true }, { "casualclubdating.ml", true }, { "casualiswebs.com", true }, + { "casuallab.com", true }, + { "casuallyblue.xyz", true }, { "casualtime.ga", true }, { "casusgrillcaribbean.com", true }, { "cat-encyclopedia.ml", true }, @@ -25224,29 +29656,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "catalog-serverov.ml", true }, { "catalog-serverov.tk", true }, { "catalog-underwear.tk", true }, - { "catalog.beer", true }, { "catalogador.ml", true }, { "catalogcomputerhardware.tk", true }, { "catalogingpro.com", true }, { "catalogobiblioteca.com", true }, { "catalogobiblioteca.net", true }, { "catalogosvirtualesonline.com", true }, + { "catalogueau.com", true }, { "catalojic.tk", true }, { "catalonia.tk", true }, - { "catalyconv.com", true }, + { "catalyseurs-territoriaux.org", true }, { "catalyst-ecommerce.com", true }, { "catalystapp.co", true }, { "catandmoonalchemy.com.au", true }, { "cataniatoday.it", true }, { "catanzarotoday.it", true }, { "catapa.com", true }, - { "catapultecommunication.com", true }, { "catapultgroup.ca", true }, { "catarrhalfuns.tk", true }, { "catartofsweden.se", true }, { "catastrofy.tk", true }, + { "catatanviral.com", true }, { "catatau.tk", true }, { "catawiki.com", true }, + { "catawiki.de", true }, + { "catawiki.net", true }, + { "catawiki.nl", true }, { "catb.on.ca", true }, { "catbat.rocks", true }, { "catbeautifulanimal.tk", true }, @@ -25255,6 +29690,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "catbox.moe", true }, { "catboys.com", true }, { "catbull.com", true }, + { "catcafe.gg", true }, { "catcat.cc", true }, { "catcatnya.com", true }, { "catchall.tw", true }, @@ -25271,17 +29707,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caterbing.com", true }, { "catering-fantasia.tk", true }, { "catering-xanadu.cz", true }, - { "cateringvanhetland.nl", true }, - { "cateromarket.pl", true }, + { "catfish.gq", true }, { "catfishworld.tk", true }, { "catfood.cf", true }, { "catfood.ga", true }, + { "catfooddispensersreviews.com", true }, { "catfoto.cf", true }, + { "catfun-foto.de", true }, { "catgarden.tk", true }, + { "catgirl.cloud", true }, + { "catgirl.land", true }, { "catharinalingeries.com.br", true }, { "catharinaparkieten.tk", true }, - { "catharisme.net", true }, - { "catharisme.org", true }, + { "catharinaziekenhuis.nl", true }, { "cathcartandwinn.com", true }, { "cathcartconsulting.com.au", true }, { "cathedralappointments.co.uk", true }, @@ -25290,7 +29728,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cathelp.cn", true }, { "cathelp.xyz", true }, { "catherinejf.com", true }, - { "catherinejflee.com", true }, { "catherinesarasin.com", true }, { "catherinesofpartick.co.uk", false }, { "catholic8964.org", true }, @@ -25325,26 +29762,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "catmash.tk", false }, { "catmatchers.org", true }, { "catme.org", true }, + { "catmonad.xyz", true }, { "catmoose.ca", true }, { "catmoz.fr", true }, { "catnetworks.co.jp", true }, { "catnmeow.com", true }, + { "catphysics.com", true }, { "catpic.xyz", true }, { "catplay.tk", true }, { "catprincess.com.tw", true }, + { "catprint.com", true }, { "catpumpsonline.com", true }, { "catram.org", true }, { "catransportation.net", true }, - { "catrybayart.com", true }, + { "catrins-kunst.de", true }, + { "cats-dom.ru", true }, { "catscreativecakes.ga", true }, - { "catskillselfstorage.com", false }, + { "catskillselfstorage.com", true }, { "catsmagic.pp.ua", true }, { "catsnow.com", true }, { "catsofcapetown.com", true }, { "catsoft.me", true }, { "catstv.tk", true }, - { "catsuae.com", true }, { "catsystemsaustralia.com.au", true }, + { "cattaingroup.com", true }, { "cattellar.tk", true }, { "cattery-mundilfari.tk", true }, { "cattery.work", true }, @@ -25356,8 +29797,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cattsgym.co.uk", true }, { "catu-bikes.se", true }, { "catus.moe", true }, + { "catvibers.me", true }, { "catvsmice.com", true }, { "catwilliford.com", true }, + { "catylist.com", true }, { "catz-productions.tk", true }, { "caucasusandmercury.com", true }, { "caucus.fr", true }, @@ -25369,7 +29812,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "caulong-ao.net", true }, { "caumont-normandie.fr", true }, { "cauquenes.tk", true }, + { "causeandeffectessaytop.com", true }, { "cavac.at", true }, + { "cavalassur.com", true }, { "cavaleirocity.com.br", true }, { "cavaliernd.gov", true }, { "cavallochiropractic.com", true }, @@ -25380,20 +29825,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cavediverharry.com", true }, { "cavemax.com", true }, { "cavenderhill.com", true }, - { "cavern.tv", true }, + { "cavialand.de", true }, + { "caviarbarlv.com", true }, + { "caviarmultimedia.com", true }, { "cavinesswealth.com", true }, { "cavisson.com", true }, { "cavistenancy.fr", true }, { "cavzodiaco.com.br", true }, + { "caw.be", true }, { "cawagiras.ga", true }, { "caxaa.mx", true }, - { "caxalt.com", true }, { "caycehouse.com", true }, - { "caylercapital.com", true }, { "cazadordebuenaonda.com", true }, { "cazaviajes.es", true }, { "cazes.info", true }, { "cazfire.gov", true }, + { "cazinoz.ru", true }, + { "cazizi.com", true }, { "cazoo-dev.co.uk", true }, { "cazoo-dev.com", true }, { "cazoo-test.co.uk", true }, @@ -25403,7 +29851,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cb-crochet.com", true }, { "cb1388.com", true }, { "cb1588.com", true }, + { "cba.gov.pl", true }, { "cbaamaga.com", true }, + { "cbbio.fr", true }, { "cbc-hire.co.uk", true }, { "cbca.gov", true }, { "cbcembalagens.com.br", true }, @@ -25412,7 +29862,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cbcnet.co.za", true }, { "cbcnet.info", true }, { "cbd-natural.de", true }, - { "cbd.casa", true }, + { "cbd-world-online.com", true }, { "cbd.supply", true }, { "cbd181.com", true }, { "cbd2050.com", true }, @@ -25423,42 +29873,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cbdd.eu.org", true }, { "cbddo.gov.tr", true }, { "cbdeighty.com", true }, - { "cbdessence.net", false }, { "cbdev.de", true }, { "cbdication.com", true }, { "cbdlession.com", true }, - { "cbdmarket.space", true }, { "cbdoilcures.co", true }, { "cbdtelegram.com", true }, - { "cbdvillage.co.uk", true }, { "cbecrft.net", true }, + { "cbet.lt", true }, { "cbflleida.cat", true }, { "cbh.org", true }, + { "cbhcfl.gov", true }, { "cbhq.net", true }, { "cbi-epa.gov", true }, { "cbin168.com", true }, { "cbintermountainrealty.com", true }, { "cbiq.com.iq", true }, + { "cbk.kg", true }, + { "cbl.sk", true }, { "cblocallocksmiths.co.uk", true }, { "cbmanager.dk", true }, { "cbmc.store", true }, - { "cbmkenya.or.ke", true }, { "cbmusa.com", true }, - { "cbncuritiba.com", false }, { "cbnegocial.com.br", true }, { "cboard.ml", true }, + { "cboard.net", true }, + { "cboost.nl", true }, + { "cboss.xyz", true }, + { "cbozarks.com", true }, + { "cbpay.com", true }, { "cbpridecenter.org", true }, { "cbr-rcb.ca", true }, { "cbr-xml-daily.ru", true }, { "cbrbuildingrepairs.com.au", true }, { "cbrtrainer.com", true }, + { "cbs.nl", true }, { "cbt.quest", true }, { "cbt.tj", true }, + { "cbtest.de", true }, { "cbw.sh", true }, { "cbxp.in", true }, { "cby.im", false }, { "cc-customer.de", true }, - { "cc.edu.rs", true }, + { "cc.ag", true }, { "cc.hn", true }, { "cc00228.com", false }, { "cc5197.co", true }, @@ -25470,12 +29926,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cc9297.co", true }, { "cc9397.com", false }, { "cc9728.co", true }, + { "cc98.eu.org", true }, + { "cca.ky", true }, { "ccaa.gg", true }, - { "ccaag.link", true }, { "ccaag.me", true }, - { "ccaag.mx", true }, { "ccaag.net", true }, + { "ccaag.us", false }, { "ccac.gov", true }, + { "ccad.edu", true }, { "ccaguavivadonaciones.org", true }, { "ccaj.io", true }, { "ccak.training", true }, @@ -25483,14 +29941,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ccatpracticetest.com", true }, { "ccatpracticetests.com", true }, { "ccattestprep.com", true }, + { "ccautomobil.de", true }, { "ccayearbook.com", true }, { "ccb.gov", true }, { "ccbin.tk", true }, { "ccc-ch.ch", true }, { "ccc-checker.cn", true }, { "ccc-cloud.de", true }, + { "ccc-ffm.de", true }, + { "ccc.eu", true }, { "ccc.gov", true }, + { "ccc.org", true }, { "ccc.xxx", true }, + { "cccc.loan", true }, { "cccleaner.tk", true }, { "cccp-o.tk", true }, { "cccpublishing.com", true }, @@ -25500,45 +29963,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ccdgaia.pt", false }, { "ccdiscussion.com", true }, { "ccdlab.ooo", true }, - { "ccdnederland.org", true }, + { "ccdnederland.org", false }, + { "ccdohnj.gov", true }, { "ccea.fi", true }, + { "cceifame.com", true }, { "ccelectricaldrafting.ca", true }, { "cceputnam360.com", true }, { "ccestaque.tk", true }, - { "ccgn.co", true }, { "ccgx.de", true }, { "cchat.de", true }, { "cchim.ca", true }, { "cciiblog.tk", true }, - { "ccl-sti.ch", false }, + { "ccimindia.org", true }, + { "cciofficial.com", true }, + { "cck-law.com", true }, + { "ccl776o.tk", false }, { "cclasabana.com.co", true }, { "ccli.com", true }, - { "ccn.com", true }, + { "ccmg.com", true }, { "ccnadesdecero.com", true }, + { "ccnbikes.com", true }, + { "ccnda.net", true }, + { "ccnda.org", true }, { "ccnexus.global", true }, { "ccnm.cc", true }, - { "ccoooss.com", true }, + { "ccoo.cat", true }, { "ccover.ru", true }, { "ccpaas.net", true }, { "ccparishwilmington.org", true }, + { "ccpdata.org", true }, + { "ccpe.net", true }, { "ccpetmotel.com", true }, { "ccpinturas.com", true }, { "ccpinvestments.com", true }, + { "ccplot.org", true }, { "ccprwebsite.org", true }, - { "ccr.ovh", true }, { "ccrun.tk", true }, { "ccsaposs.com", true }, { "ccshire.ga", true }, { "ccsk.training", true }, { "ccskills.org.uk", true }, + { "ccslt.org.nz", true }, { "ccsource.org", true }, { "ccsrv.eu", true }, { "ccsys.com", true }, { "cctf-m.com", false }, + { "cctld.com", true }, { "cctv-camera.cf", true }, { "cctv-supraveghere.ro", true }, { "cctv-systems.tk", true }, - { "cctvdubai.com", true }, { "cctvlaw.ga", true }, { "cctvsecurityjohannesburg.co.za", true }, { "cctvview.info", false }, @@ -25547,93 +30020,119 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ccv-deutschland.de", false }, { "ccv.eu", false }, { "ccv.nl", false }, + { "ccvr6smarthome.de", true }, { "ccwallet.io", true }, { "ccwebdevelopment.com", true }, { "ccxperience.com", true }, - { "ccxsta.com", true }, { "cd-shopware.de", true }, { "cd-sport.com", true }, { "cd.search.yahoo.com", false }, - { "cda-aigle.ch", true }, + { "cda-aigle.ch", false }, { "cdaid.gov", true }, { "cdaldeano.tk", true }, - { "cdasenegal.com", true }, { "cdasiaonline.com", false }, + { "cdasphalt.com", true }, { "cdavis.xyz", true }, { "cdawoerden.org", true }, { "cdbf.ch", false }, { "cdbp.pro", true }, { "cdbtech.com", true }, - { "cdburnerxp.se", true }, { "cdc-security.com", true }, + { "cdc.cx", false }, { "cdc.gov", true }, + { "cdcflix.xyz", true }, + { "cdconnect.net", true }, { "cdcpartners.gov", true }, + { "cdd.go.th", false }, { "cdda.ch", false }, { "cdeeply.com", true }, + { "cdf-neuville.com", true }, + { "cdf-neuville.fr", true }, + { "cdf.fyi", true }, { "cdf.wiki", true }, { "cdfnature2019.fr", true }, + { "cdg30.fr", true }, + { "cdga.org", true }, + { "cdhb.health.nz", true }, { "cdhome.ga", true }, { "cdhqt.com", true }, { "cdigitale.com", true }, { "cdirectory.tk", true }, + { "cdkeyprices.com", true }, { "cdkpatterns.com", true }, { "cdkrot.me", true }, + { "cdlandb1.com", true }, { "cdlaserena.tk", true }, + { "cdlgoods.com", true }, { "cdlinares.tk", true }, { "cdmdisinfestazioni.it", true }, { "cdmhp.org.nz", true }, { "cdmon.tech", true }, + { "cdn-reichelt.de", true }, { "cdn.ampproject.org", true }, { "cdn.ink", true }, - { "cdn1shweflix.xyz", true }, - { "cdn6.de", true }, { "cdnaval.tk", true }, { "cdncompanies.com", true }, { "cdndepo.com", true }, { "cdnjs.com", true }, - { "cdns.cloud", true }, + { "cdnrecords.com", true }, { "cdnsys.net", true }, + { "cdny.de", true }, { "cdnya.com", true }, { "cdo.gov", true }, { "cdocs.ml", true }, { "cdom.de", true }, { "cdp-poznan.pl", true }, + { "cdpn.io", true }, { "cdrom.ch", true }, { "cds-infra.de", true }, { "cds-inquirer.tk", true }, { "cdscsuc.gq", true }, { "cdseditora.com.br", true }, { "cdsf.tk", true }, + { "cdsfinancial.ca", true }, { "cdshining.com", false }, { "cdsportal.uk", true }, + { "cdt.cz", true }, { "cdt.org", false }, - { "cdu-gebhardshain.de", true }, - { "cduckett.net", true }, + { "cdto.work", true }, { "cdusapps.eu.org", true }, + { "cduspages.eu.org", true }, { "cdvl.org", true }, { "ce-agentur.de", false }, - { "ce-pimkie.fr", true }, + { "ce-na.ru", true }, { "ce-tuifrance.com", true }, { "ce-webdesign.de", true }, + { "cea.ru", true }, { "ceafinney.com", true }, + { "ceannard.net", true }, + { "cearaagora.com.br", true }, + { "cearl.cc", true }, + { "ceatheneum.com", true }, + { "ceaunulbunicii.ro", true }, { "ceba-cuec.ca", true }, + { "cebolinha-imaginaria.com", true }, { "cebrita.tk", true }, + { "cec.org.es", true }, + { "cec.org.pt", true }, { "cecalivo.tk", true }, { "cecame.ch", true }, { "cecamericas.com", true }, - { "cecil.coop", true }, + { "cecilandlou.com", true }, { "ceciledekock.tk", true }, { "cecilga.gov", true }, - { "cecilgreens.org", true }, { "cecilia-online.nl", true }, { "ceciliacolombara.com", true }, + { "cecilsheriffmd.gov", true }, + { "cecilstatesattorneymd.gov", true }, { "cecilwalker.com.au", false }, + { "cecipu.gob.cl", true }, { "ceco.cf", true }, { "ced-services.nl", true }, { "ceda-fi.tk", true }, - { "cedac.com.br", true }, { "cedarcitydining.com", true }, { "cedarcountyne.gov", true }, + { "cedarcoveassistedliving.com", true }, { "cedarlife.ca", true }, { "cedarmanagementgroup.com", true }, { "cedarrockalliance.com", true }, @@ -25641,25 +30140,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cedricbonhomme.org", true }, { "cedriccassimo.ch", false }, { "cedriccassimo.com", false }, - { "cedricwalter.ch", true }, - { "cee.io", true }, + { "cedricpim.com", true }, { "cee3.net", true }, { "ceebee.com", true }, { "ceecosmetic.com.br", true }, { "ceefaastresources.com", true }, + { "ceenic.ltd", true }, { "ceet.biz", true }, { "ceetzie.net", true }, + { "ceew.in", true }, + { "cefi.work", true }, + { "cefonline.com", true }, { "cegfw.com", true }, { "cegss.org.gt", true }, { "ceiba.com.co", true }, + { "ceicer.eu", true }, + { "ceidf-vie-cooperative.fr", true }, + { "ceiexam.sg", true }, { "ceifx.com", true }, { "ceilimoss.tk", true }, { "ceilingpac.org", true }, + { "ceinorme.it", true }, { "ceiphr.com", true }, { "cejgsd.org", true }, { "cejhon.cz", false }, + { "cejky.cz", true }, { "cekabajio.com", true }, { "cekgacor.com", true }, + { "cekgacor.net", true }, { "celadas.tk", true }, { "celarsports.fr", true }, { "celayix.com", true }, @@ -25667,8 +30175,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "celcomhomefibre.com.my", true }, { "cele.bi", true }, { "celebavirus.com", true }, + { "celebcritics.com", true }, { "celebdaily.ga", true }, { "celebi-forest.tk", true }, + { "celebjacket.com", true }, + { "celebjury.com", true }, { "celebmasta.com", true }, { "celebrasianconference.com", true }, { "celebrate-creativity.com", true }, @@ -25687,35 +30198,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "celebritypics.club", true }, { "celebrityscope.net", true }, { "celebritysrit.tk", true }, + { "celebritytoob.com", true }, { "celebritytopnews.tk", true }, - { "celebslovebrand.com", true }, { "celebxx.com", true }, { "celectro-pro.com", true }, { "celendo.ga", true }, { "celeraindustries.tk", true }, + { "celestestarpornstar.com", true }, { "celestia.tk", true }, + { "celestialdental.com", true }, { "celestialenergies.com.au", true }, - { "celestialisms.com", true }, { "celestialmusic.tk", true }, { "celex-machinery.tk", true }, { "celexa365.tk", true }, { "celiac.com", true }, - { "celiendev.ch", false }, - { "celigo.com", true }, + { "celinaohiopd.gov", true }, { "celine-patisserie.fr", true }, { "celineitalia.tk", true }, + { "celinepsychotherapie.com", true }, { "celinesrecipes.com", true }, { "cellboost.cf", true }, { "cellebrite.com", true }, { "cellecci.com", true }, { "cellgames.com", true }, { "celliberate.co.uk", true }, - { "cellini.name", true }, + { "cellnatsci.com", true }, { "cellopasorobles.com", true }, { "cellrg.org", true }, { "cellsheet.me", true }, + { "cellsites.nz", true }, { "celltek-server.de", true }, - { "celltesequ.com", true }, { "celltick.com", true }, { "celltraders.ga", true }, { "cellufit.ga", true }, @@ -25726,24 +30238,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "celluliteremovaldiet.com", true }, { "cellulitetreatment.tk", true }, { "cellypso.com", true }, + { "celphy.net", true }, { "celseven.com", true }, { "celsoazevedo.com", true }, { "celtacad.tk", true }, - { "celtadigital.com", true }, { "celti.ie.eu.org", true }, { "celti.name", true }, { "celticangel.org", true }, + { "celticconnections.com", true }, { "celticdream.tk", true }, { "celtigafutbolclub.com", true }, { "celulares.com", true }, { "celuliteonline.com", true }, + { "cemac.int", true }, + { "cemarks.com", true }, { "cemcerkez.com", true }, + { "cementplas.es", false }, { "cementscience.com", true }, { "cemetary.tk", true }, { "ceml.ch", true }, { "cemporcentocliente.com.br", true }, + { "cemregulveren.com", true }, { "cenatorium.pl", true }, - { "cencalvia.org", false }, { "cendata.co.uk", true }, { "cendi.gov", true }, { "cendis.cz", true }, @@ -25762,15 +30278,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centenariodeuncampeon.tk", true }, { "centenera.tk", true }, { "centennialrewards.com", true }, - { "centennialseptic.com", true }, - { "centenodigital.es", true }, { "center-elite.ml", true }, - { "center-surgery.ru", true }, + { "center-mts.ru", true }, + { "center-strategy.ru", true }, { "centeragro.com.br", true }, { "centerforamericangreatness.com", true }, - { "centergate.se", true }, + { "centergate.se", false }, + { "centerhancockin.gov", true }, + { "centerharbornh.gov", true }, + { "centerlogic.com", true }, { "centermk.ru", true }, - { "centerpereezd.ru", false }, + { "centeronhunger.org", true }, { "centerperson.org", true }, { "centerpoint.ovh", true }, { "centerpointwest.com", true }, @@ -25784,6 +30302,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centr.dn.ua", true }, { "central-apartman.tk", true }, { "central4.me", true }, + { "centralbank.ae", true }, + { "centralbank.ie", true }, { "centralbetsers.ga", true }, { "centralbetsest.ga", true }, { "centralcityjuniorkindergarten.com", true }, @@ -25791,67 +30311,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centralcoasthomeloans.com.au", true }, { "centralconvergence.com", true }, { "centralcountiesservices.org", false }, + { "centraldegovernanca.com.br", true }, + { "centraldeseguro.com.br", true }, { "centraldoencanador.com.br", true }, - { "centrale-vapeur.pro", false }, + { "centrale-vapeur.pro", true }, { "centralebigmat.eu", true }, { "centralegedimat.eu", true }, + { "centralesnucleaires.fr", true }, { "centralex.io", true }, { "centralfor.me", true }, { "centralhome.com", true }, { "centralhq.tk", true }, + { "centralisgroup.com", true }, { "centralitasbaratas.es", true }, { "centralkladno.cz", true }, { "centrallaketownshipmi.gov", true }, { "centrallead.net", true }, + { "centrallondonaesthetics.co.uk", false }, { "centralmarket.com", true }, { "centralmissourifoundationrepair.com", true }, { "centralnic.com", true }, { "centralnicregistry.com", true }, { "centralpaellera.com", true }, + { "centralpinesnc.gov", true }, { "centralsite.tk", true }, { "centralsoft.tk", true }, { "centralspyers.ga", true }, { "centralstatecu.org", true }, { "centralstor.ga", true }, + { "centraltoken.io", true }, { "centralvalleyharness.org", true }, { "centralvoice.org", true }, { "centrationgame.com", true }, - { "centre-de-support.fr", true }, + { "centre-commercial.fr", true }, { "centre-equestre.net", true }, { "centre-maiakovski.fr", true }, - { "centre-momboye.fr", false }, { "centreagree.com", true }, + { "centreal.gov", true }, { "centrecountyvotes.gov", true }, - { "centredaccueil.fr", false }, { "centreimageriedunord.com", true }, - { "centreon.com", true }, + { "centremanagement.eu", true }, + { "centrenationaldulivre.fr", true }, { "centrepointorguk-dev.azurewebsites.net", true }, + { "centrepresseaveyron.fr", true }, { "centretownshipin.gov", true }, { "centricagency.co.uk", true }, - { "centricbeats.com", true }, { "centricient.com", true }, { "centriqo.com", true }, - { "centrius.be", true }, { "centrmebeli.by", false }, { "centroavant.com", true }, { "centroculturalostuncalco.tk", true }, + { "centrodavida.com.br", true }, { "centrodeeportesbarco.tk", true }, { "centrodefisioterapia.com.br", true }, + { "centrodemediacionconcepcion.cl", true }, + { "centrodememoriahistorica.gov.co", true }, { "centrodemioma.com.br", true }, { "centroecuestrecastellar.com", true }, - { "centrojovencuenca.es", true }, + { "centrofotostudija.lt", true }, { "centrolavoro.org", true }, { "centromedico.tk", true }, + { "centromotion.com", true }, { "centrooftalmologicomg.com.br", true }, - { "centroperugia.gr", true }, + { "centropagina.it", true }, { "centros.ml", true }, { "centros.tk", true }, { "centrosocialferrel.pt", true }, + { "centrselstroy.ru", true }, { "centrum-bz.it", true }, { "centrum-edukacji.tk", true }, { "centrum.church", true }, { "centrumgarten.de", true }, { "centrumhodinek.cz", true }, + { "centrumkulturyslowianskiej.pl", true }, { "centrumpieknairelaksu.pl", true }, { "centrumpodpora.pl", true }, { "centruvechisv.ro", true }, @@ -25863,6 +30395,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centsiwallet.com", true }, { "centum.no", true }, { "centumail.com", true }, + { "centura.de", true }, + { "centuria.co.nz", true }, + { "centuria.com.au", true }, { "centurialeonina.com", true }, { "centurion-consulting-cie.eu", true }, { "centurion-consulting.eu", true }, @@ -25872,39 +30407,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "centurion-meet.site", true }, { "centurion.ovh", true }, { "centurioninfosec.com", false }, + { "centurionlaboratories.com.ua", true }, + { "centurionunderground.com", true }, + { "century21.es", true }, + { "century21.pt", true }, { "centuryfighters.tk", true }, { "centuryforum.tk", true }, { "centurykiaparts.com", true }, { "centurylink.cf", true }, - { "centurymedicaldental.com", true }, + { "centurystudios.com", true }, { "ceomonthlyest.ga", true }, { "ceopedia.org", true }, - { "cepapk.com", false }, { "cepek4d.com", true }, { "cephalexin.ga", true }, { "cephalexincapsules.ml", true }, { "cephalexincapsules.tk", true }, { "cephalexine.gq", true }, + { "cepheid.com", false }, { "cepmarket.com.tr", false }, { "ceprenomnexistepas.ovh", true }, { "cepsychologie.com", true }, - { "ceptamircisi.com", true }, { "cepxuo.tk", true }, - { "ceraelec.com", true }, { "ceramahit.ru", true }, { "ceramic-glazes.com", true }, { "ceramica.roma.it", true }, { "ceramiche.roma.it", true }, { "ceramicoatingspecialists.com", true }, + { "cerammind.com", true }, + { "ceranity.au", true }, { "cerastar.com", true }, { "cerber.re", true }, - { "cerber.us", true }, - { "cerberis.com", true }, { "cerberusecurity.com", true }, + { "cerberusftp.com", true }, + { "cerbos.cloud", true }, + { "cerbottana.dedyn.io", true }, { "cerbottana.duckdns.org", true }, - { "cerbus.nl", true }, - { "cerby.com", false }, + { "cercanos.co", true }, { "cercidiana.pt", true }, + { "cercle-duclos.fr", true }, + { "cercle-helvetia.ch", true }, { "cerda-avocats.com", true }, { "cerebelo.info", true }, { "cerebrosano.gov", true }, @@ -25916,17 +30457,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ceremonybydesign.com.au", true }, { "cerena-silver.ru", false }, { "ceres-corp.org", true }, - { "ceria.studio", true }, + { "cerezacomunicacion.com", true }, { "cerivo.co.uk", true }, { "cermak.photos", true }, { "cernac.cz", true }, { "cernakova.eu", true }, { "cernalistina.eu", true }, - { "cerno-ps.com", true }, - { "cerocosto.com", true }, - { "ceroresiduo.com", true }, + { "cernko.de", true }, + { "cerok.cl", true }, + { "ceroresiduo.com", false }, { "cerovica.tk", true }, { "cerpus-course.com", true }, + { "cerquitamio.com", true }, { "cerrajeriaamericadelquindio.com", true }, { "cerrajeriaenvillavicencio.com", true }, { "cerritosca.gov", true }, @@ -25937,35 +30479,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cert.je", true }, { "cert.or.id", true }, { "cert.se", true }, + { "certain.com", false }, { "certainbiz-news.tk", true }, { "certaintelligence.com", true }, + { "certaireland.ie", true }, + { "certasenergy.co.uk", true }, { "certbus.com", true }, + { "certcenter.com", false }, { "certevia.com", true }, { "certfa.com", true }, + { "certfica4u.com", true }, { "certidao-nascimento-pt.org", true }, + { "certidaonc.com.br", true }, { "certificatedetails.com", true }, { "certificateoflogistics.ga", true }, { "certificateofpurchasing.ga", true }, { "certificatespending.com", true }, { "certificatetools.com", false }, + { "certificationmap.com", true }, { "certificato-prevenzione-incendi.it", true }, { "certificazione.it", true }, { "certificazioni-energetiche.it", true }, { "certified-parts.com", true }, - { "certifiedblk.com", true }, + { "certifiedbb.com", true }, { "certifiedfieldassociate.com", true }, { "certifiedmerchandiseest.ga", true }, { "certifiednurses.org", true }, { "certifix.eu", true }, + { "certifylogin.com", true }, + { "certiquali.fr", true }, { "certivac.ch", true }, { "certly.co", true }, { "certnazionale.it", true }, + { "certo-escrow.com", true }, + { "certprep.fr", false }, { "certpro.uk", true }, { "certready.tk", true }, - { "certreg.eu", false }, + { "certreg.eu", true }, + { "certsign.fr", true }, { "certspotter.com", true }, { "certspotter.org", true }, { "certum.cn", true }, + { "certusquartz.com", true }, { "certyhukil.ga", true }, { "cervejista.com", true }, { "cervek.me", true }, @@ -25974,14 +30529,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cervenyjezek.eu", true }, { "cervera.com.br", true }, { "ces-ltd.co.uk", false }, - { "cesantias.co", false }, { "cesar-hector.tk", true }, + { "cesarecirugiaplastica.com", true }, + { "cesarfotos.com.br", true }, + { "cesarparedespacora.com", true }, { "cesarpinto.com", true }, { "cesarteixeiraimoveis.com.br", true }, { "cesboard.com", true }, { "cescfortuny.tk", true }, + { "cesclam.org", true }, { "cesdb.com", true }, { "cesenatoday.it", true }, + { "cesibo.com", true }, { "cesipagano.com", true }, { "cesium.ml", true }, { "ceska-polygraficka.cz", true }, @@ -25990,7 +30549,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ceskepivnesety.sk", true }, { "ceskepivnisety.cz", true }, { "cesobaly.cz", true }, + { "cesonia.io", true }, + { "cestasdepresente.com.br", true }, { "cestasedelicias.com.br", true }, + { "cestasencantopresentes.com.br", true }, { "cestaswmonline.com.br", true }, { "cestlaviegeorgia.com", true }, { "cestpasviolent.com", true }, @@ -25998,37 +30560,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cestujtenamiru.cz", true }, { "cestunamiru.cz", true }, { "cesurteknikservis.com", true }, + { "cesusc.edu.br", true }, + { "cetak.com.my", true }, { "cetamol.com", true }, { "cetelon.tk", true }, { "ceti.ga", true }, { "cetorebe.tk", true }, { "ceu.edu", false }, { "ceu.edu.ph", true }, - { "ceverett.io", true }, + { "ceva-dsp.com", true }, + { "cevaplari.net", true }, + { "ceverett.io", false }, { "cevin.at", true }, { "cevo.com.hr", true }, + { "cevrimicidiyet.com", true }, { "cevt.ar", true }, { "cewek.ml", true }, { "cewood.xyz", true }, + { "cexplorer.io", true }, { "ceyizlikelisleri.com", true }, + { "ceylonoffroaders.com", true }, { "cezdent.com", true }, { "cf-connect.nl", true }, { "cf-ide.de", true }, { "cf-tm.net", true }, + { "cf11.de", false }, { "cfa.gov", true }, { "cfan.space", true }, + { "cfar.org", true }, { "cfasync.ga", true }, + { "cfbenchmarks.com", true }, { "cfc-swc.gc.ca", true }, { "cfcbigideas.com", true }, - { "cfcontracting.com", true }, + { "cfchiropractic.com", true }, { "cfcpestcontrol.com", true }, { "cfcproperties.com", true }, { "cfda.gov", true }, + { "cfdata.lol", true }, { "cfdcre5.org", true }, + { "cfdtrading.com", true }, { "cfenns.ath.cx", true }, { "cfent.xyz", true }, + { "cfh.com", true }, { "cfigura.com", true }, - { "cfnewsinfra.net", true }, + { "cfnmpics.com", true }, { "cfno.org", true }, { "cfo.gov", true }, { "cfo4you.com", true }, @@ -26043,29 +30618,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cfse.biz", true }, { "cfsh.tk", true }, { "cfsrportal.org", true }, + { "cfst.eu.org", true }, + { "cftc.gov", true }, { "cftcarouge.com", false }, { "cfurl.cf", true }, { "cfxdesign.com", true }, { "cg-consult.fr", true }, { "cg-design.tk", true }, { "cg-n.fr", true }, - { "cg-systems.hu", true }, { "cg.al", true }, { "cg.search.yahoo.com", false }, { "cgal.org", true }, { "cgan.de", true }, { "cgan.pw", true }, - { "cgaro-amerstd.us", true }, { "cgbassurances.ch", false }, { "cgbf.org", true }, { "cgbh3.gq", true }, { "cgbproduction.tk", true }, { "cgbunch.com", true }, { "cgconsulting.digital", true }, + { "cgdct.moe", true }, + { "cgdquizzes.com", true }, { "cgelves.com", true }, { "cges.xyz", true }, { "cgestiona.com", true }, - { "cgf-charcuterie.com", true }, { "cgha.us", true }, { "cgionline.tk", true }, { "cgiq.ca", true }, @@ -26074,41 +30650,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cglib.xyz", true }, { "cgmbacklot.com", true }, { "cgminc.net", true }, + { "cgmllc.net", true }, { "cgmote.com", true }, - { "cgn-medienservice.de", true }, { "cgo-it.de", true }, { "cgp.moe", true }, { "cgpa-de.org", true }, - { "cgpe.com", true }, { "cgplumbing.com", true }, - { "cgps.xyz", true }, + { "cgpn.fr", true }, { "cgsmart.com", true }, + { "cgsociety.org", true }, { "cgstprayagraj.gov.in", true }, { "cgt-univ-nantes.fr", true }, - { "cgtburgos.org", true }, { "cgtcaixabank.es", true }, + { "cgtips.org", true }, + { "cgtsoft.com", true }, { "cgtv.ml", true }, { "cgtx.us", true }, { "cgu-ingenieria.tk", true }, { "cgunited.com", true }, - { "cgurtner.ch", true }, { "ch-ariege-couserans.fr", true }, { "ch-axlesthermes.fr", true }, { "ch-investor.tk", true }, { "ch-laborit.fr", true }, { "ch-poitiers.fr", true }, + { "ch-stjunien.fr", true }, { "ch-y.org", true }, { "ch.bzh", true }, { "ch.search.yahoo.com", false }, + { "ch225.com", true }, { "ch47f.com", true }, { "ch4bb.org", true }, { "cha-ta.com", true }, { "chaacantik.tk", true }, { "chaacker.tk", true }, - { "chabad360.me", true }, - { "chabadmyanmar.com", true }, { "chabaudparfum.com", true }, - { "chabik.com", true }, { "chaboisseau.net", true }, { "chacoonline.com.py", true }, { "chacraexperimental.com.py", true }, @@ -26119,19 +30694,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chadslive.com", true }, { "chadstoneapartments.com.au", true }, { "chadtaljaardt.com", true }, + { "chadwhitepornstar.com", true }, { "chagahq.com", true }, { "chaghi.tk", true }, { "chaghionline.tk", true }, + { "chagrindads.com", true }, { "chahal.blog", true }, { "chai-che.com", true }, { "chaidu.com", true }, { "chaifeng.com", true }, { "chaikaclub.tk", true }, + { "chaikinanalytics.com", true }, + { "chainataun.ru", true }, { "chainedunion.info", true }, - { "chainels.com", true }, + { "chainels.com", false }, { "chainex.io", true }, { "chainge-re.com", true }, + { "chaingpt.org", true }, { "chainlinkfencestlouis.com", true }, + { "chainslayer.com", true }, { "chainwhy.com", false }, { "chainz.tk", true }, { "chaip.org", true }, @@ -26140,9 +30721,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chaisystems.net", true }, { "chaitanyapandit.com", true }, { "chaizhikang.com", true }, - { "chajakraamzorg.com", true }, { "chakanaherb.be", true }, { "chalanbiltv.net", true }, + { "chaldal.com", true }, { "chalet-gerard.com", true }, { "chalet-maubuisson.tk", true }, { "chaletapartmentrentals.com", true }, @@ -26157,36 +30738,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "challengerinvestors.tk", true }, { "challenges.gov", true }, { "challengeskins.com", true }, + { "chalons-agglo.fr", true }, + { "chalonsenchampagne.fr", true }, { "chalov.ml", true }, { "chamartin.tk", true }, { "chamath.co.uk", true }, + { "chamath.eu", true }, { "chamath.ie", true }, { "chamath.link", true }, { "chamath.lk", true }, + { "chamath.no", true }, { "chamath.uk", true }, { "chamathinfotech.com", true }, { "chamathj.com", true }, { "chamber.sa", true }, - { "chamberlainpropertygroup.ca", true }, { "chamberlinfoundation.org", true }, { "chambermeansbusiness.com", true }, { "chambion.ch", false }, { "chameleon-ents.co.uk", true }, { "chameleon.io", true }, - { "chameth.com", false }, + { "chameth.com", true }, { "chamicro.com", true }, + { "chaminadeonline.org", true }, { "chamonixcamera.cn", true }, { "champagneandcoconuts.com", true }, + { "champagneandcoffeestains.com", false }, + { "champagneandshade.com", true }, { "champaigncountyclerkil.gov", true }, { "champaigncountyil.gov", true }, { "champdogs.co.uk", true }, { "champdogs.com", true }, - { "championbet.et", true }, { "championbet.ug", true }, { "championcastles.ie", true }, { "championnat-romand-cuisiniers-amateurs.ch", true }, { "champions.co", true }, - { "championsofpowerfulliving.com", true }, + { "championsofpowerfulliving.com", false }, { "championsofregnum.com", true }, { "championweb.co.nz", false }, { "championweb.com", false }, @@ -26197,9 +30783,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "champonthis.de", true }, { "champsglobal.org", true }, { "champslearning.co.uk", true }, - { "chamsochoa.com", false }, + { "champw.com", true }, + { "chamsocdidong.com", true }, { "chamudi.lk", true }, { "chamudi.net", true }, + { "chamurliyski.com", true }, { "chanakyanewz.com", true }, { "chanchi.idv.hk", true }, { "chanddriving.co.uk", true }, @@ -26207,8 +30795,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chandlerazpd.gov", true }, { "chandr1000.ga", true }, { "chandracenter.com", true }, - { "chandradeepdey.com", true }, { "chandramani.tk", true }, + { "chanelprestonpornstar.com", true }, { "change10000lives.com.ph", true }, { "changeactivation.com", true }, { "changeanalytics.us", true }, @@ -26216,24 +30804,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "changeforfuture.cf", true }, { "changemywifipassword.com", true }, { "changenow.io", true }, - { "changes.jp", true }, + { "changenow.world", true }, { "changesfor.life", true }, { "changethislater.com", true }, { "changetowellness.com", true }, + { "changeupinc.com", true }, + { "changing-cities.org", true }, { "chanhassenmn.gov", true }, { "chankin.tk", true }, { "channel", true }, { "channel-7.net", true }, + { "channelingranny.com", true }, { "channelist.tk", true }, - { "channelizer.tv", true }, { "channellife.asia", true }, { "channellife.co.nz", true }, { "channellife.com.au", true }, - { "channeloutfitters.com", true }, { "channingmotorsport.tk", true }, { "chantage.tk", true }, { "chantalguggenbuhl.ch", false }, - { "chantero.com", true }, + { "chantellbeauty.co.uk", true }, { "chantuong.org", true }, { "chanz.com", true }, { "chaos-darmstadt.de", true }, @@ -26257,12 +30846,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chaowan.cf", true }, { "chaoxi.io", true }, { "chaoxi.link", true }, + { "chaoyansuo.com", true }, + { "chaparral.com.au", true }, + { "chapatuweb.com", true }, { "chapek9.com", true }, { "chapel.tk", true }, { "chapelaria.tf", true }, { "chapelfordbouncers.co.uk", true }, + { "chapelhillobgyn.com", true }, { "chapelhousevet.co.uk", true }, { "chapelle.co.uk", true }, + { "chapellerie-traclet.com", true }, { "chapiteauxduleman.fr", true }, { "chapleau.ca", true }, { "chapmanstreeservice.com", true }, @@ -26270,25 +30864,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chapstick.life", true }, { "chaqueteros.tk", true }, { "char.press", true }, + { "character-count.com", true }, { "charbonnel.eu", true }, { "charcoal-se.org", true }, { "charcoalvenice.com", true }, { "chardik.tk", true }, { "charge.ga", true }, { "charge.gq", true }, - { "chargeless.io", true }, + { "chargebacks911.com", true }, + { "chargeover.com", true }, { "chargifi.com", true }, { "chargify.com", true }, { "chariots.tk", true }, { "charisma.ai", true }, + { "charismadesign.ie", true }, + { "charismaticgemeventsllc.info", true }, { "charitocracy.org", true }, { "charity.cz", true }, - { "charitylog.co.uk", true }, { "chariz.com", true }, { "charl.eu", true }, { "charlageneral.tk", true }, { "charleliphile.tk", true }, { "charlenevondell.com", true }, + { "charleroi-duty-free.com", true }, { "charles-darwin.com", true }, { "charles-migaud.fr", true }, { "charlesbordet.com", true }, @@ -26296,7 +30894,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charlescwcooke.com", true }, { "charlesdickens.tk", true }, { "charlesmarsan.com", true }, - { "charlespitonltd.com", true }, + { "charlesperkinsacademy.com.au", true }, { "charlesrogers.co.uk", true }, { "charlestonfacialplastic.com", true }, { "charlestonpersonalinjurylawyer.com", true }, @@ -26305,6 +30903,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charlie-liveshow.com", false }, { "charlie.im", true }, { "charlie4change.com", true }, + { "charliebighams.co.uk", true }, + { "charliebighams.com", true }, { "charlieblog.tk", true }, { "charliedillon.com", true }, { "charliegarrod.com", true }, @@ -26319,7 +30919,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charliez0.cf", true }, { "charliez0.ga", true }, { "charliez0.gq", true }, - { "charliez0.js.org", true }, { "charliez0.ml", true }, { "charliez0.tk", true }, { "charliez0sp.cf", true }, @@ -26330,10 +30929,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charlotte-touati.ch", true }, { "charlotteanne.tk", true }, { "charlottecountyva.gov", true }, + { "charlottejulienne.com", true }, + { "charlottemi.gov", true }, + { "charlottestokelypornstar.com", true }, { "charlottesvillegolfcommunities.com", true }, { "charlottesvillehorsefarms.com", true }, { "charlotteswimmingpoolbuilder.com", true }, { "charlubermensch.com", true }, + { "charlws.com", true }, { "charlylou.de", true }, { "charmander.me", true }, { "charmanterelefant.at", false }, @@ -26341,34 +30944,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "charming-powers.tk", true }, { "charmingarsehole.tk", true }, { "charmingsaul.com", true }, + { "charmpets.ru", true }, { "charnego.tk", true }, { "charolopezatelier.com", true }, { "charon.tk", true }, { "charonsecurity.com", true }, { "charpy.cc", true }, { "charqawi.tk", true }, - { "charr.xyz", true }, - { "chars.ga", false }, { "charset.org", true }, { "charta-digitale-vernetzung.de", true }, { "chartbox.tk", true }, { "charteredsurveyorinlondon.co.uk", true }, + { "charthop.com", true }, { "chartkick.com", true }, { "chartlands.org", true }, { "chartpixel.com", true }, { "chartsy.de", true }, + { "charuga.com.au", true }, { "charuni.ru", true }, { "charuru.moe", true }, - { "chasafilli.ch", true }, + { "chasalin.nl", true }, { "chascrazycreations.com", true }, + { "chase.co.nz", true }, { "chaseandzoey.de", true }, + { "chasecorp.com", true }, + { "chasecountyne.gov", true }, { "chasetrails.co.uk", true }, + { "chaskafire.gov", true }, { "chaskamn.gov", true }, + { "chaskapolice.gov", true }, { "chasoslov.tk", true }, { "chasse-au-tresor.eu", true }, + { "chasse-au-tresor.info", true }, + { "chasse-maree.com", true }, + { "chasseurdetruites.com", true }, { "chastitybelts.tk", true }, { "chat-buddy.com", true }, { "chat-cam.tk", true }, + { "chat-edu.org.uk", true }, { "chat-libera.com", true }, { "chat-porc.eu", true }, { "chat.cz", true }, @@ -26377,9 +30990,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chat40.net", true }, { "chat4me.tk", true }, { "chataberan.cz", true }, + { "chatacademies.org.uk", true }, { "chataynazz.ga", true }, { "chatbarran.tk", true }, { "chatbelgie.eu", true }, + { "chatbo.ai", true }, { "chatbo.de", true }, { "chatbot.one", true }, { "chatbotclic.com", true }, @@ -26387,6 +31002,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chatbots.email", true }, { "chatbots.systems", true }, { "chatcentral.tk", true }, + { "chatcontrol.se", true }, { "chatdoguaxinim.tk", true }, { "chatdrop.org", true }, { "chateau-belvoir.com", true }, @@ -26396,23 +31012,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chateau-patris.com", true }, { "chateauderoncourt.fr", true }, { "chateaudestrainchamps.com", false }, - { "chateaudevaugrigneuse.com", false }, - { "chatenespana.us", true }, + { "chateaulabrede.com", true }, + { "chatedit.org.uk", true }, + { "chatelaine.com", true }, { "chateroids.com", true }, { "chatforskning.no", true }, { "chatgayitalia.it", true }, + { "chatgen.ai", true }, + { "chatgptwith.me", true }, { "chatgratis40.it", true }, + { "chatgtd.net", true }, { "chathamcountync.gov", true }, { "chathamil.gov", true }, { "chathund.de", true }, + { "chatify.com", true }, { "chatinsieme.it", true }, { "chatkisskiss.tk", true }, { "chatkitty.com", true }, - { "chatkr.com", true }, { "chatline.cf", true }, { "chatline.ga", true }, { "chatline.ml", true }, { "chatlol.org", true }, + { "chatloupe.org", true }, { "chatmaus.ml", true }, { "chatnederland.eu", true }, { "chatomg.com", true }, @@ -26420,17 +31041,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chatopia.tk", true }, { "chatounerie.com", true }, { "chatovod.tk", true }, + { "chatphp.com", true }, { "chatpoint.tk", true }, { "chatreplay.stream", true }, + { "chatrisityodtong.com", true }, { "chatroomfans.tk", true }, { "chatshort.com", true }, { "chatsupport.co", true }, - { "chatsworthelectrical.com", true }, { "chatsworthil.gov", true }, { "chattahoocheefl.gov", true }, { "chattergallery.com", true }, + { "chatteron.io", true }, { "chatticketsers.ga", true }, - { "chattingorcheating.com", true }, { "chattogether.tk", true }, { "chattomania.it", true }, { "chatu.io", true }, @@ -26438,20 +31060,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chatucomputers.com", true }, { "chatup.cf", true }, { "chaturbate.com", true }, + { "chaturbate.eu", true }, { "chaturbate.global", true }, { "chaturbates.org", true }, - { "chaturbates.xyz", false }, + { "chaturfier.com", true }, { "chatvizor.tk", true }, { "chatweb.online", true }, { "chatzimanolis.com", false }, { "chatzimanolis.gr", true }, + { "chaudierecogeneration.com", true }, { "chauffage-budget.fr", true }, { "chaumiere.ddns.net", false }, { "chaurocks.com", true }, { "chaussenot.net", true }, { "chaussurerunning.fr", true }, { "chauvelcinema.com", true }, - { "chaveirochavetechlondrina.com.br", true }, + { "chaveirogrimaldi.com", true }, { "chaverde.org", true }, { "chazalet.fr", false }, { "chbs.me", true }, @@ -26459,6 +31083,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chcemradost.sk", true }, { "chch.it", true }, { "chcheaptech.nz", true }, + { "chcisezeptat.cz", true }, { "chckr.co", true }, { "chcoc.gov", true }, { "chcsct.com", true }, @@ -26470,19 +31095,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheap-colleges.com", true }, { "cheap-mattresses.co.uk", true }, { "cheapacyclovir.ml", true }, + { "cheapairfaresdeals.com", true }, { "cheapairfaresticket.com", true }, - { "cheapairplaneticket.biz", true }, + { "cheapairlinesuk.com", true }, { "cheapalarmparts.com.au", false }, + { "cheapandbesthosting.com", true }, { "cheapautoinsuranceblog.com", true }, { "cheapbloggingers.ga", true }, { "cheapchiaplotting.com", true }, { "cheapessay.net", true }, { "cheapestdirectdebit.co.uk", true }, { "cheapestgamecards.co.uk", true }, + { "cheapestgamecards.com", true }, + { "cheapestwordpress.com", true }, { "cheapexpenseers.ga", true }, { "cheapexpenseest.ga", true }, - { "cheapfarestouk.com", true }, - { "cheapfarestousa.com", true }, + { "cheapflightla.com", true }, + { "cheapflightmexico.com", true }, + { "cheapflightsengland.com", true }, + { "cheapflightsticketstoindia.com", true }, + { "cheapflightsunitedstates.com", true }, { "cheapgeekts.com", false }, { "cheapgoa.com", true }, { "cheapiesystems.com", true }, @@ -26505,8 +31137,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheapsyrupers.ga", true }, { "cheaptadalafil.tk", true }, { "cheapticket.in", true }, - { "cheapticketsfrom.com", true }, - { "cheaptravelmag.com", true }, { "cheaptucsoners.ga", true }, { "cheaptucsonest.ga", true }, { "cheapvaltrex.ml", true }, @@ -26524,6 +31154,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheatmasters.tk", true }, { "cheatomania.tk", true }, { "cheatraiders.tk", true }, + { "cheats.is", true }, { "cheatsupreme.com", true }, { "cheazey.co", true }, { "cheazey.net", true }, @@ -26532,6 +31163,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chebwebb.com", true }, { "checalaweb.com", true }, { "chechencity.tk", true }, + { "check-redirect.com", true }, { "check.torproject.org", false }, { "checkandreportlive.com", true }, { "checkblau.de", true }, @@ -26542,36 +31174,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "checkdithuis.nl", true }, { "checkecert.nl", true }, { "checkercab.tk", true }, + { "checkfreescore.com", true }, { "checkfresh.com", true }, { "checkiday.com", true }, + { "checkissuing.com", true }, { "checkjehuis.be", true }, { "checkjehuis.gent", true }, { "checkjelinkje.nl", true }, { "checklistbuilder.herokuapp.com", true }, - { "checklistuj.cz", true }, { "checkmack.cf", true }, { "checkmack.ga", true }, { "checkmack.gq", true }, + { "checkmarket.com", true }, { "checkmarx.com", true }, { "checkme.gq", true }, { "checkme.ml", true }, { "checkmedia.org", true }, { "checkmin.cf", true }, + { "checkmk.com", true }, { "checkmyessay.com", true }, + { "checkmyessays.com", true }, { "checkmyhttps.net", true }, { "checkmypsoriasis.com", true }, + { "checknetworks.com.au", true }, { "checkngo.com", true }, { "checkout.google.com", true }, { "checkr.com", true }, { "checkra.in", true }, { "checkras.tk", true }, { "checkrente.nl", true }, + { "checkreview.in", true }, + { "checkrobin.com", true }, { "checkrz.com", true }, { "checkspf.net", true }, - { "checkstubmaker.com", true }, { "checktls.nl", true }, { "checktype.com", true }, { "checkui.com", true }, + { "checkurinsurance.com", true }, + { "checkusernames.com", true }, { "checkyourmath.com", true }, { "checkyourprivilege.org", true }, { "checkyourreps.org", true }, @@ -26582,22 +31222,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cheekycharliessoftplay.co.uk", true }, { "cheela.org", true }, { "cheem.co.uk", true }, + { "cheerforace.com", true }, + { "cheerios.com", true }, { "cheers.bio", true }, { "cheese-storeroom.tk", true }, { "cheeseemergency.co.uk", true }, { "cheesefusion.com", true }, { "cheeseginie.com", true }, { "cheesypicsbooths.co.uk", true }, + { "cheeth.am", true }, + { "cheetham.me.uk", true }, + { "cheetham.social", true }, { "cheez.systems", true }, { "cheezflix.uk", true }, + { "chefaa.com", true }, { "chefcuisto.com", true }, + { "chefdehome.com", true }, { "chefforaday.it", true }, { "chefkoch.de", true }, + { "cheflindseyfarr.com", true }, { "chefnardulli.com", true }, { "chefpablito.tk", true }, + { "chefscraftgourmet.com", false }, { "chefshooba.com", true }, { "chefstricks.info", true }, { "chefsuccess.com", true }, + { "cheftasy.com", true }, { "cheguevaraclub.tk", true }, { "chehalemgroup.com", true }, { "cheholchik.tk", true }, @@ -26613,19 +31263,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chelpogoda.tk", true }, { "chelsea98.com", true }, { "chelseafs.co.uk", true }, + { "chelseagroton.com", true }, { "chelseahgaul.com", true }, + { "chelseaok.gov", true }, { "cheltenhambouncycastles.co.uk", true }, + { "cheltenhampa.gov", true }, { "cheltik.ru", true }, { "chelyaba.tk", true }, { "chem.digital", true }, { "chema.ga", true }, + { "chemaxon.com", true }, + { "chemeetconference.com", true }, { "chemgenes.com", true }, { "chemical-shark.de", true }, { "chemicalcrux.org", true }, { "chemicalguys-ruhrpott.de", true }, { "chemicalpharm.com", true }, { "chemicalromance.tk", true }, - { "chemie-schule.de", true }, + { "chemie-schule.de", false }, + { "cheminsderando.fr", false }, { "chemiphys.com", false }, { "chemistry-schools.com", true }, { "chemolak.pl", true }, @@ -26636,20 +31292,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chenequawi.gov", true }, { "cheneypartners.com", true }, { "cheng.pet", true }, - { "chengarda.com", true }, { "chengfayun.com", true }, { "chenghao360.top", true }, { "chengl.com", true }, { "chengmach.com", true }, + { "chengren.cf", true }, + { "chengren.ml", true }, { "chengta-money.com.tw", true }, { "chengxindong.com", true }, { "chengyutrading.com", true }, { "chenky.com", true }, { "chenna.me", true }, + { "chennai.nic.in", true }, + { "chennaimetrorail.org", true }, { "chennaiskills.cf", true }, { "chennien.com", true }, { "chennuo.xyz", true }, { "chenpei.org", true }, + { "chenqiang.com", true }, { "chentianyi.cn", true }, { "chenui.design", true }, { "chenx221.cyou", false }, @@ -26659,6 +31319,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chenzhi.idv.hk", true }, { "chenzhipeng.com.cn", true }, { "cheque-transitionactive.fr", true }, + { "chequeo.de", true }, { "chequeraccounting.com.au", true }, { "cheratocono.tk", true }, { "cherbourg.website", true }, @@ -26676,47 +31337,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cherokee.net.br", true }, { "cherokeecountyga.gov", true }, { "cherrett.digital", false }, + { "cherritravel.com", true }, { "cherry-green.ch", true }, { "cherry-handmade.ml", true }, { "cherryband.space", true }, { "cherrybread.net", true }, { "cherrycountyne.gov", true }, + { "cherrycredits.com", true }, + { "cherrycreeknorth.com", true }, { "cherryjimbo.sucks", true }, { "cherryonit.com", false }, { "cherryq.com.my", true }, { "cherubicsoft.com", true }, + { "cheryls.com", true }, { "cheryltweedy.tk", true }, { "cherysunzhang.com", true }, - { "chesapeakebank.com", false }, - { "chesapeakebaychristmas.com", true }, { "chesapeakecluttercontrol.com", true }, { "chesapeakeopticallab.com", true }, { "chesapeakewv.gov", true }, + { "chescommessa.it", true }, { "cheshirex.com", true }, - { "chessboardao.com", true }, { "chessbossproducciones.com", true }, + { "chesslovin.com", true }, + { "chessmatesny.com", true }, { "chesspoint.ch", true }, + { "chessresult.ru", true }, { "chesstempo.com", true }, + { "chesstouring.com", true }, + { "chessustron.pl", true }, { "chessveterinary.co.uk", true }, { "chesswiki.org", true }, { "chesterbennington.tk", true }, { "chestercountypediatrics.com", true }, - { "chestercountyroboticsurgery.com", true }, { "chestercountysc.gov", true }, - { "chesterfieldplaceapartmentsstl.com", true }, - { "chesterfieldroyal.nhs.uk", true }, + { "chesterfieldmayfair.com", true }, { "chesterultimatefrisbee.tk", true }, { "chestnut.cf", true }, { "chetin-orlov.ga", true }, { "cheto.io", true }, { "chetori.tk", true }, + { "chetu.com", true }, { "chetwood.se", true }, { "cheviron.org", true }, { "chevius.tk", true }, { "chevroletitalia.com", true }, + { "chevychaseviewmd.gov", true }, { "chewey.de", true }, { "chewey.org", true }, - { "chewingucand.com", true }, + { "chewinggumremovalchicago.com", true }, { "cheyannism.tk", true }, { "chez-gaillard.fr", true }, { "chez-janine.de", true }, @@ -26725,8 +31393,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chezbernard.tk", true }, { "cheztitine.tk", true }, { "chfr.search.yahoo.com", false }, + { "chg.codes", true }, { "chhlayban.tk", true }, - { "chhlin.com", true }, + { "chhlin.com", false }, { "chhory.com", true }, { "chhy.at", true }, { "chialab.eu", true }, @@ -26744,9 +31413,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chiapasfutbol.com", true }, { "chiara.net.au", true }, { "chiaraiuola.com", false }, - { "chiaramail.com", false }, { "chiasang.tk", true }, - { "chiaseeds24.com", true }, { "chiaseek.com", true }, { "chiavistello.it", true }, { "chiboard.co", true }, @@ -26757,10 +31424,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chicagoagent.com", true }, { "chicagobasementblog.com", true }, { "chicagobreastaugdrs.com", true }, + { "chicagoconcretecleaning.com", true }, { "chicagoemergencyclosings.com", true }, - { "chicagofinancesupperclub.com", true }, { "chicagoillinois.gq", true }, - { "chicagolug.org", false }, + { "chicagopowercleaning.com", true }, + { "chicagopowerwashing.net", true }, + { "chicagopowerwashingservices.com", true }, + { "chicagopressurewashing.net", true }, + { "chicagopressurewashingservices.com", true }, { "chicagoprivatejets.com", true }, { "chicagostudentactivists.org", true }, { "chicaman.tk", true }, @@ -26768,13 +31439,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chicasgo.ga", true }, { "chicasloca.com", true }, { "chicback.com", true }, + { "chichi-cats.com", true }, { "chichijane.com", true }, + { "chichoverboard.online", true }, { "chicinttim.gq", true }, { "chicjrajeevalochana.com", true }, { "chick-goo-ewe-farm.com", true }, { "chickencentral.tk", true }, { "chickencoop.ml", true }, { "chickenfarms.tk", true }, + { "chickenpeanut.com", true }, + { "chickensaladchick.com", true }, { "chicki.tk", true }, { "chickteam.tk", true }, { "chicofc.tk", true }, @@ -26786,15 +31461,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chielonline.tk", true }, { "chiemgauflirt.de", true }, { "chienluoc.tk", true }, + { "chiesanuova.nl", true }, { "chietitoday.it", true }, { "chieuminh.com", true }, + { "chifeng.com.tw", true }, { "chiffrer.info", true }, { "chifumi.net", true }, + { "chihuahuaalinstante.com", true }, { "chijb.cc", true }, { "chika.kr", false }, { "chikahaku1001vr.jp", true }, { "chikan-beacon.net", true }, - { "chike.my.id", true }, { "chikenweb.jp", true }, { "chiki.tk", true }, { "chikory.com", true }, @@ -26818,17 +31495,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "childrenfirstalways.org", true }, { "childreninadversity.gov", true }, { "childrenoftheshadow.org", true }, + { "childrens-museum.org", true }, { "childrens-room.com", true }, { "childrensdentalranch.com", true }, { "childrensentertainmentleicester.co.uk", true }, { "childrensfurniture.co.uk", true }, + { "childrensheartfoundation.org", true }, + { "childrensmentalhealthcampaign.org", true }, { "childrensrecipes.tk", true }, { "childstats.gov", true }, { "childswear.tk", true }, { "childtaxcredit.gov", true }, { "childwelfare.gov", true }, { "chile.tk", true }, + { "chileprevencion.cl", true }, { "chiletrenes.tk", true }, + { "chilhowieva.gov", true }, { "chili.ml", true }, { "chilian.de", true }, { "chilihosting.eu", true }, @@ -26836,19 +31518,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chilimathwords.com", true }, { "chilio.net", true }, { "chilipy.ga", true }, + { "chilis.com", true }, { "chill-house.ga", true }, + { "chill.bet", true }, + { "chillcicada.com", true }, { "chillebever.nl", true }, + { "chillhop.com", true }, { "chillipadi.tk", true }, { "chilliwackchurchofgod.com", true }, + { "chillpay.co", true }, + { "chillplanet.nl", true }, + { "chillybin.co", true }, { "chillybin.com.sg", true }, { "chiloesinpuente.tk", true }, { "chiltanfm88.tk", true }, { "chilternfarming.com", true }, { "chiltonwi.gov", true }, { "chima.net", true }, + { "chimaeraconsulting.eu", true }, { "chimaira.tk", true }, { "chimcanhcut.tk", true }, { "chime.com", true }, + { "chimebank.com", true }, { "chimera.sh", true }, { "chimeratool.com", true }, { "chimerity.com", true }, @@ -26858,29 +31549,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chimpmatic.com", true }, { "china-midas.net", true }, { "china-online-news.tk", true }, - { "china-week.com", true }, - { "chinabgj.com", true }, + { "chinabank.ph", true }, { "chinablows.com", true }, { "chinacdn.org", true }, + { "chinacheers.com", true }, + { "chinadream404.com", true }, { "chinafree.online", true }, { "chinafree.site", true }, { "chinaglobalsecurities.cn", true }, { "chinahealthcareblog.cf", true }, + { "chinahitech.com", true }, { "chinaicpower.org", false }, { "chinaindexfund.cn", true }, + { "chinajingkun.com", true }, { "chinalosers.com", true }, + { "chinamallonlin.com", true }, + { "chinamediaproject.org", true }, { "chinaoptionsfund.cn", true }, { "chinaoptionsfund.com", true }, + { "chinasays.com", true }, { "chinasearch.tk", true }, - { "chinaspaceflight.com", true }, { "chinastory.tk", true }, { "chinasucksass.com", true }, + { "chinati.org", true }, { "chinavegan.com", true }, { "chinawatchinstitute.org", true }, { "chinawhale.com", true }, { "chinchillas.tk", true }, { "chinees.restaurant", true }, { "chinefrancophonie.fr", true }, + { "chinen-hs41.com", true }, + { "chinese-fuhui.com", true }, + { "chinese-fxcm.com", true }, { "chinese.sc", true }, { "chinesebrides.ml", true }, { "chinesedishes.tk", true }, @@ -26889,6 +31589,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chineseplease.moe", true }, { "chinfolk.tk", true }, { "ching.tv", true }, + { "chiniiki.com", true }, + { "chinohills.gov", true }, { "chinookmt.gov", true }, { "chinookwebdesign.ca", true }, { "chinovalleyaz.gov", true }, @@ -26899,37 +31601,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chintaparthihome.tk", true }, { "chinwag.im", true }, { "chip.icu", true }, - { "chip.pl", false }, - { "chipcore.com", false }, { "chipdig.com", true }, { "chipollinko.com.ua", true }, + { "chippewa.com", true }, { "chippewacountywi.gov", true }, { "chippy.ch", false }, - { "chippysworkshop.co.uk", true }, { "chips-scheduler.de", true }, { "chips.gov", true }, { "chipset.no", true }, + { "chipsfuck.fish", true }, { "chiquian.tk", true }, - { "chirality.de", true }, { "chiralsoftware.com", true }, { "chireiden.me", true }, - { "chirica.law", true }, + { "chiriri.top", true }, { "chirkunov.tk", true }, + { "chiro-doctor.com", true }, { "chiro-merksplas.tk", true }, - { "chiro-neuchatel.ch", false }, + { "chiro.org", true }, { "chiroharbalorifa.tk", true }, { "chiroherne.tk", true }, + { "chirointellect.com", false }, { "chirojap.tk", true }, { "chirolokalenfonteintjekoersel.be", true }, { "chiromeisjes-boxberg.tk", true }, { "chiron.care", false }, { "chiropractic.gr", true }, - { "chiropracticwpb.com", true }, + { "chiropracticwpb.com", false }, + { "chiropractorlongmontgpa.com", true }, { "chiropraktik-riemann.de", true }, - { "chiropraktik-wildner.de", true }, - { "chiropraticien-neuchatel.ch", false }, - { "chiropratique-neuchatel.ch", false }, - { "chirosphere.ch", false }, + { "chiropraktik-wildner.de", false }, { "chirotestelt.tk", true }, { "chirototem.tk", true }, { "chirowij.tk", true }, @@ -26940,35 +31640,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chiselgems.com", true }, { "chispita.tk", true }, { "chistesdesebas.tk", true }, + { "chistim.info", true }, { "chit.search.yahoo.com", false }, { "chita.cf", true }, { "chita.tk", true }, { "chitaem.tk", true }, { "chitashop.ml", true }, + { "chitchok.com", true }, { "chitinfo.tk", true }, { "chitlar.ml", true }, { "chitraltune.tk", true }, { "chittagongtextile.tk", true }, - { "chitti4feet.com", true }, + { "chiucainlaw.co.nz", true }, { "chiusa-klausen.com", true }, { "chiva-ariege.fr", true }, { "chizouworld.tk", true }, { "chizra.com", true }, - { "chjeco.com", true }, { "chk-ccs.com", true }, - { "chkserv.com", true }, + { "chklocal.com", true }, + { "chkmkt.com", true }, + { "chkserv.com", false }, { "chksite.com", true }, { "chl.la", true }, - { "chlcontainer.com", true }, { "chliine.ch", true }, { "chlo-products.biz", true }, { "chlo-products.net", true }, { "chloehorler.com", true }, { "chloes.gr", true }, { "chloescastles.co.uk", true }, + { "chloeting.com", true }, { "chlorca.es", true }, { "chlth.com", true }, - { "chmc.ml", true }, { "chmfin.com", true }, { "chmielarz.it", true }, { "chmsoft.com.ua", true }, @@ -26979,8 +31681,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chnlib.com", true }, { "chobble.com", true }, { "chobitool.com", true }, - { "chocgu.com", true }, { "chochos.tk", true }, + { "choco-championship.jp", true }, { "choco.run", true }, { "chocoband.cf", true }, { "chocodecor.com.br", true }, @@ -26989,22 +31691,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chocolat-suisse.ch", false }, { "chocolat.work", true }, { "chocolate-express.co.uk", true }, + { "chocolate.wiki", true }, { "chocolatesandhealth.com", true }, { "chocolateslim.gq", true }, { "chocolatesonline.com", true }, { "chocolatier-tristan.ch", false }, + { "chocolatier.co.uk", false }, { "chocolatos.tk", true }, { "chocolay.gov", true }, { "chocolytech.info", true }, { "chocope-peru.tk", true }, - { "chocorp.net", true }, { "chocudan.tk", true }, { "chodaczek.pl", true }, { "choe.fi", true }, { "choesfirm.tk", true }, { "chofan.tk", true }, + { "choice-design.com.tw", true }, { "choiceautoloan.com", true }, { "choicemediaworks.com", true }, + { "choiceuniontown.org", true }, { "choirofbeirut.cf", true }, { "choisirmoneau.blog", true }, { "chokladfantasi.net", true }, @@ -27012,21 +31717,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chollima.pro", true }, { "chollospain.cf", true }, { "choloforo.tk", true }, - { "chomp.life", true }, { "chonghe.org", true }, + { "chonglang.cfd", true }, { "chongming.tk", true }, - { "chongqing.design", true }, { "chongthamsika.tk", true }, + { "chongwukong.com", true }, { "choochooworld.com", false }, - { "chook.as", true }, { "choootto.net", true }, { "choosealicense.com", true }, { "choosemypc.net", true }, + { "chooserealleather.cn", true }, { "choosetech.com.br", true }, { "choosevalley.co.uk", true }, { "chooseyourdesinty.tk", true }, { "chopchat.com", true }, { "chopnotch.com", true }, + { "chopper-parts.ru", true }, { "chopperdesign.com", true }, { "chopperforums.com", true }, { "chopradionet.tk", true }, @@ -27039,7 +31745,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chorkley.uk", true }, { "chornobyl.tk", true }, { "chorpinkpoemps.de", true }, + { "choruru.jp", true }, + { "choruscall.com", true }, { "chorverband-region-kocher.de", true }, + { "chosenofstarclan.com", true }, { "chosenos.tk", true }, { "chosenplaintext.org", true }, { "choservices.com", true }, @@ -27048,10 +31757,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chouchouweb.com", true }, { "chovancova.sk", true }, { "chowchowugo.com", true }, - { "chownie.com", true }, + { "chowderandchampions.com", true }, { "chowtime.chat", true }, { "choylifut.tk", true }, { "choyri.com", true }, + { "chpa.org", true }, { "chpwmedicare.org", true }, { "chr0me.sh", true }, { "chrawrizard.org", true }, @@ -27061,8 +31771,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chris.land", true }, { "chrisahrweileryoga.com", true }, { "chrisaitch.com", true }, - { "chrisbillo.com", true }, + { "chrisandian.com", true }, + { "chrisb.me", false }, + { "chrisb.xyz", false }, { "chrisbrockdiving.com", true }, + { "chrisbrowntherapies.co.uk", true }, { "chrisbryant.me.uk", true }, { "chrisburnell.com", true }, { "chriscarey.com", true }, @@ -27070,13 +31783,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chriscutts.uk", true }, { "chrisdasie.com", true }, { "chrisdecairos.ca", true }, - { "chrisebert.net", true }, { "chriseldon.com", true }, { "chrisfinazzo.com", false }, { "chrisgieger.com", true }, { "chrisirwin.ca", true }, { "chrisjean.com", true }, + { "chriskthomas.com", true }, { "chrislane.com", true }, + { "chrislauderback.com", true }, + { "chrislauderback.net", true }, + { "chrislauderback.org", true }, { "chrisliebaer.de", true }, { "chrisluen.com", true }, { "chrismarker.org", true }, @@ -27085,16 +31801,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chrismckee.co.uk", true }, { "chrismiller.xyz", true }, { "chrismorgan.info", true }, + { "chrismurray.co.uk", true }, { "chrismurrayfilm.com", true }, { "chrisnekarda.com", true }, { "chrisogedengbe.org", true }, { "chrispaul.ml", true }, { "chrispontius.tk", true }, { "chrisrude.com", true }, - { "chrisseoguy.com", true }, { "chrisshort.me", true }, { "chrisshort.net", true }, - { "chrissmiley.co.uk", false }, { "chrisspencercreative.com", true }, { "chrisspencermusic.com", true }, { "chrissx.de", true }, @@ -27103,23 +31818,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chrissytechaira.tk", true }, { "christ.cm", true }, { "christadelphians.eu", true }, - { "christchapel.in", true }, { "christcostum.tk", true }, { "christec.net", true }, { "christengroei.tk", true }, { "christensenplace.us", true }, { "christerwaren.com", true }, { "christerwaren.fi", true }, + { "christhewebguy.com", true }, { "christiaanconover.com", true }, { "christian-folini.ch", true }, - { "christian-garo.com", true }, - { "christian-garo.org", true }, { "christian-gredig.de", true }, { "christian-host.com", true }, + { "christian-laubender.de", true }, { "christian-liebel.com", true }, { "christian-oette.de", true }, { "christian-stadelmann.de", true }, { "christianadventurecamps.org", true }, + { "christianaknudsen.com", true }, { "christianbecker.name", true }, { "christianblog.ml", true }, { "christianbro.gq", true }, @@ -27131,14 +31846,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christianconcepts.ga", true }, { "christianconcepts.gq", true }, { "christiancountyil.gov", true }, + { "christiandiorsneakers.shop", true }, + { "christiandiorsneakerswomens.shop", true }, { "christiandiscourse.net", true }, - { "christianfaq.org", true }, - { "christianga.ro", true }, + { "christiangaro.com", true }, { "christiangaro.email", true }, { "christiangaro.info", true }, + { "christiangaro.me", true }, { "christiangaro.us", true }, { "christiangehring.org", true }, { "christianhaugen.tk", true }, + { "christianhendrickson.com", true }, { "christianhoffmann.info", false }, { "christianimweb.tk", true }, { "christianitas.ga", true }, @@ -27153,8 +31871,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christianmorales.tk", true }, { "christianoliff.com", true }, { "christianotero.co", true }, + { "christianplumbingservices.com", true }, { "christianr.me", true }, { "christianrasch.de", true }, + { "christianreimold.de", true }, { "christians.dating", true }, { "christiansayswords.com", true }, { "christiansburgva.gov", true }, @@ -27163,23 +31883,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christianwenz.de", true }, { "christianwitts.tech", true }, { "christiehawkes.com", true }, - { "christinaaguilera.com.br", true }, { "christinabjoern-nilsson.dk", true }, - { "christinaclairecollins.com", true }, { "christinacrawford.cf", true }, { "christinacrawford.ga", true }, { "christinacrawford.gq", true }, { "christinacrawford.ml", true }, { "christinarosenvinge.tk", true }, + { "christinasattler.com", true }, + { "christine-kraemer.de", false }, { "christineandcie.fr", true }, { "christineblachford.com", true }, { "christinecloma.com", true }, - { "christinedejong.fr", true }, { "christineglaeser.de", true }, { "christinehameline.com", true }, - { "christineleedy.nl", true }, { "christineprayon.de", true }, { "christmasinelmhurst.org", true }, + { "christmasloansvet.com", true }, { "christmaspages.tk", true }, { "christmaspartyhire.co.uk", true }, { "christmasrecipe.tk", true }, @@ -27189,41 +31908,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "christophe-dubois.tk", true }, { "christophebarbezat.ch", true }, { "christophedavid.tk", true }, + { "christopheduverger.fr", true }, { "christopher-simon.de", true }, { "christopher-wright.com", true }, { "christopher-zentgraf.de", true }, { "christopher.sh", false }, { "christopherbillo.com", true }, { "christopherburg.com", true }, + { "christophercolumbusfoundation.gov", true }, { "christopherd.me", true }, - { "christopherfuchs.de", true }, { "christophergowerjohnson.com", true }, + { "christopherjferguson.com", true }, { "christopherkardas.me", true }, { "christopherkennelly.com", true }, - { "christopherpfister.de", true }, { "christopherpritchard.co.uk", true }, { "christopherstocks.online", true }, { "christopherterryweddings.co.uk", true }, { "christophertruncer.com", true }, { "christopherzoukis.com", true }, { "christophfink.com", true }, + { "christophheich.me", true }, { "christophkranebitter.at", true }, { "christophkreileder.com", true }, { "christophsackl.de", true }, + { "christreformedchurchdfw.org", true }, + { "christthegoodshepherd.org", true }, { "christthekingparish.net", true }, { "christtheredeemer.us", true }, + { "christtheshepherdvineland.org", true }, { "christwaycounseling.com", true }, + { "christysstampingspot.com", true }, { "chrisupjohn.xyz", true }, { "chrisvannooten.tk", true }, { "chriswald.com", true }, { "chriswarbo.tk", true }, { "chriswarrick.com", true }, + { "chriswbarry.com", false }, { "chriswells.io", true }, { "chriswiggin.cf", true }, { "chriswiggin.ga", true }, { "chriswiggin.gq", true }, { "chriswiggin.ml", true }, { "chriswilding.co.uk", true }, + { "chriswservers.com", true }, { "chrisx.xyz", true }, { "chriszarb.tk", true }, { "chrixonline.tk", true }, @@ -27241,6 +31968,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chromebookchart.com", true }, { "chromebookcompare.com", true }, { "chromebooksforwork.com", true }, + { "chromehack.com", true }, { "chromereporting-pa.googleapis.com", true }, { "chromestatus.com", true }, { "chromiumbugs.appspot.com", true }, @@ -27253,42 +31981,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chronicles.tk", true }, { "chronik-kramsach.at", true }, { "chronikdanceclub.com", true }, - { "chronlaw.com", true }, { "chronoc.de", true }, { "chronocarpe.com", true }, { "chronocolis.ml", true }, { "chronodelivery.com", true }, - { "chronograph.pe", true }, { "chronology.no", true }, { "chronoshop.cz", true }, { "chronotech.fr", true }, { "chrony.tk", true }, { "chrpaul.de", false }, + { "chrsmtc.com", true }, { "chrstn.eu", true }, + { "chrstngr.cm", true }, { "chrt-tcdp.gc.ca", true }, { "chrudim-city.cz", true }, { "chrxw.com", true }, { "chrysanthos.net", true }, { "chryslerbuilding.tk", true }, { "chrystajewelry.com", true }, - { "chrystofer.com", true }, + { "chrystofer.com", false }, { "chrystus.pl", true }, { "chsamuel.net", true }, { "chsh.moe", false }, { "chshealthcare.co.uk", true }, { "chshouyu.com", true }, + { "chsmedical.com", true }, { "chsterz.de", true }, { "chstrategies.com.au", true }, { "chsvotes.gov", true }, { "chtj.uk", true }, - { "chto-posmotretj.ru", true }, { "chtodelat.ga", true }, + { "chtsi.uk", true }, { "chtyvo.tk", true }, { "chuangyi.com", true }, + { "chubbygirlpics.com", true }, { "chubr.cf", true }, { "chubuhokenservice.com", true }, - { "chuchote-moi.fr", true }, { "chuckame.fr", true }, + { "chuckecheese.com", true }, { "chuckmckinnon.com", true }, { "chuckval.tk", true }, { "chudnov.tk", true }, @@ -27296,7 +32026,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chukardin.tk", true }, { "chukcha.ru", true }, { "chukotka.ml", true }, + { "chukou.cf", true }, + { "chukou.ga", true }, + { "chukou.gq", true }, + { "chukou.ml", true }, + { "chukou.tk", true }, { "chukwunyere-chambers.org", true }, + { "chulinkuei.org.tw", true }, { "chun.pro", true }, { "chunabhatti.tk", true }, { "chundelac.com", true }, @@ -27309,8 +32045,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "chunkeat.me", true }, { "chunkeat.ml", true }, { "chuongle.com", true }, + { "chupacabra-drift.pl", true }, { "chupadelfrasco.com", true }, { "chupanhcotrang.com", true }, + { "chupanhdao.art", true }, { "chuppa.com.au", true }, { "chur-arosa-bahn.de", true }, { "chur-arosa-bahn.nl", true }, @@ -27324,11 +32062,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "churchillcountynv.gov", true }, { "churchlinkpro.com", true }, { "churchlw.tk", true }, + { "churchm.ag", true }, { "churchofchrist.tk", true }, + { "churchofcyprus.org.cy", true }, { "churchofpop.net", true }, { "churchofsaintbenedict.com", true }, - { "churchofsaintrocco.org", true }, - { "churchofscb.org", true }, { "churchofsmyrna.com", true }, { "churchofsmyrna.org", true }, { "churchplaza.com", true }, @@ -27336,32 +32074,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "churchthemes.com", true }, { "churchwebcanada.ca", true }, { "churchwebsupport.com", true }, - { "churchwp.com", true }, - { "chus-plongee.fr", true }, + { "churnfree.com", true }, { "chuskocity.tk", true }, { "chuspace.com", true }, + { "chutingstar.com", true }, { "chutisant.tk", true }, + { "chutoriaru.com", true }, { "chuvash-republic.tk", true }, { "chuvash.tk", true }, { "chuvashia.tk", true }, { "chuvashiya.tk", true }, { "chuyentien247.com.vn", true }, - { "chuying.ltd", false }, { "chwilrank.pl", true }, { "chytraauta.cz", true }, { "chziq.com", true }, { "ci-fo.org", true }, { "ci-suite.com", true }, + { "ci.com.br", true }, { "ci5.me", true }, + { "cia-gaming.de", true }, + { "cia-landlords.co.uk", true }, + { "ciaagentedu.org", true }, { "ciagutek.pl", true }, { "ciahalim.tk", true }, + { "ciai.cf", true }, + { "ciai.ga", true }, + { "ciai.gq", true }, + { "ciai.ml", true }, + { "ciai.tk", true }, { "cialde.it", true }, { "cialis-trial.gq", true }, + { "cialisatabs.com", true }, + { "cialisbmed.com", true }, { "cialisfreetrial.ga", true }, + { "cialismarketim.net", true }, + { "cialismarketing.net", true }, { "cialisonlinee.com", false }, + { "cialisrmed.com", true }, + { "cialisud.com", true }, + { "cialisusapills.com", true }, { "cialisvtr.com", true }, - { "cialona.nl", true }, - { "ciancode.com", true }, + { "cialisworld.net", true }, + { "cialisworld.org", true }, + { "ciallo.work", true }, { "cianmawhinney.me", true }, { "cianmawhinney.xyz", true }, { "ciao.ro", true }, @@ -27374,9 +32129,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cibdol.nl", true }, { "cibercat.tk", true }, { "cibercheck.com", true }, - { "cibleclick.com", true }, + { "cibernicola.es", true }, + { "ciblogin.com", true }, { "cica.es", true }, { "cicavkleci.cz", true }, + { "ciceksohbet.com", true }, + { "ciceron.cloud", true }, + { "ciceroneberlino.com", true }, { "cicerony.gov", true }, { "ciceronypd.gov", true }, { "cicery.com", true }, @@ -27386,7 +32145,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ciclodekrebs.com", true }, { "ciclodelcarbono.com", true }, { "ciclohidrologico.com", true }, - { "cidadedossonhos.org", true }, + { "cicybell.com", true }, { "cidbot.com", true }, { "cidcca.com", true }, { "cidersus.com.ec", true }, @@ -27399,27 +32158,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ciekwestronki.gq", true }, { "ciekwestronki.ml", true }, { "ciel.coffee", true }, - { "ciel.life", true }, { "ciel.luxe", true }, { "ciel.si", true }, - { "cielly.com", true }, { "cielo-thefilm.com", true }, { "cienciasempresariais.pt", true }, { "cienegaspa.com", true }, { "cierreperimetral.com", true }, { "cifapme.net", true }, { "cifop-numerique.fr", true }, + { "ciftkabincikmaparca.com.tr", true }, + { "ciftkabinyedekparca.com.tr", true }, { "ciftlikesintisi.com", true }, { "cigar-cartel.com", true }, { "cigarafterten.com", true }, { "cigarette-electronique.tk", true }, + { "cigarettes-electronik.fr", true }, { "cigarterminal.com", false }, { "cigdelivery.com", true }, - { "ciginsurance.com", true }, { "cign.nl", true }, + { "cigniti.com", true }, { "cignium.com", true }, + { "cigotracker.com", true }, { "cihanmedya.ga", true }, { "cihar.com", true }, + { "cihr-irsc.gc.ca", true }, { "cihucm.com", true }, { "ciicutini.ro", true }, { "ciit-software.de", true }, @@ -27428,16 +32190,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cilacapnews.ml", true }, { "cile.cf", true }, { "cile.tk", true }, + { "cilipa.com", true }, { "cilkamail.cloud", true }, { "cilkanet.cloud", true }, { "cilloc.be", true }, { "cilt.tk", true }, { "ciltskillnet.ie", false }, + { "cima-alfa.com", true }, { "cima-idf.fr", true }, + { "cimaroom.com", true }, { "cimbalino.org", true }, { "cimballa.com", true }, - { "cimet.com.au", true }, - { "cimet.io", true }, + { "cimencamp.com.br", true }, { "cimfax.com", true }, { "cimtools.net", true }, { "cin.net.au", true }, @@ -27448,17 +32212,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cincinnaticasinonight.com", true }, { "cincosf.com", true }, { "cincy.gov", true }, + { "cincydeckandpatio.com", true }, { "cinderellacloset.in", true }, { "cindey.io", true }, - { "cindinero.com", true }, - { "cine-latino.com", true }, { "cine-music.de", true }, { "cine.to", true }, + { "cinecat.de", true }, { "cinedarkwolf.tk", true }, { "cinefilia.tk", true }, + { "cineforge.com", true }, { "cinefun.net", true }, - { "cineglitzz.in", true }, { "cinegore.tk", true }, + { "cinejoia.tv", true }, { "cinelandia.tk", true }, { "cinema-rulem.tk", true }, { "cinemaclub.co", true }, @@ -27470,7 +32235,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cinemasetfree.com", true }, { "cinematherapy.org", true }, { "cinematic.asia", true }, - { "cinematictouch.com", true }, { "cinematriz.cl", true }, { "cinemaz.to", true }, { "cinemaza.tk", true }, @@ -27479,11 +32243,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cinenote.link", true }, { "cineping.com", true }, { "cineplex.my", true }, - { "cinesso.de", true }, { "cinet.jp", true }, { "cineterror.tk", true }, { "cineworld.co.in", true }, { "cinexilio.tk", true }, + { "cinfin.com", false }, { "cinicloud.com", true }, { "cinicostudio.com", true }, { "cinicsystems.tk", true }, @@ -27492,14 +32256,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ciniticket.in", true }, { "cink.hu", true }, { "cinkciarz.pl", true }, + { "cinn.ml", true }, + { "cinn.mn", true }, { "cinnagar.tk", true }, + { "cinnamon.bot", true }, + { "cinnamon.gifts", true }, + { "cinnamon.gq", true }, + { "cinnamonsnail.com", true }, + { "cinnamonspiceandeverythingnice.com", true }, + { "cinnamontoastcrunch.com", true }, { "cinq-elements.com", false }, - { "cinq-elements.fr", true }, { "cinq-elements.net", true }, { "cinqdecembre.com", true }, { "cinquecentoclubholland.tk", true }, { "cinqueportsvets.co.uk", true }, + { "cins.rs", true }, + { "cinsels.com", true }, { "cint.com", true }, + { "cintactimber.com", true }, { "cintamanilingerie.co.uk", true }, { "cintapersonalizada.es", true }, { "cintaraso.es", true }, @@ -27507,14 +32281,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cinthia.tk", true }, { "cio-ciso-interchange.org", true }, { "cio-cisointerchange.org", true }, - { "cio.go.jp", false }, + { "cio-spirit.de", true }, { "cio.gov", true }, - { "ciordigital.com", true }, { "cioscloud.com", true }, { "cioudways.com", true }, { "cioudways.pro", true }, + { "cioxhealth.com", true }, { "cip.md", true }, + { "cipa.com.co", false }, { "cipartyhire.co.uk", true }, + { "cipf.ca", true }, { "ciph.zone", true }, { "cipher.team", true }, { "cipherboy.com", true }, @@ -27522,7 +32298,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ciphermail.com", true }, { "ciphersuite.info", true }, { "ciphertech.com.tw", true }, - { "cipies.com", true }, { "ciplerli.st", true }, { "cippus.tk", true }, { "cipri.com", true }, @@ -27537,18 +32312,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cipy.com", true }, { "cir.is", true }, { "cira.email", true }, + { "cirasul.com", true }, { "cirasync.com", true }, { "circady.com", true }, { "circara.com", true }, { "circle-people.com", true }, { "circlebox.rocks", true }, + { "circleci.com", true }, { "circlelytics.com", true }, { "circleofhealthlongmont.com", true }, - { "circleofleastconfusion.com", true }, { "circlepluscircle.me", true }, { "circlevilleoh.gov", true }, - { "circoeia.com", true }, - { "circonus.com", true }, { "circu.ml", false }, { "circues.com", true }, { "circuit.co.uk", true }, @@ -27557,25 +32331,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "circular.fashion", true }, { "circular.tw", true }, { "circularity.id", true }, + { "circuloescola.com", true }, { "circulosocial77.com", true }, + { "circumstances.ir", true }, { "circus-maximus.de", true }, { "circusdays.tk", true }, { "circuses.tk", true }, { "cirfi.com", true }, { "cirocunato.tk", true }, - { "cirope.com", true }, { "cirriton.de", true }, + { "cirro.io", true }, + { "cirroenergy.com", true }, { "cirruslab.ch", true }, { "cirruslabs.ch", false }, { "cirugiaplasticahn.com", true }, { "cirujanooral.com", true }, - { "cirurgicaexpress.com.br", true }, { "cirurgicagervasio.com.br", true }, { "cirurgicalucena.com.br", true }, + { "cirurgicasaopaulo.com.br", true }, { "cirurgicavirtual.com.br", true }, { "cisa.gov", true }, - { "cisamexico.com", true }, + { "cisabroad.com", true }, + { "cisco-training.net", true }, { "ciscoasanetflow.com", true }, + { "ciscobrewers.com", true }, { "ciscocyberthreatdefense.com", true }, { "ciscodude.net", false }, { "ciscom.tk", true }, @@ -27583,29 +32362,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cisconetflowpartners.com", true }, { "cisconetflowreporting.com", true }, { "cisconetflowsupport.com", true }, - { "cisin.com", false }, + { "cisi.org", true }, + { "cisin.com", true }, { "cisincometax.ca", true }, { "cisindia.tk", true }, + { "ciso.social", true }, { "cisoaid.com", true }, { "cisofy.com", true }, - { "cisoshare.com", true }, + { "cisopoland.org", true }, { "cisowianki.tk", true }, + { "cisprague.org", true }, { "ciss.ltd", true }, - { "cissa.org.au", true }, { "cissofitness.com", true }, { "cistenikoberculiberec.net", true }, { "cistiempo.cl", true }, { "cistit.tk", true }, + { "cistoaracnoide.org", true }, { "cisum-cycling.com", true }, - { "cisy.me", true }, { "cisylik.gq", true }, - { "cit-net.com", true }, { "citacatastro.es", true }, { "citace.com", true }, { "citacepro.com", true }, { "citadelpark.be", true }, { "citadni.online", true }, { "citae.ga", true }, + { "citafogasa.es", true }, { "citafun.tk", true }, { "citakon.cz", true }, { "citalopram-20-mg.ml", true }, @@ -27620,22 +32401,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citazine.fr", true }, { "citazioni.tk", true }, { "citcuit.in", true }, - { "citee.vn", true }, + { "citerne-eau.be", true }, { "citfin.cz", true }, + { "citharas.org", true }, { "citidirect.com", true }, { "cities.cl", true }, { "citiledger.ga", true }, - { "citimarinestore.com", true }, + { "citimarinestore.com", false }, + { "citiswich.com.au", true }, { "citizen428.net", true }, { "citizenewatch.tk", true }, { "citizenkevin.com", false }, + { "citizenpatriotresponse.org", true }, { "citizens.pt", true }, - { "citizensadvicewiltshire.org.uk", true }, + { "citizensbank.net", true }, { "citizensbankal.com", true }, { "citizenscience.gov", true }, { "citizensgbr.org", true }, + { "citizenside.fr", true }, { "citizenslasvegas.com", true }, { "citizensleague.org", true }, + { "citizentruth.org", true }, { "citizing.org", true }, { "citos.ga", true }, { "citoyen.eu", true }, @@ -27644,11 +32430,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citruspi.com", true }, { "citruspi.io", true }, { "citsc.de", true }, + { "citti.de", true }, + { "cittinfo.com", true }, + { "citto.ru", true }, + { "city-adm.lviv.ua", true }, { "city-glas.com", true }, { "city-home.tk", true }, { "city-nn.com", true }, { "city-online.tk", true }, + { "city-spin.site", true }, { "city-walks.info", true }, + { "city.kharkov.ua", true }, + { "cityapparels.com", true }, { "citybusexpress.com", false }, { "citycalculator.ml", true }, { "citycardgand.com", true }, @@ -27656,54 +32449,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citycardgent.be", true }, { "citycardgent.com", true }, { "citycardghent.com", true }, + { "citycarremovals.com.au", true }, { "citycell.ml", true }, { "cityconsultants.tk", true }, - { "citycountrycounselling.com.au", true }, { "citycreek.studio", true }, { "citycricket.tk", true }, { "cityfacialplastics.com", true }, { "cityfish.com", true }, - { "citygis.nl", true }, { "cityhide.tk", true }, { "cityhotel.tk", true }, { "cityjam.tk", true }, { "citylift.com.ua", true }, { "citylocal.cf", true }, + { "citymagazine.si", true }, { "citymeats.com", true }, - { "citymoobel.ee", true }, + { "cityofadelga.gov", true }, + { "cityofallisonia.gov", true }, + { "cityofaltonil.gov", true }, { "cityofamoryms.gov", true }, { "cityofarcolatx.gov", true }, + { "cityofaudubonmn.gov", true }, { "cityofbambergsc.gov", true }, { "cityofbathmaine.gov", true }, { "cityofbayardnm.gov", true }, + { "cityofbaylakefl.gov", true }, { "cityofbayminetteal.gov", true }, { "cityofbinghamton.gov", true }, { "cityofblairwi.gov", true }, { "cityofblancotx.gov", true }, + { "cityofboydtx.gov", true }, + { "cityofbristowok.gov", true }, { "cityofbrodheadwi.gov", true }, { "cityofbrookings-sd.gov", true }, { "cityofbrookwoodal.gov", true }, { "cityofburnsor.gov", true }, { "cityofcarsonca.gov", true }, + { "cityofchinagrovetx.gov", true }, { "cityofclare.gov", true }, { "cityofclintoniowa.gov", true }, { "cityofconroe.gov", true }, { "cityofdelafieldwi.gov", true }, { "cityofdelcity.gov", true }, { "cityofeastpointemi.gov", true }, + { "cityofeatonrapids.gov", true }, + { "cityofellisks.gov", true }, { "cityofelynv.gov", true }, { "cityofeuporams.gov", true }, { "cityoffergusonky.gov", true }, + { "cityofgibraltarmi.gov", true }, { "cityofgigharborwa.gov", true }, { "cityofgirardoh.gov", true }, + { "cityofglasgowcollege.ac.uk", true }, { "cityofgolden.gov", true }, + { "cityofgrandblancmi.gov", true }, + { "cityofgrossepointemi.gov", true }, { "cityofguttenbergia.gov", true }, { "cityofhackensackmn.gov", true }, { "cityofherculaneum.gov", true }, + { "cityofhughsonca.gov", true }, { "cityofioneoregon.gov", true }, + { "cityofirvineca.gov", true }, { "cityofithacany.gov", true }, { "cityofjuneauwi.gov", true }, + { "cityofkandiyohimn.gov", true }, { "cityofkasaanak.gov", true }, + { "cityofkewauneewi.gov", true }, + { "cityoflakebuenavistafl.gov", true }, { "cityoflakegeneva.gov", true }, { "cityoflancasterca.gov", true }, { "cityoflancasterpa.gov", true }, @@ -27711,6 +32522,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cityoflodiwi.gov", true }, { "cityoflompoc.gov", true }, { "cityoflorettotn.gov", true }, + { "cityoflouisvillems.gov", true }, { "cityofmadera.gov", true }, { "cityofmanchestertn.gov", true }, { "cityofmargaretalabama.gov", true }, @@ -27719,6 +32531,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cityofmaywoodparkor.gov", true }, { "cityofmebanenc.gov", true }, { "cityofmerced.gov", true }, + { "cityofminatarene.gov", true }, + { "cityofmitchellsd.gov", true }, { "cityofmonroewi.gov", true }, { "cityofmte.gov", true }, { "cityofmusic.be", true }, @@ -27728,6 +32542,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cityofnovi.gov", true }, { "cityofocontowi.gov", true }, { "cityofpagedalemo.gov", true }, + { "cityofpalmdaleca.gov", true }, { "cityofpearidgear.gov", true }, { "cityofpeople.gent", true }, { "cityofperris.gov", true }, @@ -27735,33 +32550,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cityofpinconningmi.gov", true }, { "cityofpinebluff-ar.gov", true }, { "cityoframseymn.gov", true }, + { "cityofredding.gov", true }, + { "cityofrobertsidaho.gov", true }, { "cityofroncevertewv.gov", true }, + { "cityofsacramento.gov", true }, { "cityofsalemky.gov", true }, + { "cityofsanmateoca.gov", true }, + { "cityofsantamariaca.gov", true }, { "cityofsenatobiams.gov", true }, { "cityofsourlake.gov", true }, { "cityofspoonerwi.gov", true }, + { "cityofthorp.gov", true }, { "cityoftitans.com", true }, - { "cityoftitansmmo.com", true }, + { "cityoftulsa.gov", true }, { "cityoftybee.gov", true }, { "cityofvacaville.gov", true }, + { "cityofvermilionohio.gov", true }, { "cityofwadley-ga.gov", true }, { "cityofwakefieldmi.gov", true }, + { "cityofwashburnwi.gov", true }, { "cityofwasilla.gov", true }, { "cityofwauchula.gov", true }, + { "cityofwhitneytx.gov", true }, + { "cityofwoodland.gov", true }, { "cityofwoodward-ok.gov", true }, + { "cityonfire.com", true }, { "citypress.cf", true }, { "citypress.ga", true }, { "citypress.gq", true }, { "citypro.tk", true }, { "cityradiusmaps.com", true }, + { "cityseeker.com", true }, + { "cityspin.org", true }, { "citysportapp.com", false }, { "cityspot.us", true }, { "citysquarenews.tk", true }, + { "citysteambrewery.com", true }, { "citytaxiandtours.ga", true }, { "citytel.ga", true }, { "citytoday.it", true }, { "citytourgirls.com", true }, - { "citytoyota.com", true }, { "cityuproject.com", true }, { "cityutilities.com", true }, { "cityvets.co.uk", true }, @@ -27775,34 +32603,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "citywisdom.tk", true }, { "cityworksonline.com", true }, { "ciubotaru.tk", true }, + { "ciuci.us", true }, { "ciuciucadou.ro", true }, { "ciudadanosbo.com", true }, { "ciudadrealtrabaja.com", true }, { "ciulea.ro", true }, { "civey.com", true }, + { "civfund.org", true }, { "civic-europe.eu", true }, { "civicamente.cl", true }, + { "civicconnectiongroup.com", true }, { "civicforum.pl", true }, + { "civicphotos.com", true }, { "civics.us", true }, + { "civictheatrenewcastle.com.au", true }, { "civicunicorn.com", true }, { "civicunicorn.us", true }, { "civil-works-sri.com", true }, { "civilbikes.com", true }, { "civilconcretellc.com", true }, { "civilengineeringhandbook.tk", true }, - { "civilg20.org", true }, { "civilhost.tk", true }, { "civillines.nl", true }, { "civiltoday.com", true }, + { "civilunfold.com", true }, { "civilvirus.tk", true }, { "civmob.com", true }, { "cizgikod.ga", true }, + { "cizz.uk", true }, { "cj-espace-vert.fr", true }, { "cj-jackson.com", true }, { "cj26.club", true }, { "cj8.de", true }, - { "cjaconsultoria.online", true }, { "cjc.org.es", true }, + { "cjcanarias.es", true }, + { "cjclarketimber.com", true }, { "cjdby.net", true }, { "cjdpenterprises.com", true }, { "cjdpenterprises.com.au", true }, @@ -27810,23 +32645,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cjenni.ch", true }, { "cjey.me", true }, { "cjfinance.fr", true }, - { "cjgdenhaag.nl", true }, { "cjhzp.net", true }, { "cjimmobilier.com", true }, - { "cjpsrilanka.lk", true }, + { "cjis.gov", true }, + { "cjp.nl", true }, { "cjr.host", true }, { "cjr.is", true }, + { "cjri.uk", true }, { "cjs8866.cc", true }, - { "cjsounds.com", true }, + { "cjswoodworking.com", true }, { "cjwagner.net", true }, + { "ck-energy.info", true }, { "ck-la.tk", true }, { "ck-pms.com", true }, { "ck.cx", true }, { "ck0.eu", true }, { "ck1020.cc", true }, + { "ck12.org", true }, + { "ckbc.com.sg", true }, { "ckcameron.net", true }, { "ckcg.tk", true }, - { "ckdemo.herokuapp.com", true }, { "ckeke.com", true }, { "ckenel.com", true }, { "ckenell.com", true }, @@ -27848,22 +32686,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ckp.ie", true }, { "ckpl.io", true }, { "ckpl.us", true }, + { "ckprofessionalbookkeeping.ca", true }, { "ckrobotics.tk", true }, - { "ckrubble.com", true }, { "cktennis.com", true }, { "ckyalliancefinland.tk", true }, + { "cl-1xbet.com", true }, { "cl-automotive.com", true }, { "cl-cloud.spdns.org", true }, { "cl-pass.spdns.de", true }, { "cl.search.yahoo.com", false }, { "cl0ud.hopto.org", true }, - { "cl0ud.space", true }, + { "cl0ud.space", false }, { "claarycherry.com", true }, { "clacetandil.com.ar", true }, + { "clactonfencingsupplies.co.uk", true }, { "clad.cf", true }, { "clague.moe", true }, + { "claibornecountyms.gov", true }, { "claibornecountytn.gov", true }, - { "claimconnect.com", true }, + { "claim-justice.com", true }, { "claimconnect.us", true }, { "claimflights.at", true }, { "claimflights.co.uk", false }, @@ -27877,7 +32718,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "claimnote.com", true }, { "claimpilot.com", true }, { "claimspharmacy.services", true }, - { "claireeknowles.com", true }, + { "claireandjamie.com", true }, + { "clairebabai.nl", true }, { "clairegold.com", true }, { "clairelefort-architectes.com", true }, { "clairescastles.co.uk", true }, @@ -27921,6 +32763,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clara-solis.eu", true }, { "clara.de", true }, { "claraanalytics.com", true }, + { "clarachampbell.com", true }, { "clarasegura.tk", true }, { "clare-landmark.com", true }, { "clare3dx.com", true }, @@ -27933,9 +32776,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clarilog.com", true }, { "clarinet.ga", true }, { "clarinexonline.gq", true }, - { "clarins-unlimited.fr", true }, { "clario.co", true }, - { "clarisights.com", true }, + { "clarionpolicepa.gov", true }, + { "clarisights.com", false }, { "clarisonicmiareview.tk", true }, { "clariti-health.com", true }, { "claritician.com", true }, @@ -27943,12 +32786,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "claritin.ml", true }, { "clarity-c2ced.appspot.com", true }, { "claritydesignworks.com", true }, + { "clarityskin.com", true }, { "clark.de", true }, { "clarkaesthetics.com", true }, { "clarkassociatesinc.biz", true }, { "clarkcoky.gov", true }, { "clarkcommagere.com", true }, { "clarkcountyar.gov", true }, + { "clarkcountynv.gov", true }, { "clarkcountywi.gov", true }, { "clarkecoenergy.com", true }, { "clarkelectricalservices.com.au", true }, @@ -27957,12 +32802,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clarkinc.biz", true }, { "clarkltl.com", true }, { "clarknationalaccounts.com", true }, + { "clarkpro.biz", true }, { "clarksburgma.gov", true }, + { "clarksmeathouse.com", true }, { "clarkstatecontract.com", true }, { "clarkstown.gov", true }, + { "clarksvilletn.gov", true }, { "clarkturnkey.com", true }, + { "clarktwpmi.gov", true }, { "clarkwinkelmann.com", true }, { "clarotvpromocao.com.br", true }, + { "claroty.com", true }, { "clarr.tk", true }, { "clasa-mea.tk", true }, { "clase3.tk", true }, @@ -27973,32 +32823,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "class-zone.tk", true }, { "class.com.au", true }, { "class66.tk", true }, + { "classbasic.com", true }, + { "classcreator.io", true }, { "classdesignhome.com", true }, { "classdojo.com", true }, { "classentials.com", true }, { "classic-diva.cf", true }, { "classic-diva.ga", true }, { "classic-diva.ml", true }, - { "classic-mu.com", true }, { "classicalchaos.tk", true }, { "classicalpilates.ca", true }, { "classicbakes.com", true }, { "classiccrew.tk", true }, { "classiccrewhaiti.tk", true }, { "classiccutstupelo.com", true }, + { "classicdriver.com", true }, { "classicfg.com.au", true }, { "classichits.tk", true }, { "classichorrormovie.tk", true }, { "classichorrornetwork.tk", true }, { "classichost.gq", true }, { "classicmagazine.ml", true }, - { "classicpattern.com", true }, + { "classicnova.com", true }, + { "classicnovaandperformance.com", true }, { "classics.io", true }, { "classicstories.tk", true }, - { "classictheatrecumbria.co.uk", true }, + { "classictheatrecumbria.co.uk", false }, { "classificadostodaoferta.tk", true }, - { "classificar.com.br", true }, { "classifiedspoint.tk", true }, + { "classiques-garnier.com", true }, { "classlastsforever.co.nz", true }, { "classpoint.cz", true }, { "classroom.google.com", true }, @@ -28006,30 +32859,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "classsitterers.ga", true }, { "classsitterest.ga", true }, { "classx.tk", true }, + { "classyng.com", true }, { "clatsopcounty.gov", true }, { "claude.me", true }, { "claude.photo", true }, { "claudeleveille.com", false }, { "claudia-halfter.de", true }, { "claudia-makeup.com", true }, - { "claudia-urio.com", false }, { "claudiahalfter.de", true }, { "claudiasnederlandsehangoordwergjes.tk", true }, - { "claudiaswea.com", true }, { "claudiney.eti.br", true }, { "claudiney.id", true }, { "claudiney.info", true }, { "claudiohdz.com", true }, + { "claumarservice.com", true }, + { "claunchdesign.com", true }, { "claus-bahr.de", true }, { "claus-cremer.tk", true }, - { "clauseriksen.net", true }, + { "clausematch.com", true }, + { "clauseriksen.net", false }, { "clausewitz-gesellschaft.de", true }, { "claustrofobia.tk", true }, + { "clautopieces.fr", true }, { "clav1d.com", true }, { "clavit4.zone", true }, { "clawe.de", true }, { "clawedfrogs.tk", true }, - { "clayandcottonkirkwood.com", true }, + { "clawington.com", true }, { "claycountyne.gov", true }, { "clayelections.gov", true }, { "claygregory.com", true }, @@ -28038,44 +32894,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "claytonca.gov", true }, { "claytoncondon.com", true }, { "claytonjunior.tk", true }, + { "claytonkendall.com", true }, { "claytwpmi.gov", true }, + { "clb.org.hk", true }, { "clbmconsultancy.com", true }, { "clco.fr", true }, { "clcv-brest.fr", true }, + { "cld.cx", false }, { "cldejessey.com", true }, { "cldfile.com", true }, { "cldinc.com", true }, { "cldly.com", true }, { "clean-cubes.com", true }, { "clean-mailbox.com", true }, + { "clean-servicee.com", true }, { "clean-water-and-sanitation.tk", true }, { "cleancarbon24.de", true }, { "cleanclearwater.co.uk", true }, { "cleandetroit.org", true }, { "cleandrains.com.au", true }, { "cleanenergy.gov", true }, + { "cleanenergywire.org", true }, { "cleaner-en.com", true }, { "cleaner.tk", true }, + { "cleanerstool.com", true }, { "cleanertoday.com", true }, + { "cleanertool.co.uk", true }, { "cleanfacesest.ga", true }, { "cleanforce.ca", true }, { "cleango.pl", true }, - { "cleangreen.tech", true }, - { "cleangroup.in.ua", true }, { "cleanhortihigienizados.com.br", true }, - { "cleanhouse2000.us", true }, { "cleaningbyrosie.com", false }, { "cleaningcarpet.ga", true }, { "cleaningservicejulai.com", true }, + { "cleaningsolutioncorp.com", true }, + { "cleaningwarehouse.ie", true }, { "cleankey.jp", false }, - { "cleanoop.com", true }, - { "cleansewellness.com", true }, + { "cleanmycurtains.ie", true }, + { "cleanmyfloor.ie", true }, + { "cleanmymattress.ie", true }, + { "cleanmyupholstery.ie", true }, + { "cleanrun.com", true }, { "cleanshield99.com", true }, { "cleanspeak.com", true }, { "cleansweepaa.com", true }, + { "cleanuri.com", true }, { "cleanway.dk", true }, - { "clear.ml", true }, - { "clearance365.co.uk", true }, + { "cleanweb.solutions", true }, + { "clear-eyes.se", true }, + { "clearbit.com", true }, { "clearbooks.co.uk", true }, { "clearbookscdn.uk", true }, { "clearbrand.com", true }, @@ -28083,23 +32950,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clearchatsandbox.com", true }, { "clearcreekcountyco.gov", true }, { "clearcreekcountydronepilot.com", true }, + { "cleared.io", true }, { "clearer.cloud", true }, + { "clearfieldcountypa.gov", true }, + { "clearfieldpa.gov", true }, { "cleargage.com", true }, { "cleargoals.com", true }, { "cleargrowshine.com", true }, { "clearhumor.tk", true }, { "clearip.com", true }, { "clearlakechildrenscenter.com", true }, + { "clearlawinstitute.com", true }, { "clearlinux.org", true }, - { "clearmaxx.ch", true }, + { "clearmatics.com", true }, { "clearpay.co.uk", true }, { "clearsafetalk.com", true }, - { "clearsailingproperties.com", true }, { "clearsoftcomputacion.com", true }, { "clearspringinsurance.com", true }, { "clearstep.health", true }, { "clearstoneip.com", true }, + { "cleartheear.co.uk", true }, { "clearview-creative.com", true }, + { "clearviewok.gov", true }, { "clearviewwealthprojector.com.au", true }, { "clearvoice.com", true }, { "clearvoice.org", false }, @@ -28107,34 +32979,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clearvoiceu.com", false }, { "clearwateragency.com.au", true }, { "clearwaterbidets.com", true }, + { "clearwatercountyid.gov", true }, + { "clearwatercountymn.gov", true }, { "clearwaterseries.tk", true }, { "clearwatersexhealth.com", true }, - { "clearwayadvice.com.au", true }, { "cleary.xyz", true }, - { "cleatis.fr", true }, { "cleelandspecialists.com.au", true }, { "cleelum.gov", true }, { "clegc-gckey.gc.ca", true }, + { "clemdesign.eu", true }, { "clemency.com", true }, { "clemens-bartz.de", true }, { "clemensbartz.de", true }, { "clemenscompanies.com", true }, { "clemenshermanns.de", true }, { "clement-gruin.fr", true }, + { "clementavenue.co.uk", true }, { "clementfevrier.fr", true }, + { "clementlodge.co.uk", true }, { "clementluck.com", true }, { "clementsfamily.co", true }, - { "clemovementlaw.com", true }, + { "clendeninwv.gov", true }, { "cleo.com", true }, { "cleocinonline.gq", true }, { "cleova.com", true }, { "cles-asso.fr", true }, { "cles.jp", true }, + { "clesurporte.be", true }, { "clevelandheights.gov", true }, - { "clevelandohioinvesting.com", true }, { "clevelandokla.com", true }, { "clever-datenschutz.de", true }, - { "clever-fit.com", true }, { "clever-invest.cf", true }, { "clever-invest.ga", true }, { "clever-invest.gq", true }, @@ -28149,6 +33023,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cleverlance.es", true }, { "cleverlance.sk", true }, { "clevermatch.com", true }, + { "clevermemo.com", true }, + { "clevermo.gov", true }, { "cleveroad.com", true }, { "cleveronmobility.com", true }, { "cleverskateboard.com", true }, @@ -28157,6 +33033,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cleververmarkten.de", true }, { "clevisto.com", true }, { "clevon.com", true }, + { "clevoninvestors.com", true }, { "clevvi.com.au", true }, { "clevyr.ai", true }, { "clevyr.biz", true }, @@ -28188,18 +33065,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clevyrstudios.com", true }, { "clevyrvr.com", true }, { "cleysense.com", false }, - { "clic-et-site.com", true }, + { "clhg.com", true }, { "clic-music.com", true }, { "clic29.fr", true }, { "clica.net", true }, - { "clicandfioul.com", true }, - { "clicheshishalounge.co.uk", true }, { "click-7979.com", true }, { "click-cat.tk", true }, { "click-generator.com", true }, - { "click2order.co.uk", true }, + { "click2affiliate.xyz", true }, + { "click2bet.top", true }, { "click4click.ga", true }, - { "clickalphaville.com.br", true }, + { "clickapro.com", true }, { "clickbasin.co.uk", true }, { "clickcell.tk", true }, { "clickclickfish.com", true }, @@ -28209,9 +33085,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clickclock.cc", true }, { "clickcollect.boutique", true }, { "clickdebateest.ga", true }, + { "clickdefense.io", true }, { "clickdocs.ca", true }, { "clickenergy.com.au", true }, + { "clickforspeed.com", true }, { "clickforum.cf", true }, + { "clickfreescore.com", true }, + { "clickhelp.com", true }, { "clickheretobegin.tk", true }, { "clickhost.com.au", true }, { "clickhouse.tech", true }, @@ -28220,19 +33100,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clickipo.com", true }, { "clickkon.ml", true }, { "clickmeeting.com", true }, - { "clickopenhuis.com", true }, { "clickpeak.digital", true }, { "clickphobia.ga", true }, - { "clickpool-server.de", true }, { "clickpress.tk", true }, { "clickrecados.tk", true }, { "clickrising.com", true }, { "clicks.co.za", true }, { "clicks24.cf", true }, + { "clicksacolas.com", true }, + { "clickseek.in", true }, { "clicksengage.com", true }, + { "clickspeedtest.net", true }, { "clickstart.ml", true }, + { "clicktenisdemesa.com.br", false }, { "clicktest.cf", true }, { "clickthebucket.com", true }, + { "clicktheright.top", true }, + { "clicktodiscount.com", true }, { "clicktolinkb.gq", true }, { "clicktrans.com", true }, { "clicktrans.de", true }, @@ -28243,29 +33127,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clicoclick.com", true }, { "clien.net", true }, { "client.coach", false }, + { "client.photos", true }, { "client24.tk", true }, { "clientboss.com", true }, { "clientcms.co.uk", true }, + { "clientify.com", true }, + { "clientpay.com", true }, { "clientportal.com", true }, + { "clientportal.photo", true }, { "cliff-rilly-website.tk", true }, { "cliffbreak.de", true }, { "cliffburton.tk", true }, { "clifflu.net", true }, + { "cliftonaz.gov", true }, { "cliftonheritage.net", true }, { "clik.ga", true }, + { "clima-techservices.co.uk", true }, + { "clima.vip", true }, { "climaencusco.com", true }, { "climaffaires.com", true }, - { "climatechange2021.org", true }, { "climatecrafters.com", true }, - { "climateinteractive.org", true }, { "climatejustice.nyc", true }, { "climatgate.tk", true }, { "climaticequipment.tk", true }, { "climatizzatore.it", false }, { "climatizzatore.roma.it", true }, { "climatizzatoriprezzi.it", true }, + { "climaventa.net", true }, { "climaverde.gr", true }, + { "climb4achild.org", true }, { "climbing.tk", true }, + { "climbinggear.info", true }, + { "climbsoill.com", true }, + { "climeradar.com", true }, { "clinchcountyga.gov", true }, { "clindamycin-150mg.ga", true }, { "clindamycin-phosphate.ga", true }, @@ -28278,6 +33172,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clindoeilmontagne.com", false }, { "clingout.com", true }, { "clinic-manager.academy", true }, + { "clinic-narcom.ru", true }, { "clinica.zapto.org", true }, { "clinicaarques.es", true }, { "clinicadeesteticacontagem.com.br", true }, @@ -28293,12 +33188,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clinicaltrials.gov", true }, { "clinicamagdalena.com.co", true }, { "clinicarayanelacerda.com.br", true }, + { "clinicaresplandecer.com.br", true }, { "clinicaschirmer.com", true }, { "clinicasesteticas.com.br", true }, { "clinicasmedicas.com.br", true }, { "clinicasveterinarias.info", true }, { "clinicatorino.com.br", true }, - { "clinicminds.com", true }, { "clinicortinascali.com", true }, { "clinicos.cl", true }, { "cliniko.com", true }, @@ -28307,29 +33202,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cliniquedacupuncturelajeunesse.com", true }, { "cliniquevethuy.be", true }, { "clinlife.com", true }, + { "clinlife.de", true }, + { "clinlife.us", true }, + { "clinpharm.vn", true }, + { "clinsoftcsd.com", true }, + { "clinstatdevice.com", true }, { "clintburnett.com", true }, + { "clinthorne.com", true }, { "clintonbloodworth.com", true }, { "clintoncomo.gov", true }, + { "clintoncountyin.gov", true }, { "clintoncountyny.gov", true }, { "clintoncountypa.gov", true }, { "clintonlibrary.gov", true }, { "clintonoh.gov", true }, { "clintonohfire.gov", true }, + { "clintonsavings.com", true }, { "clintontwpnj.gov", true }, { "clintonvillewi.gov", true }, { "clio-dev2.com", true }, + { "cliomi.gov", true }, { "clip.cafe", true }, - { "clip.ovh", true }, { "clipchamp.com", true }, { "clipclip.com", true }, - { "clippingpathsupport.com", true }, { "clippings.com", true }, { "clips.ga", true }, { "cliquetis.ddns.net", true }, { "cliqz.com", true }, + { "clirnet.com", true }, { "clive.io", true }, { "cliveptr.cc", true }, - { "clixa.com", true }, + { "clkbw.com", true }, + { "clkdmg.site", true }, { "clmbr.ch", false }, { "clmde.de", true }, { "clmz.nl", true }, @@ -28339,14 +33243,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clnshrk.club", false }, { "cloaked.ch", false }, { "clochix.net", true }, + { "clock3.com", true }, { "clockcaster.com", true }, { "clockka.com", true }, { "clockka.it", true }, { "clocklab.design", true }, + { "clocklink.com", true }, + { "clockster.com", true }, { "clodo.it", true }, { "clodoteam.ga", true }, + { "cloeri.com", true }, { "clojurescript.ru", true }, - { "clok.nl", true }, { "clokdways.com", true }, { "clomid100mg.ga", true }, { "clomid50mg.cf", true }, @@ -28364,9 +33271,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clooi.tk", true }, { "cloppenburg-autmobil.com", true }, { "cloppenburg-automobil.com", true }, - { "clorik.com", true }, + { "cloppenburg-gruppe.de", true }, { "clorinda.tk", true }, { "clorophilla.net", true }, + { "cloroxpro.com", true }, { "closecross.com", true }, { "closeli.cn", true }, { "closeli.com", true }, @@ -28376,7 +33284,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "closetedsoul.com", true }, { "closets-cheap.tk", true }, { "closingholding.com", true }, + { "closingthegap.gov.au", true }, { "closrr.cloud", true }, + { "closrr.com", true }, { "clothes-for-school.tk", true }, { "clothilde-wattelier.fr", true }, { "clothing-2010.tk", true }, @@ -28386,17 +33296,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloud-glaeser.dedyn.io", true }, { "cloud-hair.jp", true }, { "cloud-lines.ml", true }, - { "cloud-org.com", true }, { "cloud-screen.com", true }, { "cloud-world.tk", true }, { "cloud.bugatti", true }, { "cloud.fail", true }, { "cloud.google.com", true }, { "cloud.gov", true }, + { "cloud1.nl", true }, { "cloud10.io", true }, + { "cloud10solutions.technology", true }, + { "cloud24.kz", true }, + { "cloud24x7.us", true }, { "cloud255.com", true }, { "cloud42.ch", false }, - { "cloud7.news", true }, { "cloud9bouncycastlehire.com", true }, { "cloud9vets.co.uk", true }, { "cloudads.ga", true }, @@ -28405,18 +33317,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudalice.net", true }, { "cloudandco.co", true }, { "cloudapps.digital", true }, + { "cloudatabases.com", true }, + { "cloudatedge.com", true }, { "cloudav.pt", true }, { "cloudbees.com", true }, + { "cloudbees.io", true }, { "cloudberlin.goip.de", true }, { "cloudbleed.info", true }, { "cloudboard.fr", true }, { "cloudbool.com", true }, { "cloudbreaker.net", true }, { "cloudbrothers.info", false }, + { "cloudbytesconnect.com", true }, { "cloudcaprice.net", true }, + { "cloudcastles.xyz", true }, { "cloudcert.org", true }, { "cloudchart.site", true }, - { "cloudcite.net", true }, { "cloudcloudcloud.cloud", true }, { "cloudcomputingtechnologies.com", true }, { "cloudcybersecure.com", true }, @@ -28428,7 +33344,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clouddomain.tk", true }, { "clouddownloader.net", true }, { "cloudeezy.com", true }, + { "cloudengage.com", true }, { "cloudera.com", true }, + { "cloudevolutionforum.com.br", true }, { "cloudeways.com", true }, { "cloudey.net", true }, { "cloudfast.cf", true }, @@ -28437,7 +33355,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudfinders.cf", true }, { "cloudfit.tech", true }, { "cloudflare-dns.com", true }, - { "cloudflare.bar", true }, { "cloudflare.com", true }, { "cloudflare.irish", true }, { "cloudflareonazure.com", true }, @@ -28445,14 +33362,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudfree.shop", true }, { "cloudfree.top", true }, { "cloudfudge.com", true }, + { "cloudhero.ai", true }, { "cloudia.org", true }, { "cloudily.com", true }, { "cloudimproved.com", true }, { "cloudimprovedtest.com", true }, { "cloudindex.io", true }, { "cloudinfinit.com", true }, + { "cloudit.co", true }, { "cloudix.cf", true }, - { "cloudlandmark.com", true }, { "cloudlessdreams.com", false }, { "cloudlfront.net", true }, { "cloudlight.biz", true }, @@ -28460,6 +33378,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudmanagedbuilding.com", true }, { "cloudmanagedbuildings.com", true }, { "cloudmarathi.work", true }, + { "cloudmarket.com.br", false }, + { "cloudmax.es", true }, { "cloudmigrator365.com", true }, { "cloudmoney.tk", true }, { "cloudmyhome.site", true }, @@ -28467,9 +33387,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudnexusit.com", true }, { "cloudninelandscapedesign.com", true }, { "cloudnote.cc", true }, + { "cloudnovi.com", true }, { "cloudns.net", true }, { "cloudofertas.com.br", true }, - { "cloudomation.com", true }, { "cloudone.co.il", true }, { "cloudoptimizedsmb.com", true }, { "cloudoptimus.com", true }, @@ -28479,35 +33399,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudplan.nl", true }, { "cloudpole.de", true }, { "cloudpublic.pro", true }, - { "cloudretails.com", true }, { "cloudrive.cf", true }, { "cloudsavvyit.com", true }, { "cloudscribe.com", true }, { "cloudse.co.uk", true }, { "cloudsec.tk", true }, { "cloudsecurityalliance-europe.org", true }, + { "cloudsecurityalliance.ai", true }, + { "cloudsecurityalliance.ca", true }, { "cloudsecurityalliance.cloud", true }, + { "cloudsecurityalliance.cn", true }, { "cloudsecurityalliance.com", true }, + { "cloudsecurityalliance.events", true }, { "cloudsecurityalliance.info", true }, { "cloudsecurityalliance.net", true }, { "cloudsecurityalliance.org", true }, + { "cloudsecurityalliance.social", true }, { "cloudsecurityalliance.training", true }, { "cloudsecurityalliancelabs.com", true }, { "cloudsecuritycommunity.org", true }, { "cloudsecuritycongress.net", true }, { "cloudsecuritycongress.org", true }, { "cloudseptam.fr", true }, - { "cloudservice.io", true }, { "cloudsharp.io", true }, { "cloudshiftgroup.co.uk", true }, { "cloudsign.jp", true }, { "cloudskill.in", true }, { "cloudsmart.tech", true }, - { "cloudsmith.com", true }, + { "cloudsmith.com", false }, { "cloudspace-analytics.com", true }, { "cloudspeedy.net", true }, { "cloudspire.net", true }, - { "cloudstk.com", true }, { "cloudstoragecompare.com", true }, { "cloudstored.nl", true }, { "cloudstress.ga", true }, @@ -28515,7 +33437,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudsweeper.de", true }, { "cloudsys.dnsalias.net", true }, { "cloudteam.de", true }, + { "cloudtec.srv.br", true }, { "cloudtelemanagement.com", true }, + { "cloudtensolutions.com", true }, { "cloudtocloud.ddns.net", false }, { "cloudtocloud.tk", true }, { "cloudtropia.de", true }, @@ -28524,38 +33448,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cloudturing.com", true }, { "cloudu.de", true }, { "cloudup.com", true }, + { "cloudvoor.eu", true }, + { "cloudvoor.net", true }, + { "cloudvoor.nl", true }, { "cloudwajs.com", true }, + { "cloudwalk.io", false }, { "cloudwayc.com", true }, { "cloudwayds.com", true }, - { "cloudwaye.com", true }, { "cloudwayq.com", true }, { "cloudways.cm", true }, { "cloudways.pro", true }, { "cloudwebservices.nl", true }, { "cloudwellmarketing.com", true }, - { "cloudwise.nl", true }, { "cloudwithlightning.net", true }, - { "cloudwxys.com", true }, { "cloudzentechnologies.com", true }, - { "clouglobal.com", true }, + { "clouglobal.com", false }, { "cloutcloset.ga", true }, { "clouvways.com", true }, { "clouwways.com", true }, - { "clouz.de", true }, + { "clouz.de", false }, { "clover-sendai.com", true }, + { "cloverleafmoving.com", true }, + { "cloversonoma.com", true }, { "clovertwo.com", true }, + { "clovisdigital.com", true }, + { "clovisoncology.com", true }, { "clovisplumbingservices.com", true }, { "clovorin.gq", true }, { "clowd.haus", true }, { "clowd.ovh", true }, { "clown-clan.tk", true }, + { "clown-workshop.de", true }, + { "clown-zappo.de", true }, { "clownish.co.il", true }, { "cloxy.com", true }, + { "cloydnco.com", true }, + { "cloydnco.com.jm", true }, + { "cloydncojamaica.com.jm", true }, + { "cloyes.com", true }, { "cloze.com", true }, { "clpoule.nl", true }, { "clr3.com", true }, { "cls.im", true }, { "clsimage.com", true }, + { "clsmalta.eu", true }, { "clsoft.ch", true }, { "clu-in.org", true }, { "cluadmin.de", true }, @@ -28568,18 +33504,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "club-eclipse.tk", true }, { "club-leondehuanuco.tk", true }, { "club-night.tk", true }, + { "club-no4.de", true }, { "club-oz.tk", true }, { "club-premiere.com", true }, { "club-reduc.com", true }, { "club-slow.jp", true }, { "club-soul.tk", true }, - { "club-yy.com", true }, + { "club-transformation-digitale.com", true }, { "club.zj.cn", true }, { "club10x.com", true }, { "clubanimal.cl", true }, { "clubapk.com", true }, { "clubatleticonacionalpotosi.tk", true }, { "clubbers-comtois.tk", true }, + { "clubcollinssquare.com.au", true }, + { "clubcompetition.co.uk", true }, { "clubcorolla.cf", true }, { "clubcorsavenezuela.com", false }, { "clubcupido.com.br", true }, @@ -28588,6 +33527,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clubeamizade.com", true }, { "clubeamizade.com.pt", true }, { "clubeamizade.pt", true }, + { "clubedalutashop.com", true }, { "clubedaquimica.tk", true }, { "clubedegeografia.tk", true }, { "clubedoberloque.com.br", true }, @@ -28609,23 +33549,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clubetravel.com.pt", true }, { "clubetravel.net", true }, { "clubetravel.org", true }, - { "clubetravel.pt", true }, { "clubexpress.com", true }, { "clubfactory.ml", true }, { "clubfailed.tk", true }, { "clubfamily.de", true }, + { "clubforce.com", true }, { "clubfunday.ga", true }, { "clubgalileo.com.ec", true }, { "clubgenesis.tk", true }, { "clubgls.com", true }, + { "clubhouseohio.org", true }, { "clubhousetownhomes.com", false }, { "clubic.com", true }, { "clubinhodobaby.com.br", true }, + { "clubinholiterario.com", true }, { "clubkalinka.tk", true }, { "clublevelsports.com", true }, { "clublibertad.tk", true }, { "clublime.com.au", true }, + { "clubmacadamia.com", true }, + { "clubmacadamia.net", true }, + { "clubmacadamia.org", true }, { "clubmagellan.tk", true }, + { "clubmahindra.com", true }, { "clubmania.tk", true }, { "clubmarina.store", true }, { "clubmate.rocks", true }, @@ -28638,23 +33584,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clubon.space", true }, { "clubpes.tk", true }, { "clubpeugeot405.tk", true }, + { "clubrubionu.com", true }, { "clubserveers.ga", true }, { "clubsuccessjapan.com", true }, { "clubtamarugal.tk", true }, { "clubtecknocore.tk", true }, - { "clubtraining.com.au", true }, + { "clubtraining.com.au", false }, { "clubtravel.com.pt", true }, { "clubtur.dk", true }, + { "clubvodoley.ru", true }, { "clubvttlesloupsdemaixe.tk", true }, { "clubvwgolf.com", true }, + { "clubzap.org", true }, { "clubzero.co", true }, { "clubzul.com", true }, { "cluedosenvivo.com", true }, { "cluefluest.ga", true }, { "clueless.ga", true }, { "clueless.tk", true }, + { "cluelesscraft.com", true }, + { "cluin.org", true }, { "cluj.apartments", true }, { "cluj.help", true }, + { "clun.top", false }, { "clush.pw", true }, { "cluster.biz.tr", true }, { "cluster446.fr", true }, @@ -28663,10 +33615,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "clutch.ua", true }, { "clvr.sh", true }, { "clvs7.com", false }, + { "clweb.ch", true }, { "clwrota.com", true }, { "clycat.ru", true }, { "clyde-tx.gov", true }, + { "clydewi.gov", true }, { "cm-agueda.pt", true }, + { "cm-funchal.pt", true }, + { "cm-law.eu", true }, { "cm-loures.pt", true }, { "cm-penalvadocastelo.pt", true }, { "cm-pombal.pt", true }, @@ -28675,15 +33631,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cm-terrasdebouro.pt", false }, { "cm-valenca.pt", false }, { "cm-vpaguiar.pt", true }, + { "cm1xbet.com", true }, + { "cm3.pw", false }, { "cmaa.it", true }, - { "cmacacias.ch", true }, { "cmadeangelis.it", true }, { "cmalet-avocat.fr", true }, { "cmavs.com", true }, - { "cmc.pt", true }, + { "cmbeautiful.com", true }, + { "cmbs.loans", true }, { "cmcbank.co.in", true }, { "cmcc.network", true }, - { "cmcelectrical.com", true }, + { "cmcjanuary.in", true }, { "cmcressy.ch", true }, { "cmd2021acm.com", true }, { "cmdline.org", true }, @@ -28694,7 +33652,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cmfaccounting.com", false }, { "cmfcuro.com", true }, { "cmftech.com", true }, - { "cmgacheatcontrol.com", true }, + { "cmfuchs.de", true }, + { "cmhcinc.org", true }, { "cmi.no", true }, { "cmillrehab.com", true }, { "cmkr.at", true }, @@ -28702,6 +33661,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cmlancy.ch", true }, { "cmlcpa.ca", true }, { "cmlignon.ch", true }, + { "cmmcinfo.org", true }, { "cmn-group.com", false }, { "cmn-groupe.com", false }, { "cmngroup.com", false }, @@ -28710,114 +33670,148 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cmperalta.tk", true }, { "cmplainpalais.ch", true }, { "cmrconstructions.com.au", true }, - { "cmrss.com", true }, + { "cmrcustomcreations.com", true }, + { "cmrlink.org", true }, + { "cmrnw.com", true }, { "cms-mania.tk", true }, { "cms-service24.de", true }, { "cms-weble.jp", true }, { "cms-world.co.jp", true }, { "cmsasia.co", true }, - { "cmserviscz.cz", true }, + { "cmscompany.de", true }, + { "cmsdca.gov", true }, + { "cmserviscz.cz", false }, { "cmskeyholding.co.uk", true }, { "cmskeyholding.com", true }, { "cmskh.co.uk", true }, + { "cmsnl.com", true }, + { "cmsonline.com", true }, { "cmsua.ca", true }, { "cmtportal.co.uk", true }, + { "cmtso.com", true }, { "cmv.gr", true }, + { "cmveraopersonalizados.com.br", true }, + { "cmw.net", true }, + { "cmweb.xyz", true }, { "cmweller.com", true }, { "cn.search.yahoo.com", false }, + { "cn2euportugal.com", true }, { "cn8522.com", true }, - { "cna5.net", true }, - { "cna5.org", true }, + { "cna-ecuador.com", true }, + { "cna.com.br", true }, { "cnabogota.tk", true }, + { "cnairgroupstore.com", true }, { "cnam-idf.fr", true }, { "cnaprograms.online", true }, { "cnatraining.network", true }, { "cnb.ie", true }, + { "cnb1901.com", true }, { "cnbs.ch", true }, { "cnc-lehrgang.de", true }, + { "cncexplorer.com", true }, { "cncfraises.fr", true }, - { "cnclp.org.uk", false }, + { "cnclp.org.uk", true }, { "cncn3.cn", true }, { "cncollege.tk", true }, { "cncr.ga", true }, { "cncrans.ch", false }, - { "cncs.gob.do", true }, { "cncs.gov.pt", true }, { "cnetw.xyz", true }, + { "cnews.ru", true }, { "cnexchange.com", true }, + { "cnfei.com", true }, { "cnfree.xyz", true }, { "cngvp.org", true }, { "cni-certing.it", true }, { "cni.net.id", true }, + { "cniec.com", true }, { "cnil.fr", true }, + { "cnitdog.com", true }, { "cnki.com", true }, { "cnlic.com", true }, + { "cnlongtex.com", true }, { "cnmi.gov", true }, { "cnmilaw.gov", true }, { "cnnc.jp", true }, { "cnnet.in", true }, + { "cnns.co.uk", true }, + { "cnnumerique.fr", true }, { "cnocsp.com", true }, + { "cnopera.com", true }, { "cnpkg.org", true }, { "cnpy.gdn", true }, - { "cnre.eu", true }, + { "cnslub.ru", true }, { "cnss.gob.do", true }, - { "cnss.io", true }, { "cntraveller.com", true }, { "cnvt.fr", true }, + { "cnxiangxian.com", true }, + { "co-construisonsdemain.org", true }, { "co-founder-stuttgart.de", true }, + { "co-store.com", true }, { "co-yutaka.com", true }, + { "co.fo", true }, { "co.lu", true }, { "co.search.yahoo.com", false }, + { "co.td", true }, { "co2eco.cn", false }, { "co2fr.ee", false }, - { "coach-enligne.fr", true }, + { "co3app.com", true }, + { "coa.gov.ph", true }, { "coach-hpe.ch", false }, - { "coach-immobilier-neuf.fr", true }, - { "coach.org.uk", false }, - { "coachapp-ipass.herokuapp.com", true }, + { "coach.org.uk", true }, + { "coachablebyabel.nl", true }, { "coachbakery.com", true }, - { "coachezmoi.ch", false }, + { "coaches-website.de", true }, { "coachinfopreneur.com", true }, + { "coaching-aus-leidenschaft.com", true }, { "coaching-harmonique.fr", true }, { "coaching-impulse.ch", false }, { "coachingforleaders.com", true }, + { "coachingmillenium.com", true }, { "coachingsantcugat.cat", true }, { "coachjehond.nl", true }, - { "coachjelevennu.be", true }, { "coachment.dk", true }, { "coachrobcampos.com", true }, - { "coactive.com", true }, + { "coactive.ai", true }, { "coag.gov.au", true }, + { "coagclinic.com", true }, + { "coalanews.com", true }, + { "coalitieduurzamedigitalisering.nl", true }, { "coalition.tk", true }, { "coalmen.ga", true }, { "coalpointcottage.com", true }, { "coalvillebasketball.tk", true }, { "coaojarlos.tk", true }, + { "coasa.me", false }, { "coassessment.com", true }, { "coast.tk", true }, + { "coastalmotorcoach.com", true }, + { "coastalpayroll.net", true }, { "coastalphysie.com", true }, - { "coastalpowder.com.au", true }, - { "coastalurgentcarehouma.com", true }, - { "coastalurgentcarethibodaux.com", true }, + { "coastalpointe.com", true }, + { "coastalsignsplus.com", true }, { "coastline.net.au", true }, - { "coastmedicalservice.com", true }, { "coastnews.cf", true }, { "coathangastrangla.com", true }, { "coathangastrangler.com", true }, { "coathangerstrangla.com", true }, { "coathangerstrangler.com", true }, { "coating-equipment.com", true }, + { "coatl-industries.com", true }, { "coats-and-jackets.tk", true }, { "coatsandcocktails.org", true }, { "cobaka.tk", true }, { "cobaltia.org", true }, { "cobbcountygeorgia.ml", true }, + { "cobitis.net", true }, + { "cobiz.nl", true }, { "coboxviagens.com.br", true }, { "cobracastles.co.uk", true }, { "cobralelie.nl", true }, { "cobranzasimg.com", true }, { "coc.de", true }, { "cocaine.ninja", true }, + { "cocaine.wiki", true }, { "cocalc.com", true }, { "cocareonline.com", true }, { "coccinellaskitchen.com", true }, @@ -28832,9 +33826,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cochesteledirigidos.net", true }, { "cochin-brahma.tk", true }, { "cochise.gov", true }, + { "cochranwriting.com", true }, + { "cocina.guru", true }, { "cocinaconalegria.com", true }, + { "cocinaconalegria.shop", true }, { "cocinandoenelsalnes.com", true }, { "cocinasazahara.tk", true }, + { "cocinerosmxporelmundo.com", true }, { "cocinoyo.com", true }, { "cock.lt", true }, { "cockedey.in", true }, @@ -28842,27 +33840,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cockerspanielingles.com.br", true }, { "cockfile.com", true }, { "cockmonkey.tk", true }, + { "cocktail.network", true }, { "cockybot.com", true }, { "coco-01.gq", true }, + { "coco-apo.de", true }, { "coco-cool.fr", true }, { "coco-line.ch", true }, + { "coco.one", true }, { "cocoa-job.jp", true }, { "cocoafl.gov", true }, + { "cocoamexico.com", true }, { "cocobollo-sallanches.com", true }, { "cocobrother.ddnss.de", true }, - { "cocodroid.com", false }, + { "cocodroid.com", true }, + { "cocogolfcarts.com", true }, { "cocokmobi.ga", true }, { "cocolink.jp", true }, - { "cocoloco.co.nz", true }, - { "cocomelody.co.za", true }, { "cocomelody.com", false }, { "cocomelody.de", true }, { "cocomelody.jp", true }, { "coconutguy.gq", true }, + { "coconutio.com", true }, { "coconutoil.ml", true }, - { "coconutoil24.com", true }, { "coconuts-fashion.gr", true }, { "coconutscrapbooking.com", true }, + { "cocopah.gov", true }, + { "cocopipeline-br-development.herokuapp.com", true }, { "cocoscastles.co.uk", true }, { "cocosunbeds.co.uk", true }, { "cocounty.org", true }, @@ -28877,9 +33880,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cod-ggw.ml", true }, { "cod88.cc", true }, { "coda.io", true }, - { "coda.moe", true }, - { "coda.today", true }, { "coda.world", true }, + { "coda18.gov", true }, + { "coda23.gov", true }, { "codabix.com", true }, { "codabix.de", true }, { "codandn.com", true }, @@ -28892,13 +33895,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "code-server.host", true }, { "code-vikings.de", true }, { "code-well.com", true }, + { "code.cool", true }, { "code.facebook.com", false }, { "code.fm", true }, { "code.google.com", true }, { "code.gov", true }, - { "code.taxi", true }, { "code4.hk", true }, - { "code67.com", true }, { "code9000.be", true }, { "codeandpeace.com", true }, { "codeandsupply.co", true }, @@ -28908,16 +33910,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codebrasileiro.tk", true }, { "codebreak.tk", true }, { "codebreakers.it", true }, + { "codecatalyst.aws", true }, + { "codeclouds.com", true }, { "codeclub.gq", true }, { "codecolliders.com", true }, { "codecommunity.io", true }, + { "codecool.com", true }, { "codecrew.us", true }, { "codectron.com", true }, { "codedbyjim.nl", true }, { "codedelarouteenligne.fr", true }, { "codedo.info", false }, { "codedump.net", true }, - { "codedynasty.com", true }, { "codeeclipse.com", true }, { "codefaq.org", true }, { "codefather.ml", true }, @@ -28928,16 +33932,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codefordus.nrw", true }, { "codefoundry.it", false }, { "codegirl.tk", true }, + { "codeguided.com", true }, { "codehangar.io", true }, { "codehelper.ml", true }, { "codeheroes.fr", true }, { "codehupy.org.py", true }, + { "codehz.one", true }, { "codeidea.ga", true }, - { "codein.ca", false }, { "codeine.co.uk", true }, { "codeit.guru", true }, + { "codeit.pro", true }, { "codeit.us", true }, { "codejumper.ml", true }, + { "codekk.com", true }, { "codeloop.pw", true }, { "codemahrt.com", true }, { "codemperium.com", true }, @@ -28945,6 +33952,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codename-infinity.org", true }, { "codename24.tk", true }, { "codenamelungo.tk", true }, + { "codenetwork.com", true }, + { "codeninja.me", true }, { "codenlife.kr", true }, { "codenlife.xyz", true }, { "codenode.io", true }, @@ -28955,10 +33964,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codepoint.ml", true }, { "codepoints.net", false }, { "codepref.com", true }, + { "codeprotocols.com", true }, { "codeproxy.net", true }, - { "codera.co.uk", true }, + { "codepwn.win", true }, { "codercross.com", true }, { "codered.sh", true }, + { "codereduction.promo", true }, { "coderema.de", true }, { "coderema.eu", true }, { "coderescue.com", true }, @@ -28966,6 +33977,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codereview.chromium.org", true }, { "coderhangout.com", true }, { "coderjesus.com", true }, + { "coderme.com", true }, + { "codero.com", true }, { "coderofdreams.com", true }, { "coderoute-enligne.com", true }, { "coderpad.io", true }, @@ -28983,9 +33996,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codetahiche.com", true }, { "codetheweb.blog", true }, { "codetheworld.com", true }, - { "codetipi.com", true }, { "codetrack.se", true }, { "codetripping.net", true }, + { "codetwo.com", true }, { "codetwo.de", true }, { "codetwo.pl", true }, { "codeupstudios.com", true }, @@ -28998,79 +34011,95 @@ static const nsSTSPreload kSTSPreloadList[] = { { "codewild.de", true }, { "codewitchbella.com", true }, { "codewithalisha.ga", true }, - { "codewiz.xyz", true }, + { "codewithlove.blog", true }, { "codewrecks.com", true }, + { "codex.online", true }, { "codexpo.net", true }, - { "codeyellow.nl", true }, + { "codeysteelepornstar.com", true }, { "codezenith.com", true }, + { "codezeno.com.au", true }, { "codific.com", true }, + { "codific.eu", true }, { "codifique.tk", true }, { "codigodelbonusbet365.com", true }, + { "codigoexactodearea.com", true }, { "codigojose.com", true }, { "codigomusical.tk", true }, + { "codigosddd.com.br", true }, { "codigosmart.com", true }, + { "coding-aloud.nz", true }, { "coding-basic.tk", true }, + { "coding-treff.de", true }, { "coding.lv", true }, { "coding.net", true }, { "codingale.com", true }, + { "codingame.com", true }, + { "codingame.eu", true }, { "codingblog.org", true }, + { "codingforentrepreneurs.com", true }, { "codingforspeed.com", true }, { "codingfromhell.net", true }, { "codinginfinity.me", true }, + { "codingissimple.com", true }, { "codingnbb.com", true }, - { "codingrobots.com", true }, { "codish.ml", true }, { "codista.com", true }, - { "codo.digital", true }, { "cododigital.co.uk", true }, - { "codoozer.com", true }, { "codowned.com", true }, - { "codpwned.com", true }, + { "coduca88.com", true }, { "codulrutier.tk", true }, { "cody.sh", true }, { "codydostal.com", true }, { "codywy.gov", true }, { "coeburnva.gov", true }, { "coecho.net", true }, - { "coelmay.net", true }, + { "coedpictures.com", true }, + { "coeminna.edu.ng", false }, { "coenjutte.tk", true }, - { "coenraets.com", true }, { "coens.me.uk", true }, { "coentropic.com", true }, { "coenzima.com", true }, { "coequals.tk", true }, - { "cofbev.com", true }, { "cofense.at", true }, - { "coffee-mamenoki.jp", true }, - { "coffee-up.it", true }, + { "cofetaria-narcisa.ro", true }, + { "coffee-break.cc", true }, + { "coffee-like.com", true }, + { "coffee-webstore.com", true }, { "coffee.co.uk", true }, { "coffeebean.cf", true }, { "coffeebeanstudios.tk", true }, { "coffeebreak.bg", true }, + { "coffeechi.ir", true }, { "coffeeciel.com", true }, { "coffeeciel.com.tr", true }, { "coffeeholic.tk", true }, { "coffeehousewriters.com", true }, - { "coffeemakemachines.com", true }, { "coffeemoment.nl", true }, { "coffeeonlinemagazine.com", true }, + { "coffeeplazahamburg.com", true }, + { "coffeeruta.ru", true }, { "coffeestain.ltd", true }, { "coffeestory.in.ua", true }, { "coffeetom.de", true }, { "coffeist.com", true }, + { "coffstotalroofing.com.au", true }, { "cofidis-group.com", true }, + { "cofidur.com", true }, + { "cofigs.com", true }, { "cofinco.nl", true }, { "cofob.ru", true }, { "cofradiaqueimada.tk", true }, { "cogent.cc", true }, { "cogetop.com.br", true }, { "coggeshall.io", true }, + { "coggeshall.us", true }, { "coggin.church", true }, + { "coggle.it", true }, { "coginti.tk", true }, { "cogknockers.com", true }, { "cogknockers.net", true }, { "cognac-oenologie.com", true }, - { "cognicom-gaming.com", true }, + { "cognac-tasting-tour.com", false }, { "cognigennetwork.tk", true }, { "cognitip.com", true }, { "cognitiveapplications.net", true }, @@ -29078,85 +34107,99 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cognitohq.com", false }, { "cognixia.us", true }, { "cognosweb.net", true }, + { "cogolloelegante.com", true }, { "cogsquad.house", true }, - { "cogsys.de", true }, + { "cogstate.com", true }, { "cogumelosmagicos.org", true }, { "coharushika.com", true }, + { "cohassetfirema.gov", true }, { "cohassetma.gov", true }, { "cohassetpolicema.gov", true }, { "cohenandcohen.net", true }, { "cohere.io", true }, - { "coiam.net", true }, + { "cohob.de", true }, { "coiffbot.fr", true }, { "coiffeurschnittstelle.ch", true }, + { "coiffure-website.de", true }, { "coignieresentransition.fr", true }, { "coil.gov", true }, { "coimmvest.com", true }, { "coin-exchange.cz", true }, { "coin-group.com", true }, + { "coin-miners.info", true }, { "coin-money.tk", true }, - { "coin-quest.net", true }, + { "coin-turk.com", true }, { "coin.dance", true }, { "coin.space", true }, { "coinamount.com", false }, + { "coinauctionshelp.com", true }, { "coinbase.com", true }, { "coinbit.trade", false }, - { "coinbureau.com", true }, + { "coincabin.io", true }, { "coincalc.tk", true }, - { "coinchat.im", true }, + { "coinchapter.com", true }, { "coincircle.com", true }, { "coincity.ga", true }, { "coinclickz.fun", true }, { "coincoele.com.br", true }, { "coincoin.eu.org", true }, - { "coinevent.info", true }, { "coinf.it", true }, { "coinflux.com", true }, - { "coinforce.com", true }, { "coinfundit.com", true }, { "coingate.com", true }, { "coinjar-sandbox.com", true }, + { "coinjar.com", true }, { "coinlend.org", true }, + { "coinliq.com", true }, { "coinloan.io", true }, { "coinmarketturkiye.com", true }, { "coinmotion.com", true }, { "coinnewspulse.com", true }, { "coinpaprika.com", true }, + { "coinpedia.org", true }, + { "coinplay.com", true }, { "coinroom.com", true }, { "coins2001.ru", true }, { "coinsales.net", true }, + { "coinscatalog.net", true }, { "coinsconnect.co.uk", true }, { "coinsmat.com", true }, { "coinsuggest.com", true }, { "cointosh.jp", true }, - { "cointree.com", true }, - { "coinvex.org", true }, { "coinwind.vip", true }, + { "coinworld.tw", true }, { "coinx.pro", true }, + { "coiracom.net", true }, { "coisaetalpapelaria.com.br", true }, { "cojam.ru", true }, { "cojo.eu", true }, - { "cokebar.info", true }, + { "cok.hu", true }, + { "cokebar.info", false }, { "coker.com.au", true }, { "cokestudiosongs.tk", true }, { "cokisiregar.com", true }, { "cokomi.com", true }, - { "col-head.com", true }, { "col.la", false }, { "cola-host.tk", true }, { "colaborame.tk", true }, { "colaborativa.tv", true }, + { "colaboratorija.lt", true }, + { "colabore.com", true }, { "colabug.com", true }, + { "colafoodcritic.com", true }, { "colah.com.au", true }, - { "colaker.net", true }, { "colapsys.net", false }, { "colarelli.ch", true }, { "colarose.tk", true }, + { "colazxk.xyz", true }, { "colbert.ml", true }, { "colburnadamswi.gov", true }, + { "colchesterglobal.co.nz", true }, { "colchesterglobal.com", true }, + { "colchesterglobal.com.au", true }, { "colcomm.com", true }, { "coldcardwallet.com", true }, + { "coldcaserecords.gov", true }, { "coldecan.edu.co", true }, { "colder.one", true }, { "coldfff.com", true }, @@ -29167,11 +34210,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coldlasers.org", true }, { "coldpaste.com", true }, { "coldspegll.gq", true }, + { "coldspringsrancheria.gov", true }, + { "coldsteelsolutions.com", true }, + { "coldstreamcreekfarm.com", true }, { "coldtomato.ga", true }, { "coldtomatoest.ga", true }, { "coldwater.tk", true }, { "coldwateraustin.com", true }, - { "colean.cc", true }, + { "colearning.world", true }, { "colecountymo.gov", true }, { "colectivaradio.tk", true }, { "colectivo.tk", true }, @@ -29183,20 +34229,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "colegiojaimebalmes.es", true }, { "colegiorecanto.com", true }, { "colegios.net", true }, - { "colegiosanisidro.edu.pe", true }, { "colegiosantaursula.com.br", true }, { "colegiotalenti.com", true }, { "colegiotavera.tk", true }, { "colemak.com", true }, { "colengo.com", true }, { "coletrain.com", true }, - { "colf.online", true }, { "colfaxcountyne.gov", true }, { "colfaxia.gov", true }, { "colibriexpress.tk", true }, + { "coligo.fr", true }, { "colinasdog.com.br", true }, { "colincogle.name", true }, - { "colinespinas.com", true }, + { "colinespinas.com", false }, { "colinhouston.com", true }, { "colink.fi", true }, { "colinsnaith.co.uk", true }, @@ -29205,17 +34250,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "colisfrais.com", false }, { "collab.ddnss.org", true }, { "collabora-office.com", true }, - { "collabora.ca", true }, + { "collabora.ca", false }, { "collabora.co.kr", true }, { "collabora.co.uk", true }, { "collabora.com", true }, { "collabora.kr", true }, - { "collabora.ninja", true }, - { "collabora.social", true }, - { "collabora.uk", true }, - { "collaboracloudsuite.com", true }, + { "collabora.ninja", false }, + { "collabora.social", false }, + { "collabora.uk", false }, + { "collaboracloudsuite.com", false }, { "collaboraoffice.co.uk", true }, { "collaboraoffice.com", true }, + { "collaborativedrug.com", false }, { "collaborativehealthpsychology.com", true }, { "collabornation.net", true }, { "collacott.org", true }, @@ -29226,25 +34272,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "collagepartners.com", true }, { "collalloc.com", true }, { "collapsed.de", true }, + { "collar.place", true }, { "collard.tk", true }, { "collare.com.mx", true }, { "collare.mx", true }, + { "collarslab.com", true }, { "collateral360.com", true }, + { "collateralmurder.com", true }, + { "collbox.co", false }, + { "collectaction.com", true }, { "collectdocs.com", true }, { "collecter.tk", true }, { "collectfood.com", true }, { "collectiblebeans.com", true }, { "collectibles.tk", true }, - { "collectif-idem.org", true }, { "collectif-laicite-yallah.be", true }, { "collectif85.com", true }, { "collectifpinceoreilles.com", true }, + { "collectionru.com", true }, { "collective-incubator.de", true }, { "collectivedg.com", true }, { "collectiverecyclers.com", true }, { "collectivesupply.com", true }, { "collector.cf", true }, { "collectorknives.net", true }, + { "collectorscorner.com", true }, { "collectorsystems.com", true }, { "colleencornez.com", true }, { "college-chagall.tk", true }, @@ -29267,10 +34319,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "collegesexvid.com", true }, { "collegesrit.tk", true }, { "collegestationhomes.com", true }, + { "collegetimes.co", true }, { "collegetownstudios.tk", true }, - { "collegium-musicum-bocholt.de", false }, { "collepietra.it", true }, { "collerosso.com", true }, + { "collettando.it", true }, { "colley.tk", true }, { "collierlunaire.fr", true }, { "colliervotes.gov", true }, @@ -29278,8 +34331,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "collinel-hossari.com", true }, { "collinelhossari.com", true }, { "collinklippel.com", false }, + { "collinlove.ca", true }, { "collinlove.ch", true }, + { "collinlove.co.uk", true }, { "collinlove.com", true }, + { "collinlove.de", true }, + { "collinlove.net", true }, + { "collinlove.nl", true }, + { "collinlove.org", true }, + { "collinlove.se", true }, + { "collinlove.uk", true }, { "collinlove.us", true }, { "collinlove.xyz", true }, { "collinmbarrett.com", true }, @@ -29290,46 +34351,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "collins4mayor.org.nz", true }, { "collinsdictionary.com", true }, { "collinselectricco.com", true }, + { "collinssquare.com.au", true }, + { "collinssquarecatering.com.au", true }, + { "collinswyatt.com", true }, { "colloquio.tk", true }, { "colloquy.mobi", true }, { "colmadord.com", true }, { "colmena.biz", true }, { "colo-tech.com", true }, { "colocation-rennes.com", true }, - { "colocerin.com", true }, { "colocolochile.tk", true }, + { "coloffmedia.com", true }, { "cololi.moe", true }, - { "colombiahoy.news", true }, - { "colombiajeans.co", true }, - { "colombian.dating", true }, - { "colombiasobreruedas.com", true }, + { "colombiajobstoday.com", true }, + { "colombian.cam", true }, + { "colombianas.webcam", true }, + { "colombianbride.net", true }, + { "colombiansuppliers.com", true }, { "colombyinai.ga", true }, { "coloniae.de", true }, { "colonialbeachva.gov", true }, - { "colonialfilings.com", false }, + { "colonialfilings.com", true }, { "colonialfurniturestripping.com", true }, + { "colonialmanufacturing.com", true }, { "colonize.africa", true }, - { "coloppe.com", true }, { "color-mixer.tk", true }, { "color01.net", true }, - { "colorado-locksmith.com", true }, + { "colorado-locksmith.com", false }, { "coloradobluebook.gov", true }, + { "coloradochildrep.gov", true }, { "coloradoer.tk", true }, { "coloradofamli.gov", true }, { "coloradolottery.com", true }, + { "coloradorangers.gov", true }, { "coloradoseodesign.com", true }, { "coloradosos.gov", true }, + { "coloradosportsofficials.com", true }, { "colorblindfilms.com", true }, { "colorblindprogramming.com", true }, - { "colorbrush.ru", false }, { "colorcodedlyrics.com", true }, + { "colorcomm.com", true }, { "colorfularchive.eu.org", true }, { "colorfulcloud.eu.org", true }, { "colorfuldots.com", false }, + { "colorfulworld.ru", true }, { "colorguni.com", true }, { "colorhexa.com", true }, { "colorideas.net", true }, - { "coloringnotebook.com", false }, { "coloristcafe.com", true }, { "colorjungle.co.za", true }, { "colorlib.com", false }, @@ -29341,7 +34409,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "colorunhas.com.br", true }, { "colorwow.cf", true }, { "colorwow.ga", true }, - { "colossalit.com.au", true }, { "colossean.com", true }, { "colosseumticket.cz", true }, { "colostral.com", true }, @@ -29360,50 +34427,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "columbiacountyor.gov", true }, { "columbiacountywi.gov", true }, { "columbiail.gov", true }, + { "columbialawreview.org", true }, + { "columbiamemorialhealth.org", true }, { "columbiaproemergencymovers.com", true }, { "columbiascaffolding.com", true }, + { "columbiathreadneedle.com", true }, + { "columbiatrauma.org", true }, { "columbiatwpmi.gov", true }, + { "columbuscoffeefest.com", true }, { "columbushydroxide.com", true }, { "columbushydroxide.net", true }, { "columbushydroxide.org", true }, { "columbusks.gov", true }, + { "columbustelegram.com", true }, { "columbusunderground.com", true }, - { "columbuswines.com", true }, + { "columbuswi.gov", true }, { "colwichks.gov", true }, + { "colwyn.me", true }, + { "colwynfm.com", true }, { "colyakoomusic.com", true }, { "com-b.vn", true }, { "com-news.io", true }, + { "com-tic.africa", true }, { "com.cc", true }, + { "com.com.tr", true }, + { "com.fo", true }, + { "com4.no", false }, { "comactor.com", true }, { "comactor.fr", true }, { "comagexinvoice.com", true }, { "comalia.com", true }, { "comanchecountyks.gov", true }, { "comanchenationpolice.gov", true }, + { "comanchetexas.gov", true }, { "comaporter.com", true }, { "comarcadelaranda.tk", true }, + { "comarch.com", true }, { "comarch.es", true }, + { "comarch.pl", true }, + { "comarch.ru", true }, { "comarkinstruments.cloud", true }, { "comarkinstruments.net", true }, + { "comasenavi.com", true }, { "comasystem.dk", true }, { "combatix.io", true }, { "combattrecellulite.com", true }, - { "combidesk.com", true }, + { "combidarlehen.de", true }, { "combigo.com", true }, { "combineconquer.com", true }, + { "combloux.com", true }, { "combos-2020.tk", true }, { "combron.be", true }, { "combron.co.uk", true }, { "combron.com", true }, { "combron.nl", true }, - { "combustibilaspen.ro", true }, { "combustion.tk", true }, { "comcenter.com", true }, { "comchezmeme.com", true }, { "comcol.nl", true }, { "comdirect.de", true }, { "comdotgame.com", true }, - { "comdurav.com", true }, { "come.ga", true }, { "come2cook.com", true }, { "comealong.org", true }, @@ -29411,35 +34494,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comebookmark.cf", true }, { "comebookmark.ga", true }, { "comebookmark.ml", true }, - { "comedicgrouperu.com", true }, { "comedimagrire.it", true }, + { "comedonchisciotte.org", true }, + { "comedy.co.uk", true }, { "comedyhuis.nl", true }, + { "comedykellner-spasskellner.de", true }, + { "comefareper.online", true }, + { "comelibro.org", true }, { "comenc.ddns.net", true }, { "comengpt.com", true }, + { "comenityremediation.com", true }, { "comeoishii.com", true }, { "comeoneileen.tk", true }, + { "comeratope.com", true }, { "comercialcolombia.tk", true }, { "comercialmattos.com", true }, + { "comercialpedroso.com.br", true }, { "comercialroxana.com", true }, - { "comercialtech.cl", true }, - { "comercialtpv.com", true }, { "comercialtrading.eu", true }, { "comeros.be", true }, { "comestoarra.com", true }, + { "comet-pct.com", true }, + { "comet-xray.com", true }, { "comet.eu.org", true }, + { "comet.tech", true }, { "cometbot.cf", true }, { "cometcache.com", true }, { "comete-electricite.fr", true }, + { "cometofaith.org", true }, { "cometonovascotia.ca", true }, { "comevius.com", true }, { "comevius.org", true }, { "comevius.xyz", true }, + { "comfandivirtual.com.co", true }, { "comff.net", true }, { "comfintouch.com", false }, { "comfis.nl", true }, { "comfitsweets.co.uk", true }, { "comflores.com.br", true }, { "comfortablelife.tk", true }, + { "comfortsleepclinic.com", true }, { "comfortsolutionsair.com", true }, { "comfriesland.tk", true }, { "comfun.net", true }, @@ -29447,29 +34541,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comfy-court.com", true }, { "comfy.cafe", false }, { "comfy.gay", true }, - { "comfypc.com", true }, + { "comfyliving.net", true }, { "comhack.com", true }, + { "comic-conmuseum.org", true }, { "comical.ml", true }, - { "comicsans.tk", true }, + { "comicbooktreasury.com", true }, + { "comicborgs.com", true }, + { "comicsans.tk", false }, { "comicsanshouse.ddns.net", true }, { "comicslate.org", true }, { "comicspornos.com", true }, { "comicspornow.com", true }, { "comicspornoxxx.com", true }, - { "comicstrove.com", true }, - { "comicsymanga.com", true }, + { "comicsymanga.com", false }, { "comicwiki.dk", true }, + { "comicyears.com", true }, + { "comidasperuanas.net", false }, { "comidina.com", true }, { "comingto.icu", true }, { "comiq.io", true }, { "comistar.ee", true }, { "comita.ru", true }, + { "comita.su", true }, { "comite-des-fetes-neuville.com", true }, + { "comitedal974.re", true }, { "comiteexpertes.gc.ca", true }, { "comitesaustria.at", false }, { "comlipa.gq", true }, + { "comm-works.com", true }, { "comm.cx", true }, { "commagere.com", true }, + { "commandeleven.com", true }, + { "commander-seo.com", true }, + { "commanderone.net", true }, { "commanderx.cf", true }, { "commanderx.ml", true }, { "commanderx.tk", true }, @@ -29479,12 +34583,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "commco.nl", true }, { "commechezvous.ch", false }, { "commencepayments.com", true }, + { "commentgagnerdelargentsurlenet.com", true }, { "commentjaichangedevie.fr", true }, { "comments.app", true }, { "commerce.gov", true }, { "commercega.gov", true }, { "commercegurus.com", true }, - { "commercesend.com", true }, + { "commercepartnerhub.com", true }, { "commercia.srl", true }, { "commercial.lviv.ua", true }, { "commercialfinancepartners.com", true }, @@ -29496,27 +34601,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "commfortchat.tk", true }, { "commissaris-vraagbaak.nl", true }, { "commissionagenda.com", true }, + { "commissionaires.ca", true }, { "commissioner.tk", true }, { "commitsandrebases.com", true }, { "commlabindia.com", false }, + { "commloan.com", true }, + { "commodore-rekord.de", true }, { "commonapp.org", true }, { "commoncode.com.au", true }, { "commoncode.io", false }, + { "commoncog.com", true }, { "commoncore4kids.com", true }, { "commongoodit.com", true }, { "commongrave.tk", true }, + { "commoninf.com", true }, { "commons-mayflower.tk", true }, { "commonsenseamericanpolitics.com", true }, { "commonsensedivorce.ca", true }, { "commonsenseinactie.nl", true }, + { "commonstock.com", true }, + { "commonsubdoc.com", true }, + { "commonsubdoc.io", true }, { "commonvoice.tk", true }, { "commonwarest.ga", true }, + { "commonwealthsl.com", true }, { "commplace.pl", true }, { "communalconsulting.org", true }, { "communebouteille.org", true }, + { "communi.biz", true }, { "communic.tk", true }, { "communicate2lead.com", true }, { "communication-services.tk", true }, + { "communications-major.com", true }, + { "communicationsupport.co.uk", true }, { "communiques.info", true }, { "communiquons.org", true }, { "communist-party.tk", true }, @@ -29525,21 +34642,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "community-services.cz", false }, { "communityaligned.com", true }, { "communitybangladesh.tk", true }, + { "communitybridgesaz.org", true }, { "communitycodeofconduct.com", true }, { "communitycollegereview.com", true }, { "communitydirectory.tk", true }, + { "communitydriving.com", true }, + { "communityflow.info", true }, + { "communityfunded.com", true }, { "communitylivingalgoma.org", true }, - { "communitymanagertorrejon.com", true }, + { "communityparentsinc.com", true }, + { "communitypowernh.gov", true }, { "communitypreventionpartnership.org", true }, { "communote.net", true }, - { "commure.com", false }, + { "commuty.net", true }, { "commvnion.com", true }, + { "comnavigifu.com", true }, { "como-se-escribe.com", true }, { "comoaliviareldolor.de", true }, { "comocomprarumcarro.tk", true }, { "comoculosdesol.pt", true }, - { "comocurarlagastritis24.online", true }, { "comodastore.com", true }, + { "comodigital.info", true }, { "comodio.com", false }, { "comodo.nl", true }, { "comodosslstore.com", true }, @@ -29549,6 +34672,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comohacerpara.com", true }, { "comoimportar.net", true }, { "comomoraremportugal.ga", true }, + { "comomurio.info", true }, { "comoperdonar.tk", true }, { "comoreconquistaroex.com", true }, { "comorecuperaratumujerpdf.com", true }, @@ -29556,8 +34680,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "comosediceesto.com", true }, { "comoseduzir.net", true }, { "comosefazisto.com.br", true }, + { "comosehace.online", true }, { "comovenderpelowhatsapp.com.br", true }, { "comoviajarcontumascota.com", true }, + { "comp4u.de", true }, { "compactador-vendetta.tk", true }, { "compactchess.cc", true }, { "compagnidimerenda.tk", true }, @@ -29567,21 +34693,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "compagniemartin.com", false }, { "compalliance.com", true }, { "companion-web.net", true }, + { "company-bike.com", true }, { "company-info-plugins.nl", true }, { "companyaneksta.tk", true }, + { "companycam.com", true }, { "companycleaninghome.com", true }, { "companydi.com", true }, + { "companywebcast.com", true }, { "comparai.com.br", true }, { "comparatif-moto.fr", true }, { "compare-energie.fr", true }, { "compareairfaredeals.com", true }, { "compareandrecycle.co.uk", false }, - { "comparecars.org", true }, { "compareceleb.com", true }, + { "compareer.com", true }, { "compareleasedlines.co.uk", true }, { "comparemymobile.com", true }, - { "comparendossimit.com", true }, - { "comparesextoys.com", true }, + { "comparendossimit.com", false }, { "compareshow.com", true }, { "comparesoft.com", true }, { "comparetheproject.com", true }, @@ -29595,35 +34723,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "compassdirectportal.com", true }, { "compassfinance.com", true }, { "compassintladv.com", true }, + { "compassionandchoices.org", true }, + { "compassionate-biology.com", true }, { "compassionaterelease.com", true }, - { "compassleaf.com", true }, { "compasslos.com", true }, { "compassregroup.com", true }, { "compasstransport.nl", true }, { "compdermcenter.com", true }, { "compdev.ru", true }, + { "compelloid-staging-client-b2c.azurewebsites.net", true }, + { "compensadosbello.com.br", true }, { "compeon.de", true }, - { "competenceslinux.com", true }, { "competencyassessment.ca", true }, { "competis.cf", true }, { "competitor.com", true }, { "compeuphoria.com", true }, - { "compex.com.sg", true }, { "compibus.fr", true }, { "compilenix.org", false }, { "complaint.tk", true }, + { "complang.se", true }, + { "complasplasticos.com.br", true }, + { "compleet.com", true }, { "complete-concrete-concise.com", true }, { "complete-privacy.tk", true }, { "completeanon.tk", true }, { "completecareair.com", true }, { "completecase.com", true }, + { "completecomps.au", true }, { "completecontrol.tk", true }, + { "completed.com", true }, { "completehub.com", true }, + { "completeonlinepharmacy.com", true }, { "completeprivacy.tk", true }, { "completesecurityessex.co.uk", true }, { "completesecurityessex.com", true }, { "completewordsest.ga", true }, - { "completionist.me", true }, { "complex-kaspiy.tk", true }, { "complex-news.com", true }, { "complex-organization.com", true }, @@ -29634,36 +34768,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "compliance-management.ch", false }, { "compliance-risk.com", true }, { "compliance-systeme.de", true }, + { "compliancealpha.com", true }, { "compliancebox.co", true }, { "compliancedictionary.com", true }, + { "complianceinsight.ca", true }, { "compliancerisksoftware.co.uk", true }, + { "complianz.io", true }, { "compliment.cf", true }, { "complt.xyz", true }, { "complyadvantage.com", true }, + { "complycheck.co", true }, { "componentcore.com", true }, { "composersforum.org", true }, + { "composite-isfahan.ir", true }, { "compositedevtec.tk", true }, { "compostelle-bouddha.fr", true }, + { "compoundc.eu", true }, { "compoundingrxusa.com", true }, { "compra-deuna.com", true }, + { "compraapartamentomoema.com.br", true }, { "comprachida.com", true }, - { "compradalweb.it", true }, { "compraenpijama.com", true }, { "comprafasil.com", true }, + { "comprajuguete.com", true }, { "comprando.tk", true }, { "compraporinternet.online", true }, { "comprar.club", true }, { "comprarefiereygana.com", true }, { "comprarimpresoras-3d.com", true }, { "comprarpapelhigienico.online", true }, - { "comprarparaguas.online", true }, + { "comprascuba.online", true }, { "comprauncelular.com", true }, { "comprax.nl", true }, { "compree.com", true }, { "comprehensiveihc.com", true }, + { "compressor.io", true }, { "comprising.de", true }, + { "comprofacil.es", true }, { "compromis-promesse-vente.fr", true }, { "compservice.in.ua", true }, + { "comptoir-hardware.com", true }, + { "comptoirducycle.com", true }, { "comptonslespetitescroix.tk", true }, { "comptrollerofthecurrency.gov", true }, { "comptu.com", true }, @@ -29673,13 +34818,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "compucorner.mx", true }, { "compucorner.tk", true }, { "compudoc.tk", true }, - { "compufix.ml", true }, - { "compunetwor.com", true }, + { "compunet.biz", true }, + { "compunetics.com", true }, + { "compunetix.com", true }, { "compusrit.tk", true }, { "compustore.pe", true }, { "compustuff.tk", true }, { "computec.ch", true }, + { "computel.nl", false }, { "computer-acquisti.com", true }, + { "computer-fixer.nl", true }, + { "computer-forensics-recruiter.com", true }, { "computer-kleinmachnow.de", true }, { "computer-menschen.de", true }, { "computer-science-schools.com", true }, @@ -29689,13 +34838,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "computer-worlds.tk", true }, { "computer4me.tk", true }, { "computeradvance.tk", true }, - { "computeradvice247.com", true }, { "computerandaccessories.com", true }, - { "computerassistance.co.uk", true }, { "computerbas.nl", true }, { "computerbase.de", true }, - { "computercamaccgi.com", true }, { "computerforum.tk", true }, + { "computerforums.net", true }, { "computerhelpbutton.com", true }, { "computerhilfe-feucht.de", true }, { "computerinfobits.com", true }, @@ -29704,49 +34851,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "computernetwerkwestland.nl", true }, { "computernetwork.be", true }, { "computerpackages.com", true }, + { "computerpoint.net", true }, { "computerscience.guide", true }, { "computersforlearning.gov", true }, { "computersneversleep.art", true }, { "computersoftware.tk", true }, + { "computersolutions.cn", true }, { "computersystems.guru", false }, - { "computertech-ut.com", true }, + { "computertechreviews.com", true }, { "computerthings.net", true }, { "computertips.tk", true }, { "computerwerk.org", true }, - { "computerz.solutions", false }, + { "computexrio.com", true }, { "computime.com", true }, { "computing.land", true }, + { "computingaustralia.com.au", true }, { "computingaustralia.group", true }, { "computingessentials.tk", true }, { "computingsociety.co.uk", true }, { "computingwarehouse.com", true }, { "computop.com", true }, { "computron.ga", true }, + { "compuvate.com", true }, { "comquadro.com.br", true }, + { "comquestmed.com", true }, { "comradesofmight.tk", true }, + { "comsian.net", true }, { "comsoli.com.br", true }, + { "comsolibrasil.com.br", true }, { "comswp.com", true }, { "comtex.com.au", true }, { "comtily.com", true }, + { "comtois.hk", true }, { "comumlab.org", true }, { "comunal.co", true }, - { "comunaolari.ro", true }, { "comunate.com", true }, - { "comunecampodigiove.com", true }, + { "comune.palermo.it", true }, { "comunic.io", true }, { "comunicat.global", true }, { "comunicazionenellaristorazione.it", true }, { "comunidadmontepinar.es", true }, + { "comunidadreparando.com", true }, + { "comunidadvegetariana.com", true }, { "comuniondelucia.com", true }, { "comunismo.tk", true }, { "comunistas.tk", true }, + { "comunitalemargherite.it", true }, + { "comunitas.com", true }, { "comunitateonline.tk", true }, - { "comunitelia.com", true }, { "comunityflashgame.cf", true }, { "comvert.com", true }, { "comw.cc", true }, + { "comwwwcomcom.com", true }, { "comyuno.com", false }, { "con-con.nl", true }, + { "con-vivencia.es", true }, { "conall.io", true }, { "conalpedis.tk", true }, { "conatus.ai", true }, @@ -29756,65 +34915,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "concellodoparamo.tk", true }, { "concepcion-futbol-club.tk", true }, { "concept-web.ch", false }, + { "concept4photography.com", true }, { "concept5.co.il", true }, - { "conceptapps.pl", true }, { "conceptatelier.de", true }, { "conceptcompany.com", true }, { "conceptec.de", true }, + { "conceptfontaines.fr", true }, { "conceptground.com", true }, { "conceptual.ga", true }, { "concern.cloud", true }, { "concert.ga", true }, - { "concert.solutions", true }, { "concertcrushers.ga", true }, { "concertengine.com", true }, - { "concerto.amsterdam", true }, { "concertparkingest.ga", true }, { "concerts-metal.ch", false }, { "concertsenboite.fr", true }, { "concertsponent.tk", true }, { "concertsto.com", true }, - { "conchgas.com", true }, - { "conciencia.fit", true }, { "conciencianimal.tk", true }, { "concierge.diet", true }, { "conciertoscolombia.tk", true }, { "concilioderivendel.tk", true }, { "conciliumnotaire.ca", true }, - { "conclave.global", true }, { "conclave.gq", true }, { "conclave.rocks", true }, { "conclave.tk", true }, { "conclude.ga", true }, { "conclusion.nl", true }, { "conclusive.co.za", true }, + { "concor.ne.jp", true }, { "concord.sh", true }, + { "concordance.bible", true }, { "concordiagaming.com", true }, - { "concordsoftwareleasing.com", true }, { "concrefy.com", true }, { "concretedreamsoftexas.com", true }, { "concretehermit.com", false }, { "concretemachines.be", true }, + { "concretepressurewashing.com", true }, { "concreterepairatlanta.com", true }, { "concreterepairconcreteleveling.com", true }, { "concreterepairconcreteraising.com", true }, { "concreteworksohio.com", true }, { "concreteworksplus.com", true }, { "concurseirosdeplantao.com.br", true }, - { "concursocultural.com.br", true }, + { "concursocultural.com.br", false }, { "concursos.com.br", true }, { "concursosabertos.com.br", true }, { "concursuri.biz", false }, { "condecom.com.br", true }, { "condemnity.net", true }, { "condenast.co.uk", true }, + { "condensacion.com", true }, { "condictor.pl", true }, + { "condignum.com", true }, { "condit.cf", true }, { "condit.gq", true }, { "condit.ml", true }, { "conditionyellowacademy.com", true }, - { "condizionatore-portatile.it", true }, { "condizionatore.roma.it", true }, + { "condo.do", true }, { "condolencemessages.net", true }, { "condominiosi.it", true }, { "condominioweb.com", true }, @@ -29825,6 +34984,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coneall.com", true }, { "conectada.tk", true }, { "conectadev.com", true }, + { "conectens.com", true }, { "conectumfinanse.pl", true }, { "conejicos.tk", true }, { "conejovalleyelectrical.com", true }, @@ -29840,6 +35000,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "conexaotecidos.com.br", true }, { "conexionok.com", true }, { "conexiontransporte.com", true }, + { "conexionvegana.com", true }, { "conexresearch.com", true }, { "coney.tk", true }, { "conf.tn", true }, @@ -29847,40 +35008,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "conference-expert.eu", true }, { "conference.dnsfor.me", true }, { "conferencehall.com.ua", true }, + { "conferencemanager.ch", true }, + { "conferencemanager.co.uk", true }, + { "conferencemanager.de", true }, + { "conferencemanager.dk", true }, + { "conferencemanager.es", true }, + { "conferencemanager.fr", true }, + { "conferencemanager.se", true }, + { "conferencemanager.uk", true }, + { "conferencemanager.us", true }, + { "conferencemanagerpro.com", true }, { "conferencemonkey.org", true }, + { "conferenciaepiscopal.es", true }, { "confettidogs.com", true }, { "confia.io", true }, { "confiancefoundation.org", true }, { "confianza.pe", true }, { "confidential.network", true }, + { "confidentielsn.com", true }, { "confidentliving.gq", true }, { "confidentliving.tk", true }, { "config.schokokeks.org", false }, { "configcat.com", true }, { "configpoint.group", true }, + { "configserverfirewall.com", true }, { "configurat.cf", true }, { "configurat.tk", true }, { "configwizard.xyz", true }, - { "confio.gmbh", true }, + { "confio.gmbh", false }, { "confio.pt", true }, { "confirmit.ca", true }, { "confirmit.com", true }, { "confirmit.com.au", true }, - { "confirmit.de", false }, + { "confirmit.de", true }, { "confiscate.ga", true }, { "confiscation.tk", true }, - { "confiseriedubonheur.com", true }, { "confiwall.de", true }, + { "conflictspecialist.com", true }, { "conflidentliving.cf", true }, - { "conform.one", true }, + { "confluent.cloud", true }, { "conformal.com", false }, + { "conformat.com", true }, { "conformax.com.br", true }, { "conformist.jp", true }, { "conformitykills.tk", true }, + { "confort-bebe.fr", true }, { "confort-sante.com", true }, - { "confortop.com.br", true }, { "conftree.com", true }, { "confucio.cl", true }, + { "confused.com", true }, { "confusion-band.ch", true }, { "confygo.com", true }, { "congafasdesol.com", true }, @@ -29896,10 +35072,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "congresodermatologia2019.com", true }, { "congressmankirk.com", true }, { "congresso.tk", true }, + { "congye.com", true }, { "coniectoinvestments.com", true }, { "coniglione.tk", true }, { "conju.cat", false }, { "conjugacao.com.br", true }, + { "conjunctions.com", true }, { "conjurer.tk", true }, { "conjurosamarresytrabajosespirituales.com", true }, { "conjurosyhechizosfuertes.com", true }, @@ -29908,25 +35086,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "conkret.eu", true }, { "conkret.mobi", true }, { "conmatic.tk", true }, - { "conmedapps.com", true }, { "conn.cx", true }, { "connect-ed.network", true }, { "connect-me.com", true }, { "connect.facebook.net", true }, { "connect.gov", true }, { "connect.net.pk", true }, - { "connect2pure.com", true }, { "connecta.store", true }, { "connectall.tk", true }, { "connectavid.com", true }, - { "connectedandsmart.com", true }, { "connectedbynexus.com", true }, - { "connectedrisksolutions.com", true }, + { "connectedinvestors.com", true }, + { "connectedmind.me", true }, + { "connectenefit.ee", true }, { "connectfss.com", true }, { "connecticare.com", true }, { "connecticutnet.tk", true }, + { "connectika.io", true }, { "connectingrentals.com", true }, - { "connectingrentalsofbethel.com", true }, + { "connectingup.org", true }, + { "connection-sggz.nl", true }, { "connectionplanet.nl", true }, { "connectionstrings.com", true }, { "connective.com.au", true }, @@ -29936,52 +35115,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "connectme.com.mx", true }, { "connectmy.car", true }, { "connectnow.nl", true }, - { "connecto-data.com", true }, - { "connecto.group", true }, { "connectthedoc.com", true }, + { "connectto.com", true }, { "connectum.eu", true }, { "connectusa.com", false }, { "connelink.fr", true }, { "conner.work", true }, { "conneropticals.ga", true }, { "connexas.eu", true }, - { "connexion.health", true }, - { "connexionht.com", true }, + { "connexio.digital", true }, { "connext.de", true }, { "connictro.de", true }, + { "connies-diner.de", true }, { "conniesacademy.com", true }, - { "connollycove.com", true }, + { "connor.nl", true }, { "connorhatch.com", true }, { "connorjc.io", true }, { "connorlim.net", true }, { "connornoddin.com", true }, { "conntrack.com", true }, - { "connyduck.art", true }, + { "connyandthecrazydogs.com", true }, + { "connyduck.art", false }, { "connyduck.at", true }, { "conocchialidasole.it", true }, { "conocedordigital.com", true }, { "conoha.vip", true }, { "conorboyd.info", true }, + { "conorjwryan.com", true }, { "conory.com", true }, { "conotoxia.com", true }, - { "conpath.net", true }, + { "conova.com", true }, { "conpins.nl", true }, { "conpsy.ro", true }, { "conpulpademanzana.es", true }, { "conpunk.tk", true }, { "conqi.net", true }, + { "conquistar30dias.com.br", true }, { "conrad-kostecki.de", true }, { "conrad.am", true }, { "conradboraboranuiresort.com", true }, { "conradcartagena.com", true }, { "conradkostecki.de", true }, + { "conradkroencke.com", true }, { "conrads.it", true }, - { "conradsautotransmissionrepair.com", true }, { "conrail.blue", true }, { "conrasd.tk", true }, { "conrazon.me", true }, { "cons.one", true }, { "consagracionamariasantisima.org", true }, + { "conscia.com", true }, { "consciente.ch", true }, { "consciente.ngo", true }, { "consciente.ong", true }, @@ -29989,22 +35171,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "consec.systems", false }, { "consegnafioridomicilio.net", true }, { "consegne.it", true }, - { "consejosdenutricion.com", true }, + { "conseildesarts.ca", true }, + { "conseils-immo.fr", true }, + { "consejoescolardecanarias.org", true }, { "consens.us.org", true }, { "consensoprivacy.it", true }, + { "consertodeeletrodomesticosembh.com", true }, { "conservadoraembh.com.br", true }, { "conservaschato.com", true }, { "conservationfreedivers.com", true }, { "conservationgeography.com", true }, + { "conserviengenharia.com.br", true }, { "consideratio.blog", true }, { "consideratio.ch", true }, { "consideratio.cloud", true }, - { "consideratio.com", true }, { "consideratio.de", true }, { "consideratio.net", true }, { "consideratio.shop", true }, { "consideratio.tax", true }, - { "consideredgifts.com", true }, + { "consiglidisalute.com", true }, { "consilio.com", true }, { "consilium-ifa.co.uk", true }, { "consilium-vitae.ch", true }, @@ -30012,17 +35197,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "consill.com", true }, { "consoe.com", true }, { "console.rest", true }, + { "consolemania.com", true }, { "consoletech.tk", true }, { "consoleuniverse.tk", true }, { "consolezone.tk", true }, { "consommateuraverti.com", true }, { "consommation-locale.fr", true }, { "consonare.de", true }, - { "consoom.soy", false }, + { "consoom.soy", true }, { "consorcionacionalideal.com.br", true }, { "consortium.chat", true }, + { "consortiumhealthplans.com", true }, { "consorzio.org", true }, - { "conspectstudios.com", true }, { "conspiracionweb.tk", true }, { "conspiracy.gq", true }, { "conspiracytheorypal.com", true }, @@ -30030,7 +35216,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "constablevilleny.gov", true }, { "constant-rough.de", true }, { "constant.ga", true }, - { "constantin-blog.eu", true }, + { "constantinocontabilidade.com", true }, + { "constantinschreiber.me", true }, { "constcorrect.com", true }, { "constellatio.com", true }, { "constellationinternational.ml", true }, @@ -30041,6 +35228,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "constinit.org", true }, { "constipationrecords.tk", true }, { "constituenttracker.com", true }, + { "constitution.website", false }, { "constru-vegas.com.mx", true }, { "construccionesceyve.com", true }, { "construct.net", true }, @@ -30048,46 +35236,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "construction-colleges.com", true }, { "construction-digitale.fr", false }, { "construction-group.ga", true }, - { "construction-student.co.uk", true }, - { "constructioncleanupinfortworth.com", true }, { "constructionstudent.uk", true }, + { "constructive.men", true }, + { "construguia.co", true }, { "construred.tk", true }, { "construyetuempresa.com", true }, { "consul-coton.ru", true }, { "consul-novocherkassk.ml", true }, { "consul.io", false }, + { "consuldat.com", true }, { "consulenteambientale.it", true }, { "consulentedellavoro.it", true }, { "consulenza.pro", true }, + { "consulplan.net", true }, { "consult-altius.co.uk", true }, { "consultadepsicoterapia.com", true }, - { "consultahn.com", true }, { "consultancyistanbul.com", true }, { "consultation.ai", true }, { "consultation.biz.tr", true }, + { "consultaveiculopelaplaca.com.br", true }, { "consultcelerity.com", true }, { "consultimator.com", true }, { "consultimedia.de", true }, { "consulting-brokerage.tk", true }, - { "consulting-cloud.com", true }, { "consultinghero.es", true }, { "consultinghouse.tk", true }, { "consultinghousenet.tk", true }, { "consultingnurseest.ga", true }, { "consultor.marketing", true }, { "consultoresrey.cl", true }, - { "consultoreswpo.com", true }, { "consultoriadeseguranca.com.br", true }, { "consultoriadigital.pt", true }, { "consultoriosodontologicos.com.br", true }, { "consultorseobr.com.br", true }, { "consultpetkov.com", true }, + { "consultum.com", true }, { "consulvation.com", true }, { "consumer.ee", true }, - { "consumer.gov", false }, + { "consumer.gov", true }, { "consumer.gov.au", true }, { "consumer.gq", true }, - { "consumera.com", true }, + { "consumer.org.nz", true }, { "consumeraction.gov", true }, { "consumerattorneys.com", true }, { "consumerbureau.gov", true }, @@ -30097,47 +35286,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "consumerfinancial.gov", true }, { "consumerfinancialprotectionbureau.gov", true }, { "consumerindex.ga", true }, + { "consumerlaw.gov.au", true }, { "consumerprotectionbureau.gov", true }, { "consumersentinel.gov", true }, - { "consumidor.gov", false }, + { "consumertesting.com", true }, + { "consumidor.gov", true }, + { "consumptionjunction.com", true }, { "consuwijzer.nl", true }, { "consyltec.de", true }, { "contabilidadebhpampulha.com.br", true }, { "contabilidadebrooklin.com.br", true }, { "contact-checker.tk", true }, { "contact.inc", true }, - { "contact.xyz", false }, + { "contact.xyz", true }, { "contactaffix.com", true }, + { "contactangle.com", true }, + { "contactbadger.com", true }, { "contactelus88.fr", true }, - { "contactsolo.tk", true }, + { "contactmcr.com", false }, { "contactsrl.it", true }, + { "contadorespublicos.co", true }, { "contagiousaf.com", true }, { "contailor.de", true }, { "contaminatie.nl", true }, - { "contao.ir", true }, + { "contango.xyz", true }, { "contato.vip", true }, - { "conteelegant.ro", true }, { "contemplativeeducation.org", true }, + { "contemptevoke.com", true }, { "contenedoresdereciclaje.online", true }, - { "contenized.com", true }, + { "contenized.com", false }, + { "contentcreatorsource.com", true }, { "contentmarathon.com", true }, { "contentpass.net", true }, { "contentq.nl", true }, { "contents.ga", true }, { "contermis.com", true }, + { "conteshop.lv", true }, { "contessa32experience.com", false }, { "contestreviewest.ga", true }, - { "contextogestaoempresarial.com.br", true }, { "contextolog.cf", true }, { "conti-profitlink.co.uk", true }, { "continental-landscapes.co.uk", true }, { "continuernom.tk", true }, - { "continuitycenters.com", false }, + { "continuousinksupplysystem.com.au", true }, { "continuum.memorial", false }, + { "continuumdesign.net", true }, { "continuumm-tech.com", true }, { "contiprint.com.ec", false }, { "contortion.tk", true }, { "contos.cz", true }, + { "contotudo.online", true }, { "contrabass.net", true }, { "contracostacr.gov", true }, { "contracostacre.gov", true }, @@ -30146,6 +35344,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "contractdigital.co.uk", false }, { "contractdirectory.gov", true }, { "contractormountain.com", true }, + { "contractorscompare.com", true }, { "contractorswestga.com", true }, { "contractstore.com", true }, { "contractwriters.com", true }, @@ -30153,11 +35352,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "contralabel.com", true }, { "contralaespeculacioninmobiliaria.tk", true }, { "contralegem.it", true }, - { "contrapeso.es", true }, + { "contrarianoutlook.com", true }, { "contrarreforma.tk", true }, { "contraspin.co.nz", true }, { "contrastchecker.online", true }, { "contrastecolombia.com", true }, + { "contrastly.com", true }, + { "contrastsecurity.com", true }, { "contratderatisation.com", true }, { "contratti.it", true }, { "contrebande-metz.fr", true }, @@ -30168,20 +35369,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "contro.gq", true }, { "contro.ml", true }, { "contro.tk", true }, - { "controladores.net", true }, { "controlautocom.com.br", true }, { "controlbooth.com", true }, { "controle-exportations.fr", true }, { "controle-technique-ales.fr", true }, - { "controle.net", true }, { "controleer-maar-een-ander.nl", true }, { "controleert.nl", true }, { "controlewiki.be", true }, + { "controlit.eu", true }, { "controllertech.com", true }, + { "controlpad.com", true }, { "controlshiftlabs.com", true }, + { "controlsystemscanada.com", true }, { "controltvpodcast.tk", true }, - { "controlvoltage.cc", true }, - { "controlyourwifi.com", true }, + { "controlup.com", true }, + { "controlvisitas.com.mx", true }, { "controsoffitti.milano.it", true }, { "controversialrisks.com", true }, { "controversialrisks.se", true }, @@ -30189,62 +35391,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "contuestilo.tk", true }, { "contunda.de", false }, { "conv2pdf.com", true }, + { "convecteurs.net", true }, { "convent-mensing.de", true }, + { "convention-nationale-nantes2023.fr", true }, { "convergence.fi", true }, { "convergencela.com", true }, { "convergent.tn", true }, { "convergnce.com", true }, { "conversationexchange.com", true }, { "conversatis.cf", true }, + { "conversechucktaylor.us", true }, { "converser.tk", true }, - { "conversiepartners.nl", true }, { "conversionsciences.com", true }, { "convert.im", true }, + { "convert.io", true }, { "convert.zone", true }, { "convert2sql.com", true }, { "converter.ml", true }, { "convertimg.com", true }, + { "convertire-documenti.it", true }, + { "convertkit.com", true }, { "convertr.io", true }, - { "convexset.org", true }, { "conveyance.pro", true }, + { "convicted-driver-insurance.com", true }, { "conviction.org.uk", true }, { "convierteenabudancia.com", true }, { "convocatoriafundacionpepsicomexico.org", false }, { "convoluted.solutions", true }, + { "convoyin.com", true }, + { "conwaymedicalcenter.com", true }, { "conwaymi.gov", true }, { "conwaypdnh.gov", true }, + { "conwayregional.org", true }, { "conwaysc.gov", true }, { "conxcon.de", true }, + { "cooalliance.com", true }, { "coochiehacks.io", true }, { "coocook.org", true }, { "cooferro.tk", true }, { "cooink.net", false }, { "cook-maestro.com", true }, { "cook.gg", true }, - { "cookandbakecenter.com", true }, - { "cookandgame.com", true }, { "cookcountyclerkil.gov", true }, + { "cookcountysheriffil.gov", true }, { "cookescastles.co.uk", true }, + { "cookgem.com", true }, { "cookicons.co", true }, { "cookie-directive.cf", true }, { "cookie4.com", true }, { "cookieandkate.com", true }, { "cookiecorner.com", true }, { "cookiecrook.com", true }, + { "cookiedatabase.org", true }, + { "cookielaw.org", true }, { "cookiepedia.co.uk", true }, { "cookiepro.com", true }, { "cookiesoft.de", true }, { "cookiestudies.cf", true }, { "cooking-food.cf", true }, + { "cookingandme.com", true }, { "cookingaround.town", true }, { "cookingcrusade.com", true }, { "cookingiseasy.tk", true }, - { "cookinglife.nl", false }, { "cookingperfected.com", true }, { "cookingperformancegroup.com", true }, { "cookingreporter.com", true }, { "cookinsumos.com", true }, - { "cookmedical.com", false }, { "cooko.at", true }, { "cooks.house", true }, { "cooksite.tk", true }, @@ -30254,32 +35466,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cool-wallpapers.jp", true }, { "cool110.tk", true }, { "cool110.xyz", true }, + { "coolabaroo.com.au", true }, + { "coolagent-dokumenty.cz", true }, { "coolansplanet.com", true }, { "coolattractions.co.uk", true }, { "coolblockschool.org", true }, { "coolboys.ga", true }, { "coolcamping.com", true }, { "coolcloud.tk", true }, + { "coolcomputers.info", false }, { "cooldan.com", true }, { "cooldomains.tk", true }, { "cooldown.club", true }, { "coole-fete.de", true }, { "coolerssr.space", true }, - { "coolesc.xyz", true }, + { "coolexpo.com", true }, { "coolfilm.cf", true }, + { "coolgeography.co.uk", true }, { "coolgifs.de", true }, + { "coolhvac.pro", true }, { "coolink.pub", true }, { "cooljs.me", true }, { "cooljv.com", true }, { "coolkidsbouncycastles.co.uk", true }, + { "coolleader.com", true }, + { "coolmaterial.com", true }, { "coolmath.cf", true }, { "coolpi.nl", true }, + { "coolplaces.co.uk", true }, + { "coolplus.com", true }, { "coolprylar.se", true }, + { "cools.tech", true }, { "coolsculptingmanhattanbeach.com", true }, { "coolshirt.tk", true }, + { "coolsochi.ru", true }, { "coolsoftware.tk", true }, { "coolspeak.com", true }, { "cooltang.ooo", true }, + { "coolutils.com", true }, { "coolvox.com", true }, { "coolweirdfacts.ga", true }, { "coombsinc.com", true }, @@ -30289,25 +35513,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coop-land.ru", true }, { "coop.com.py", true }, { "coopal.jp", true }, - { "coopelectricidaddevoto.com.ar", true }, + { "coopcoa.pt", true }, { "coopemep.live", false }, + { "cooperativecogohio.gov", true }, { "coopercity.gov", true }, { "coopercityfl.gov", true }, { "coopermais.tk", true }, + { "cooptravel.co.uk", true }, + { "coor.info", true }, + { "coordonnees-gps.fr", true }, { "coore.jp", true }, { "coorpacademy.com", true }, + { "coosbayor.gov", true }, { "cooznacza.pl", true }, { "copa.cf", true }, { "copabarena.tk", true }, { "copacabanafc.tk", true }, + { "copadata.be", true }, + { "copasulassessoria.com.br", true }, { "copdfoundation.org", true }, { "copdrop.ga", true }, { "cope.finance", true }, { "copedeportes.tk", true }, { "cophumouraustralia.com", true }, + { "copiermarket.com", true }, { "copiisiparinti.ro", true }, { "copilotgps.com", true }, { "copilotpro.com", true }, + { "copper.co", true }, + { "copperart.ca", true }, { "copperexports.tk", true }, { "copperheados.com", true }, { "copperlantern.tk", true }, @@ -30317,8 +35551,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coppidesentupidora.com.br", true }, { "coprotag.com", true }, { "coprotag.fr", true }, - { "coptel.cz", true }, { "coptkm.cz", true }, + { "copurhoca.com", true }, { "copybysophie.com.au", true }, { "copycats.tk", true }, { "copycaught.co", true }, @@ -30330,38 +35564,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "copyhandler.com", true }, { "copypoison.com", true }, { "copyright-watch.org", true }, + { "copyright.gov", true }, { "copyrightclaimsboard.gov", true }, { "copyrightcoins.com", true }, { "copyrightcoins.help", true }, + { "copyrighted.com", true }, { "copyrighter.tk", true }, { "copyrightforabout.tk", true }, - { "copyshop-witten.de", true }, + { "copyrightservice.co.uk", true }, { "copyshrug.ca", true }, { "copysyncest.ga", true }, { "copytext.ml", true }, { "copywriting-on-demand.tk", true }, { "coqiptv.com", true }, { "coral-study.eu", true }, + { "coral.tech", true }, + { "coralenergy.gr", true }, + { "coralpress.com", true }, { "coralreef.blue", true }, { "coralreef.tk", true }, { "coralsprings.gov", true }, { "coralspringsfl.gov", true }, { "corarain.me", true }, - { "corarcraft.com", true }, { "coratxa.tk", true }, { "corazoncaliente.tk", true }, { "corazondemelon.es", true }, { "corbax.com", true }, + { "corbettparadise.com", true }, { "corbi.net.au", true }, + { "corbuloacademyofmilitaryscience.com", true }, { "corbusier.gq", true }, { "corcoranmn.gov", true }, { "cord-blood.tk", true }, + { "cordalife.com", true }, { "cordeirosolutions.ga", true }, - { "cordejong.nl", true }, + { "cordejong.nl", false }, { "cordelia.tk", true }, { "cordemar.info", true }, { "corder.tech", true }, { "corderosa.tk", true }, + { "corderoscleaning.com", false }, { "cordeydesign.ch", false }, { "cordis.io", true }, { "cordlessdog.com", true }, @@ -30371,6 +35613,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "core.md", true }, { "core.mx", true }, { "core.org.pt", true }, + { "core300.org", true }, { "core3k.biz", true }, { "core3k.com", true }, { "core3k.info", true }, @@ -30382,28 +35625,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coreapm.org", true }, { "corebit.nl", true }, { "corecdn.org", true }, + { "coreconcepts.com.sg", true }, + { "corecore.com", true }, + { "cored.al", true }, { "coredna.com", true }, { "coredns.rocks", true }, + { "coredrive.com", true }, + { "coredroid.com", true }, { "corefy.com", true }, { "coreg.tk", true }, { "corehealthberks.com", true }, + { "corehealthcare.com.au", true }, + { "corelationinc.com", true }, { "coreless-initiative.net", true }, { "coreless-stretchfilm.com", true }, { "coremcnetwork.ml", true }, { "coremedia.co.id", true }, { "coremicro.com", true }, { "coremove.tk", true }, + { "corentin-et-rosalie.fr", true }, { "corepacks.tk", true }, { "corepartners.com.ua", true }, + { "corephysicians.org", true }, { "corerad.net", true }, + { "corescientific.com", true }, { "coresos.com", true }, + { "corestack.io", true }, + { "coresystems.hu", true }, { "coretema.eu", true }, { "coreum.ca", true }, { "coreup.de", true }, { "corevetconnect.co.uk", true }, { "corexpert.com", true }, { "coreyjmahler.com", true }, + { "coreylmartin.com", true }, { "corfuny.gov", true }, + { "corgal.com", true }, { "corgi.party", true }, { "corgiaspets.com", true }, { "corgiclub.art", true }, @@ -30414,6 +35671,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corinnanese.de", true }, { "corinsamsterdam.com", true }, { "corintech.net", true }, + { "corinthfilms.com", true }, { "corisu.co", true }, { "corkcityfc.tk", true }, { "corkedwinebar.com", true }, @@ -30423,10 +35681,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corlija.com", true }, { "corlinde.nl", true }, { "cormed-heverlee.tk", true }, + { "corn.az", true }, { "cornday.org", true }, - { "corneerasmus.com", true }, + { "cornel1801.com", true }, { "cornelia-kaufmann.tk", true }, { "corner-cabinets.tk", true }, + { "corner-marburg.de", true }, { "corneranimal.com", true }, { "cornercafe.tk", true }, { "cornercircle.co.uk", true }, @@ -30434,16 +35694,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cornerperk.com", true }, { "cornerstone.network", true }, { "cornerstone.photography", true }, - { "cornerstonecmc.org", true }, + { "cornerstone.rocks", true }, + { "cornerstoneefree.org", true }, { "cornerstonefoundationrepairllc.com", true }, { "cornerstonenorthwest.com", true }, { "cornertoyshop.ga", true }, { "corniche.com", true }, { "corningcu.org", true }, + { "cornips.nl", true }, { "cornishcamels.com", false }, { "cornitek.tk", true }, { "cornmachine.com", true }, { "cornodo.com", true }, + { "cornut.fr", true }, { "cornwallct.gov", true }, { "cornwallda.co.uk", true }, { "coroas10.tk", true }, @@ -30457,20 +35720,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coronalab.eu", false }, { "coronasafe.network", true }, { "coronastationphotography.com", true }, - { "coronatestalmere.nl", true }, { "coronavaccinatiedatum.nl", true }, { "coronavirus-19.es", true }, + { "coronavirus-journal.fr", true }, { "coronavirus.de", true }, { "coronavirus.gov", true }, { "coronavirusfortbend.gov", true }, { "coronavirustesting.gov", true }, { "coronersconnect.co.uk", true }, { "cororocierodebelen.tk", true }, + { "corovan.com", true }, { "corp.goog", true }, { "corpfin.net", true }, { "corpheuss.ga", true }, { "corpio.nl", true }, - { "corpkitnw.com", true }, + { "corplex.com", true }, + { "corpoepele.com.br", true }, { "corpoflow.nl", true }, { "corpomotriztokio.com", true }, { "corpora.ga", true }, @@ -30479,10 +35744,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corporate-electric.ky", true }, { "corporateclash.net", true }, { "corporatecomputingsolutions.com", true }, + { "corporategift.com", true }, { "corporatehelicopters.com", true }, + { "corporatehitech.com.au", true }, { "corporateinbound.com", true }, - { "corporateinfluencers.com", true }, - { "corporatesubscriptions.com.au", false }, { "corporativoarval.info", true }, { "corposeditora.tk", true }, { "corpsepaint.life", true }, @@ -30495,29 +35760,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corrales-sanchez.tk", true }, { "correct.cf", true }, { "correctconstructions.com.au", true }, - { "correctemails.com", true }, { "correcthorse.cf", true }, { "correcthorse.pw", true }, + { "correctionalofficer.org", true }, + { "correctionalofficeredu.org", true }, { "correctiv.org", true }, { "correctlydesign.com", true }, { "corrector.com.ua", true }, { "correctpaardbatterijnietje.nl", true }, { "corredorampr.com", true }, + { "correo-e.mx", true }, { "correo.club", true }, { "correotemporal.org", true }, { "correspond.gq", true }, { "correspondent.ga", true }, { "corrick.io", true }, + { "corride.at", true }, { "corridorsands.com.au", true }, { "corriere.roma.it", true }, + { "corrieresalentino.it", true }, { "corrigan.xyz", true }, + { "corrupt-republicans.com", true }, { "corruptcatz.com", true }, { "corruptos.tk", true }, + { "corry-new.cloud", true }, { "cors-proxy.cf", true }, - { "cors.one", true }, { "corsa-b.uk", true }, + { "corsac.nl", true }, { "corsectra.com", true }, - { "corsepro.com", false }, + { "corsepro.com", true }, { "corservsolutions.com", true }, { "corsetacademy.tk", true }, { "corsi.tk", true }, @@ -30535,16 +35806,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corte.tk", true }, { "cortealcastello.it", true }, { "cortege.cf", true }, + { "cortemadera.gov", true }, { "cortep.fr", true }, - { "cortesparapelo.com", true }, { "cortestesisat.net", true }, { "cortex-development.de", true }, - { "cortexx.nl", true }, { "cortezco.gov", true }, { "cortezsanitation.gov", true }, + { "corthouts.pl", true }, { "cortino.ga", true }, { "cortis-consulting.ch", true }, - { "cortizo.com.ar", true }, + { "cortizocampillo.com.mx", true }, + { "cortlandreview.com", true }, { "cortlandvoice.com", true }, { "cortonaeranieri.com.br", true }, { "corum.fr", true }, @@ -30558,13 +35830,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "corvuscorax.xyz", true }, { "coryadum.com", true }, { "coryellcountytx.gov", true }, + { "corykoz.com", true }, { "coryluba.com", true }, - { "corytyburski.com", true }, + { "corytennison.net", true }, + { "cos.rent", true }, { "cosasnuevas.tk", true }, { "cosasque.com", true }, { "cosavederein1giorno.it", true }, { "cosavederein5giorni.it", true }, - { "cosec.cn", true }, + { "cosec.cn", false }, { "coshima.cf", true }, { "coshima.ga", true }, { "coshima.gq", true }, @@ -30573,17 +35847,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coskun.tk", true }, { "coslinker.com", false }, { "cosmasiakraft.tk", true }, - { "cosmechic.fr", true }, + { "cosmeagardens.com", true }, + { "cosmekaitori.jp", true }, { "cosmetic-surgery-prices.co.uk", true }, { "cosmeticasimple.com", true }, { "cosmeticenter.com.br", true }, { "cosmeticosdelivery.com.br", true }, { "cosmeticosfuerth.de", true }, { "cosmeticosnet.com.br", true }, + { "cosmeticosprofissionais.com.br", true }, { "cosmeticsurgeon.ga", true }, { "cosmetify.com", true }, { "cosmetiq.tk", true }, - { "cosmetiqua.com", true }, { "cosmetiquesvegans.com", true }, { "cosmetix-ndsf.fr", true }, { "cosmiatria.pe", true }, @@ -30592,11 +35867,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cosmicdrifters.com", true }, { "cosmichpc.com", true }, { "cosmichpc.systems", true }, + { "cosmick9.net", true }, { "cosmicnetworks.cf", true }, + { "cosmictourist.de", true }, { "cosmicworlds.mobi", true }, - { "cosmicyes.de", true }, + { "cosmocode.de", true }, { "cosmodacollection.com", true }, { "cosmohit.ua", true }, + { "cosmohost.info", true }, { "cosmohosting.site", true }, { "cosmoiler.com", true }, { "cosmonaut.tk", true }, @@ -30609,19 +35887,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cosmosenalerta.tk", true }, { "cosmosmkt.com.mx", true }, { "cosmoz.ga", true }, + { "cosms.com", true }, { "cosmundi.de", true }, + { "cosmv.org", true }, { "cosni.co", true }, + { "cosos.gov", true }, { "cosplayer.com", true }, { "cospol.ch", false }, { "cosset.com.tw", true }, { "costa-ballena.tk", true }, { "costablanca.villas", true }, + { "costablancavoorjou.com", true }, { "costalinux.tk", true }, { "costarellos.com", true }, { "costaricanvillas.com", true }, { "costazulinmobiliaria.com", true }, { "costco.co.jp", true }, { "costco.co.kr", true }, + { "costco.co.nz", true }, { "costco.co.uk", true }, { "costco.com.au", true }, { "costco.com.mx", true }, @@ -30635,35 +35918,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "costi.cf", true }, { "costi.eu", true }, { "costinesti.tk", true }, - { "costinstefan.eu", true }, { "costoflipitor.gq", true }, + { "costplusdrugs.com", true }, + { "costravel.ru", true }, { "costreportdata.com", false }, { "costruzioni.milano.it", true }, { "costum-for-men.tk", true }, { "costumestylesers.ga", true }, { "costurin.com", true }, - { "cosummitconstruction.com", true }, + { "cosude.org.pe", true }, { "cosumnescsd.gov", true }, + { "cosuno.com", true }, + { "cosy-interior.com", true }, { "cosyden.tk", true }, { "cotak.gov", true }, + { "cotalent.com.mx", true }, { "cotandoseguro.com", true }, { "coteax.com", true }, { "coteax.nl", true }, { "cotehy.com", true }, { "cotejardin.gent", true }, + { "cotennis.net", true }, { "coteouestmedia.com", true }, - { "coteries.com", false }, { "coth.ml", true }, - { "cotoacc.com", true }, + { "cothurnes.fr", true }, { "cotofoto.tk", true }, { "coton.tk", true }, { "cotonni.tk", true }, + { "cotrugli.social", true }, { "cotsworth.com", true }, { "cotta.dk", true }, - { "cottage.direct", true }, { "cottagegroveor.gov", true }, + { "cottagelife.com", true }, + { "cottier-angeli.swiss", true }, { "cottonage.tk", true }, { "cottonwoodcountymn.gov", true }, + { "cottonwoodimprovement.gov", true }, { "cotwe-ge.ch", false }, { "coubron-escrime.fr", true }, { "couchidiomas.com", true }, @@ -30674,24 +35964,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cougarlyon.fr", true }, { "coughlan.de", true }, { "could.jp", true }, + { "couleur-lavande.com", true }, { "couleursorgue.tk", true }, { "coun.be", true }, + { "counseling4students.com", true }, + { "counselingforstudents.com", true }, { "counselingfw.com", true }, { "counsellingtime.co.uk", true }, { "counsellingtime.com", true }, + { "counsellink.net", true }, { "counstellor.com", false }, - { "count.sh", false }, { "counter-strike.net.cn", true }, + { "countercloud.com", true }, { "counterenlol.com", true }, { "counterespionage.com", true }, { "countermats.net", true }, { "countermentors.com", true }, { "counterstrikeonline.org", true }, { "countertopapothecary.com", true }, - { "countetime.com", true }, + { "countertrade.com", false }, { "countexact.com", true }, { "countingdues.com", true }, + { "countingup.com", true }, { "countrify.net", true }, + { "country-candles.co.uk", true }, { "country-creativ.de", true }, { "country-dancers.tk", true }, { "country-games.tk", true }, @@ -30710,19 +36006,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "countybankdel.com", true }, { "countyjailinmatesearch.com", true }, { "countyofbarton.gov", true }, + { "countyofmonterey.gov", true }, + { "countyofmontereyca.gov", true }, { "coup-dun-soir.ch", true }, { "coupa.com", true }, { "coupedevils.tk", true }, { "coupestanley.com", true }, { "couplay.org", true }, { "couplesapp.co", true }, + { "couponarea.com", true }, + { "couponava.com", true }, { "couponchief.com", false }, + { "couponcodefind.com", true }, { "couponcodesme.com", true }, - { "couponite.com", false }, + { "couponfollow.co.uk", true }, { "couponsale.tk", true }, { "couponsavingcodes.com", true }, + { "couponzil.com", true }, { "cour4g3.me", true }, { "courage-sachsen.org", true }, + { "courage.cf", true }, + { "courageoushumanity.click", true }, { "couraqe.tk", true }, { "courier.lk", true }, { "couriergrey.com", true }, @@ -30730,50 +36034,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "couriertrackers.com", true }, { "coursables.com", true }, { "coursdejaponais.com", true }, - { "course-net.com", true }, + { "course24h.com", true }, + { "course5i.com", true }, { "courseconfidence.com", true }, { "coursehero.com", true }, { "coursehunter.net", true }, { "courselore.org", true }, - { "courseorbit.com", true }, { "coursera.org", true }, + { "coursereleases.com", true }, { "courses.nl", true }, + { "coursesanswer.com", true }, + { "coursesidekick.com", true }, + { "coursesweb.net", true }, { "courseworkbank.info", true }, { "coursingweb.tk", true }, + { "coursocean.co", true }, + { "courstoujours.be", true }, { "court1tickets.co.uk", true }, { "court1tickets.com", true }, + { "court23taylormi.gov", true }, + { "courthousedirect.com", true }, { "courtlandtwpmi.gov", true }, - { "courtneybearse.com", true }, { "courtonetickets.co.uk", true }, { "courtonetickets.com", true }, + { "courtreporteredu.org", true }, { "courttranscriptontario.ca", true }, { "courvix.com", true }, { "couscous.recipes", true }, { "cousine.tk", true }, { "cousins.tk", true }, + { "couteauxsurvie.fr", true }, { "couverture-barre.fr", true }, { "couvreur-hinault.fr", true }, { "covar.com.co", true }, { "covbounce.co.uk", true }, + { "cove.chat", true }, + { "covechat.xyz", true }, { "covenantbattle.net", true }, + { "covenco.com", true }, { "coventry.com", true }, { "coventrycollege.ac.uk", true }, { "coventryuk.tk", true }, { "cover-fashion.de", true }, + { "coverage-db.org", true }, { "coveragecareservices.co.uk", true }, + { "coveragent.de", true }, { "covercrust.com", true }, { "covercupboard.co.uk", true }, { "coveredinspiders.com", true }, - { "coverful.io", true }, - { "covergarage.biz", true }, + { "covering.com.py", true }, + { "covermusik-band.de", true }, { "covermytrip.com.au", true }, { "covers.com", true }, { "covershousing.nl", true }, { "covert.sh", true }, + { "coveteur.com", true }, + { "coviacorp.com", true }, { "covid-19.nhs.uk", true }, { "covid-19advice.com", true }, - { "covid-games.herokuapp.com", true }, - { "covid-model.net", true }, { "covid.gov", true }, { "covid19-tracing.ch", true }, { "covid19.gov.ph", true }, @@ -30781,20 +36099,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "covid19.melbourne", true }, { "covid19.nhs.uk", true }, { "covid19dataportal.si", true }, - { "covid19details.com", true }, + { "covid19elite.com", true }, { "covid19resilience.org", true }, { "covid19responsepod.com", true }, { "covid19scotland.co.uk", false }, { "covid19statstracker.com", true }, + { "covid19tvm.com", true }, + { "covidactnow.org", true }, { "covidcoldfacts.com", true }, + { "coviddiary.live", true }, { "coviddrawings.org.uk", true }, { "covidfreeathome.org", true }, { "covidinfo.com.br", true }, { "covidlive.com.au", true }, { "covidmodel.net", true }, { "covidpppstore.co.za", true }, + { "covidservicepoint.de", true }, { "covidstats.gr", true }, { "covidtest.gov", true }, + { "covidtesthonolulu.org", true }, { "covidtests.gov", true }, { "covidtracker.fr", true }, { "covisa.cl", true }, @@ -30810,29 +36133,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "coworkanywhere.ch", true }, { "coworking-luzern.ch", true }, { "coworking-space.tk", true }, - { "coxcapitalmanagement.com", true }, + { "coxhealthfoundation.com", true }, { "coxxs.me", true }, { "coxxs.moe", true }, { "coya.tw", true }, + { "coyo.tl", true }, + { "coyocloud.com", true }, { "coyote.cf", true }, + { "coyote105.com", true }, { "cozanne.fr", true }, { "coze.zone", true }, + { "cozinharaz.com", true }, + { "cozmerce.com", true }, { "cozmoapp.com", true }, { "cozmoyachts.com", true }, { "cozo.me", true }, { "coztacukrzyca.pl", true }, { "cozy.town", true }, { "cozyeggdesigns.com", true }, + { "cozynergy.com", true }, { "cozzack.com", true }, { "cp-st-martin.be", true }, - { "cp014.com", true }, { "cp015.com", true }, { "cp017.com", false }, { "cp061.com", false }, - { "cpa-ea.co.il", false }, + { "cpacharge.com", true }, { "cpadollar.cf", true }, - { "cpaexamguy.com", true }, - { "cpagray.com", true }, + { "cpagray.com", false }, { "cpanels.us", true }, { "cpaneltips.com", true }, { "cpap.com", true }, @@ -30844,38 +36171,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cpatoday.club", true }, { "cpbanq.com", true }, { "cpcbegin.tk", true }, - { "cpcheats.co", true }, - { "cpchur.ch", true }, - { "cpcyber.com", true }, + { "cpchur.ch", false }, { "cpd-education.co.uk", true }, - { "cpdhealthcare.com", true }, + { "cpd.org.au", true }, { "cpe-colleg.de", true }, + { "cpe-registry.com", true }, + { "cpe-registry.net", true }, + { "cpe-registry.org", true }, { "cpegypt.tk", true }, + { "cpeip.cl", true }, { "cpelighting.tk", true }, + { "cperegistry.com", true }, + { "cperegistry.net", true }, + { "cperegistry.org", true }, { "cpfpa.com", true }, { "cpfrancophonie.org", true }, - { "cpfs-group.com", true }, - { "cpgarmor.com", true }, + { "cpg.de", true }, { "cpgiiaragon.es", true }, + { "cphawkesburyvalley.com.au", true }, { "cphollywoodproduct.ml", true }, { "cphpvb.net", true }, { "cpish.id.au", true }, { "cpls.me", true }, { "cplus.me", true }, - { "cplusplus.se", true }, { "cpm-steuerberater.de", true }, { "cpm-steuerberater.pro", true }, { "cpm-steuerberater.support", true }, - { "cppan.org", true }, + { "cpme-industrial.com", true }, + { "cpost.com.tr", true }, { "cppaste.org", true }, { "cppressinc.com", true }, { "cpqcol.gov.co", true }, - { "cprealtysolutions.com", true }, { "cpro.pt", true }, { "cps-sante.ml", true }, { "cpsa.co.uk", true }, + { "cpsc.gov", true }, { "cpsecureapp.com", true }, { "cpsq.fr", true }, + { "cpstest.live", true }, + { "cpstest.org", true }, { "cpsurvey.com", true }, { "cptoon.com", true }, { "cptvl.de", true }, @@ -30883,17 +36217,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cpu.wiki", true }, { "cpucheu.com", true }, { "cpufanshop.ga", true }, + { "cpvmatch.eu", true }, + { "cpws.gov", true }, + { "cpxz.nl", true }, { "cpy.pt", true }, + { "cqep.com", true }, + { "cqfuchen.com", true }, { "cqn.ch", false }, { "cqoicebordel.tk", true }, { "cqradio.tk", true }, { "cqre.business", true }, - { "cqre.pl", true }, { "cqswxx.com", true }, - { "cqvradio.ddns.net", true }, + { "cqvradio.ddns.net", false }, { "cr.search.yahoo.com", false }, { "cr05.fr", true }, { "cr1coffee.com", true }, + { "cr3zyblog.com", true }, { "cr8haven.com", true }, { "cr9499.com", true }, { "cra-bank.com", true }, @@ -30904,18 +36243,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crabo3d.de", true }, { "crabrave.space", true }, { "crabtreestore.nl", true }, + { "cracedkey.com", true }, { "crackajack.cf", true }, + { "crackbros.com", true }, { "crackcat.de", true }, - { "crackedlemming.com", true }, + { "crackedlink.com", true }, { "crackedsoftware.cf", true }, { "cracker.in.th", true }, { "crackerjohn.tk", true }, { "crackers4cheese.com", true }, { "crackheros.site", true }, + { "crackhomes.com", true }, { "cracklab.tk", true }, { "crackle.io", true }, { "crackpfer.de", true }, + { "cracksarkariexam.com", true }, + { "cracksarkarinaukri.com", true }, + { "crackserialkey.co", true }, { "cracksnet.tk", true }, + { "crackspro.co", true }, { "crackstation.net", true }, { "cracky-chan.com", true }, { "cracky.art", true }, @@ -30924,39 +36270,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crackychan.org", true }, { "crackyhouse.com", true }, { "crackypedia.uk", true }, + { "crackzoom.com", true }, { "cradio.tk", true }, { "cradleaccounting.com", true }, + { "cradleofaviation.org", true }, + { "cradletocareer.org.uk", true }, { "craft-beer.life", true }, { "craft-me-in.com", true }, { "craft.eu.org", true }, + { "craftandart.info", true }, { "craftandbuild.de", true }, + { "craftarea.info", true }, + { "craftart.info", true }, { "craftbyhand.com", true }, + { "craftcms.com", true }, { "crafted.cat", true }, { "crafterbase.de", true }, + { "crafters-room.com", true }, { "crafters.co.jp", true }, + { "craftersmarket.uk", true }, { "craftfocus.com", true }, { "craftgalore.com.au", true }, { "craftination.net", true }, - { "craftingcrow.com", true }, { "craftinghand.com", false }, { "craftist.de", true }, { "craftmachinec.com", true }, + { "craftmenu.ru", true }, { "craftmeow.com", true }, { "craftmeow.support", true }, { "craftngo.hu", true }, { "craftottawa.ca", true }, + { "craftportal.info", true }, { "craftshiponline.tk", true }, { "craftsmandruggets.com", true }, { "craftsmany.net", true }, { "craftsofcleo.com", true }, { "crafttalk.tk", true }, + { "craftwarehouse.com", true }, { "craftwmcp.xyz", true }, - { "craftychameleonbar.com", true }, { "craftydev.design", true }, { "craftyguy.net", false }, { "craftyphotons.net", true }, { "craftyun.cn", true }, - { "crag.com.tw", true }, + { "craftzone.info", true }, { "craig-mullins.com", true }, { "craigary.net", true }, { "craigbates.co.uk", false }, @@ -30964,14 +36320,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "craigfrancis.co.uk", true }, { "craigheadcountyar.gov", true }, { "craigleclaireteam.com", true }, + { "craignewmarkphilanthropies.org", false }, { "craigphillips-work.cf", true }, { "craigrouse.com", true }, { "craigsaper.com", true }, { "craigwfox.com", false }, - { "craine.tech", true }, { "cramersoft.com", true }, { "cran-automobiles.fr", true }, - { "crandall.io", true }, { "cranems.com.ua", true }, { "cranenburgh.nl", true }, { "cranenburgh.tk", true }, @@ -30981,7 +36336,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crangasi.tk", true }, { "cranioo.nl", true }, { "crankshaft.space", true }, - { "cranshafengin.com", true }, { "cranstonri.gov", true }, { "craphound.com", true }, { "crapitalism.biz", true }, @@ -30994,28 +36348,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crashcoursecenter.com", true }, { "crashcrafter.de", true }, { "crashday.tk", true }, - { "crashdebug.fr", true }, + { "crashdebug.fr", false }, { "crashdummy.tk", true }, { "crashedata.tk", true }, + { "crashgambler.io", true }, + { "crashinc.org", true }, { "crashpaint.cf", true }, { "crate.io", false }, { "cratedb-dev.cloud", true }, { "cratedb.cloud", true }, { "cratedb.net", true }, { "crates-io.cn", true }, + { "cratexcalgary.com", true }, + { "cratexedm.com", true }, + { "cratexind.com", true }, + { "cratitadelicioasa.ro", true }, { "cratss.co.uk", true }, + { "cravatar.cn", false }, { "cravecraftonline.com", true }, { "crawcial.de", true }, + { "crawdadrepublic.com", true }, { "crawford.cloud", true }, { "crawfordcountyin.gov", true }, { "crawfordcountyohioboe.gov", true }, { "crawfordcountytcc.org", true }, + { "crawfordcountywi.gov", true }, + { "crawfordtx.gov", true }, { "crawler.ninja", true }, - { "crawloween.com", true }, { "crawlspaceandbasementsolutions.com", true }, + { "crax.tube", true }, + { "craxpro.io", true }, { "crayon.co", true }, { "craytos.jp", true }, - { "crazedknitters.com", true }, + { "crazilyeverafter.com", true }, { "crazy-cake.tk", true }, { "crazy-cat.net", true }, { "crazy-coders.com", true }, @@ -31032,6 +36397,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crazydrivers.tk", true }, { "crazydude.tk", true }, { "crazyfly.tk", true }, + { "crazyfrog.biz", true }, { "crazyfrog.com", true }, { "crazygifts.cf", true }, { "crazyhost.ga", true }, @@ -31040,14 +36406,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crazymarvin.com", true }, { "crazymeeshu.com", true }, { "crazymonkey.gq", true }, + { "crazynetwork.it", true }, { "crazypaul.com", true }, { "crazypellas.tk", true }, { "crazypete.ga", true }, { "crazypong.tk", true }, { "crazypotato.tk", true }, - { "crazypowered.com", true }, { "crazysavings.ga", true }, + { "crazysexpics.com", true }, { "crazystories.tk", true }, + { "crazytunaaz.com", true }, { "crbug.com", true }, { "crc-bank.com", true }, { "crc-online.nl", true }, @@ -31056,25 +36424,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crc32.online", true }, { "crca911co.gov", true }, { "crcdatatech.com", true }, - { "crcr.pw", true }, + { "crcncc.org", true }, + { "crcr.pw", false }, + { "cre8iveco.com", true }, + { "cre8ivedeals.com", true }, { "cre8studios.net", true }, { "crea-etc.net", false }, { "crea-shops.ch", false }, - { "crea-th.at", true }, { "crea-that.fr", true }, { "crea.bg", true }, { "crea.me", true }, { "creacioneslri.com", true }, { "creacode.tech", true }, + { "creactivatecomfandi.com", true }, { "creadoc.fr", true }, { "creadordenoticias.com", true }, { "creadstudy.com", true }, { "creafitchile.cl", true }, { "creaintel.net", true }, { "creaketing.com", true }, - { "crealab.top", true }, + { "crealabs.it", true }, { "crealogix-online.com", true }, { "creamcastles.co.uk", true }, + { "creamfields.com", true }, + { "creamless.com", true }, { "creampiepornvids.com", true }, { "creampiepussytube.com", true }, { "creamsoft.com", true }, @@ -31085,19 +36458,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crearesiteweb.tk", true }, { "creareup.com", true }, { "creartcol.tk", true }, - { "creartcompany.com", true }, { "creasetheband.tk", true }, { "creastic.com", true }, { "create-it.cz", true }, { "create-ls.jp", true }, { "create-website.ga", true }, + { "create2.be", true }, { "createbeauty.tk", true }, { "createbeing.com", true }, { "createbot.ml", true }, { "createcode.pt", true }, - { "createcos.com", true }, + { "createconline.de", true }, { "createcpanama.com", true }, { "creategyx.ga", true }, + { "creately.com", true }, + { "createme.com.pl", true }, + { "createsplashpages.com", true }, + { "createstudios.com.au", false }, { "createwithcynthia.com", true }, { "creati.me", true }, { "creatieven.com", true }, @@ -31108,19 +36485,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creationsgate.com", true }, { "creative-thinking.ro", true }, { "creative-wave.fr", true }, + { "creative2.ru", true }, { "creativeangles.in", true }, { "creativebaccha.ga", true }, + { "creativebathroomsandinteriors.com.au", true }, { "creativebitsandpieces.com", true }, { "creativebloq.tk", true }, - { "creativecaptiv.es", true }, { "creativecityofmusic.be", true }, { "creativecommons.gr", true }, { "creativecommons.org", false }, { "creativecommonscatpictures.com", true }, { "creativeconceptsvernon.com", true }, - { "creativedigital.co.nz", true }, + { "creativeconsult.com", true }, { "creativeeducation.tk", true }, { "creativeexpertdesigner.com", true }, + { "creativefocus.com", true }, { "creativeground.com.au", true }, { "creativeideasagency.com", true }, { "creativeink.de", true }, @@ -31128,15 +36507,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creativelaw.eu", true }, { "creativeliquid.com", true }, { "creativelysustainable.com", true }, + { "creativemarket.com", true }, + { "creativematters.ch", false }, { "creativemindslms.tk", true }, + { "creativenz.govt.nz", true }, + { "creativephs.com", true }, { "creativephysics.ml", true }, + { "creativescastle.com", true }, { "creativescorpio.tk", true }, { "creativesectors.tk", true }, { "creativestories.me", true }, - { "creativetechsolution.in", true }, + { "creativevietnam.com.vn", true }, { "creativeweb.biz", true }, { "creativewolf.net", true }, { "creativeworks.com.hk", true }, + { "creativika.it", true }, + { "creativityalliance.com", true }, { "creativlabor.ch", true }, { "creatix.tk", true }, { "creatixx-network.de", false }, @@ -31145,26 +36531,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creators.direct", true }, { "creatorswave.com", true }, { "creattic.tk", true }, - { "creatujoya.com", true }, - { "creature-comforts.co.za", true }, + { "creatuasociacion.es", true }, { "crebita.de", true }, { "crecips.com", true }, { "crecman.fr", true }, - { "credee.org", true }, { "credello.com", true }, { "credentsys.cloud", false }, { "credex.bg", true }, + { "credify.tech", true }, + { "credigo.io", true }, + { "credimarket.com", true }, + { "credimax.com.bh", true }, { "credit-10.com", true }, { "credit-default-swaps.tk", true }, + { "credit-mgmt.biz", true }, + { "credit.in.th", true }, { "creditcard.run", true }, { "creditcardgenerator.money", true }, + { "crediteurope.ru", true }, + { "creditfixcentral.com", true }, { "credithelpinfo.com", true }, { "creditif.tk", true }, { "creditjunkie.com", true }, { "creditkarma.ca", true }, { "creditkarma.com", true }, { "creditkarma.pro", true }, - { "credito360.pt", true }, { "creditoconsolidado.pt", true }, { "creditopessoal.pt", true }, { "creditor.ga", true }, @@ -31174,12 +36565,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creditozen.es", false }, { "creditozen.mx", false }, { "creditreport.tk", true }, + { "creditriskmonitor.com", true }, + { "creditsaint.com", true }, + { "creditshanghai.com", true }, { "creditshop.com", true }, - { "credittoken.io", true }, - { "credoperth.org", true }, + { "creditsummerevent.eu", true }, + { "creditxpert.com", true }, + { "credityes.com", true }, + { "crednox.com", true }, + { "credot.ru", true }, + { "creekie.me", true }, { "creeks-coworking.com", true }, { "creeksidebiblechurch.org", true }, { "creeksideduluth.com", true }, + { "creelandgow.com", true }, { "creep.im", true }, { "creep.tk", true }, { "creepnt.stream", true }, @@ -31188,43 +36587,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "creepystories.tk", true }, { "creer-mon-business-plan.fr", true }, { "creer-une-boutique-en-ligne.com", true }, - { "crem.in", false }, + { "creermonsite-wp.com", true }, + { "creerunblog.net", true }, { "cremalleradenuria.tk", true }, { "crematory.tk", true }, { "cremedigital.com", true }, - { "cremepassion.de", true }, + { "cremicro.com", false }, + { "crena.ch", true }, { "crepa.ch", false }, + { "crepaway.com.ng", true }, { "crepusculofansmexico.tk", true }, { "crescent-moon.tk", true }, { "crescentchc.org", true }, { "cresoweb.it", true }, { "cresserons.fr", true }, + { "cressetcapital.com", true }, { "crest.com", true }, { "crestalepropiedades.com.ar", true }, + { "crestaproject.com", true }, { "crestasantos.com", true }, + { "crestataustin.com.my", true }, { "crestaurant.com.au", true }, { "crestdatasys.com", true }, - { "crestfitness.co.in", true }, { "crestoncottage.com", false }, { "crestor20mg.ml", true }, { "crestorgeneric.ml", true }, + { "crestresearch.ac.uk", true }, { "crestrockadvisors.com", true }, + { "crestron.com", true }, { "crestwoodky.gov", true }, { "cretdupuy.com", false }, { "creteangle.com", true }, { "cretica.no", true }, { "creusalp.ch", false }, { "crew.moe", true }, + { "crewnetwork.com", true }, + { "crewpictures.com", true }, + { "crewresourcesinternational.group", true }, { "crewsing.tk", true }, { "crewvision.pt", true }, { "crex24.com", true }, - { "crfcap.org", true }, + { "crfcap.org", false }, { "crgalvin.com", true }, { "crgm.net", true }, + { "crh.org", true }, + { "criadomorro.com.br", true }, { "criandosites.com.br", true }, + { "crianma.com", false }, + { "criaraposta.com.br", true }, { "criativedesign.com.br", true }, { "cribboker.net", true }, { "cribcore.com", true }, + { "cric-grenoble.info", true }, + { "cricheroes.in", true }, { "cricket-betting-online.in", true }, { "cricketarena.ml", true }, { "cricketnmore.com", true }, @@ -31232,8 +36647,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crickey.eu", true }, { "crickits.co.uk", true }, { "cricklewood.condos", true }, + { "cricmela.com", true }, { "cricpa.com", true }, { "crictechs.com", true }, + { "cridem.org", true }, + { "cridigital.net", true }, { "criena.com", true }, { "criena.net", true }, { "crigler-najjar.fr", true }, @@ -31247,18 +36665,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crimeamet.ml", true }, { "crimean-wines.tk", true }, { "crimeandwar.com", true }, - { "crimeapress.info", true }, - { "crimebarta.com", true }, + { "crimeapress.info", false }, { "crimefreeliving.com", true }, - { "crimesolutions.gov", true }, + { "crimemuseum.org", true }, + { "crimesceneinvestigatoredu.org", true }, { "crimethincx.tk", true }, - { "crimevictims.gov", true }, + { "crimewatch.net", true }, + { "crimewatchfl.com", true }, + { "crimewatchpa.com", true }, + { "crimewatchus.com", true }, { "criminal-attorney.ru", true }, { "criminal-market.ml", true }, { "criminal-news.tk", true }, { "criminal.enterprises", true }, { "criminalcasecheats.ml", true }, - { "criminaljusticehub.org.uk", true }, + { "criminaljusticeprograms.com", true }, + { "criminaljusticeprogramsonline.com", true }, { "criminallawyerjobdescription.ga", true }, { "criminallawyerjobdescription.gq", true }, { "criminallawyerjobdescription.ml", true }, @@ -31266,6 +36688,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "criminalminds.tk", true }, { "criminalnote.tk", true }, { "criminalskin.tk", true }, + { "criminologia.or.cr", true }, + { "crimsh.com", true }, { "crimson.no", false }, { "crimsonconnect.co.uk", true }, { "crimsoncoward.com", true }, @@ -31273,6 +36697,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crimsoninators.ga", true }, { "crimsonlettersmusic.com", true }, { "crimsonmedia.co.uk", true }, + { "crimtan.com", true }, { "crinesdanzantes.be", true }, { "crioestaminal.pt", true }, { "crip-usk.ba", true }, @@ -31285,8 +36710,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "criptomonedaz.com", true }, { "criptomoneylite.tk", true }, { "criptozoologia.tk", true }, + { "cris.org.in", true }, { "cris2006.com", true }, { "crisantacademy.com", true }, + { "criscond.co.uk", true }, { "crisisactual.com", true }, { "crisisclubers.ga", true }, { "crisisdelos40.tk", true }, @@ -31297,17 +36724,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crisp.email", true }, { "crisp.help", true }, { "crisp.im", true }, + { "crisp.nl", true }, { "crisp.watch", true }, + { "crispinplasticsurgery.com", true }, { "crispinusphotography.com", true }, { "crispybacon.ml", true }, { "crisssmanmix.tk", true }, - { "cristalerencontres.fr", true }, { "cristaleslitios.com.mx", true }, { "cristalgema.ga", true }, + { "cristalid.com", true }, { "cristals.ga", true }, { "cristaltercos.com.br", true }, { "cristau.org", true }, { "cristenberens.tk", true }, + { "cristiaen.nl", true }, { "cristian-alexander.tk", true }, { "cristiandumitru.tk", true }, { "cristianhares.com", true }, @@ -31325,6 +36755,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "criteriaproducciones.tk", true }, { "criterion.ga", true }, { "criterionsystems.co.uk", true }, + { "critfc.org", true }, { "critical-scientists.net", true }, { "critical.software", true }, { "criticalcaredvm.com", true }, @@ -31333,28 +36764,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "criticalculture.ml", true }, { "criticalgenesis.tk", true }, { "criticalmention.com", true }, + { "criticalmetalscorp.com", true }, { "criticalrace.org", true }, { "criticalsurveys.co.uk", true }, { "criticcoos.tk", true }, { "criticizetheworld.tk", true }, { "critiker.com", true }, + { "critiquejeu.info", true }, { "critiquejeu.org", true }, { "critterculture.com", true }, + { "crivitz.gov", true }, { "crixto.io", true }, { "crizin.io", true }, { "crl-autos.com", true }, { "crlna.com", true }, { "crm-dialog.com", true }, { "crm-dialog.de", true }, + { "crm-gestion-relation-client.com", true }, { "crm.onlime.ch", false }, { "crm114d.com", true }, + { "crmall.com", true }, { "crmdumariage.com", true }, { "crmforce.mil", true }, + { "crmot.com", true }, { "crmplace.com", true }, { "crmtaxi.ml", true }, { "crmzz.com", true }, + { "crnajobsite.com", true }, + { "croachlife.com", true }, + { "crobeauty.com", true }, { "croceverdevb.it", true }, + { "crocheteursdefrance.fr", true }, { "crochetkim.com", true }, + { "crocia.com", true }, + { "crockettdoodles.com", false }, { "crockettmyers.com", true }, { "crocky.tk", true }, { "crocop.tk", true }, @@ -31371,18 +36814,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cromwell-intl.com", true }, { "cromwellarc.co.uk", true }, { "cromwellvets.co.uk", true }, + { "cron.uz", true }, { "cronberg.ch", true }, { "croncron.io", true }, { "cronenberg.cc", true }, { "cronicademuro.tk", true }, { "cronix.cc", true }, { "cronjob.de", true }, - { "cronmaster.online", true }, + { "cronobox.one", true }, { "cronologie.de", true }, { "cronometer.com", true }, { "cronoscentral.be", true }, { "crookcountyor.gov", true }, { "crookedcru.tk", true }, + { "crookedtower.com", true }, { "crooklibraryor.gov", true }, { "crookpublichealthor.gov", true }, { "crop-alert.com", true }, @@ -31396,92 +36841,114 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cross-led-sign.com", true }, { "cross-x.com", true }, { "crossair.tk", true }, + { "crosschq.com", true }, { "crosscom.ch", true }, { "crossconnected.co.uk", true }, { "crossdresscontest.com", true }, { "crossedwires.net", true }, { "crossfiremovies.tk", true }, { "crossfitbesafe.com", true }, - { "crossfitblau.com", true }, { "crossformer.com", true }, { "crossfunctional.com", true }, - { "crossfw.com", true }, - { "crossingna.com", true }, - { "crosslakefibre.ca", true }, { "crosslifenutrition.co.uk", false }, { "crosslimit.ga", true }, + { "crosslink.ae", true }, { "crossorange.jp", true }, - { "crossorig.in", true }, { "crossover.tk", true }, { "crossoverit.com", true }, { "crosspeakoms.com", true }, + { "crossplainstn.gov", true }, { "crosspointmn.org", true }, + { "crossriver.com", false }, { "crossroads-gmbh.ch", true }, + { "crossroadsdentalgroup.org", true }, + { "crosstitch.com", true }, + { "crossuniverse.net", true }, { "crossway.nl", true }, { "crosswayz.tk", true }, + { "crosswordarchive.org", true }, { "crosty.tk", true }, { "crotchrockets.tk", true }, { "crow.tw", true }, { "crowcloud.com", true }, - { "crowd.supply", true }, + { "crowdbank.jp", true }, { "crowdbox.net", true }, { "crowdcloud.be", true }, { "crowdfavorite.com", true }, + { "crowdfiber.com", true }, { "crowdfundingdream.com", true }, { "crowdfundinggent.be", true }, - { "crowdliminal.com", true }, { "crowdpress.it", true }, { "crowdsim3d.com", true }, { "crowdstack.com", true }, { "crowdstack.io", true }, { "crowdsupply.com", true }, + { "crowleybrynn.com", true }, { "crown-beverage.com", true }, + { "crown-building.com", true }, { "crown-trading.ru", true }, { "crownaffairs.ch", true }, { "crowncastles.co.uk", true }, { "crownchessclub.com", true }, { "crownedhijab.com", true }, + { "crownednetwork.com", true }, { "crownmarqueehire.co.uk", true }, { "crownpoint.com", false }, { "crownsterling.io", true }, { "crowter.li", true }, - { "crox.co", true }, + { "crowwing.gov", true }, { "croxu.com", true }, { "croydonapartments.com.au", true }, { "croydonbouncycastles.co.uk", true }, { "crrapi.cf", true }, { "crrapi.xyz", true }, { "crrev.com", true }, + { "crsngthsswthy.com", true }, { "crsoresina.it", true }, { "crsserviceogkloak.dk", true }, { "crstat.ru", true }, - { "crsujind.org", true }, { "crt.cloud", true }, { "crt.sh", true }, { "crt2014-2024review.gov", true }, { "crtalleres.com", true }, + { "crti.dz", true }, + { "crti.tech", true }, { "crtified.me", true }, - { "cruceroadicto.com", true }, { "crucerosplus.com", true }, + { "crucial.com", true }, + { "crucial.de", true }, + { "crucial.es", true }, + { "crucial.fr", true }, + { "crucial.in", true }, + { "crucial.jp", true }, + { "crucial.tw", true }, { "cruelalice.net", true }, { "cruelcarbon.tk", true }, { "cruelgirls.tk", true }, { "crufad.org", false }, { "cruicky.co.uk", true }, { "cruicky.uk", true }, - { "cruiseaddicts.com", true }, + { "cruiseamerica.com", true }, { "cruisecheap.com", true }, { "cruisecontrolnovels.com", true }, { "cruisefashion.tk", true }, { "cruiseguy.com", true }, + { "cruiselookout.com", true }, { "cruisemoab.com", true }, { "cruisemongers.com", true }, + { "cruisequotes.com", true }, { "cruises.tk", true }, + { "cruisezoom.com", true }, { "crumbcontrol.com", true }, { "crumbscorkscrews.com", true }, { "crumobr.com", true }, + { "crunchconsult.com", true }, + { "crunchi.com", true }, + { "crunchopedia.com", true }, + { "crunchr.com", true }, { "crunchrapps.com", true }, { "crunchy.rocks", true }, + { "crunchybetty.com", true }, { "crushingcasinos.com", true }, { "crushthelsatexam.com", true }, { "crushthepmexam.com", true }, @@ -31492,18 +36959,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cruzadamorada.tk", true }, { "crvegas.com", true }, { "crvenikrst.tk", true }, - { "crvv.me", true }, - { "crxviewer.com", true }, { "cry-sys.de", false }, - { "cry.nu", false }, + { "cryo-fit.com", true }, { "cryo-informatique.com", true }, { "cryoflesh.com", true }, + { "cryogeni.fr", true }, + { "cryosite.com", true }, { "cryothanasia.com", true }, { "cryovex.com", true }, { "cryozenic.com", true }, { "cryp.no", true }, - { "crypkit.com", true }, - { "cryps.pl", true }, { "crypt-app.net", true }, { "crypt0cloud.ddns.net", false }, { "cryptcheck.fr", true }, @@ -31511,22 +36976,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crypted.chat", false }, { "crypteianetworks.com", true }, { "cryptenet.com", true }, + { "crypterium.com.br", true }, { "cryptex.net", true }, { "crypticdeath.tk", true }, { "crypticface.tk", true }, { "crypticonseattle.com", true }, { "crypticstench.tk", true }, + { "cryptii.com", false }, { "cryptingup.com", true }, + { "cryptitan.live", true }, { "cryptizy.com", true }, { "cryptme.in", true }, { "crypto-ads.ga", true }, { "crypto-clix.xyz", true }, { "crypto-gaming.tk", true }, - { "crypto-tools.cloud", true }, { "crypto-trade.org", true }, { "crypto-twist.com", true }, { "crypto-wiki.tk", true }, - { "crypto.be", true }, { "crypto.cat", true }, { "crypto.graphics", true }, { "crypto.is", false }, @@ -31534,22 +37000,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cryptoanarchist.tk", true }, { "cryptoarabsolar.tk", true }, { "cryptobells.com", false }, + { "cryptobet.guru", true }, { "cryptobin.co", true }, { "cryptobonus.ga", true }, { "cryptobonus.tk", true }, + { "cryptobot.dk", true }, { "cryptoclix.website", true }, { "cryptocon.org", true }, { "cryptocurrencylatestnews.today", true }, { "cryptocurrencynews.today", true }, { "cryptocurrencyservices.com", true }, + { "cryptodogsnft.com", true }, + { "cryptodore.com", true }, + { "cryptodredge.org", true }, { "cryptoearnblog.xyz", true }, { "cryptoeighty.com", true }, + { "cryptofacilities.co.uk", true }, + { "cryptofacilities.com", true }, { "cryptofan.org", true }, - { "cryptofibers.ml", true }, + { "cryptofinance.ai", true }, { "cryptofomo.capital", true }, { "cryptofomocapital.com", true }, { "cryptoforo.com", true }, { "cryptofox.nl", true }, + { "cryptogazette.com", true }, + { "cryptography.blue", true }, { "cryptography.ch", true }, { "cryptography.io", true }, { "cryptoguidemap.com", true }, @@ -31560,13 +37035,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cryptoki.fr", true }, { "cryptolab.tk", true }, { "cryptoleed.com", true }, + { "cryptolingo101.com", true }, { "cryptolocalatm.com", true }, { "cryptology.ch", true }, { "cryptolot.ru", true }, { "cryptomail.nl", true }, { "cryptomaniaks.com", true }, + { "cryptominerxhq.com", true }, + { "cryptomining.mobi", true }, { "cryptomixer.io", false }, { "cryptomkt.com", true }, + { "cryptomonnaies.io", true }, { "crypton.academy", true }, { "crypton.blog", true }, { "crypton.exchange", true }, @@ -31576,32 +37055,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crypton.wiki", true }, { "crypton.xyz", true }, { "cryptonaire.ga", true }, - { "cryptonetlife.com", true }, { "cryptonit.cf", true }, { "cryptonom.org", true }, { "cryptonym.com", true }, { "cryptool.org", true }, - { "cryptoonnews.xyz", true }, { "cryptop.ml", true }, { "cryptoparty.at", true }, { "cryptoparty.dk", true }, + { "cryptoparty.in", true }, { "cryptoparty.tv", true }, { "cryptopartynewcastle.org", true }, { "cryptopartyutah.org", true }, { "cryptopaste.org", true }, { "cryptophobia.nl", true }, - { "cryptopyramide.com", true }, + { "cryptopuk.com", true }, + { "cryptopuppers.co", true }, { "cryptorival.com", true }, + { "cryptoruay.com", true }, + { "cryptoscope.io", true }, { "cryptoseb.pw", true }, + { "cryptosender.io", true }, { "cryptoshot.pw", true }, { "cryptosolicitations.com", true }, + { "cryptostarz.online", true }, { "cryptostorm.is", true }, { "cryptotabworks.ml", true }, { "cryptotoken.site", true }, { "cryptotrendclub.com", true }, - { "cryptowhile.com", true }, + { "cryptoviet.com", true }, + { "cryptowat.ch", true }, { "cryptowhitelists.com", true }, - { "cryptox-trading.com", true }, { "cryptoya.io", true }, { "cryptozoologyguide.com", true }, { "cryptpad.cz", true }, @@ -31614,24 +37097,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "crys.ovh", true }, { "crys.pw", true }, { "crys.tv", true }, + { "crystal-blindsnottingham.co.uk", true }, { "crystal-media.tk", true }, { "crystal-zone.com", true }, + { "crystal.com.co", true }, { "crystalapp.ca", true }, + { "crystalball.photo", true }, { "crystalblockchain.com", true }, { "crystalcave.nl", false }, { "crystalcaves.tk", true }, { "crystalchandelierservices.com", true }, { "crystalcherryonline.tk", true }, + { "crystalcleaningservicing.com", true }, { "crystalcube.tk", true }, { "crystaldesign.tk", true }, { "crystaldown.de", false }, { "crystalglass.ml", true }, - { "crystalgrid.net", true }, - { "crystalhealthandbeauty.co.uk", true }, { "crystallake.tk", true }, - { "crystallizedcouture.com", true }, - { "crystaloscillat.com", true }, - { "crystalpack.com.au", true }, + { "crystalprinting.com.au", true }, { "crystalsdollz.tk", true }, { "crystalsky.tk", true }, { "crystalspringsms.gov", true }, @@ -31645,70 +37128,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cs-lite.tk", true }, { "cs-mania.tk", true }, { "cs-master.tk", true }, + { "cs-nri.com", true }, { "cs-powa.tk", true }, { "cs-top.tk", true }, { "cs-tops.tk", true }, { "cs-unlimited.tk", true }, { "cs-westside.tk", true }, { "cs.money", true }, + { "cs2.ac.cn", true }, + { "cs2.chat", true }, + { "cs2.net.cn", true }, + { "cs2.org.cn", true }, + { "cs2.pub", true }, + { "cs2.ren", true }, { "csa-clan.tk", true }, + { "csa-library.org", true }, { "csa.co.za", true }, { "csa.support", true }, { "csaapac.com", true }, { "csaapac.org", true }, + { "csab.nic.in", true }, { "csabg.org", true }, + { "csabinext.dyndns.org", true }, { "csachapter.io", true }, { "csacloudbytes.com", true }, + { "csacloudtrustsummit.com", true }, { "csacongress.com", true }, { "csacongress.org", true }, { "csacongress.us", true }, + { "csadc.org", true }, { "csaemeacongress.com", true }, { "csaemeasummit.com", true }, { "csaerotherm.com", true }, { "csafederalsummit.com", true }, { "csale.co.il", true }, + { "csapa.com", true }, { "csaposs.com", true }, - { "csarchispace.com", true }, + { "csasummit.net", true }, + { "csasummit.org", true }, { "csatestdomain.com", true }, { "csaurl.org", true }, { "csb-consultancy.com", true }, + { "csbs.org", true }, { "csbya.com", true }, + { "csc-muenchen.de", true }, { "csca.me", false }, { "cscau.com", false }, + { "cscholz.io", true }, { "cschreiber.llc", true }, + { "cschristmas.com.au", true }, { "csci571.com", true }, { "cscmotors.com", true }, { "cscred.online", true }, { "csd-sevnica.si", true }, { "csd-slovenije.si", true }, { "csdacadcv.ga", true }, + { "csdcab.ca", true }, { "csdcareerday.com", true }, - { "csdisaster.club", true }, + { "csdisco.com", true }, { "csds.md", true }, { "cse-uniserve.com.au", true }, + { "csedu.com", true }, { "csehnyelv.hu", true }, { "cselzer.com", true }, { "csengle.de", true }, - { "cser.me", false }, { "csevolution.tk", true }, { "csexy.ml", true }, { "csfcloud.com", true }, { "csfd.cz", true }, + { "csfd.sk", true }, { "csfm.com", true }, + { "csgbusiness.co.uk", true }, + { "csghomedesignbuild.com", true }, + { "csgo-roulette.ru", true }, { "csgo.ac.cn", true }, { "csgo.help", true }, + { "csgo.net", true }, { "csgo.su", true }, - { "csgo77.com", true }, { "csgoba.cn", true }, - { "csgobar.com", true }, { "csgodatabase.com", true }, + { "csgoempire.com", true }, + { "csgoempire.gg", true }, { "csgofile.tk", true }, + { "csgofinder.eu", true }, { "csgomtr.com", true }, { "csgostash.com", true }, { "csgoswap.com", true }, { "csgotwister.com", true }, { "csgoyournal.com", true }, - { "cshark.com", true }, { "csharp.love", true }, { "csharpmarc.net", true }, { "cshe.de", true }, @@ -31717,33 +37224,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cshive.com", true }, { "cshm-schm.ca", true }, { "cshostorg.tk", true }, - { "cshub.nl", true }, { "csilies.de", true }, - { "csimarket.com", true }, + { "csillagoszpumi.se", true }, { "csirt.ee", true }, { "csitarz.com", true }, { "cskentertainment.co.uk", true }, { "cskt.gov", true }, { "cslbuild.com", true }, { "csmainframe.com", true }, - { "csmediaoc.com", true }, { "csn3366.ga", true }, - { "csnc.ch", true }, { "csnet.live", true }, { "csodaorszagovoda.hu", true }, - { "csokolade.hu", true }, { "csokolozos-jatekok.tk", true }, + { "csolar.com", true }, + { "csorncss.ca", true }, { "csosa.gov", true }, { "csowt.gq", true }, { "csp-tohoku.co.jp", true }, - { "csp.ch", false }, + { "csper.io", true }, { "cspeti.hu", true }, - { "cspi.uz", true }, { "cspvalidator.org", true }, { "csreturn.com.au", true }, { "csrichter.com", true }, { "csroot.cf", true }, + { "csrtci.com", true }, { "csrtech.com", true }, + { "csrtech.info", true }, + { "csrtech.pro", true }, + { "csrtech.support", false }, { "csru.net", true }, { "css-krebs.ch", true }, { "css-tricks.com", true }, @@ -31751,51 +37259,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "css.direct", true }, { "cssai.eu", true }, { "cssaunion.com", true }, + { "cssbmb.gov", true }, + { "csspsverify.com", true }, { "csspublic.tk", true }, { "csssr.com", true }, { "csszamotuly.pl", true }, - { "cst-vbg.ru", true }, + { "cst-vbg.ru", false }, { "cst188.cc", true }, { "cstanley.net", true }, - { "cstb.ch", false }, { "cstevens.cc", true }, + { "cstg.com", true }, { "cstmadrid.tk", true }, { "cstmo.org", true }, + { "cstoredecisions.com", true }, { "cstp-marketing.com", true }, { "cstromblad.com", true }, { "cstrong.nl", true }, { "csty.ltd", true }, { "csu.st", true }, + { "csub.edu", true }, + { "csuchen.com", true }, { "csulb-cmp-eir.com", true }, { "csumathtutor.com", true }, { "csupe.hu", true }, { "csusop.gov", true }, { "csuw.net", true }, { "csvalpha.nl", true }, + { "csvlombardia.it", true }, { "csvplot.com", true }, { "cswapps.com", true }, + { "cswatch.org", true }, { "cswebi.net", true }, - { "cswgmbh.de", true }, { "csx.co.za", true }, { "csy.hu", true }, + { "ct-static.com", true }, { "ct-watches.dk", true }, { "ct.search.yahoo.com", false }, + { "ctadalafil.com", true }, + { "ctafo.com", false }, + { "ctauditors.gov", true }, { "ctcloud.ml", true }, { "ctcom-peru.com", true }, { "ctcp.pt", true }, - { "ctcue.com", true }, + { "ctdi.pl", true }, { "ctech.cf", true }, - { "ctemplar.com", true }, + { "ctes.cz", true }, + { "ctet.nic.in", true }, { "ctf-albstadt.de", true }, - { "ctf-archive.com", true }, + { "ctf-archive.com", false }, { "ctf.link", true }, { "cthomas.work", true }, - { "cthu.io", true }, { "cthulhuden.com", true }, { "ctir.gov.br", true }, { "ctj.im", true }, + { "ctjk.com", true }, { "ctknight.me", true }, { "ctkwwri.org", true }, + { "ctl.fi", true }, { "ctliu.com", true }, { "ctm.community", true }, { "ctmlightning.co.uk", true }, @@ -31811,14 +37331,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ctpe.info", true }, { "ctpe.net", true }, { "ctr-sante.eu", true }, - { "ctr.id", false }, { "ctrl.blog", true }, { "ctrl.gr", false }, { "ctrlcvz.tk", true }, + { "cts-companies.com", true }, { "ctsl.net", true }, + { "ctspcallao.org.pe", true }, + { "ctsu.org", true }, + { "cttso.gov", true }, + { "ctu.cz", true }, { "ctyrisinkneri.cz", true }, { "cu247secure.ie", true }, { "cua911.gov", true }, + { "cuanturu.com", true }, { "cuarentagrados.tk", true }, { "cuaresmaysemanasanta.tk", true }, { "cuartetocontinental.tk", true }, @@ -31826,12 +37351,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cuasotinhyeu.vn", true }, { "cuatroporcuatro.tk", true }, { "cuatroymedia.com", true }, - { "cubaal.com", true }, { "cuban.wiki", true }, + { "cubanas-shoes.com", true }, { "cubanchino.tk", true }, + { "cubanda.de", true }, { "cubatel.com", true }, + { "cubatravel.cu", true }, { "cubazineers.ga", true }, { "cubazineest.ga", true }, + { "cube-cloud.com", true }, { "cube-filing.com", true }, { "cube.builders", true }, { "cube.guide", true }, @@ -31841,11 +37369,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cubebuilders.net", true }, { "cubecraft.net", true }, { "cubecraftcdn.com", true }, - { "cubecraftstore.com", true }, { "cubecraftstore.net", true }, { "cubefreak.tk", true }, { "cubegame.tk", true }, { "cubeinfo.tk", true }, + { "cubeinstallations.co.uk", true }, { "cubekrowd.net", true }, { "cubela.tech", true }, { "cubepasses.com", true }, @@ -31853,17 +37381,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cubestudio.website", true }, { "cubetech.co.jp", true }, { "cubex.ltd", true }, + { "cubflaica.it", true }, { "cubia.com", true }, { "cubia3.com", true }, { "cubia4.com", true }, { "cubic-lynx.com", true }, - { "cubiclands.com", true }, + { "cubicempire.com", true }, { "cubicle.tk", true }, + { "cubicle7games.com", true }, { "cubiest.com", true }, { "cubigames.tk", true }, { "cubikus.fr", true }, { "cubile.xyz", true }, + { "cubilo.fi", true }, { "cubing.net", true }, + { "cubistmediagroup.com", true }, { "cublick.com", true }, { "cubocell.com", true }, { "cubotabacaria.com.br", true }, @@ -31872,15 +37404,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cubsbestteaminbaseball.com", true }, { "cubsradio.tk", true }, { "cubyhome.com", true }, + { "cubyn.com", true }, + { "cuc-cayman.com", true }, { "cucabot.tk", true }, { "cucaracha.tk", true }, { "cuchichi.es", true }, - { "cuckold-secrets.tk", true }, - { "cuckoldjungle.com", true }, { "cuckoo.ee", true }, + { "cuckoohallacademy.org.uk", true }, + { "cucumber.io", true }, { "cuddlecat.io", true }, + { "cuddlecomfort.com", true }, { "cuddlingyaks.com", true }, - { "cuddlybeardaycare.com.au", true }, + { "cuddlybeardaycare.org", true }, { "cudesa.gq", true }, { "cudesyb.tk", true }, { "cudoo.de", true }, @@ -31890,12 +37425,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cuentadias.cl", true }, { "cuentamecomopaso.es", true }, { "cuentas-gratis.ga", true }, - { "cuentasmutualamr.org.ar", true }, { "cues.org.uk", true }, + { "cuesplus.com", true }, { "cuestiondetiempo.tk", true }, { "cuetoems.com", true }, { "cuevafelina.tk", true }, + { "cufe.com.au", true }, + { "cufoon.com", true }, { "cugetliber.ro", true }, + { "cuhadardokuma.com", true }, { "cuhawaii.com", true }, { "cuidade.fr", true }, { "cuio.net", true }, @@ -31903,13 +37441,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cuisine-ultime.fr", true }, { "cuitrau.tk", true }, { "cujanovic.com", true }, + { "cujo.com", true }, { "cukrinelape.com", true }, { "cukurbag.ml", true }, { "culan.dk", false }, + { "culetto.at", true }, { "culha.net", true }, { "culinary.ga", true }, - { "culinoa.be", true }, { "culpoilu.tk", true }, + { "cult.games", true }, + { "cultivariable.com", true }, { "cultofperf.org.uk", true }, { "cultrix.co.uk", true }, { "cultrixdigital.co.uk", true }, @@ -31917,13 +37458,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "culturaarabe.tk", true }, { "culturabrasilia.tk", true }, { "culturaeuropea.tk", true }, + { "culturagenial.com", true }, { "culturahack.tk", true }, + { "culturaldistrict.org", true }, { "culturaldiversity.tk", true }, { "culturalmaninhos.tk", true }, { "culturalparadiso.tk", true }, { "culturalsabotage.cf", true }, { "culturama.tk", true }, { "cultureetsoft.tk", true }, + { "cultureforward.online", true }, { "culturehatti.com", true }, { "culturelivresque.fr", true }, { "culturerain.com", true }, @@ -31934,19 +37478,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "culturestraveled.com", true }, { "culturevision.com", true }, { "culturism.ml", true }, - { "culturoquiz.com", true }, + { "culturs.org", true }, { "cultuur.gent", true }, { "cultuurinonderwijs.be", true }, { "cumberlandcoil.gov", true }, + { "cumberlandcountyhealthnj.gov", true }, + { "cumberlandcountyme.gov", true }, { "cumberlandcountync.gov", true }, { "cumberlandcountynj.gov", true }, { "cumberlandcountypa.gov", true }, { "cumberlandrivertales.com", true }, + { "cumberlink.com", true }, { "cumbiaperuana.tk", true }, { "cumbreamazonica.tk", true }, + { "cumfiesta.com", true }, { "cuminas.com", true }, - { "cuminas.jp", true }, { "cumingcountyne.gov", true }, + { "cumlaudegent.be", true }, { "cumman.life", true }, { "cumnock.name", true }, { "cumnock.org", true }, @@ -31956,14 +37504,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cumshots-video.ru", true }, { "cumtd.com", true }, { "cumulogranite.fr", true }, + { "cumulonembo.com", true }, { "cumulus.photo", true }, { "cungnhauhoctap.tk", true }, { "cunha.be", true }, { "cunova.cf", true }, { "cunova.tk", true }, + { "cuo.net", true }, { "cuoc.org.uk", true }, { "cuongthach.com", true }, { "cuongthach.net", true }, + { "cuongtran.xyz", true }, { "cuoredesigns.tk", true }, { "cuorineri.tk", true }, { "cupabonita.com", true }, @@ -31975,6 +37526,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cupcao.gov", true }, { "cupclub.com", false }, { "cupdunarea.ro", true }, + { "cupertino.gov", true }, { "cupie.tk", true }, { "cupoane-reducere.net", true }, { "cupom.net", true }, @@ -31996,22 +37548,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "curaprox.co.th", true }, { "curareldolordeespalda.com", true }, { "curatednews.xyz", true }, + { "curatednow.ca", true }, + { "curationsblog.com", true }, + { "curbsoftware.com", true }, { "curbza.com", true }, + { "curcumyna.com.br", true }, + { "cure.finance", true }, { "cureatr.com", true }, { "cureine.com", true }, - { "curia.fi", true }, + { "cureyou.com.tw", true }, { "curieux.digital", false }, { "curinline.com", true }, { "curio-shiki.com", true }, { "curio.lk", true }, + { "curio.nl", true }, + { "curiocity.com", true }, { "curiocity.tk", true }, { "curiosidadeanimal.cf", true }, { "curiosity-driven.org", true }, { "curiositytrained.com", true }, { "curiosoando.com", true }, + { "curiouscast.ca", true }, + { "curiousduck.com", true }, + { "curiouspeddler.com", true }, { "curiousspoonfoods.com", true }, { "curioustea.com", true }, { "curiozitate.com", true }, + { "curis-health.com", true }, { "curl.tw", false }, { "curlie.tk", true }, { "curlify.com", true }, @@ -32023,7 +37586,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "curlyhumanhairextensions.tk", true }, { "currency-one.com", true }, { "currency-strength.com", true }, + { "currency-toolkit.com", true }, { "currencyfreaks.com", true }, + { "currencyreader.gov", true }, + { "currencyreaderapplication.gov", true }, { "current-ip.com", true }, { "current.com", false }, { "currentbitcoin.news", true }, @@ -32033,13 +37599,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "currenthaus.com", true }, { "currentlystreaming.com", true }, { "currentlyusa.com", true }, + { "currentos.foundation", true }, + { "currycountyor.gov", true }, { "currynissanmaparts.com", true }, + { "currytech.cn", true }, + { "cursedpine.studio", true }, { "curseus.com", true }, { "cursillosdezaragoza.tk", true }, { "cursoalia.com", false }, + { "cursoandroid.com", true }, { "cursocatolico.com", true }, + { "cursocomunicacionnoverbal.com", true }, { "cursodehipnosis.tk", true }, { "cursodememorizacao.ml", true }, + { "cursofuturosresidentes.com", true }, { "cursointeractivo.com", true }, { "cursomente.online", true }, { "cursorcam.tk", true }, @@ -32053,12 +37626,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cursosprogramacion.online", true }, { "cursossena.co", true }, { "cursosypostgrados.com", true }, - { "cursuri-de-actorie.ro", true }, { "curtacircuitos.com.br", false }, + { "curtis-ne.gov", true }, { "curtis-smith.me.uk", true }, { "curtis-smith.uk", true }, + { "curtisint.com", false }, { "curtisleejones.tk", true }, - { "curtislinville.net", true }, { "curtispope.com", true }, { "curtissmith.me.uk", true }, { "curtissmith.uk", true }, @@ -32080,19 +37653,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "custercountymt.gov", true }, { "custercountymttransit.gov", true }, { "custercountyne.gov", true }, + { "custify.com", true }, { "custodiamobili.roma.it", true }, { "custodian.nl", true }, { "custodyxchange.com", true }, { "custom-wear.ua", true }, { "customanarchy.tk", true }, - { "custombobbleheads.com", true }, { "custombps.com", true }, { "custombuttonco.com", true }, - { "customcodeit.com.au", false }, + { "customcircuitsltd.co.uk", true }, { "customcompleteautomotive.com", true }, { "customcraft.tk", true }, { "customdissertation.com", true }, + { "customeessay.com", true }, + { "customer2you.com", true }, { "customerfocus.co.za", true }, + { "customerservicemanager.com", true }, { "customerservicepal.com", true }, { "customerware.com.au", false }, { "customessaystation.gq", true }, @@ -32101,9 +37677,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "customgear.com.au", true }, { "customhealthplans.com", true }, { "customhomerealty.com", true }, + { "customisable.net", true }, { "customizedcelebrations.co.uk", true }, { "customizeyourshower.com", false }, - { "custompac.co.uk", true }, + { "customleads.net", true }, + { "customlogoit.com", true }, + { "custommadecasino.com", true }, + { "custommadegolfevents.com", true }, + { "custompainted.ca", true }, { "custompapers.com", true }, { "custompoolsbydesign.com", true }, { "customradio.tk", true }, @@ -32122,9 +37703,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "custosd.org", true }, { "cut-piehler.de", true }, { "cutads.ml", true }, + { "cutaneon.com", true }, { "cutaquigusa.com", true }, { "cute-urls.ml", true }, { "cute2u.com", true }, + { "cuteboibutt.ml", true }, { "cutehost.ga", true }, { "cutemodel.ml", true }, { "cutephil.com", true }, @@ -32138,12 +37721,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cutner.co", true }, { "cutout.ml", true }, { "cutpasteprofit.tk", true }, - { "cutt.pro", false }, { "cutter.li", true }, - { "cuttingedgeoptronics.com", true }, + { "cuttingedgedoorandtrim.com", true }, + { "cuttingedgeoptronics.com", false }, { "cuttingedgeperiodontist.com", true }, { "cuttingedges.tk", true }, + { "cuubconsultancy.com", true }, { "cuvantul.tk", true }, + { "cuve-ibc.be", true }, { "cuvva.co", true }, { "cuvva.co.uk", true }, { "cuvva.com", true }, @@ -32156,40 +37741,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cuvva.org", true }, { "cuvva.uk", true }, { "cuvva.us", true }, + { "cuwcd.gov", true }, { "cuxpool.club", true }, { "cuxpool.net", true }, { "cuyahogacommunitycollege.tk", true }, { "cuyahogacountyvotesoh.gov", true }, { "cvalda.tk", true }, + { "cvazquez.es", true }, { "cvbp.nl", true }, { "cvc.digital", true }, { "cvdeexpo.com", true }, - { "cvdesigner.lk", true }, + { "cvdesignr.com", true }, { "cve-le-carrousel.ch", false }, - { "cve.sh", true }, { "cvec.org", true }, + { "cvedetails.com", true }, { "cvetpodokonnik.tk", true }, { "cvglobal.cf", true }, + { "cvgt.com.au", true }, { "cvhunter.hu", true }, { "cviip.com", true }, { "cvj.me", true }, { "cvjd.me", false }, - { "cvl.ch", false }, { "cvlibrary.co.uk", true }, { "cvmatch.me", true }, { "cvmu.jp", true }, { "cvninja.pl", true }, + { "cvpartner.com", true }, { "cvps.top", false }, - { "cvr.dk", true }, { "cvrn.cc", true }, + { "cvsec.org", true }, { "cvsmash.io", true }, { "cvtemplatemaster.com", true }, { "cvtenerife.tk", true }, { "cvv.cn", true }, + { "cvwrfut.gov", true }, { "cw-bw.de", false }, { "cw.center", true }, + { "cw3.fr", true }, { "cwaclub.tk", true }, + { "cwage.com", false }, { "cwallpapersheb.tk", true }, + { "cwarzee.net", true }, { "cwaurora.top", true }, { "cwbc-bearing.com", true }, { "cwbrtrust.ca", true }, @@ -32198,9 +37790,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cwchristerw.fi", true }, { "cweagans.net", true }, { "cwebdesign.tk", true }, - { "cwgadvisors.com", true }, { "cwgallery.de", false }, { "cwgaming.co.uk", true }, + { "cwglass.pl", true }, { "cwgpllc.com", true }, { "cwi.fi", true }, { "cwinfo.eu", true }, @@ -32217,18 +37809,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cwrau.info", true }, { "cwrau.io", true }, { "cwrau.rocks", true }, + { "cwtrade.co.uk", false }, + { "cwtsamplecenter.com", true }, { "cwwise.com", true }, - { "cx.cx", true }, + { "cx.cx", false }, { "cx100.io", true }, { "cxbmystore.com", true }, { "cxcarepro.com", true }, - { "cxm.co.uk", true }, + { "cxense.com", true }, + { "cxfund.com.cn", true }, + { "cxologic.com", true }, { "cxologic.io", true }, + { "cxologic.net", true }, + { "cxologic.org", true }, { "cxorisks.com", true }, { "cxotrustsummit.com", true }, { "cy.ax", true }, { "cy.technology", true }, - { "cy01.ch", true }, { "cyanghost.com", true }, { "cyanhexagon.com", true }, { "cybbh.space", true }, @@ -32244,44 +37841,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyber-party.tk", true }, { "cyber-resear.ch", true }, { "cyber-shield.de", false }, - { "cyber-sikkerhed.dk", true }, { "cyber-swiat.pl", true }, - { "cyber-tarot.com", true }, { "cyber-travel.com", true }, { "cyber-world.tk", true }, { "cyber-yaroslavl.tk", true }, - { "cyber.gc.ca", true }, + { "cyber.cl", true }, { "cyber.gov", true }, + { "cyber.info", true }, { "cyber.je", true }, + { "cyber72.com", true }, { "cyberab.org", true }, + { "cyberalternance.com", true }, { "cyberark.com", true }, { "cyberarmy.cc", true }, - { "cyberatlantis.com", true }, + { "cyberassurance.run", true }, { "cyberattackincidentresponse.com", true }, { "cyberautomobile.tk", true }, + { "cyberbangla.com", true }, { "cyberbook.ml", true }, { "cyberbotx.com", true }, { "cyberboy.tk", true }, { "cyberburek.tk", true }, { "cybercareers.gov", true }, { "cybercat-tver.tk", true }, + { "cybercic.com", true }, { "cyberclaw.tk", true }, - { "cybercloud.cc", true }, + { "cybercloud.cc", false }, + { "cybercore.com.tr", true }, { "cybercrew.cc", true }, { "cybercrew.rocks", true }, { "cybercrime-forschung.de", true }, + { "cybercrime.gov", true }, { "cybercustodian.com", true }, { "cyberdean.fr", true }, { "cyberdevelopment.es", true }, { "cyberdiscoverycommunity.uk", true }, + { "cyberdns.com", true }, { "cyberdog.ch", true }, { "cyberdragon.tk", true }, { "cyberduck.io", true }, { "cyberdyne.ie", true }, { "cyberdyne.llc", true }, - { "cyberex.es", true }, { "cyberexplained.info", true }, { "cyberfebrio.tk", true }, + { "cyberfla.me", true }, { "cyberforensics.com", true }, { "cyberforge.ml", true }, { "cyberfruit.tk", true }, @@ -32289,6 +37892,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybergordon.com", true }, { "cybergroup.cf", true }, { "cyberguerrilla.org", true }, + { "cyberhaus.ch", true }, { "cyberhazard.eu", false }, { "cyberhelden.nl", true }, { "cyberhipsters.nl", true }, @@ -32299,9 +37903,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyberjake.xyz", true }, { "cyberknife-sigulda.com", true }, { "cyberkov.com", false }, - { "cyberlin.org", true }, + { "cyberlab.team", true }, + { "cyberlinchpin.com", true }, { "cyberlocos.tk", true }, { "cyberlounge.ga", true }, + { "cyberlux.cz", true }, { "cybermall.ga", true }, { "cybermaniac.tk", true }, { "cybermatrixone.tk", true }, @@ -32310,7 +37916,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybermonday.org.il", true }, { "cybermotives.com", true }, { "cybern.tk", true }, - { "cybernetivdigital.com", true }, + { "cybernews.com", true }, { "cybernode.host", true }, { "cyberogism.com", true }, { "cyberon.it", true }, @@ -32322,18 +37928,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyberpedia.wiki", true }, { "cyberphoenix.tk", true }, { "cyberplus.net.id", true }, - { "cyberpro.co.uk", true }, + { "cyberpoint.az", true }, + { "cyberpro.club", true }, { "cyberproducciones.tk", true }, { "cyberprogramming.tk", true }, { "cyberpubonline.com", true }, + { "cyberpuerta.mx", true }, { "cyberpunk.guru", true }, { "cyberquest.cf", true }, { "cyberregister.nl", true }, { "cyberregister.org", true }, { "cyberrepair.de", true }, + { "cyberresilience.io", true }, { "cyberry.eu", true }, { "cybersafesolutions.com", false }, { "cybersafetn.gov", true }, + { "cybersails.co.za", true }, { "cybersamurai.tk", true }, { "cyberscan.io", true }, { "cyberschmiede.at", true }, @@ -32346,6 +37956,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybersecurity.nz", true }, { "cybersecurity.run", true }, { "cybersecuritychallenge.be", false }, + { "cybersecuritydefence.co.uk", true }, + { "cybersecuritydegreeguide.com", true }, + { "cybersecurityeducationguides.org", true }, + { "cybersecurityforum.com.br", true }, + { "cybersecurityguide.in", true }, { "cybersecurityincidentresponse.com", true }, { "cyberseguranca.com.br", true }, { "cybershark.space", true }, @@ -32356,7 +37971,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybersmartdefence.com", true }, { "cybersniff.net", true }, { "cybersolution.tk", true }, - { "cybersoulz.com", true }, { "cybersound.tk", true }, { "cyberspace.community", true }, { "cyberspect.com", true }, @@ -32368,13 +37982,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cyberthreatintelligencenetwork.com", true }, { "cybertinus.nl", true }, { "cybertn.gov", true }, - { "cybertoolbank.cc", true }, { "cybertorsk.org", true }, { "cybertrinity.co.uk", true }, { "cybertron.cf", true }, { "cybertronics.tk", true }, { "cybertu.be", true }, { "cyberwandelendetakjes.tk", true }, + { "cyberwarhq.com", true }, + { "cyberwars.dk", true }, { "cyberweightloss.com", true }, { "cyberwire.nl", true }, { "cyberworldexpert.tk", true }, @@ -32388,6 +38003,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cybozu.com", true }, { "cybrix.io", true }, { "cybrossec.com", true }, + { "cyburbia.org", true }, + { "cycc.cloud", true }, { "cyclamen.tk", true }, { "cyclecoach.co.za", true }, { "cycledownunder.com", true }, @@ -32397,31 +38014,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cycleterrace.jp", true }, { "cycling74.com", true }, { "cyclingbiker.com", true }, - { "cyclinggoodso.com", true }, { "cyclingmonthlyest.ga", true }, - { "cyclingverse.com", true }, { "cyclisjumper.gallery", true }, { "cyclize.cf", true }, { "cyclonedesign.ca", true }, + { "cyclonemetals.com", true }, { "cyclop-editorial.fr", true }, + { "cyclos.org", true }, { "cycomm.ro", true }, + { "cyconet.org", true }, { "cydetec.com", true }, { "cydogbrowser.com", true }, { "cyelint.com", true }, + { "cyesec.com", true }, { "cyfly.org", true }, { "cygnaltech.com", true }, { "cygnan.com", true }, { "cygnatus.com", true }, + { "cygnethealth.co.uk", true }, { "cygnetmidwest.com", true }, { "cygnius.net", true }, + { "cyjm.com", true }, { "cykelbanor.se", true }, { "cyklistika24.cz", true }, { "cylex-italia.it", true }, - { "cylindehea.com", true }, - { "cylindricity.com", true }, + { "cylex.noip.me", true }, { "cyllos.me", true }, - { "cymricweb.com", false }, { "cynchealth.org", true }, + { "cynetco.com", true }, { "cynicaloptimist.me", true }, { "cynology.ga", true }, { "cynop.me", true }, @@ -32429,13 +38049,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cynthiacherry.com", true }, { "cyon.ch", true }, { "cype.dedyn.io", true }, - { "cyph.audio", true }, { "cyph.com", true }, { "cyph.healthcare", true }, - { "cyph.im", true }, - { "cyph.io", true }, - { "cyph.me", true }, - { "cyph.video", true }, { "cyph.ws", true }, { "cyphar.com", true }, { "cypherbot.org", true }, @@ -32444,32 +38059,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "cypressca.gov", true }, { "cypressinheritancesaga.com", true }, { "cypresslegacy.com", true }, + { "cypressxm.com", true }, { "cyprus-company-for.gr", true }, { "cyprus-company-service.com", true }, { "cyptechost.co.ke", true }, { "cyqual.com", true }, + { "cyraco.com", true }, { "cyrano-books.com", true }, - { "cyraus.com", false }, - { "cyrex.tech", true }, + { "cyrenianhouse.com", true }, + { "cyrex.tech", false }, { "cyrians.com", true }, - { "cyric.eu", true }, { "cyril-leytsihovich.ml", true }, { "cyriletsophie.fr", true }, { "cyrilmurphy.com", true }, { "cyrilstoll.ch", true }, { "cyrix-systems.tk", true }, + { "cyroco.fr", true }, { "cyrokx.com", true }, + { "cyrozap.com", true }, { "cyrusdaily.tk", true }, - { "cysi.in", true }, + { "cysecure.co", true }, { "cyson.tech", true }, { "cytat.tk", true }, { "cytech.com.tr", true }, { "cytegic-update-packages.com", true }, + { "cythereapornstar.com", true }, { "cythereaxxx.com", true }, { "cytn.xyz", true }, { "cytophil.com", true }, { "cyumus.com", true }, + { "cyvault.io", true }, + { "cyware.com", true }, { "cz.ma", true }, + { "cz.nl", true }, { "czakey.net", true }, { "czarni-czarne.tk", true }, { "czaw.org", true }, @@ -32487,18 +38109,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "czech.is", true }, { "czechcrystals.co.uk", true }, { "czechglaskralen.nl", true }, + { "czechhunter.com", true }, { "czechpoint.cz", true }, { "czechps.cz", true }, { "czechvirus.cz", true }, { "czeh.us", true }, { "czewo-data.de", true }, + { "czihak.at", true }, { "czirnich.org", true }, { "czk.mk", true }, - { "czl.net", true }, + { "czl.net", false }, { "czlx.co", false }, { "cznburak.co.uk", true }, { "czprothz.tk", true }, { "czqu.cc", true }, + { "czqu.net", true }, { "czqu.xyz", true }, { "czteryporyroku.edu.pl", true }, { "czwartybrat.pl", true }, @@ -32508,10 +38133,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d-consultant.ru", true }, { "d-day.tk", true }, { "d-eisenbahn.com", true }, + { "d-influencers.com", true }, { "d-ku.de", true }, { "d-macindustries.com", true }, - { "d-parts.de", true }, - { "d-parts24.de", true }, + { "d-mind.de", true }, { "d-shed.tk", true }, { "d-soft.tk", true }, { "d-solutions.com.au", true }, @@ -32519,6 +38144,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d-tousei.co.jp", true }, { "d-toys.com.ua", true }, { "d-training.de", true }, + { "d-uhlig.de", true }, { "d-va.cf", true }, { "d-vision-create.com", true }, { "d.ac", true }, @@ -32528,7 +38154,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d00d.de", true }, { "d0g.cc", true }, { "d0xq.net", true }, + { "d10ses.com", true }, { "d166.net", true }, + { "d1b2k93bahaw3s.cloudfront.net", true }, { "d1gital.org", true }, { "d1iwhdc6scsqsn.cloudfront.net", true }, { "d1pbyafuxn3mkm.cloudfront.net", true }, @@ -32540,6 +38168,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d21laxujm54z8h.cloudfront.net", true }, { "d24zgh0u05bzjw.cloudfront.net", true }, { "d25sxbgdpzj1st.cloudfront.net", true }, + { "d2evs.net", true }, { "d2i06m35fc7thi.cloudfront.net", true }, { "d2ph.com", true }, { "d2toledo.com", true }, @@ -32547,16 +38176,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d2woj1dt0tk6sn.cloudfront.net", true }, { "d36533.com", true }, { "d36594.com", true }, + { "d39rl9amo4q27v.cloudfront.net", true }, { "d3a.xyz", true }, { "d3d3.tk", true }, { "d3dev.cf", true }, { "d3lab.net", true }, { "d3scene.org", true }, + { "d3x.pw", true }, { "d3xt3r01.tk", true }, - { "d42.no", true }, { "d4done.com", true }, { "d4fx.de", true }, { "d4h.live", true }, + { "d4insight.com", true }, { "d4wson.com", true }, { "d4x.de", true }, { "d500world.tk", true }, @@ -32568,17 +38199,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d6729.com", false }, { "d6957.co", true }, { "d6c5yfulmsbv6.cloudfront.net", true }, - { "d724.com.tr", true }, { "d8.io", true }, - { "d8118.com", true }, - { "d81365.com", true }, { "d8181.com", true }, { "d82365.com", true }, { "d88-livechat.com", false }, { "d88.ag", true }, { "d88.cc", false }, { "d88.cn.com", true }, - { "d88.xyz", true }, { "d88118.com", true }, { "d8812.com", true }, { "d8814.com", true }, @@ -32590,24 +38217,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d8846.com", true }, { "d8847.com", true }, { "d884vip.com", true }, - { "d8853.com", true }, { "d8859.com", true }, { "d885vip.com", true }, { "d886vip.com", true }, { "d8870.net", true }, - { "d8872.net", true }, { "d8874.com", true }, { "d8878.com", true }, { "d887vip.com", true }, { "d88818.com", true }, { "d8886.net", true }, { "d88869.com", true }, - { "d889.app", true }, { "d8891.net", true }, - { "d88a.vip", true }, { "d88agent.com", true }, - { "d88agqj.com", true }, - { "d88d99.com", true }, { "d88siteintro.com", true }, { "d898.app", true }, { "d899365.com", false }, @@ -32616,7 +38237,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "d9397.com", true }, { "d9721.com", false }, { "d9728.co", true }, + { "d9and10sports.com", true }, { "da-schaewel.de", true }, + { "da-tex.com.ua", true }, { "da-tixe.ml", true }, { "da-tixe.tk", true }, { "da42foripad.com", true }, @@ -32626,40 +38249,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "daallexx.eu", true }, { "daanbanaan.tk", true }, { "daanial.tk", true }, + { "daaxit.com", true }, + { "dabai.cf", true }, { "dabai.club", true }, + { "dabai.ga", true }, + { "dabai.ml", true }, { "dabai.photo", true }, { "dabasstacija.lv", true }, { "dabbagam.tk", true }, + { "dabedi.ir", true }, { "dabhand.studio", true }, { "dabi.tk", true }, - { "dabrecords.co.uk", false }, + { "dabrecords.co.uk", true }, { "dabro.tk", true }, { "dabuzz.tk", true }, { "dacada-porn.com", true }, + { "dacangku.com", true }, { "daceurope.co.uk", true }, + { "dacgroup.com", true }, { "dacha-letom.ml", true }, + { "dacha.today", false }, { "dachb0den.net", true }, - { "dachbeschichtung-zentrum.de", true }, { "dachdecker-ranzenberger.de", true }, { "dachdeckerei-hagen.de", true }, { "dachdeckermeister-egon-weiss.de", true }, { "dachdeckermeister-moeller.de", true }, - { "dachengquan.ca", true }, + { "dachet.com", true }, + { "dachlaeufer.com", true }, + { "dachnie-reshenia.ru", true }, + { "dachnyvopros.info", true }, { "dachshundsaspets.com", true }, { "dachshundtalk.com", true }, + { "daciaforum.nl", true }, { "daciamodellen.nl", true }, { "daconsult.uk", true }, - { "dacooninternational.com", true }, { "dacsanchatviet.com", true }, + { "dacsansach.com", true }, { "dad", true }, { "dad256.tk", true }, + { "dada.is", false }, { "dadafterforty.be", true }, { "dadcentral.ca", true }, { "daddarios.tk", true }, { "daddybio.com", true }, { "daddyfinger.me", true }, { "daddyhax.ml", true }, + { "daddylive.link", true }, { "daddylonglegs.tk", true }, + { "daddyschickenshack.com", true }, + { "daddysfranchising.com", true }, { "daddysluder.net", true }, { "dadecityfl.gov", true }, { "dadecountymo911.gov", true }, @@ -32667,7 +38305,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dado.fr", true }, { "dado.me", true }, { "dado.virtual.museum", true }, + { "dadoilustrado.pt", true }, { "dadons-laserdiscs.com", true }, + { "dadoresanguepsiria.pt", true }, { "dadosch.de", false }, { "dadrian.io", true }, { "dadsarmy.tk", true }, @@ -32677,30 +38317,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "daemon.xin", true }, { "daemons.ml", true }, { "daemonslayer.net", true }, + { "daemus.ro", true }, { "daemwool.ch", true }, + { "daer.cloud", true }, { "daevel.com", true }, { "daevel.fr", true }, { "daevel.net", true }, - { "dafassl.com", false }, { "dafater.sa", true }, { "dafe2021.ee", true }, + { "dafengche.com", true }, + { "dafengding.com", true }, + { "daffodilusa.org", true }, { "dafmeyda.com", true }, { "dafnik.me", true }, + { "dafong.com", true }, { "dafont.com", true }, { "dafricapress.com", true }, - { "daftarhajiumroh.com", true }, - { "daftarsitusjudislot.com", true }, + { "daft.ie", true }, + { "daftarpaketc.id", true }, { "dafunda.com", true }, { "dafuq.xyz", true }, { "dafyddcrosby.com", true }, { "dag-berlin.tk", true }, - { "dag-hebergement.fr", true }, { "dag-konsult.com", true }, { "dag-ogni.tk", true }, + { "dagallemaal.be", true }, { "daganghalal.com", true }, { "daganzo.tk", true }, { "dagbestedingwarrie.nl", true }, { "dagensannonser.se", true }, + { "dagestan-guide.ru", true }, { "dagestan.cf", true }, { "dagestanci.tk", true }, { "dagestanec.tk", true }, @@ -32716,17 +38362,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dahaboffers.tk", true }, { "dahl-pind.dk", true }, { "dahlberg.cologne", true }, + { "dahlem.info", true }, { "dahobo.tk", true }, { "dai.top", false }, - { "daibetter.com", true }, { "daidogei.com", true }, { "daidothi.vn", true }, { "daidr.me", true }, { "daie-inc.com", true }, + { "daijin.com", true }, { "daikonsystems.com", true }, { "daikoz.com", true }, + { "daili.eu", true }, { "daily-puzzle.tk", true }, + { "daily-solution.pro", true }, { "daily-sudoku.tk", true }, + { "daily.it", true }, { "dailyalerts.ga", true }, { "dailybihar.com", true }, { "dailybits.be", true }, @@ -32734,85 +38384,98 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dailyblogged.com", true }, { "dailybusiness.tk", true }, { "dailycricnews.tk", true }, + { "dailyddt.com", true }, { "dailydealika.com", true }, - { "dailydosehealth.com", true }, + { "dailydodge.com", true }, { "dailydote.com", true }, - { "dailyemailinboxing.com", true }, + { "dailydoze.com", true }, + { "dailyenergyinsider.com", true }, { "dailyenglishchallenge.com", true }, { "dailyfantasysports101.com", true }, - { "dailyfootballpredictions.com", true }, + { "dailyfish.ru", true }, + { "dailyfly.com", true }, { "dailyhealthylife.ml", true }, { "dailyhealthylife.tk", true }, + { "dailyjoy.com", true }, + { "dailyjunkies.com", true }, + { "dailyknicks.com", true }, { "dailykos.com", true }, { "dailykosbeta.com", true }, { "dailylime.kr", true }, + { "dailylviv.com", true }, + { "dailymailindia.com", true }, + { "dailymedicalinfo.com", true }, { "dailymotion.com", true }, { "dailynewsclubs.ga", true }, { "dailynewsfrommedjugorje.ml", true }, + { "dailyotovinfast.com.vn", true }, { "dailyphototips.com", false }, { "dailypop.ru", true }, { "dailypost.ng", true }, + { "dailyprogress.com", true }, { "dailyreels.ga", true }, { "dailyrenewblog.com", true }, - { "dailyreporters.com", true }, - { "dailyrover.com", true }, { "dailyroverr.com", true }, { "dailysomething.site", true }, { "dailysuperheroes.com", true }, { "dailytrip.de", true }, { "dailyusbusiness.tk", true }, { "dailywarteg.com", true }, + { "dailywealth.com", true }, { "dailywork.ga", true }, { "dailyxenang.com", true }, { "daimonikos.com", true }, + { "dair.community", true }, { "dairikab.go.id", true }, + { "dairylandexpress.com", true }, { "daisidaniels.co.uk", true }, { "daisuki.pw", true }, { "daisy-peanut.com", true }, { "daisydevbi.net", true }, + { "daisydollyandme-dev.com", true }, + { "daisydollyandme.com", true }, { "daisyindia.org", true }, { "daisypeanut.com", true }, { "daisypeel.com", true }, { "daisyscars.cf", true }, { "daiwa-union.jp", true }, + { "daiyafoods.com", true }, { "daja.ml", true }, { "dajaks.tk", true }, - { "dajaschoonheidsinstituut.nl", true }, { "dajaskincare.nl", true }, { "daji.ba", true }, { "dajiale.org", true }, { "dajjal.org", true }, { "dak.org", true }, + { "dakartmarket.com", true }, + { "dakcess.net", true }, { "daken.hu", true }, { "daki-host.tk", true }, { "dakin.nyc", true }, { "dakindesign.com", true }, - { "dakinnyc.com", true }, { "daknam.tk", true }, { "daknob.net", true }, { "dakota-fanning.tk", true }, { "dakota-spain.tk", true }, { "dakota911mn.gov", true }, { "dakotacil.org", true }, + { "dakotas.com", true }, { "dakotavalleyrecyclingmn.gov", true }, - { "daktarisys.com", true }, { "dal-loop.xyz", true }, { "dal.net.sa", true }, { "dalagore.com", true }, { "dalaran.city", true }, - { "dalat.blog", true }, - { "dalat.store", false }, { "dalb.in", true }, { "dalbar.com", true }, { "dalbarsqm.com", true }, { "dalbitresb.com", true }, - { "dale-west.com", true }, { "daleanddollops.com", true }, { "dalecountyal.gov", true }, { "dalek.co.nz", true }, { "dalevuelta.tk", true }, { "daleworley.com", true }, { "dalfsennet.nl", true }, + { "dali-boli.me", true }, { "dalianbbq.com", true }, { "dalil.tk", true }, { "dalilu.it", true }, @@ -32823,14 +38486,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dallapartedeltorto.tk", true }, { "dallas.gov", true }, { "dallas.lu", true }, - { "dallasarealocksmith.com", true }, { "dallascaraccidentlawyers.net", true }, { "dallascowboys.tk", true }, - { "dallasdesignco.com", true }, - { "dallasescorts.net", true }, { "dallasfire.gov", true }, { "dallaslu.com", true }, - { "dallasmenshealth.com", true }, + { "dallasobgynpa.com", true }, + { "dallasor.biz", true }, { "dallaspolice.gov", true }, { "dallastexas.ml", true }, { "dallaswater.gov", true }, @@ -32838,82 +38499,95 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dallatana.tk", true }, { "dallemon.dk", true }, { "dalliard.ch", true }, - { "dalliastore.com.br", true }, { "dallinbryce.com", true }, + { "dallincooper.com", true }, { "dallmeier.net", false }, + { "dallydushigrill.com", false }, { "dalmatians.tk", true }, + { "dalsin.ir", true }, { "daltoncraven.com", true }, { "daltonohio.gov", true }, { "daltons.tk", true }, + { "dalux.com", true }, + { "dalycity.gov", true }, { "damadam.pk", true }, + { "damades.com", true }, { "damag.net", true }, + { "damag.org", true }, { "damaged.org", true }, - { "damai.co.id", true }, + { "damanlu.com", true }, + { "damanlv.com", true }, { "damarsarkilar.tk", true }, { "damasgonzalezabogados.com", true }, + { "dambachpeacebuilderfellowships.org", true }, { "dambo.tk", true }, { "dame.cf", true }, - { "damebe.com.br", true }, { "damedrogy.cz", true }, { "dameeq.cf", true }, { "dameisports.com", true }, { "dameshoes.it", true }, - { "damesly.com", true }, - { "dametis.com", true }, { "damgoodmedia.com", true }, { "damianmalrechauffe.tk", true }, { "damianus.hr", true }, { "damibaby.com.br", true }, - { "damicoline.com", true }, { "damicris.ro", true }, + { "damienchicotphotographe.fr", true }, { "damienduhamel.tk", true }, { "damiengobron.com", true }, { "damienoreilly.org", true }, { "damifph.com", true }, - { "daminiphysio.ca", true }, { "damirsystems.com", true }, { "damjanovic.work", true }, { "dammekens.be", true }, { "dammu.tk", true }, { "damnation.tk", true }, - { "damncomputer.com.au", true }, { "damnednation.tk", true }, { "damngoodpepper.com", false }, { "damnkid.ml", true }, + { "damnmodz.com", true }, { "damonline.dk", true }, { "dampedia.com", true }, { "dampfbahn-leverkusen.com", true }, { "dampfbahn-leverkusen.de", true }, { "dampferchef.ch", true }, { "dampoo.com", true }, + { "damsafety.co.nz", true }, { "damscheid.de", true }, { "damuhan.tk", true }, { "damvdolg.gq", true }, { "dan-bureau.com", true }, { "dan-informacijske-varnosti.si", true }, { "dan-maskiner.tk", true }, + { "dan-news.info", true }, + { "dan-saba.com", true }, { "dan.me.uk", true }, { "dan124.com", true }, { "dana-hilliot.tk", true }, + { "danaandnathan.com", true }, { "danadameson.tk", true }, { "danads.com", true }, - { "danaglennsmith.com", true }, { "danalina.by", true }, + { "danalpay.com", true }, { "danalytics.com.pe", true }, { "danamica.dk", true }, { "danandrum.com", true }, { "danangcitytours.com", true }, { "danarozmarin.com", true }, { "danashamsters.tk", true }, + { "danasweed.com", true }, { "danbailey.com", true }, { "danbaldwinart.com", true }, + { "danbao.com", true }, { "danbarrett.com.au", false }, { "danbergen.com", true }, + { "danbolig.dk", true }, + { "danburyfishfarms.com", true }, { "danca.com", true }, { "dance-colleges.com", true }, { "dance-school.tk", true }, { "dancechart.tk", true }, { "dancefm.tk", true }, + { "dancehome.com", true }, { "dancehubsa.com.au", true }, { "danceonline.fi", true }, { "danceordienet.tk", true }, @@ -32928,16 +38602,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dandan101.com", true }, { "danddy.eu", true }, { "dandelikaliadventure.com", true }, + { "dandelion-seeds.com", true }, { "dandelionjunkqueens.tk", true }, { "dandenongroadapartments.com.au", true }, { "danderco.in", true }, { "dandia.ro", true }, { "dandie.tk", true }, - { "danduran.ca", true }, + { "dandsplumbers.com", true }, + { "danduran.me", true }, { "dandymodz.tk", true }, { "dandymrsb.com", true }, + { "danecounty.gov", true }, + { "danejones.com", true }, { "danelska.pl", true }, { "danelski.pl", true }, + { "danesara.com", true }, { "daneshtools.tk", true }, { "danfromit.co.uk", true }, { "danfromit.com", true }, @@ -32945,13 +38624,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dangeredwolf.com", true }, { "dangerscience.com", true }, { "dangmai.tk", true }, - { "dangr.zone", true }, - { "dangranger.co.uk", true }, + { "dangr.zone", false }, { "danhalliday.com", true }, - { "danhoej.dk", false }, - { "danholloway.online", true }, { "danhotels.co.il", true }, { "danhotels.com", true }, + { "dani-ward.com", true }, { "dania.gq", true }, { "dania.ml", true }, { "daniel-ayala.tk", true }, @@ -32962,10 +38639,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "daniel-leblanc.tk", true }, { "daniel-milnes.co.uk", true }, { "daniel-milnes.uk", true }, + { "daniel-monaghan.co.uk", true }, { "daniel-ruf.de", true }, { "daniel-san.de", true }, { "daniel-stahl.net", true }, { "daniel-topalov.ga", true }, + { "daniel.priv.no", true }, { "daniel.sb", true }, { "danielacocco.it", true }, { "danielacorahansson.com", true }, @@ -32974,8 +38653,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danielaferpe.tk", true }, { "danielalvarez.net", true }, { "danielbankhead.com", true }, + { "danielbarros.com.br", true }, { "danielbeilharz.com", true }, { "danielbeilharz.de", true }, + { "danielbeltejar.es", true }, + { "danielcardoso.net", true }, + { "danielcolquitt.com", true }, { "danieldavies.co.uk", true }, { "danielderidderfansite.tk", true }, { "danieldevine.tk", true }, @@ -32985,7 +38668,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danieleluttazzi.tk", true }, { "danieleoneta.it", false }, { "danielepestilli.com", false }, - { "danielesalatti.com", true }, { "danielg0.co.uk", true }, { "danielg0.com", true }, { "danielgil.pt", true }, @@ -32994,11 +38676,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danielgray.me", true }, { "danielgraziano.ca", true }, { "danielguttfreundphd.net", true }, + { "danielh.cc", true }, + { "danielh.codes", true }, { "danielhammond.tk", true }, { "danielheal.net", false }, { "danielhinterlechner.eu", true }, { "danielhurley.com", true }, { "danielhurley.eu", true }, + { "danielhurley.ie", true }, { "danielhurley.info", true }, { "danielhurley.org", true }, { "danieliancu.com", true }, @@ -33007,32 +38692,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danieljamesscott.org", true }, { "danieljstevens.com", true }, { "danielkanchev.com", true }, - { "danielkeppler.com", true }, { "danielkoster.nl", true }, { "daniellecavazos.com", true }, { "danielleskosky.com", true }, { "daniellespringer.tk", true }, + { "daniellesteel.com", true }, { "danielluisrodriguezs.com", true }, { "danielmartin.de", true }, { "danielmicay.ca", true }, { "danielmicay.com", true }, - { "danielmiessler.com", true }, { "danielmoch.com", true }, { "danielmorales917.com", true }, { "danielmorell.com", true }, - { "danielmostertman.com", true }, - { "danielmostertman.nl", true }, + { "danielnaaman.com", true }, { "danielnaaman.net", true }, { "danielnaaman.org", true }, + { "danielnet.co", true }, { "danielparker.com.au", true }, { "danielpeukert.cz", true }, { "danielportfolio.es", true }, { "danielran.com", true }, + { "danielroelsontwerp.nl", true }, { "danielrozenberg.com", true }, { "danielruiz.tk", true }, { "danielsblog.org", true }, { "danielshaw.co.nz", true }, - { "danielsixto.com", true }, + { "danielshealth.com.au", true }, { "danielstach.cz", true }, { "danielstiner.me", true }, { "danielt.co.uk", false }, @@ -33049,22 +38734,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danilapisarev.com", true }, { "danilov-abrosimov.org.ua", true }, { "danish.cf", true }, + { "danish.events", true }, + { "danishbytes.club", true }, { "danishiqbal.tk", true }, - { "danismaden.com", true }, { "danispage.tk", true }, { "danituuu7.tk", true }, { "daniweb.com", true }, { "daniya.tk", true }, { "danjesensky.com", true }, { "dank.ninja", true }, + { "dankburritofranchise.com", true }, + { "danke.moe", true }, { "dankeroni.de", true }, { "dankevich.ru", true }, { "dankie.com.br", true }, { "dankim.de", false }, { "dankojunasevic.tk", true }, + { "dankrpg.xyz", true }, { "dankstocks.com", true }, { "danla.nl", true }, { "danlockton.tk", true }, + { "danloona.nl", true }, { "danmaby.com", true }, { "danmarksbedstefredagsbar.dk", true }, { "danmassarano.com", true }, @@ -33076,9 +38766,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dannicholas.net", true }, { "danniellealbrechtdesigns.com", true }, { "danny-rohde.de", true }, - { "danny-tittel.de", true }, { "danny.fm", true }, - { "dannycairns.com", true }, + { "dannycairns.com", false }, { "dannycavanagh.tk", true }, { "dannydiamondsconcrete.com", true }, { "dannygaidateraelgar.com", true }, @@ -33088,13 +38777,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dannyoficial.tk", true }, { "dannyroh.de", true }, { "dannyrohde.de", true }, - { "dannys.space", true }, { "dannyscloud.tk", true }, { "dannystevens.co.uk", true }, { "dannytemming.tk", true }, { "dannyvanwamelen.tk", true }, { "dannywall.com.au", true }, { "danoji.cf", true }, + { "danone.es", true }, + { "danonenorthamerica.com", true }, { "danonsecurity.com", true }, { "danotage.tv", true }, { "danovamix.com.br", true }, @@ -33103,15 +38793,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danramer.tk", true }, { "dansa.com.co", true }, { "dansage.co", false }, + { "dansasphaltmaintenance.com", true }, { "dansaunders.me", true }, - { "dansdiscounttools.com", true }, { "dansedesalonsaintave.fr", true }, { "danselibre.net", true }, { "danselibre.org", true }, { "dansemacabre.tk", true }, { "danseressen.nl", true }, - { "danskgummi.com", true }, - { "danskgummi.dk", true }, + { "dansk8bit.dk", true }, + { "danske.events", true }, + { "danskemedier.dk", true }, { "danskoya.com", true }, { "danslan.org", true }, { "danslavieyadescactus.ch", true }, @@ -33119,10 +38810,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danstoncu.be", true }, { "dantana.de", true }, { "dantata1.com", true }, - { "dantelistan.com", true }, { "dantesinferno.tk", true }, + { "danthecloudman.com", true }, { "dantikap.tk", true }, - { "danusyakti.com", true }, { "danux.co.uk", true }, { "danvillein.gov", true }, { "danvillevt.gov", true }, @@ -33140,44 +38830,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "danya.ml", true }, { "danyabanya.com", true }, { "danzavila.com", true }, + { "danzenyogadaycare.com", true }, { "danzka.tk", true }, { "dao.spb.su", true }, { "daofficers.com", true }, + { "daojian.com", true }, + { "daole.com", true }, + { "daomo.com", true }, { "daoplattunhien.com.vn", true }, { "daoro.net", false }, { "daoudi.it", true }, + { "dapasten.com", true }, { "daphne.informatik.uni-freiburg.de", true }, - { "daphnes-restaurant.co.uk", true }, - { "dapianw.com", true }, { "dapoxetinagenerico.cf", true }, { "dapoxetine.gq", true }, { "dapperdom.net", true }, { "dapps.earth", true }, { "dappui.com", true }, - { "dappworld.com", true }, { "daprint.tk", true }, + { "dapss-ut.gov", true }, + { "dapurosyom.com", true }, { "dapursolo.tk", true }, + { "daqq.com", true }, { "daracokorilo.com", true }, { "darador.net", false }, + { "darajambili.com", true }, { "daramad-telegram.ga", true }, { "darani.ch", true }, { "daravk.ch", true }, { "darbi.org", true }, { "darc-mak.de", true }, - { "darc.pro", true }, - { "darchoods.net", false }, { "darci.tech", true }, { "darcyinspired.com", true }, { "darcymarshall.com", true }, { "dare.deals", true }, { "darean.ml", true }, + { "daredorm.com", true }, + { "dareechayhome.com.pk", true }, { "darenc.gov", true }, { "darenet.org", true }, + { "daresay.games", true }, + { "daresay.studio", true }, + { "daresaygames.com", true }, { "daretogain.com", true }, { "darf.nl", true }, { "darfurwall.org", true }, - { "dariaburger.de", true }, - { "dariakociszewska.pl", true }, + { "dari.wiki", true }, { "daricaun.com", true }, { "dariela.tk", true }, { "darientownwi.gov", true }, @@ -33187,10 +38885,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darioclip.com", true }, { "dariosirangelo.me", true }, { "darioturchetti.me", true }, + { "darioush.com", false }, { "dariusheghbali.tk", true }, { "darix.tk", true }, { "dark-ages.tk", true }, - { "dark-archive.com", true }, { "dark-crystal.tk", true }, { "dark-dreams.tk", true }, { "dark-infection.de", true }, @@ -33206,6 +38904,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darkag.ovh", true }, { "darkartstudios.tk", true }, { "darkbin.net", true }, + { "darkbit.gr", true }, { "darkboysmedia.com", true }, { "darkcelebration.tk", true }, { "darkcores.net", true }, @@ -33226,7 +38925,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darkgames.cf", true }, { "darkgrid.eu", true }, { "darkhall.tk", true }, - { "darkhunter.eu", true }, { "darkhuntersworld.tk", true }, { "darkinvasion.tk", true }, { "darkishgreen.com", true }, @@ -33235,15 +38933,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darklaunch.com", true }, { "darkleia.com", true }, { "darklite.ml", true }, + { "darklybasic.com", true }, { "darkmail.cf", true }, { "darkmanthra.tk", true }, + { "darkmattertechnology.com", true }, + { "darkmattertechnology.net", true }, { "darkmemo.com", true }, { "darkmilknyeremeny.hu", true }, { "darkness-and-light.tk", true }, { "darkness.sk", true }, { "darknessflickers.com", false }, { "darknessinme.tk", true }, - { "darknetlive.com", true }, { "darknight.blog", true }, { "darkoctoberseance.com", true }, { "darkoff.tk", true }, @@ -33276,7 +38976,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darkwebkittens.xyz", false }, { "darkwoods.tk", true }, { "darkx.me", true }, + { "darkxxxtube.com", true }, { "darlehen-ratgeber.de", true }, + { "darlen.com", true }, { "darlene.hu", true }, { "darlenenbocek.com", true }, { "darlingdownscoffee.com.au", true }, @@ -33286,13 +38988,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "darmowy-tarot.pl", true }, { "darnashop.fr", true }, { "darom.jp", true }, + { "darosen.eu", true }, { "darpa.mil", true }, - { "darraghbr.co.uk", true }, - { "darrenellis.xyz", true }, + { "darrenflemingphotography.co.uk", true }, { "darrenlines.uk", true }, { "darrenm.net", true }, { "dart-tanke.com", true }, { "dart-tanke.de", true }, + { "dartagnan.com", true }, { "dartbeginners.tk", true }, { "dartcarrousel.tk", true }, { "dartcode.org", false }, @@ -33300,11 +39003,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dartergroup.com", true }, { "darthbraden.com", true }, { "dartmold.com", true }, + { "dartmouth-health.org", true }, + { "dartmouth-hitchcock.org", true }, { "dartnallministorage.com", true }, { "dartstart.tk", true }, { "dartydiscount.fr", true }, { "darululum.ga", true }, - { "darumpro.ru", true }, { "darwinkel.net", true }, { "darwinpark.tk", true }, { "darwinsearch.org", true }, @@ -33317,14 +39021,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "das-clanpage.tk", true }, { "das-efx.tk", true }, { "das-forum24.de", true }, + { "das-maennermagazin.com", true }, { "das-mediale-haus.de", true }, { "das-pna.ao", true }, { "das-sommercamp.de", true }, + { "das.nl", true }, { "dasabomobil.de", true }, { "dasble.com", true }, { "dascan.com.br", true }, + { "dasdanny.de", true }, + { "daseinsfreu.de", true }, { "daservajesus.com", true }, + { "daservajesus.io", true }, { "daservajesus.net", true }, + { "dasfest.com", true }, { "dasgeestig.nl", true }, { "dashadmit123.com", true }, { "dashboard.gov.ph", true }, @@ -33333,19 +39043,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dashboardphilippines.com", true }, { "dashdoc.eu", true }, { "dashdrive.net", true }, - { "dashhelpme.io", true }, + { "dasher.co.za", true }, { "dashice.com", true }, + { "dashipping.com", true }, { "dashlane.com", true }, - { "dashnearby.com", true }, { "dashofmedia.com", true }, { "dashofting.com", true }, { "dashwebconsulting.com", true }, { "dasignsource.com", true }, { "dasinternetluegt.at", true }, - { "daskirschhaus.com", true }, + { "dasler.eu", true }, { "dasmailarchiv.ch", true }, { "dasolindustrialpark.tk", true }, - { "dassolutions.eu", true }, { "dastchin.live", true }, { "dastchin.shop", true }, { "dasteichwerk.at", false }, @@ -33354,9 +39063,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dasug.de", true }, { "data-access-point.com", true }, { "data-analyse.nl", true }, - { "data-captive.com", true }, { "data-detox.de", true }, - { "data-encoder.com", true }, { "data-exchange.tk", true }, { "data-jt.de", true }, { "data-loader.com", true }, @@ -33370,13 +39077,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "data-wing.ga", false }, { "data.bayern", true }, { "data.gov", true }, - { "data.gov.me", true }, { "data.govt.nz", true }, { "data.haus", true }, { "data.world", true }, { "data18.com", true }, { "data3w.nl", true }, - { "data4.nl", true }, + { "dataadvantage.se", true }, { "database-excel-integration.com", true }, { "database-word-integration.com", true }, { "database.com", true }, @@ -33398,23 +39104,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "datacentrenews.eu", true }, { "datacentresupport.com", true }, { "datacloud.gq", true }, + { "datacomm.com", true }, { "datacommissioner.gov.au", false }, { "datacool.tk", true }, { "datadoghq.com", true }, { "datadorf.de", true }, { "datadraugen.no", true }, { "datadyne.technology", true }, + { "dataentry.top", true }, { "datafarms.com", true }, + { "datafloq.com", true }, { "dataformers.at", false }, { "datagate.com.br", true }, { "datagir.ir", false }, + { "datagovernancetool.azurewebsites.net", true }, { "datagrail.io", true }, { "datagrid.ga", true }, { "dataguidance.com", true }, { "dataguru.lv", true }, { "dataharvest.at", true }, { "datahaus.construction", true }, - { "datahive360.com", true }, { "datahoarder.xyz", true }, { "datahove.no", true }, { "datainvest.pl", true }, @@ -33424,59 +39133,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "datalife.gr", true }, { "datalift.io", false }, { "dataloft.tk", true }, + { "datalogistics.lt", true }, + { "datalok.de", true }, { "datalysis.ch", false }, { "dataman.ml", true }, - { "datamatic.ru", true }, - { "datapathology.ma", true }, + { "datamationgroup.com", true }, + { "datamish.com", true }, { "datapiped.com", true }, + { "dataprivacyframework.gov", true }, { "dataprivacysolution.com", true }, + { "dataproject.com", true }, { "datapun.ch", true }, + { "datarails.com", true }, { "dataregister.info", true }, + { "datarobot.com", true }, + { "dataroom-online.org", true }, + { "datarooms-advisor.org", true }, + { "datarooms.in", true }, { "datasat.solutions", true }, + { "datascene.xyz", true }, { "datascience.cafe", true }, - { "datascience.ch", false }, + { "datasciencedojo.com", true }, + { "datasciocean.tech", true }, + { "datashock.com", true }, + { "datasite.com", true }, + { "dataskydd.net", true }, { "datasourcenj.org", true }, { "dataspace.pl", true }, + { "datastack.design", true }, + { "datastar.net", true }, { "datastream.org", true }, { "datastream.re", false }, - { "datastudio.ca", true }, { "datastudio.google.com", true }, { "datasubject.com", true }, { "datasubjects.com", true }, + { "datasunrise.com", true }, { "dataswamp.org", true }, { "datatekniikka.fi", false }, { "datateknologsektionen.se", false }, { "datatree.nl", true }, + { "datatrics.com", true }, { "datatruckers.com", true }, { "datatruckers.email", true }, { "datatruckers.eu", true }, { "datatruckers.net", true }, { "datatruckers.nl", true }, { "datatruckers.org", true }, + { "datatruckers.social", true }, { "datatube.tk", true }, { "datatypes.net", true }, + { "datavitec.com", true }, { "datavizable.org", true }, + { "datavoiceoptions.com", true }, { "datawar.tk", true }, - { "datawow.io", true }, + { "datawrkz.com", true }, { "datax-cloud.de", true }, { "dataxl.net", true }, + { "datazoo.asia", true }, { "datazoo.com", true }, { "datdt.com", true }, - { "date-chi.world", true }, + { "date-conference.com", true }, { "date-hijri.net", true }, { "dateien.at", true }, + { "dateierweiterung.com", true }, { "datelligent.com", true }, + { "datema.no", true }, { "datememe.com", true }, { "datenbitch.org", false }, { "datengrab.ws", true }, { "datengrab.xyz", true }, + { "datenightmovies.com", true }, { "datenkeks.de", true }, { "dateno1.com", true }, { "datenreiter.cf", true }, { "datenreiter.gq", true }, - { "datenreiter.org", true }, { "datenretter.tk", true }, { "datensalat.info", true }, + { "datenschutz-consult.de", true }, { "datenschutz-gruenwald.de", true }, { "datenschutz-individuell.de", true }, { "datenschutz-isny.de", true }, @@ -33503,7 +39236,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "datingru.ml", true }, { "datingru.tk", true }, { "datingsite.ml", true }, - { "datingso.com", true }, { "datingsrit.tk", true }, { "datingswagger.ga", true }, { "datingticino.ch", false }, @@ -33518,27 +39250,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "datorhjalpen.link", true }, { "datorhjalptaby.se", true }, { "datos-quimsaitw.es", true }, - { "datos.pro", true }, { "datosfreak.tk", true }, { "datovyaudit.cz", true }, { "datovyportal.cz", true }, + { "dattelking.com", true }, + { "dattelking.de", true }, { "datumplus.co.uk", true }, { "datumstudio.jp", true }, + { "dature.cloud", true }, { "datustribe.tk", true }, { "datutoday.tk", true }, { "datutorials.tk", true }, { "daubecity.de", true }, { "daubehosting.de", true }, + { "dauenhauer.de", true }, { "daughertyplasticsurgery.com", true }, { "daughtridgeenergy.com", true }, - { "dauksiagire.lt", true }, + { "daugoitot.com", true }, { "daum-group.de", true }, { "daunatotala.ro", true }, + { "daunt.link", true }, { "dauphincounty.gov", true }, { "dausendschoen.de", true }, { "davalochki.tk", true }, - { "davangarte.com", false }, { "davaobasic.com", true }, + { "davar1.co.il", true }, { "davd.cf", true }, { "dave-pearce.com", true }, { "daveaglick.com", false }, @@ -33547,22 +39283,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davebuis.tk", true }, { "davecardwell.com", true }, { "davedevries.nl", true }, - { "daveedave.de", false }, + { "daveedave.de", true }, { "davelucia.com", true }, { "davemusic.tk", true }, { "davenportok.gov", true }, { "daveoc64.co.uk", true }, + { "davep.uk", true }, { "davepearce.com", true }, { "davepermen.net", true }, { "davepullig.co.uk", true }, { "daveredfern.com", true }, { "daveroverts.nl", false }, + { "davesasphalt.com", true }, { "davesharpe.com", true }, { "davesplace.tk", true }, + { "davesskinks.com", true }, { "davetempleton.com", true }, - { "davethom.net", true }, { "davewardle.com", true }, - { "davewut.ca", true }, { "daveyconstructions.com", true }, { "davi.eti.br", true }, { "davichete.me", true }, @@ -33582,30 +39319,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "david-schiffmann.de", true }, { "david.kitchen", true }, { "davidadrian.org", true }, + { "davidalbert.me", true }, { "davidandersson.se", true }, - { "davidandrewcoaching.com", true }, + { "davidbach.com", true }, { "davidband.com.au", true }, { "davidbranco.me", true }, { "davidbrito.tech", true }, { "davidbrookes.me", false }, { "davidbyrne.tk", true }, + { "davidcook.au", true }, { "davidcraft.de", true }, - { "daviddegner.com", true }, + { "davidcrousehouse.com", true }, + { "davidczihak.at", false }, + { "daviddesberg.com", true }, { "daviddietrich.com", true }, + { "davidebaraglia.it", true }, { "davidebasile.tk", true }, { "davidelstob.com", true }, { "davideonlain.tk", true }, { "davidepalma.it", true }, { "davidereinato.tk", true }, - { "davidetmagali.fr", true }, { "davidfarland.com", true }, - { "davidfetveit.com", true }, { "davidfindlay.org", true }, { "davidforward.net", true }, { "davidfuentes.es", true }, { "davidgouveia.net", true }, { "davidgreig.uk", true }, { "davidgroup.co.id", true }, + { "davidgroup.id", true }, { "davidgrudl.com", true }, { "davidhanle.com", true }, { "davidinteriors.tk", true }, @@ -33616,27 +39357,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davidkeane.com", true }, { "davidkennardphotography.com", true }, { "davidking.xyz", true }, + { "davidknoll.me.uk", true }, + { "davidkyburz.ch", true }, { "davidlamprea.com", true }, { "davidlamprea.eu", true }, { "davidlane.io", false }, { "davidlemler.me", true }, { "davidlillo.com", true }, { "davidlindekilde.dk", true }, + { "davidlouisedelman.com", true }, { "davidlyness.com", true }, + { "davidmanouchehri.com", true }, { "davidmcevoy.org.uk", true }, { "davidmessenger.co.uk", true }, + { "davidmgarvin.com", true }, { "davidmlujan.com", true }, - { "davidmn.org", true }, { "davidmocq.com", true }, + { "davidn.cz", true }, { "davidnadaski.com", true }, { "davidnoren.com", false }, { "davidops.com", false }, + { "davidorsot.com", true }, { "davidovskakreu.tk", true }, { "davidpearce.com", true }, { "davidpearce.org", true }, { "davidpescarolo.it", true }, { "davidrichardson.com", true }, { "davidritchie.tk", true }, + { "davidrteixeira.com", true }, { "davids.online", true }, { "davidschadlich.com", true }, { "davidscherzer.at", true }, @@ -33644,58 +39392,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "davidsimner.me.uk", true }, { "davidson-berquist.com", true }, { "davidsonberquist.com", true }, - { "davidsopas.com", true }, + { "davidsopas.com", false }, { "davidstark.name", true }, { "davidstrickler.net", true }, { "davidstuff.net", true }, { "davidsun.info", true }, { "davidsun.name", true }, { "davidtiffany.com", true }, + { "davidtorres4congress.com", true }, { "davidundetiwan.com", true }, - { "davidvig.com", true }, { "davidvilla.tk", true }, { "davidzarza.tk", true }, { "davidzeegers.nl", true }, { "davidzimmerman3.com", true }, { "davie3.com", true }, + { "daviesscountyin.gov", true }, + { "daviesscountyinsheriff.gov", true }, { "davimun.org", true }, { "davinamccall.tk", true }, + { "davinciwaldorfschool.org", true }, + { "davisboroga.gov", true }, { "daviscannabisco.com", true }, { "daviscountyiowa.gov", true }, { "davisdieselandautorepair.com", true }, { "davisgrana.tk", true }, + { "davison.tech", true }, { "davisontwp-mi.gov", true }, + { "davisvision.com", true }, { "davmimer-mercerie.ro", true }, { "davo-usedcars.be", true }, { "davogroep.nl", true }, { "davorin.cf", true }, + { "davosalestax.com", true }, { "davros.eu", true }, { "davros.ru", true }, { "davulcuyuz.com", true }, { "davy-server.com", true }, { "davyatletiek.tk", true }, - { "davyjones.com.br", true }, { "davyjonesatacado.com.br", true }, { "davypropper.com", true }, - { "davys.com.br", true }, + { "dawaai.pk", true }, { "daware.io", true }, { "dawgs.ga", true }, { "dawidpotocki.com", true }, { "dawidwrobel.com", true }, + { "dawindycity.com", true }, { "dawnbringer.eu", true }, { "dawnbringer.net", true }, { "dawnbyte.ch", true }, + { "dawnlydialnyc.com", true }, { "dawnofeden.net", true }, { "dawnofhope.tk", true }, + { "dawnofthedawg.com", true }, { "dawnson.is", true }, + { "dawnzine.com", true }, { "dawrimiz.com", true }, { "dawson-floridavilla.co.uk", true }, { "dawsoncountyga.gov", true }, + { "dawsoncountyne.gov", true }, { "dawsonmt.gov", true }, { "dax.do", true }, { "dax.guide", true }, { "daxenexpress.com", true }, - { "daxici.com.tr", true }, + { "daxis.io", true }, + { "daxisweb.net", true }, + { "daxo.io", true }, + { "daxoptimizer.com", true }, { "daxos.tk", true }, { "daxpatterns.com", true }, { "daxperience.eu", true }, @@ -33704,41 +39466,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "day-of-battlecats.blog", true }, { "day.marketing", true }, { "daybreaklearning.com.au", true }, + { "daybuy.tw", true }, + { "daycomtech.com", true }, { "daycontactlens.com", true }, { "daycubrem.com", true }, { "daydream.team", true }, + { "dayekelly.com", true }, { "dayesh.tk", true }, { "daygametraining.com", true }, + { "daylafit.com", true }, { "daylightpirates.org", true }, { "daymail.io", true }, { "dayman.net", true }, { "daymarksi.com", true }, + { "daymi.co", true }, { "daymprove.life", true }, { "daynia.net", true }, - { "dayofdays.be", false }, + { "daynightdrugs.com", true }, + { "dayoadetiloye.com", true }, + { "dayofdays.be", true }, { "dayofthegirl.gc.ca", true }, - { "days.one", true }, { "dayslater.tk", true }, { "daysnews.tk", true }, { "daysoftheyear.com", true }, { "dayswithnostabbings.ca", true }, { "daytonahealthsolutions.com", true }, { "daytonaparadise.tk", true }, + { "daytonpcrepair.com", true }, { "dayuse-hotels.it", true }, { "dayuse.co.uk", true }, { "dayuse.com", true }, + { "dayuse.com.hk", true }, { "dayuse.cz", true }, + { "dayuse.de", true }, { "dayuse.es", true }, { "dayuse.fr", true }, - { "dayuse.pt", true }, { "dayuse.se", true }, { "dayvillefire.gov", true }, + { "dayz.com", true }, + { "daz8activator.com", true }, { "dazenelevator.ph", true }, { "dazz.it", true }, - { "dazzabutch.co.uk", true }, + { "dazzit.ca", true }, + { "dazzit.com", true }, + { "dazzit.io", true }, + { "dazzit.net", true }, + { "dazzit.org", true }, { "dazzit.xyz", true }, - { "dazzle.io", true }, - { "dazzleabaya.com", true }, { "dazzledrive.tk", true }, { "dazzlepulse.tk", true }, { "dazzlestart.com", true }, @@ -33746,37 +39520,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "db-sanity.com", true }, { "db-works.nl", true }, { "db.ci", true }, - { "dba-campus.de", true }, { "dba-support.nl", true }, { "dbapress.org", true }, { "dbaron.org", true }, - { "dbas.ca", true }, { "dbas.cz", true }, { "dbase.cf", true }, + { "dbautoservice.nl", true }, { "dbb.wtf", true }, { "dbcartography.com", true }, - { "dbdc.co.za", true }, { "dbeilharz.com", true }, { "dbeilharz.de", true }, { "dbeilharz.eu", true }, { "dbentertainment.co.uk", true }, + { "dbfopraga-pn.waw.pl", true }, { "dbgames.info", true }, - { "dbgamestudio.com", true }, + { "dbhome.org", true }, { "dbhouse.tk", true }, { "dbic.ro", true }, + { "dbildungscloud.de", true }, + { "dbinderbilling.com", true }, { "dbjc.tk", true }, { "dbjg.com", true }, + { "dbl-group.com", true }, { "dblabsite.net", true }, { "dblcastles.co.uk", true }, { "dbldub.net", true }, { "dblfree.com", false }, - { "dblx.io", true }, + { "dblsuretybonds.com", true }, { "dbmiller.org", true }, - { "dbmtv.news", true }, + { "dbmnet.be", true }, { "dbnext.de", true }, { "dboptical.com", true }, { "dborcard.com", false }, { "dbox.ga", true }, + { "dbpkg.com", true }, { "dbplanview.com", true }, { "dbq.com", true }, { "dbradley771.com", true }, @@ -33790,6 +39567,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dbtotalnet.tk", true }, { "dbtsai.com", false }, { "dbtunder.tk", true }, + { "dbushell.com", true }, { "dbw678.com", true }, { "dc-acupuncture.com", false }, { "dc-design.tk", true }, @@ -33804,39 +39582,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dc-zone.com", true }, { "dc7342.im", true }, { "dcain.me", true }, + { "dcampusbd.com", true }, { "dcards.in.th", true }, { "dcareer.tk", true }, { "dcave.net", true }, { "dcbouncycastles.co.uk", true }, { "dcc.cat", true }, { "dcc.moe", true }, + { "dcc.name", true }, { "dccdurgor1nbl.cloudfront.net", true }, + { "dccode.gov", true }, { "dccomputerrepair.com", true }, { "dccwiki.com", true }, { "dcdestetica.it", true }, { "dcepler.net", true }, + { "dcgprecisionpainters.co.nz", true }, { "dchatelain.ch", false }, + { "dchauriga.com", true }, { "dchest.org", true }, { "dci.com.br", true }, { "dcimpianti.it", true }, { "dckd.nl", true }, + { "dcklvr.fr", true }, { "dcl.re", true }, { "dclaisse.fr", true }, + { "dclm.org", true }, { "dclmwp.com", true }, + { "dcm.com", false }, { "dcmarvelunited.com", true }, { "dcmediahosting.com", true }, + { "dcmeventmanagement.com", true }, { "dcmt.co", true }, + { "dcnews.jp", true }, { "dcnews.ro", true }, { "dco.sg", true }, { "dcomedieta.it", true }, { "dcoremassagechairs.com", true }, + { "dcparts.com.br", true }, { "dcpl.bt", true }, { "dcpower.eu", true }, { "dcpro.pt", true }, { "dcpudwa.gov", true }, { "dcrdev.com", true }, { "dcs.pp.ua", true }, + { "dcso.de", true }, + { "dcsoky.gov", true }, { "dctrl.ch", true }, + { "dcustody.xyz", true }, { "dcvc.com", true }, { "dcw.io", true }, { "dcyph.de", true }, @@ -33852,7 +39644,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dd23project.com", true }, { "dd33d.net", true }, { "dd3ah.de", true }, - { "dd44d.net", true }, { "dd5197.co", true }, { "dd6729.co", true }, { "dd6729.com", false }, @@ -33861,38 +39652,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dd9397.com", false }, { "dd9721.com", false }, { "dd9728.co", true }, + { "dda.gov.ae", true }, { "ddatsh.com", true }, { "ddays2008.org", true }, { "ddcakedeliveryservice.co.uk", true }, + { "dddd.loan", true }, { "dddmelbourne.com", true }, { "ddeaejwa.ml", true }, { "ddel.de", true }, { "dden.ca", false }, { "dden.website", true }, { "dderyce.com", true }, + { "ddf.net", true }, + { "ddhlawyers.com", true }, + { "ddhosted.com", false }, { "ddi.one", true }, { "ddiaz.tk", true }, { "ddinox.be", true }, { "ddjia.com", false }, { "ddjlawtampa.com", true }, { "ddk.dn.ua", true }, + { "ddkdoradztwo.pl", true }, { "ddkkitchens.com", true }, - { "ddlcmods.com", true }, + { "ddma.nl", true }, { "ddmeportal.com", true }, { "ddmsolutions.co.uk", true }, { "ddns-anbieter.de", true }, { "ddns-test.de", true }, + { "ddnsip.cn", true }, { "ddnsweb.com", false }, { "ddog-gov.com", true }, { "ddos-mitigation.co.uk", true }, { "ddos-mitigation.info", true }, - { "ddoscyber.com", true }, { "ddosguard.cf", true }, { "ddosolitary.org", true }, { "ddproxy.cf", true }, { "ddracepro.net", true }, + { "ddraum.de", true }, + { "ddsdiscounts.com", true }, { "ddy.tw", true }, { "de-basiliek.tk", true }, + { "de-ella.com", true }, { "de-google-ify.org", true }, { "de-groot.it", true }, { "de-haas.dk", true }, @@ -33905,6 +39705,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "de-ooyevaar.de", true }, { "de-ooyevaar.nl", true }, { "de-osopanda.com", true }, + { "de-penaranda.be", true }, { "de-rwa.de", true }, { "de-servers.de", true }, { "de-spil.be", true }, @@ -33913,6 +39714,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "de.md", true }, { "de.search.yahoo.com", false }, { "de.vg", true }, + { "dea.gov", true }, { "dead-letter.email", true }, { "deadbeef.ninja", true }, { "deadboyskilling.tk", true }, @@ -33932,7 +39734,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deadsea.tk", true }, { "deadshortaudio.com", true }, { "deadspin.com", true }, - { "deaf.dating", true }, + { "deaecom.gov", true }, { "deaf.eu.org", true }, { "deafsound.tk", true }, { "deaktualisierung.org", false }, @@ -33941,20 +39743,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dealandgo.co.il", true }, { "dealapp.nl", true }, { "dealbanana.no", true }, - { "dealbx.com", true }, { "dealchip.tk", true }, + { "dealcoupons.in", true }, { "dealcruiser.nl", true }, { "dealdump.nl", true }, { "dealerselectric.com", true }, { "dealerwriter.com", true }, { "dealinflatables.co.uk", true }, + { "dealjumbo.com", true }, { "deallix.com", true }, + { "dealnxt.com", true }, + { "dealogic.com", true }, + { "dealpost.it", true }, { "dealproject.org.au", true }, { "dealroom.co", true }, { "dealschief.com", true }, + { "dealsfinders.blog", true }, { "dealsfromheaven.com", true }, + { "dealsinaz.com", true }, { "dealsmagnet.com", true }, - { "dealstream.com", true }, + { "dealsomart.com", true }, + { "dealsoncart.com", true }, + { "dealsonhealth.net", true }, { "dealstreet.fr", true }, { "dealzme.com", true }, { "deamonmail.tk", true }, @@ -33964,18 +39774,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deanconsultancy.co.uk", true }, { "deane.li", true }, { "deano-s.co.uk", true }, - { "deanosplace.net", true }, - { "deanpearce.me", true }, { "deanpearce.net", true }, + { "deanvending.com", true }, { "dear-children.ga", true }, { "dear-olivia.com", true }, { "dearborn.gov", true }, { "dearbornheightsmi.gov", true }, { "dearburma.com", true }, { "dearktiel.nl", true }, + { "deasserstadsloop.nl", true }, { "deasyvow.com", true }, { "death.social", true }, { "deathberry.ddns.net", true }, + { "deathclub.eu", true }, { "deathcult.fun", true }, { "deathlords.tk", true }, { "deathmarch.tk", true }, @@ -33990,6 +39801,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deavel.net", true }, { "deavon.tk", true }, { "debacker.biz", true }, + { "debarbas.com", true }, { "debarkader34.tk", true }, { "debarras-diogene.paris", true }, { "debarrasantony.com", true }, @@ -33999,9 +39811,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "debarrascolombes.com", true }, { "debarrasnanterre.com", true }, { "debashishsahu.com", true }, - { "debatereport.com", true }, + { "debateisland.com", true }, { "debats.tk", true }, { "debattinnlegg.no", true }, + { "debatyun.jp", false }, { "debauchery.ml", true }, { "debbiesblog.nl", true }, { "debbiessieraden.tk", true }, @@ -34009,33 +39822,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "debeer.tech", true }, { "debelareabogados.es", true }, { "debelicd.tk", true }, + { "debesiukas.lt", true }, { "debesteaedwinkel.nl", true }, { "debesteehbodoos.nl", true }, { "debewaker.tk", true }, { "debian.link", true }, { "debianizzati.org", true }, { "debie-usedcars.be", true }, - { "debierhandel.nl", true }, { "debigare.com", true }, { "debijloke.be", true }, { "debijloke.gent", true }, + { "debitcloud.com", true }, { "debitterballetjes.tk", true }, { "deblender.be", true }, { "deblender.shop", true }, + { "deblier.dynv6.net", true }, { "deblocking.ga", true }, + { "deboekaniers.be", true }, + { "deboo.info", true }, { "debora-singkreis.de", true }, { "deborahkaty.tk", true }, { "deborahmarinelli.eu", true }, { "debostero.tk", true }, { "deboutpourlemali.ml", true }, + { "debraj.in", true }, + { "debraj.xyz", false }, { "debraydesign.com.au", true }, { "debricked.com", true }, - { "debrunet.com", true }, { "debrunet.net", true }, { "debrunet.nl", true }, { "debrunet.org", true }, - { "debrusoft.ch", true }, + { "debruns.ie", true }, + { "debt-consolidation-reviews.org", true }, { "debtmetricest.ga", true }, + { "debtpaypro.com", true }, { "debtrecycling.com.au", true }, { "debtsolution.cf", true }, { "debtsolution.tk", true }, @@ -34046,19 +39866,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deburen.tk", true }, { "debut-mebel.ru", true }, { "debutaredead.tk", true }, + { "debuyer.com", true }, + { "debyte.com", true }, { "debzsh.tk", true }, { "dec-ced.gc.ca", true }, { "dec6.gc.ca", true }, { "decadentdvices.com", true }, { "decal-times.com", true }, { "decalquai.ch", false }, + { "decamidea.it", true }, { "decarrouseloss.nl", true }, { "decathlon.ca", true }, + { "decathlon.co.il", true }, { "decathlon.com.co", true }, + { "decathlon.in", true }, + { "decathlon.lt", true }, + { "decathlon.lv", true }, + { "decathlon.my", true }, + { "decathlon.ph", true }, + { "decathlon.vn", true }, { "decaturcountyiowa.gov", true }, + { "decaturhistory.com", true }, { "decaturish.com", true }, - { "decay24.de", false }, + { "deceasedonline.com", true }, + { "decentrala.org", true }, + { "dechan.com", true }, { "dechat.nl", true }, + { "decherdtn.gov", true }, { "dechetor.fr", true }, { "dechow.ddns.net", true }, { "decibelnewmusic.com", true }, @@ -34071,14 +39905,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "decisionssometimes.ml", true }, { "decisiontime.online", false }, { "decisivetactics.com", true }, + { "deciso.eu", true }, { "decisora.com", true }, - { "deck.academy", true }, - { "deckenplatten.org", true }, { "deckersheaven.com", true }, { "deckfix.co.nz", true }, + { "deckshop.pro", true }, { "declarando.es", true }, { "declarativ.ga", true }, - { "declaredme.com", true }, { "declivitas.com", true }, { "deco-parisienne.fr", true }, { "deco-tendance.ma", true }, @@ -34087,20 +39920,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "decode.ga", true }, { "decodeanddestroy.com", true }, { "decofire.pl", false }, - { "decohome.ee", true }, + { "decokeuken.nl", true }, + { "decologisticsgh.com", true }, { "decompression.tk", true }, + { "decompressneuroma.com", true }, { "deconstructind.ro", true }, + { "decopros.fr", true }, { "decor-anna.com", true }, + { "decor-essentials.com", true }, { "decor-live.ru", true }, { "decor-prazdnik.ru", true }, { "decorahia.gov", true }, + { "decoral.org", true }, { "decorarei.com", true }, { "decoratingadvice.co.uk", true }, { "decorations-elmotamaiz.com", true }, { "decoratiunidulci.ro", true }, { "decorativeconcretewa.com.au", true }, { "decorativecosmetics.tk", true }, - { "decorativeflooring.com", true }, { "decorator.uk", true }, { "decoratore.roma.it", true }, { "decorestilo.com.br", true }, @@ -34108,11 +39945,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "decorluxmuebles.com", true }, { "decormiernissanparts.com", true }, { "decorno.tk", true }, - { "decorotti.com.tr", true }, { "decorpol-renovation.fr", true }, { "decorsolucionesgraficas.es", true }, { "decorumcomics.com", true }, { "decosoftware.com", true }, + { "decotax.com", true }, + { "decotonic.com", true }, + { "decotrend.ro", true }, { "decoyoctopus.tk", true }, { "decrousaz-ceramique.ch", false }, { "decrypt.co", true }, @@ -34120,6 +39959,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "decs.es", true }, { "decstasy.de", true }, { "decsys.work", true }, + { "decubex.com", true }, + { "dedal.store", true }, { "dedede.ro", true }, { "dedelta.net", true }, { "dedeo.tk", true }, @@ -34127,10 +39968,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dedge.org", true }, { "dedicatedservers.cf", true }, { "dedicatedtowomenobgyn.com", true }, - { "dedirten.com", false }, { "dedmoroz.ga", true }, { "dedmoroz.gq", true }, { "dedmorozrzn.ru", false }, + { "dedns.com", true }, { "dedoho.pw", true }, { "dedoles.at", true }, { "dedoles.com", true }, @@ -34146,8 +39987,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dee.pe", true }, { "dee.su", true }, { "deechtebakkers.nl", true }, - { "deeded.ca", true }, + { "deedixservice.com", true }, + { "deedoo.com", true }, + { "deeds.com", true }, { "deedyinc.com", true }, + { "deeezy.com", true }, { "deegeeinflatables.co.uk", true }, { "deejayevents.ro", false }, { "deejayladen.de", true }, @@ -34157,29 +40001,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deelodge.art", false }, { "deemasfashion.co.uk", true }, { "deemasfashion.com", true }, - { "deemasfashion.com.au", true }, + { "deemasfashion.us", true }, { "deemlove.com", true }, { "deenergiecentrale.be", true }, { "deenergiecentrale.gent", true }, { "deeonix.eu", true }, - { "deep-chess.com", false }, { "deep-core.tk", true }, { "deep-labs.com", true }, { "deep-wave-hair-extensions.tk", true }, - { "deep.club", true }, { "deep6.ai", true }, { "deepaero.com", true }, { "deeparamaraj.com", true }, { "deepbluecrafting.co.uk", true }, { "deepblueemail.com", true }, + { "deepbuy.tech", true }, { "deepcreampie.com", true }, { "deeperblue.com", false }, - { "deepfake-porn.com", true }, + { "deepersonar.com", true }, { "deepgame.tk", true }, { "deephill.com", true }, - { "deephouse.ovh", true }, + { "deephousex.ru", true }, + { "deepid.com", true }, { "deepinnov.com", true }, { "deepinsight.io", true }, + { "deepl.com", true }, { "deeplink-medical.com", true }, { "deepmountains.tk", true }, { "deepnote.com", true }, @@ -34195,11 +40040,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deepu-mathew.tk", true }, { "deepumathew.tk", true }, { "deepvalley.tech", true }, + { "deepwatch.com", true }, { "deepwoodshop.com", true }, { "deerfieldapartmentsstl.com", true }, { "deerfieldknoll.com", true }, { "deeringnh.gov", true }, { "deerlycke.tk", true }, + { "deesse-gaia.fr", true }, { "deezeno.com", true }, { "def-pos.ru", true }, { "defamiliehagen.com", true }, @@ -34207,15 +40054,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "defcon.org", true }, { "defcongame.tk", true }, { "defcongroups.org", true }, + { "defectivebydesign.org", true }, { "defeestboek.nl", true }, { "defeestridders.tk", true }, { "defelo.de", true }, { "defelo.ml", true }, + { "defence.pk", true }, { "defenceenterprise.com", true }, + { "defencemilcis2022.com.au", true }, { "defend2.org", true }, { "defendanimals.com", true }, - { "defendas.com", true }, - { "defendbearbutte.org", true }, { "defender-pro.com", true }, { "defendinnovation.org", true }, { "defendtheweb.co.uk", true }, @@ -34229,15 +40077,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "defero.io", true }, { "defesaaereanaval.com.br", true }, { "deffo.com.au", false }, - { "defi-metier.org", true }, + { "defi-metier.com", false }, + { "defi-metier.fr", false }, + { "defi-metier.org", false }, + { "defi-metiers.com", false }, + { "defi-metiers.org", false }, { "defiant.com", true }, + { "defichain.com", true }, { "defietsambassade.be", true }, { "defietsambassade.gent", true }, { "defietsambassadegent.be", true }, { "defifa.ga", true }, { "defile.ml", true }, { "defiler.tk", true }, - { "defimetier.fr", true }, + { "defimetier.fr", false }, + { "defimetier.org", false }, + { "defimetiers.com", false }, + { "defimetiers.fr", false }, { "define-atheism.com", true }, { "define-atheist.com", true }, { "defineatheism.com", true }, @@ -34246,18 +40102,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "definingterms.com", true }, { "definitely.cn", false }, { "definitions360.com", true }, + { "definitivepressurewashing.com", true }, { "defis-franciliens.fr", true }, { "defiscalisation.ml", true }, - { "defiscan.live", true }, + { "defiscan.live", false }, { "defiskills.io", false }, { "defisolutions.ch", false }, - { "deflorio1948.it", true }, + { "defkey.com", true }, { "deflumeri.com", true }, { "deflumeriker.com", true }, { "defme.eu", true }, { "defont.nl", true }, { "defreecefinancial.com", true }, { "defreitas.no", true }, + { "defriesezaak.nl", true }, { "deftek.com", true }, { "defterikebir.tk", true }, { "deftig-und-fein.de", true }, @@ -34265,19 +40123,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "defuse.ca", true }, { "degala.tk", true }, { "degasten.tk", true }, + { "dege.me", true }, { "degeberg.com", true }, { "degeberg.dk", true }, { "degeeks.xyz", true }, { "degen-elektrotechnik.de", true }, { "degenerativediscdiseaseexplained.com", true }, { "degenero.es", true }, + { "degens.io", true }, { "degentseflikkenzoekenu.be", true }, { "degeo.cf", true }, { "degeo.ml", true }, { "degestamptepot.nl", true }, + { "degewonegezondemeid.nl", true }, { "degilde.tk", true }, { "degirmenkasi.tk", true }, { "degit.de", true }, + { "dego.biz.id", false }, { "degoeiewebsite.cf", true }, { "degooglisons-internet.com", true }, { "degooglisons-internet.fr", true }, @@ -34290,39 +40152,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "degracetechnologie.com", true }, { "degradarium.com", true }, { "degraissagehotte.fr", true }, - { "degrasboom.nl", true }, { "degrasboom.org", true }, { "degravel.net", true }, { "degreecollege.tk", true }, { "degreeducation.tk", true }, + { "degreesofcomfort.com", true }, + { "degreesonline.com", true }, { "degressif.com", true }, { "degroetenvanrosaline.nl", true }, { "degrootenslot.nl", false }, - { "degroupage.info", true }, + { "degrootsteshop.nl", true }, { "degustuju.cz", true }, { "dehaanadvocatenkantoor.nl", true }, { "dehaancaravans.nl", true }, + { "dehippeouder.nl", true }, { "dehkade3.ml", true }, { "dehoga-reisen.de", true }, - { "dehoogewaerder.nl", true }, { "dehop.re", true }, { "dehopre.com", true }, - { "dehuidstudio.nl", true }, { "dehumanizer.com", true }, + { "deiaprint.com", true }, { "deidee.nl", true }, { "deimos.gq", true }, - { "deimos.pro", true }, { "dein-baumdienst.de", true }, { "dein-trueffel.de", true }, + { "dein.mx", true }, { "deinballon.de", true }, { "deindeal.ch", true }, - { "deine-gitarre.com", true }, + { "deineagentur.de", true }, { "deinelakaien.tk", true }, { "deinewebsite.de", true }, - { "deinfoto.ch", true }, + { "deinhardt.com", true }, { "deinjoghurt.de", true }, { "deinsparen24.de", true }, { "deionized.ga", true }, + { "deisedigital.com", true }, { "deitec-global.com", true }, { "deitti.net", true }, { "deja-lu.de", true }, @@ -34331,37 +40195,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dejavu.ml", true }, { "dejected.ga", true }, { "dejfcold.cz", true }, + { "dejie.com", true }, { "dejiren.com", true }, { "dejmidarek.cz", true }, + { "dejon-whirlpools.de", true }, { "dejongonline.eu", true }, { "dejorisenkeesshow.tk", true }, + { "dejoylandschools.com", true }, { "dejure.org", false }, + { "dejuzconsults.com", true }, + { "dekalbcountyclerkil.gov", true }, { "dekalbcountymo.gov", true }, { "dekampioenen.tk", true }, { "dekasegi-kansai.com", true }, { "dekasegifuzoku.com", true }, + { "dekasiba.com", true }, { "dekasseguiempregos.com", true }, { "dekel.co.il", true }, { "dekeurslagers.nl", true }, { "dekinai.moe", true }, { "dekko.io", true }, - { "dekleinezeppos.be", true }, { "dekodi.de", true }, + { "dekoh-shouyu.com", false }, { "dekonijnenburcht.tk", true }, - { "dekonix.ru", true }, + { "dekorasyonu.net", true }, { "dekoration.cf", true }, { "dekoration.gq", true }, { "dekoration.ml", true }, { "dekoration.tk", true }, - { "dekulk.nl", true }, + { "dekordiyon.com", true }, + { "dekulk.nl", false }, { "del-ex.de", true }, - { "dela-django-app.herokuapp.com", true }, { "delahrzolder.nl", true }, { "delam.site", true }, + { "delamoreretirement.com.au", true }, + { "delanomn.gov", true }, + { "delaquila.com.co", true }, + { "delartouducocon.com", true }, { "delasamericas.tk", true }, { "delavega.ua", true }, + { "delavska-hranilnica.si", true }, + { "delavska.si", true }, { "delawarehealth.tk", true }, { "delawarenation-nsn.gov", true }, + { "delawaretwpmi.gov", true }, { "delay-dengi.cf", true }, { "delaydengy.tk", true }, { "delaysoft.tk", true }, @@ -34372,6 +40249,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "delcan.ml", true }, { "delcity.gov", true }, { "delcopa.gov", true }, + { "delcopalandbank.gov", true }, { "deldadegan.tk", true }, { "delduca.casa", true }, { "deleesanghers.tk", true }, @@ -34381,22 +40259,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deletebin.com", true }, { "deletebin.org", true }, { "deletecat.com", true }, + { "delfi.ee", true }, { "delfi.lt", true }, + { "delfi.net", true }, { "delfic.org", true }, { "delfinus.tk", true }, { "delftstudy.nl", true }, + { "delhi-escorts.in", true }, + { "delhi.edu", true }, { "delhicleanairforum.tk", true }, - { "delhionlinegifts.com", true }, + { "delhitourism.gov.in", true }, { "delhitownshipmi.gov", true }, + { "deli-fuzoku.jp", true }, { "deliacreates.com", true }, { "deliandiver.org", true }, { "delicaclubphils.tk", true }, { "delicadosonico.tk", true }, { "delicale.com.br", true }, { "delicatewonders.com", true }, + { "delici.art.br", true }, { "deliciascomercial.com", true }, + { "delicious-audio.com", true }, { "delicious.gq", true }, { "deliciousmedia.co.uk", true }, + { "deliciousmedia.net", true }, { "delicioustable.com", true }, { "delicon.jp", true }, { "delifoodbar24.com", true }, @@ -34404,7 +40290,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "delika.io", true }, { "delikom.de", true }, { "delio.tk", true }, - { "delirecetas.com", true }, { "delirio.tk", true }, { "delistudio.cf", true }, { "delitefully.com", true }, @@ -34412,21 +40297,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deliuksta.lt", true }, { "deliverability.guru", true }, { "delivereasy.tk", true }, + { "delivery.it", true }, { "deliveryman.site", true }, { "delivr.com", true }, + { "deljeconiah.com", true }, + { "delker.com", true }, { "delkomrockdrill.com", true }, { "dellacasapizzasemassas.com.br", true }, { "dellamorte.tk", true }, { "dellasano.com", true }, + { "dellie.com", true }, { "dellipaoli.com", true }, { "dellirium.tk", true }, - { "delmarsumter.nl", true }, - { "delmation.nl", false }, + { "delmarsumter.nl", false }, { "delofderonvolmaaktheid.tk", true }, { "delogo.nl", true }, { "deloittequant.com", false }, { "delontewest.tk", true }, - { "delopt.co.in", true }, { "delorenzi.dk", true }, { "deloretta.com", true }, { "delosgaia.nl", true }, @@ -34434,52 +40321,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "delphia.ai", true }, { "delphia.com", true }, { "delphibasics.tk", true }, + { "delphij.net", true }, { "delphinarabic.tk", true }, { "delphine.dance", true }, { "delpilarrungue.cl", true }, { "delprete.me", true }, + { "delpuertohealth.gov", true }, + { "delrayengineering.ca", true }, + { "delsfranchise.com", true }, + { "delsolphotography.com", true }, { "delta-data.ch", true }, + { "delta-electric.net", true }, { "delta-games.tk", true }, { "delta-hawks.tk", true }, { "delta-host.ml", true }, { "delta-market.ru", true }, - { "delta-wings.net", true }, { "delta.ai", true }, { "delta.ru", true }, { "delta24.ml", true }, { "delta8.one", true }, + { "deltacity.net", true }, { "deltacomputer.com", true }, { "deltacomputer.de", true }, + { "deltacountyco.gov", true }, { "deltacountymi.gov", true }, { "deltacountymi.org", true }, { "deltadentalmo.com", true }, { "deltadentalsc.com", true }, - { "deltafinanceiro.com", true }, { "deltafm.tk", true }, { "deltaloja.com.br", true }, { "deltamusik.tk", true }, + { "deltamvcd.gov", true }, { "deltanio.nl", true }, { "deltaonlineguards.com", true }, { "deltaphiepsilon.tk", true }, - { "deltaprise-events.de", true }, - { "deltarisk.com", true }, + { "deltarisk.com", false }, { "deltaserat.tk", true }, { "deltaservers.blog.br", true }, { "deltaservers.com.br", true }, { "deltasigmachi.org", true }, { "deltasigmaxi1971.tk", true }, + { "deltasul.com.br", true }, { "deltasuprimentos.com.br", true }, { "deltav.ml", true }, { "deltava.org", true }, + { "deltawolf.net", true }, { "deltaworkssecurity.com", true }, { "deltaworkssecurity.nl", true }, { "deltna.com", true }, + { "delugarnenhum.com", true }, + { "delugerpg.com", true }, { "delunee.co", true }, { "deluxe-bot.tk", true }, { "deluxe-dubai.com", true }, + { "deluxeblogtips.com", true }, { "deluxecar.fr", true }, - { "deluxewindowanddoor.com", true }, - { "delvemagazine.ca", true }, { "delvinoadegas.com.br", true }, { "delycate.com", true }, { "delycate.fr", true }, @@ -34492,9 +40388,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "demannen.tk", true }, { "demarestnj.gov", true }, { "demarit.fi", true }, - { "demarle.ch", false }, + { "demascotas.es", true }, { "demastglazenwasserij.nl", true }, { "demedx.at", true }, + { "demenagement-chalon.fr", true }, + { "demenagement-sfd.fr", true }, { "dementiacaring.com.au", true }, { "dementiafactsexplained.com", true }, { "dementiapraecox.de", true }, @@ -34504,9 +40402,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "demes.tk", true }, { "demesos.tk", true }, { "demetra-site.com.ua", true }, + { "demeubelmakelaar.nl", true }, { "demeyere-usedcars.be", true }, { "demfloro.ru", true }, - { "demibaguette.com", true }, { "demicon.biz", true }, { "demijn.nl", true }, { "demilletech.net", true }, @@ -34518,23 +40416,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "demisch-tim.de", true }, { "demischtim.de", true }, { "demish.tk", true }, + { "demmakina.com", true }, + { "demmarket.ru", true }, { "demmer.one", true }, + { "demo-awl.com", true }, { "demo-ferma.ga", true }, + { "demo.com.my", true }, { "demo.sb", true }, { "demo.swedbank.se", true }, + { "demobiliteitfinancier.nl", true }, { "democracy-news.tk", true }, { "democracy.cf", true }, { "democracychronicles.com", true }, { "democracydirect.com", true }, { "democracyineurope.eu", true }, + { "democratherald.com", true }, { "democratie.tk", true }, { "democraziaineuropa.eu", true }, - { "demodata.eu", true }, - { "demodoka.ddns.net", true }, { "demografia.tk", true }, { "demokisisel.tk", true }, { "demokrasi.tk", true }, { "demolandia.net", true }, + { "demolitetuto.fr", true }, { "demomanca.com", true }, { "demonbuster.tk", true }, { "demondms.com", true }, @@ -34545,28 +40448,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "demonics.tk", true }, { "demonized.tk", true }, { "demonmassacre.tk", true }, - { "demonologyfieldguide.com", true }, + { "demonoid.is", true }, { "demonstrably.live", true }, { "demontage.tk", true }, { "demonwav.com", true }, { "demonwithin.tk", true }, { "demonwolfdev.com", true }, { "demopanel.tk", true }, + { "demorgen.be", true }, { "demostweb.ga", true }, - { "demotennis.com", true }, { "demotivatorbi.ru", true }, { "demoussage-drone.fr", true }, - { "demoweb.pro", true }, { "dempe.tk", true }, { "dempsters.ca", false }, { "demsh.org", true }, + { "demshoesdoh.com", false }, { "demuzere.be", true }, { "demuzere.eu", true }, { "demuzere.net", true }, { "demuzere.org", true }, { "demxausa.com", true }, { "den-fi.com", true }, - { "den.taxi", true }, { "den.vc", true }, { "dena.pro", true }, { "denabot.pw", true }, @@ -34576,37 +40478,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "denali.net", true }, { "denarium.com", true }, { "denatured.tk", true }, - { "denbkh.ru", false }, + { "denbar.org", true }, { "dencel.lv", true }, { "denchik.tk", true }, { "dendi.tk", true }, { "dendibanget.tk", true }, + { "dendra.io", true }, { "denegka-mgnovenno.cf", true }, { "denegmnogo.tk", true }, { "denejki.tk", true }, - { "denet.pro", true }, + { "denet.pro", false }, + { "denformlab.lt", true }, { "dengg.name", true }, + { "dengi.desa.id", false }, { "dengidoma24.ml", true }, - { "dengisam.ru", true }, { "dengisrazu.tk", true }, { "dengivdolg.ml", true }, { "dengivdolg.tk", true }, { "dengivdom.tk", true }, + { "dengjunhui.cn", true }, { "dengyt.net", true }, { "denhartogracing.com", true }, { "denhotels.com", true }, + { "denied.gr", true }, { "denieuwenederlandsevlag.tk", true }, { "denika.com", true }, { "denimtoday.com", true }, { "denince.net", true }, { "denisaadolfova.com", true }, { "denisadinu.com", true }, + { "denisdftnewyorklife.com", true }, { "denisdimoski.tk", true }, { "denisewakeman.com", true }, { "denisglobal.com", true }, { "denisgrandverger.de", true }, { "denismusic.ga", true }, { "denisontx.gov", true }, + { "denispiknjac.com", true }, { "denissalignat.fr", true }, { "denissealatinsoul.com", true }, { "denistruffaut.fr", false }, @@ -34615,26 +40523,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "denisyan.ml", true }, { "deniszczuk.pl", true }, { "deniz.uk", true }, + { "denizcliniciran.com", true }, { "denizdesign.co.uk", true }, { "denizkutan.com", true }, { "denizlihaber.tk", true }, { "denizlihaberleri.tk", true }, { "denizlisohbet.tk", true }, { "denizuydur.nl", true }, + { "denk-it.be", true }, { "denkeandersblog.de", true }, - { "denken-durchdenken.de", true }, { "denker.tk", true }, { "denkerstube.net", true }, + { "denkit.com", true }, { "denkmalagentur.ch", true }, { "denkmalsetzung.at", true }, { "denknowles.com", true }, { "denkorolev.ga", true }, { "denkubator.de", true }, + { "denner.ch", true }, { "denninger.jp", true }, { "denningny.gov", true }, + { "dennis-carpenter.com", true }, { "dennisang.com", true }, { "denniscsl.com", true }, - { "dennisdoes.net", false }, { "dennishenrique.com.br", true }, { "dennishzg.com", true }, { "denniskoot.nl", true }, @@ -34646,8 +40557,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dennisvandenbos.nl", true }, { "dennmart.me", true }, { "dennogumi.org", true }, + { "deno.com", true }, { "denous.nl", true }, - { "denovosoftsol.com", true }, + { "denovo.energy", true }, + { "denovocorp.com", true }, { "denrei.com", true }, { "densmirnov.com", true }, { "densocean.net", true }, @@ -34655,35 +40568,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dent.uy", true }, { "denta-ua.com", true }, { "dentad.com.ua", true }, + { "dentadir.com", false }, { "dental-cloud.eu", true }, { "dental-colleges.com", true }, + { "dental-fitness.co.jp", true }, { "dental.gq", true }, { "dentalboutique.com.au", true }, { "dentalcareerfinder.com", true }, + { "dentalcareersedu.org", true }, { "dentalcolleges.tk", true }, - { "dentalelegance.co.uk", true }, + { "dentalimplantscost.com.au", true }, { "dentaloptimizer.com", true }, + { "dentalqore.com", true }, + { "dentalqoretemp.com", true }, { "dentalreklamlari.tk", true }, { "dentals.cf", true }, { "dentalsupportuk.com", true }, { "dentaltalent.nl", true }, + { "dentaltransitions.com", true }, { "dentalturism.com", true }, + { "dentalunion.ru", true }, + { "dentcountyhealth.gov", true }, + { "dentdelion-plugin.com", true }, { "dented.gq", true }, { "dentelegan.com", true }, + { "dentisalut.com", true }, + { "dentislabor.lt", true }, { "dentist-profi.ga", true }, { "dentistaaroma.com", true }, + { "dentistabarbarajaqueline.com.br", true }, { "dentistalagoasanta.com.br", true }, { "dentistesdarveauetrioux.com", true }, { "dentistglasgow.com", true }, - { "dentistinbrooklyn.com", true }, { "dentistquezoncity.com", true }, { "dentistree.in.ua", true }, { "dentistsgainesvillega.com", true }, { "dentistslilburnga.com", true }, - { "dentmate.id", true }, { "dentoncounty.gov", true }, + { "dentoncountysheriffjobs.gov", true }, + { "dentonolab.lt", true }, { "dentrassi.de", true }, - { "dentsimplant.com", true }, + { "dentsugrantgroup.com", true }, { "dentystabirmingham.co.uk", true }, { "denuevestore.com", true }, { "denugka-vezde.gq", true }, @@ -34691,27 +40616,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "denunzieren.tk", true }, { "denver-design.cf", true }, { "denver.tk", true }, - { "denverbph.com", true }, + { "denver7.com", true }, + { "denverautoinsurancecompany.com", true }, + { "denverchamber.org", true }, { "denverclassifieds.net", true }, - { "denverdigital.com", true }, { "denverescorts.net", true }, + { "denverfootballofficials.com", true }, { "denverilluminations.com", true }, { "denvernews.ml", true }, { "denverroot.com", true }, { "denvertechcenter.com", true }, - { "denwauranailab.com", true }, { "denydarko.tk", true }, { "deobandi.tk", true }, { "deobandimazhab.tk", true }, { "deonlineassistente.nl", true }, { "deonlinedrogist.nl", true }, { "deontology.com", true }, + { "deoostfrees.com", true }, { "deooyevaar.be", true }, { "deooyevaar.com", true }, { "deooyevaar.de", true }, { "deooyevaar.es", true }, { "deooyevaar.fr", true }, + { "deooyevaar.nl", true }, { "deoremann.com", true }, + { "deoxy.org", true }, { "depa.eu", true }, { "depaco.com", true }, { "depak.de", true }, @@ -34721,76 +40650,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "departamentoslosolivos.tk", true }, { "departmentofdefense.tk", true }, { "departmentofoncology.com", true }, - { "departure-transfer-reservation.com", true }, { "departureboard.io", true }, + { "depaulmanorestate.com.au", false }, { "depcompower.com", true }, + { "depdesign.com", true }, { "depeche.ga", true }, { "depechemode-live.com", true }, - { "deped.blog", true }, + { "depechemode.de", false }, + { "deped.blog", false }, { "deped.io", true }, - { "depedclick.net", true }, - { "depedclick.org", true }, + { "depedcommons.com", true }, { "depedcommons.org", true }, { "depedept.com", false }, { "depedsurigaodelnorte.com", true }, - { "depedtambayan.blog", true }, + { "depedtambayan.blog", false }, { "depedtambayan.net", true }, { "depedtayo.com", true }, { "depedtayo.ph", true }, { "depelos.co", true }, { "depelteau.com", true }, + { "dependopolis.com", true }, { "deperewi.gov", true }, { "dephoro.com", true }, { "depicus.com", true }, { "depijp.tk", true }, - { "depilacioncon.com", true }, { "depilazione.roma.it", true }, { "depilestil.es", true }, + { "depiratas.com.es", true }, { "depistage-bejune.ch", true }, { "depleteduranium.tk", true }, + { "deplis.fr", false }, { "deplorablesdaily.com", true }, { "depokcity.tk", true }, + { "depolauncher.cf", true }, { "depone.net", false }, { "depop.com", true }, { "deported.ml", true }, { "deportes.in", true }, + { "deportescr.net", true }, { "deportestalcahuano.tk", true }, { "deportivo-pasto.tk", true }, { "depositart.com", true }, { "depositomerci.it", true }, { "depositomobili.it", true }, { "depository.ml", true }, + { "depotaraf.com.tr", true }, { "depotchronicle.com", true }, { "depotsquarekerrville.com", true }, { "depotter-usedcars.be", true }, { "deprecate.de", true }, { "depressionadvice.gq", true }, - { "depressionanon.co.uk", true }, { "deprobe.pro", true }, { "deprofundis.tk", true }, { "deps.com.br", true }, { "depthsofdepravity.tk", true }, { "depuberteit.tk", true }, { "dequemurio.com", true }, + { "dequency.io", true }, { "der-bank-blog.de", true }, { "der-beste-schumpeter-vortrag.de", true }, { "der-elite.blog", true }, - { "der-fliesenzauberer.de", true }, { "der-gardinenmann.de", true }, { "der-lan.de", true }, - { "der-rohrstock.club", true }, { "derailer.org", true }, { "derakkers.tk", true }, { "derango.tk", true }, { "deratisation-prix.fr", true }, + { "deratisation.maison", true }, { "deratisation.paris", true }, + { "derattizzare.it", true }, { "derattizzazione.name", true }, { "derattizzazioni.biz", true }, + { "derattizzazioni.it", true }, { "derattizzazioni.milano.it", true }, { "derattizzazioni.org", true }, { "derbuntering.de", true }, { "derby.ge", true }, { "derbybouncycastles.com", true }, + { "derbymoneyman.com", true }, { "derbyshire-language-scheme.co.uk", true }, { "derbysound.com", true }, { "derbyware.com", true }, @@ -34801,14 +40738,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dereddingsklos.nl", true }, { "dereferenced.net", true }, { "derejilla.online", true }, - { "derekbooth.co.uk", true }, + { "derekbarnes.consulting", true }, + { "derekgendron.com", true }, { "derekheld.com", true }, { "derekkent.com", true }, { "dereklandis.com", true }, + { "dereklow.co", true }, { "derekseaman.com", false }, { "derekseaman.studio", false }, { "deremeavocats.be", true }, - { "derenderkeks.me", true }, { "derewonko.com", true }, { "derf.fr", true }, { "derfritz.at", true }, @@ -34816,17 +40754,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "derguns.town", true }, { "derhaeuptling.de", true }, { "derhil.de", true }, - { "derincocuk.com", true }, { "derinsular.tk", true }, + { "derivative-calculator.net", true }, { "derivativeshub.pro", true }, { "derive.cc", false }, { "derive.cf", true }, - { "derk-jan.com", false }, { "derkach.io", true }, { "derkarl.tk", true }, + { "derkbarten.nl", true }, { "derkuki.de", true }, { "derlux.tk", true }, { "dermacarecomplex.com", true }, + { "dermafeelstudio.com", true }, { "dermaldistinction.com", true }, { "dermapaz.net", true }, { "dermaprocollagen.com", true }, @@ -34835,12 +40774,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dermato.floripa.br", true }, { "dermatolog-ivanova.com", true }, { "dermatologie-morges.ch", false }, - { "dermaup.it", true }, + { "dermatologistmumbai.com", true }, + { "dermatologyandlasergroup.com", true }, { "dermax.tk", true }, { "dermedia.tk", true }, { "dermediq.nl", true }, { "dermnet.ai", true }, - { "dermnetai.com", true }, { "dermody.ga", true }, { "dermopigmentista.it", true }, { "dermot.org.uk", true }, @@ -34850,6 +40789,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dermx.ai", true }, { "deroo.org", true }, { "deroo.tk", true }, + { "derou.com", true }, { "derp.army", true }, { "derp.chat", true }, { "derpibooru.org", true }, @@ -34867,15 +40807,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "derwaldschrat.net", true }, { "derze.cloud", true }, { "des-hommes-et-des-clous.com", true }, + { "desacanggu.id", true }, { "desafiomovilidadsustentable.com", true }, { "desagaz.com", true }, { "desakatorock.tk", true }, { "desalas.org", true }, { "desanctispro.com", true }, - { "desanta.top", true }, + { "desant.com", true }, { "desapego.com.br", true }, { "desarrollamosweb.com", true }, - { "desarrollowp.com", true }, { "descargapormega.ml", true }, { "descargar-apk.org", true }, { "descobrim.com", true }, @@ -34883,6 +40823,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "descopera.ro", true }, { "descubre.ml", true }, { "desec.io", true }, + { "desecsecurity.com", true }, { "deseneonline.tk", true }, { "desenfans.com", true }, { "desensitized.tk", true }, @@ -34891,11 +40832,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deseosvip.tk", true }, { "desergo.com", true }, { "desert.cf", true }, + { "desertblockmasonry.com", true }, { "desertbloomplasticsurgery.com", false }, + { "desertbloomskincare.com", true }, { "desertbluffs.com", true }, + { "desertfinancial.com", true }, { "desertfiredesigns.com", true }, { "desertfury.tk", true }, { "desertgrove.com", true }, + { "desertharvest.com", true }, { "deserti.tk", true }, { "desertlinealuminium.com", true }, { "desertlinegroup.com", true }, @@ -34904,67 +40849,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "desertofoldies.tk", true }, { "desertsounds.org", true }, { "desgenst.ch", true }, + { "desguacesbarcelonacat.com", true }, + { "deshalb.de", true }, { "deshevle-net.com", true }, - { "deshiread.com", true }, { "deshobi.cloud", true }, + { "desic-sl.com", true }, { "desiderantes.tk", true }, { "desideriushogeschool.be", true }, { "design-in-bad.eu", true }, { "design-n-art.tk", true }, { "design-production.jp", true }, { "design-tooning.de", true }, - { "design-total.com", true }, { "design-tricks.gq", true }, { "design-your-life.info", true }, { "design2u.eu", true }, + { "designacademy.ru", true }, { "designanyware.com.br", true }, { "designarea.tk", true }, { "designartepublicidad.com", true }, + { "designbro.com", true }, { "designburners.com", true }, + { "designbymargot.com", true }, + { "designbymargot.fr", true }, + { "designbymargot.pro", true }, { "designcanada.com", true }, + { "designdecoration.info", true }, { "designdecorativ.ro", true }, - { "designed-cybersecurity.com", true }, - { "designedcybersecurity.com", true }, - { "designeline.com", true }, - { "designepublicidade.com.br", true }, + { "designdept.com.au", true }, + { "designengineering.com", true }, { "designer-drug.com", true }, - { "designera.se", true }, { "designerjoe.gq", true }, { "designerrateest.ga", true }, - { "designertrees.com.au", true }, { "designeus.ga", true }, { "designeus.gq", true }, { "designeus.tk", true }, + { "designforchangetaiwan.org", true }, { "designformanufacturability.net", true }, - { "designgears.com", true }, { "designgraphic.fr", true }, + { "designgurus.org", false }, + { "designhoheit.de", true }, { "designhuddle.com", true }, { "designmodernideas.tk", true }, - { "designops-conference.online", true }, { "designpro.tk", true }, { "designrhome.com", true }, - { "designs.codes", true }, { "designsbyjanith.com", true }, + { "designsbyscott.ca", true }, { "designsite.tk", true }, { "designsociety.tk", true }, + { "designstripe.com", true }, + { "designsystem.gov.scot", true }, + { "designtagebuch.com", true }, { "designtrc.com", true }, { "designville.cz", true }, { "designville.sk", true }, { "desimpelaere.eu", true }, { "desinfectantemanos.org", true }, + { "desinfection-gale.fr", true }, { "desinfectionfrance.com", true }, { "desingslash.tk", true }, + { "desinsectisation-punaise-de-lit.com", true }, + { "desinsectisation.paris", true }, { "desipandora.com", true }, { "desiplex.tk", true }, { "desire-host.tk", true }, - { "desiree-lauber.de", false }, { "desirememory.cf", true }, { "desish.cf", true }, + { "desitorrents.tv", true }, { "desivideos.tk", true }, + { "desize.com", true }, { "desk-yogi.com", true }, { "deskaservices.com", true }, { "deskdesign.nl", true }, { "deskeen.fr", true }, + { "desktopcentral.ath.cx", true }, { "desktopd.eu.org", false }, { "desktopfibra.com", true }, { "desktopfx.net", false }, @@ -34972,43 +40929,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "desktopsolos.tk", true }, { "deskture.com", true }, { "deskvip.com", true }, - { "desmaakvanplanten.be", true }, - { "desmart.com", true }, { "desmo.gg", true }, { "desmu.fr", true }, { "desna.tk", true }, { "desonnemannen.tk", true }, { "desormiers.com", true }, { "despachomariscal.com", true }, - { "despacitobeer.com", true }, { "desperate.solutions", true }, { "desperatesailors.com", true }, - { "desperec.ddns.net", true }, - { "despertadoronline.com.es", true }, { "despertarparavida.org", true }, - { "despinavandi.gr", true }, { "desplainesil.gov", true }, - { "desplats.com.ar", true }, { "despoina-vandi.tk", true }, { "despondentrock.tk", true }, + { "despora.de", true }, { "desportvriendenoverijse.tk", true }, { "despotika.de", true }, { "desserteagleselvenar.tk", true }, { "dessinemoilademocratie.ch", false }, { "dest-gottskar-nidingen.se", true }, - { "destakbrasilbrindes.com.br", false }, { "destcyr.com", true }, { "destech.nl", true }, { "desteniiprocess.com", true }, + { "desteptarea.com", true }, { "desterman.ru", true }, { "desterproducts.nl", true }, { "desterrada.tk", true }, + { "destguides.com", true }, { "destileria.net.br", true }, { "destilteomarmd.be", true }, + { "destinattorneyjohngreene.com", true }, { "destinomistico.com", true }, + { "destinopiriapolis.com", false }, { "destinotecnologico.ml", true }, { "destinyofthephoenix.me", false }, + { "destinypedia.com", true }, { "destinytemplates.tk", true }, + { "destock-poitou.fr", true }, { "destom.be", true }, { "destreekboer.ml", true }, { "destroyed.ga", true }, @@ -35020,39 +40976,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "destruction-frelon-asiatique.com", true }, { "destructive-revolution.tk", true }, { "destructoradepapel.com.es", true }, + { "destudio.org.ua", true }, { "destyntek.com", true }, { "desu.ne.jp", true }, { "desuchan.eu", true }, { "desuchan.org", true }, { "desucla.com", true }, { "desvan.tk", true }, - { "desveja.com.br", true }, { "deswaffelaars.tk", true }, { "desy.tk", true }, { "desyatnichenko.ml", true }, { "desynced.rocks", true }, { "det-te.ch", true }, + { "detailedimage.com", true }, { "detailingsp.com", true }, { "detakhukum.com", true }, { "detalika.ru", true }, { "detao.org", true }, { "detc.tk", true }, + { "detceptam.com", true }, + { "detdom-48.ru", true }, { "detdom.tk", true }, - { "detecmon.com", true }, { "detecte-fuite.ch", false }, { "detecte.ch", false }, { "detectefuite.ch", false }, { "detectify.com", true }, { "detectivedesk.com.au", true }, - { "detectro.cc", true }, - { "detecy.com", true }, + { "detectiveedu.org", true }, { "deteken.be", true }, { "detekenmuze.nl", true }, - { "detelefoonboer.nl", false }, + { "detektywtd24.pl", true }, { "determapp.de", true }, { "determinatie.tk", true }, + { "detfagligehus.dk", true }, + { "dethemium.com", true }, { "deti-online.com", true }, - { "deti-vse.ml", true }, { "deti.ga", true }, { "detiklife.com", true }, { "detiks.cf", true }, @@ -35068,6 +41026,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "detrimental.tk", true }, { "detroit-english.de", true }, { "detroit.gov", true }, + { "detroitfastest.org", true }, { "detroitjockcity.com", true }, { "detroitlocksmiths.net", true }, { "detroitnews.tk", true }, @@ -35078,6 +41037,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "detskie-avto-kresla.tk", true }, { "detskysad.com", true }, { "detuinmuze.nl", true }, + { "detulado.com", true }, { "detusmascotas.com", true }, { "detweedekans.tk", true }, { "detyamobuv.tk", true }, @@ -35089,64 +41049,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "deuelcountyne.gov", true }, { "deunanube.com", true }, { "deurenfabriek.nl", true }, + { "deuro.net", true }, { "deurwaarderhelmond.nl", true }, { "deustech-media.tk", true }, { "deustech.tk", true }, { "deutex.fr", true }, - { "deutsch-vietnamesisch-dolmetscher.com", true }, + { "deutsche-finanzagentur.de", true }, { "deutsche-tageszeitungen.de", true }, { "deutschebusiness.com", false }, { "deutscheibank.com", true }, - { "deutschemilf.online", true }, { "deutscher-bericht.de", true }, { "deutscherquidditchbund.de", true }, - { "deutsches-schutzportal.de", true }, { "deutscheshoponline.com", false }, { "deutschland-dsl.de", true }, { "deutschlandreport.com", true }, { "deux.solutions", true }, + { "deuxfleurs.fr", true }, { "deuxsol.co", true }, { "deuxsol.com", true }, - { "deuxsolutions.com", true }, { "dev", true }, { "dev-advancedservicesportal.com", true }, { "dev-brandywineglobal.com", true }, + { "dev-digibtw.nl", true }, { "dev-gutools.co.uk", true }, + { "dev-lab.net.pl", true }, + { "dev-lab.online", true }, + { "dev-mail.net", true }, { "dev-pmcc.net", true }, - { "dev-sev-web.pantheonsite.io", true }, + { "dev-soft.pl", true }, { "dev-tek.de", true }, { "dev-test.nl", true }, + { "dev-vip.com", true }, + { "dev-woenenn-node-server.herokuapp.com", true }, { "dev-ylinternal.com", true }, { "dev.moe", true }, { "dev.vu", true }, { "devafterdark.com", true }, { "devagency.fr", true }, { "devahi.gq", true }, + { "devalbert.com", true }, { "devalkincentives.nl", true }, { "devalps.eu", true }, { "devanstavern.tk", true }, { "devapi.pro", true }, { "devastacion.tk", true }, + { "devbay.cc", true }, { "devcf.com", true }, + { "devcftc.gov", true }, { "devchuli.ml", true }, { "devconf.nl", true }, + { "devcourseweb.com", true }, + { "devcu.com", true }, { "devdeb.com", true }, { "devdesco.com", true }, + { "devdiggers.com", true }, { "devdomain.cf", true }, { "devdoodle.net", true }, { "deve.software", true }, { "devel.cz", true }, { "develify.co", true }, { "develmaster.tk", true }, - { "develogs.ru", true }, { "develope.cz", true }, + { "developedbygayuh.my.id", true }, { "developer.android.com", true }, { "developer.moe", true }, { "developer.mydigipass.com", false }, { "developerdan.com", true }, + { "developerinsider.co", true }, { "developers.facebook.com", false }, { "developingtheworkforce.co.uk", true }, { "developmentsites.melbourne", true }, + { "developnorthportfl.gov", true }, { "developpeur-freelance.io", true }, { "developpeur-web.tech", false }, { "developpeur-web2.com", true }, @@ -35156,16 +41129,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "develux.net", true }, { "devendradox.ml", true }, { "devendrameena.tk", true }, + { "devenirconseillerbienetre.com", true }, { "devensys.com", true }, { "devenv.ml", true }, + { "devet-slunci.cz", true }, { "devflop.fr", true }, { "devgo.ca", true }, { "devh.de", true }, { "devh.net", true }, - { "devhjz.com", true }, + { "devhjz.com", false }, { "deviant.email", true }, + { "deviante.com", true }, { "deviation.tk", true }, - { "devicesgadget.com", true }, + { "devicebattle.ai", true }, + { "devicenow.com", true }, + { "deviceroy.com", true }, { "devicom.mx", true }, { "devignstudios.co.uk", true }, { "devil-may-cry.tk", true }, @@ -35187,15 +41165,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devinlasarre.com", true }, { "devinslick.com", true }, { "devirc.net", true }, + { "devise-host.com", true }, { "devisnow.fr", true }, { "devkid.net", true }, + { "devksingh.com", true }, { "devlabroid.com", true }, - { "devlatron.net", true }, { "devlist.tk", true }, { "devlogr.com", true }, { "devloope.com", true }, { "devmanagersest.ga", true }, { "devmode.fm", true }, + { "devnet.ma", true }, { "devnet.tk", true }, { "devnull.team", true }, { "devnull.win", true }, @@ -35205,12 +41185,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devolution.ws", true }, { "devoncycles.co.uk", true }, { "devonport.tas.gov.au", true }, + { "devonportairport.com.au", true }, { "devonsawatzky.ca", true }, { "devonvintagechina.co.uk", true }, + { "devoo.tn", true }, { "devopedia.org", true }, { "devopers.com.br", true }, - { "devopsbookmarks.org", true }, + { "devops-playtest.net", true }, { "devopsish.com", true }, + { "devorgray.com", true }, { "devos.ml", true }, { "devoted-atheist.tk", true }, { "devoteschlampe.net", true }, @@ -35219,14 +41202,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devpost.com", true }, { "devpp.com.br", true }, { "devpsy.info", true }, - { "devr.nl", true }, { "devragu.com", true }, - { "devrekgazetesi.com", true }, + { "devrekarti.com", true }, + { "devrekgazetesi.com", false }, + { "devries.frl", true }, { "devries.one", true }, + { "devrijejansenist.nl", true }, { "devrim.io", true }, { "devs-from.asia", true }, - { "devs.host", true }, - { "devs.icu", true }, { "devs.men", true }, { "devs4.com", true }, { "devsectools.com", true }, @@ -35239,19 +41222,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "devstroke.io", true }, { "devsurveyorcloud.com", true }, { "devswag.io", true }, + { "devtambayan.com", true }, { "devtea.cz", true }, { "devtechgroup.com", true }, { "devtestfan1.gov", true }, + { "devto.art", true }, { "devtoys.ru", true }, { "devtty.org", true }, { "devuan.org", false }, { "devurandom.tk", true }, { "devushki.cf", true }, - { "devxify.com", true }, + { "devvg.co.uk", true }, { "devyanijayakar.com", true }, { "devz.life", true }, + { "devzero.io", false }, { "dewalch.net", true }, { "dewapress.com", true }, + { "dewberry.com", true }, { "dewblog.ml", true }, { "dewereldvankina.be", true }, { "dewereldwerktthuis.com", true }, @@ -35261,33 +41248,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dewereldwerktthuis.org", true }, { "dewerveling.tk", true }, { "deweybeachpolice.gov", true }, + { "dewijkpraktijk.nl", true }, { "dewingerdfreinet.be", true }, + { "dewitt-associates.com", true }, { "dewittcountyil.gov", true }, { "dewittmi.gov", true }, { "dewka.tk", true }, { "dewolden.nl", false }, { "dexalo.de", true }, + { "dexauto.fr", true }, { "dexcellentesidees.tk", true }, { "dexerto.com", true }, - { "dexerto.es", false }, - { "dexerto.fr", false }, + { "dexerto.es", true }, + { "dexerto.fr", true }, + { "dexie.space", true }, { "dexign.ro", true }, { "dexigner.com", true }, { "dexlex.nl", true }, - { "dexonrest.azurewebsites.net", true }, + { "dexon.ws", true }, { "dexonservicedeskws.azurewebsites.net", true }, { "dextermarket.com", true }, - { "dexterseries.ru", true }, { "dextra.tk", true }, - { "deyaar-sl.com", true }, - { "deyanadeco.com", true }, { "deyute.com", true }, { "dezea.net", true }, { "dezeregio.nl", true }, { "dezet-ev.de", true }, { "dezevenster.com", true }, - { "dezintranet.com", true }, - { "dezmembrariromania.ro", true }, + { "dezinsekcija.online", true }, { "dezshop.com.ua", true }, { "dezzoroofing.co.za", true }, { "df-clan.tk", true }, @@ -35302,38 +41289,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "df3318.com", true }, { "df3319.com", true }, { "df5.se", true }, - { "df5102.com", true }, - { "df5103.com", true }, { "df5104.com", true }, { "df5aa.com", true }, { "df5bb.com", true }, { "df5cc.com", true }, { "df5dd.com", true }, - { "df5ee.com", true }, - { "df63.cc", true }, - { "dfaapostille.ph", true }, + { "df63.cc", false }, + { "dfactory.co.in", true }, + { "dfafacts.gov", true }, { "dfagent.com", false }, { "dfc.gov", true }, { "dfc52.com", false }, { "dfctaiwan.org", true }, - { "dfekt.no", true }, - { "dfile.tech", false }, { "dflcares.com", true }, + { "dfm.ae", false }, { "dfmn.berlin", true }, { "dfmvf.org", true }, + { "dfpg.com", true }, { "dfranke.com", true }, { "dfspdfl.gov", true }, { "dfstoryteller.com", true }, - { "dfwfasthomebuyers.com", true }, { "dfwm.vote", true }, { "dfwmv.com", true }, { "dfwmv.org", true }, { "dfwmv.us", true }, { "dfwmv.vote", true }, + { "dfwork.lt", true }, { "dfwrvroofmasters.com", true }, { "dfwwp.com", true }, { "dfzone.tk", true }, { "dg-1.jp", true }, + { "dg-hyp.eu", true }, + { "dg-hyp.net", true }, + { "dg-hyp.org", true }, + { "dg-komm.com", true }, { "dg-pic.tk", true }, { "dg1-test.com", true }, { "dg1.com", true }, @@ -35341,60 +41330,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dg1298.com", false }, { "dg1jp-test.com", true }, { "dg68.cc", false }, - { "dgangsta.net", true }, + { "dgap.org", true }, { "dgbouncycastlehire.com", true }, { "dggb.co.in", true }, - { "dggm.ru", true }, - { "dgl-24.de", true }, + { "dghyp-immobrief.de", true }, + { "dghyp-kiel.de", true }, + { "dghyp-press.de", true }, + { "dghyp.ag", true }, + { "dghyp.com.tw", true }, + { "dghyp.info", true }, + { "dghyp.net.cn", true }, { "dgli.org", true }, { "dgmedia.tk", true }, + { "dgmenergy.com", true }, { "dgmutual.co.uk", true }, - { "dgner.com", true }, + { "dgn.de", true }, { "dgo.co.il", true }, - { "dgportals.co.uk", true }, + { "dgou.de", true }, { "dgpot.com", true }, { "dgpro.click", true }, + { "dgr-wpg.de", true }, + { "dgries.de", true }, + { "dgroups.org", true }, + { "dgroyals.com", true }, + { "dgschell.com", true }, { "dgt-portal.de", true }, + { "dgtakano.co.jp", false }, { "dgtcitaprevia.es", true }, { "dgtl.hosting", true }, { "dgtl.tools", true }, { "dgtl.work", true }, { "dgund.com", true }, - { "dgvservices.com", true }, { "dh-leasing.si", true }, { "dh.si", true }, + { "dh26a.com", false }, { "dh6729.com", true }, + { "dh75975.com", true }, { "dh9397.com", true }, { "dh9721.com", true }, - { "dhakawebhost.com", true }, + { "dha.gov.ae", true }, + { "dhakabankltd.com", true }, { "dhamdhamaanchalikcollege.tk", true }, { "dhammacitta.org", true }, { "dhanushtechno.in", true }, - { "dharamkot.com", true }, { "dharma-clinic.com", true }, { "dharveydev.com", true }, { "dhautefeuille.eu", true }, { "dhauwer.nl", true }, + { "dhavalvira.com", true }, { "dhaynes.xyz", true }, { "dhconcept.ch", false }, + { "dhde.de", true }, { "dhdmdkd.com", true }, { "dheart.net", true }, { "dhelixnet.de", true }, { "dhemant.de", true }, - { "dhewa.bt", true }, { "dhhs.gov", true }, + { "dhiraagu.com.mv", true }, { "dhirendrayadav.com", true }, { "dhit.pl", true }, { "dhl-smart.ch", true }, { "dhlcotizadorexpo-qa.azurewebsites.net", true }, { "dhlinux.org", true }, { "dhlkh.com", true }, + { "dhlparcel.nl", true }, + { "dhoffmanmd.com", true }, { "dhome.at", true }, + { "dhpdq.com", true }, { "dhrupad.tk", true }, { "dhruv.nz", true }, { "dhtr.pw", true }, - { "dhub.xyz", true }, { "dhuboeuf.be", true }, + { "dhurbabaral.com.np", true }, { "dhuy.net", true }, { "dhwx.de", true }, { "dhxxls.com", true }, @@ -35403,7 +41410,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "di2pra.fr", false }, { "dia-de.com", true }, { "dia.com.br", true }, - { "dia.run", true }, + { "diaakademi.com", true }, { "diabetessucks.net", true }, { "diableros.tk", true }, { "diables-noirs.tk", true }, @@ -35413,8 +41420,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diablos-obon.tk", true }, { "diabolic.chat", true }, { "diabolique.pt", true }, - { "diaconat.ch", false }, - { "diademuertos.net", true }, { "diadiemdangsong.com", true }, { "diadoc.ru", true }, { "diadora-media.hr", true }, @@ -35423,12 +41428,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diagilev.ml", true }, { "diagnocentro.cl", true }, { "diagnoseo.com", true }, - { "diagnoseo.pl", true }, { "diagnoseo.se", true }, { "diagnosingfiction.com", true }, + { "diagnost-auto.com", true }, + { "diagnostics.stream", true }, { "diagnostix.org", true }, - { "dialapicnic.co.za", true }, - { "dialect-agency.eu.org", true }, + { "diai.cf", true }, + { "diai.gq", true }, + { "diai.ml", true }, + { "diai.tk", true }, + { "diaiai.com", true }, + { "diakonie-michaelshoven.de", true }, + { "dial.directory", true }, + { "dialadigger.net.au", true }, { "dialectic-og.com", true }, { "dialoegue.com", true }, { "dialog.co", true }, @@ -35444,17 +41456,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diamantiques.com", true }, { "diamantovaburza.cz", true }, { "diamgroup.pl", true }, + { "diamir.de", true }, { "diamond-cutting.kiev.ua", true }, { "diamond-hairstyle.dk", true }, { "diamondblueair.com", true }, + { "diamondbluffwi.gov", true }, { "diamondcargotrailers.org", true }, + { "diamondcarpetcleaning.co.uk", true }, { "diamondcontent.com", true }, { "diamondgoldmarkcity.cf", true }, { "diamondgrid.ga", true }, - { "diamondpkg.org", true }, + { "diamondit.com.au", true }, { "diamondsystem.ro", true }, { "diamondyacca.co.uk", true }, { "diamorphine.com", true }, + { "diamwall.com", true }, + { "dian7la.space", true }, { "diana-und-aaron.de", true }, { "dianaconsultancy.com", true }, { "dianaconta.pt", true }, @@ -35469,16 +41486,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dianavanderplas.tk", true }, { "diane-marstboom.tk", true }, { "dianefriedli.ch", false }, - { "dianeseaborn.com", true }, { "diankou.cn", true }, { "diankou.com", true }, { "diankou.com.cn", true }, + { "diankpi.com", true }, + { "diankpi.ws", true }, { "dianoxofficiel.tk", true }, + { "dianshangyi.net", true }, + { "dianshuju.com", true }, { "diansung.com", true }, + { "diaoyu8.com", true }, + { "diapazon.kz", true }, + { "diapuls.ru", true }, { "diare-na-miru.cz", true }, { "diario-egipto.com", true }, { "diariocibao.com", true }, { "diariodearaxa.com.br", true }, + { "diariodebalsas.com.br", true }, + { "diariodicucina.it", true }, { "diarionet.tk", true }, { "diarionoticia.pe", true }, { "diariopergaminoaustral.tk", true }, @@ -35491,14 +41516,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diasporan.gq", true }, { "diasporan.ml", true }, { "diaspordc.com", true }, + { "diatechusa.com", true }, { "diatr.us", true }, { "diatrofi-ygeia.gr", true }, + { "diaweb.nl", true }, { "diazpubli.tk", true }, { "diba.org.cn", true }, { "dibacode.com", true }, { "dibal.ua", true }, { "dibiphp.com", true }, + { "dibo-ambasador.pl", true }, + { "dic.ae", true }, { "dicaprio.tk", true }, + { "dicasgostosas.com", true }, + { "dicavirtual.com.br", true }, { "diccionarioabierto.com", true }, { "diccionariodedudas.com", true }, { "diccionariomexico.com", true }, @@ -35524,6 +41555,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dicionariofinanceiro.com", true }, { "dicionariopopular.com", true }, { "dicionarios.cc", true }, + { "dicipa.com.mx", true }, { "dick.red", true }, { "dickord.cloud", true }, { "dickp.it", true }, @@ -35537,6 +41569,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diclofenactopical.ga", true }, { "diclofenactopical.tk", true }, { "dico-charentais.tk", true }, + { "dicoado.ch", true }, + { "dicoado.com", true }, { "dicoado.org", true }, { "dicoeste.com", true }, { "dicomed.tk", true }, @@ -35552,15 +41586,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diconium42.de", true }, { "dictators-encyclopedia.tk", true }, { "dictatronics.com", true }, + { "dictionarybook.org", true }, { "dictionaryofsydney.org", true }, { "dictionarypro.net", true }, + { "dictum-gardentools.com", true }, + { "dictum-gartenwerkzeug.de", true }, { "dictzone.com", true }, { "dida.xin", true }, { "didacte.com", true }, { "didactic.ml", true }, - { "didactik.xyz", true }, - { "didakeanimaciones.es", true }, { "didaktik4you.de", true }, + { "didc.cz", true }, { "didche.net", false }, { "diddens.de", true }, { "diddlworld.tk", true }, @@ -35570,6 +41606,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "didesalud.com", true }, { "didi-online.tk", true }, { "dididiamond.net", true }, + { "dididiamond.org", true }, { "didier-equipereussite.com", true }, { "didierfle-decibel.fr", true }, { "didierfle-latelier.fr", true }, @@ -35584,6 +41621,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "die-blahuts.de", true }, { "die-borts.ch", true }, { "die-gruenen-teufel.de", true }, + { "die-herrenschneider.com", true }, { "die-machons.de", true }, { "die-partei-reutlingen.de", true }, { "die-pizzabaeckerei.de", true }, @@ -35595,13 +41633,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "die.one", true }, { "diebasis-box.de", true }, { "diebasis-partei.de", true }, + { "diecieventi.com", true }, + { "diecke.nu", true }, { "diecourier.co.za", true }, { "diedenhofen.tk", true }, { "diedesigntante.de", true }, - { "diedrehen.de", true }, { "diedrich.co", true }, { "dieecpd.org", true }, { "dieetfabels.tk", true }, + { "dieffe.tech", true }, + { "diefotogruppe.de", true }, { "diegelernten.de", true }, { "diegentlemenbittenzurkasse.tk", true }, { "diegerbers.de", true }, @@ -35613,27 +41654,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diegoisla.ga", true }, { "diegomeza.tk", true }, { "diegosalgado.tk", true }, + { "diegott.ddns.net", true }, { "diegovasconcelos.com.br", true }, { "diegovisual.tk", true }, { "diehildebrands.de", true }, + { "diehumanisten.de", true }, + { "diekleinekartenfabrik.de", true }, { "diekperaiwseis.gr", true }, + { "dielinke-igb.de", true }, + { "diem25.org", true }, { "diemattels.at", true }, { "diemperu.com", true }, { "dienaturbinderei.at", true }, { "dienchaninstitute.com", true }, - { "diendorfer.space", true }, { "diengiolachoa.com", true }, + { "dienkenijboer.nl", true }, { "dienmattroichonthanh.com", true }, { "dienna.nl", true }, { "diennhienshop.com", true }, { "diennobi.com", true }, { "dienstplan.cc", true }, - { "diera.net", true }, { "dierabenmutti.de", true }, { "dieradvies.nl", true }, { "dierenartsdeconinck.be", true }, { "dierenpagina.tk", true }, + { "dierenrijk.nl", true }, { "dierenschilderijen.tk", true }, + { "dierenwiki.nl", true }, { "diesdasananas.spdns.de", true }, { "dieselanimals.lt", true }, { "dieselfiltersonline.com", true }, @@ -35641,16 +41688,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diesicheremail.de", true }, { "diesignloods.nl", true }, { "dieslowhtx.com", true }, - { "diespark.com", true }, { "diesse.nl", false }, - { "diesteppenreiter.de", true }, { "dieta-figura.tk", true }, + { "dieta-vita.com", true }, { "dietandexercises.tk", true }, + { "dietaryguidelines.gov", true }, { "dietbrand.eu", true }, + { "dieter-datenschutz.de", true }, { "dieter.one", true }, { "dieterglas.de", true }, { "dietergreven.de", false }, { "dietfordiabetics.tk", true }, + { "dietherapie.tirol", true }, { "diethood.com", true }, { "dieti-natura.com", true }, { "dieti.ga", true }, @@ -35670,24 +41719,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dievturi.lv", true }, { "difc.ae", true }, { "diferenca.com", true }, - { "diff-speed.de", false }, + { "diferenciador.com", true }, { "different.cz", true }, { "differenta.ro", true }, { "differentgirleveryday.ml", true }, { "differenziare.it", true }, { "difficulty.ga", true }, { "diffnow.com", true }, + { "difko.co.uk", true }, { "diflucangeneric.ml", true }, { "diflucanonline.tk", true }, { "diflucanpill.ga", true }, { "difon.tk", true }, - { "difoosion.com", true }, { "difusionesnocomerciales.tk", true }, { "difusionmetalera.tk", true }, { "difuzevox.com", false }, + { "dig.cat", true }, { "digaloahidigital.com", true }, { "digar.ee", true }, - { "digazu.com", true }, { "digbin.com.br", true }, { "digchip.com", true }, { "digchip.info", true }, @@ -35695,45 +41744,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digchip.org", true }, { "digchips.com", true }, { "digdata.de", true }, + { "diggerlandusa.com", true }, + { "digginsmo.gov", true }, { "dighans.com", true }, - { "digi-trax.com", true }, { "digi-typ.fi", true }, { "digi-typa.fi", true }, { "digiaika.com", true }, { "digiaika.fi", true }, { "digiarc.net", true }, - { "digib.co.uk", true }, - { "digibean.com.au", true }, + { "digibean.com.au", false }, { "digibild.ch", true }, { "digibook.id", true }, { "digiboxx.com", true }, + { "digibtw.nl", true }, { "digibull.email", true }, + { "digibull.gmbh", true }, { "digibull.link", true }, { "digicelidgy.com", true }, { "digicert-support.com", true }, { "digicert.com.ru", true }, { "digicert.nl", false }, + { "digichefs.com", true }, { "digicode.hu", true }, { "digicomtel.com.br", true }, { "digicy.cloud", true }, - { "digideli.ee", true }, + { "digidaigaku.com", true }, { "digidroom.be", true }, - { "digifloat.io", false }, - { "digiful.fi", true }, + { "digifloat.io", true }, { "digikol.net", true }, + { "digilabs.fr", true }, { "digiland.tk", true }, { "digilicious.com", true }, { "digilirapay.com", true }, { "digimaat.agency", true }, { "digimagical.com", false }, - { "digimax.dental", true }, { "digimedia.cd", false }, + { "digimind-evolution.com", true }, + { "digimobee.info", true }, { "digimoncard.io", true }, - { "digino.co.uk", true }, + { "digimortals.nl", true }, { "digino.jp", true }, { "digino.us", true }, { "digino.xyz", true }, + { "digiparse.com", true }, { "digipartindex.ch", true }, + { "digipassos.com", true }, { "digipitch.com", true }, { "digipolis.gent", true }, { "digipost.no", true }, @@ -35741,22 +41796,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digirence.org", true }, { "digiriik.ee", true }, { "digiscrap.nl", true }, + { "digiscrap.plus", true }, { "digiscrap.shop", true }, { "digisecmalta.com", true }, + { "digisfil.fr", true }, { "digisign.tk", true }, - { "digiskool.co.za", true }, - { "digit.bg", true }, { "digit.ec", true }, { "digitaal-atelier.tk", true }, { "digitaaltalent.be", true }, { "digitador.tk", true }, { "digitai.net", true }, { "digital-agency360.com", true }, + { "digital-artefakt.me", true }, { "digital-compounds.com", true }, { "digital-cs.tk", true }, { "digital-e-library.tk", true }, { "digital-eastside.de", true }, { "digital-echo.io", true }, + { "digital-garden.us", true }, { "digital-home.tk", true }, { "digital-insurance-engine.com", true }, { "digital-insurance-engine.de", true }, @@ -35765,16 +41822,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digital-insure.fr", true }, { "digital-liberal.ch", true }, { "digital-mu.tk", true }, - { "digital-nut.com", true }, + { "digital-park.de", true }, { "digital-rainbow-dolls.tk", true }, { "digital-sculpture.org", true }, - { "digital-techs.com", true }, - { "digital-workshop.at", false }, + { "digital-vorwaerts.de", true }, + { "digital-watchdog.com", true }, { "digital.democrat", true }, { "digital.gov", true }, { "digital.govt.nz", true }, { "digital1st.co.uk", true }, - { "digital2web.com", false }, { "digitaladl.com.au", true }, { "digitalagedeals.com", true }, { "digitalagencynetwork.com", true }, @@ -35783,11 +41839,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalallies.co.uk", true }, { "digitalandsocialmediaacademy.com", true }, { "digitalarchitecture.com", true }, - { "digitalbang.gr", true }, { "digitalbd.tk", true }, + { "digitalbeachbrasil.com.br", true }, { "digitalbitbox.com", true }, { "digitalblood.eu", true }, { "digitalbox.jp", false }, + { "digitalbuero.eu", true }, { "digitalcanvas.com.br", true }, { "digitalcarbide.com", true }, { "digitalcash.cf", true }, @@ -35796,12 +41853,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalchurch.ng", true }, { "digitalcitizen.life", true }, { "digitalcitizen.ro", true }, - { "digitalcloud.ovh", true }, { "digitalcoffeepodcast.com", true }, { "digitalcomponents.de", true }, { "digitalcompudev.biz", true }, - { "digitalcompudev.com", true }, + { "digitalcourage.de", true }, { "digitalcraftmarketing.co.uk", true }, + { "digitalcrisis.com", true }, + { "digitalcrisis.us", true }, { "digitaldashboard.gov", true }, { "digitaldeli.com", true }, { "digitaldeli.org", true }, @@ -35812,13 +41870,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitaldesign.ga", true }, { "digitaldisaster.tk", true }, { "digitaldruck.info", true }, + { "digitaldune.org", true }, + { "digitale-afvalscheiding.nl", true }, + { "digitale-ausleihe.de", true }, { "digitale-bibliothek.tk", true }, { "digitale-oekonomie.ch", true }, { "digitaleducationarea.tk", true }, { "digitaleducationpro.tk", true }, { "digitalehandtekeningen.nl", true }, - { "digitalentertainmentnews.com", true }, - { "digitalenvision.com.au", true }, { "digitaleplus.fr", true }, { "digitalerror.net", true }, { "digitaletanker.com", true }, @@ -35827,19 +41886,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalexpertsdirectory.com.au", true }, { "digitalezukunft-hagen.de", true }, { "digitalezukunft.nrw", true }, - { "digitalfind.net", true }, { "digitalfoodbook.com", true }, { "digitalforensicsdubai.com", true }, { "digitalfortress.tech", true }, { "digitalfoster.org", true }, { "digitalfury.co.uk", true }, - { "digitalfuturenow.com", true }, { "digitalgeckos.com", true }, { "digitalgeek.social", true }, + { "digitalgenius.com", true }, { "digitalgov.gov", true }, { "digitalgyan.org", true }, { "digitalgymnastics.tk", true }, { "digitalhabitat.io", false }, + { "digitalhack.ro", true }, { "digitalhands.tk", true }, { "digitalhealth.gov.au", true }, { "digitalheart.tk", true }, @@ -35850,47 +41909,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalid.com.au", true }, { "digitalillusion.pt", true }, { "digitalimpactlab.org", true }, - { "digitalinberlin.de", true }, - { "digitalis-france.com", true }, + { "digitalindiatalent.com", true }, + { "digitalis.fr", true }, { "digitalistan.tk", true }, { "digitalitglobal.com", true }, { "digitalizer.my.id", true }, - { "digitalizzazioneverona.it", true }, + { "digitalizzazioneverona.it", false }, { "digitalkashmir.ml", true }, + { "digitalkey.pro", true }, + { "digitalkoran.com", true }, + { "digitalks.com.br", true }, { "digitallife.tk", true }, { "digitallink.be", true }, { "digitalliteracy.gov", true }, { "digitallolitayume.tk", true }, { "digitalmahleracademy.com", true }, + { "digitalmanager.guru", true }, { "digitalmaniac.co.uk", true }, { "digitalmarketingindallas.com", true }, { "digitalmarketingnetic.com", true }, - { "digitalmarketingrocks.com", false }, { "digitalmind.su", true }, + { "digitalmn.net", true }, + { "digitalmove.co.uk", true }, { "digitalninja.tk", true }, { "digitalnomadsunderground.com", true }, { "digitalphone.tk", true }, { "digitalphoto.group", true }, { "digitalphoto.tech", true }, { "digitalpiloten.org", true }, + { "digitalplayground.com", true }, + { "digitalplaygroundnetwork.com", true }, { "digitalplaymakers.co.uk", true }, { "digitalpocketpedometer.tk", true }, { "digitalposition.com", true }, { "digitalprimate.my", true }, { "digitalproduct.ga", true }, { "digitalproductivity.online", true }, + { "digitalprojects.com.au", true }, { "digitalradio.ie", true }, { "digitalrealitybbs.com", true }, { "digitalreborn.com", true }, - { "digitalredshirts.com", true }, + { "digitalredshirts.com", false }, + { "digitalrhino.eu", true }, { "digitalrights.center", true }, - { "digitalrights.fund", true }, { "digitalroma.tk", true }, + { "digitalsearchgroup.ie", true }, { "digitalsearchlab.com", true }, { "digitalservices.lk", true }, { "digitalside.com.br", true }, { "digitalsignagedisplay.com", true }, - { "digitalsignageweb.com", true }, { "digitalskillswap.com", true }, { "digitalsolutionsonline.co.uk", true }, { "digitalsphere.tk", true }, @@ -35898,32 +41965,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "digitalsuply.com.br", true }, { "digitalsupporter.ml", true }, { "digitalsurge.io", true }, + { "digitalsushma.com", true }, + { "digitaltbyra.no", true }, { "digitaltcertifikat.dk", true }, { "digitaltech.vip", true }, - { "digitaltepee.co.uk", true }, + { "digitaltechupdates.com", true }, + { "digitaltechviews.com", true }, + { "digitaltransactions.net", true }, { "digitaltry.tk", true }, { "digitalupcoming.tk", true }, { "digitalvag.tk", true }, + { "digitalwasteland.net", true }, + { "digitalworkplaceforum.com.br", true }, + { "digitalzenworks.com", true }, + { "digitalzylinder-shop.com", true }, { "digite.com", true }, { "digitec.ch", true }, { "digitecgalaxus.ch", true }, + { "digitechseo.com", true }, + { "digitecno.com", true }, + { "digitese.pt", true }, { "digithub.tk", true }, { "digitise.io", false }, { "digitium.fr", true }, { "digitkon.com", true }, + { "digitogy.com", true }, + { "digitoimistopipeline.fi", true }, { "digitoucan.com", true }, { "digitra.com", true }, { "digitreads.com", true }, - { "digitren.co.id", false }, { "digityp.fi", true }, { "digitypa.fi", true }, { "digivan.ml", true }, { "digminecraft.com", true }, + { "dignilog.com", true }, + { "dignited.com", true }, { "dignity.tk", true }, - { "digpath.co.uk", true }, { "digpubdev.org", true }, { "digpubprd.org", true }, { "digpubqa.org", true }, + { "digsys.bg", true }, { "digwiz.biz", false }, { "digwp.com", true }, { "dih-technology.com", true }, @@ -35940,34 +42021,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dihmedical.org", true }, { "diipoo.com", true }, { "diis.plus", true }, - { "dijibot.com", true }, { "dijispin.com", true }, { "dijitaller.com", true }, + { "dijitalsaray.com", true }, { "dijitalzade.com", true }, - { "dijkmanmuziek.nl", false }, { "dijks.com", true }, + { "dijoncter.info", true }, { "dik-manusch.tk", true }, - { "dikiaap.id", true }, { "dikkevettescania.tk", true }, - { "diko.ml", true }, { "diktatur.tk", true }, { "dilation.party", true }, - { "dilberkebab.co.uk", false }, + { "dild.loan", true }, { "dildoexperten.se", true }, { "dilibel.be", true }, { "diligence.cloud", true }, - { "diligenciasprime.com.br", true }, { "diligo.ch", false }, { "dillewijnzwapak.nl", true }, + { "dillon-mcnamara.com", true }, { "dillonco.gov", true }, { "dillonm.io", true }, + { "dillynbarber.com", false }, + { "dilmahtea.com", true }, { "dilmahtea.me", true }, { "dilmarames.com", true }, { "dima.pm", false }, { "dimagrimentoincorso.it", true }, + { "dimamergel.com", true }, { "dimanss47.net", true }, { "dimaweb.tk", true }, + { "dimdata.com", true }, { "dime-staging.com", true }, + { "dimension-pc.com", true }, { "dimensionjapon.tk", true }, { "dimensions-ohs.com", true }, { "dimensionweb.tk", true }, @@ -35977,9 +42061,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dimez.ru", true }, { "dimiskovska.de", true }, { "dimism.eu", true }, - { "dimitrihomes.com", true }, + { "dimitri-papadimitriou.com", true }, + { "dimitri-papadimitriou.eu", true }, + { "dimitri-papadimitriou.gr", true }, { "dimitris.tk", true }, { "dimitrovi.tk", true }, + { "dimmak.com", false }, { "dimmersagourahills.com", true }, { "dimmerscalabasas.com", true }, { "dimmersdosvientos.com", true }, @@ -35996,10 +42083,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dimomaint.com", true }, { "dimomaint.de", true }, { "dimomaint.es", true }, + { "dimonz.com", true }, { "dimosoftware.fr", true }, { "dimseklubben.dk", true }, + { "dimspith.com", true }, { "dinamikarosta.ml", true }, + { "dinamixdigital.com", true }, { "dinamofilms.cl", true }, + { "dinarys.com", true }, { "dincemlakmerkez.ga", true }, { "dind.one", true }, { "dinda.tk", true }, @@ -36010,10 +42101,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dinerolibre.tk", true }, { "dinerroboticurology.com", true }, { "dinevigroup.bg", true }, + { "ding.com.co", true }, { "ding.gent", true }, + { "dingcc.com", true }, { "dingcc.me", true }, { "dingdong-shop.ru", true }, { "dingelbob-schuhcreme.gq", true }, + { "dingeldein-messtechnik.de", true }, { "dinglecottage.co.uk", true }, { "dinglishuzi.com", true }, { "dingos.tk", true }, @@ -36021,27 +42115,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dingss.com", true }, { "dinheirolucrar.com", true }, { "dinimizislam.tk", true }, + { "dinira-bg.com", true }, { "dinitabir.tk", true }, - { "dinly.co", true }, + { "dinkoreskolesilkeborg.dk", false }, + { "dinkoreskoleviborg.dk", true }, { "dinmtb.dk", true }, { "dinnerandmurder.com", true }, { "dinnerclub.tk", true }, { "dinocarrozzeria.com", true }, { "dinos-mag.tk", true }, { "dinotv.at", true }, - { "dinposition.nu", true }, { "dintrafic.net", true }, - { "dinube.com", true }, { "diodo.me", true }, { "dioesfoto.com", true }, { "diogbatech.tk", true }, { "diogeneshoy.com", true }, { "diogof.pt", true }, { "diogofmedeiros.com", true }, - { "diona.cn", true }, + { "dionera.com", true }, { "dionmirrors.nl", true }, { "dionysos-ios.gr", true }, + { "diorhightopsneakers.shop", true }, { "dioris.net", true }, + { "diorlowtopsneakers.shop", true }, + { "diormensneakers.shop", true }, + { "diorsneakers.shop", true }, + { "diorsneakersb22.shop", true }, + { "diorsneakersb23.shop", true }, + { "diorsneakerssale.shop", true }, + { "diorsneakerswomen.shop", true }, + { "diorwomensneakers.shop", true }, { "dios.ga", true }, { "diospersonal.tk", true }, { "diouf.tk", true }, @@ -36051,16 +42154,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dipakgajjar.com", true }, { "dipalma.me", true }, { "dipanshuparashar.ml", true }, - { "dipdaq.com", true }, { "dipietro.id.au", true }, { "dipling.de", true }, { "diplom-ru.tk", true }, { "diplomatcruises.co.uk", true }, { "diplomatiegabon.ga", true }, - { "diplona.de", true }, + { "diplomsshop.online", true }, + { "dipnot.tv", true }, { "dipro.id", true }, { "dipsytroller.com", true }, - { "dipulse.it", true }, + { "dipuma.com", true }, { "dir2epub.com", true }, { "dir2epub.org", true }, { "dirch.tk", true }, @@ -36069,27 +42172,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "direc-tory.tk", true }, { "direct-sel.com", true }, { "direct.cz", false }, + { "direct2trade.co.nz", true }, { "direct365.es", true }, + { "directadmin.com", true }, + { "directb2b.ca", true }, + { "directcouriers.com.au", true }, { "directelectricalltd.co.uk", true }, { "directfinance.cz", true }, { "directfitnesssolutions.com", true }, { "directholidaysme.com", true }, - { "directholidaysuae.com", true }, { "directhomeremodelinginc.com", true }, { "directinspectionskc.com", true }, + { "directions.ee", true }, { "directlendingsolutions.com", true }, { "directlinkfunding.co.uk", true }, { "directlook.tk", true }, { "directly.ga", true }, { "directmailctr.com", true }, - { "directme.ga", true }, { "directmedica.fr", true }, { "directnews.be", true }, + { "directnic.com", true }, { "directories.cf", true }, { "directorioempresarial.com.co", true }, { "directoriomedico.com.co", true }, { "directorios.tk", true }, { "directoriostelefonicos.com", true }, + { "directorioweb.co", true }, { "directorioz.com", true }, { "directorwebseo.tk", true }, { "directory-aldo.tk", true }, @@ -36101,7 +42209,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "directoryg.com", true }, { "directoryworld.tk", true }, { "directpaydayloansonline.ga", true }, - { "directreal.sk", true }, + { "directright.ca", true }, + { "directright.com", true }, + { "directright.net", true }, + { "directrightcartage.com", true }, { "directspa.fr", true }, { "directstreet.tk", true }, { "directtwo.solutions", true }, @@ -36109,17 +42220,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "directvacations.com", true }, { "directveilig.nl", true }, { "directverify.in", true }, - { "direitonovo.com", true }, + { "directview.ddns.net", true }, + { "direitonovo.com", false }, { "direj.tk", true }, { "direktvermarktung-schmitzberger.at", true }, { "diretonoponto.gq", true }, + { "diretoriodeempresas.net", true }, { "direwolfsoftware.ca", true }, { "dirhami.com", true }, + { "dirigentesdigital.com", true }, { "dirk-dogs.tk", true }, { "dirk-weise.de", true }, - { "dirkdoering.de", true }, + { "dirkdavid.org", true }, { "dirki.tk", true }, { "dirkjonker.nl", true }, + { "dirkkok.nl", true }, + { "dirkmurschall.de", true }, { "dirko.net", false }, { "dirkwolf.de", false }, { "dirot7.co.il", true }, @@ -36127,6 +42243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dirtcraft.ca", true }, { "dirtinmyshoes.com", true }, { "dirty-tina.net", true }, + { "dirtyboyreviews.com", true }, { "dirtycat.ru", true }, { "dirtycode.tk", true }, { "dirtycosplay.com", true }, @@ -36142,21 +42259,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dirtyprettyartwear.com", true }, { "dirtypriscilla.com", true }, { "dirtysindy.com", true }, - { "dirtysox.ch", false }, - { "dirtysox.eu", false }, { "dirtytiles.xyz", true }, { "dirtywarez.org", true }, { "dirtywoman.tk", true }, + { "dirtywork.net", true }, { "dirunreddy.tk", true }, + { "disaana.jp", true }, + { "disability-card.com", true }, { "disability.gov", true }, { "disabilitydischarge.com", true }, + { "disabilityscoop.com", true }, { "disabled-world.com", true }, - { "disabled.dating", true }, + { "disabled.gay", true }, { "disableipv4.se", true }, { "disabuse.cf", true }, { "disadattamentolavorativo.it", true }, { "disain.tk", true }, - { "disanteimpianti.com", false }, { "disassemble.website", true }, { "disasterrific.tk", true }, { "disastertalkest.ga", true }, @@ -36174,7 +42292,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "discarsl.com", true }, { "discdash.ga", true }, { "discdash.tk", true }, + { "discgolf.com", true }, { "disch.com.de", true }, + { "discinsights.com", true }, { "disciples.io", true }, { "disciplescloud.com", true }, { "disciplesmakingdisciples.ca", true }, @@ -36198,17 +42318,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "discordextremelist.xyz", true }, { "discordghost.space", true }, { "discordhome.com", true }, + { "discordjs-japan.org", true }, { "discordservers.com", true }, { "discordsworld.tk", true }, - { "discotecamadrid.com", true }, { "discotheque.tk", true }, { "discount-course.com", true }, { "discountforelectronics.tk", true }, { "discountisolatie.nl", true }, { "discounto.de", true }, + { "discountoffice.be", true }, + { "discountoffice.nl", true }, { "discountpark.fr", true }, { "discountpokale.at", true }, { "discountpokale.de", true }, + { "discountpowertx.com", true }, { "discountravel.tk", true }, { "discounttablepads.com", true }, { "discover-mercure.com", true }, @@ -36221,19 +42344,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "discoverchinanow.ga", true }, { "discoverchinanow.gq", true }, { "discoverchinanow.ml", true }, - { "discoverelement.com", false }, { "discoverfloridasprings.com", true }, + { "discoverglo.com", true }, + { "discovergy.com", true }, { "discoverhealthage.com", false }, { "discoveringdocker.com", true }, { "discoverkeesler.com", true }, { "discoverkeesler.marketing", true }, { "discoverlutruwita.com", true }, { "discovermarbellahomes.com", true }, + { "discovermodus.com", true }, + { "discovernavajo.com", true }, + { "discoverradiance.com", true }, + { "discoverthetech.com", true }, { "discoverthreejs.com", true }, { "discoverucg.co.uk", true }, { "discovery-ls.com", true }, { "discoveryaima.com", true }, { "discoveryballoon.org", true }, + { "discoverybehavioralhealth.com", true }, { "discoveryottawa.ca", true }, { "discrede.tk", true }, { "discrypt.ca", true }, @@ -36247,8 +42376,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "disenian.com", true }, { "disenowebakus.net", true }, { "disenowebgalicia.tk", true }, + { "disenowebseoolmisur.com", true }, + { "disepho.cl", true }, { "disfigured.tk", true }, + { "disfold.com", true }, { "disguise.cf", true }, + { "dishalawfirm.com", false }, { "dishcrawl.com", false }, { "dishonorablespeechinpolitics.com", true }, { "dishwashermagic.tk", true }, @@ -36264,7 +42397,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "disinfesta.it", true }, { "disinfestando.info", true }, { "disinfestatore.roma.it", true }, - { "disinfestatori.com", true }, { "disinfestazione-roma.org", true }, { "disinfestazione.brescia.it", true }, { "disinfestazione.napoli.it", true }, @@ -36309,7 +42441,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "disinisharing.com", true }, { "disisto-schiesser.com", true }, { "disisto.de", true }, - { "disk.do", true }, + { "disisto.nl", true }, { "diskbit.com", true }, { "diskbit.nl", true }, { "diskdoctors.tk", true }, @@ -36317,6 +42449,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "disketteetikette.tk", true }, { "diskgem.info", true }, { "disking.co.uk", true }, + { "diskonkuota.com", true }, { "diskonsepatu.ga", true }, { "diskusi.cf", true }, { "diskusi.tk", true }, @@ -36326,25 +42459,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dismed.fr", true }, { "disney-stitch.com", true }, { "disneywallpapers.tk", true }, + { "disobey.net", true }, { "disoluto.tk", true }, + { "disostruzioni.it", true }, { "disougstroy.com.ua", true }, { "disparada.com.br", true }, { "dispatched.tk", true }, - { "dispatchitsolutions.com", true }, - { "dispatchitsolutions.io", true }, { "dispel-photo.com", true }, - { "dispemec.com", false }, { "dispensarygta.com", true }, - { "displayenergycertificate.co.uk", true }, { "displayrd.com", true }, + { "displaysandholders.com", true }, { "disposable.link", true }, + { "disposalqa.com", true }, { "dispur.nic.in", true }, { "disroot.org", true }, { "disrupters.ch", false }, + { "disruptglobal.com", true }, { "disruption.tk", true }, - { "dissectix.io", true }, { "dissertationhelp.com", true }, - { "dissidence.ovh", true }, { "dissident.host", true }, { "dissieux.com", true }, { "dissolution-sci.com", true }, @@ -36355,13 +42487,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "distancelove.ml", true }, { "distancelove.tk", true }, { "distant.land", true }, + { "distekinc.com", true }, { "distelbentelo.nl", true }, { "distempered.tk", true }, { "disti.com", true }, { "distiduffer.org", true }, { "distilleren.tk", true }, - { "distillery.com", true }, { "distinctdesign2009.com", true }, + { "distinguishedlegal.com", true }, { "distinguishedprisoner.com", true }, { "disto.tk", true }, { "distopias.tk", true }, @@ -36374,22 +42507,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "distractors.tk", true }, { "distratus.com", true }, { "distri.com.ua", true }, + { "distribucionmayorista.online", true }, { "distribuidoracristal.com.br", true }, { "distribuidoradecierres.com", true }, { "distribuidoraplus.com", true }, - { "distribuidorveterinario.es", true }, + { "distribuidorguarani.com.br", true }, { "distributed.cafe", true }, { "distributedsource.com", true }, { "distributedsystems.science", true }, - { "distributedweaknessfiling.org", true }, - { "distributio.net", true }, { "distributordd.com", true }, { "distributore.it", true }, { "distributori.roma.it", true }, { "district09.be", true }, { "district09.gent", true }, + { "district5marakez.com", true }, { "districtcourtislamabad.tk", true }, { "distrigenosa.tk", true }, + { "distrikia.com.co", false }, { "distrilogservices.com", true }, { "distrim.pt", true }, { "distrim2.pt", true }, @@ -36401,8 +42535,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "distrophy-grind.tk", true }, { "distrust.co", true }, { "disturbedwarriors.tk", true }, + { "disturbmenot.co", true }, { "dit.moe", true }, { "ditdot.hr", true }, + { "dite.lol", true }, { "ditec.sk", true }, { "diterzafra.tk", true }, { "ditex.ddns.net", true }, @@ -36412,11 +42548,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dittvertshus.no", true }, { "div12.org", true }, { "divacresent.tk", true }, - { "divanmsk.ru", true }, + { "divanogiusto.it", true }, { "divari.nl", true }, + { "divas.joburg", true }, { "divatri.tk", true }, + { "divband.com", false }, { "divcoder.com", true }, { "dive-japan.com", true }, + { "divedigital.id", true }, { "divegearexpress.com", true }, { "divegearexpress.net", true }, { "diveidc.com", true }, @@ -36425,6 +42564,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "divelyon.fr", true }, { "diveplan.org", true }, { "diver-equipment.eu", true }, + { "divergences.eu.org", true }, + { "divernet.com", true }, { "diverscott.com", true }, { "diversificarte.com", true }, { "diversify.cf", true }, @@ -36432,24 +42573,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diversity-otherwise.tk", true }, { "diversityflags.com.au", true }, { "diversityflags.nz", true }, + { "diversitywatch.asia", false }, { "diversitywatch.co.nz", true }, { "diversovariable.tk", true }, + { "diversual.com", true }, { "divertidores.tk", true }, + { "divestos.org", true }, { "divewithfrank.com", true }, - { "divi-experte.de", true }, + { "divicar.com.br", true }, { "dividedstates.tk", true }, { "dividendosfiis.com.br", true }, { "dividendz.net", true }, { "divider.tk", true }, { "divienna.nl", true }, { "diviflash.com", true }, + { "divigear.com", true }, + { "divihosting.nl", true }, { "divinasaiamodas.com.br", true }, { "divineangel.tk", true }, - { "divinecnainstitute.com", true }, { "divinedecay.tk", true }, + { "divinefeminineyoga.com", true }, { "divinegames.studio", true }, { "divinemercyparishvld.com", true }, + { "divinemercyparishvlds.com", true }, { "divinerooms.com", true }, + { "divinglive.ru", true }, { "divinho.com.br", true }, { "divinitas.tk", true }, { "divinoafeto.com.br", true }, @@ -36460,26 +42608,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "divjak.at", true }, { "divo-remont.tk", true }, { "divorce.com", true }, - { "divorceattorneyschicago.com", true }, - { "divorceattorneyshouston.com", true }, - { "divorceattorneysny.com", true }, { "divorceformsfiller.com", true }, { "divorcelawyer365.com", true }, + { "divorcemortgage.com", true }, { "divorceonline.com", true }, { "divort.org", true }, { "divstack.io", true }, + { "divviup.org", true }, { "divvy.tk", true }, { "diwei.vip", true }, { "dixa.tech", true }, + { "dixeo.fr", true }, { "dixibox.com", true }, { "dixie.com", false }, { "dixiepest.com", true }, - { "dixieweld.com", true }, - { "dixmag.com", true }, + { "dixifuar.com", true }, { "dixoncountyne.gov", true }, { "dixonmo.gov", true }, { "dixuant.com", true }, { "diy-business-marketing.co.za", true }, + { "diy-kitchens.com", true }, + { "diy-projects.info", true }, { "diyadinnet.com", true }, { "diyanetruya.tk", true }, { "diyarbakirescmagazin.tk", true }, @@ -36491,22 +42640,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "diyeventhire.co.nz", true }, { "diygeek.com", true }, { "diymediahome.org", true }, - { "diymusician101.tk", true }, + { "diyportal.info", true }, { "diysec.tk", true }, + { "diysolarforum.com", true }, { "diysonline.com", true }, { "diyzealot.com", true }, + { "diyzone.info", true }, { "dizainkyhni.ml", true }, - { "dizapra.de", true }, { "dizayn-cheloveka.ru", true }, { "dizayner.tk", true }, + { "dizhome.net", true }, { "dizihastasi.com", true }, + { "dizirix.net", true }, { "dizkartes.nl", true }, { "dizkofloor.com", true }, { "dizlexiqa.tk", true }, { "dizmatt.tk", true }, { "dizzidecalz.com.au", true }, { "dizzie.org", true }, - { "dizzieforums.com", true }, { "dizzyskills.tk", true }, { "dizzythewizard.co.uk", true }, { "dj-ac.com", true }, @@ -36523,7 +42674,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dj-phil.fr", true }, { "dj-wout.tk", true }, { "dj-x.info", true }, - { "dj16888.com", true }, { "dj16888a.com", true }, { "dj16888b.com", true }, { "dj16888c.com", true }, @@ -36539,6 +42689,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djamelkokene.com", true }, { "djamiroquai.tk", true }, { "djang.tk", true }, + { "django.baby", true }, { "django.city", true }, { "django.cyou", true }, { "djangobirthday.com", false }, @@ -36548,9 +42699,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djangosnippets.org", true }, { "djangowebstudio.com", true }, { "djanneli.tk", true }, - { "djanpana.com", false }, { "djarman.tk", true }, { "djattack.com", true }, + { "djav.org", true }, { "djawabna.ga", true }, { "djax.tk", true }, { "djazair.ml", true }, @@ -36560,12 +42711,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djbell.tk", true }, { "djbessi.tk", true }, { "djbobbytables.com", true }, - { "djboekingskantoor.nl", true }, { "djboi.tk", true }, { "djboomarang.tk", true }, { "djboris.com", true }, { "djbrixx.tk", true }, - { "djc.me", true }, { "djcaz.tk", true }, { "djcezar.tk", true }, { "djcheka.tk", true }, @@ -36583,7 +42732,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djdennis.tk", true }, { "djdiego.tk", true }, { "djduckie.tk", true }, - { "djeanepersonalorganizer.com.br", true }, { "djefsane.tk", true }, { "djembeforum.tk", true }, { "djerba-tunisie.tk", true }, @@ -36597,7 +42745,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djfrenchy.com", true }, { "djfunkyju.de", true }, { "djgarcia.tk", true }, - { "djhardy.co.uk", true }, + { "djh-nordmark.de", true }, { "djharun.tk", true }, { "djhooligan.tk", true }, { "djhouse.tk", true }, @@ -36606,7 +42754,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djichtus.tk", true }, { "djieno.com", true }, { "djinstinct.tk", true }, - { "djipanov.com", true }, { "djjacs.tk", true }, { "djjonimix.tk", true }, { "djkemal.tk", true }, @@ -36624,9 +42771,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djlove.tk", true }, { "djluca.tk", true }, { "djmafia.tk", true }, + { "djmania.es", true }, { "djmanikbd.gq", true }, - { "djmarian.com", true }, - { "djmarlongalvao.nl", true }, { "djmathew.tk", true }, { "djmetrix.tk", true }, { "djmilad.tk", true }, @@ -36636,7 +42782,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djmus.tk", true }, { "djnandoalmenara.tk", true }, { "djnash.tk", true }, - { "djnasvatbuzlin.cz", true }, { "djnefret.tk", true }, { "djnext.tk", true }, { "djnr.agency", true }, @@ -36650,6 +42795,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djpatrik.tk", true }, { "djpiere.tk", true }, { "djpippoalpar.tk", true }, + { "djprecisionmachine.com", true }, { "djpromo.tk", true }, { "djpyerr.tk", true }, { "djramage.tk", true }, @@ -36667,6 +42813,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djshivbabu.tk", true }, { "djshox.tk", true }, { "djsina.tk", true }, + { "djsintl.com", false }, { "djsk.nl", true }, { "djskippy.tk", true }, { "djslash.tk", true }, @@ -36674,6 +42821,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "djspacies.com", true }, { "djt-vom-chausseehaus.de", true }, { "djtavo.tk", true }, + { "djthibodeau.com", true }, { "djtiago.tk", true }, { "djtime.fr", true }, { "djtourist.tk", true }, @@ -36694,16 +42842,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dk.com", true }, { "dk.search.yahoo.com", false }, { "dk1818.cc", true }, + { "dkay.xyz", true }, { "dkcoks.gov", true }, { "dkcomputers.com.au", true }, { "dkdigital.tk", true }, { "dkds.us", true }, { "dkec2.space", true }, - { "dkeu.de", true }, { "dkgamers.tk", true }, { "dkids.com.br", true }, { "dkim-validator.com", true }, - { "dklao.com", true }, + { "dkma.dk", true }, { "dknoops.xyz", true }, { "dko-steiermark.ml", true }, { "dkonline.tk", true }, @@ -36716,7 +42864,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dkos7.com", true }, { "dkos8.com", true }, { "dkos9.com", true }, + { "dkproducts.nl", true }, { "dkravchenko.su", false }, + { "dksh.com", true }, { "dksinger.tk", true }, { "dksoft-2130.ddns.net", true }, { "dksoft.online", true }, @@ -36732,10 +42882,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dlagos.com", true }, { "dlagoss.com", true }, { "dlandroid24.com", true }, + { "dlatego.com", true }, { "dlbouncers.co.uk", true }, { "dlcompare.co.uk", true }, { "dlcompare.com", true }, { "dlcompare.de", true }, + { "dlcompare.fr", true }, { "dlcompare.it", true }, { "dlcompare.pt", true }, { "dlcompare.ru", true }, @@ -36744,17 +42896,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dleet.com", true }, { "dleger.space", true }, { "dlepavilion.com", true }, + { "dler.at", true }, + { "dlevans.com", true }, { "dlf.exchange", true }, { "dlfsymposium.nl", true }, { "dlg.im", true }, + { "dlgf.com", true }, { "dlitz.net", true }, { "dll4free.com", true }, { "dlld.biz", true }, { "dlld.com", true }, { "dlld.org", true }, { "dlld.us", true }, + { "dlmarket.jp", true }, { "dlmeto.com", true }, - { "dlmit.be", true }, { "dlmixcloud.com", true }, { "dlouwrink.nl", false }, { "dlp-demo.com", true }, @@ -36762,11 +42917,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dlscomputers.com.au", true }, { "dlsolutions-inc.com", true }, { "dlt.green", true }, + { "dlttrading.com", true }, { "dluxelab.com", true }, + { "dlv-registry.com", true }, + { "dlv-registry.net", true }, + { "dlv-registry.org", true }, { "dlyabega.tk", true }, { "dlyaribalki.tk", true }, { "dlyatepla.ml", true }, { "dlyl888.com", true }, + { "dm-0.com", true }, + { "dm-918kiss.com", true }, { "dm-drogeriemarkt.ba", false }, { "dm-drogeriemarkt.bg", false }, { "dm-drogeriemarkt.it", false }, @@ -36774,12 +42935,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dm-ppp.jp", true }, { "dm-tools.co.uk", true }, { "dm.at", false }, + { "dm.cw", true }, { "dm.cz", false }, { "dm.de", false }, { "dm.hr", false }, { "dm.hu", false }, - { "dm.link", true }, - { "dm.lookout.com", false }, { "dm.mk", false }, { "dm.pl", false }, { "dm.rs", false }, @@ -36788,17 +42948,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dm4productions.com", true }, { "dm6.co", true }, { "dm7ds.de", true }, + { "dm8.link", true }, { "dmaglobal.com", true }, { "dmarc-hd.org", true }, - { "dmarc.com", true }, { "dmarc.dk", true }, { "dmarc.io", true }, - { "dmarc.tech", true }, { "dmarcian.com", true }, + { "dmarcpal.com", true }, { "dmartpreneur.com", true }, { "dmautomek.no", true }, { "dmc-cc.de", true }, { "dmc-commerce-consultants.de", true }, + { "dmc.ae", true }, { "dmc.cc", true }, { "dmc030.de", true }, { "dmccommerceconsultants.de", true }, @@ -36806,12 +42967,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dmcw.de", true }, { "dmd.lv", true }, { "dmdata.jp", true }, + { "dmdc.mil", true }, { "dmdd.org.uk", true }, { "dmdiamonds.tk", true }, { "dmdpayroll.com", true }, + { "dme.net", true }, + { "dme.web.id", true }, { "dmehub.com", true }, - { "dmerkel.de", true }, - { "dmess.ru", true }, + { "dmesg.sk", true }, { "dmfd.net", true }, { "dmfj.io", true }, { "dmforcesupport.com", true }, @@ -36820,18 +42983,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dmfss.tv", true }, { "dmg.st", true }, { "dmhomedesign.pl", true }, + { "dmhoteles.pe", true }, { "dmhy.com", true }, { "dmi.es", true }, { "dmi.gov.lb", true }, { "dmiapis.id", true }, { "dmilb.org", true }, { "dmillerlaw.com", true }, - { "dmitriid.com", true }, + { "dmitryg.name", true }, { "dmitrysnotes.ru", true }, { "dmitrysyrov.com", true }, { "dmix.ca", true }, { "dmlaser.nl", true }, - { "dmlogic.com", true }, + { "dmlive.wiki", true }, { "dmma.be", true }, { "dmmedya.com", true }, { "dmmkenya.co.ke", false }, @@ -36840,17 +43004,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dmni.my", true }, { "dmoj.ca", true }, { "dmosk.ru", true }, - { "dmoutlet.com.br", true }, { "dmparish.com", true }, { "dmr446.fr", true }, { "dmshynk.com", true }, + { "dmslog.com", true }, + { "dmslog.com.br", true }, + { "dmtcustoms.co.za", true }, + { "dmu.ac.ae", true }, { "dmvhomesgroup.com", true }, + { "dmvivienda.pe", true }, + { "dmvjacks.com", true }, { "dmwall.cn", true }, { "dmwaste.com", false }, { "dmwclan.tk", true }, { "dmx.xyz", true }, { "dmxclan.tk", true }, - { "dmxledlights.com", true }, + { "dmz.rs", true }, { "dmze.tk", true }, { "dmzlab.se", true }, { "dn3s.me", true }, @@ -36858,36 +43027,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dna-technology.ua", true }, { "dna.li", false }, { "dnabler.eu", true }, - { "dnacloud.pl", true }, - { "dnakids.co.uk", true }, + { "dnadk.com", true }, { "dnalounge.com", true }, { "dnapagamentos.com.br", true }, { "dnapizza.com", true }, { "dnash.tk", true }, + { "dnastaffinginc.com", true }, { "dnb.co.in", true }, + { "dnb.no", true }, + { "dnb.se", true }, { "dnc.org.nz", true }, { "dndblog.tk", true }, { "dnddobbelstenen.nl", true }, - { "dndr.se", true }, { "dndtools.net", true }, { "dnel.me", true }, { "dneprfilm.top", true }, { "dnepropetrovck.tk", true }, { "dneprovski.tk", true }, { "dnestr.tk", true }, + { "dnevnichok.club", true }, { "dnfc.rocks", true }, { "dnfsb.gov", true }, { "dngrexplorer.cf", true }, - { "dnhome.uk", true }, + { "dngsnl.com", true }, + { "dnhome.net", false }, + { "dnhome.uk", false }, + { "dnjwpa.com.pl", true }, { "dnk.company", true }, { "dnmlab.it", true }, - { "dnms.com", true }, { "dnns.no", true }, { "dnplegal.com", true }, + { "dnpprogramstudies.com", true }, { "dnratthee.me", true }, { "dnrt-esports.nl", true }, { "dns-check.nl", false }, { "dns-control.eu", true }, + { "dns-free.link", true }, { "dns-swiss.ch", true }, { "dns.expert", true }, { "dns.google.com", true }, @@ -36895,6 +43070,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dns.sh", true }, { "dnsaio.com", true }, { "dnsbird.org", true }, + { "dnsbl-servers.org", true }, { "dnscaa.com", true }, { "dnscrawler.com", true }, { "dnscrypt-blacklist.tk", true }, @@ -36905,6 +43081,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dnsecho.net", true }, { "dnsecho.org", true }, { "dnshallinta.fi", true }, + { "dnshelper.com", true }, + { "dnshotel.dk", true }, { "dnsinfo.ml", true }, { "dnsipv6.srv.br", false }, { "dnskeep.com", true }, @@ -36914,12 +43092,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dnslytics.com", true }, { "dnsman.se", true }, { "dnsmate.net", true }, + { "dnsnox.com", true }, { "dnspod.ml", true }, { "dnspropagation.net", true }, { "dnsrate.com", true }, + { "dnsrevolve.com", true }, + { "dnsscience.org", true }, { "dnssecandipv6.se", true }, { "dnssecunsigned.com", true }, { "dnssex.com", true }, + { "dnsspeed.com", true }, { "dnstwister.report", true }, { "dnsvrfy.com", true }, { "dnsvrfy.eu", true }, @@ -36930,25 +43112,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dnvod.ml", true }, { "do-do.tk", true }, { "do-it-service.de", true }, + { "do-not.click", true }, { "do-prod.com", false }, + { "do.gd", true }, + { "do.ne", true }, { "do.search.yahoo.com", false }, { "do13.net", true }, { "do67.de", true }, { "do67.net", true }, { "doanhai.tk", true }, + { "doanhnhankhanhhoa.vn", false }, + { "dob46.mazowsze.pl", true }, { "dobavki.club", true }, { "dobbshvac.com", true }, { "dobledemichaeljackson.tk", true }, + { "doblejewel.shop", true }, { "dobleseo.pro", true }, { "dobookmark.ml", true }, + { "doboszynski.com", true }, { "dobramagia.pl", true }, { "dobraprace.cz", false }, - { "dobrazdrava.ru", true }, { "dobrekupony.cz", true }, { "dobrekupony.pl", true }, { "dobrekupony.sk", true }, { "dobreoknaszczecin.pl", true }, - { "dobreprogramy.pro", true }, { "dobrev.family", true }, { "dobrinya.tk", true }, { "dobrisan.ro", true }, @@ -36956,7 +43143,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dobro.ml", true }, { "dobrodar.tk", true }, { "dobrodruzi.tk", true }, - { "dobryautoskup.pl", true }, { "dobrynyastyle.ru", true }, { "dobryprezident.sk", true }, { "doc-baza.tk", true }, @@ -36964,21 +43150,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doc.new", true }, { "doc.python.org", true }, { "doc.to", false }, + { "doc8643.com", true }, { "docabo.ch", true }, - { "docassure.de", true }, { "docbox.ch", true }, { "docbrown.dk", true }, { "doccafe.com", true }, - { "docdoc.ru", true }, { "docdoc.tel", true }, { "docedic.com", true }, { "docemeldoces.com", true }, { "docertify.com", false }, { "docesmartini.com.br", true }, + { "docguide.com", true }, { "docha.tk", true }, { "dochimera.com", true }, { "dochub.com", true }, { "dock-bar.com", true }, + { "dock.tech", true }, { "dockerbook.com", false }, { "dockerm.com", true }, { "dockerup.net", true }, @@ -36989,11 +43176,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doclassworks.com", true }, { "docline.gov", true }, { "docloudu.info", true }, - { "docmartinchiropractic.com", true }, + { "doclub.uz", true }, + { "doclures.com", true }, { "docmode.org", true }, { "docogo.ga", true }, - { "docpc86.fr", true }, - { "docpile.cloud", true }, { "docplexus.com", true }, { "docpost.ml", true }, { "docroms.com", true }, @@ -37007,45 +43193,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "docsunited.net", true }, { "docswallet.com", true }, { "doctabaila.com", true }, + { "doctaforum-diferidos.com", true }, + { "doctaforum-events.org", true }, + { "doctaforum-test.com", true }, { "docteur-delorme.fr", true }, + { "doctoblog.fr", true }, { "doctor-locks.co.uk", true }, - { "doctor.dating", true }, { "doctor360.com.au", true }, - { "doctorapuestas.com.es", true }, { "doctorbini.com", true }, { "doctorcalefon.com", true }, + { "doctordabbah.com", true }, { "doctorebonie.com", true }, { "doctorfox.co.uk", true }, { "doctoriko.tk", true }, { "doctoripfix.com", true }, + { "doctorkaraca.com", true }, { "doctorlab.am", true }, { "doctormahamudul.tk", true }, { "doctormartinclavo.tk", true }, { "doctornaima.ml", true }, { "doctornet.ml", true }, + { "doctorofnursingpracticednp.org", true }, { "doctorpage.info", true }, { "doctorperu.com", true }, - { "doctorpluss.com", true }, { "doctorpower.ga", true }, { "doctorpup.com", true }, { "doctorradio.tk", true }, { "doctorsarfarazdo.ga", true }, { "doctorshealthfund.com.au", true }, + { "doctorsinternet.com", true }, + { "doctorswithoutborders.org", true }, { "doctorwho.cz", true }, { "doctour.eu", true }, { "doctour.fr", true }, + { "doctrine.fr", true }, { "docu.io", true }, { "docubox.info", true }, - { "docuconta.es", true }, { "docucopies.com", true }, { "docufiel.com", false }, + { "docugate.cloud", true }, + { "docugatetest.cloud", true }, { "documaniatv.com", true }, + { "document-translation-nationwide.com", true }, + { "documentalista.cat", true }, { "documentat.ga", true }, { "documentations-sociales.com", true }, { "documentforce.com", true }, { "documentnode.io", true }, { "documods.com", true }, { "docupaymentuat.xyz", true }, + { "docupub.com", true }, { "docusearch.com", true }, { "docusend.biz", true }, { "docusign.ca", true }, @@ -37060,6 +43257,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "docusign.jp", true }, { "docusign.mx", true }, { "docusign.nl", true }, + { "docutayho.com", true }, { "docxtemplater.com", true }, { "doczlo.tk", true }, { "doda.space", true }, @@ -37073,17 +43271,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dodgecountyne.gov", true }, { "dodgevillewi.gov", true }, { "dodi-alhelo.tk", true }, + { "dodi-repacks.site", true }, { "dodiedods.fr", true }, { "dodikod.tk", true }, { "dodolle.co.uk", true }, - { "dodomy.com.ua", true }, - { "dodotek.digital", true }, + { "dodotool.ru", true }, { "doedelzakken-jsh.tk", true }, { "doegirls.com", true }, { "doehle-group.com", true }, { "doeleman.nl", true }, { "doencadobeijo.com", true }, { "doener-curator.com", true }, + { "doenets.lk", true }, { "doenjoylife.com", true }, { "doeprojects.com", true }, { "doeren.com", true }, @@ -37092,31 +43291,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doesinfotech.com", true }, { "doesmycodehavebugs.today", true }, { "doetwat.nl", true }, + { "dof.gov.ph", true }, { "dofashion.tk", true }, + { "dofedex.com", true }, { "dofus-aide.tk", true }, { "dofus.market", true }, { "dofuspvp.com", false }, { "dofux.org", true }, { "dog-likeeyes.tk", true }, { "doga.tk", true }, - { "dogable.net", true }, { "dogadayiz.net", true }, + { "dogadostuambalaj.com", true }, + { "dogaicincal.com", true }, { "dogalsoyamumu.com", true }, { "dogan.ch", false }, { "doganoglu.net", true }, - { "dogcam.tk", true }, { "dogcat.vn", false }, + { "dogchina.com", true }, { "dogcratereview.info", true }, { "dogday.tk", true }, { "dogdayafternoons.biz", true }, { "doge-fa.tk", true }, { "doge.town", true }, { "dogear.ch", false }, + { "dogecdn.wtf", true }, { "dogecoinnews.net", true }, { "dogecoinnews.org", true }, { "dogespeed.gq", true }, { "dogespeed.ml", true }, - { "dogfencehamptonroads.com", true }, { "dogfights.tk", true }, { "dogforum.de", true }, { "dogfriendly.co.uk", true }, @@ -37128,7 +43330,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doggo.email", true }, { "doggroomingcourse.com", false }, { "doghandling.tk", true }, - { "doghauspottery.com", true }, + { "doghousedigital.com", true }, { "doginaflat.com", true }, { "dogingtonpost.com", true }, { "dogite.org", true }, @@ -37139,6 +43341,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dogma2000.tk", true }, { "dogmagic.tk", true }, { "dogmap.jp", true }, + { "dogmazic.net", true }, + { "dogoday.com", true }, { "dogodki.today", true }, { "dogofwar.tk", true }, { "dogoo.com", true }, @@ -37152,11 +43356,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dogsite.tk", true }, { "dogsnaturallymagazine.com", true }, { "dogsnow.com", true }, + { "dogsport.org", true }, + { "dogtoetreads.com", true }, { "dogtowneastpowell.com", true }, { "dogtrack.tk", true }, - { "dogtrainermadison.com", true }, - { "dogtrainerorangecounty.com", true }, - { "dogtrainersreno.com", true }, + { "dogtrainingnaples.com", true }, { "dogualp.com", true }, { "dogvolution.com", true }, { "dogwithblog.in", true }, @@ -37165,18 +43369,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doh.pub", true }, { "doh.sb", true }, { "dohanews.co", true }, - { "dohanyok.hu", true }, { "dohertyconsulting.tk", true }, { "doi.org", true }, { "doihavetoputonpants.com", true }, + { "doinaruscior.eu", true }, + { "doineedanmdm.com", true }, { "doist.com", true }, { "doit-intl.com", true }, + { "doit.com", true }, { "doitauto.de", true }, + { "doj.gov.in", true }, + { "doja-cat.ru", true }, + { "dojah.io", true }, { "dojifish.space", true }, + { "dojihomes.vn", true }, { "dojin.nagoya", true }, { "dojki.cf", true }, { "dojki.ga", true }, { "dojki.gq", true }, + { "dojmt.gov", true }, { "dojocasts.com", true }, { "dojodigital.co.uk", true }, { "dojozendebourges.fr", true }, @@ -37189,17 +43400,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dokonline.tk", true }, { "dokspot.cf", true }, { "dokspot.ga", true }, + { "doktererectie.com", true }, { "doktorplyusheva.ml", true }, { "doku-gilde.de", true }, { "dokuboard.com", true }, - { "dokudu.com", true }, { "dokuev.ga", true }, { "dokument.tk", true }, { "dokuraum.de", true }, { "dokutech.fr", true }, { "dolbyatmosmusiclist.com", true }, { "dolce-vita-mia.tk", true }, - { "dolcerestaurant.us", true }, { "dolcesalatoweb.it", true }, { "dolcett.pw", true }, { "dolceuvita.com", true }, @@ -37208,7 +43418,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dolciariasimonini.com", true }, { "dolciterapie.com", true }, { "doldersumenzoon.tk", true }, + { "doleta.gov", true }, { "dolezalpartners.com", true }, + { "dolfotransport.com", true }, { "dolg.cf", true }, { "dolg.ga", true }, { "dolg.gq", true }, @@ -37234,7 +43446,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dollemore.com", true }, { "dollestieren.tk", true }, { "dollhouseaustralia.com", true }, - { "dollhousetoyo.com", true }, { "dolliesmaker.tk", true }, { "dolly.ga", true }, { "dollylox.tk", true }, @@ -37247,6 +43458,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dolnolinevo.tk", true }, { "dolo.tk", true }, { "dolomititour.com", true }, + { "dolonki.beauty", true }, { "doloresvictoria.com", true }, { "dolorism.com", true }, { "dolph.de", true }, @@ -37272,46 +43484,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "domain-comparison.com", true }, { "domain-ermittlung.de", true }, { "domain-skachat.cf", true }, - { "domain-speicher.com", true }, - { "domain-speicher.de", true }, { "domain-swiss.ch", true }, { "domain.ch", true }, - { "domain001.info", true }, { "domaine-aigoual-cevennes.com", true }, + { "domainedemanville.fr", true }, { "domainedemiolan.ch", false }, { "domainevanina.fr", true }, { "domainexpress.de", false }, { "domainforfree.gq", true }, - { "domainhacks.io", true }, + { "domainforvalidation.com", true }, { "domainhostingcompany.tk", true }, { "domainics.ml", true }, + { "domainify.ca", true }, + { "domainlions.com", true }, { "domainmonitor.net", true }, - { "domainoo.com", true }, + { "domainoo.com", false }, + { "domainoo.fr", true }, { "domainops.gov", true }, { "domainproactive.com", true }, + { "domainregistry.ie", true }, { "domains-hoarden-ist-ein-ernstes-problem-suchen-sie-sich-hilfe.jetzt", true }, { "domains.google.com", true }, { "domains.lt", true }, { "domainsearchindia.com", true }, { "domainservice.cf", true }, { "domainsetup.email", true }, - { "domainsilicon.co", true }, - { "domainsilicon.com", true }, { "domainsilk.com", true }, - { "domainspeicher.com", true }, - { "domainspeicher.one", true }, { "domainstaff.com", true }, { "domaintm.in", true }, { "domainvoider.cf", true }, { "domakidis.com", true }, { "domarkperu.com", true }, - { "domashnie-zhiwotnye.ru", true }, { "domashnij-pk.ru", true }, { "domashnijpk.ru", true }, { "domashniy-server.tk", true }, { "domaxpoker.com", true }, { "domaza.gq", true }, { "domaza.ml", true }, + { "domcc.tel", true }, { "domeconseil.fr", true }, { "domein-direct.com", true }, { "domein-direct.nl", true }, @@ -37324,22 +43534,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "domenick-lieneweg.de", true }, { "domenico.lviv.ua", true }, { "domenicods.tk", true }, - { "domessraw.cz", true }, - { "domfee.com", true }, { "domhaase.me", true }, + { "domharmonia.bg", true }, { "domhos.tk", true }, { "domialt.de", true }, { "domian.cz", true }, { "dominanta-law.com", true }, { "dominateyourmarket247.com", true }, { "dominationgame.co.uk", true }, + { "dominatorauckland.co.nz", true }, { "dominctheroofguy.com", true }, { "dominguezchiropractic.com", true }, { "dominicana-lux.cf", true }, { "dominicandfelixroco.tk", true }, { "dominicanisimo.tk", true }, + { "dominicanmobility.com", false }, { "dominicanosenpr.com", true }, { "dominichoward.tk", true }, + { "dominicinc.com", true }, { "dominicjackson.cf", true }, { "dominicjackson.ga", true }, { "dominicjackson.gq", true }, @@ -37353,9 +43565,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dominikaner-vechta.de", true }, { "dominikconrads.de", true }, { "dominioanimal.com.br", true }, + { "dominionlending.ca", true }, + { "dominionpayroll.net", true }, { "dominiopruebados.ml", true }, { "dominiostk.tk", true }, { "dominique-haas.fr", false }, + { "domino.com.ge", true }, { "domino99.ml", true }, { "domino99.tk", true }, { "dominobot.ir", true }, @@ -37363,6 +43578,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dominoknihy.cz", false }, { "dominolessons.ga", true }, { "dominomatrix.com", true }, + { "dominoqq.asia", true }, { "dominoz.tk", true }, { "domitori.tk", true }, { "domix.fun", true }, @@ -37370,43 +43586,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "domjh.com", true }, { "domkiwgrodku.pl", true }, { "domlist.tk", true }, - { "dommascate.com.br", true }, + { "dommaster.info", true }, + { "dommistrza.pl", true }, { "dommod.tk", true }, { "domnaslonecznej.pl", true }, { "domob.eu", true }, { "domodeco.fr", true }, - { "domop.net", true }, + { "domofon.io", false }, + { "domokode.ru", true }, { "domop.org", true }, + { "domoplus.ca", true }, { "domostroiy.tk", true }, - { "domostroydon.ru", false }, - { "domostroynn.ru", false }, - { "domostroyrf.ru", false }, - { "domoticzfaq.ru", true }, - { "domotiquedomoplus.ca", true }, + { "domostroydon.ru", true }, + { "domostroynn.ru", true }, + { "domostroyrf.ru", true }, + { "domotics101.com", true }, { "domovik-magz.tk", true }, { "domovitae.io", true }, - { "domovitae.nl", true }, { "domowe-potrawy.pl", true }, { "domowejroboty.pl", true }, { "domowezrodlozdrowia.pl", true }, { "domp.pl", true }, { "domparts.com.au", true }, + { "dompetdhuafa.org", true }, { "domprojects.com", true }, + { "domps.fr", true }, { "domreg.lt", true }, - { "domrotang.ru", false }, { "domsamogona.ru", true }, { "domscripting.com", true }, + { "domt.com", true }, + { "domu.ro", true }, { "domucmayintainha.com.vn", true }, { "domus-global.com", true }, { "domus-global.cz", true }, { "domus-rely.com", true }, { "domyassignments.com", true }, { "domycasestudy.com", true }, + { "domycoding.com", true }, { "domycoursework.com", true }, { "domycreativewritings.com", true }, { "domydissertations.com", true }, { "domyessay.net", true }, - { "domyessays.com", true }, { "domyhomework123.com", true }, { "domyhomeworks.net", true }, { "domyiadaptacje.pl", true }, @@ -37428,12 +43648,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "donalblaney.ga", true }, { "donalblaney.gq", true }, { "donaldduck.nl", true }, - { "donaldjenkins.com", true }, { "donaldm.co.uk", true }, { "donaldtrump.ga", true }, { "donaldwarner.com", true }, { "donamflor.com", true }, { "donarmany.online", true }, + { "donat.cloud", true }, { "donate.lol", true }, { "donateabox.org", true }, { "donateaday.net", true }, @@ -37441,9 +43661,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "donation.ph", true }, { "donationexecutor.com", true }, { "donazione.it", true }, + { "doncastermoneyman.com", true }, { "dondiabolo.com", true }, { "dondibogusky.com", true }, { "donec.tk", true }, + { "donedeal.co.uk", true }, + { "donedeal.ie", true }, + { "donedealtest.com", true }, + { "doneinteriorerp.com", true }, { "donera.tk", true }, { "donewhen.email", true }, { "donewhen.eu", true }, @@ -37452,23 +43677,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "donewhen.org", true }, { "donfelino.tk", false }, { "donga.tk", true }, + { "dongbd.com", true }, { "dongcdn.com", true }, + { "dongchenyue.art", true }, { "donge.fr", true }, + { "donghanh.com.vn", true }, { "donghochinhhang.store", true }, { "donghua-europe.com", true }, + { "donghuapiandaquan.com", true }, { "dongjian.com", true }, - { "dongngu.com", true }, + { "dongkepu.com", true }, { "dongor.tk", true }, - { "dongxuwang.com", true }, { "donhoward.org", false }, - { "donia-almla3b.com", true }, + { "doninformatico.ga", true }, { "doniramdoni.tk", true }, { "donislawdev.com", true }, + { "donkerslootjes.nl", true }, { "donkeytrekkingkefalonia.com", true }, { "donnaandscottmcelweerealestate.com", true }, { "donnabrothers.com", true }, { "donnacha.blog", true }, { "donnachie.net", true }, + { "donnahay.com.au", true }, { "donnapepe.tk", true }, { "donner-reuschel.de", true }, { "donnerhollenconstruction.com", true }, @@ -37476,17 +43706,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "donngle.com", true }, { "donnons.org", false }, { "donnoval.ru", false }, + { "donorscape.com", true }, { "donostiweb.tk", true }, + { "donotcall.gov", true }, { "donotdepart.com", true }, { "donpanda.cz", true }, + { "donpi.it", true }, { "donpietraos.tk", true }, + { "donplafon.ru", true }, { "donpomodoro.com.co", true }, + { "donquix.nl", true }, { "donselaarbouw.nl", true }, { "donsremovals.com.au", true }, { "dont.re", true }, { "dont.watch", true }, { "dontasktoask.com", true }, { "dontbeevil.com", true }, + { "dontbreakme.com", true }, { "dontbubble.me", true }, { "dontcageus.org", true }, { "donteaetcrayons.tk", true }, @@ -37512,7 +43748,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dontkillspike.tk", true }, { "dontpayfull.com", true }, { "dontstopcoffee.com", true }, - { "donttrust.me", true }, + { "dontvisit.me", true }, + { "dontwastethewood.com", true }, { "donumanimo.pl", true }, { "donutcompany.co.jp", true }, { "donwhen.com", true }, @@ -37524,39 +43761,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "donwilkssculptor.com", true }, { "dooby.fr", true }, { "doodle.com", true }, + { "doodlecorn.com", true }, { "doodlegames.tk", true }, { "doodung.com", true }, - { "dookhtaniha.ir", true }, { "doolac.com", true }, { "dooleylabs.com", true }, - { "doom.fm", true }, { "doomsdaymag.tk", true }, { "doomsworld.com", true }, { "doomtech.net", true }, + { "doonvalleytrail.co.uk", true }, { "doooooops.com", true }, { "doop.im", true }, { "doorchaser.tk", true }, { "doordash.com", true }, + { "doordash.news", true }, { "doordash.red", true }, { "doordecor.bg", true }, { "doorframe.com", true }, - { "doorhandlese.com", true }, { "doorin.tk", true }, { "doorlinekktc.tk", true }, { "doornmore.com", true }, { "doors-and-windows.tk", true }, { "doorservice.ml", true }, - { "doorshingekit.com", true }, - { "doorswest.net", true }, - { "doortim.nl", true }, + { "doorsystemsweden.se", true }, { "doortodoor.ml", true }, + { "doottrucks.com.au", true }, { "dopamine.tk", true }, { "dopefile.cf", true }, { "dopefile.tk", true }, + { "dopei.com", true }, + { "dopeillustrators.com", true }, { "dopesoft.de", true }, { "dopewars.tk", true }, + { "dopfer-fenstertechnik.de", true }, { "dopiatku.pl", true }, - { "dopigo.com", true }, { "doppeleinhorn.de", true }, { "doppenpost.nl", true }, { "doppler.com", true }, @@ -37568,17 +43806,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doradocomputer.com", true }, { "dorados.tk", true }, { "doradoscampeon.tk", true }, - { "doradosystems.es", true }, - { "doradosystems.ro", true }, { "doraemonchile.tk", true }, { "dorama.gq", true }, { "doramamusic.gq", true }, { "doramiru.com", true }, { "doranobi-fansub.id", true }, + { "dorcelvision.com", true }, { "dorco.be", true }, { "dordtpas.nl", true }, - { "doreyaromatherapy.com", true }, - { "dorfbrunnen.eu", true }, + { "dorfbrunnen.eu", false }, { "dorfkultur.net", true }, { "dorfpark-falkenburg.de", true }, { "dorfzittig.de", true }, @@ -37586,45 +43822,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doriangirod.ch", false }, { "dorianharmans.nl", true }, { "dorianmuthig.com", true }, + { "doriansgypsylife.com", true }, + { "doridev.com", true }, { "doridian.com", true }, { "doridian.de", true }, { "doridian.net", true }, { "doridian.org", true }, { "dorier-digiplace.com", true }, + { "dorisdeluxe.com", true }, { "dorizonline.tk", true }, { "dorkface.tk", true }, + { "dorksideoftheforce.com", true }, { "dorly.blog", true }, { "dormi.hu", true }, + { "dormilaine.fr", true }, { "dorminyeremenyjatek.hu", true }, { "dormirmucho.com", true }, { "dormitengernyikaland.hu", true }, { "dormiu.com", true }, { "dormiu.com.br", true }, { "dormkitty.com", true }, - { "dornhecker.me", true }, - { "dornikaweb.com", true }, + { "dornes.eu", true }, { "dorogaminina.tk", true }, { "dorpshuis-dwarsgracht.nl", true }, - { "dorpshuiskesteren.nl", true }, + { "dorpshuiskesteren.nl", false }, { "dorpsoverlegboskoop.nl", true }, { "dorpsparade.tk", true }, { "dorquelle.com", true }, + { "dorrtownshipmi.gov", true }, { "dorsavi.com", true }, { "dorsaycreative.com", true }, { "dorsetentertainments.co.uk", true }, { "dorth.nl", true }, + { "dortmund.de", true }, { "dortmund.directory", true }, { "dorwartsgarage.com", true }, { "dorys.ga", true }, { "dos-team.tk", true }, { "dosavor.com", true }, { "dosbox.tk", true }, + { "dosdiasenlavida.es", true }, { "dosei.net", true }, { "dosenkiwi.at", true }, + { "dosenpendidikan.co.id", true }, { "dosenpintar.com", true }, { "dosensosiologi.com", true }, { "doserres.tk", true }, { "dosevue.com", true }, + { "dosgame.club", true }, { "dosgratus.tk", true }, { "dosimabag.com", true }, { "dosimapress.com", true }, @@ -37642,6 +43887,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dostat.de", true }, { "dostav.tk", true }, { "dostavkakurierom.ru", true }, + { "dostips.com", true }, { "dostkuijper.nl", true }, { "dosug.gq", true }, { "dosug.so", true }, @@ -37659,19 +43905,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dosyanet.cf", true }, { "dosyanet.tk", true }, { "doszkocs-zsuzsa.hu", true }, + { "dot.la", true }, { "dot.sb", true }, - { "dot42.no", true }, + { "dota2expert.ru", true }, { "dota2free.tk", true }, - { "dota2huds.com", true }, { "dotadotaman.tk", true }, { "dotatic.com", true }, - { "dotbigdeal.com", true }, { "dotbox.org", true }, { "dotcircle.co", true }, + { "dotcomdesigns.biz", true }, { "dotcomtest02-single.azurewebsites.net", true }, { "dotconnor.com", false }, { "dotfile.tk", true }, + { "dotflo.io", true }, { "dotgov.gov", true }, + { "dothaneagle.com", true }, { "dotheevolution.tk", true }, { "dothegangnamstyle.tk", true }, { "dothesecurity.com", true }, @@ -37679,18 +43927,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dotjesper.dk", true }, { "dotjesper.net", true }, { "dotjs.party", true }, + { "dotker.com", true }, { "dotkniseandroida.cz", true }, { "dotkod.pl", true }, + { "dotlab.net", true }, + { "dotlab.nl", true }, { "dotlakevillagecouncil-nsn.gov", true }, + { "dotlaw.co", true }, { "dotless.tk", true }, { "dotlight.ga", true }, { "dotlimino.tk", true }, { "dotneko.net", true }, { "dotnetdocs.ir", true }, + { "dotnetfoundation.org", true }, { "dotnetsandbox.ca", true }, + { "dotnext.co.za", true }, + { "dotovh.ovh", true }, { "dotphoto.com", true }, { "dotplex.com", true }, { "dotpoint.ga", true }, + { "dotprime.by", true }, { "dotrel.com", false }, { "dotridmeto.cz", true }, { "dotrox.net", true }, @@ -37700,10 +43956,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dotsiam.in.th", true }, { "dotsmesh.com", true }, { "dottore.roma.it", true }, + { "dottoreugeniocesari.it", true }, { "dottormarc.it", true }, + { "dotweb.com", true }, + { "dotxyz.lol", true }, { "dotya.ml", true }, { "dotyk-snov.tk", true }, { "dotyk.me", true }, + { "dotzauer-stb.de", true }, { "douai.me", true }, { "douban.city", true }, { "double20.gg", true }, @@ -37712,14 +43972,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doublebass-solo.com", true }, { "doubled.ml", true }, { "doubledranch.tk", true }, - { "doublefriverranch.com", true }, { "doublefun.net", true }, { "doubleness.gq", true }, + { "doublespeak.chat", true }, { "doublestat.me", true }, + { "doubletex.de", true }, { "doubleup.com.au", true }, { "doubleupgaming.tk", true }, { "doublewide.tk", true }, { "doublewood.tk", true }, + { "doubllexchange.com", true }, + { "doubllexchange.site", true }, + { "doubllexchange.website", true }, { "doubly.tk", true }, { "doubtaboutwill.org", true }, { "douceurcarlet.com", true }, @@ -37728,6 +43992,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doughstory.cf", true }, { "douglas-ma.gov", true }, { "douglascounty-oregon.gov", true }, + { "douglascountybar.com", true }, { "douglascountycolorado.gov", true }, { "douglascountyga.gov", true }, { "douglascountyil.gov", true }, @@ -37735,20 +44000,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "douglascountyor.gov", true }, { "douglascuddletoy.com", true }, { "douglascustodio.com.br", true }, + { "douglasgreenberg.org", true }, { "douglasmi.gov", true }, { "douglasresende.tk", true }, { "douglasrumbaugh.com", false }, + { "douglassimons.com", true }, { "douglegomovie.tk", true }, { "dougley.com", true }, + { "dougsnugs.love", true }, { "doujin-domain.cz", true }, { "doujin.nagoya", true }, + { "doujinrepublic.com", true }, { "doujinshi.info", true }, { "doujinspot.com", true }, - { "douvan.com", true }, { "douzer.de", true }, { "douzer.earth", true }, { "douzer.industries", true }, { "dovebuttare.it", true }, + { "doveconviene.it", true }, { "dovecraft.com.ua", true }, { "doveholesband.co.uk", true }, { "dovemoe.com", true }, @@ -37764,20 +44033,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dovizborsa.com", true }, { "dovolena-ihned.cz", true }, { "dowell.media", true }, - { "dowellconsulting.com", true }, { "dowhatmakegood.de", true }, { "dowhatyoucannow.com", true }, { "dowin.at", true }, + { "dowina.com", true }, { "dowling.nz", true }, { "dowling.tk", true }, { "down-load.dynu.net", true }, { "down.pm", true }, + { "downalarm.cz", true }, { "downandouts.tk", true }, { "downbook.org", true }, { "downestan.ga", true }, { "downfall-records.tk", true }, { "downfreak.tk", true }, { "downgratis.tk", true }, + { "download-beststream.live", true }, { "download-image.ga", true }, { "download-knigi.gq", true }, { "downloadabc.cf", true }, @@ -37785,8 +44056,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "downloadapkpokemongo.ga", true }, { "downloadapkpure.tk", true }, { "downloadasik.com", true }, - { "downloadbestapps.com", true }, { "downloadcounter-strike16.com", true }, + { "downloadfestival.co.uk", true }, { "downloadfiles.cf", true }, { "downloadforum.ml", true }, { "downloadforum.tk", true }, @@ -37796,24 +44067,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "downloadmoremousepad.ml", true }, { "downloads.zdnet.com", true }, { "downloadsoftwaregratisan.com", true }, - { "downloadsrc.com", true }, { "downloadvipgames.tk", true }, { "downrightcute.com", true }, { "downset.tk", true }, - { "downtimerobot.com", true }, + { "downthebayoucharters.com", true }, { "downtoagony.tk", true }, + { "downtoearthjewelry.com", true }, { "downtownafrica.com", true }, - { "downtownautospecialists.com", true }, + { "downtownboise.org", true }, { "downtowncharm.is", true }, + { "downtownindy.org", true }, + { "downtownla.com", true }, + { "downtownmesa.com", true }, { "downtownpdx.dog", true }, + { "downtownraleigh.org", true }, { "downtownsuiteliving.com", true }, + { "downtowntucson.org", true }, { "downtownvernon.com", true }, { "downunderporn.com", true }, { "downwithchina.com", true }, { "dox-box.eu", true }, { "doxa.tk", true }, { "doxal.ro", true }, - { "doxcelerate.com", true }, { "doxepin1.gq", true }, { "doxepinonline.gq", true }, { "doxyciclin.ga", true }, @@ -37832,48 +44107,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "doyoucheck.com", false }, { "doyoulyft.com", true }, { "doyoutax.com", false }, - { "doypacky.cz", false }, + { "doypacky.cz", true }, { "doze-cloud.tech", true }, { "dozecloud.com", true }, - { "dozens.com", true }, - { "dozepharmacy.com", true }, { "dozor.ga", true }, { "dozor.gq", true }, + { "dozor.tk", true }, { "dp-clan.tk", true }, + { "dp-films.de", true }, { "dp.cx", true }, + { "dp7.ro", true }, { "dpangerl.de", false }, - { "dpc.fr", true }, - { "dpcs.link", true }, + { "dpanosian.com", true }, + { "dpasn-afpa.fr", true }, + { "dpatyk.com", true }, + { "dpc-pca.org", true }, + { "dpc-software.de", true }, + { "dpc.ae", true }, { "dpcs.xyz", true }, { "dpd.com.pl", true }, { "dpecuador.com", true }, + { "dpereira.net", true }, { "dperson.net", true }, + { "dpeter.me", true }, { "dpfsolutionsfl.com", true }, { "dpg.no", true }, { "dphipartner.com", true }, { "dpi-design.de", true }, { "dpim.org.my", true }, + { "dpinse.com", true }, { "dpisecuretests.com", true }, { "dpjuse.tk", true }, { "dpk.es", true }, + { "dpkk.ph", true }, { "dplpmtud.com", true }, - { "dpm-ident.de", false }, - { "dpmc.govt.nz", true }, { "dpmr446.fr", true }, + { "dpoairport.au", true }, + { "dpoairport.com.au", true }, { "dpomax.com.br", true }, { "dponapratica.com.br", true }, { "dpower.tk", true }, { "dppstar.com", true }, { "dprb.biz", true }, { "dpress24.it", true }, + { "dprmp.org", true }, + { "dps.srl", true }, { "dpsg-hohenlinden.de", true }, { "dpsmassage.nl", true }, { "dpucarriersma.gov", true }, { "dpwsweeps.co.uk", true }, + { "dqempresas.es", true }, { "dqfilesonline.com", true }, - { "dr-aldebert-orthopaedie.com", true }, { "dr-amar.tk", true }, { "dr-beyer.de", true }, + { "dr-dedet.com", true }, { "dr-detailing.com", true }, { "dr-diffusion.fr", true }, { "dr-ermilov.com", true }, @@ -37886,30 +44173,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dr-mgeorgieva.com", true }, { "dr-nope.de", true }, { "dr-nosrat.tk", true }, + { "dr-notemann.de", true }, { "dr-nystroem.de", true }, { "dr-schlamminger.de", true }, + { "dr-schuessler.de", true }, { "dr-vlasak.cz", true }, { "dr-www.de", true }, { "dr.mg", true }, { "dr2dr.ca", true }, { "draadloos-besturen.nl", true }, { "draadloze-noodstop.nl", true }, + { "draagmerriecentrale.nl", true }, { "draakjefosfor.be", true }, { "drabbin.com", true }, { "drabim.org", true }, { "drace.biz", true }, { "drach.xyz", true }, { "dracheisolation.tk", true }, + { "drachenchronik.com", true }, { "drachenleder.de", true }, { "dracisvet.cz", true }, - { "dracoon.team", false }, + { "dracoon.team", true }, { "dracox.com", false }, { "dracula.city", true }, - { "draemar.com", true }, { "drafatimagarcia.com", true }, - { "draft.cards", true }, { "draftguru.com.au", true }, { "drafton.com", true }, + { "draftposts.com", true }, { "dragcave.net", true }, { "dragdroplearning.com", true }, { "dragfiles.com", true }, @@ -37934,16 +44224,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dragon95.com", true }, { "dragon98.com", true }, { "dragonballzfigures.com", true }, + { "dragonballzstore.com", true }, { "dragonbike.by", true }, { "dragonboat.ph", true }, { "dragonboatfestival.tk", true }, + { "dragonbox.de", true }, { "dragoncave.me", true }, { "dragoncityhack.tips", true }, { "dragonclean.gr", true }, { "dragonclicker.ml", true }, { "dragondekomodo.com", true }, { "dragonesymazmorras.tk", true }, - { "dragonfly.co.uk", true }, + { "dragonfly.co.uk", false }, { "dragonflycms.cf", true }, { "dragonfosfor.be", true }, { "dragonheartsrpg.com", true }, @@ -37963,49 +44255,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dragonsgate.ml", true }, { "dragonshare.tk", true }, { "dragonsorcerers.tk", true }, + { "dragonsrestcabins.com", true }, { "dragonsunited.at", true }, + { "dragonsunited.be", true }, { "dragonsunited.ch", true }, { "dragonsunited.de", true }, { "dragonsunited.eu", true }, { "dragonsunited.info", true }, + { "dragonsunited.li", true }, + { "dragonsunited.lu", true }, { "dragonsunited.net", true }, { "dragonsunited.org", true }, { "dragontail.tk", true }, + { "dragonwolfpackaquaria.com", true }, { "dragonwork.me", true }, { "dragowebdesign.com", false }, { "drahcro.uk", true }, - { "drahmedmaged.com", true }, { "drainagedirect.com", true }, - { "draintechnorthwest.net", true }, - { "draintheswampparty.com", true }, { "drainwllc.com", true }, { "drak.tk", true }, { "drake.partners", true }, { "drakecommercial.com", true }, - { "drakeluce.com", true }, { "drakencan.gq", true }, { "drakenprospero.com", false }, { "drakenson.de", true }, - { "drakfot.se", false }, + { "drakfot.se", true }, + { "drakia.com", true }, { "drakiada.tk", true }, { "drakkarbilbao.com", true }, { "draknet.eu", true }, - { "drakoraw.my.id", true }, { "draliabadi.com", false }, + { "draljarallah.com", true }, { "dralucilavolasco.com.br", true }, + { "drama-live.tv", true }, { "drama.tk", true }, { "dramacooltv.org", true }, { "dramakorea.tk", true }, { "dramaquarter.com", true }, + { "dramaqueer.ch", true }, + { "dramar.cc", true }, { "dramaslayer.ga", true }, { "dramatherapie.tk", true }, { "dramaticpeople.com", true }, { "dramyalderman.com", true }, { "dranderle.com", true }, { "drandrewarnold.com", true }, + { "drandrewlofman.com", true }, { "dranik.ga", true }, { "dranik.ml", true }, { "drankenweb.tk", true }, + { "drankkoning.nl", true }, + { "drantonov.bg", true }, { "drapeauxdespays.fr", true }, { "draper.wtf", true }, { "draperutah.gov", true }, @@ -38017,39 +44317,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dratini0.hu", true }, { "draughts64.org", true }, { "draugr.de", true }, + { "draup.com", true }, { "draussen.tk", true }, { "draw-bonus.ml", true }, { "draw.uy", true }, + { "drawbridgeconnect.com", true }, { "drawchan.org", true }, { "drawesome.uy", true }, { "drawguess.fun", true }, { "drawing.tk", true }, { "drawingcode.net", true }, + { "drawingdownthemoon.co.uk", true }, + { "drawingskill.com", true }, { "drawtwo.gg", true }, { "drawvesly.ovh", true }, { "drawxp.com", true }, - { "draycotthotel.com", true }, + { "drawzit.com", true }, + { "draycotthotel.com", false }, { "drbadnick.tk", true }, { "drbanerjeecures.in", true }, - { "drbarnabus.com", true }, + { "drbarnabus.com", false }, + { "drbarryapplegate.com", true }, { "drbenbarry.com", true }, + { "drbet.it", true }, + { "drblend.com", true }, { "drblog.tk", true }, { "drbonine.com", true }, { "drbresnick.com", true }, - { "drbriones.com", true }, { "drcardiofit.com", true }, { "drcarolynquist.com", true }, + { "drchapin.com", true }, { "drchrislivingston.com", true }, { "drchristaengelbrecht.com", true }, - { "drchristophepanthier.com", false }, + { "drchrono.com", true }, + { "drcliftonthomas.co", true }, { "drclub.tk", true }, - { "drcp.tokyo", true }, - { "drdavidricketts.com", true }, + { "drcommodore.it", true }, + { "drdca.gov", true }, { "drdeath.tk", true }, { "drdegenhart.de", true }, { "drdenisvincenzi.com.br", true }, { "drdibbus.nl", true }, { "drdipilla.com", true }, + { "drdispatch.com", true }, { "drdripplumbingsydney.com.au", true }, { "drduru.com", true }, { "dreadd.org", true }, @@ -38066,40 +44376,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dreamaholic.club", true }, { "dreamawake.tk", true }, { "dreambbs.tk", true }, + { "dreambed.com", true }, { "dreambolivia.com", true }, + { "dreambox.de", true }, { "dreamboxpro.com", true }, { "dreamcartransport.be", true }, { "dreamcast-world.tk", true }, { "dreamcatchers-events.com", true }, - { "dreamcleaningservice.com", true }, { "dreamcrack.tk", true }, + { "dreamcraft.su", true }, { "dreamdestine.com", true }, { "dreamdivers.com", true }, { "dreamelegant.ml", true }, { "dreamersgiftshopec.com", true }, { "dreamfm.gr", true }, - { "dreamhack.com", false }, { "dreamhostremixer.com", true }, + { "dreamimd.com", true }, { "dreaminformatique.tk", true }, { "dreaming.solutions", true }, { "dreaminjewelz.tk", true }, + { "dreamkids-bysiska.com", true }, { "dreamlab.co.jp", true }, { "dreamlandmagic.com", true }, + { "dreamlandsdesign.com", true }, { "dreamlifeproperty.cf", true }, + { "dreamlight.cloud", true }, { "dreamlinks.tk", true }, { "dreamlordpress.it", true }, { "dreamlux.cz", true }, { "dreamlux.sk", true }, { "dreamofice.cn", true }, - { "dreamofice.com", true }, { "dreampages.tk", true }, - { "dreamphreak.com", true }, + { "dreampointech.com", true }, { "dreamqueen.tk", true }, + { "dreamrae.net", true }, { "dreamreality.tk", true }, - { "dreams-2-reality.com", true }, - { "dreamsbythelake.com", true }, { "dreamsea.tk", true }, - { "dreamsinbits.com", true }, { "dreamsindigital.tk", true }, { "dreamsjob.cf", true }, { "dreamsofalostsoul.tk", true }, @@ -38113,17 +44425,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dreamsxxl.com", true }, { "dreamsystems.tk", true }, { "dreamtapestry.ga", true }, + { "dreamtechie.com", true }, { "dreamweavers.live", true }, + { "dreamwebmarketing.com", true }, { "dreamwork.financial", true }, { "dreamworldstudio.tk", true }, + { "dreamy-flat-lyon.fr", true }, + { "dreamyoungs.com", true }, { "dreamytheatre.com", true }, { "dreamz-staging.zone", true }, { "dreamz.com", true }, { "dreatho.com", true }, { "dreax.win", true }, + { "drechsel.xyz", true }, { "dredwerkz.tk", true }, { "dreemurr.com", true }, { "drehabkhalifa.com", true }, + { "drehpartner-werden.net", true }, { "drei01.com", true }, { "drei01.de", true }, { "drei01.technology", true }, @@ -38143,27 +44461,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drenergysaverpnw.com", true }, { "dresden-kaffee-24.de", true }, { "dresden-kaffeeroesterei.de", true }, - { "dresdener-mandelstollen.de", true }, - { "dresdens-pfefferkuchenprinzessin.de", true }, { "dresdner-christstollen-von-reimann.de", true }, { "dresdner-kaffeeroesterei.de", true }, - { "dresdner-mandelstollen.de", true }, - { "dresdner-stollen-von-reimann.de", false }, - { "dresdner-stollen.shop", true }, { "dress-cons.com", true }, { "dressabelle.tk", true }, - { "dressedinlovebridal.com", true }, + { "dresscodeny.com", true }, { "dressesbal.tk", true }, { "dressestore.tk", true }, + { "dressify.in", true }, { "dressingmaternity.fr", true }, - { "dressrose.com", true }, { "dressshopboutique.com", true }, { "dresstique.in", true }, { "dreumesshakira.tk", true }, { "drevoline.com.ua", true }, { "drew.beer", true }, { "drew.ga", true }, - { "drew.life", true }, { "drewapianostudio.com", true }, { "drewfuller.tk", true }, { "drewlearns.com", true }, @@ -38173,11 +44485,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drexelwood.com", true }, { "dreyfussplasticsurgery.com", true }, { "drezzy.it", true }, - { "drfranciscofonseca.com.br", false }, + { "drfirst.com", true }, + { "drfranciscofonseca.com.br", true }, { "drfrey.ch", false }, { "drfuhrman.com", true }, { "drgabrielschmitt.com", true }, - { "drgazeto.com.br", true }, { "drgeadsdavinci.com", true }, { "drghomi.com", true }, { "drglassgyn.com", true }, @@ -38188,6 +44500,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drheibel.com", true }, { "drherndonent.com", true }, { "drhildebrand.net", true }, + { "drhopeson.com", true }, + { "drhosting.com", true }, { "drhowardaubert.com", true }, { "drhyler.com", true }, { "drianpublishing.tk", true }, @@ -38204,6 +44518,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drighes.com", true }, { "drikaartesanato.com", true }, { "drikuansvarligt.dk", true }, + { "drill-work.com", true }, { "drill.st", true }, { "drillcalendar.ga", true }, { "drillingsupply.info", true }, @@ -38236,52 +44551,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drilster.nl", true }, { "dring.tf", true }, { "drink-team.tk", true }, + { "drinkablegifts.com", true }, { "drinkcontrolapp.com", true }, - { "drinkgas-jihlava.cz", true }, { "drinkgo.vn", true }, { "drinking.tk", true }, { "drinklife.tk", true }, { "drinkplanet.eu", true }, + { "drinks.my", true }, + { "drinksontap.co.uk", true }, { "drinkvhemp.com", true }, + { "dripnaija.com", true }, { "dripshop.live", true }, + { "drishtiias.com", true }, { "drison.com", true }, - { "drissner.me", true }, + { "drissner.me", false }, { "driv.io", true }, { "drive.google.com", true }, - { "drive.xyz", true }, + { "driveandpark.com", true }, { "driveandpark.de", true }, { "driveandpark.nl", true }, + { "drivebespokelab.media", true }, + { "drivebolt.co.uk", true }, + { "drivechat.com.au", true }, { "drivecrestwood.com", true }, { "drivedannyherman.com", true }, { "drivedavis.com", true }, { "drivedmbowman.com", true }, + { "drivedvv.ru", true }, { "driveelectric.gov", true }, { "driveexport.com", true }, - { "driveforact.com", true }, { "driveforadtransport.com", true }, { "driveforartur.com", true }, + { "driveincleveland.com", true }, { "drivemorganvanlines.com", true }, { "driven2shine.eu", true }, { "drivenes.net", true }, + { "driventheatre.com", true }, { "driventoday.com", true }, { "driveoakleytransport.com", true }, { "drivepaultransportation.com", true }, { "driver.ru", true }, { "driveral.com", true }, { "driveral.hu", true }, + { "driverhome.com", true }, { "drivermerkezi.tk", true }, { "driversandsoftware.com", true }, { "driverscollection.com", true }, - { "driverwat.ch", true }, { "drivestarfreight.com", true }, { "drivetonortheast.com", true }, + { "drivewaygateopener.com", true }, + { "drivewaymaintenance.repair", true }, { "driveyouradblockcounterup.com", true }, { "driving-lessons.co.uk", true }, { "drivingacademy.tk", true }, { "drivingcalculator.ga", true }, { "drivinginstruction.tk", true }, - { "drivingsupport.org", true }, - { "drivinhors.com", true }, { "drivio.co.uk", true }, { "drivio.uk", true }, { "drivya.be", true }, @@ -38295,19 +44619,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drizz.com.br", false }, { "drjacquesmalan.com", true }, { "drjaensch.de", true }, + { "drjaisejoy.com", true }, { "drjart.com", false }, + { "drjavadrezazadeh.com", true }, + { "drjoaquimserraodecastro.com.br", true }, { "drjoe.ca", true }, { "drjosebarrera.com", true }, { "drjulianneil.com", true }, { "drjungspine.com", true }, - { "drkansal.com", true }, + { "drk-blutspende.de", true }, + { "drkai.com.tw", true }, { "drkashany.ir", true }, { "drkazim.com", true }, { "drkhsh.at", true }, - { "drlandis.com", true }, - { "drlangsdon.com", true }, + { "drksachsen.de", true }, + { "drleoplasticsurgery.com", true }, { "drlevi.cf", true }, { "drlevi.ga", true }, + { "drliang.com.tw", true }, { "drlinkcheck.com", true }, { "drlp.link", true }, { "drlynnehinkle.com", true }, @@ -38318,14 +44647,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drmtransit.com", true }, { "drmvl.org", true }, { "drnataliejones.com", true }, + { "drnatura.fr", true }, { "drnjewels.com", true }, { "drobina.top", true }, { "drogaleste.com.br", true }, - { "drogariasantoantonio.pt", true }, { "drogariasnovafarma.com.br", true }, { "drogoz.moe", true }, { "drohnen-camp.de", true }, { "droid101.com", true }, + { "droidafrica.net", false }, { "droidandy.com", true }, { "droidapp.nl", true }, { "droidchart.com", true }, @@ -38333,12 +44663,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "droidhere.com", true }, { "droidific.com", true }, { "droidtrix.ga", true }, - { "droidtuto.com", true }, { "droidwars.tk", true }, { "droidwiki.de", true }, { "droitalecole.org", true }, + { "droitdunet.fr", true }, { "dromax.hu", true }, - { "dromotique.com", true }, { "dronalti.fr", true }, { "drone-it.net", false }, { "drone-laws.com", true }, @@ -38353,13 +44682,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dronepilotgeorgia.com", true }, { "dronepit.dk", true }, { "droneservices.com.fj", true }, + { "droneshield.com.br", true }, + { "droneson.com.br", true }, { "dronesquadcoptersales.ga", true }, { "droneup.pl", true }, + { "dronevlaming.be", true }, { "droneways.tech", true }, - { "droni.cz", true }, { "dronix.tk", true }, - { "dronografia.es", false }, - { "droobedu.com", false }, + { "dronografia.es", true }, { "droom.in", true }, { "droomhuis-in-zuid-holland-kopen.nl", true }, { "drop-zone.tk", true }, @@ -38370,9 +44700,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dropchat.ga", true }, { "dropchat.ml", true }, { "dropcop.com", true }, + { "dropden.com", true }, { "droperplus.com", true }, { "dropeverythingrecords.com", true }, - { "droplen.com", true }, + { "droply.host", true }, + { "dropmb.com", true }, { "droppia.io", true }, { "dropping-seeds.com", true }, { "dropq.nl", true }, @@ -38386,14 +44718,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "droso.dk", true }, { "drosophila.tk", true }, { "drost.la", true }, - { "drown.photography", true }, - { "drpa.ca", true }, - { "drpetersenobgynal.com", true }, + { "drought.gov", true }, { "drpetervoigt.ddns.net", true }, { "drpetervoigt.de", true }, { "drpico.com.au", true }, { "drpil.nl", true }, + { "drpost.xyz", true }, { "drpure.top", true }, + { "drpush.ru", true }, { "drrachellemeaux.com", true }, { "drradin.com", true }, { "drros.ru", true }, @@ -38402,21 +44734,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drrr.wiki", true }, { "drryanstanton.com", true }, { "drsajjadian.com", true }, + { "drsamkelojiyana.co.za", true }, { "drsamuelkoo.com", true }, { "drsejf.cz", true }, - { "drserena.com", true }, { "drshadankabiri.com", true }, { "drshefalibatra.com", true }, + { "drsimonematousek.com", true }, { "drsiv.com", true }, + { "drsmile.de", true }, { "drsoul.band", true }, + { "drspiro.com", true }, { "drsports.bet", true }, - { "drstate.ro", true }, { "drstephanieteotia.com", true }, { "drsteveart.com", true }, { "drstevenwarnock.com", true }, { "drsturgeonfreitas.com", true }, - { "drsubbio.com", true }, + { "drt.org.nz", true }, + { "drtanyaescobedo.com", true }, { "drthalhammer.at", true }, + { "drthiagopinheiro.com.br", true }, { "drthiagorighetto.com.br", true }, { "drtimmarch.com", true }, { "drtimothysteel.com.au", true }, @@ -38425,10 +44761,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drtimothysteelresults.com", true }, { "drtimothysteelscholarship.com.au", true }, { "drtimothysteelvideos.com", true }, + { "drtragency.com", true }, + { "drtsaiclinic.com", true }, { "drtti.io", true }, { "drturner.com.au", true }, { "drubn.de", true }, { "druckerei-huesgen.de", true }, + { "drugenforcementedu.org", true }, + { "drugfreeworkplaces.com", true }, { "druggist.uk", true }, { "drugpromosers.ga", true }, { "drugs.com", true }, @@ -38439,6 +44779,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drugwars.tk", true }, { "drugzone.tk", true }, { "druides.tk", true }, + { "druidry.org", true }, { "druko.cf", true }, { "druko.ga", true }, { "druko.gq", true }, @@ -38452,6 +44793,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drunkcalc.com", true }, { "drunkendropkes.tk", true }, { "drupal.org", true }, + { "drupalfr.be", true }, { "drupalspb.org", false }, { "drusantia.net", true }, { "drusillas.co.uk", true }, @@ -38462,19 +44804,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "drwang.group", false }, { "drweissbrot.net", true }, { "drwilfredbrown.com", true }, + { "drwongsuni.com.sg", true }, { "dry-cleaning.tk", true }, { "dryashplasticsurgery.com", true }, { "dryasinakgul.com", true }, { "drybjed.net", true }, { "drybms.org", true }, - { "drybysuperior.com", true }, { "drycreekphoto.com", true }, { "drydensfairfax.com", true }, - { "drydrydry.com", true }, { "dryerrepairaustin.com", true }, { "dryerventcleaningarlington.com", true }, { "dryerventcleaningcarrollton.com", true }, - { "dryip.com", false }, { "drymx.cn", true }, { "dryskin.cf", true }, { "dryskin.ga", true }, @@ -38487,8 +44827,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dryzgov.tk", true }, { "drzhnn.com", true }, { "drziyayavuz.com", true }, - { "ds-hostingsolutions.net", true }, + { "ds-networks.at", true }, + { "ds-networks.eu", true }, + { "ds-srv.net", true }, { "ds-statistik.de", true }, + { "ds-ultimate.de", true }, { "ds.lol", true }, { "ds.me", true }, { "ds1.io", true }, @@ -38503,28 +44846,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dsaengineering.com", true }, { "dsanborndesign.com", true }, { "dsar.info", true }, - { "dsayce.com", true }, - { "dsbarnes.consulting", true }, { "dsbc.tk", true }, + { "dsblog.biz", true }, { "dscharrer.com", true }, { "dschwarzachtaler.de", true }, { "dscjobs.org", true }, { "dscsigncert.com", true }, + { "dsdlove.com", true }, + { "dsdomains.com", true }, { "dsds-ltd.com", false }, { "dse-assessments.co.uk", false }, + { "dse.com.bd", true }, { "dsebastien.net", true }, + { "dsebd.org", true }, { "dsecure.me", true }, { "dseg.org", true }, { "dsektionen.se", false }, + { "dsfc.net", true }, { "dsfzsq.com", true }, { "dsg.ac.cn", true }, { "dsg.gd.cn", true }, { "dsg.lol", true }, - { "dsg.red", true }, - { "dsg.work", true }, - { "dsgarms.com", true }, { "dsgholsters.com", true }, { "dsgnet.hu", true }, + { "dsgnwrld.com", true }, + { "dsgv.de", true }, { "dsgvo-addon.eu", true }, { "dsgvo-analyse.de", true }, { "dsgvo.name", true }, @@ -38534,6 +44880,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dsimonitor.online", true }, { "dsiteam.in", true }, { "dsjbvba.be", true }, + { "dskbank.bg", true }, { "dskrecords.tk", true }, { "dslz.tk", true }, { "dsm5.com", true }, @@ -38541,37 +44888,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dsmnet.org", true }, { "dsn-it.com", true }, { "dsn-k.com", true }, + { "dsnine.org", true }, { "dso-izlake.si", true }, + { "dsobook.club", true }, { "dsol.hu", true }, - { "dsop.com.br", true }, + { "dsorter.com.ng", true }, { "dsouzamusic.com", true }, { "dspace.pl", true }, { "dspbz.ro", true }, { "dspnor.com", true }, { "dspretoria.co.za", true }, { "dspropertyservicesltd.co.uk", true }, + { "dsr.us.com", true }, { "dsreal.de", true }, + { "dssresearch.com", true }, { "dsswise.org", true }, { "dstamou.de", true }, { "dsteiner.at", true }, + { "dstnutec.in", true }, { "dstvnearme.co.za", true }, + { "dsu4.ru", true }, { "dsuinnovation.com", true }, + { "dsv-gruppe.de", true }, { "dsv-salesmanager.de", true }, + { "dsy4567.cf", true }, + { "dsysav.com", true }, + { "dsysav.lol", true }, + { "dsysav.xyz", true }, + { "dsysav01.com", true }, { "dsyunmall.com", true }, - { "dt27.org", false }, + { "dt-privacyportal-ui.azurewebsites.net", true }, { "dt2rmc.pt", true }, { "dtbouncycastles.co.uk", true }, { "dtbw.eu", true }, { "dtbw.net", true }, { "dtbw.org", true }, { "dtconsoles.tk", true }, + { "dtdi.com", true }, { "dtdsh.com", true }, + { "dte.vn", true }, { "dtf.digital", true }, { "dtg-fonds.com", true }, { "dtg-fonds.de", true }, { "dtg-fonds.net", true }, { "dtgmns.com", true }, { "dtguide.ga", true }, + { "dths.dk", true }, { "dtinel.org", true }, { "dtk-vom-chausseehaus.de", true }, { "dtleague.eu", true }, @@ -38582,6 +44944,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dtmbx.net", true }, { "dtmbx.nl", true }, { "dtmbx.org", true }, + { "dtmedia.se", true }, { "dtmf.io", true }, { "dtmlnp.com", true }, { "dtngny.com", true }, @@ -38589,8 +44952,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dtnx.eu", true }, { "dtnx.net", true }, { "dtnx.org", true }, + { "dtnx.social", true }, { "dtnxny.com", true }, { "dtrifonov.cf", true }, + { "dtsdschoolboard.com", true }, { "dtuaarsfest.dk", true }, { "dtune.me", true }, { "dtx.sk", true }, @@ -38599,42 +44964,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dual.cat", true }, { "dual.pw", false }, { "dualascent.com", true }, - { "dualbix.com", false }, + { "dualbix.com", true }, { "dualcore.tk", true }, { "dualexistence.xyz", true }, { "dualias.xyz", false }, + { "dualize.io", true }, + { "dualuniverse.game", true }, { "duama.top", true }, + { "duan-dky.me", true }, + { "duanemorrisinstitute.com", true }, { "duanre.tk", true }, + { "duanyong.com", true }, { "duarteeleiteconsultoria.com.br", true }, - { "dubai-awards.com", true }, { "dubai-company.ae", true }, - { "dubai-coupons.com", true }, { "dubai-fashions.com", true }, - { "dubai-tickets.com", true }, + { "dubai-realestate.space", true }, + { "dubaiaerospace.com", true }, + { "dubaiaward.link", true }, { "dubaibliss.com", true }, - { "dubaicartraders.com", true }, { "dubaicourses.com", true }, - { "dubaiendeavor.com", true }, - { "dubaienquiry.com", true }, - { "dubaifastfoods.com", true }, + { "dubaifitnesschallenge.com", true }, { "dubaigrandsale.com", true }, - { "dubaipinnacle.com", true }, { "dubaiprivatejetcharter.com", true }, { "dubairanking.com", true }, - { "dubairecipes.com", true }, + { "dubairun.com", true }, + { "dubaisc.ae", true }, { "dubaishoppingcity.com", true }, - { "dubaitalents.com", true }, + { "dubaistudiocity.ae", true }, + { "dubaitourism.gov.ae", true }, { "dubaivisa.net", true }, { "dubaizone.cf", true }, - { "dubbingkursus.dk", true }, + { "dubawa.org", true }, { "dubcowa.tk", true }, + { "dubex.de", true }, { "dubious-website.com", true }, - { "dubiouscreations.com", true }, - { "dubkov.org", false }, { "dubl.tk", true }, - { "dublinhonda.com", true }, - { "dublinmazda.com", true }, + { "dublinguide.ie", true }, { "dublinrail.tk", true }, + { "dublinseocompany.ie", true }, + { "duboeuf.com", true }, { "duboisinternational.com", true }, { "duboisinvestissements.com", true }, { "dubolom.tk", true }, @@ -38663,6 +45031,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duckduck.horse", true }, { "duckduckstart.com", true }, { "duckeight.win", true }, + { "duckerings.com", true }, + { "duckeringstransport.biz", true }, + { "duckeringstransport.com", true }, { "duckfam.us", true }, { "duckfx.tk", true }, { "duckhub.io", true }, @@ -38674,12 +45045,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ducksify.com", true }, { "ducksoft.fi", true }, { "duckstad.net", true }, + { "duckyubuntu.com", true }, { "duckyubuntu.tk", true }, { "ductcare.com", true }, { "dudedood.tk", true }, { "dudeexpert.cf", true }, { "dudesunderwear.com.br", false }, + { "dudleypolicema.gov", true }, + { "dudushu.com", true }, { "due-diligence-security.com", true }, + { "duediligencedataroom.com", true }, + { "duelhost.dk", true }, { "duelingaces.com", true }, { "duellin.tv", true }, { "duelsow.eu", true }, @@ -38688,27 +45064,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duerlund-falkenberg.dk", true }, { "duerlundfalkenberg.dk", true }, { "duerme.net", true }, + { "dues-eckert.com", true }, { "duesee.org", true }, { "duesseldorf.tk", true }, { "duesseldorferheineburschenschaft.tk", true }, { "duesterhus.eu", true }, - { "duet.nl", true }, { "duffau.net", true }, { "duffdignity.tk", true }, + { "duffel.com", true }, { "dufrei.com", true }, { "dug.net.pl", true }, + { "dugehstonline.de", true }, { "duggtec.com", true }, + { "dugle80.com", true }, { "dugnet.io", false }, { "dugnet.net", false }, { "dugnet.tech", false }, { "dugongo.tk", true }, { "dugunedavet.com", true }, - { "dugwood.com", true }, { "duh.se", true }, { "duhanic.com", true }, { "duhanic.de", true }, { "duhivip.ml", true }, { "duhurensohn.de", true }, + { "duhy.sk", true }, { "duijf.info", true }, { "duijf.io", true }, { "duijfathome.nl", true }, @@ -38716,29 +45095,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duitse-herders.tk", true }, { "duizhangs.tk", true }, { "duka.bg", true }, + { "duka.com.gr", true }, { "duka.com.ro", true }, { "dukan-recepty.ru", true }, - { "dukatek.cz", true }, { "duke-nukem.tk", true }, { "dukeandduchessdrivingschool.co.uk", true }, + { "dukefox.com", false }, { "dukegat.de", false }, + { "dukeipai.org", false }, { "dukeofmetal.tk", true }, { "dukers-baelemans.nl", false }, + { "dukes-london.com", true }, + { "dukes.ca", true }, { "dukhanstore.com", true }, { "dukin.tk", true }, { "dukkanacmak.com", true }, { "dukun.de", true }, { "dulanic.com", true }, + { "dulcehome.ch", true }, { "dulceysalado.tk", true }, { "dulcinea.eu.org", true }, { "dulcinea.tk", true }, { "dulcinela.es", true }, { "dulei.si", true }, { "duleos.com.br", true }, - { "dullapp.com", true }, { "duloxetinbestellen.gq", true }, { "duloxetine.gq", true }, { "dulse.fr", true }, + { "dulurtekno.co.id", true }, + { "dulux.co.nz", true }, + { "dulux.com.au", true }, { "dum.moe", true }, { "dum.tw", true }, { "dumax.fr", true }, @@ -38748,20 +45134,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dumberger-bau.de", true }, { "dumbfunded.co.uk", true }, { "dumbmeta.com", true }, + { "dumek.com", true }, + { "dumek.it", true }, { "dumeng.org", true }, - { "dumino.bg", true }, + { "dumfriespropertyservices.co.uk", true }, { "dummo.tk", true }, { "dumnezeu.tk", true }, { "dumping.tk", true }, { "dumpper.ch", true }, { "dumpper.com", true }, - { "dumpsterdudez.com", true }, { "dumspiro.ch", true }, - { "duna.com.co", true }, { "dunamiscommunity.com", true }, { "dunangel.com", true }, { "dunassyn.com", true }, { "dunatos.tk", true }, + { "dunbarboropa.gov", true }, + { "dunbarmoving.com", true }, { "dunberghof.tk", true }, { "duncancmt.com", true }, { "duncanfamilytrust.org", true }, @@ -38771,7 +45159,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dundalk.ie", true }, { "dundalkdonnie.com", true }, { "dundalkskillnet.ie", true }, - { "dundeerecycling.ca", false }, { "dundeeutility.tk", true }, { "dunedot.tk", true }, { "dunesadventure.net", true }, @@ -38784,10 +45171,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dungeonedraghi.it", true }, { "dungeonfire.tk", true }, { "dungeonline.com", true }, - { "dungkieu.com", true }, { "dunia-news.tk", true }, { "dunkelmann.eu", true }, { "dunkerhosting.nl", true }, + { "dunkingwithwolves.com", true }, + { "dunkirkin.gov", true }, { "dunklau.fr", true }, { "dunkle-seite.org", true }, { "dunlaptn.gov", true }, @@ -38802,7 +45190,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duodeno.tk", true }, { "duoduocha.com", true }, { "duoduodazhe.com", true }, - { "duohao.xyz", true }, + { "duohao.xyz", false }, { "duolife.us", true }, { "duoluodeyu.com", true }, { "duonganhtuan.com", true }, @@ -38811,10 +45199,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duoquadragintien.fr", true }, { "duoyin.com", true }, { "dupagecounty.gov", true }, + { "dupagecourts.gov", true }, { "dupageresults.gov", true }, - { "dupforex.com", true }, { "dupfx.com", true }, - { "dupisces.com.tw", true }, { "duplicazionechiavi.it", true }, { "dupuis.xyz", true }, { "duquess.com.br", true }, @@ -38825,28 +45212,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "durakinesis.tk", true }, { "duramaximportaciones.com", true }, { "duranceofhate.com", true }, + { "durand.com.br", true }, { "durand.tf", true }, { "durand.tk", true }, { "durandeau.org", true }, + { "durandwi.gov", true }, { "durangoaldezaharra.tk", true }, { "durangoenergyllc.com", true }, - { "durbanlocksmiths.co.za", true }, + { "durastudio.com", true }, { "durcal.tk", true }, { "durchblick-shop.de", true }, - { "durcoin.com", true }, { "durcoin.org", true }, + { "duredo.com", true }, { "dureuil.info", true }, { "durexwinkel.nl", true }, { "durfteparticiperen.nl", true }, { "durganews.com", true }, { "durhammaine.gov", true }, + { "durhammoneyman.com", true }, { "durhamnh.gov", true }, { "duria.de", true }, - { "duriaux-dentiste.ch", false }, { "duriemas.com", true }, + { "durka.lol", true }, { "duroterm.ro", true }, + { "durtk.com", true }, { "durulezzetler.com", true }, + { "durvalpereira.com.br", true }, + { "durvensolutions.com", true }, { "durys.be", true }, + { "dusablemuseum.org", true }, { "dushu.cat", true }, { "duskraven.tk", true }, { "dusmomente.com", true }, @@ -38854,8 +45248,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dust.bio", true }, { "dust.tk", true }, { "dust4you.tk", true }, + { "dustandsand.com", true }, { "dustbox.tk", true }, { "dustinbrett.com", true }, + { "dustindecker.com", true }, { "dustman.tk", true }, { "dustpla.net", true }, { "dustplanet.de", true }, @@ -38877,14 +45273,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dutchbird.tk", true }, { "dutchbirdalerts.nl", true }, { "dutchbirding.nl", true }, - { "dutchcariblaw.nl", true }, + { "dutchbodybuilding.com", true }, + { "dutchcariblaw.nl", false }, { "dutchcichlidplanet.tk", true }, { "dutchconcreations.com", true }, { "dutchdungeon.tk", true }, + { "dutchessuganda.com", true }, { "dutchfoodie.nl", true }, { "dutchforkrunners.com", true }, { "dutchglover.tk", true }, { "dutchie.info", true }, + { "dutchmobilityinnovations.com", true }, { "dutchpentathlon.nl", true }, { "dutchperformanceproducts.nl", true }, { "dutchplayers.com", true }, @@ -38892,7 +45291,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dutchsailors.com", true }, { "dutchwanderers.nl", true }, { "dutchwaredesign.nl", true }, - { "duthywines.com", true }, { "dutify.com", true }, { "dutkoteam.com", true }, { "dutrac.co.id", true }, @@ -38916,6 +45314,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duvalo.org", true }, { "duvalo.sk", true }, { "duvessa.tk", true }, + { "duwitmu.com", true }, { "duxbow.de", true }, { "duxbury-ma.gov", true }, { "duxi-s-feromonami.ga", true }, @@ -38923,57 +45322,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "duzavo.cz", true }, { "duzcehaberleri.tk", true }, { "duzcesondakika.tk", true }, - { "dv.ms", true }, + { "dv-project.ru", true }, { "dv189.com", true }, { "dvbris.co.uk", true }, { "dvbris.com", true }, { "dvbtmap.eu", true }, { "dvclub.tk", true }, + { "dvd.wtf", true }, { "dvdassistanceers.ga", true }, { "dvdforum.ga", true }, { "dvdinmotion.com", true }, { "dvdland.com.au", true }, - { "dvdlocker.com", true }, { "dvdmania.ga", true }, { "dvdmusic.ga", true }, { "dvdrein.net", true }, + { "dvds.casa", true }, { "dveretti.com", true }, { "dveri-lugansk.tk", true }, { "dvgsites.com", true }, { "dvhosting.be", true }, { "dvipadmin.com", true }, { "dvkg.de", true }, + { "dvminsight.com", true }, { "dvmmoving.com", true }, { "dvn.pt", true }, { "dvnatura.ch", false }, { "dvor.ml", true }, { "dvorek-karlin.cz", true }, { "dvorekkarlin.cz", true }, + { "dvoretsvramoni.ru", true }, { "dvorupotocnych.sk", true }, { "dvotx.org", true }, + { "dvpc.net", true }, { "dvu.com.tr", true }, { "dvwc.org", true }, { "dvx.cloud", true }, + { "dw-connect.org", true }, { "dw-loewe.de", false }, { "dw-software.de", true }, + { "dw6.cn", true }, { "dwarf.com.tw", true }, { "dweb.link", true }, { "dweilorkest-frederikshaven.tk", true }, { "dwgeneralcontractors.com", true }, { "dwgf.xyz", true }, { "dwhightmolina.com", true }, - { "dwi-sued.de", true }, + { "dwienzek.de", true }, + { "dwightd.com", true }, + { "dwightgunning.com", true }, { "dwihn.org", true }, { "dwiminneapolislawyer.com", true }, - { "dwipakharismamitra.com", false }, + { "dwipakharismamitra.com", true }, { "dwnld.me", true }, { "dwood.store", true }, { "dworzak.ch", true }, - { "dwscdv3.com", true }, - { "dwt-inc.com", true }, + { "dwservice.net", true }, + { "dwt-onderwijsencoaching.nl", true }, { "dwtm.ch", true }, + { "dwtonline.com", false }, { "dww.hu", true }, - { "dwword.com", false }, { "dwwt.eu", true }, { "dwwt.net", true }, { "dwwt.nl", true }, @@ -38984,21 +45391,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dwz-solutions.net", false }, { "dwz.wtf", true }, { "dx-revision.com", true }, - { "dx2o.com", true }, { "dxa.io", false }, + { "dxcv.net", true }, { "dxfootball.tk", true }, { "dxgl.info", true }, { "dxgl.org", true }, { "dxm.no-ip.biz", true }, - { "dxmedio.com", true }, - { "dxtours.com", true }, { "dxzl.org", true }, { "dxzsj.cn", true }, { "dy.express", true }, { "dy.me", false }, { "dy1d.com", true }, { "dyachenko.ml", true }, - { "dyaustechnoservices.com", true }, + { "dyarakotijobs.com", true }, { "dybuster.at", true }, { "dybuster.ch", true }, { "dybuster.com", true }, @@ -39007,7 +45412,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dybuster.it", true }, { "dybuster.se", true }, { "dycoa.com", true }, + { "dydesign.space", true }, { "dyeager.org", true }, + { "dyedurhamterrain.com", true }, { "dyingflame.tk", true }, { "dykebaby.tk", true }, { "dyktig.as", true }, @@ -39020,7 +45427,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dylankatz.com", true }, { "dylanknoll.ca", true }, { "dylanlogan.xyz", true }, - { "dylansevier.com", true }, { "dylanspcrepairs.com", true }, { "dylantjb.com", true }, { "dylanuwr.pl", true }, @@ -39029,14 +45435,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dylmye.me", true }, { "dylnuge.com", true }, { "dym.asia", true }, - { "dym.bz", true }, { "dym2012.com", true }, { "dym2013.com", true }, { "dym2014.com", true }, { "dym2017.com", true }, + { "dyma.fr", true }, { "dymdajce.ovh", true }, - { "dyme.com", false }, - { "dyme.media", true }, + { "dyme.com", true }, { "dymension-uat.co.uk", true }, { "dymension.co.uk", true }, { "dymersion.com", true }, @@ -39049,9 +45454,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dymowski.de", false }, { "dyn-dnhensel.de", true }, { "dyn-nserve.net", true }, + { "dyn.net", true }, { "dynabob.tk", true }, + { "dynacast.com", true }, { "dynacrop.space", true }, { "dynadns.de", true }, + { "dynah.net", true }, { "dynalab.pl", true }, { "dynaloop.net", false }, { "dynamic-movie.com", true }, @@ -39061,34 +45469,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dynamicbusinessconsultants.ga", true }, { "dynamicdesignuk.com", true }, { "dynamicdiesupply.com", true }, + { "dynamicenergy.co", true }, + { "dynamicentertainmentdjs.com", true }, + { "dynamicini.org", true }, { "dynamiclogodesigns.com", true }, - { "dynamicnet.net", true }, { "dynamicpl.us", true }, { "dynamicplus.it", true }, { "dynamicsdays.info", true }, + { "dynamicservers.co.uk", true }, { "dynamicsnetwork.net", true }, { "dynamicsretailnotes.com", true }, + { "dynamictesting.co.uk", true }, { "dynamictostatic.com", true }, { "dynamicyou.co.uk", true }, { "dynamis.tk", true }, - { "dynamisk.dk", true }, { "dynamitejobs.com", true }, { "dynamix-tec.com", true }, + { "dynamixsolutions.com", true }, { "dynamofanforum.de", true }, - { "dynapptic.com", true }, + { "dynasend.com", true }, { "dynasoft.co.ke", true }, { "dynastic.co", true }, { "dynasty-warriors.net", true }, + { "dynastydr.com", true }, { "dynastyredzone.com", true }, { "dynatos-cloud.com", true }, { "dyncdn.me", true }, + { "dyncdn2.com", true }, { "dyneco.io", true }, { "dynet.ru", true }, { "dynn.be", false }, { "dynorphin.com", true }, { "dynorphins.com", true }, + { "dynotraining.com", true }, { "dynsoundmax.tk", true }, - { "dynts.pro", true }, { "dynx.pl", true }, { "dypromed.com", true }, { "dyregrave.dk", true }, @@ -39104,44 +45518,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "dysthymia.com", true }, { "dyuimovochka.tk", true }, { "dyve.me", true }, - { "dyxe.me", true }, { "dyykkarit.tk", true }, { "dyyn.de", true }, { "dyz.pw", true }, - { "dz17.net", true }, { "dz6729.com", true }, + { "dz68.cc", true }, { "dz6957.com", true }, + { "dz7337.com", true }, { "dzar.nsupdate.info", true }, { "dzeina.ch", false }, { "dzet.de", true }, + { "dzg-ev.de", true }, + { "dzhyp.ag", true }, { "dziaduch.pl", true }, { "dziecismoka.pl", true }, { "dziekonski.com", true }, { "dzimchuk.net", true }, { "dzingel-personaldienst.de", true }, { "dziscover.com", true }, - { "dziseldra.com", true }, { "dziura.email", false }, { "dziurdzia.pl", true }, + { "dzivniekubriviba.lv", false }, { "dzmonarchie.tk", true }, + { "dzndk.com", true }, { "dzndk.net", true }, { "dzndk.org", true }, + { "dzogchentoday.org", true }, { "dzomo.org", false }, + { "dzpc3.site", true }, { "dzsi.bi", false }, { "dzsibi.com", true }, { "dzsula.hu", true }, { "dzu.fund", true }, { "dzu.life", true }, + { "dzuka.sk", true }, { "dzus.tk", true }, { "dzworld.com", true }, { "dzyabchenko.com", false }, { "dzyszla.pl", true }, - { "e-account.by", true }, + { "e-account.by", false }, { "e-alink.com", true }, + { "e-andorra.eu", true }, { "e-antikvar.tk", true }, { "e-arteria.pl", true }, { "e-bags.tk", true }, { "e-balloons.tk", true }, + { "e-bap.net", true }, { "e-baraxolka.ru", true }, { "e-belgia.tk", true }, { "e-bikesdirect.co.uk", true }, @@ -39151,7 +45573,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-borneoshop.com", true }, { "e-boss.tk", true }, { "e-branchekoden.dk", true }, - { "e-briancon.com", false }, { "e-buro.tk", true }, { "e-classroom.tk", true }, { "e-coexist.com", true }, @@ -39166,21 +45587,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-diasporan.ga", true }, { "e-diasporan.gq", true }, { "e-diasporan.ml", true }, + { "e-dnevnik.hr", true }, + { "e-driver.fr", true }, { "e-dv.eu", true }, { "e-e.icu", true }, { "e-emploi.be", true }, { "e-enterprise.gov", true }, - { "e-estonia.com", true }, + { "e-estonia.com", false }, { "e-estonians.ee", true }, { "e-facture.net", true }, + { "e-farm.com", true }, { "e-fireplaces.tk", true }, { "e-fishing.tk", true }, { "e-fitnes.tk", true }, + { "e-frontier.systems", true }, { "e-games-board.tk", true }, { "e-gc.de", true }, { "e-generator.tk", true }, { "e-geologia.tk", true }, - { "e-guardian.com.br", true }, + { "e-goi.com", true }, + { "e-gso.com", true }, + { "e-guestbooks.com", true }, { "e-guvence.com", true }, { "e-hair.tk", true }, { "e-havenotime.tk", true }, @@ -39204,8 +45631,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-lamp.tk", true }, { "e-learningbs.com", true }, { "e-lectride.com", true }, + { "e-lexia.com", true }, { "e-lifetechnology.com", true }, { "e-loshadka.tk", true }, + { "e-loukidis.gr", true }, { "e-mak.eu", true }, { "e-massage.tk", true }, { "e-matras.ua", true }, @@ -39217,13 +45646,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-name.tk", true }, { "e-nanum.kr", true }, { "e-nature.tk", true }, - { "e-node.net", true }, + { "e-networks.jp", true }, { "e-node.ru", true }, + { "e-ops.bg", true }, { "e-otdyx.tk", true }, { "e-peeling.tk", true }, { "e-peets.tk", true }, + { "e-petition-petitions.net", true }, + { "e-petition-support-us.net", true }, + { "e-petition.net", true }, { "e-placement.tk", true }, { "e-planshet.tk", true }, + { "e-plus-m.de", true }, { "e-pns.com", true }, { "e-pokupki.eu", true }, { "e-polygraphy.tk", true }, @@ -39234,16 +45668,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-random.com", true }, { "e-receta.cl", true }, { "e-recruitment.tk", true }, + { "e-redes.pt", true }, { "e-referendum.cz", true }, { "e-repairs.tk", true }, { "e-resident.gov.ee", true }, + { "e-resident.me", true }, { "e-rest.tk", true }, { "e-rober.tk", true }, { "e-sauna.tk", true }, + { "e-scraper.com", true }, { "e-sell.tk", true }, { "e-servicerms.com", true }, { "e-shobai.com", true }, { "e-shonai.com", true }, + { "e-sisyu.com", false }, { "e-skalniak.pl", true }, { "e-sklep.biz", true }, { "e-slots.tk", true }, @@ -39253,30 +45691,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-streams.tv", true }, { "e-student.tk", true }, { "e-styling.tk", true }, - { "e-sushi.net", true }, + { "e-surveillant.nl", true }, { "e-sweaters.tk", true }, { "e-tables.tk", true }, { "e-tablets.tk", true }, + { "e-tarotlasky.cz", true }, { "e-teacher.pl", true }, { "e-tech-solution.com", true }, { "e-tech-solution.net", true }, { "e-technology.tk", true }, { "e-techsolution.com", true }, { "e-techsolutions.net", true }, + { "e-ticaret.site", true }, { "e-tires.tk", true }, - { "e-tmf.org", true }, - { "e-tonery.cz", true }, + { "e-tmf.org", false }, { "e-top.uz", true }, { "e-traceur-france.fr", true }, { "e-transformer.tk", true }, - { "e-tresor.at", true }, { "e-trucking.tk", true }, { "e-typ.eu", true }, { "e-umbrellas.tk", true }, { "e-underwear.tk", true }, + { "e-uteplitel.ru", true }, { "e-vau.de", false }, { "e-verify.gov", true }, + { "e-virtus.blog", true }, { "e-virtus.com", true }, + { "e-vykladkaret.cz", true }, { "e-walks.tk", true }, { "e-webos.com", true }, { "e-wish.tk", true }, @@ -39285,10 +45726,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e-yachts.tk", true }, { "e-zine.tk", true }, { "e.gg", true }, - { "e.ki", false }, { "e.mail.ru", true }, { "e00228.com", false }, + { "e02.cn", true }, { "e15r.co", true }, + { "e1e0.net", true }, { "e27.co", true }, { "e2b.com.au", true }, { "e2ebrindes.com.br", true }, @@ -39296,20 +45738,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e2epartners.org", true }, { "e2essentialelements.com", false }, { "e2feed.com", true }, + { "e2save.com", true }, { "e30.ee", true }, { "e30gruppe.com", true }, { "e34club.com.ua", true }, { "e365.vip", true }, { "e36533.com", true }, { "e3lan.net", true }, - { "e3leading.com", true }, - { "e3leading.solutions", true }, - { "e3leadingsolutions.com", true }, - { "e3learning.institute", true }, - { "e3li.org", true }, { "e4.chat", true }, { "e42.org", false }, { "e4a.org", true }, + { "e4mc.link", true }, { "e4work.com.br", true }, { "e5197.co", true }, { "e5tv.hu", true }, @@ -39323,18 +45762,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "e7180.com", true }, { "e7d.io", true }, { "e7fun.net", true }, - { "e81365.com", true }, { "e82365.com", true }, { "e899365.com", false }, { "e8bet.net", true }, + { "e8space.co.nz", true }, { "e8space.com", true }, + { "e8space.nz", true }, { "e901.com", false }, { "e9297.co", true }, { "e9397.com", false }, { "e9582.com", true }, { "e9728.co", true }, { "ea-lateleassistance.com", true }, + { "ea-ru.org", true }, { "ea2drocks.com", true }, + { "eaa-online.org", true }, { "eaanderson.com", true }, { "eac.gov", true }, { "eac010.com", true }, @@ -39644,34 +46086,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eac555.com", true }, { "each.tk", true }, { "ead-italia.it", true }, - { "eadea.net", false }, + { "eadea.net", true }, { "eaganmn.gov", true }, { "eagar.com.au", true }, { "eagenda.com.br", true }, { "eagle-yard.de", true }, + { "eagleblades.com", true }, { "eaglecounty.gov", true }, { "eaglecountyco.gov", true }, - { "eagleindustriesltd.com", true }, + { "eaglecrest.us", true }, + { "eaglefireid.gov", true }, + { "eaglegrove.gov", true }, + { "eaglehaslended.com", true }, + { "eaglelakefl.gov", true }, { "eagleled.us", true }, { "eaglemessaging.com", true }, { "eaglenation.net", true }, + { "eaglenusa.my.id", true }, + { "eaglepasstx.gov", true }, { "eagleplanners.agency", true }, { "eagleriverwi.gov", true }, - { "eaglerockseattle.com", true }, + { "eagleseven.com", true }, + { "eaglesightproperties.tech", true }, { "eagletechz.com.br", true }, { "eaglevilletn.gov", true }, { "eaglewreck.info", true }, - { "eaglexiang.org", false }, { "eagleyecs.com", true }, + { "eahea.org", true }, { "eaimty.com", true }, - { "eainjurycenter.com", true }, + { "eajglobal.com", true }, + { "eajmail.com", true }, + { "eakes.com", true }, { "ealadel.com", true }, + { "ealarm-safemode.ch", true }, { "ealekseyev.ml", true }, { "ealev.de", true }, + { "eali.com.ph", true }, { "eamadit.com", true }, { "eames-clayton.us", true }, { "eamigo.com", true }, { "eamproperties.com", true }, + { "eamrfid.com", true }, { "eandata.com", true }, { "eanraig.top", true }, { "eaofarlington.com", true }, @@ -39683,19 +46138,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eaofhouston.com", true }, { "eaofirving.com", true }, { "eaoftarrantcounty.com", true }, - { "eapcounselling.com.au", true }, { "earfolds.com", true }, + { "earl-plak.de", true }, { "earlsttech.ca", true }, - { "earlybetter.com", true }, - { "earlyimage.com.au", true }, + { "early-etudes.com", true }, + { "earlychildhoodteacher.org", true }, + { "earlytime.com", true }, { "earlyvoting.cf", true }, { "earlyvoting.gq", true }, { "earlyvoting.ml", true }, { "earlyyearshub.com", true }, { "earmarks.gov", true }, { "earnet.tk", true }, + { "earni.fi", true }, { "earningsgames.tk", true }, { "earningthatis.tk", true }, + { "earpconsult.co.uk", true }, { "earth-people.org", true }, { "earth-quake.tk", true }, { "earthbound.tk", true }, @@ -39703,6 +46161,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "earthcore.com", true }, { "earthcorporation.cf", true }, { "eartheld.tk", true }, + { "earthiq.news", true }, + { "earthjustice.org", true }, + { "earthlink.net", true }, { "earthpixz.com", true }, { "earthpoints.org", true }, { "earthshotprize.org", true }, @@ -39710,51 +46171,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "earthsolidarity.org", true }, { "earthsong.co.za", true }, { "earthsystemprediction.gov", true }, - { "earticleblog.com", true }, + { "earthvoice.ru", true }, + { "earthwatch.org", true }, { "eas.ee", false }, { "easaccounting.com", true }, + { "ease.io", true }, { "easew.com", true }, + { "easez.net", true }, { "eashwar.com", true }, + { "easiest-way.de", true }, { "easlerlaw.com", true }, { "easol.com", true }, + { "eason-yang.com", false }, { "east-line.su", true }, + { "east-westlogistics.com", true }, { "eastafricafeed.ga", true }, { "eastarm.net", true }, - { "eastbaycontractor.com", true }, { "eastblue.org", true }, { "eastcairo-egypt.com", true }, + { "eastchesternyfd.gov", true }, { "eastcoastbubbleandbounce.co.uk", true }, { "eastcoastexports.tk", true }, { "eastcobbhoa.com", true }, { "eastcottvets.co.uk", true }, { "eastdream.tk", true }, { "eastendonline.tk", true }, + { "eastendtastemagazine.com", true }, + { "easternbreezes.com", true }, { "easternmontanafair.gov", true }, { "easternsalesinc.com", true }, + { "easternskatesupply.com", true }, + { "eastfordct.gov", true }, { "eastgreenwichnews.com", true }, { "eastgrmi.gov", true }, { "easthaddamct.gov", true }, + { "easthamptonctha.gov", true }, + { "easthaven-ct.gov", true }, { "eastheaven.ml", true }, + { "eastlandcountytexas.gov", true }, + { "eastleigh.online", true }, { "eastlothianbouncycastles.co.uk", true }, { "eastmaintech.com", true }, - { "eastmedo.com", true }, + { "eastman.com", true }, + { "eastmedia.se", true }, { "eastmedo.pl", true }, + { "eastnatfoods.com", true }, { "eastnorschool.co.uk", true }, { "easton.ga", true }, + { "eastonpaxtongolf.com", true }, { "eastpeoria-il.gov", true }, + { "eastpershingdental.com", true }, { "eastping.com", true }, { "eastplan.co.kr", true }, { "eastportcorp.tk", true }, { "eastprovidenceri.gov", true }, { "eastshare.ml", true }, + { "eastshore.xyz", true }, { "eastside.tk", true }, { "eastsidecottages.co.uk", true }, - { "eastsideroofingcontractor.com", true }, + { "eastspace.org.uk", true }, { "eastspencer.gov", true }, { "eaststudios.net", true }, - { "easttower-uc.com", true }, + { "easttamakiauto.co.nz", true }, + { "easttea.com", true }, { "easttowereg.com", true }, - { "eastvalleyautorebuild.com", true }, + { "eastvalleyendo.com", true }, { "eastwashingtonpa.gov", true }, { "eastwindsorhistory.tk", true }, { "eastyorkshirebuses.co.uk", true }, @@ -39762,13 +46243,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easy-affiliations.tk", true }, { "easy-company.tk", true }, { "easy-design.tk", true }, + { "easy-drop.co", true }, { "easy-factures.fr", true }, + { "easy-feedback.com", false }, + { "easy-feedback.de", false }, { "easy-katka.ga", true }, - { "easy-rpg.org", false }, + { "easy-pornvideos.com", true }, + { "easy-rpg.org", true }, + { "easy2bathe.co.uk", false }, + { "easy4ssl.com", true }, { "easyaddress.io", true }, { "easyadsnbanners.tk", false }, + { "easybank.at", true }, + { "easybaufi.com", true }, + { "easybill.de", true }, + { "easybiztech.co.za", true }, { "easybom.com", true }, { "easybot.tk", true }, + { "easybranches.com", true }, { "easybrazilianrecipes.com", true }, { "easycater.com", true }, { "easycoding.org", true }, @@ -39778,20 +46270,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easycrochet.tk", true }, { "easydmarc.am", true }, { "easydonate.tk", true }, + { "easydrawingguides.com", true }, { "easydumpsterrental.com", false }, { "easyenrollment.net", true }, { "easyescortwebsites.com", true }, { "easyfiles.ch", true }, { "easyfiles.gq", true }, - { "easyfm.cz", true }, { "easyfoto.tk", true }, + { "easygaragedoorrepair.com", true }, + { "easygenerator.com", true }, { "easygrow.tk", true }, + { "easyhome.org", true }, { "easyhomebiz.tk", true }, + { "easyhousing.dk", true }, { "easyhtml.tk", true }, + { "easyink.co.nz", true }, + { "easyishare.com", true }, { "easyit.ga", true }, { "easyit.tk", true }, { "easyjumping.tk", true }, - { "easykonto.de", true }, + { "easykitchens.co.in", true }, + { "easykonto.de", false }, { "easylinker.tk", true }, { "easylogics.tk", true }, { "easymeditation.tk", true }, @@ -39807,14 +46306,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easypayments.pro", true }, { "easypets.fr", false }, { "easypost.com", true }, - { "easypricebook.com", true }, - { "easyproperty.com", false }, { "easypv.ch", true }, { "easyqr.codes", false }, { "easyradio.gq", true }, { "easyreal.ru", true }, { "easyretro.io", true }, - { "easyserver.io", true }, + { "easyrich-mind.com", true }, + { "easyrpg.org", true }, { "easyshare.gq", true }, { "easysignup.com", true }, { "easyska.tk", true }, @@ -39823,9 +46321,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easysport.lt", true }, { "easysubmit.tk", true }, { "easytamil.tk", true }, + { "easytap.sv", true }, { "easytechguides.com", true }, { "easytestonline.tk", true }, { "easytext.ga", true }, + { "easytfa.com", true }, { "easytokill.tk", true }, { "easytrackghana.com", true }, { "easytube.ga", true }, @@ -39833,15 +46333,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "easyweenies.com", true }, { "easywin.ml", true }, { "easywio.com", true }, - { "easywords.org", true }, + { "easywrite.com.tw", true }, { "eat", true }, { "eat-sleep-code.com", true }, { "eat-that.tk", true }, { "eat-the-world.ch", true }, { "eat-vegan.rocks", true }, + { "eatandsleep.jp", true }, + { "eatdrinktalk.net", true }, + { "eatechled.com", true }, { "eatery.co.il", true }, { "eatfitoutlet.com.br", true }, - { "eatfood.com.br", true }, + { "eatimad.com", true }, { "eatingasturias.com", true }, { "eatinglinks.tk", true }, { "eatmebudapest.hu", true }, @@ -39851,20 +46354,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eatonbrowncountywi.gov", true }, { "eatry.io", true }, { "eats.soy", true }, - { "eatshit.cn", true }, { "eatsleeprepeat.net", true }, { "eatson.com", true }, { "eatwith.com", true }, { "eatz-and-treatz.com", true }, { "eauclairecounty.gov", true }, { "eaucube.com", true }, - { "eaugalliediscountpharmacy.com", true }, { "eaugenethomas.cf", true }, { "eauto-cash.de", true }, { "eautocash.de", true }, { "eautocollision.com", true }, { "eautolease.com", true }, - { "eauxdespleiades.ch", false }, + { "eauxdevienne.fr", true }, { "eava.ga", true }, { "eazy.gr", true }, { "eazyfreight.co.uk", true }, @@ -39879,9 +46380,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eba.com.ua", true }, { "ebagroup.tk", true }, { "ebaifzf.com.br", true }, + { "ebakery.de", true }, { "eban.bzh", true }, - { "ebankcbt.com", true }, + { "ebanca.com", false }, { "ebanking.indovinabank.com.vn", true }, + { "ebanking.raiffeisen.ch", true }, { "ebankingabersicher.ch", true }, { "ebankingbutsecure.ch", true }, { "ebankingentoutesecurite.ch", true }, @@ -39899,20 +46402,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ebatechenergiedisplay.nl", true }, { "ebatechenergiemanagement.nl", true }, { "ebayinc.com", true }, - { "ebaymotorssucks.com", true }, { "ebcfx.com", true }, { "ebci-nsn.gov", true }, { "ebcired-nsn.gov", true }, + { "ebdaa-business.com", true }, { "eben18.net", true }, { "ebenda.org", true }, { "ebenezersbarnandgrill.com", true }, { "ebenisterie-de-villenouvelle.fr", true }, { "ebenvloedaanleggen.nl", true }, + { "eberharter-steine.at", true }, { "eberspacher-rus.ru", true }, { "ebertlang.com", true }, { "eberwe.in", true }, { "ebest.co.jp", true }, { "ebetbananom.tk", true }, + { "ebics.cz", true }, + { "ebics.hu", true }, + { "ebics.sk", true }, { "ebikemod.de", true }, { "ebilanzplus.de", true }, { "ebino.pl", true }, @@ -39920,20 +46427,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ebiografias.com.br", true }, { "ebipl.com", true }, { "ebis.cloud", true }, + { "ebis.info", true }, { "ebisee.com", true }, - { "ebisi.be", true }, { "ebizarts.com", true }, { "ebiznespro.pl", true }, { "ebjork.se", true }, { "ebki-nsn.gov", true }, { "eblan.gq", true }, + { "eblandscaping.com.au", true }, + { "eblock.com", true }, { "eblog.cf", true }, { "eblog.ink", true }, + { "eboardsolutions.com", true }, { "ebola-hosting.cz", true }, + { "ebola.cz", true }, { "ebolacharts.ga", true }, { "ebolavirus.tk", true }, + { "ebony.social", true }, + { "ebonyfantasies.com", true }, + { "ebonylog.com", true }, + { "ebonymgp.com", true }, + { "ebonymilftube.com", true }, { "ebonyriddle.com", true }, + { "ebonytube.tv", true }, { "eboocker.de", true }, + { "ebook4yle.com", true }, { "ebookabc.tk", true }, { "ebookdep.com", true }, { "ebookdrive.tk", true }, @@ -39948,43 +46466,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ebooksgratis.tk", true }, { "ebooksgratuits.org", true }, { "ebooksinfocus.com", true }, - { "ebooksmile.net", true }, { "ebookspy.tk", true }, { "ebookweb.gq", true }, { "ebop.ch", true }, { "eboxgroup.tk", true }, - { "ebpgateway.com", true }, + { "eboxtenders.com", true }, + { "ebpc.com.au", true }, + { "ebpgateway.com", false }, { "ebrahimhadimarket.com", true }, { "ebrdbusinessguide.com", true }, { "ebrea.ch", true }, { "ebrnd.de", true }, + { "ebrofoods.es", false }, { "ebru-gundes.tk", true }, { "ebrununkasnagi.com", true }, + { "ebscomedical.com", true }, + { "ebstv.tv", true }, { "ebuha.ga", true }, { "ebuku.tk", true }, { "eburg.ml", true }, { "ec-baran.de", true }, { "ec-current.com", true }, { "ec.ath.cx", true }, - { "ec.gov.sl", true }, { "ec.mine.nu", true }, + { "ec2software.com", true }, + { "eca.nb.ca", true }, { "ecamisetas.com.br", true }, { "ecampusontario.ca", true }, - { "ecarch.cf", true }, { "ecard.ml", true }, { "ecardoo.com", true }, { "ecardoo.de", true }, { "ecardoo.net", true }, { "ecardoo.org", true }, + { "ecardsupply.com", true }, + { "ecargo.co.nz", true }, { "ecarscash.com", true }, + { "ecat.ua", true }, { "ecaterina.tk", true }, { "ecbt.co.il", true }, { "ecc.ee", true }, { "ecchidreams.com", true }, { "eccma.org", true }, - { "eccux.com", true }, + { "ecco-verde.at", true }, + { "ecco-verde.it", true }, + { "eccoholiday.com", true }, + { "eccoilmenu.it", true }, + { "eccologic.net", true }, + { "eccouncil.org", true }, + { "eccu.edu", true }, { "ecdn.cz", true }, + { "ece-inc.net", true }, { "ecelembrou.ovh", true }, + { "ecency.com", true }, + { "ecenglishlive.com", true }, { "ecenter.bg", true }, { "ecetechsol.com", true }, { "ecetiner.com", true }, @@ -39996,8 +46530,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "echidna-rocktools.eu", true }, { "echidna-usa.com", true }, { "echidna.com.au", true }, + { "echidnalock.com.au", true }, { "echima.ca", true }, { "echinus.solutions", true }, + { "echipamente-protectie.eu", true }, { "echo-in.info", true }, { "echo-n.nz", false }, { "echo-security.co", true }, @@ -40006,34 +46542,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "echobridgepartners.com", true }, { "echocolate.xyz", true }, { "echodio.com", true }, - { "echoeshq.com", true }, + { "echoeshq.com", false }, { "echofoxtrot.co", true }, { "echoit.net", true }, { "echoit.net.au", true }, { "echoit.services", true }, + { "echomail.org", true }, { "echopaper.com", true }, { "echorecovery.org", true }, + { "echosearch.co", true }, + { "echoserver.org", true }, + { "echoship.com", true }, { "echosixmonkey.com", true }, - { "echosnature.fr", true }, { "echosystem.fr", true }, { "echotango.fr", true }, { "echoteam.eu.org", true }, { "echoteam.gq", true }, { "echoteam.ml", true }, { "echotone.tk", true }, + { "echovintage.com.br", true }, + { "echowave.io", true }, { "echoworld.ch", false }, + { "echt.ga", true }, + { "echtcache.ga", true }, { "echtebbq.nl", true }, { "echternach-immobilien.de", true }, { "echtes-hutzelbrot.de", true }, { "ecigfind.com", true }, { "ecirtam.net", false }, { "eciso.io", true }, - { "ecivis.com", true }, + { "ecity.hu", true }, + { "eck.cologne", true }, { "eckel-edv.de", true }, { "eckel-kieser-gbr.de", true }, { "eckel.co", true }, + { "eckerl.org", true }, { "eckerle-gruppe.com", true }, { "eckindustries.com", true }, + { "eckler.ca", true }, { "eckotech.fr", true }, { "eckstein.tech", true }, { "eclectic-al.gov", true }, @@ -40044,13 +46590,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eclipse4academia-startups.com", true }, { "eclipseforum.tk", true }, { "eclipsegame.tk", true }, + { "eclipseide.org", true }, { "eclipseinspectionservices.co.uk", true }, + { "eclipsesuite.com", true }, { "ecn.ir", true }, { "ecnetworker.com", true }, { "eco-derattizzazione.it", true }, { "eco-doors.co.uk", true }, { "eco-price.ru", true }, { "eco-solu.co.jp", true }, + { "eco-web.com", true }, { "eco-wiki.com", true }, { "eco-work.it", true }, { "eco2u.ru", true }, @@ -40059,19 +46608,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eco69.pl", true }, { "ecobalispa.com", true }, { "ecobin.nl", true }, - { "ecobrotherss.com", true }, + { "ecobunker.co.uk", true }, + { "ecobunkerusa.com", true }, { "ecocanada.jobs", true }, { "ecoceutics.com", true }, + { "ecoconut.org", true }, { "ecocreativity.org", true }, { "ecocuisinedesign.com", true }, { "ecodedi.com", true }, + { "ecodena.com.mx", true }, { "ecodepur.co.ao", true }, { "ecodepur.fr", true }, { "ecodesign-labo.jp", true }, { "ecodesigns.nl", true }, + { "ecoeat.ru", true }, + { "ecoefficience.com", true }, { "ecoelectricsandiego.com", true }, { "ecoeuropa.cf", true }, { "ecofac-bs.com", true }, + { "ecofinancing.com", true }, { "ecofoolad.com", true }, { "ecoformeurope.com", true }, { "ecofriendlytravels.com", true }, @@ -40094,36 +46649,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ecole-parfum.com", true }, { "ecole-saint-yves-rennes.fr", true }, { "ecoledusabbat.org", false }, + { "ecolelacime.be", true }, { "ecolemathurincordier.com", false }, { "ecolenotredame.tk", true }, { "ecoles-conde.com", true }, { "ecolive.pl", true }, { "ecologeek.tk", true }, { "ecologiahoy.com", true }, + { "ecologiapolitica.info", true }, + { "ecologic-france.com", true }, { "ecologica.it", true }, + { "ecologistasenaccion.org", true }, { "ecologiya.tk", true }, { "ecoloriptv.tk", true }, - { "ecombustibil.ro", true }, + { "ecombustibil.ro", false }, { "ecometal.bg", true }, { "ecometalsrl.com", true }, - { "ecomfort.de", true }, + { "ecomgigs.com", true }, { "ecomia.dk", true }, - { "ecommerce-api-pdafr.herokuapp.com", true }, { "ecommerce-bikinsistem.tk", true }, { "ecommerce-optimizer.com", true }, { "ecommercenews.asia", true }, { "ecommercenews.co.nz", true }, { "ecommercenews.com.au", true }, + { "ecommerceuropa.eu", true }, { "ecompen.co.za", true }, { "ecomuuu.com", true }, + { "ecomweb.ro", true }, { "ecomycie.com", true }, { "econativa.pt", true }, { "econfia.cf", true }, { "econmarketingdigital.com", true }, + { "economarketing.ca", true }, + { "economia.cl", true }, + { "economias.pt", true }, { "economic-sanctions.com", true }, { "economicnews.ga", true }, - { "economicplan.gov.au", true }, { "economics-colleges.com", true }, + { "economie.gouv.fr", true }, { "economie2.alsace", true }, { "economie2.fr", true }, { "economiefidu.ch", false }, @@ -40131,42 +46694,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "economixportal.tk", true }, { "economycarrentalscyprus.com", true }, { "economydiva.com", true }, + { "economyguardian.com", true }, { "economyroofingco.com", true }, { "econsorzio.com", true }, { "econstitution.bg", true }, { "econsumer.gov", true }, + { "ecoo.top", true }, { "ecoon.net", true }, { "ecopak.org", true }, { "ecopark.asia", true }, + { "ecopark.co", true }, + { "ecopark.tv", true }, + { "ecopy.ir", true }, { "ecorak.de", true }, { "ecored.pl", true }, + { "ecoresina.com", true }, { "ecorp-australia.tk", true }, + { "ecorp.cc", false }, { "ecos-ev.de", true }, - { "ecos.srl", true }, { "ecosas.org", true }, - { "ecosdanoticia.net.br", true }, { "ecosdesociedad.tk", true }, { "ecosfti.tk", true }, { "ecoshare.info", true }, { "ecosial.org", true }, - { "ecosistema.ai", true }, { "ecoskif.ru", true }, { "ecosoftconsult.com", false }, - { "ecosound.ch", false }, { "ecostarfoam.com", true }, + { "ecostroika.ru", true }, { "ecostruxureit.com", true }, + { "ecosuds.co.uk", true }, { "ecosuperb.com", true }, - { "ecosystem.atlassian.net", false }, + { "ecosystem.atlassian.net", true }, { "ecosystemmanager-uat1.azurewebsites.net", true }, { "ecotecelevator.com", true }, - { "ecoteplo.net", true }, { "ecotrade-disinfestazioni.it", true }, { "ecotur.org", true }, { "ecoturismo.tk", true }, + { "ecounselling.nic.in", true }, { "ecoupakovka.ga", true }, { "ecourbano.tk", true }, { "ecoute.tv", true }, { "ecovetawindoors.com", true }, + { "ecowater.com", true }, { "ecowoman-armenian.tk", true }, { "ecowoman-bengalian.tk", true }, { "ecowoman-indonezian.tk", true }, @@ -40175,22 +46744,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ecozip.it", true }, { "ecozona.tk", true }, { "ecpannualmeeting.com", true }, + { "ecpc.org", true }, { "ecpic.gov", true }, + { "ecpl.ru", true }, { "ecr-test-partnapp.azurewebsites.net", true }, { "ecrandouble.ch", false }, { "ecredits-dev-app-backoffice01.azurewebsites.net", true }, { "ecredits-dev-app-partner01.azurewebsites.net", true }, + { "ecrehabandwellness.com", true }, { "ecrequipamientos.com", true }, { "ecriminalrecords.com", true }, { "ecrownoffire.com", true }, { "ecrums.gov", true }, + { "ecsafety.com", true }, { "ecscoutgroup.cf", true }, { "ecstaticentertainment.com", true }, { "ecsupplyinc.com", true }, + { "ect-cpg.com", true }, { "ectora.com", true }, { "ectpro.co.th", true }, { "ecuadorbienesraices.com", true }, - { "ecuadorextremo.com", true }, { "ecuadorlibrered.tk", true }, { "ecuadorwillana.com", true }, { "ecuashop.ec", true }, @@ -40201,77 +46774,93 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ecvma.fr", true }, { "ecxforum.com", true }, { "ecyy.net", true }, + { "eczacionline.com", true }, { "ed-medications.ml", true }, { "ed-studios.tk", true }, { "ed.gs", true }, + { "eda-ah.com", true }, + { "eda.cooking", true }, { "eda.gov", true }, - { "edacasa.com.br", true }, + { "eda72.com", true }, { "edalat.tk", true }, - { "edam.org.tr", true }, { "edapt.org.uk", true }, { "edas.info", false }, + { "edatech.com", true }, { "edb.cz", true }, { "edb.eu", true }, + { "edb.gov.sg", true }, { "edcaptain.com", true }, { "edcdn.net", true }, { "edchart.com", true }, { "edd-miles.com", true }, { "eddesign.ch", true }, + { "eddi.org.au", true }, { "eddie.website", true }, { "eddmil.es", true }, { "eddokloosterman.com", true }, { "eddriesen.tk", true }, { "eddsworld.tk", true }, - { "eddy-vh.com", true }, { "eddyn.net", false }, { "eddysystem.tk", true }, { "eddyworld.tk", true }, - { "edeals.co", true }, { "edeals.co.com", true }, { "edeals.com.co", true }, { "edeca.net", true }, { "ededdeddy.tk", true }, - { "edefrutos.me", true }, { "edefrutos2020.com", true }, { "edegembicycleclub.tk", true }, { "edegulkoyu.tk", true }, { "edehsa.com", true }, + { "edeka-peper.de", true }, { "edel-suff.de", true }, { "edelveiys.tk", true }, + { "edelvivesdigital.com", true }, + { "edelvivesdigitalplus.com", true }, { "edelweiskapel.tk", true }, { "edelweiss-pinzolo.com", true }, + { "edelweiss-service.ru", true }, + { "edelweissalternatives.com", true }, { "eden-project-insight.tk", true }, { "eden.bz", true }, { "eden.co.uk", true }, { "edenaya.com", false }, + { "edencollie.com", true }, { "edenfactory.tk", true }, { "edenming.info", true }, + { "edennc.gov", true }, { "edenpureheater.tk", true }, - { "edenvalerubbleremovals.co.za", true }, + { "edenredbenefits.com", true }, { "eder-steiner.at", true }, { "ederasrl.it", true }, { "edesseglabor.hu", true }, { "edevletkapisi.org", true }, { "edfdentalcenter.tk", true }, { "edfinancial.com", true }, + { "edgar.mx", true }, { "edgarcountyillinois.gov", true }, + { "edgarpierre.fr", true }, + { "edgarsmission.org.au", true }, { "edgarsonderwaterwereld.tk", true }, + { "edgartamarit.com", true }, { "edgarwi.gov", true }, { "edgarz.tk", true }, + { "edge12bar.com", true }, { "edgebilisim.com", true }, { "edgecase.ru", true }, { "edgeconnectnj.net", true }, { "edgecustomersportal.com", true }, { "edgedynasty.com", true }, - { "edgegame.xyz", true }, + { "edgeimpulse.com", true }, { "edgeless.pp.ua", false }, { "edgelogs.com", true }, + { "edgemagazine.net", true }, + { "edgemasterspaint.com", true }, { "edgeofnoservers.com", true }, { "edgerton.us", true }, { "edgeservices.co.uk", true }, { "edgetalk.net", true }, - { "edgetechig.co.uk", true }, - { "edgezzz.com", true }, + { "edgetechig.co.uk", false }, + { "edgewaterco.gov", true }, { "edging.tech", true }, { "edh.email", true }, { "edholm.pub", true }, @@ -40284,17 +46873,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edicionescrimentales.tk", true }, { "edihair.com", true }, { "edik.tk", true }, + { "edikacomptabilite.com", true }, { "edilane.com", true }, { "edilane.de", true }, + { "ediliovo.com", true }, { "edilondon.com", true }, - { "edilservizi.it", true }, { "edilservizivco.it", true }, + { "edinburghcastle.scot", true }, { "edinburghcyclehire.co.uk", true }, { "edinburghcyclehire.com", true }, { "edinburghopenworkshop.co.uk", true }, { "edirnehaber.tk", true }, { "edirnehaberleri.tk", true }, - { "ediscomp.sk", true }, { "edisonchee.com", true }, { "edisongroup.ru", true }, { "edisonlee55.com", true }, @@ -40303,19 +46893,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edisonstreet.com", true }, { "edist.ro", true }, { "edit.co.uk", true }, + { "edit.org", true }, { "edit.yahoo.com", false }, + { "edited.at", true }, + { "edited.be", true }, + { "edited.ch", true }, + { "edited.cz", true }, { "edited.de", true }, + { "edited.nl", true }, + { "edited.pl", true }, { "edithlouw.tk", true }, { "edithouse.dk", true }, { "edition-bambou.com", false }, - { "edition-sonblom.de", true }, + { "edition-sonblom.de", false }, { "editions-campanile.fr", true }, { "editionsnoiretrouge.com", true }, + { "editionsz.com", true }, { "editorakanope.com.br", true }, - { "editorial.cn", true }, + { "editorialexpress.com", true }, { "editorialnew.com", true }, { "editorinleaf.com", true }, + { "editorsguild.com", true }, { "editspace.tk", true }, + { "editus.it", true }, + { "edje.com", true }, + { "edjo.us", true }, + { "edl.com.ph", true }, { "edlib.is", true }, { "edlib.pics", true }, { "edlinger.at", true }, @@ -40329,29 +46932,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edmondok.gov", true }, { "edmundcelis.com", true }, { "edmundy.tk", true }, + { "edmwaves.org", true }, + { "ednarstore.com", true }, + { "edocperso.fr", true }, + { "edocr.com", true }, { "edok.com.br", true }, + { "edopomoga.gov.ua", true }, { "edoss.co.za", false }, + { "edp.com", true }, { "edpgassu.pt", true }, - { "edplan.io", true }, + { "edpnc.com", true }, + { "edpr.com", true }, + { "edpubs.gov", true }, { "edr-d.expert", true }, { "edragneainpuscarie.ro", true }, + { "edremith.com", true }, + { "edremitweb.site", true }, { "edrepay.com", true }, { "edrgroup.nl", true }, + { "edri.org", true }, { "edrosd.cf", true }, { "edrost.tk", true }, + { "edrtravel.com", true }, { "edsby.com", false }, + { "edscha.com", true }, { "edscolors.com", true }, { "edservicing.com", true }, { "edshogg.co.uk", true }, { "edsm.net", true }, - { "edsonreis.com", true }, { "edstem.org", true }, { "edstep.com", true }, + { "edsys.com.au", true }, { "edtech-hub.com", true }, { "edtech.ee", true }, { "edtechwebb.com", true }, { "edtravel.ga", true }, { "edu-kingdom.com", true }, + { "edu3w.at", true }, { "edu6.cloud", true }, { "eduanimal.tk", true }, { "eduard-dopler.de", true }, @@ -40362,29 +46979,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eduardomaio.net", true }, { "eduardosuarez.tk", true }, { "eduart.tk", true }, + { "edubase.link", true }, { "edubase.net", true }, { "edubirdie.com", true }, { "edublognews.tk", true }, + { "educa.ch", true }, { "educa2.es", true }, { "educabis.tk", true }, + { "educacionit.com", true }, { "educacionnm.ml", true }, { "educacionvirtual.com.ar", true }, { "educaestado.com", true }, - { "educampus.cl", true }, { "educanada.in", true }, + { "educard.co.at", true }, { "educasis.tk", true }, { "educatek.es", true }, { "educatie.tk", true }, + { "education-colleges.com", true }, { "education-info.cf", true }, { "education4paper.tk", true }, { "educationarea.tk", true }, { "educationboard.ml", true }, { "educationconnect.tk", true }, + { "educationdegree.com", true }, { "educationdepartment.ml", true }, { "educationet.tk", true }, { "educationevolving.org", true }, { "educationfirst.ml", true }, - { "educationfutures.com", true }, { "educationgov.tk", true }, { "educationhighquality.ml", true }, { "educationism.tk", true }, @@ -40392,6 +47013,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "educationone.ml", true }, { "educationportal.ga", true }, { "educationportal.tk", true }, + { "educationstandards.nsw.edu.au", true }, { "educationstatistic.tk", true }, { "educationstudent.tk", true }, { "educationsupport.org.uk", false }, @@ -40407,13 +47029,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "educbook.ga", true }, { "educheck.tech", true }, { "educlove.com", true }, - { "educnum.fr", true }, { "educourse.nl", true }, - { "edufestival.cz", true }, + { "edudaddy.net", false }, + { "edudip-next.com", true }, + { "edudip.com", true }, + { "edudip.de", true }, + { "edufestival.pl", true }, + { "edufever.com", true }, + { "edufever.in", true }, + { "eduflow.at", true }, { "edugeton.com", true }, + { "edugram.com", true }, + { "eduhub.lol", true }, + { "eduhub.ml", true }, { "eduhublisbon.com", true }, { "eduid.se", true }, { "eduif.nl", false }, + { "eduium.io", true }, + { "eduki.com", true }, { "edukle.com", false }, { "edularidea.com", true }, { "edularism.com", true }, @@ -40421,7 +47054,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edulinks.ml", true }, { "edumanage.tk", true }, { "edumaritime.net", true }, - { "edumaster.pro", true }, { "edumerson.com", true }, { "edunaut.com.au", true }, { "edunet.gq", true }, @@ -40429,28 +47061,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edunian.com", true }, { "edunoor.tk", true }, { "eduoneschool.tk", true }, - { "edupedia.vn", true }, + { "edupay.co.at", true }, { "edupesa.com", true }, { "eduproject.tk", true }, { "eduproquality.tk", true }, + { "eduqfix.com", true }, { "eduradiadores.com.br", true }, + { "eduresultbd.com", true }, { "eduroam.no", true }, { "eduroam.uy", true }, { "edusanjal.com", true }, { "eduschool.ml", true }, + { "edusektor.de", false }, { "edusercontent.com", true }, { "eduson.pl", true }, + { "eduspot.co.uk", true }, + { "edusson.com", true }, + { "edusuite.at", true }, + { "edutech.group", true }, { "edutour.ml", true }, { "edutrum.com", true }, + { "eduxon.in", true }, { "eduxpro.com", true }, + { "eduzaurus.com", true }, { "edv-biela.de", true }, { "edv-lehrgang.de", true }, { "edv-ringhofer.de", true }, { "edv-schmittner.de", true }, - { "edvance.co.za", true }, + { "edvan.com.br", true }, + { "edvestinu.com", true }, { "edvgarbe.de", true }, { "edvision.ga", true }, { "edvmesstec.de", true }, + { "edvservice-pohl.de", true }, { "edvsolutions.org", true }, { "edward-tagle.tk", true }, { "edwardbrowninvestment.tk", true }, @@ -40471,8 +47114,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "edxn.de", true }, { "edyhenry.tk", true }, { "edyou.org", false }, - { "edzilla.info", false }, + { "edytabania.com", true }, { "edzo.dk", true }, + { "edzo.fr", true }, { "ee-terminals.com", true }, { "ee00228.com", false }, { "ee362.com", false }, @@ -40490,9 +47134,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ee9721.com", false }, { "ee9728.co", true }, { "ee973.com", false }, - { "eeb98.com", true }, + { "eeagrants.cz", true }, { "eebt.hu", true }, { "eecs388.org", false }, + { "eeeb.loan", true }, { "eeeeeeeeee.de", true }, { "eeetrust.org", true }, { "eegaming.org", true }, @@ -40501,38 +47146,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eeia.com", true }, { "eeiletudiant.com", true }, { "eekelen.net", true }, + { "eelabs.eu", true }, { "eelcapone.nl", true }, { "eellak.gr", true }, { "eelsaspets.com", true }, { "eelsden.net", true }, { "eelzak.nl", true }, { "eemcevn.com", true }, - { "eemoor.com", true }, + { "eemskrant.nl", true }, { "een-eenvoudige-test-voor-de-maximum-lengte-van-een-nederlandse.nl", true }, - { "eencompass.com", true }, - { "eenmailsturen.nl", true }, + { "een.com", true }, + { "eenfotowaard.nl", true }, + { "eenmailsturen.nl", false }, + { "eennieuwepc.nl", true }, { "eentweevijf.be", true }, - { "eenvoudhup.com", true }, { "eenvren.com", true }, { "eenvxing.com", true }, { "eeqj.com", true }, { "eer.io", true }, + { "eeri.org", true }, { "eerstejaarsweekend.nl", true }, { "eerstemaanlanding.tk", true }, { "eery.de", true }, { "eet.nu", true }, { "eetestingcenter.com", true }, + { "eetimestv.com", true }, + { "eevie.io", true }, { "eevpn.com", true }, { "eewna.org", true }, + { "eeymuc.co", true }, + { "eeyo.uk", true }, { "eez.ee", false }, { "ef.gy", true }, { "efaas.nl", true }, { "efag.com", true }, - { "efair.tv", true }, + { "efamilycare.com", true }, { "efcpharma.com", true }, { "efcross.com", true }, - { "efe.name.tr", true }, + { "efectococuyo.com", false }, + { "efeel.info", true }, { "efeen.nl", true }, + { "efeindonesia.com", true }, + { "efektfoto.cz", true }, { "efektyvnist.pro", true }, { "efeso.co.nz", true }, { "efeso.nz", true }, @@ -40550,13 +47205,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eff.org", true }, { "effdocs.com", true }, { "effe.ch", false }, + { "effecotto.it", true }, { "effective-altruist.com", true }, { "effectivecoffee.com", true }, { "effectivecommunication.tk", true }, + { "effectiveconsulting.ca", true }, { "effectivepapers.com", true }, { "effectory.com", true }, { "effectpointphotography.cf", true }, { "effectualness.co.za", true }, + { "effectualness.web.za", true }, { "effer.me", true }, { "effex.ru", true }, { "effexorgeneric.ml", true }, @@ -40572,8 +47230,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "effortlesshr.com", true }, { "effortlesshr.net", true }, { "effra.pl", true }, + { "efi.com", true }, { "eficsolar.com", true }, - { "efleetcare.com.au", true }, + { "efiglobal.com", true }, + { "efiledcsuperiorcourt.gov", true }, + { "efirma.com", true }, { "eflorashop.be", true }, { "eflorashop.ch", true }, { "eflorashop.co.uk", true }, @@ -40588,11 +47249,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "efmcredentialing.org", true }, { "efmo.de", true }, { "efoood.org", true }, + { "efootball4u.es", true }, + { "eforevdenevenakliyat.com", true }, { "eformost.ca", true }, { "eforw.com", true }, { "efp.nl", true }, { "efran-eliyev.gq", true }, - { "efs-auto.com", true }, { "efsanesi.tk", true }, { "eft.boutique", true }, { "eftcorp.biz", true }, @@ -40600,6 +47262,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "efterfest.tk", true }, { "eftotoekspertizbalikesir.com", true }, { "efutbol.tk", true }, + { "eg-localisation.com", true }, { "eg7.co.jp", true }, { "eg7.jp", true }, { "egablo.black", true }, @@ -40611,17 +47274,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "egbert.net", true }, { "egbertsen.tk", true }, { "egc.ink", true }, - { "egdigital.com.au", true }, { "egdsk.ru", true }, { "egegesh.ru", true }, { "egekbb.org", true }, - { "egekenthastanesi.com", true }, { "egeozcan.com", false }, + { "egestor.com.br", true }, { "egevpare.tk", true }, { "egfl.org.uk", true }, { "egg-ortho.ch", true }, { "eggblast.com", true }, { "egge.com", false }, + { "eggel.ch", true }, + { "eggen.dk", true }, { "eggendorfer.at", true }, { "eggendorfer.be", true }, { "eggendorfer.biz", true }, @@ -40641,23 +47305,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eggendorfer.uk", true }, { "eggendorfer.us", true }, { "eggendorfer.wine", true }, - { "eggert.org", true }, { "eggertsvillefiredistrict.gov", true }, { "egglestonyouthcenter.org", true }, { "eggman.tk", true }, + { "eggplantsoftware.com", true }, { "eggqvq.com", true }, { "eggrolls.ml", true }, { "eggy.com.au", false }, { "eggzr.com", true }, { "egh.ir", true }, - { "eghotline.com", true }, { "egiftcards.be", true }, { "egilopaseryh.tk", true }, { "egins.tk", true }, { "egipet-tiz.tk", true }, { "egiptwakacje.tk", true }, { "egitim.academy", true }, + { "egitimpusulam.com", true }, + { "egito.pl", true }, { "egittophilia.tk", true }, + { "eglantier.eu", true }, { "egles.eu", true }, { "eglinlife.net", true }, { "egliseclichy92.fr", true }, @@ -40675,39 +47341,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "egorazarkevich.ga", true }, { "egorka.ml", true }, { "egoroskope.tk", true }, + { "egos-online.com", true }, { "egoscolumn.tk", true }, + { "egotickets.com", true }, { "egotripproductions.org", true }, { "egov4.ch", true }, - { "egovernment-podcast.com", true }, - { "egrasmanipur.nic.in", true }, + { "egproduction.com", true }, { "egreensvape.com", true }, { "egregius.be", false }, { "egres.xyz", true }, { "egretail.no", false }, { "egrojsoft.info", true }, + { "egrouen.net", true }, + { "egroupware.org", true }, + { "egrow.io", true }, { "egrp365.ru", true }, - { "egsky.net", true }, { "egt-bg.com", true }, - { "egt.ee", true }, - { "egu-ev.eu", true }, - { "egu-gmbh.de", true }, + { "egt-digital.com", true }, + { "egt.ee", false }, { "egu.eu", true }, + { "egvilparks.gov", true }, { "egw-ceramica.de", true }, - { "egweb.tv", true }, { "egy-boy.tk", true }, { "egyhometex.com", true }, { "egypt-tourism.ga", true }, { "egypt-tours.tk", true }, - { "egyptamazing.com", true }, + { "egypt-turism.ru", true }, + { "egyptcrops.com", true }, { "egypte.tk", true }, - { "egypten.net", true }, { "egyptenet.tk", true }, { "egypteweb.tk", true }, { "egyptexposed.tk", true }, { "egypthomemaintenance.com", true }, { "egyptian.gq", true }, { "egyptianhak.tk", true }, - { "egyptour.com", true }, { "egytimes.tk", true }, { "egzekucija.tk", true }, { "egzotique.com", true }, @@ -40725,8 +47392,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eheliche-disziplin.schule", true }, { "eheya.net", true }, { "ehipaa.com", true }, + { "ehlers-net.de", true }, { "ehlersdanlos.dk", true }, { "ehlersdanlos.tk", true }, + { "ehliyetsinavsorulari.org", true }, { "ehmsen.nu", true }, { "ehmtheblueline.com", true }, { "ehne.de", true }, @@ -40735,13 +47404,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ehomusicgear.com", true }, { "ehorizon.jp", true }, { "ehpad-ariege.fr", true }, + { "ehr.bg", true }, { "ehr.gov", true }, + { "ehrby.se", true }, { "ehrdata.com", true }, { "ehrenburg.info", true }, { "ehrlichesbier.de", true }, { "ehsehk.com.ph", true }, { "ehtgov.org", true }, - { "ehtnj.com", true }, { "ehtp.pt", true }, { "ehtu.tk", true }, { "ehub.cz", true }, @@ -40752,8 +47422,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ei-bo.org", true }, { "eiao.me", true }, { "eiber.net", true }, + { "eibich.de", true }, { "eichel.eu", true }, { "eichendorffschule.online", true }, + { "eichenrund.de", true }, { "eichinger-stelzl.com", true }, { "eichinger-stelzl.de", true }, { "eichler.work", true }, @@ -40761,21 +47433,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eickhof.us", true }, { "eickhofcolumbaria.com", true }, { "eidelpes.info", true }, + { "eientei.org", true }, + { "eifach.top", true }, { "eifel.website", true }, + { "eiffage.com", true }, { "eiga.com", true }, { "eigenaardig.tk", true }, { "eigenbubi.de", true }, { "eigenetiket.tk", true }, { "eigenpul.se", true }, { "eigenpulse.com", true }, + { "eigentech.com", true }, { "eigenvector.space", true }, { "eigenvector.systems", true }, { "eightballde.luxe", true }, { "eightvirtues.tk", true }, { "eighty-aid.com", true }, { "eightyfour.ca", true }, - { "eightyfour.pictures", true }, { "eightysoft.de", true }, + { "eigp-plc.com", true }, { "eigpropertyauctions.co.uk", true }, { "eihaikyo.com", true }, { "eihei.net", true }, @@ -40783,6 +47459,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eikenskaden.tk", true }, { "eikentafels.nl", true }, { "eiklandenergy.com", true }, + { "eiko-dch.ac.jp", true }, + { "eikoh.nsw.edu.au", true }, { "eikones.tk", true }, { "eikounoayumi.jp", true }, { "eileen.ml", true }, @@ -40791,27 +47469,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eimacs.com", true }, { "eimeko.ch", true }, { "eimmigration.com", true }, + { "ein-itin.com", true }, { "einarkallevig.tk", true }, { "einaros.is", true }, - { "einberufung.com", true }, - { "einbildung.com", true }, + { "eindex.me", false }, { "eine-andere-welt.org", true }, { "einfach-fitz.at", true }, { "einfachkiss.at", true }, { "einheizpreis.de", true }, { "einhorn.space", true }, - { "einigen.com", true }, { "einmonolog.de", true }, { "einreiseanmeldung.de", true }, { "einrichtenonline.com", true }, - { "einrichtwerk.de", true }, { "einsatzstiefel.info", true }, - { "einscube.com", true }, + { "einstein-themanandhismind.net", true }, { "einsteinathome.org", true }, + { "einsteinbros.com", true }, { "einsteincapital.ca", true }, { "einsteinium.fr", true }, { "einsteinmishra.com", true }, { "einsteins.tk", true }, + { "einstokbeer.com", true }, { "eintageinzug.de", true }, { "eintoepfe-bruchsal.de", true }, { "eintracht-rodde.de", true }, @@ -40820,8 +47498,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eipione.com", true }, { "eirastudios.co.uk", true }, { "eirb.fr", true }, + { "eirgroup.com.au", true }, { "eirik.eu", true }, { "eirikyrolae.tk", true }, + { "eis.org.uk", true }, { "eisaev.ru", true }, { "eisblau.org", true }, { "eisei-iinkai.com", true }, @@ -40833,19 +47513,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eisenstark.de", true }, { "eisernes-kreuz.tk", true }, { "eiskratzer-bedrucken.de", false }, - { "eisma.nl", true }, { "eit-solutions.com.au", true }, { "eit-web.de", false }, - { "eitat.com", true }, + { "eitbtaldea.eus", true }, { "eivanec.com", true }, { "eiyoushi-shigoto.com", true }, + { "ej.gov", true }, { "ej.uz", true }, + { "ejabi-infosec.com", true }, + { "ejbelectrical.com", true }, { "ejcabinets.com", true }, { "ejderrapgott.de", true }, { "ejdv-anmeldung.de", true }, { "ejelectrical-qld.com.au", true }, { "ejerciciosmemoria.com", true }, - { "ejiao.com", true }, { "ejit.eu", true }, { "ejkathome.nl", true }, { "ejkatwork.nl", true }, @@ -40870,10 +47551,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ejkuniversiteit.nl", true }, { "ejkweb.nl", true }, { "ejkwebdesign.nl", true }, + { "ejsc.co.jp", true }, { "ek-networks.de", false }, { "ekalisch.de", true }, + { "ekamfoundationmumbai.org", true }, { "ekamus.tk", true }, + { "ekatavirghost.com", true }, { "ekati.ru", true }, + { "ekaviar.com", true }, { "ekawaiishop.com", true }, { "ekb-avia.ru", false }, { "ekcomp.com", true }, @@ -40883,11 +47568,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ekeblock.com", true }, { "ekedc.com", true }, { "ekedp.com", true }, + { "ekf.ee", true }, + { "ekfgroup.com", true }, + { "ekgh.dk", true }, { "ekhabar.ml", true }, { "ekho.tk", true }, { "ekimaeseitai.com", true }, { "ekimma.com", true }, - { "ekimov.com", true }, { "ekiphost.com", true }, { "eklepka.com", true }, { "eklitzke.org", true }, @@ -40897,55 +47584,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ekobudisantoso.net", true }, { "ekocleaningllc.com", true }, { "ekoclin.com", true }, - { "ekodiena.com", true }, - { "ekogg.org.uk", true }, { "ekogroszekpieklo.pl", true }, { "ekokpandm.tk", true }, { "ekol-2001.tk", true }, + { "ekol.com", true }, { "ekole.shop", true }, { "ekologie.tk", true }, { "ekologija.tk", true }, { "ekonbenefits.com", true }, - { "ekong366.com", true }, { "ekonomika.tk", true }, { "ekonomipolitik.tk", true }, + { "ekonomival.se", true }, { "ekonomska.tk", true }, { "ekophone.bg", true }, { "ekosaltis.lt", true }, { "ekosf.ru", true }, + { "ekospajzka.cz", true }, { "ekostecki.de", true }, { "ekouniejow.pl", true }, + { "ekowibowo.com", true }, { "ekozercy.pl", true }, { "ekpj.jp", true }, + { "ekranoplan-lun.ru", true }, { "ekranos.me", true }, { "ekre.club", true }, + { "ekron.at", true }, { "eks.news", true }, { "eksik.com", false }, { "eksisozluk.com", false }, - { "eksk.pl", true }, { "ekspert.tk", true }, { "ekspertemerytalny.pl", true }, { "eksploraz.com", true }, - { "ekspres.az", true }, - { "ekstremno.com", true }, - { "ekuma.tk", true }, + { "ekspress.ee", true }, + { "ektefa.sa", true }, { "ekvastra.in", true }, { "ekwador.com", true }, { "ekyu.moe", true }, - { "ekz-crosstour.ch", true }, - { "ekzarta.ru", false }, { "ekzcrosstour.ch", true }, { "ekzotika.tk", true }, { "el-cell.com", true }, { "el-hossari.com", true }, + { "el-masri.bg", true }, + { "el-mass.com", true }, { "el-mundo.tk", true }, { "el-tatwer.tk", true }, { "ela-n.de", true }, { "elaax.de", false }, - { "elabela.com.br", true }, { "elabib.com", true }, { "elad.wtf", true }, { "eladalfassa.com", true }, + { "eladerezo.com", true }, + { "eladgames.com", true }, + { "elahejalilvand.com", true }, { "elaheze.com", false }, { "elahuehuete.art", true }, { "elainerock.com", true }, @@ -40954,6 +47644,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elana.lt", true }, { "elandador.com.mx", true }, { "elanterna.ro", true }, + { "elanusparts.com", true }, + { "elanza.nl", true }, { "elaon.de", false }, { "elar.tk", true }, { "elarcoreu.com", true }, @@ -40974,81 +47666,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elba-elba.tk", true }, { "elba-hotel.tk", true }, { "elbaal.gov", true }, - { "elbaradei.com", true }, { "elbersdometechniek.tk", true }, { "elbetech.net", true }, { "elbiaadmin.sk", true }, - { "elbienestar.com", true }, + { "elbiahosting.sk", true }, { "elbir.tk", true }, { "elbitsystems.com", true }, { "elblogdezoe.es", true }, { "elbohlyart.com", true }, - { "elboogieboutique.com", true }, - { "elbrifin.com", true }, { "elbrus360.ru", true }, { "elbrutoconeloso.tk", true }, - { "elbuenpan.cl", true }, { "elburnfire.gov", true }, { "elbvision.de", true }, { "elbwiese.de", true }, { "elcactus.tk", true }, { "elcajon.gov", true }, + { "elcambioavanza.co", true }, { "elcanonjusto.tk", true }, { "elcarajo.tk", true }, { "elchamandelaprosperidad.org", true }, + { "elcient.com", true }, { "elcigaro.bg", true }, { "elcin.tk", true }, { "elcirculo.mx", true }, - { "elcomat.com", true }, { "elcontadorsac.com", true }, { "elcontrol.tk", true }, { "elcosmos.tk", true }, { "elcosteno.tk", true }, - { "elcot.in", true }, { "elcozinante.com", true }, { "elcuadernodefilosofia.tk", true }, - { "elderblade.com", true }, + { "eldarom.ro", true }, { "eldercare.gov", true }, - { "eldercaring.ca", true }, { "elderdevelopmentgroup.com", true }, + { "elderindex.org", true }, { "elderjustice.gov", true }, { "elderplan.org", true }, { "elderreviews.gq", true }, { "elderscrolls.tk", true }, { "eldevo.com", true }, - { "eldiariodemof.com", true }, { "eldiedesign.com", true }, { "eldisagjapi.de", true }, { "eldoradocylinders.com", true }, { "eldoradoil.gov", true }, - { "eldoradoinsurance.com", true }, { "eldrid.ge", true }, { "ele-sm.com", true }, + { "eleanorleightrio.com", true }, { "elearningi.pl", true }, { "elearningpilot.com", true }, - { "elecbuz.com", true }, - { "elecfair.com", true }, + { "elecbuz.com", false }, + { "eleconomista.com.ar", true }, { "elecpromo.com", true }, { "electerious.com", true }, { "electicofficial.com", false }, { "electionpresidentiellegabon2009.ga", true }, { "electionrunners.com", true }, + { "elections.ca", true }, + { "elections.nz", true }, { "electionsbycounty.com", true }, { "electionsdatabase.com", true }, { "electionsshelbytn.gov", true }, + { "electmikewaters.com", true }, { "electr0sheep.com", true }, { "electra.co.nz", true }, - { "electrafk.cl", true }, { "electragirl.com", true }, { "electras.cf", true }, + { "electrastart.nz", true }, { "electric-clippers.tk", true }, - { "electric-fencingjohannesburg.co.za", true }, { "electric-samara.tk", true }, { "electric-vault.co.uk", true }, { "electricagoura.com", true }, { "electricagourahills.com", true }, { "electrical-schools.com", true }, - { "electrical.cn", true }, { "electricalagoura.com", true }, { "electricalagourahills.com", true }, { "electricalandelectronicsengineerinformation.ga", true }, @@ -41057,7 +47745,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electricalconejovalley.com", true }, { "electricaldosvientos.com", true }, { "electricalengineers.tk", true }, - { "electricalfencinggermiston.co.za", true }, { "electricalhiddenhills.com", true }, { "electricallakesherwood.com", true }, { "electricalmalibu.com", true }, @@ -41073,11 +47760,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electriccalabasas.com", true }, { "electriccamarillo.com", true }, { "electriccitysf.com", true }, + { "electriccoin.co", true }, { "electricconejovalley.com", true }, { "electricdosvientos.com", true }, { "electricdreams.xyz", true }, - { "electricfenceboksburg.co.za", true }, - { "electricfencesandton.co.za", true }, { "electricfencingpinetown.co.za", true }, { "electricfireplaces.tk", true }, { "electricgatemotoralberton.co.za", true }, @@ -41090,7 +47776,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electrichome.fr", false }, { "electricianagoura.com", true }, { "electricianagourahills.com", true }, - { "electricianbedfordview.co.za", true }, { "electriciancalabasas.com", true }, { "electriciancamarillo.com", true }, { "electricianconejovalley.com", true }, @@ -41104,14 +47789,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electricianoakpark.com", true }, { "electricianpacificpalisades.com", true }, { "electricianpretoria24-7.co.za", true }, + { "electricianschooledu.org", true }, { "electriciansimivalley.com", true }, { "electricianthousandoaks.com", true }, { "electricianwestlakevillage.com", true }, { "electricien-44.fr", true }, { "electricienasnieres.fr", true }, { "electricimagination.co.uk", true }, - { "electricit.uk", true }, { "electricity.tk", true }, + { "electricityplans.com", true }, { "electriclakesherwood.com", true }, { "electricmalibu.com", true }, { "electricmoorpark.com", true }, @@ -41123,14 +47809,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electricthousandoaks.com", true }, { "electricwestlakevillage.com", true }, { "electriczone.tk", true }, + { "electrobraid.com", true }, + { "electrocity.ie", true }, { "electrocomplect.com.ua", true }, { "electrodomesticos.tk", true }, { "electrodomesticosmiro.com", true }, { "electroforum.tk", true }, { "electrofreakz.tk", true }, + { "electrogenic.co.uk", true }, { "electrohelp.ga", true }, { "electrolandia.tk", true }, { "electrolivefest.spb.ru", true }, + { "electromagnetichealth.org", true }, { "electromagnetism.gq", true }, { "electromec.biz", true }, { "electromec.eu", true }, @@ -41140,10 +47830,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electromenager.tk", true }, { "electrominati.com", true }, { "electromotor.tk", true }, + { "electroneek.com", true }, { "electronic-ignition-system.com", true }, { "electronicafacil.net", true }, { "electronicaripol.es", true }, - { "electronicayseguridadmonserrate.com", true }, { "electronicfasteners.com", false }, { "electronicssrit.tk", true }, { "electronictucuman.com", true }, @@ -41151,6 +47841,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electronis.ru", true }, { "electronmag.tk", true }, { "electronsweatshop.com", true }, + { "electroschematics.com", true }, { "electrosoftcloud.com", false }, { "electrostatics.com", true }, { "electrostore.com.ec", true }, @@ -41158,35 +47849,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "electroyclima.es", true }, { "electrum.org", true }, { "eled.io", true }, - { "elefantebrasil.com.br", true }, + { "elefanten-cup.de", true }, { "elefsisport.gr", false }, { "elegance-lingerie.com", true }, { "elegance-sm.com", true }, { "elegance96.tk", true }, { "elegancecement.com", true }, - { "eleganceperfumes.com.br", true }, { "elegant-design.tk", true }, { "elegant-techno.com", true }, { "eleganta.ga", true }, + { "elegantanal.com", true }, + { "elegantbrows.com", true }, + { "elegantchaos.beauty", true }, { "elegantfamilyhotelsandresorts.com", true }, + { "elegantlacebridal.com", true }, { "elegantlatex.tk", true }, { "elegantly-clean.co.uk", true }, - { "elegantperfume.com", true }, { "eleganza.ga", true }, { "elegro.cz", true }, { "eleicoes2018.com", true }, { "elejordemarketingconsultancy.com", true }, { "eleken.jp", true }, - { "elekius.ml", true }, { "elekner.tk", true }, + { "elektiriklidireksiyontamiri.com", true }, { "elektiriktasarruf.tk", true }, - { "elektrikal.com", true }, { "elektriker-notdienst-zentrale.de", true }, { "elektrikvesukesintileri.com", true }, { "elektrilevi.com", true }, { "elektrilevi.ee", true }, { "elektrilevi.eu", true }, - { "elektrische-zahnbuerste24.de", true }, { "elektro-adam.de", true }, { "elektro-diehm.de", true }, { "elektro-doerr.com", true }, @@ -41198,9 +47889,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elektro-metz.de", true }, { "elektro-pfeiffer.de", true }, { "elektro-praha10.cz", true }, - { "elektro-rossbach.de", true }, - { "elektro-roth.de", true }, + { "elektro-reibsch.de", true }, { "elektro-stock.de", true }, + { "elektro-wandelt.de", true }, { "elektro-woerdehoff.de", true }, { "elektrobusch.com", true }, { "elektroclub.tk", true }, @@ -41215,24 +47906,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elektromet.pl", true }, { "elektrometz.de", true }, { "elektromobil-zubehoer.de", true }, - { "elektromont.tk", true }, + { "elektromosev.cz", true }, { "elektromotor.tk", true }, + { "elektron-elektrotechnik.de", true }, { "elektronickakancelar.cz", true }, + { "elektroniksigarasehri1.com", true }, { "elektronische-post.org", true }, { "elektronix.tk", true }, + { "elektronomi.com", true }, { "elektropartner.nu", true }, { "elektropost.org", true }, { "elektroprom.tk", true }, - { "elektroruoff.de", true }, { "elektrosety.com.ua", true }, { "elektrotango.tk", true }, { "elektrotechnik-heisel.de", true }, { "elektrotechnik-kaetzel.de", true }, { "elektrotechnik-schreck.de", true }, + { "elektrotechniker-beck.de", true }, { "elektrownie-tanio.net", true }, { "elektryczka.pl", true }, { "elelenin.cf", true }, + { "elemanpersonelalimi.com", true }, { "elemenop.tk", true }, + { "element.hr", true }, { "element.io", true }, { "elemental.software", true }, { "elementalengine.com", true }, @@ -41249,10 +47945,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elementarywave.com", true }, { "elementblend.com", true }, { "elementbookings.com", true }, - { "elementricks.com", true }, + { "elementedigitale.ro", true }, + { "elementorfa.ir", true }, { "elements-space-time.com", true }, { "elements.guide", true }, { "elementshop.co.uk", true }, + { "elementsofeducation.org", true }, { "elementsoftware.tk", true }, { "elemistlarp.com", true }, { "elena-paparizou.tk", true }, @@ -41262,7 +47960,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elena-soset.ml", true }, { "elena-soset.tk", true }, { "elenagherta.ga", true }, - { "elenamuerza.com", true }, { "elenapulizieroma.it", true }, { "elenaristeska.tk", true }, { "elenaristeskaweb.tk", true }, @@ -41271,6 +47968,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elenatranslations.nl", true }, { "elenatroncone.tk", true }, { "elenavoce.cf", true }, + { "elenayulkina.ru", true }, + { "elencantotecate.com", true }, { "elencinar.tk", true }, { "eleni.no", true }, { "elenorsmadness.org", true }, @@ -41281,16 +47980,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eleonorapapallo.tk", true }, { "eleonorengland.com", true }, { "eleonrp.tk", true }, + { "elephant-orchestra.com", true }, + { "elephant-orchestra.cz", true }, { "elephantbasslab.tk", true }, { "elephantia.cf", true }, + { "elephantorchestra.cz", true }, { "elephants.net", true }, { "elephants.tk", true }, { "elepover.com", true }, { "elesconditedelola.com", true }, - { "eletesstilus.hu", true }, { "eletminosegert.ro", true }, + { "eletom.pl", true }, { "eletor.com", true }, { "eletor.pl", true }, + { "eletrati.com", true }, + { "eletromaxautopecas.com.br", true }, { "eletrotel.com", true }, { "elettricista-roma.it", true }, { "elettricista-roma.org", true }, @@ -41298,20 +48002,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elettricisti.roma.it", true }, { "elettrodomestici.roma.it", true }, { "elettrolinkimpianti.it", true }, - { "elettronicagroup.com", true }, + { "elettronew.com", true }, { "eleusis-zur-verschwiegenheit.de", true }, { "elev8fashion.ca", true }, { "elevacionesrama.com", true }, { "elevanhairdressing.co.uk", true }, { "elevateandprosper.com", true }, - { "elevated-esthetics.com", true }, { "elevatedarborcare.com.au", true }, - { "elevatenutrition.com", true }, + { "elevatewebdesigns.com", true }, { "elevationcreative.net", true }, { "elevationplumbingandheating.com", true }, { "elevationtech.co.za", true }, { "elevator.ee", true }, { "elevatoraptitudetest.com", true }, + { "elevaweb.cl", true }, { "elevelo.eu", true }, { "elevenbeta.tk", true }, { "elevenensemble.tk", true }, @@ -41323,6 +48027,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elexprimidor.com", true }, { "elfe.de", true }, { "elfejoyeux.com", true }, + { "elfi.com", true }, { "elfix.sk", true }, { "elforat.tk", true }, { "elforno.gr", true }, @@ -41330,7 +48035,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elfranco.tk", true }, { "elfrancotirador.tk", true }, { "elfring.eu", true }, - { "elfuerteclamor.org", true }, { "elfussports.com", true }, { "elgancho.tk", true }, { "elgargajo.tk", true }, @@ -41341,16 +48045,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elgoog.im", true }, { "elgosblanc.com", true }, { "elgraffo.tk", true }, + { "elgranodete.com", true }, { "elgrecohotel.gr", true }, { "elguillatun.cl", true }, { "elgustdecreixer.cat", true }, { "elgustodecrecer.es", true }, - { "elhall.ru", false }, + { "elhall.pro", false }, { "elhamadimi.com", true }, - { "elherraderoloscabos.com", true }, { "elhombrepez.tk", true }, { "elhorizontal.com", true }, { "elhossari.com", true }, + { "elhuesero.com", true }, { "eliamakingmemories.co.nz", true }, { "eliamakingmemories.com", true }, { "eliang.tk", true }, @@ -41359,14 +48064,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eliasfox.com", true }, { "eliasfranklinn.tk", true }, { "eliasojala.me", true }, - { "eliasong.com", true }, + { "eliasong.com", false }, { "eliaswendt.com", false }, - { "eliaswendt.de", false }, { "eliaustvarjaspomine.si", true }, { "eliav.tk", true }, { "elib.com", true }, { "elibidore.ml", true }, { "elibom.com", true }, + { "elicdn.com", true }, + { "elicom-online.com", true }, { "elie.net", true }, { "elielaloum.com", true }, { "elif.sk", true }, @@ -41375,9 +48081,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elifo.com.cn", true }, { "eligasht.com", true }, { "eligibilis.com", true }, - { "eligible.com", true }, + { "eligibility.com", true }, { "eligibleapi.com", true }, { "eligrey.com", true }, + { "eliis.eu", true }, { "elijahbrown.tk", true }, { "elijahgrey.com", true }, { "elikers.ml", true }, @@ -41386,6 +48093,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eliminercellulite.com", true }, { "elimit.eu", true }, { "elimitecreamforsale.ga", true }, + { "elimperiolatino.com", true }, { "elina.pp.ua", true }, { "elinaflower.com", true }, { "eline168.com", true }, @@ -41396,6 +48104,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elinspector.tk", true }, { "elinternadolagunanegra.tk", true }, { "eliolita.com", true }, + { "eliomotors.com", true }, + { "eliotchs.org", true }, { "eliott.cc", true }, { "eliottlavier.com", true }, { "elisa.ee", false }, @@ -41411,12 +48121,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elisechristie.com", true }, { "eliseshivamber.com", true }, { "elisetriestocook.com", true }, + { "elisity.com", true }, + { "eliskamyskova.cz", true }, { "elit-fitnes.tk", true }, { "elit-host.tk", true }, + { "elit-logistic.ru", true }, + { "elit.ro", true }, { "elitatasehirescort.com", true }, { "elite-design.tk", true }, { "elite-enc.tk", true }, { "elite-forums.tk", true }, + { "elite-magazin.de", true }, { "elite-nakhodka.tk", true }, { "elite-porno.ru", true }, { "elite-tools.tk", true }, @@ -41426,23 +48141,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elitebasementsohio.com", true }, { "elitebike.com.co", true }, { "eliteco.tk", true }, + { "elitecontentmarketer.com", true }, { "elitedns.info", true }, + { "elitedns.org", true }, { "elitegameservers.net", true }, { "elitegaragedoors247.com", true }, { "elitehouse.tk", true }, + { "eliteimsolutions.com", true }, { "elitelandscapedesigns.ca", true }, + { "elitemdsupply.com", true }, { "elitemud.tk", true }, { "elitenovice.tk", true }, - { "elitepainmanagement.com", true }, + { "eliteny.com", true }, { "elitephysiotherapy.com.au", true }, + { "elitepsychiatryandwellness.com", true }, + { "elitepumps.net", true }, { "eliterequestboard.tk", true }, - { "elitesidingandgutters.com", true }, { "elitesim.ga", true }, { "elitesquadmodz.tk", true }, + { "elitetopic.com", true }, { "elitetoy.com.br", true }, + { "elitewealth.in", true }, { "elitexcomputing.com", true }, { "elitexxx.com", true }, - { "elithub.com", true }, { "elithus.se", true }, { "elitrahealth.com", true }, { "elitsa.gr", true }, @@ -41454,35 +48175,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elizabethgreenfield.com", true }, { "elizabethmacdonaldbooks.com", true }, { "elizabethrominski.com", true }, - { "elizabethsbridalmanor.com", true }, { "elizabethtaderera.me", true }, { "elizabethtown-ny.gov", true }, + { "elizaevespornstar.com", true }, { "elizafranklin.com", true }, { "elizaminami.com.br", true }, { "eljay.cc", true }, { "eljef.me", true }, + { "elk.moe", true }, + { "elka-holzwerke.de", true }, { "elka-piter.ga", true }, { "elkampeuzo-musique.tk", true }, { "elkarizan.com", true }, - { "elkeniels.com", true }, { "elkgroveil.gov", true }, - { "elkhalillaw.com", true }, { "elkhaus.de", true }, { "elki-musik.ch", true }, - { "elkim.cz", true }, { "elkmontal.gov", true }, { "elkmotel.at", true }, + { "elkodaily.com", true }, { "elkonsults.com", true }, - { "elkoy.org", true }, + { "elkovplus.cz", true }, + { "elkpointmasonry.com", true }, { "elkvalley-nsn.gov", true }, { "ell-net.tokyo", true }, { "ella-kwikmed.com", false }, { "ellak.gr", true }, + { "ellanovapornstar.com", true }, + { "ellanurse.co.il", true }, { "ellasbubbles.com", true }, { "ellatotal.com", true }, - { "elldus.de", true }, { "elle-fanning.info", true }, + { "elle-weine.de", true }, { "elle.se", true }, + { "elleaura.fr", true }, { "elledecor.tk", true }, { "ellegaard.dk", true }, { "ellemental.me", true }, @@ -41492,14 +48217,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ellenpage.tk", true }, { "ellensburgwa.gov", true }, { "ellesoft-freeware.tk", true }, - { "ellevit.ch", false }, + { "ellevate.com", true }, { "ellhofen-peccioli.de", true }, { "elliboettcher.de", true }, { "ellierider.com", true }, { "elligre.tk", true }, + { "elliman.com", true }, { "ellinaras.tk", true }, - { "elliot.work", true }, - { "elliot.wtf", true }, + { "ellingworth.co.uk", true }, + { "elliot.cat", true }, + { "elliotbrandwein.com", true }, + { "elliotlewisms.com", true }, { "elliottbernstein.com", true }, { "elliottgaming.ga", true }, { "elliottinsuranceservices.com", true }, @@ -41508,12 +48236,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ellipticalmachine.tk", true }, { "elliquiy.com", true }, { "ellisamusements.co.uk", true }, + { "elliscoscanner.com", true }, { "ellisleisure.co.uk", true }, { "ellisvanlaarhoven.tk", true }, { "elliteshop.vn", true }, { "elliyoung.com", true }, { "elloadingjr.ga", true }, - { "ellsinger.me", true }, + { "ellty.com", true }, + { "ellyscakes.com", true }, + { "elmagdclean.com", true }, { "elmahost.net", true }, { "elmandria.com", true }, { "elmarchive.ir", true }, @@ -41521,43 +48252,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elmejordance.tk", true }, { "elmenreich.tk", true }, { "elmerboroughnj.gov", true }, + { "elmermx.ch", true }, { "elmeson.tk", true }, { "elmion.cloud", true }, { "elmo.ee", true }, - { "elmod.com", true }, { "elmolar.tk", true }, { "elmolist.tk", true }, + { "elmoro.mx", true }, { "elmresan.ir", true }, { "elmundodeloso.tk", true }, { "elmwoodmi.gov", true }, - { "elnababy.ro", true }, { "elnan.do", true }, { "elnegocioperfecto.tk", true }, - { "elnidovoyages.com", true }, + { "elnodiacademy.com", true }, { "elo-forum.org", true }, { "elo-rocket.com", true }, { "elobservador.tk", true }, { "eloca.ls", true }, { "elocals.me", true }, + { "elodees.com", true }, { "elodieclerc.ch", true }, { "elodrias.de", true }, + { "elog.tokyo", true }, { "eloge.se", true }, { "elohellp.com", false }, { "eloiseponnau.com", true }, { "elok.eu.org", true }, - { "eloksal.com", true }, - { "elolo.ru", true }, { "elon.gov", true }, { "elona-wvw.de", true }, { "elonaspitze.de", true }, { "elonbase.com", true }, - { "elonm.ru", false }, { "elonma.gov", true }, - { "elonmusktoday.com", true }, { "elontime.de", true }, + { "elorbe.com", true }, { "elosoavila.tk", true }, { "elosrah.com", false }, - { "elotec-lichtenfels.de", true }, { "elovip.com.br", true }, { "eloxt.com", true }, { "elpac.info", true }, @@ -41568,15 +48297,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elpandemonio.tk", true }, { "elpaseadordeperros.com", true }, { "elpellejodelabreva.tk", true }, - { "elpelusa.es", true }, { "elperdigon.tk", true }, - { "elperiodicodeycodendaute.es", true }, - { "elperiodo.net", true }, + { "elperiodicodelaenergia.com", true }, { "elphnt.io", true }, { "elpincho.tk", true }, + { "elpitazo.net", true }, { "elplugins.xyz", true }, { "elpo.net", true }, { "elpoderdelespiritu.org", true }, + { "elposconflicto.org", true }, { "elpreciosostud.com", true }, { "elprincipevegeta.tk", true }, { "elprofeshows.com", true }, @@ -41587,25 +48316,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elradix.be", true }, { "elradix.eu", true }, { "elranchofeliz.org", true }, + { "elrealsw.com", true }, { "elrebollar.tk", true }, + { "elrefugiodelpirata.com", true }, { "elrenook.gov", true }, - { "elreportero.net", true }, { "elreportero.tk", true }, + { "elreserva.com", true }, { "elri.blog", true }, { "elrincondelotaku.tk", true }, - { "elrincondeltrabajo.com", false }, { "elrinconderovica.com", true }, { "elron.ee", false }, - { "elrond.com", true }, { "elrubio.tk", true }, { "elsadonaire.tk", true }, { "elsas.tk", true }, + { "elsassdestination.fr", true }, { "elsbouslanostraaficio.tk", true }, { "elsector7.tk", true }, { "elsemanariodesalamanca.tk", true }, { "elsenzhafen.de", true }, { "elsg.co.uk", true }, - { "elshadaysemijoias.com.br", true }, { "elshop1eu.com", true }, { "elshou.com", true }, { "elskling.no", true }, @@ -41613,17 +48342,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "elsuccionador.com", true }, { "elsvanderlugt.nl", true }, { "elsvanmerhaeghe.be", true }, - { "elsweb.net", true }, { "elsword.moe", false }, + { "elsylist.com", true }, { "elta.com.ua", true }, { "eltair.com", true }, { "eltar.pl", true }, { "eltconsultants.com.mx", true }, - { "eltd.com.vn", true }, + { "eltec.es", true }, { "eltern-verein.ch", true }, { "elternbeiratswahl.online", true }, - { "elternforum-birmensdorf.ch", true }, { "elternverein-utzenstorf.ch", true }, + { "elternzimmer.de", true }, { "eltip.click", true }, { "eltjon.duckdns.org", true }, { "eltlaw.com", true }, @@ -41638,43 +48367,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eluancm.net", true }, { "elucron.com", true }, { "eluhome.de", true }, + { "elusivetranslations.com", true }, { "eluvade.com", true }, { "eluvio.com", true }, + { "elvac.eu", true }, + { "elvalordelsaliments.cat", true }, { "elvcino.com", false }, - { "elvea.sk", true }, - { "elvendrim.com", true }, { "elvendrim.xyz", true }, { "elverdaderoamor.tk", true }, { "elvikom.co.uk", true }, - { "elvikom.pl", true }, { "elviraszabo.com", true }, + { "elvis-atouchofgold.com", false }, { "elvis-presley.tk", true }, { "elvismania.tk", true }, { "elvispresley.net", true }, + { "elvisvrconnect.co.uk", true }, + { "elvonet.hr", true }, { "elvorti.bg", true }, { "elvorti.com", true }, + { "elvtr.com", true }, { "elwave.org", true }, { "elweronete.tk", true }, { "elwix.com", true }, { "elyazmusic.com", true }, - { "elycoin.io", true }, + { "elycoin.io", false }, { "elypia.space", true }, { "elysiandigital.co", true }, { "elysiria.fr", true }, { "elysium-team.tk", true }, { "elysium.coop", true }, { "elysiumware.com", true }, + { "em-biotek.cz", false }, + { "em-racing.com", true }, + { "em-racing.de", true }, { "em888.vip", false }, { "emabot.tk", true }, { "emacitylife.com", true }, { "emad7.tk", true }, + { "emagazine.com", true }, { "emaging-productions.fr", true }, { "emaging.fr", true }, { "email-pipeline.xyz", true }, { "email-verifier.tk", true }, { "email.repair", false }, { "email24.cf", true }, + { "email4u.at", true }, { "emailable.com", true }, + { "emailablev.com", true }, { "emailadressen.nl", true }, { "emailalaperformance.fr", true }, { "emailalias.nl", true }, @@ -41692,10 +48431,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emailprivacytester.com", true }, { "emailprocessorpro.gq", true }, { "emailpursuits.com", true }, + { "emailroundup.com", true }, { "emailservers.tk", true }, + { "emailspedia.com", true }, { "emailtemporal.org", false }, + { "emakicms.com", true }, { "emaks.tk", true }, { "emalm.com", true }, + { "emamiltd.in", true }, { "emancipator.com", true }, { "emanol.co.uk", true }, { "emanuel.photography", true }, @@ -41703,27 +48446,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emanuelachiriaco.tk", true }, { "emanuelduss.ch", true }, { "emanuelemazzotta.com", true }, - { "emapgo.com", true }, { "emaps.tk", true }, { "emaratalyoum.com", true }, + { "emarhotel.bg", true }, { "emarketingmatters.com", true }, { "emas-beja.pt", true }, { "emasex.es", true }, { "emater.com", true }, { "emavending.club", true }, { "emavok.eu", true }, + { "emaygroup.co", true }, { "emazrin.tk", true }, + { "emazzanti.net", true }, { "embarcados.com.br", true }, { "embarkboathire.com.au", true }, { "embassycargo.eu", true }, + { "embawood.az", true }, { "embebelo.com", true }, { "embedded.com", true }, { "embelgium.org", true }, + { "embelize.com", true }, { "embellir-aroma.com", true }, { "embellir-kyujin.com", true }, + { "embellishop.com", true }, + { "ember.co", true }, + { "emberit.com", true }, { "emberlife.com", true }, { "embien.co", true }, - { "embien.in", true }, { "embodiaacademy.com", true }, { "embodiaapp.com", true }, { "embodied.vision", true }, @@ -41732,15 +48481,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "embox.net", true }, { "embracecontext.com", true }, { "embraceni.org", true }, + { "embracer.com", true }, { "embracethedarkness.co.uk", true }, { "embracezine.tk", true }, + { "embraco.com", false }, { "embryologist.info", true }, { "embryooptions.com", true }, { "emby.cloud", true }, { "emby.live", true }, + { "emccglobal.org", true }, { "emceemanic.tk", true }, { "emcentrix-com-site-mvc.azurewebsites.net", true }, - { "emchat.cloud", false }, { "emchatnetwork.com", true }, { "emcspotlight.com", true }, { "emdadkhodrokaraj.ir", true }, @@ -41751,13 +48502,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emdrupholm.dk", true }, { "emdvcorasia.com", true }, { "emdynint.io", true }, - { "emedos.es", true }, + { "emed.com", false }, + { "emedpractice.com", true }, { "emeetattd.ddns.net", true }, + { "emeklifinans.com", true }, { "emeliecrystal.net", true }, { "emeliefalk.se", true }, { "emeliemai.com", true }, { "emelies-inspiration.tk", true }, { "ememsei.com", true }, + { "emenaspa.com", true }, { "emenshop.cf", true }, { "emenshop.ga", true }, { "emenshop.ml", true }, @@ -41768,39 +48522,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emeraldcoastrideshare.com", true }, { "emeraldcoasturgentcare.com", true }, { "emeraldheights.tk", true }, - { "emeraldislerealty.com", true }, { "emeraldshield.com", true }, { "emeres.tk", true }, { "emergency-broadcast-system.tk", true }, { "emergency-federal-register.gov", true }, - { "emergencyautolocksmithmanchester.com", false }, - { "emergencycommand.us", true }, + { "emergencyhvacservices.com", true }, + { "emergencymanagementedu.org", true }, { "emergencyportal.tk", true }, { "emergentvisiontec.com", true }, { "emergenzaduepuntozero.it", true }, - { "emergingindustryassociation.org", true }, { "emergingindustryprofessionals.com", true }, { "emero.de", false }, { "emersoncanada.ca", true }, { "emersonreview.tk", true }, + { "emersya.com", true }, { "emex.ro", true }, { "emffren.com.tr", true }, { "emfwk.com", true }, - { "emg-management.cd", true }, + { "emgadvisors.com", true }, { "emi.im", true }, { "emielraaijmakers.nl", true }, { "emigrantes.tk", true }, { "emigratieplanner.com", true }, { "emil-dein-baecker.com", true }, { "emil-dein-baecker.de", true }, - { "emil-reimann-lieferservice-stuttgart.de", false }, { "emil-reimann.com", true }, { "emil-reimann.de", true }, { "emil.click", false }, - { "emil.one", true }, + { "emil.one", false }, { "emilecourriel.com", true }, { "emileon.gr", true }, { "emilianomaccaferri.com", true }, + { "emiliaperkkola.fi", true }, { "emiliaromagnaeconomy.it", true }, { "emiliederavinspain.tk", true }, { "emiliehouse.net", true }, @@ -41826,32 +48579,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emily-website.tk", true }, { "emily.moe", true }, { "emilybellydance.com.au", true }, - { "emilyjohnson.ga", true }, { "emilymarques.ga", true }, { "emilypennock.co.uk", true }, { "emilypennock.com", true }, + { "emilysweet.com", true }, { "emilywufaith.tk", true }, { "emina-arapovic.tk", true }, { "eminafans.tk", true }, { "emindweb.com", true }, { "eminem.kim", true }, + { "eminencepools.com", true }, + { "emirabiz.com", false }, { "emirates247.com", true }, - { "emiratesoffers.com", true }, + { "emiratesairline.co.uk", true }, { "emirefek.net", true }, { "emirichardson.com", true }, - { "emisia.com", true }, { "emisoralavozdedios.tk", true }, { "emissionsgroup.com", true }, { "emissionssafe.org", true }, { "emita.ee", true }, { "emivauthey.com", false }, + { "emkan-furniture.com", true }, { "emkanrecords.com", false }, - { "emkei.cz", true }, { "emkode.pl", true }, { "emkrivoy.com", true }, - { "emlakvar.com", true }, + { "emlcloud.com", true }, { "emls.fr", true }, - { "emlyn.xyz", true }, { "emma-central.tk", true }, { "emma-o.com", true }, { "emma-secret.com", true }, @@ -41861,14 +48614,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emmadreams.net", true }, { "emmagarland.com", true }, { "emmajayne.tk", true }, + { "emmalegalnurse.com", true }, { "emmaliddell.com", false }, { "emmanuelle-et-julien.ch", true }, { "emmanuellecerat.ca", true }, { "emmanuelorocker.com", true }, - { "emmasfunerals.uk", true }, + { "emmaowl.com", true }, { "emmastarr.net", true }, { "emmaste.edu.ee", true }, { "emmastree.com", true }, + { "emmauspa.gov", true }, { "emmawatsonking.tk", true }, { "emmawatsononline.tk", true }, { "emmdy.com", false }, @@ -41876,33 +48631,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emmedicom.tk", true }, { "emmepole.tk", true }, { "emmerdale.me.uk", true }, + { "emmetcountyia.gov", true }, { "emmiwelentain.com", true }, { "emmynet.de", true }, { "emo-poris.com", true }, { "emo.ie", true }, - { "emobilityforum.org", true }, { "emocionado.com", true }, { "emocionestlp.com", true }, { "emocionypensamiento.com", true }, { "emocje.com", true }, - { "emocto.com", true }, { "emoforum.tk", true }, + { "emoji-meaning.org", true }, { "emoji.web.tr", true }, + { "emojikeyboard.top", true }, { "emojiteka.pl", true }, + { "emojiterra.com", true }, { "emolafarm.com", true }, { "emolar.com", true }, { "emond-usedcars.net", false }, + { "emoneycircle.com", true }, { "emonovo.com", true }, { "emonsarkar.tk", true }, - { "emoon.jp", true }, { "emopics.com", true }, { "emotality.com", true }, { "emote.bot", true }, { "emotebank.com", true }, { "emotebot.com", true }, - { "emoteknoloji.com", true }, { "emotionalonlinestorytelling.com", true }, + { "emotionsanonymous.org", true }, { "emotionsgroup.kz", true }, + { "emotiv.pe", true }, { "emotive.productions", true }, { "emoxie.com", false }, { "empadaoportugal.com.br", true }, @@ -41910,18 +48668,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "empathogens.com", true }, { "empathy.ca", true }, { "empathyband.tk", true }, - { "empatico.org", true }, { "empatico.xyz", true }, + { "empatify.com", true }, + { "empatify.pl", true }, { "empatos.cf", true }, - { "emperator.com", true }, { "emperola.com", true }, { "emperor-penguin.com", true }, { "emperor-penguins.com", true }, - { "emperor.blog", true }, { "emperoranimeindo.tk", true }, { "emperors.net", true }, - { "empese.com", true }, + { "empfrm.com", true }, { "empherino.net", true }, + { "empietraining.com", true }, { "empire-forum.tk", true }, { "empire-group.co.nz", true }, { "empire-univ.com", true }, @@ -41933,16 +48691,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "empireliverfoundation.org", true }, { "empiria.site", true }, { "emplealis.com", true }, - { "empleandon0s.com", false }, + { "emplifi.io", true }, { "emploi-collectivites.fr", false }, + { "emploi-international.net", true }, { "employeeexpress.gov", true }, + { "employeemanual.com.au", true }, { "employer.gov", true }, { "employer411.com", true }, { "employeradmin.com", true }, { "employersupport.co.uk", true }, + { "employflorida.com", true }, { "employmax.co.za", true }, + { "employmaxcampus.co.za", true }, { "employmaxetd.co.za", true }, { "employment-applicant.com", true }, + { "employment-solutions.ca", true }, { "employment.uk.com", true }, { "employmentguide.com", true }, { "employmenttracking.ga", true }, @@ -41950,10 +48713,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emporikonathenshotel.com", true }, { "emporioarchitect.com", true }, { "emporiodosperfumes.com.br", true }, + { "emporioguarani.com.br", true }, { "emporioonline.com.br", true }, { "emporiopurochile.com.br", true }, + { "emporium-italy.com", true }, + { "emporiumbeverages.com", true }, + { "empoweraces.com", true }, { "empowerdb.com", true }, + { "empowered-decision.com.au", true }, { "empoweren.com", true }, + { "empoweringdifferences.com", true }, { "empowernation.org", true }, { "empowersimcoe.ca", true }, { "empoweryou.ca", true }, @@ -41964,48 +48733,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emprendecausa.com", true }, { "emprendeconchrisfx.com", true }, { "emprendedoresdesevilla.es", true }, - { "emprendepedia.com", true }, - { "emprendeperuano.com", true }, { "emprendimientoweb.co", true }, + { "emprendimientoyformacion.com", true }, { "empresa1.com.br", true }, { "empresa365.com", true }, { "empresautil.tk", true }, + { "emprestimodedinheiro.com", true }, + { "emprestimosemcomprovar.com", true }, { "emprunterlivre.ci", true }, { "emptiness.cf", true }, { "empty.host", true }, + { "emptyarcade.com", true }, { "emptybox.org", true }, - { "emptyfields.com", true }, { "emptypath.com", true }, { "emptysmile.tk", true }, - { "empyrean-advisors.com", true }, + { "empyreanrule.com", true }, + { "emq.io", true }, { "emrah.io", true }, + { "emrawi.org", true }, { "emreaydinfan.tk", true }, { "emrecicekmuhendislik.com", true }, { "emresaglam.com", true }, { "emrgnc.co.uk", true }, - { "emrin.com", true }, { "emrullahsahin.com", true }, { "ems.gov", true }, { "emsa-casm.ca", true }, { "emsd.tw", true }, { "emsdinghies.com", true }, + { "emse.fr", true }, { "emsliespharmacy.com.au", true }, + { "emsnow.com", true }, { "emsrealfood.nl", false }, + { "emsubtitle.com", true }, + { "emta.ee", false }, { "emtex.at", true }, { "emtex.co.jp", true }, { "emtofis.com", true }, + { "emtpigging.com", true }, + { "emtpigging.my", true }, { "emtradingacademy.com", true }, + { "emu-games.com", true }, { "emu.dk", true }, { "emu.land", true }, { "emulation-archive.org", true }, { "emulationking.com", true }, { "emulator.ml", true }, + { "emulator.wtf", true }, { "emulatronic.tk", true }, { "emulefans.com", true }, { "emulovers.com", true }, { "emulsifier.ga", true }, - { "emuma.com", true }, { "emunet.net", true }, + { "emurom.net", true }, { "emuser.tk", true }, { "emusicuz.tk", true }, { "emvitals.com", true }, @@ -42017,7 +48796,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "emystars.tk", true }, { "emzi0767.com", true }, { "emzy.de", true }, - { "en-booster.jp", true }, { "en-crypt.me", true }, { "en-maktoob.search.yahoo.com", false }, { "en-wp.com", true }, @@ -42026,23 +48804,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "en4rab.co.uk", true }, { "en4u.org", true }, { "enaah.de", true }, + { "enable-javascript.com", true }, { "enableyourlife.com", true }, { "enabling.ga", true }, + { "enactor.co", true }, + { "enactus.org", true }, { "enactusteesside.org", true }, { "enagramm.com", true }, { "enakari.com", true }, { "enalean.com", true }, + { "enam.gov.in", true }, { "enamae.net", true }, { "enamelpin.club", true }, + { "enaminestore.com", true }, { "enamonada.com", true }, - { "enbarra.cl", true }, + { "enattendantpauline.ca", true }, + { "enaturelive.com", true }, { "enbecom.net", true }, + { "enboarder.com", true }, { "enbulleiugnen.com", true }, + { "enby.army", true }, { "encd.life", true }, + { "ence.es", true }, { "encelaya.com.mx", true }, { "encfs.win", true }, { "enchantedcode.co.uk", true }, { "enchantedcottage.tk", true }, + { "enchong.com", true }, { "encinitastrainer.com", true }, { "encircleapp.com", true }, { "encircled.org", true }, @@ -42052,20 +48840,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "encontreumagp.com", true }, { "encontro.online", true }, { "encontroespiritadeinverno.com.br", true }, + { "encore.tech", true }, + { "encoreglobal.com", true }, { "encoro.org", true }, { "encotentin.fr", true }, { "encountercss.com", true }, { "encouragemarketing.com", true }, { "encredible.de", false }, { "encredible.org", false }, + { "encres-nelly.fr", true }, { "encretplomb.ch", false }, { "encryp.ch", true }, { "encrypt.cf", true }, { "encrypt.my.id", true }, { "encrypt.org.uk", true }, + { "encryptallthethings.net", true }, { "encrypted.at", true }, { "encrypted.google.com", true }, { "encryptedaudience.com", true }, + { "encryptedconnection.net", true }, { "encryptionweb.tk", true }, { "encryptmy.site", true }, { "encryptmycard.com", true }, @@ -42073,7 +48866,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "encryptographs.com", true }, { "encuentra-todo.tk", true }, { "encuentra.tk", true }, - { "encuentrabajo.net", false }, { "encuestaspagadas.com.mx", true }, { "encuestaspagadas.org", true }, { "encurta.ml", true }, @@ -42082,11 +48874,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "endavantstap9b.tk", true }, { "endbegins.tk", true }, { "endbox.email", true }, + { "endcottagevets.co.uk", true }, { "ende-x.com", true }, { "endeal.nl", true }, + { "endean.com", true }, { "endeavourbiz.com", true }, { "endee.de", true }, { "endeksa.com", true }, + { "endener.com", true }, { "ender.co.at", true }, { "ender.fr", true }, { "ender.moe", true }, @@ -42099,7 +48894,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enderle.cloud", true }, { "enderman.eu", true }, { "enderszone.com", false }, - { "endgame-economics.com", true }, { "endiana.cf", true }, { "endiana.ga", true }, { "endiana.gq", true }, @@ -42108,6 +48902,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "endless.pet", true }, { "endlessdiy.ca", true }, { "endlessfashion.tk", true }, + { "endlessgrind.com", true }, + { "endlesshorizons.info", true }, { "endlessvideo.com", true }, { "endlesswebsite.tk", true }, { "endofevolution.com", true }, @@ -42120,20 +48916,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "endondehay.com", true }, { "endpaydayloandebt.net", true }, { "endpipe.com", true }, + { "endplasticwaste.org", true }, + { "endpointclinical.com", true }, { "endrinas.com", true }, { "endrust.com.au", true }, { "endspamwith.us", true }, - { "enduranceday.be", true }, { "enduranceseries.ca", true }, - { "endurerow.com", true }, { "enduroxtrem.tk", true }, { "endustriyelfirinlar.com", true }, + { "endustriyelmutfak.com", true }, { "endviolence.gc.ca", true }, - { "endzeit-architekten.com", true }, - { "eneamarcantoni.com", true }, { "enecivilela.com", true }, { "enefit.ee", true }, { "enefit.lv", true }, + { "enefitconnect.ee", true }, { "enefitgreen.com", true }, { "enefitgreen.ee", true }, { "enefitgreen.eu", true }, @@ -42142,23 +48938,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enefitgreen.lv", true }, { "enefitgreen.pl", true }, { "enefitgreen.se", true }, - { "enefitrenewables.com", true }, { "enefitvolt.com", true }, { "enefitvolt.ee", true }, { "enefitvolt.eu", true }, { "enefitvolt.fi", true }, - { "enefitvolt.lt", true }, { "enefitvolt.lv", true }, { "enefitvolt.pl", true }, { "enefitvolt.se", true }, { "enefix.eu", true }, { "eneko.com", true }, { "enekogarrido.com", false }, + { "enel.com", true }, + { "enelgreenpower.com", true }, { "enemybase.tk", true }, { "enemyofman.com", true }, { "enemyterritory.tk", true }, { "enequilibreflocoach.fr", true }, { "energaia.de", true }, + { "energetic.cc", true }, { "energetica.ga", true }, { "energeticafemenina.com", true }, { "energetikasmuzejs.lv", true }, @@ -42172,17 +48969,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "energieconsultonline.nl", true }, { "energiekeurplus.nl", true }, { "energielabelbinneneenweek.nl", true }, - { "energija-visiems.lt", true }, + { "energiewende.com.br", true }, { "energikompetens.se", true }, + { "energizer.eu", true }, { "energoproff.com", true }, - { "energozrouti.cz", true }, - { "energrun.com", true }, + { "energoset-spb.ru", true }, + { "energozrouti.cz", false }, { "energy-drink-magazin.de", true }, { "energy-fm.tk", true }, { "energy-healings.com", true }, { "energy-in-balance.eu", false }, - { "energy-initiative.co.za", true }, { "energy-robotics.com", true }, + { "energy-transporter.com", true }, { "energy.eu", true }, { "energyatlas.com", true }, { "energyaupair.dk", true }, @@ -42191,14 +48989,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "energyaupair.se", true }, { "energybooster.ml", true }, { "energybooster.tk", true }, - { "energycarriers.com", true }, { "energycodes.gov", true }, { "energycommunities.gov", true }, { "energyconsultonline.nl", true }, - { "energydistributorsllc.com", true }, + { "energycrewing.com", true }, { "energydrinkblog.de", true }, { "energyefficientservices.com", true }, { "energyelephant.com", true }, + { "energyflows.ie", true }, { "energyforum.tk", true }, { "energygenie.com.au", true }, { "energygroup.gq", true }, @@ -42206,13 +49004,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "energyguru.tk", true }, { "energyhomeservice.ca", true }, { "energyhybrid.ga", true }, + { "energylink.com", true }, { "energylocal.com.au", true }, + { "energylocals.au", true }, { "energylocals.com", true }, { "energylocals.com.au", true }, + { "energylocals.org", true }, { "energymedia.tk", true }, { "energysaveroregon.com", true }, { "energysite.tk", true }, - { "energysolutionstech.com", false }, { "energystar.gov", true }, { "energysystems.com", true }, { "energytrust.tk", true }, @@ -42222,21 +49022,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enerity.io", true }, { "enerot.com", true }, { "eneroths.se", true }, + { "enerpac.com", true }, { "enersaveapp.org", true }, { "enerte.ru", true }, - { "eneryetika.com", true }, { "enerypa.tk", true }, { "enescrackmerkezi.tk", true }, { "enet-navigator.de", true }, + { "enet.eu", true }, + { "eneti-inc.com", true }, { "enett.team", true }, { "enewspapers.tk", true }, - { "enewspf.com", true }, { "enfant.tk", true }, { "enfants-terribles.tk", true }, { "enfantsdelarue.ch", true }, { "enfasyperfumarias.com", true }, { "enfermedaddelbeso.com", true }, - { "enfinmince.fr", true }, + { "enfieldheightsacademy.org.uk", true }, { "enflow.nl", true }, { "enforcement-trends-dev.azurewebsites.net", true }, { "enforcement-trends-test.azurewebsites.net", true }, @@ -42245,24 +49046,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eng3corp.com", true }, { "eng4arab.tk", true }, { "engageapp.net", true }, - { "engagebranding.com", true }, { "engagelogic.com", true }, + { "engagementlettercpa.com", true }, { "engagewarnerrobinsga.gov", true }, { "engagewell.com", true }, + { "engagingcontents.com", true }, + { "engagio.com", true }, { "engalego.tk", true }, { "enganchesevilla.es", true }, - { "engaugetools.com", true }, { "engbers.com", true }, { "engelandautohuur.nl", true }, - { "engelkeller.ch", true }, + { "engeldasein.at", true }, + { "engeldasein.com", true }, + { "engelk.de", true }, { "engelmann.com", false }, - { "engelsholm.dk", true }, + { "engelorchester.de", true }, { "engelsism.tk", true }, { "engelundlicht.ch", true }, - { "engelwerbung.com", true }, - { "engelwerbung.de", true }, + { "engelzicht.com", true }, { "engen.co.za", false }, - { "engenhariadomarketing.com.br", true }, { "engg.ca", true }, { "enggar.tk", true }, { "enghero.com", true }, @@ -42270,8 +49072,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "engie-laadpalen.nl", true }, { "engima.nl", true }, { "engineer-kobe.ga", true }, - { "engineer.org.my", true }, - { "engineeringbigdata.com", true }, + { "engineer.org.my", false }, + { "engineeringclicks.com", true }, { "engineeringidea.ga", true }, { "engineertaplin.co.uk", true }, { "enginefirefighter.com", true }, @@ -42291,26 +49093,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "engl-distribution.net", true }, { "engl-server.de", true }, { "engl-systems.de", true }, + { "england-fixed-matches.com", true }, { "englandairportcars.com", true }, - { "englandbeach.com", true }, + { "englandlearn.com", true }, { "englandschool.tk", true }, + { "englesh.org", true }, + { "english-e-reader.net", true }, { "english-to-russian-translation.tk", true }, { "english-training.tk", true }, + { "english.events", true }, { "englishbulgaria.net", true }, { "englishcast.com.br", true }, { "englishclassworksheets.com", true }, + { "englishclub.com", true }, { "englishcompany-mobile.jp", true }, { "englishcompany.jp", true }, { "englishdirectory.de", true }, { "englishfamilyzone.tk", true }, - { "englishforums.com", true }, { "englishll.com", true }, { "englishlol.com", true }, { "englishouse.tk", true }, { "englishphonopass.com", true }, + { "englishprovence.com", true }, + { "englishteacheredu.org", true }, { "englishtofrench.eu", true }, - { "englishwineproducers.co.uk", true }, { "englishyamal.ru", false }, + { "engodnat.dk", true }, { "engraffo.com", true }, { "engrama.tk", true }, { "engrepair.com", true }, @@ -42318,10 +49126,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "engso-education.eu", true }, { "engso.com", true }, { "engso.eu", true }, + { "engsoyouth.eu", true }, { "engution.biz", false }, { "engvid.com", true }, { "engweld.co.uk", true }, { "engym.com.tw", true }, + { "engz.icu", true }, { "enhanced-mail.tk", true }, { "enhancemedia.co.uk", true }, { "enia.com", true }, @@ -42332,13 +49142,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enigmatry-website-test.azurewebsites.net", true }, { "enigmatry.com", true }, { "enigmavault.io", true }, + { "enip2.ru", true }, { "enisys.co.jp", true }, { "enitso.de", true }, { "enity.tk", true }, { "eniwa-eye.com", true }, - { "enixgaming.com", true }, + { "enixgaming.com", false }, { "eniyicrmprogramlari.tk", true }, { "enizioshop.com", true }, + { "enji-sendai.com", true }, + { "enjieding.com", true }, { "enjin.io", true }, { "enjin.zone", true }, { "enjincoin.io", true }, @@ -42347,32 +49160,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enjoybeer.dk", true }, { "enjoymaloy.info", true }, { "enjoytransferitalia.com", true }, - { "enka-soudure.com", true }, { "enka-works.com", true }, { "enka-works.jp", true }, { "enka-works.net", true }, { "enkelanmalan.se", true }, { "enkelpaamelding.no", true }, { "enker.tk", true }, + { "enkolaysertifika.com", true }, + { "enkrypt.com", true }, { "enky.be", true }, { "enlace.vip", true }, { "enlacesgranotas.tk", true }, { "enlamochiladeadri.com", true }, { "enlasnubes.tk", true }, { "enlaztravel.com", true }, - { "enlight.no", true }, { "enlightenspeech.com", true }, + { "enlightio.com", true }, { "enlightsec.se", true }, { "enlnf.link", true }, { "enloestatebank.com", true }, + { "enlr.ru", true }, { "enlyft.com", false }, { "enmieux.be", true }, - { "enno.mom", true }, + { "enmowe.tech", true }, + { "ennd.com", true }, + { "enno.mom", false }, { "ennori.jp", true }, { "ennova.com", true }, - { "enns-photography.com", true }, - { "enocstaging.azurewebsites.net", true }, + { "enoahinc.com", false }, { "enodais.gr", true }, + { "enoenergy.com", true }, { "enofmusic.com", true }, { "enoisdaturma.tk", true }, { "enomada.net", true }, @@ -42397,6 +49214,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enrack.tk", true }, { "enrega.com", true }, { "enrich.email", true }, + { "enrich.org", true }, { "enriched.news", true }, { "enrique-monroy.tk", true }, { "enrique.wtf", true }, @@ -42404,6 +49222,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "enriqueferreira.com", true }, { "enriquepiraces.com", true }, { "enriquezdomenech.ninja", true }, + { "enroll2control.com", true }, { "enrollapp.com", true }, { "enroo-tech.com", true }, { "enrouleur-bache.fr", true }, @@ -42411,134 +49230,172 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ensage.io", true }, { "ensaladasvinagreta.com", true }, { "ensap.gouv.fr", true }, + { "ensayistas.org", true }, { "ensemble-conseils-et-services.fr", true }, { "ensemble-rubato.de", true }, - { "ensembling.com", true }, { "enshin-karate.tk", true }, { "ensightpharma.com", true }, + { "ensightsolutions.us", true }, { "ensilencio.tk", true }, { "ensingpodotherapie.nl", true }, { "enskat.de", true }, { "enslavedplantationclub.com", true }, { "ensley.tech", true }, + { "ensma.fr", true }, { "ensons.de", true }, - { "ensonyan.com", true }, + { "ensonyan.com", false }, { "enstroga.at", true }, { "enstructo.net", true }, { "ensured.com", true }, { "ensured.nl", true }, { "ensurtec.com", true }, { "ensy.cz", true }, + { "ent.cat", true }, + { "entabe.com", true }, { "entabe.jp", true }, { "entactogen.com", true }, { "entactogens.com", true }, + { "entasyonline.com", true }, + { "entdeckertouren.com", true }, { "enteente.com", true }, { "entegrations.io", true }, - { "entelesource.com", true }, - { "entelgy.com.br", true }, + { "enter.co", true }, { "enter.eco", true }, { "enteratesoria.tk", true }, - { "enterle.com", true }, + { "enterclaim.com", true }, + { "enterdev.co", true }, + { "enterdown.com", true }, { "enteronline.tk", true }, - { "enterpresence.com", true }, + { "enterprise-hr.com", true }, { "enterprisecloudservices.inc", true }, { "enterprisenetworksecurity.net", true }, + { "enterpriseoregon.gov", true }, + { "enterprisesupercenter.net", true }, { "enterpriset.cf", true }, { "enterprisey.enterprises", true }, - { "enterprivacy.com", true }, { "entersoftsecurity.com", true }, { "entersynapse.com", true }, { "entertaiment-news.tk", true }, { "entertainerzone.tk", true }, { "entertainmentblog.tk", true }, - { "entertainmentformitzvahs.com", true }, + { "entertainmentmesh.com", true }, { "entertainmentsrit.tk", true }, + { "enterthehollow.com", true }, { "enteweb.tk", true }, { "enthasso.gr", true }, + { "entheo-worldeyes.org", true }, { "entheogens.com", true }, { "entheorie.net", true }, { "entheoshearing.com", true }, - { "entireproductions.com", true }, + { "enthrallinggumption.com", true }, { "entityelevation.com", true }, + { "entityfiling.com", true }, { "entomologia.it", true }, { "entorangecounty.com", true }, { "entouchgo.com", true }, + { "entpe.fr", true }, { "entradacaminitorey.com", true }, - { "entradaweb.cl", true }, { "entrainchat.it", true }, { "entrainr.com", true }, { "entranceinfo.tk", true }, { "entranz.nl", true }, { "entreamigos.tk", true }, { "entrecieletpierres.com", false }, - { "entregamarket.eu", true }, { "entregarapida.cf", true }, { "entremass.com", true }, { "entrenossocialinfo.com", true }, { "entreprenet.gq", true }, + { "entrepreneuraj.com", true }, + { "entrepreneurialopensource.org", true }, { "entrepreneurnight.com", true }, + { "entreprise-innovante.fr", true }, + { "entreprises.gouv.fr", true }, + { "entreterse.com.br", true }, + { "entretien-roche.fr", true }, { "entrevistadesucesso.ga", true }, { "entrezdansladanse.fr", true }, + { "entronica.co.th", true }, { "entropy.su", true }, { "entropyofdelicatewonders.com", true }, { "entropytcg.com", true }, - { "entrpnr-connect.nl", false }, + { "entruempelung-berlin.de", true }, { "entrup.io", true }, - { "entrusttefl.com", true }, { "entryboss.cc", true }, { "entryscape.com", true }, - { "entserv.eu", true }, - { "entspannter-arbeiten.de", false }, { "entwickler.land", true }, { "entwicklung.center", true }, + { "entzoneplan.com", true }, + { "enuchi.com", true }, { "enuchi.jp", true }, + { "enuygun.com", true }, { "envaldemoro.com", true }, { "envant.co.uk", true }, + { "envelope.co.nz", true }, { "envelopeartisans.com", true }, + { "envelopegroup.com", true }, { "enveloppenopmaat.nl", true }, { "enverid.com", true }, { "envescent.com", true }, + { "envia.com.gt", true }, { "enviam.de", true }, { "enviarcurriculumvitae.com", false }, { "enviartucurriculumvitae.com", true }, { "enviatufoto.com", false }, { "envide.no", true }, + { "enviesdeville.fr", true }, + { "enviodedinero.online", true }, { "enviosnegocios.tk", true }, + { "envir.ee", false }, { "envirhom.com", true }, - { "envirobizcollective.com.au", true }, + { "enviro-clear.co.uk", true }, + { "enviroli.ch", true }, + { "enviroli.co.nz", true }, { "enviroli.co.uk", true }, - { "enviroli.com", true }, + { "enviroli.cz", true }, + { "enviroli.dk", true }, + { "enviroli.eu", true }, + { "enviroli.li", true }, { "enviroli.org.uk", true }, + { "enviroli.ro", true }, + { "enviroli.se", true }, { "enviroli.uk", true }, { "environcom.co.uk", true }, { "environment.ai", true }, { "environmental-colleges.com", true }, + { "environmentaljustice.gov", true }, + { "environmentalscience.org", true }, { "envirotecstructures.com.au", true }, { "envisionmedicalgroup.com", false }, { "envisionsproperty.com", true }, { "envisolarvind.tk", true }, + { "envistacu.com", true }, { "enviyatar.tk", true }, { "envoie.moi", true }, + { "envoyair.com", true }, + { "envoybrain.com", true }, { "envoyez.moi", true }, { "envoyglobal.com", true }, { "envoypresents.com", true }, { "envydesigns.tk", true }, { "envygeeks.io", true }, { "envysmile.com", true }, - { "envywe.com", true }, { "enweb.ml", true }, { "enwikipedia.tk", true }, { "enwillyado.tk", true }, + { "enwo.co", true }, + { "enwo.io", true }, { "enxadahost.com", true }, { "enzofardone.ga", true }, { "enzosoares.com", true }, { "enzyme-sensor.net", true }, { "eo-literaturo.tk", true }, + { "eoa.live", true }, { "eocservices.co.uk", true }, { "eod.su", true }, - { "eoitek.com", true }, + { "eohima.org", false }, { "eol-team.tk", true }, { "eola.co", true }, + { "eoliennedetoit.com", true }, { "eon.tech", true }, { "eonclub.tk", true }, { "eongame.tk", true }, @@ -42547,6 +49404,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eonwavesstudio.com", true }, { "eooe.me", true }, { "eoonglobalresources.jp", true }, + { "eopac.net", true }, + { "eoperth.com.au", true }, + { "eos-croatia.com", true }, + { "eos-utility.com", true }, { "eos-utvalget.no", false }, { "eosagonline.ru", true }, { "eoscryptocurrency.com", true }, @@ -42556,36 +49417,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eosol.de", true }, { "eosol.net", true }, { "eosol.services", true }, + { "eov2.com", true }, { "ep-cortex.com", true }, { "ep-plus.jp", true }, { "epa.com.es", true }, { "epagos.com.ar", true }, { "epal.pt", true }, + { "epaoig.gov", true }, { "epasar.my", false }, - { "epassafe.com", true }, - { "epasuno.org", true }, + { "epaslaugos.lt", true }, { "epavape.eu", true }, { "epave.paris", true }, { "epawnatl.com", true }, { "epay.bg", true }, { "epaygateway.net", true }, { "epcomputacion.com.ar", true }, - { "epcquebec.ca", true }, { "epcreation.nl", true }, + { "epdemo.selfip.com", true }, { "epdeveloperchallenge.com", true }, { "epdiekirch.tk", true }, - { "eperformax.com", true }, - { "epharma.com.br", true }, + { "epdigital.biz", true }, + { "ephemia.com", true }, { "ephesusbreeze.com", true }, - { "ephraimshores.com", true }, - { "epi-lichtblick.de", true }, { "epi.one", false }, + { "epic-semiconductors.com", true }, { "epic-vistas.com", true }, { "epic-vistas.de", true }, { "epic.gl", true }, + { "epic.org", true }, { "epica.tk", true }, { "epicapos.cz", true }, - { "epiccdn.net", true }, + { "epicawesomemods.com", true }, { "epiccraft-mc.de", true }, { "epicdesign1.tk", true }, { "epicdesign2.tk", true }, @@ -42604,52 +49466,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "epicinflatables.co.uk", true }, { "epiclawnpro.com", true }, { "epiclegends.ml", true }, - { "epiclub.com.au", true }, { "epicmoney.tk", true }, { "epicmusicradio.ml", true }, - { "epicnex.com", true }, { "epicpages.com", true }, { "epicridesbahamas.com", true }, { "epicsecure.de", true }, { "epicserver.ru", true }, + { "epicsoft.de", true }, { "epicteam.tk", true }, { "epicteller.com", false }, + { "epicventure.co.za", true }, { "epicvideofactory.com", true }, { "epicvistas.com", true }, { "epicvistas.de", true }, { "epidastudio.com", true }, { "epidauros.be", true }, + { "epieos.com", true }, { "epigrafes-led-farmakeia.gr", true }, - { "epilier.uz", true }, + { "epikchat.com", true }, + { "epilino.jp", true }, { "epilis.gr", true }, { "epinesdeparadis.com", true }, { "epiphaniusmacar.com", true }, { "epiphanyofourlordchurch.com", true }, - { "epiphyte.network", true }, { "episails.com", true }, { "episkevh-plaketas.gr", true }, { "episode.tk", true }, { "epistas.com", true }, { "epistas.de", true }, + { "epistula.com", true }, { "epitafija.ru", true }, { "epitelial.com", true }, + { "epitesti.ro", true }, + { "epitesz.co", true }, { "epiteugma.com", true }, { "epitome.games", true }, { "epizentrum.work", true }, { "epizentrum.works", true }, + { "epl.ee", true }, { "eplayer.cz", true }, { "eplayer.sk", true }, { "eplenet.tk", true }, { "epliar.com", true }, { "eplus.group", true }, + { "epm-bg.com", true }, { "epmcentroitalia.it", true }, - { "epo32.ru", true }, + { "epmonthly.com", true }, { "epoch-film.ml", true }, { "epochcg.pt", true }, - { "epoker6.com", true }, { "epolitiker.com", true }, - { "epopia.com", true }, - { "epos-distributor.co.uk", true }, { "epos.az", true }, { "eposbirmingham.co.uk", true }, { "eposbrighton.co.uk", true }, @@ -42668,6 +49533,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "epossussex.co.uk", true }, { "eposswansea.co.uk", true }, { "epost.pub", true }, + { "epost.tw", true }, { "epostplus.li", true }, { "eposyork.co.uk", true }, { "eposzilos.nl", true }, @@ -42677,20 +49543,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eppelpress.lu", true }, { "epreskripce.cz", true }, { "eprezto.com", true }, + { "eprimego.com", true }, { "eprint-grimsby.co.uk", true }, - { "eprojectfreetv.com", true }, { "eprom.cf", true }, { "eprosto.cf", true }, { "eprzybornik.pl", true }, { "epsamsg.com", true }, { "epsi.io", true }, { "epsilon.dk", true }, + { "epsilonhomebasedqualitycare.com", true }, { "epsilontel.com", true }, { "epsmil.it", true }, + { "epson.ru", true }, + { "epsonstore.ae", true }, { "epspolymer.com", true }, { "eptreviewer.com", true }, { "epublibre.org", true }, { "epvd.tk", true }, + { "epworth.org.au", true }, { "epyonsuniverse.net", true }, { "eq-serve.com", true }, { "eqassociates.com", true }, @@ -42698,26 +49568,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eqibank.com", true }, { "eqlplayground.io", true }, { "eqrx.net", true }, - { "equabanking.cz", true }, + { "eqs.com", true }, { "equalifica.com.br", true }, { "equalone.co.jp", true }, + { "equalscollective.com", true }, + { "equans-kaelte.de", true }, { "equasea.com", false }, { "equate.net.au", true }, { "equatetechnologies.com.au", false }, { "equeim.ru", false }, + { "equestrianvaulting.co.uk", true }, { "equi.ac", true }, { "equiac.com", true }, { "equidam.com", true }, { "equifaxobjection.com", true }, { "equilibratura.roma.it", true }, { "equilibrium.med.br", true }, + { "equilibriumx.com", false }, { "equine-dentistry-endoscope.com", true }, { "equine-dentistry-scope.com", true }, { "equinecoaching.ca", true }, { "equinenow.com", true }, - { "equinesalacia.com", true }, { "equinetherapy.ca", true }, { "equinox.io", true }, + { "equinoxe.de", true }, { "equip.cz", true }, { "equipamentosparapostos.com.br", true }, { "equipandoloja.net.br", true }, @@ -42729,30 +49603,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "equipoweb.info", true }, { "equippers.de", true }, { "equipsys.net", true }, - { "equiptoelec.com", true }, + { "equisa-verpackung.com", true }, { "equisecu.com", true }, - { "equisoft.io", true }, { "equitable-igwm.com", true }, { "equitazionepertutti.it", true }, + { "equity.today", true }, + { "equitybank.com", true }, { "equityelevate.com", true }, { "equityloupe.com", true }, { "equityloupe.org", true }, { "equityloupe.ru", true }, - { "equityset.com", true }, - { "equitytrack.co", true }, { "equityyes.org", true }, { "equivid.ga", true }, + { "equmeniakyrkanhallunda.se", true }, + { "equt.cloud", true }, { "er-mgmt.com", true }, { "er-music.com", true }, { "er.pl", true }, { "er.tl", true }, { "era.fi", true }, + { "eradoom.net", true }, { "erafat.com", true }, + { "eraiescrow.com", true }, { "erandymoreira.cf", true }, { "erandymoreira.ga", true }, { "erandymoreira.gq", true }, { "erandymoreira.ml", true }, { "erapotensia.com", true }, + { "erasinged.com", true }, { "erasmo.info", true }, { "erasmusantoine.tk", true }, { "erasmusbari.tk", true }, @@ -42760,21 +49638,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erasure.tk", true }, { "erasyou.com", true }, { "erate.fi", true }, + { "eraterm.com", true }, { "erath.fr", false }, { "eravurnet.tk", true }, - { "erback.tk", true }, + { "erb.org", true }, { "erboristeria.milano.it", true }, { "erboristeria.roma.it", true }, { "erbt.tk", true }, + { "ercio.com", true }, { "erciyesspor.tk", true }, { "erclab.kr", true }, { "erclaim.com", true }, - { "ercnationwide.com", true }, { "erctra.com", true }, { "erda.gov", true }, { "erdekesseg.com", true }, { "erdethamburgeronsdag.no", true }, { "ereader.uno", true }, + { "erebuildings.com", true }, { "erechimimoveis.com.br", true }, { "erectarack.com.au", true }, { "erectiepillenwinkel.nl", true }, @@ -42792,21 +49672,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erfolgsmaschine.ch", false }, { "ergaomnes.cz", true }, { "ergaran.tk", true }, - { "ergo-wijs.nl", true }, + { "ergobaby.com", true }, { "ergobyte.eu", true }, { "ergobyte.gr", true }, { "ergodark.com", true }, + { "ergometrics.org", true }, { "ergonomic-products.com", true }, { "ergoseo.com", true }, + { "ergoserv.com", true }, { "ergotopia.de", true }, { "ergovita.com.br", true }, { "erhvervsposten.dk", true }, { "erhydro.com", true }, - { "eriador.io", true }, { "eric-huber.de", true }, { "eric-kolelas.tk", true }, { "eric-masters.tk", true }, - { "eric.jetzt", true }, + { "eric.gg", true }, { "eric1932.tk", true }, { "ericabrahamsen.net", true }, { "ericacastano.com", true }, @@ -42819,7 +49700,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ericfo.cf", true }, { "ericfra.nz", true }, { "erich-lessing-theater.tk", true }, - { "erichmann.com", true }, { "erichoekstra.com", true }, { "erichoekstra.nl", true }, { "erichollander.photography", true }, @@ -42844,7 +49724,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ericsilva.org", true }, { "ericspeidel.de", true }, { "ericvantijn.tk", true }, - { "ericvaughn-flam.com", true }, { "ericwie.se", false }, { "eridan.me", true }, { "eridanus.uk", true }, @@ -42857,7 +49736,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erik.dedyn.io", true }, { "erik1erik1.com", true }, { "erikaepedro.ga", true }, - { "erikbraam.com", true }, { "erikdslater.com", true }, { "erikheemskerk.nl", true }, { "erikhubers.nl", true }, @@ -42872,19 +49750,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erincarmody.cf", true }, { "eriner.me", true }, { "eringmaguire.com", true }, + { "erinias.net", true }, { "erinmyers.us", true }, - { "erinn.io", true }, - { "erisrenee.com", true }, + { "eris-bj.com", true }, + { "erisinfo.com", true }, { "eristajanmutka.com", true }, + { "erisws.com", true }, { "erisys.net", true }, + { "erito.com", true }, + { "eritonetwork.com", true }, { "eritropoyetina.com", true }, + { "erium.fr", true }, { "erkaelderbarenaaben.dk", true }, { "erkankavas.com", true }, + { "erkeklersoruyor.com", true }, { "erkenntniswen.de", true }, { "erkiss.club", true }, { "erkiss.live", true }, + { "erkiss12.com", true }, { "erkkiaronen.fi", true }, { "erlebe-salsa.de", true }, + { "erlebnisarchaeologie-bayern.de", true }, + { "erli.pl", true }, { "ermak.tk", true }, { "erman.ga", true }, { "ermeglio.com", true }, @@ -42894,6 +49781,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ernest.ly", true }, { "ernotek.se", true }, { "ernst-fuchs.tk", true }, + { "ero-like.online", true }, { "ero-video.net", true }, { "ero.ink", false }, { "erodvd.com", false }, @@ -42902,37 +49790,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eroimatome.com", true }, { "erokat.ga", true }, { "erolib.ga", true }, + { "eromanga.com", true }, { "eromasajes.com", true }, - { "eromon.net", true }, { "eron.info", true }, { "eropics.to", true }, { "erosbeautyandwellness.com", true }, { "eroscomixitalia.tk", true }, { "erosofia.tk", true }, - { "eroticgirlfriend.com", true }, - { "eroticlist.com", true }, + { "eroticjuggs.com", true }, { "eroticmassagevegas.com", true }, { "eroticom.hr", true }, - { "eroticsochi.com", false }, { "erotiksexgeschichten.net", true }, { "erotikstahrtseite.cf", true }, { "erotikstahrtseite.ga", true }, { "erotikstahrtseite.gq", true }, { "erotikstahrtseite.tk", true }, { "erotismo.co", true }, - { "erotycznehistorie.pl", true }, { "erozine.jp", true }, { "erp-band.ru", true }, { "erp.band", true }, { "erpband.ru", true }, { "erpcargo.com", false }, + { "erpcloud.systems", true }, { "erpelstolz.at", true }, { "erperium.com", true }, { "erperium.nl", true }, + { "erpid.info", true }, { "erpollo.com", true }, { "erpsolutionsmart.com", true }, - { "erpsummit.com.br", true }, { "erraen.org.ua", true }, + { "erreguete.gal", true }, { "errekaweb.tk", true }, { "errietta.me", true }, { "errlytics.com", true }, @@ -42942,15 +49829,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "error.fail", true }, { "error.org", true }, { "error418.nl", true }, - { "errortools.com", true }, - { "ers35.com", true }, + { "errror.org", true }, { "ersa-shop.com", true }, + { "ersankaucuk.com", true }, { "ersdfaredsaeem.tk", true }, + { "ersei.net", true }, { "erseni.net", true }, { "ershiwo.com", true }, { "ersinbiltekin.tk", true }, { "ersinerce.com", false }, { "erspro.net", true }, + { "erste-hilfe-sbh.de", true }, { "erste.guru", true }, { "erstehilfeprodukte.at", true }, { "ert.ovh", true }, @@ -42958,8 +49847,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ertel.xyz", false }, { "erthisa.tk", true }, { "ertvag.no", true }, + { "eru.cz", true }, { "eru.im", true }, - { "eru.moe", true }, { "erudicia.com", true }, { "erudicia.de", true }, { "erudicia.es", true }, @@ -42973,7 +49862,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erulezz.nl", true }, { "eruzione.us", true }, { "ervirmaison.tk", true }, - { "erwanlepape.com", true }, { "erwannlaflute.tk", true }, { "erwerbslosenforum.de", true }, { "erwin.saarland", true }, @@ -42987,6 +49875,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "erythroxylum-coca.com", true }, { "eryxmail.de", true }, { "erzaehlwerkstatt-heilbronn.de", true }, + { "erzbistum-bamberg.de", true }, { "es-geenen.de", true }, { "es-ostan.tk", true }, { "es-ramonage.fr", true }, @@ -42997,7 +49886,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "es-tools.de", true }, { "es-vps.eu", true }, { "es.ax", true }, - { "es.gratis", true }, { "es.search.yahoo.com", false }, { "es8888.net", true }, { "es888999.com", true }, @@ -43007,16 +49895,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esajokinen.net", true }, { "esale.co", true }, { "esalesclub.com", true }, - { "esaliksik.com", true }, + { "esalinity.com", true }, { "esame-di-professione-cinestetica.ch", true }, - { "esamievalori.com", true }, { "esamsur.tk", true }, { "esarp.com", true }, + { "esasafe.com", true }, { "esasite.com", true }, { "esatn.gov", true }, { "esautotech.com.au", true }, { "esb1314.net", true }, { "esb1668.com", true }, + { "esb1688.info", true }, { "esb16888.com", true }, { "esb369.com", false }, { "esb518.com", true }, @@ -43029,7 +49918,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esb777.us", true }, { "esb888.net", true }, { "esb8886.com", true }, - { "esb9588.com", true }, { "esb999.com", true }, { "esb999.info", true }, { "esb999.us", true }, @@ -43037,18 +49925,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esba11.com", true }, { "esba11.in", true }, { "esba11.net", true }, - { "esball.in", true }, - { "esball888.com", true }, + { "esball.bz", true }, + { "esball.in", false }, + { "esball.online", true }, { "esball888.net", true }, - { "esbgood.com", true }, + { "esbo-terrassen.de", true }, { "esbuilders.co.nz", false }, + { "esburgos.info", true }, { "esc-romania.tk", true }, { "esc-turkey.tk", true }, - { "esc.gov", true }, + { "esc18.net", true }, + { "esc3.net", true }, + { "esc9.net", true }, { "escae.ml", true }, + { "escael.org", true }, { "escalando.tk", true }, + { "escale-communication.bzh", true }, { "escalesensorielle.com", true }, { "escambiacountyal.gov", true }, + { "escanabatownshipmi.gov", true }, { "escancia.tk", true }, { "escaparate.tk", true }, { "escape-house.be", true }, @@ -43058,8 +49953,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "escaperoomdoctor.com", true }, { "escaperoompsl.com", true }, { "escaperoomsolutions.com", true }, + { "escapio.com", true }, + { "escarpe.com", true }, { "escavador.com", true }, + { "escepticos.es", true }, { "escg.digital", true }, + { "escif.com", true }, { "esclinux.tk", true }, { "escmatrix.com", true }, { "escobarservice7000.com", true }, @@ -43071,15 +49970,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "escolanacionaldejudo.com.br", true }, { "escolatop.com.br", true }, { "escolibri.com", true }, + { "escondido.gov", true }, { "escondidoca.gov", true }, { "escontact.ch", false }, { "escordilla.tk", true }, - { "escort-boy.be", true }, { "escort-fashion.com", true }, { "escortaccess.net", true }, { "escortbee.com", true }, { "escortcreampie.com", true }, - { "escortcunuz.com", true }, + { "escortdelhi.net", true }, { "escortdisplay.com", true }, { "escortjessy.tk", true }, { "escortlistings.ca", true }, @@ -43088,12 +49987,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "escortlistings.ph", true }, { "escortlistingsuk.co.uk", true }, { "escorts.works", true }, - { "escortsontop.co.uk", true }, + { "escortslittleblackbook.com", true }, { "escortz.gq", true }, { "escoteiros.tk", true }, { "escovator-records.tk", true }, { "escritoresdelcomahue.tk", true }, - { "escritoriodearte.com", false }, + { "escriva.org", true }, { "escrocratie.tk", true }, { "escrowalliance.com", true }, { "escspain.tk", true }, @@ -43103,40 +50002,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "escueladego.tk", true }, { "escueladelsabor.com", true }, { "escueladeministerioytecnologia.com", true }, - { "escuelaelretamo.cl", true }, { "escuelagobierno.org", true }, - { "escuelainfantilpizcas.com", true }, { "escuelaparapapas.tk", true }, { "escuelasargento.tk", true }, { "escuelitasansebastian.cl", true }, { "escuelotika-online.tk", true }, - { "escyr.top", true }, + { "escyr.top", false }, { "esd.cc", true }, { "esdacademy.eu", true }, { "esdarat.ml", true }, + { "esden.com", true }, { "esdenera.com", true }, { "esdiscuss.org", true }, { "eseances.ch", true }, { "esecuredata.com", true }, + { "esemtia.com", true }, + { "esenaskincare.com", true }, { "eservices-greece.com", true }, { "eset.ml", true }, { "esexchange.ga", true }, { "esfiledecrypter.com", true }, - { "esforces.com", true }, { "esg-abi2001.de", true }, { "esgen.org", true }, + { "esgforum.com.br", true }, { "esgr.in", true }, { "esh.ink", true }, + { "eshappy.tours", true }, { "esher.ac.uk", true }, - { "eshigami.com", true }, { "eshoeft.com", true }, { "eshop-prices.com", true }, { "eshop-ptz.ru", true }, { "eshoprzd.ru", true }, - { "eshspotatoes.com", true }, + { "eshotsaatleri.com", true }, { "eshtapay.com", true }, { "esiac.net", true }, { "esicia.rw", true }, + { "esideshop.com", true }, { "esiefektivs.lv", true }, { "esigmbh.de", true }, { "esignandpay.net", true }, @@ -43146,6 +50047,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esiliati.org", true }, { "esilva.me", true }, { "esite.ch", true }, + { "esj.org", true }, { "eskapi.fr", true }, { "eskdale.net", true }, { "eskiceviri.cf", true }, @@ -43154,19 +50056,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eskimuzikatolyesi.org", true }, { "eskisehirhaberleri.tk", true }, { "esko.bar", true }, - { "eskola.cc", true }, { "eskriett.com", false }, { "eskritt.ca", true }, + { "eskypartners.com", true }, { "eslamahmed.tk", true }, + { "eslbuzz.com", true }, { "esleme.com", true }, + { "eslgrammar.org", true }, { "eslint.org", false }, { "eslove.jp", true }, + { "eslteacheredu.org", true }, + { "eslutt.cc", true }, { "esm.run", true }, + { "esmalglass-itaca.com", false }, { "esmart.ro", true }, { "esmejor.tk", true }, { "esmincg2t1.com", true }, { "esmoker.bg", true }, + { "esmtp-mx.com", true }, { "esnekkaucuk.com", true }, + { "esnlpr.fi", true }, + { "eso-database.com", true }, + { "eso-skillfactory.com", true }, + { "eso3.eu.org", true }, + { "esoa.net", true }, { "esocite.la", true }, { "esoko.eu", true }, { "esolcourses.com", true }, @@ -43177,7 +50090,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esopticallabs.com", true }, { "esote.net", true }, { "esoteric.website", true }, - { "esotericastrologer.org", true }, { "esotericcosmos.com", true }, { "esoterik.link", true }, { "esoterikerforum.de", true }, @@ -43196,10 +50108,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "espacetheosophie.fr", true }, { "espachavo.tk", true }, { "espacioantiguo.com", true }, - { "espacioprofundo.com.ar", false }, { "espacioseideas.mx", true }, { "espacioweb.tk", true }, { "espacoalimentoesaude.com.br", true }, + { "espacocasasuzano.com.br", true }, + { "espacoentreletras.com.br", true }, { "espacosaudesuplementos.com.br", true }, { "espaiblancandorra.ga", true }, { "espaiblancandorra.gq", true }, @@ -43210,12 +50123,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "espanyoldebarna.tk", true }, { "espass.gq", true }, { "espci.fr", true }, + { "especials.co.za", true }, { "especificosba.com.ar", true }, { "espectro.tk", true }, { "espectrometria.com", true }, { "espejo.tk", true }, { "espejocofrade.tk", true }, { "espeleogel.tk", true }, + { "espen.cz", true }, { "espenandersen.no", true }, { "espeo.eu", true }, { "esperantio.tk", true }, @@ -43225,56 +50140,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "espiragen.com", true }, { "espiritismo.tk", true }, { "espirituracer.com", true }, + { "espiv.net", true }, + { "espivblogs.net", true }, { "esplendorecosmeticos.com.br", true }, { "espocada.com", true }, + { "espoonkumi.fi", false }, { "esport-agency.fr", true }, + { "esport-brande.dk", true }, { "esporters.today", true }, { "esportsbattles.ga", true }, - { "esportsinnovationcenter.com", true }, + { "esportsmonk.com", true }, { "espower.com.sg", true }, - { "espressob2b.com", true }, { "espressodokter.nl", true }, { "espressonews.gr", true }, + { "espressoservicesplus.com.au", true }, { "esprihealth.com", true }, - { "esprit.tn", true }, + { "espriler.com", true }, + { "espritgames.ru", true }, { "espub.org", true }, - { "espyder.net", true }, { "esq", true }, { "esquelario.tk", true }, { "esquirebrotherhood.tk", true }, + { "esquirelaw.com", true }, { "esquirelawfirm.com", true }, { "esquirelawservices.com", true }, - { "esquirou-trieves.fr", false }, { "esra.gq", true }, { "esrarengizkasabahd.tk", true }, { "esrhd.com", true }, { "esrinfo.com", true }, { "esrs.gov", true }, + { "ess-ecologica.cat", true }, { "essaandmore.com.au", true }, { "essay-writing-topics-fce.tk", true }, + { "essayads.com", true }, { "essaybrand.com", true }, + { "essaychat.com", true }, { "essaychecker.com", true }, + { "essaycoupons.com", true }, { "essaydirectory.com", false }, { "essayforsale.net", true }, - { "essayforum.com", false }, + { "essayforum.com", true }, { "essayhave.com", true }, { "essayjob.com", true }, + { "essaykeeper.com", true }, { "essaylib.com", true }, { "essaymaker.gq", true }, { "essaynews.com", true }, { "essaypro.net", true }, { "essays.me", true }, - { "essayscam.org", false }, + { "essayscam.org", true }, + { "essayservices.org", true }, { "essayshark.com", true }, + { "essaytalk.com", true }, { "essaywebsite.com", true }, + { "essaywritercpl.com", true }, { "essecharlie.com", true }, { "essenah.com", true }, - { "essencesdeprana.org", false }, + { "essencesdeprana.org", true }, { "essencespresso.es", true }, { "essenciasparis.com.br", true }, + { "essentialfoods.pt", true }, { "essentialinteriors.ga", true }, + { "essentialliving.co.uk", true }, + { "essentialoils.co.za", true }, { "essentialoils.nl", true }, { "essentialoilsimports.com", true }, + { "essentiapura.com", true }, + { "essentiel-du-mariage.com", true }, { "essentiel-physique.com", true }, { "essentry.com", true }, { "essentta.com", true }, @@ -43282,22 +50214,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esseriumani.com", true }, { "essex.cc", true }, { "essexcosmeticdentists.co.uk", false }, + { "essexelectricaltraining.co.uk", true }, + { "essexgardenstudios.co.uk", true }, + { "essexhighways.org", true }, + { "essexmoneyman.com", true }, + { "essexregionalnj.gov", true }, { "essextimbercraft.co.uk", true }, { "essilorpse.com", true }, { "essilorpse.net", true }, { "essite.net", true }, + { "essjayericsson.com", true }, { "esslm.sk", true }, { "esslym.com", true }, { "essnet.co.jp", true }, { "essoduke.org", true }, - { "essordesentreprises.com", true }, { "essplusmed.org", true }, { "essr.org.uk", true }, { "essteebee.ch", false }, + { "esswp.com", true }, { "est-it.de", true }, { "est8.ai", true }, { "establo.pro", true }, - { "estacionesmeteorologicas.es", true }, { "estada.ch", true }, { "estadoreclamos.com", true }, { "estafallando.es", true }, @@ -43308,6 +50245,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "estampille-paris.fr", true }, { "estanciasgauchas.com.br", true }, { "estate360.co.tz", true }, + { "estatebud.com", true }, { "estateczech-eu.ru", true }, { "estateways.com", true }, { "estcequemonordinateurestallume.fr", true }, @@ -43317,25 +50255,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "estebanborges.com", true }, { "estebanoria.net", true }, { "estedafah.com", true }, + { "esteladigital.com", true }, + { "estelarix.com", true }, { "estellaequipment.com", true }, { "estenio.com.mx", true }, { "esteniomexico.com", true }, + { "esteria.eu", false }, { "esteriliza-me.org", true }, { "esterilizacion-perros.es", true }, { "estespr.com", false }, { "estet.tk", true }, + { "estetica-bilbao.com", true }, + { "estetica.host", true }, { "esteticamicali.com.ar", true }, { "esteticanorte.com.br", true }, { "esteticaprofana.it", true }, { "estetici.com", true }, + { "esteticka-chirurgie-nohy.cz", true }, { "estetista.net", true }, { "esthe-zukan.com", true }, { "esthergoh.com", true }, { "estherlew.is", true }, { "esthesoleil.jp", true }, + { "estheticianedu.org", true }, { "estila.co", true }, + { "estiloelevadores.com.br", true }, { "estilopack-loja.com.br", true }, + { "estimateone.com", true }, { "estintori.roma.it", true }, + { "estlat.eu", true }, { "estoense.com", true }, { "estomp.de", true }, { "estonia.ee", false }, @@ -43344,7 +50292,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "estoniantrade.ee", true }, { "estonoentraenelexamen.com", true }, { "estopero.tk", true }, + { "estradatech.org", true }, { "estradiolbestellen.gq", true }, + { "estrasol.com.mx", true }, + { "estrategiasfm.net", true }, { "estreetshuffle.com", true }, { "estrella.tk", true }, { "estrietoit.com", false }, @@ -43353,24 +50304,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "estruendo.tk", true }, { "estuarystudent.tv", true }, { "estudantetorcedor.com.br", true }, - { "estudiaenrusia.com", true }, { "estudiarparaser.com", true }, + { "estudiarseguridadprivada.es", false }, { "estudiaryaprenderingles.com", true }, { "estudiemosvirtualmente.com", true }, { "estudio21pattern.com", false }, - { "estudioaguiar.com.br", true }, + { "estudioaany.com.br", true }, { "estudiogarcia-rada.com", true }, + { "estudiojuridicovyv.cl", true }, { "estudiomantis.tk", true }, - { "estudionale.com", false }, - { "estudionale.com.ar", true }, + { "estudionale.com", true }, { "estudios-biblicos.tk", true }, { "estudiosalmogavares.tk", true }, { "estudiosmart.com", true }, { "estudiovillaran.com", true }, - { "estudosdavida.com.br", true }, { "estudosnacionais.com", true }, - { "estumarca.com", true }, - { "esturadio.net", true }, { "esu.dog", true }, { "esu.moe", true }, { "esu.wiki", true }, @@ -43379,17 +50327,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "esunenin.tk", true }, { "esuretynew.azurewebsites.net", true }, { "esurveynordic.com", true }, + { "esv.se", true }, { "esvaco.cf", true }, { "esw.com", true }, { "esy.nl", true }, + { "esyno.nl", true }, { "esyoil.com", true }, { "esys.ga", true }, { "esystems.tk", true }, { "eszkola.pl", true }, { "et-inf.de", true }, { "et.al", true }, + { "et.gd", true }, { "et420nrw.tk", true }, - { "eta.cz", true }, + { "etablissement.com", true }, { "etaes.eu", true }, { "etajerka-spb.ru", true }, { "etajerka.spb.ru", true }, @@ -43399,28 +50350,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etalktome.com", true }, { "etanol.tk", true }, { "etaoinwu.com", true }, - { "etaoinwu.win", true }, + { "etarskaikozmetickaulja.rs", true }, { "etath.com", true }, { "etaxigraz.com", true }, - { "etazapzap.cyou", true }, { "etccooperative.org", false }, { "etch.co", true }, { "etch44.com", true }, { "etcivil.com", true }, { "etctop.tk", true }, + { "etdcampus.com", true }, { "etdonline.co.za", true }, { "etdp.co.za", true }, - { "etdpractices.co.za", true }, { "etduvindemoselle.fr", true }, { "etech-solution.com", true }, { "etech-solution.net", true }, { "etech-solutions.com", true }, + { "etech.com.my", true }, { "etechsolution.net", true }, - { "eteesheet.com", true }, { "eternal-chaos.tk", true }, { "eternal-con.de", true }, { "eternal-dementia.tk", true }, { "eternal-warriors.de", true }, + { "eternalabyss.int.eu.org", true }, + { "eternalaugust.com", true }, { "eternalflame.cn", true }, { "eternalflame.info", true }, { "eternalguild.tk", true }, @@ -43433,10 +50385,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eternegy.co", true }, { "eternit.roma.it", true }, { "eternitdesio.it", true }, + { "eternl.io", true }, { "etestyonline.tk", true }, { "etf.nu", true }, { "etf2l.org", true }, - { "etfacta.com", true }, + { "etfacta.com", false }, + { "etfcentral.com", true }, + { "etflife.com", true }, { "eth-news.info", true }, { "eth-services.de", true }, { "eth0.nl", false }, @@ -43446,12 +50401,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ethan.pm", true }, { "ethanjones.me", true }, { "ethanlew.is", true }, - { "ethantskinner.com", false }, + { "ethanopp.com", false }, + { "ethanrjones.name", true }, + { "ethansailant.com", true }, { "ethanyoo.com", true }, { "ethelbrooks.es", true }, { "ether.school", true }, { "etherandir.com", true }, { "etherapeut.de", true }, + { "ethercalc.net", true }, { "etherderbies.com", true }, { "etherdream.com", true }, { "ethereal-skies.tk", true }, @@ -43468,38 +50426,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ethergeist.de", true }, { "etheria-software.tk", true }, { "etherium.design", true }, - { "etherium.org", true }, + { "etherium.org", false }, { "ethermine.org", true }, - { "ethernia.fr", true }, { "ethernium.fun", true }, { "etheron.com", true }, { "etherpad.nl", true }, - { "ethers.news", true }, + { "etherpoap.xyz", true }, + { "ethiack.com", true }, { "ethicalads.io", true }, { "ethicalconsumer.org", true }, { "ethicaldata.co.uk", true }, { "ethicalescorts.com", true }, - { "ethicalexploiting.com", true }, { "ethicallogistics.com", true }, { "ethicalpolitics.org", true }, { "ethicaltek.com", true }, { "ethics.org", true }, { "ethicsburg.gov", true }, { "ethicsfirst.org", true }, + { "ethicsforhumans.org", true }, { "ethika.com", true }, { "ethil-faer.fr", true }, { "ethiobaba.com", true }, { "ethioconsulate-la.org", true }, - { "ethiopian.dating", true }, + { "ethiqueadvisory.com", true }, { "ethitter.com", true }, { "ethnews.today", true }, { "ethniki-antistasi-dse.gr", true }, { "ethnopsychoanalyse.tk", true }, { "ethosinfo.com", true }, { "ethotupala.tk", true }, + { "ethpool.org", true }, { "ethzero.uk", true }, + { "eticket.cr", true }, { "etienne.cc", true }, { "etiennes.work", true }, + { "etigold.com", true }, { "etiketten.tk", true }, { "etikus-hacker.hu", true }, { "etil.wtf", true }, @@ -43508,20 +50469,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etincelle.tk", true }, { "etindustries.com", true }, { "etiqa.tk", true }, - { "etiquetaunica.com.br", true }, - { "etkaddict.com", true }, { "etkarle.de", true }, { "etmtobik.eu", true }, { "etnis.id", true }, { "etnoforum.tk", true }, { "etnoria.com", true }, - { "etny.nl", true }, + { "etny.nl", false }, { "etoile-rc.jp", true }, { "etoile-usedcars.com", false }, + { "etools.info", true }, { "etopa.de", true }, { "etoro-openbook.tk", true }, { "etororeviews.com", true }, { "etos.tk", true }, + { "etowahwaterga.gov", true }, { "etrades.tk", true }, { "etre-belle.tk", true }, { "etre-soi.ch", false }, @@ -43529,20 +50490,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etrecosmeticderm.com", true }, { "etresmant.es", true }, { "etrolleybizstore.com", true }, + { "ets-etos.azurewebsites.net", true }, { "ets-software.de", true }, - { "etskinner.com", false }, + { "etsduova.dedyn.io", true }, + { "etselquemenges.cat", true }, { "etsmarconi.be", true }, { "etspuka.de", true }, { "etsradio.org", true }, { "etsu.edu", true }, { "ettbattreinternet.se", true }, { "ettebiz.com", true }, + { "etterretningstjenesten.no", true }, { "ettgottliv.com", true }, { "ettip.com", true }, - { "ettounsi.net", true }, + { "ettlinger-tor.de", true }, + { "ettoday.org", true }, + { "ettoremirarchifilms.it", true }, { "ettyproject.org", true }, { "etudepresse.tk", true }, - { "etudes-litteraires.com", true }, { "etudes.ru", true }, { "etudesbibliques.fr", false }, { "etudesbibliques.net", false }, @@ -43552,35 +50517,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "etury.online", true }, { "etutsplus.com", true }, { "etv.cx", true }, - { "etwalldentalpractice.co.uk", true }, { "etyd.org", true }, { "etyka.cz", true }, { "eu-darlehen-finanzierung.de", true }, { "eu-datenbank.de", true }, + { "eu-election.eu", true }, { "eu-gamers.com", true }, { "eu-prodaja.com", true }, + { "eu-secured.com", true }, { "eu-stellenangebot.de", true }, { "eu.ax", true }, { "eu4ua.org", true }, { "euaaaio.ru", true }, { "euanbarrett.com", true }, - { "eubitoken.com", true }, + { "euassisti.com.br", true }, { "euc.world", true }, + { "euchance.hu", true }, { "euchre.us", true }, { "eucimen.com", false }, { "euclidian.com", true }, - { "eucofel.eu", true }, { "eucollegetours.com", true }, { "eucustody.com", true }, - { "eucybernet.eu", true }, + { "eucybernet.eu", false }, + { "eudiakok.hu", true }, { "eudireto.com", true }, { "eudore.org", true }, { "euexia.fr", true }, + { "eufair.com", true }, { "eugenegamelan.org", true }, + { "eugenekay.com", false }, + { "eugeneorourke.com", true }, + { "eugenesia.org", true }, + { "eugenics.org", true }, { "eugeniocorso.com", true }, { "eugenioperez.tk", true }, { "eugostodefilmesbrasileiros.tk", true }, { "eugster.se", true }, + { "eujobs.hu", true }, + { "eujobsgmbh.de", true }, + { "eujobshrgroup.com", true }, + { "eujobshrgroup.hu", true }, { "eujuicers.bg", true }, { "eujuicers.com", true }, { "eujuicers.com.hr", true }, @@ -43599,6 +50575,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eujuicers.ru", true }, { "eujuicers.si", true }, { "eujuicers.sk", true }, + { "eule82.de", true }, + { "eulen.com", true }, + { "eulenberg.com", true }, { "eulenschmiede.de", true }, { "euleres.tk", true }, { "eulessplumbers.com", true }, @@ -43606,17 +50585,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eumananc.ro", true }, { "eumk6.ml", true }, { "eung.ga", true }, + { "eunicetan.com", true }, + { "eunomy.io", true }, + { "eunow.com", true }, { "eupay.de", true }, { "euphoriaonline.tk", true }, { "eupm.org", true }, + { "euporos.ch", false }, + { "euprapeace.org", true }, { "eupropertysolutions.com", true }, { "eurasierwelpen.tk", true }, + { "eurazeo.com", true }, { "eurban.life", true }, { "eurbanos.tk", true }, { "eurekaca.gov", true }, { "eurekagames.tk", true }, + { "eurekanetwork.org", true }, { "eurekatech.eti.br", true }, { "eurekatownshipmi.gov", true }, + { "eurelectric.org", true }, { "euren.se", true }, { "eurmarketing.com", true }, { "euro-cdm.org", true }, @@ -43626,49 +50613,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "euro.se", true }, { "euroairport.com", true }, { "euroalter.com", true }, - { "eurobadmaasbracht.nl", true }, + { "euroasia-tm.com", true }, { "eurobattle.tk", true }, { "eurobeaute.be", true }, { "eurobilltracker.tk", true }, - { "eurocars2000.es", true }, { "eurocertificazione.it", true }, + { "eurocleanfrance.fr", true }, { "eurococos.com.ua", true }, { "eurocom.bg", true }, { "eurocomcompany.cz", true }, + { "euroconti.com", true }, { "eurocontrol.aero", true }, { "eurocontrol.eu", true }, { "eurocontrol.lu", true }, { "eurocontrol.me", true }, + { "eurocure.com", true }, { "eurodanceperu.tk", true }, { "eurodata.sk", true }, { "eurodentaire.com", true }, { "eurodesk.eu", true }, { "eurodontic.co.uk", false }, + { "eurodoo.com", true }, + { "euroecho.com", true }, { "euroenergy.tk", true }, { "euroestetica.ec", true }, { "euroexpres.info", true }, + { "eurofinance.com", true }, { "eurofire.tk", true }, { "euroflora.com", true }, { "euroflora.mobi", true }, { "euroflorist.cf", true }, { "euroflorist.ga", true }, { "euroflorist.tk", true }, + { "eurofoods.gr", true }, { "eurofoot.cf", true }, { "eurofrank.eu", true }, + { "eurofunk.at", true }, + { "eurofunk.com", true }, { "eurogarden-parts.de", true }, { "eurogarden.be", true }, { "eurogarden.com", true }, { "eurogarden.nl", true }, + { "eurohell-design.com", true }, + { "eurohell-design.de", true }, { "euroherp.com", true }, { "eurohouse.tk", true }, + { "eurokid.com", true }, + { "eurokiss.com", true }, { "eurolink.tk", true }, { "eurolocarno.es", true }, { "euromalha.com.br", true }, { "euroman.ga", true }, + { "euromas.com", true }, { "euromexde.com", true }, + { "euromuseumcoins.com", true }, { "euronic.fi", true }, { "eurookna.tk", true }, - { "europaband.fr", true }, + { "europa-passage.de", true }, + { "europabio.org", true }, { "europack.kiev.ua", true }, { "europainchemnitz.de", true }, { "europapier.net", true }, @@ -43676,8 +50678,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "europastudien-chemnitz.de", true }, { "europastudien.de", true }, { "europatour2005.tk", true }, + { "europatrans.com.tr", true }, + { "europavilion.com", true }, { "european-accreditation.org", true }, { "european-agency.org", true }, + { "european-alternatives.eu", true }, { "european-hospital.ga", true }, { "european-hospital.ml", true }, { "european-hospital.tk", true }, @@ -43685,15 +50690,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "europeananomalouswave.tk", true }, { "europeancuisine.tk", true }, { "europeancupinline.eu", true }, + { "europeangaming.eu", true }, { "europeanpolice.net", true }, { "europeanpreppers.com", true }, { "europeanstudies-chemnitz.de", true }, { "europeantransportmanagement.com", true }, - { "europeanwineresource.com", true }, { "europeluxuryweddings.com", true }, { "europeonline.tk", true }, { "europeontrack.org", true }, - { "europeos.es", true }, { "europesearbeiders.be", true }, { "europesrit.tk", true }, { "europetraveler.tk", true }, @@ -43701,17 +50705,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "europop.com", true }, { "europrise.ie", false }, { "eurorecambios24.com", true }, + { "euroregister.com", true }, { "euroroad17.dk", true }, { "euroscot.de", true }, { "euroshop.or.at", true }, { "euroshop.tk", true }, + { "eurosight.com", true }, { "euroskano.nl", true }, + { "euroskulpa.de", true }, { "eurospecautowerks.com", true }, { "eurosquad.tk", true }, { "eurostrategy.vn.ua", true }, { "eurosun.tk", true }, { "euroswapper.tk", true }, { "euroteam.tk", true }, + { "eurotechme.com", true }, + { "eurotechnology-group.com", true }, { "eurotest.tk", true }, { "eurotop.net.pl", true }, { "eurotour.tk", true }, @@ -43720,24 +50729,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eurousa.us", true }, { "eurovision-romania.tk", true }, { "eurovision.ie", true }, + { "eurowave.com", true }, + { "eurowijskids.nl", false }, + { "eurowish.com", true }, { "eurseo.com", true }, { "euruni.edu", true }, + { "eusalesman.hu", true }, { "eusarse.tk", true }, { "eusebiu.com", true }, { "euskalstakepool.win", true }, { "euskaltzaleak.tk", true }, { "eusou.ml", true }, { "eustaquio.tk", true }, + { "eustomamc.net", true }, + { "eusv.net", true }, { "eusystemic.com", true }, + { "eutawal.gov", true }, { "euterpiaradio.ch", true }, { "eutotal.com", true }, - { "euusofreedom.com.br", true }, { "euvo.tk", false }, { "euwid.de", true }, { "euzissima.com.br", true }, - { "ev-greentech.com", true }, - { "ev-menden-meindorf.de", true }, - { "ev-menden.de", true }, { "ev-zertifikate.de", true }, { "eva-briegel-fanpage.tk", true }, { "eva.cz", true }, @@ -43748,75 +50760,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evaberg.net", true }, { "evacs.net", true }, { "evacs.org", true }, + { "evacuumstore.com", true }, { "evadi.ca", true }, { "evafernandez.tk", true }, { "evafojtova.cz", true }, - { "evai.me", true }, { "evaisanta-mariaalmudever.tk", true }, { "evaisanta.tk", true }, + { "evaks.az", true }, { "evakuator-kharkov.kh.ua", true }, { "evakuator-tut.by", true }, + { "evakuator.ltd", true }, { "evakuator.services", true }, + { "evalcom.co", true }, { "evalcorp.com", true }, { "evalesc.com", true }, { "evalinux.com", true }, + { "evalongpornstar.com", true }, { "evalopezzz.org", true }, - { "evaluate.jp", true }, + { "evaluasi.com", true }, { "evaluation.gov", true }, { "evalueit.eu", true }, { "evaluer2.pl", true }, { "evamachkova.cz", false }, { "evamathil.de", true }, - { "evamira.com", true }, + { "evamlakar.si", true }, { "evanbaker.xyz", true }, { "evanescenceisfallen.tk", true }, { "evanescencenorge.tk", true }, { "evanescenceturkey.tk", true }, { "evanfiddes.com", true }, + { "evang.at", true }, { "evange.co.jp", true }, { "evangelicalmagazine.com", true }, { "evangelicalplatform.com", true }, { "evangelietuin.tk", true }, { "evangelionmagi.tk", true }, { "evangelise.asia", true }, + { "evangersdogfood.com", true }, { "evanreev.es", true }, { "evansfmm.org", true }, - { "evansfox.com", true }, + { "evanspoliceny.gov", true }, { "evanstonnow.com", false }, { "evansville-wy.gov", true }, { "evantageglobal.com", true }, + { "evanwang0.com", true }, { "evaolson.se", true }, - { "evapp.org", true }, + { "evar2.com", true }, { "evaria-network.fr", true }, - { "evasion-energie.com", true }, { "evasioncreole.com", true }, { "evasionteam.tk", true }, { "evasovova.cz", true }, + { "evatantricmassagelondon.uk", true }, { "evavolfova.cz", true }, - { "evbn.org", true }, { "evcarbontracker.com", true }, { "evdenevenakliyatankara.name.tr", true }, + { "evdenevenakliyatistanbul.gen.tr", true }, { "evdeneyapilir.com", true }, { "eve-care.com", true }, { "eve-online-com.ru", true }, - { "eve-skilltracker.com", true }, { "eve-ua.com", true }, { "eve.tax", true }, { "eve0s.com", true }, + { "eveandi.health", true }, { "eveapk.com", true }, - { "evearly.com", true }, { "eveaz.com", true }, { "eveco-mebel.ga", true }, { "evedanjailbreak.com", true }, { "eveetcie.com", true }, + { "evehryday.com", true }, { "eveil-et-savoirs.com", true }, + { "evelethpd.gov", true }, { "evelienuitvaartverzorging.nl", true }, { "evelienzorgt.nl", true }, { "evelin.tk", true }, - { "evelyndayman.com", true }, + { "evelyn.com", true }, + { "evemarketer.com", true }, { "evenbijproaten.online", true }, + { "evendesign.com", true }, { "evendesign.gq", true }, - { "evenementenhoekvanholland.nl", true }, { "evenimenteromania.tk", true }, { "eveningstar.tk", true }, { "eveningtaxservices.com", true }, @@ -43826,64 +50847,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "event-fullyyours.com", true }, { "event-reisen.tk", true }, { "event-trac.com", true }, + { "event-tyrlig.no", true }, { "event1teamstore.com", false }, { "event4fun.no", true }, + { "event64.ru", true }, { "eventact.com", false }, { "eventaro.com", true }, { "eventblog2017.tk", true }, { "eventcore.tk", true }, + { "eventdata.co.uk", true }, + { "eventdata.uk", true }, { "eventdays.tk", true }, - { "eventerlebnis.ch", true }, + { "eventfoto.com", true }, { "eventfun.tk", true }, { "eventide.space", true }, { "eventive.org", false }, + { "eventlista.no", true }, + { "eventlocation2.de", true }, { "eventmake.es", true }, + { "eventnature.de", true }, { "eventnexus.co.uk", true }, { "eventosbgp.com", true }, { "eventosdeluchalibre.tk", true }, { "eventosenmendoza.com.ar", true }, { "eventosformativos.tk", true }, + { "eventospremium.es", true }, + { "eventpark.cz", true }, + { "eventpay.jp", true }, { "eventprazdnik.ru", true }, { "events.bt", true }, + { "events1.co.il", true }, { "eventsbytma.com", true }, + { "eventseeker.com", true }, { "eventservicestockholm.se", true }, - { "eventsframe.com", true }, + { "eventsforyou.fr", true }, { "eventtech.com", false }, { "eventticketscenter.com", true }, { "eveonline.com", true }, - { "ever.sale", true }, + { "ever.sale", false }, + { "ever4cats.de", true }, { "everaerts.eu", true }, { "everain.me", true }, + { "everand.com", true }, { "everberg.tk", true }, + { "evercheck.com", true }, + { "everdivemarine.com", true }, + { "everestbankltd.com", true }, { "everesthealthgroup.com", true }, { "everettduiattorneys.com", true }, { "everettsautorepair.com", false }, { "everfine.com.tw", true }, + { "everfreecoloring.com", true }, + { "evergladesfarmequipment.com", true }, { "everglow.co.jp", true }, { "evergreenal.gov", true }, { "evergreenilder.tk", true }, - { "evergreenmichigan.com", true }, + { "evergreenlangladewi.gov", true }, + { "evergreenservice.net", true }, + { "everhome.cloud", true }, { "everhome.de", true }, - { "everhse.com", true }, { "everichspice.com", true }, { "everifile.com", true }, { "everify.gov", true }, { "everisland.com", true }, { "everitoken.io", true }, + { "everlastnetworks.com.au", true }, { "everling.lu", true }, { "everlong.org", true }, { "everly.market", true }, { "evermade.fi", true }, - { "evermarkstudios.com", true }, { "evermed.au", true }, { "evermed.com.au", true }, { "evernaut.com", true }, { "everpcpc.com", true }, { "everready.tk", true }, + { "everride.com", true }, { "everseo.tk", true }, { "eversightwealth.com", true }, + { "everstrike.io", true }, { "evertonarentwe.com", true }, { "evertradeelectronics.com", true }, + { "evertz.com", true }, { "evervitjuice.com", true }, { "everwaking.com", false }, { "everwinter.tk", true }, @@ -43897,8 +50941,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "everydaydishes.com", true }, { "everydaygary.com", true }, { "everydaylifeinsurance.com", true }, - { "everydaynews.ro", true }, { "everydaypower.com", true }, + { "everydaypsychology.org", true }, { "everydaytherich.com", true }, { "everydaywot.com", true }, { "everyex.com", true }, @@ -43912,8 +50956,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "everysaving.ae", true }, { "everysaving.ca", true }, { "everysaving.co.uk", true }, - { "everysaving.co.za", true }, + { "everysaving.com", true }, { "everysaving.com.au", true }, + { "everysaving.ie", true }, { "everysaving.sg", true }, { "everystudent.bg", true }, { "everystudent.com.tw", true }, @@ -43923,32 +50968,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "everything-mdaemon.com", true }, { "everythingaccess.com", true }, { "everythingbarca.com", true }, - { "everythingcebu.com", true }, { "everythingcovid-19.com", true }, { "everythingfree.tk", true }, { "everythinginoneblog.gq", true }, { "everythinglidia.com", true }, - { "everythingstech.com", true }, { "everythinq.com", true }, { "everytrycounts.gov", true }, { "everyveterancountsohio.gov", true }, - { "everzocial.com", true }, - { "evesan.com", true }, { "eveshaiwu.com", true }, { "eveshamglass.co.uk", true }, { "eveswell.com", true }, + { "evetdermisin.com", true }, { "evetech.net", true }, { "evezqurbanli.tk", true }, { "evga.com", true }, { "evhoeft.com", true }, { "eviadc.com", true }, - { "eviamv.com", true }, { "eviction.cf", true }, { "evidecor.com.br", true }, - { "evidencebased.net", true }, { "evidenceusa.com.br", true }, { "evidenciamidiasdigitais.com.br", true }, { "evidencija.ba", true }, + { "evidentiauniversity.com", true }, { "evies.tk", true }, { "evil-empire.tk", true }, { "evilbeasts.ru", true }, @@ -43960,7 +51001,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evilla.ru", false }, { "evilmartians.com", true }, { "evilmoisture.tk", true }, - { "evilness.nl", true }, { "evilnolo.tk", true }, { "evilofsociety.tk", true }, { "evilolive.tk", true }, @@ -43968,6 +51008,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evilscience.tk", true }, { "evilsite.cf", true }, { "eviltricks.tk", true }, + { "eviltwins.studio", true }, { "evilways.tk", true }, { "evin.ml", true }, { "evin.tk", true }, @@ -43977,21 +51018,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evisos.com", true }, { "evisos.com.ar", true }, { "evisos.com.mx", true }, + { "evisos.es", true }, { "evitacion.com", true }, { "eviz.co", true }, - { "evlear.com", true }, - { "evlilik.gen.tr", true }, + { "evkitdigital.com.br", true }, + { "evl.one", true }, { "evlilikilan.com", true }, { "evlqa1sp1tzb05zo-reoo0vhj9a1t5pousfudnkg.com", false }, + { "evlvapors.com", true }, { "evntage.com", true }, + { "evobas.com", true }, { "evobox.store", true }, + { "evocate.com.au", true }, { "evoco.vc", true }, { "evodation.com", true }, { "evodation.org", true }, + { "evogence.com", true }, { "evojska.tk", true }, - { "evok.com.co", true }, - { "evokepk.com", true }, - { "evokewonder.com", true }, + { "evokeearlylearning.com.au", true }, { "evolucioneducativa.com.ec", true }, { "evolucionestudios.com.bo", true }, { "evolucionradio.tk", true }, @@ -44003,12 +51047,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evolutioninflatables.co.uk", true }, { "evolutionlending.co.uk", true }, { "evolutionosteopathy.co.uk", true }, - { "evolutionpets.com", true }, { "evolutive-records.tk", true }, - { "evoluzione.fr", true }, + { "evoluxion.co", true }, + { "evoluzione.fr", false }, + { "evolve-mma.com", true }, + { "evolve-university.com", true }, + { "evolve-vacation.com", true }, + { "evolve.com", true }, { "evolvedevlabs.de", true }, + { "evolvetechnologies.co.uk", true }, { "evolvicity.org", true }, - { "evolvingsouls.com", true }, + { "evolvingseo.com", true }, { "evolvingthoughts.net", true }, { "evonet.co.za", true }, { "evony.eu", true }, @@ -44019,12 +51068,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evosyn.com", true }, { "evote-ch.ch", true }, { "evotec.pl", true }, - { "evotec.xyz", true }, { "evoting-test.ch", true }, { "evoting.ch", true }, + { "evri.com", true }, { "evrial.com", true }, { "evromandie.ch", true }, { "evronews.ga", true }, + { "evropaedu.ru", true }, { "evscicats.com", true }, { "evscstudentwifi.com", true }, { "evsinemasistemleri.tk", true }, @@ -44037,6 +51087,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "evv.ee", true }, { "evxp.it", true }, { "evyn.eu", true }, + { "evz.ro", true }, { "ewa-hayward.co.uk", true }, { "ewacforum.tk", true }, { "ewaf.club", true }, @@ -44046,63 +51097,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ewanm89.uk", true }, { "ewansinclair.tk", true }, { "ewanto.de", true }, + { "ewaroeng.com", true }, { "ewatchers.org", true }, - { "ewc.co.jp", true }, - { "ewcd.co.jp", true }, - { "ewe2.ninja", true }, + { "ewddlacity.com", true }, + { "ewebcreative.com", true }, { "ewelinagrochowina.pl", true }, { "ewen-bara.com", true }, { "ewesparky.com", true }, + { "ewgri.gov", true }, { "ewhitehat.com", true }, { "ewie.name", true }, { "ewigetrauringe.de", true }, { "ewighost.com", true }, { "ewinstore.com", true }, { "ewizmo.com", true }, + { "ewon.biz", true }, { "eworkflow.ca", true }, { "eworksmedia.com", false }, { "eworldmedia.ml", true }, { "eworldmedia.tk", true }, { "ewoutpool.tk", true }, { "ewritingservice.com", true }, - { "ewrk.se", false }, { "ewsfeed.com", true }, { "ewtl.es", true }, { "ewuchuan.com", true }, - { "ewus.de", true }, - { "ewy.nl", true }, { "ewycena.pl", true }, { "ex-deli.jp", true }, + { "ex-links.net", true }, + { "ex.co", true }, + { "ex2technology.com", true }, + { "exabike.com", true }, { "exablue.de", true }, { "exact-distribution.com", true }, { "exact-online-apps-by-invantive.com", true }, + { "exact.realty", true }, { "exactlibris.com", true }, { "exactlyinfinite.com", true }, { "exactphilosophy.net", true }, + { "exactrealty.co.uk", true }, + { "exactrealty.no", true }, + { "exactrealty.us", true }, + { "exactverify.com", true }, { "exadime.net", true }, { "exaduosport.fr", true }, { "exagoni.com.au", true }, { "exagoni.com.my", true }, - { "exaktus.pt", false }, - { "exalt.org.au", true }, + { "exalthost.com", true }, { "exam4.us", true }, { "exambot.cf", true }, { "exambot.ga", true }, { "exambot.gq", true }, { "exambot.tk", true }, { "examedge.com", true }, + { "examesrush.com", false }, + { "examesrush.com.br", false }, + { "examhq.net", true }, { "examika.ru", true }, - { "examinrush.com", true }, + { "examinrush.com", false }, + { "examity.com", true }, + { "examly.io", true }, + { "examone.com", true }, + { "exampaperarchive.com", true }, { "example.sc", true }, { "example.wf", true }, { "exampleessays.com", true }, - { "examroll.com", true }, { "examroll.fr", true }, { "examroll.io", true }, + { "examroo.nl", false }, { "examsite.tk", true }, { "examsmate.in", true }, + { "examsoft.com", true }, + { "examsplanner.in", true }, { "examticket.tk", true }, { "exaplac.com", true }, + { "exarcheia.com", true }, { "exarcheia.link", true }, { "exarcheia.online", true }, { "exarcheia.ru", true }, @@ -44117,28 +51185,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "excel-group.com", true }, { "excel-mechanical.com", true }, { "excelbroadcast.com", true }, + { "exceldatapro.com", true }, + { "excelenteawards.com", true }, { "exceleron.in", true }, - { "excelglobalpartners.com", true }, - { "excelhot.com", true }, + { "excelgum.ca", true }, + { "excelindonesia.com", true }, { "excelindonesia.id", true }, { "excelkursdirekt.eu", true }, - { "excella.me", true }, + { "excellarate.com", true }, { "excellence-eventos.com", true }, { "excellence-redefined.org", true }, { "excellence.corsica", true }, + { "excellenceriviera.com", true }, { "excellentrencontrer.tk", true }, { "excellentsurferers.ga", true }, { "excellentsurferest.ga", true }, { "excelnutritional.com.br", true }, - { "exceloreflexology.com", true }, { "excelsiorcomics.com.br", true }, { "excelsis.rs", true }, { "exceltechoman.com", true }, { "exceltobarcode.com", true }, { "excentos.com", true }, + { "exceptionalfirm.com", true }, + { "exceptionalservers.com", true }, { "exceptionalservices.us", true }, { "exceptionalstack.com", true }, - { "excerp.tech", true }, + { "exceptionnotfound.net", true }, { "excess-baggage.com", true }, { "excessamerica.com", true }, { "excessive-software.tk", true }, @@ -44147,27 +51219,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exchanger.tk", true }, { "exchangeratingest.ga", true }, { "exchangers.top", true }, + { "exchangesolutions.com", true }, { "exchangetrading.tk", true }, { "exchangeview.ga", true }, { "exchangevisits.tk", true }, { "exchaser.com", true }, + { "excimerlaser.com", true }, { "excite.co.id", true }, { "exciters.tk", true }, { "excitingbulgaria.com", false }, - { "excitingdevelopment.com", true }, { "excitoninteractive.com", true }, + { "exclusivacademy.com", true }, { "exclusive-okno.ru", true }, { "exclusive-world.tk", true }, - { "exclusivebeautystudio.com.au", true }, - { "exclusivebouncycastles.co.uk", true }, { "exclusivedesignz.com", true }, { "exclusivelyuk.co.uk", true }, - { "exclusivityglobal.tech", false }, + { "exclusivemilf.com", true }, + { "exclusiveresorts.com", true }, { "excluzive.ml", true }, { "excoins.biz", true }, + { "excomm.io", false }, { "excontinuum.de", true }, { "excursiones.tk", true }, - { "exdamo.de", true }, + { "exdomo.com", true }, { "exe-boss.tech", true }, { "execbar.com", true }, { "exechip.com", true }, @@ -44175,8 +51249,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "execupharm.jp", true }, { "execution.biz.tr", true }, { "executivemarketing.co.za", true }, - { "executiveresolutions.co.uk", false }, { "executiveseatsers.ga", true }, + { "executivoshotel.com.br", true }, + { "exedo.nl", true }, { "exeest.com", true }, { "exegese.ch", false }, { "exegol.co.uk", true }, @@ -44189,8 +51264,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exerciseaid.com", true }, { "exercisekingers.ga", true }, { "exercisekingest.ga", true }, - { "exerforge.com", true }, { "exerforge.net", true }, + { "exerph.com", true }, { "exerpm.tk", true }, { "exesoft.ml", true }, { "exeunt.tk", true }, @@ -44198,25 +51273,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exeypanteleev.com", true }, { "exforo.tk", true }, { "exfuga.com", true }, + { "exhalewell.com", true }, { "exhumationindia.tk", true }, + { "exiahost.com", true }, { "exiled.land", true }, { "exiled.world", true }, + { "exiletattoo.net", true }, { "exiletower.tk", true }, + { "eximbank.gov.tr", true }, { "exip.ga", true }, + { "exipure.com", true }, { "exira.com", true }, - { "existest.com", true }, { "exitooutdoor.com", true }, - { "exitos1000.es", true }, { "exitoseguro.tk", true }, { "exitreality.tk", true }, { "exizent.com", true }, { "exizent.tk", true }, + { "exline.pro", true }, { "exmart.ng", true }, { "exmoe.com", true }, { "exo-chanyeol.tk", true }, - { "exocen.com", false }, { "exodiac.ph", true }, { "exodium.tk", true }, + { "exodus-net.pl", true }, + { "exodus.com", true }, + { "exodus.io", true }, { "exogenous.ga", true }, { "exomind.cf", true }, { "exomind.gq", true }, @@ -44236,28 +51317,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exoticaz.to", true }, { "exotictravel.tk", true }, { "exousiakaidunamis.pw", true }, + { "exousiamg.com", true }, { "exoweb.ca", true }, { "exp.gg", true }, { "expancio.com", false }, { "expanda.org", false }, { "expandabil.cf", true }, - { "expandacatering.com", true }, { "expanddigital.media", true }, { "expandor.cz", true }, + { "expansehost.de", true }, { "expansion-lidl.es", true }, + { "expansive.info", true }, + { "expart.com", true }, { "expatads.com", true }, { "expatfinancial.com.hk", true }, { "expatinpoland.com", true }, { "expatmortgage.uk", true }, { "expatriate.pl", false }, { "expe.voyage", true }, - { "expectation.management", true }, + { "expectful.com", true }, { "expecting.com.br", true }, + { "expediteplus-asia.com", true }, + { "expediteplus.biz", true }, + { "expediteplus.ca", true }, + { "expediteplus.com", true }, + { "expediteplus.com.mx", true }, + { "expediteplus.info", true }, + { "expediteplus.mobi", true }, + { "expediteplus.mx", true }, + { "expediteplus.net", true }, + { "expediteplus.org", true }, + { "expediteplus.pro", true }, + { "expediteplus.us", true }, { "expeditiegrensland.nl", false }, { "expedition247.com.au", true }, { "expelliarmus.tk", true }, + { "expensify.com", true }, { "expensivejewelsest.ga", true }, { "exper.gr", true }, + { "experience.com", true }, + { "experiencealula.com", true }, + { "experienceoutdoors.org.uk", true }, { "experienceoz.com.au", true }, { "experiment-626.tk", true }, { "experimentalguruji.cf", true }, @@ -44265,29 +51365,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "experimentator.cz", true }, { "experimentoscongaseosa.tk", true }, { "experimentrak.com", true }, + { "experimentworld.io", true }, { "experimetrix.com", true }, { "experise.fr", true }, { "experpento.tk", true }, { "expert-batiment-rouen.fr", true }, + { "expert-comptable-vichy-moulins-allier.fr", true }, { "expert-korovin.ru", true }, + { "expert-market.com", true }, { "expert-voronezh.tk", true }, { "expert.cz", true }, { "expert96.cf", true }, { "expertclub.tk", true }, + { "expertcomics.ca", true }, { "expertcomics.com", true }, { "experteasy.com.au", true }, + { "expertembeleza.com", true }, + { "expertembeleza.com.br", true }, { "expertestate.org", true }, { "experthive.co.za", true }, { "expertly.com", true }, { "expertmarketer.ro", true }, { "expertmarktrg.com", true }, { "expertofficefitouts.com.au", true }, + { "expertoseninversiones.com", true }, + { "expertowears.com", true }, { "expertpaintersvt.com", true }, { "expertpanel.gc.ca", true }, { "expertpensions.co.uk", true }, { "expertplumbingandsolarservicesbathurst.com.au", true }, { "experts-united.tk", true }, - { "expertsverts.com", true }, { "expertvagabond.com", true }, { "expertviolinteacher.com", true }, { "expicare.com", true }, @@ -44300,7 +51407,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "explode.tk", true }, { "explodie.org", true }, { "exploflex.com.br", true }, - { "exploit-db.com", true }, { "exploit.cz", false }, { "exploit.party", true }, { "exploit.ph", true }, @@ -44309,32 +51415,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exploitit.com.au", true }, { "exploodo.rocks", true }, { "explorance.com", true }, + { "exploraturuta.com", true }, { "exploravacations.in", true }, + { "explore-being-human.org", true }, { "explore-malaysia.ga", true }, { "explore-visions.com", true }, { "explore.beer", true }, { "explorea1a.com", true }, { "explorebigideas.com", true }, + { "explorecrack.com", true }, { "exploreeurope.de", true }, { "exploregulf.ga", true }, { "exploreit.online", true }, - { "explorelocaltravel.tours", true }, + { "exploretock.com", true }, + { "exploretravellife.com", true }, { "exploretsp.gov", true }, { "exploring-memory.org", true }, { "exploringmorocco.tours", true }, + { "exploristics.com", true }, { "explorium.tk", true }, { "explosion-cs.tk", true }, { "explosionstereo.tk", true }, { "expo-larionov.org", true }, { "expo58.tk", true }, { "expobeds.com", true }, + { "expocom.online", true }, + { "expodat.com", true }, { "expodom.hu", true }, { "expodom.ro", true }, { "expodom.sk", true }, { "expodum.cz", true }, { "expoesiavisual.tk", true }, { "expoexports.tk", true }, - { "expoline.ua", true }, { "expomac.tk", true }, { "exponentialnews.net", true }, { "exponentialsoft.cf", true }, @@ -44346,8 +51458,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "expoort.com", true }, { "expoort.com.br", true }, { "expoort.es", true }, - { "expoort.fr", true }, - { "expoort.it", true }, { "expopodium.com", true }, { "expoprime.tk", true }, { "expopro24.ru", true }, @@ -44357,24 +51467,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exposurecompensation.co.uk", true }, { "exposurethrash.tk", true }, { "expouniverse.tk", true }, - { "expovivienda.com.mx", true }, { "expoxl.nl", true }, + { "express-delivery.co.il", true }, { "express-hosting.org", true }, { "express-shina.ru", true }, { "express-shop.tk", true }, { "express-vpn.com", true }, { "express1040.com", true }, { "expressarte.tk", true }, + { "expressdebanat.ro", true }, { "expressemotion.net", true }, + { "expressglobal.co.kr", true }, { "expresshosting.org", true }, + { "expresshsp.com", true }, + { "expressinfo.cz", true }, + { "expressinfo.sk", true }, { "expressionexpress.net", true }, + { "expressivee.com", true }, { "expressmarket.ru", true }, + { "expressnewspoint.com", true }, + { "expressodasilhas.cv", true }, + { "expresspak.co.nz", true }, + { "expressramps.com", true }, { "expressstore.ga", true }, { "expressvpn.com", true }, + { "expressvpn.net", true }, + { "expressvpn.works", true }, + { "expressvpn.xyz", true }, { "expresvpn-private-analytics.net", true }, { "exprimo.tk", true }, - { "exprohacks.com", true }, - { "expromo.eu", true }, { "expungement.law", true }, { "expxkcd.com", true }, { "exquisique.tk", true }, @@ -44382,9 +51503,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exs.lv", true }, { "exsanio.de", true }, { "exside.com", true }, + { "exstirpo.com", true }, { "extact.com", true }, { "extantsoft.biz", true }, + { "extelicast.com", true }, { "extendet.tk", true }, + { "extendresources.com", false }, { "extendwings.com", true }, { "extenselizzembalagens.com.br", true }, { "extensia.it", true }, @@ -44393,7 +51517,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "extensiblewebmanifesto.org", true }, { "extensiblewebsummit.org", true }, { "extensionciglia.roma.it", true }, + { "extensions-chrome.ru", true }, { "extensionschallenge.com", true }, + { "extensionworkshop.com", true }, { "exteriorlightingagoura.com", true }, { "exteriorlightingagourahills.com", true }, { "exteriorlightingcalabasas.com", true }, @@ -44412,17 +51538,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exteriorservices.io", true }, { "exterminateur-quebec.ca", true }, { "exterminator.com.ua", true }, + { "external-share.com", true }, { "externalapps.com", true }, { "externalfb.com", true }, { "externer-datenschutzbeauftragter-bochum.de", true }, + { "externeverslaggeving.nl", true }, { "externevoorzitter.nl", true }, { "extienso.com", true }, { "extinctionrebellion.de", true }, { "extirosli.ga", true }, { "extmatrix.com", false }, - { "extra.kiev.ua", true }, { "extrabits.pt", true }, { "extrabusiness.tk", true }, + { "extract.me", true }, { "extracting.tk", true }, { "extradesktops.com", false }, { "extradiely.sk", true }, @@ -44436,17 +51564,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "extraloud.tk", true }, { "extrapagetab.com", true }, { "extraspaces.co.uk", true }, + { "extratv.com", true }, { "extraupdate.com", true }, { "extreemhost.nl", true }, { "extreme-addicts.tk", true }, { "extreme-gaming.de", true }, { "extreme-gaming.us", true }, - { "extreme-stock.com", false }, { "extreme.co.th", true }, - { "extremebros.com", true }, + { "extremebaking.com", true }, { "extremeforces.tk", true }, { "extremelawsers.ga", true }, { "extremelawsest.ga", true }, + { "extremeleadprogram.com", true }, { "extremelycorporate.ca", false }, { "extrememanual.net", true }, { "extrememusclepump.com", true }, @@ -44454,14 +51583,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "extremeprojects.tk", true }, { "extremeservicesandrestoration.com", true }, { "extremesports.tk", true }, + { "extremetreeandlandscape.com", true }, { "extremetunedcars.tk", true }, { "extremfrank.tk", true }, { "extremovirtual.com", true }, { "extrolife.ml", true }, { "extromail.de", true }, + { "extstore.com", true }, { "extua.pw", true }, { "exudestudios.tk", true }, { "exum.tk", true }, + { "exusi.ai", true }, { "exvisits.tk", true }, { "exvs.org", true }, { "exwaiti.com", true }, @@ -44473,17 +51605,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "exxpozed.com", true }, { "exxpozed.de", true }, { "exxpozed.eu", true }, + { "exzibit.net", true }, + { "exzotikfruit.com", true }, { "eyasc.nl", true }, - { "eye-encounters.com", true }, { "eye-move.nl", true }, - { "eye-vet.co.uk", true }, { "eye.do", true }, { "eye.security", true }, { "eyeandfire.com", true }, { "eyeball.ml", true }, { "eyebrowsmicroblading.co.uk", true }, { "eyecandy.gr", true }, - { "eyecare-center.com", true }, { "eyecon.gr", true }, { "eyedea.ga", true }, { "eyedesignuniversity.com", true }, @@ -44499,7 +51630,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eyeniyasam.com", true }, { "eyenote.gov", true }, { "eyeonid.com", false }, - { "eyep.me", true }, + { "eyep.me", false }, + { "eyeratereviews.com", true }, { "eyes-berg.com", false }, { "eyesandearsrescue.org", true }, { "eyesaveopticalinc.com", true }, @@ -44507,6 +51639,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eyesee.fr", true }, { "eyesfans.com", true }, { "eyeshield-informatique.tech", true }, + { "eyesome.com", true }, { "eyespecialistsofla.com", true }, { "eyestrainexplained.com", true }, { "eyesurgery.tk", true }, @@ -44514,58 +51647,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "eyetooth.ga", true }, { "eyfari.com", true }, { "eyktasarim.tk", true }, - { "eylif.is", true }, + { "eylea.us", true }, + { "eylog.co.uk", true }, + { "eylulsohbet.net", true }, { "eynio.com", true }, { "eyona.com", true }, + { "eyoo.link", true }, { "eyps.net", true }, - { "eyrid.com", true }, { "eytosh.net", true }, { "eyy.co", true }, { "eyyit.com", false }, { "eyyubyilmaz.com", true }, { "ezabalium.tk", true }, { "ezakazivanje.rs", true }, + { "ezalba.com", false }, { "ezcater.com", true }, { "ezcater.io", true }, + { "ezcesspoollongisland.com", true }, { "ezcourseonline.com", true }, { "ezdog.press", true }, { "ezec.com.tw", true }, { "ezee-fix.co.uk", true }, + { "ezekia.com", true }, { "ezelukwu-chambers.org", true }, - { "ezequiel-garzon.net", true }, - { "ezftrs.com", true }, - { "ezgamble.com", true }, + { "ezeviral.com", true }, { "ezgif.com", true }, { "ezhub.de", true }, { "ezidox.com", true }, { "ezifin.com", true }, - { "ezifund.com", true }, { "ezik-ido.tk", true }, { "ezinezone.tk", true }, { "ezinternet.com.au", true }, { "ezitech.com", true }, { "ezmob.com", true }, { "ezmoddingz.tk", true }, - { "eznetworks.com.br", true }, + { "ezochat.com", true }, { "ezorgportaal.nl", true }, + { "ezoterizm.info", true }, { "ezpb.com", true }, + { "ezprints.com", false }, { "ezpzdelivery.com", true }, - { "ezrafashiondesign.com", true }, { "ezrent.tk", true }, - { "ezrohi.ru", true }, { "ezsavers.ga", true }, { "ezsaversers.ga", true }, { "ezsaversest.ga", true }, { "ezscrapbooksest.ga", true }, { "ezshopper.co.uk", true }, { "ezsun.co", true }, - { "ezwritingservice.com", true }, + { "ezwebsearch.com", true }, { "ezybook.co.nz", true }, { "ezybook.net", true }, + { "ezyfitdoors.com.au", true }, + { "ezygentechnology.com", true }, { "ezz-drops.tk", true }, { "ezzhole.net", true }, { "f-401.com", true }, - { "f-code.tech", true }, + { "f-centre.ru", true }, { "f-csc.org", true }, { "f-droid.org", true }, { "f-hd.net", true }, @@ -44573,13 +51710,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "f-sulzmann.de", true }, { "f-thie.de", true }, { "f-u-c-k.wien", true }, - { "f00.fr", true }, { "f00228.com", true }, { "f00f.org", true }, { "f0x.es", true }, + { "f1-onlineliga.com", true }, { "f1318.com", true }, { "f1318.net", true }, - { "f13cybertech.cz", true }, { "f1bigpicture.com", true }, { "f1classement.com", false }, { "f1collection.com", true }, @@ -44587,24 +51723,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "f1fever.co.uk", true }, { "f1fever.net", true }, { "f1grandprix.tk", true }, + { "f1iran.com", true }, { "f1ltr0.com", true }, { "f1minute.com", true }, { "f1nal-lap.be", true }, { "f1nalboss.de", true }, + { "f1nn.space", true }, { "f1pr.com", true }, { "f1report.net", true }, { "f1sh.de", true }, { "f1simulator.tk", true }, { "f1solutionslb.com", true }, { "f1sport.tk", true }, - { "f1tv-streams.live", true }, { "f1worldwide.tk", true }, { "f2h.io", true }, + { "f2pool.com", true }, { "f36533.com", true }, { "f3r.xyz", true }, { "f42.net", true }, { "f43.me", true }, + { "f45challenge.com", true }, + { "f45training.com", true }, { "f4bkv.net", true }, + { "f4jsl.fr", true }, { "f5.hk", true }, { "f51365.com", true }, { "f5197.co", true }, @@ -44612,122 +51753,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "f6729.com", false }, { "f6957.co", true }, { "f6queer.org", true }, - { "f6s.com", true }, { "f8003.com", true }, { "f8007.com", true }, - { "f8036.com", true }, - { "f81365.com", true }, { "f82365.com", true }, - { "f88-eline.com", true }, - { "f88-line.com", true }, - { "f88-line.net", true }, { "f88288.com", true }, { "f8842.com", true }, { "f88fine.com", true }, { "f88good.com", true }, - { "f88huoban2.com", true }, - { "f88line.com", true }, { "f88ll.com", true }, - { "f88ok103.com", true }, - { "f88ok136.com", true }, - { "f88ok49.com", true }, - { "f88ok71.com", true }, - { "f88ok75.com", true }, - { "f88partner.com", true }, { "f88qin.com", true }, - { "f88vip1.cc", false }, { "f88vip1.com", true }, - { "f88vip101.cc", true }, { "f88vip101.com", true }, { "f88vip102.cc", true }, - { "f88vip102.com", true }, - { "f88vip103.com", true }, - { "f88vip104.cc", false }, - { "f88vip104.com", true }, - { "f88vip105.cc", true }, - { "f88vip105.com", true }, - { "f88vip106.cc", true }, - { "f88vip106.com", true }, { "f88vip107.com", true }, { "f88vip108.com", true }, - { "f88vip109.com", true }, - { "f88vip11.com", true }, - { "f88vip110.com", true }, - { "f88vip111.com", true }, - { "f88vip113.com", true }, - { "f88vip114.com", true }, - { "f88vip115.com", true }, - { "f88vip116.com", true }, - { "f88vip117.com", true }, - { "f88vip118.com", true }, - { "f88vip119.com", true }, - { "f88vip12.com", true }, - { "f88vip121.com", true }, - { "f88vip122.com", true }, - { "f88vip124.com", true }, - { "f88vip125.com", true }, - { "f88vip126.com", true }, - { "f88vip127.com", true }, - { "f88vip128.com", true }, - { "f88vip13.com", true }, - { "f88vip130.com", true }, - { "f88vip136.com", true }, - { "f88vip137.com", true }, - { "f88vip138.com", true }, - { "f88vip14.com", true }, - { "f88vip15.com", true }, - { "f88vip16.com", true }, - { "f88vip17.com", true }, - { "f88vip18.com", true }, - { "f88vip19.com", true }, - { "f88vip2.cc", true }, - { "f88vip2.com", true }, - { "f88vip20.com", true }, - { "f88vip21.com", true }, - { "f88vip22.com", true }, - { "f88vip23.com", true }, { "f88vip29.com", true }, - { "f88vip3.cc", false }, - { "f88vip3.com", true }, - { "f88vip30.com", true }, - { "f88vip31.com", true }, - { "f88vip32.com", true }, - { "f88vip33.com", true }, - { "f88vip34.com", true }, - { "f88vip35.com", true }, - { "f88vip36.com", true }, - { "f88vip37.com", true }, - { "f88vip38.com", true }, - { "f88vip39.com", true }, - { "f88vip4.cc", true }, - { "f88vip4.com", true }, - { "f88vip5.com", true }, - { "f88vip50.com", true }, - { "f88vip52.com", true }, - { "f88vip53.com", true }, - { "f88vip54.com", true }, - { "f88vip58.com", true }, - { "f88vip6.cc", true }, - { "f88vip6.com", true }, - { "f88vip67.com", true }, - { "f88vip70.com", true }, - { "f88vip712.com", true }, - { "f88vip732.com", true }, - { "f88vip743.com", true }, - { "f88vip764.com", true }, - { "f88vip781.com", true }, - { "f88vip782.com", true }, { "f88vip8.com", true }, { "f88vip804.com", true }, { "f88vip851.com", true }, { "f88vip878.com", true }, { "f88vip895.com", true }, - { "f88vip9.com", true }, { "f88yule111.com", true }, { "f88yule122.com", true }, - { "f88yule3.com", true }, - { "f88yule5.com", true }, - { "f88yule6.com", true }, { "f88yule7.com", true }, { "f88yule9.com", true }, { "f8906.com", true }, @@ -44748,18 +51795,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "f9721.com", false }, { "f9728.co", true }, { "f9852.com", false }, - { "f9881.com", true }, - { "f9882.com", true }, { "f9883.com", false }, { "f9884.com", true }, { "f9885.com", false }, { "fa-fa.tk", true }, - { "fa-works.com", true }, { "faapart107certifiedpilot.com", true }, + { "faaq.ru", true }, { "faasviddy.nl", true }, { "faazmusic.com", true }, + { "fabao.in", true }, + { "fabarm.fr", true }, { "fabbro-roma.org", true }, { "fabbro.roma.it", true }, + { "fabconvert.com", true }, { "fabelturen.tk", true }, { "faber.org.ru", false }, { "faberoclub.tk", true }, @@ -44769,16 +51817,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fabian-klose.de", true }, { "fabian-klose.net", true }, { "fabian-kluge.de", true }, + { "fabian-praschl.de", true }, { "fabian-zoske.de", true }, { "fabian.gq", true }, { "fabianackle.ch", true }, - { "fabianasantiago.com", true }, { "fabianbeiner.com", false }, { "fabianbeiner.de", false }, { "fabianegli.ch", true }, { "fabianfranke.de", true }, { "fabianfrisch.de", true }, - { "fabiankaindl.de", true }, { "fabiankoeppen.com", true }, { "fabianni.tk", true }, { "fabickcat.com", true }, @@ -44789,19 +51836,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fabil.id", true }, { "fabilnatural.co.id", true }, { "fabilpages.com", true }, + { "fabim.de", true }, { "fabiobier.com", true }, { "fabiokrug.de", true }, + { "fabiolamolinastore.com", true }, { "fabiooliveirapr.com.br", true }, { "fabiopaiva.pt", true }, + { "fabledsolutions.com", true }, { "fableforge.nl", true }, { "fableheartmedia.com", true }, { "fabpilot.com", true }, + { "fabricademonstros.com.br", true }, { "fabricalaser.com.br", true }, + { "fabricandoclientes.com.br", true }, { "fabriceleroux.com", false }, + { "fabricio.adv.br", true }, + { "fabricio.eti.br", true }, { "fabriciomoreira.ga", true }, + { "fabrik.de", true }, + { "fabrika-jaluzi.ru", true }, { "fabrikafilmes.com.br", true }, { "fabriknet.de", true }, { "fabrilec.tk", true }, + { "fabrinet.co.th", true }, { "fabriziofaniello.tk", true }, { "fabriziorocca.it", true }, { "fabriziorocca.tk", true }, @@ -44809,13 +51866,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fabseal.de", true }, { "fabslabour.uk", true }, { "fabtechexpo.com", true }, + { "fabulosa.com.br", false }, + { "fabulous.com", true }, { "fabulouseventsmiami.com", true }, { "fabulousfarmgirl.com", true }, { "fabulouslyyouthfulskin.com", true }, { "fabulouslyyouthfulskineyeserum.com", true }, { "faburocks.com", true }, + { "fabuye.cf", true }, + { "fabuye.ga", true }, + { "fabuye.gq", true }, + { "fabuye.ml", true }, + { "fabuye.tk", true }, { "fac.fi", true }, + { "fac.gov", true }, { "faca.gov", true }, + { "facaca.com", true }, { "facadatabase.gov", true }, { "facan-godollo.hu", true }, { "facanabota.com", true }, @@ -44824,14 +51890,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facchinaggio.it", true }, { "facchinaggio.milano.it", true }, { "facchinaggio.roma.it", true }, + { "facchinetti.cloud", true }, { "facchino.it", true }, - { "facciadastile.it", true }, { "face-art.tk", true }, { "face-fashion.de", true }, { "face.yoga", true }, { "face2faith-vechta.de", true }, { "facealacrise.fr", false }, { "facebeautyhq.com", true }, + { "faceblock.online", true }, { "facebook-atom.appspot.com", true }, { "facebook-program.com", true }, { "facebook.ax", true }, @@ -44843,10 +51910,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faceboom.tk", true }, { "facebydrh.com", true }, { "facebylouise.co.uk", true }, - { "facedack.com", true }, { "facedaily.tk", true }, { "facedeplook.tk", true }, { "faceegypt.tk", true }, + { "faceitsalon.com", true }, { "facekhande.tk", true }, { "facekungfu.com", false }, { "facelimousin.fr", true }, @@ -44855,9 +51922,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facenews.ml", true }, { "facepainting.gr", true }, { "facepalmsecurity.com", true }, - { "facerepo.com", true }, - { "faceresources.org", true }, + { "faces4watch.com", true }, + { "facescertification.com", true }, { "facesdr.com", true }, + { "faceside.com", true }, { "facesnf.com", true }, { "faceup.dk", true }, { "facevietpro.tk", true }, @@ -44865,6 +51933,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fach-journalist.de", true }, { "fachfusspflege-exner.de", true }, { "fachim.tk", true }, + { "fachinformatiker.com", true }, { "fachiri.tk", true }, { "fachowisko.pl", true }, { "fachschaften.org", false }, @@ -44876,7 +51945,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facialparalysisnetwork.ga", true }, { "facialplasticsurgeryofaustin.com", true }, { "facil.services", false }, - { "facilbrasil.com", true }, { "facilecommebonjour.com", true }, { "facilit-info.fr", true }, { "facilities.fr", true }, @@ -44884,7 +51952,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "facilitrak.com", true }, { "facilitron.com", true }, { "facility-service-muenchen.de", true }, - { "facility-wijs.nl", true }, { "fackovcova.cz", true }, { "fackovcova.eu", true }, { "fackovcova.fun", true }, @@ -44895,15 +51962,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fackovec.fun", true }, { "fackovec.online", true }, { "fackovec.sk", true }, + { "facorne.com", true }, { "fact.cat", true }, { "factbros.com", true }, { "factbusterers.ga", true }, { "factbusterest.ga", true }, { "factbytefactbox.com", true }, + { "facteurcheval.com", true }, { "factis.com", true }, { "factor.cc", false }, + { "factorchave.com", true }, { "factoriadifacil.com", true }, - { "factoringsolutions.co.uk", true }, { "factorio.tools", true }, { "factoriobin.com", true }, { "factoriotools.com", true }, @@ -44913,6 +51982,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "factorway.com", true }, { "factory-f.net", true }, { "factoryalimentos.com.br", true }, + { "factorypark.com", true }, { "factorypartsdirect.com", true }, { "factozia.tk", true }, { "facts-about-bees.ml", true }, @@ -44921,6 +51991,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "factua.nl", true }, { "factum-info.net", true }, { "facturama.pt", true }, + { "facturare.online", true }, { "factureenlinea.com", false }, { "factuur.pro", true }, { "factuursturen.be", true }, @@ -44929,21 +52000,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "factys.do", true }, { "factys.es", true }, { "facucosta.com.ar", true }, - { "faculty.my", true }, + { "facvest.com", true }, + { "fadaex.org", true }, { "fadaru.ml", true }, + { "fadecloud.com", true }, { "fadedave.com", true }, { "fadednet.com", false }, { "fademusic.tk", true }, { "fadergs.edu.br", true }, { "faderweb.de", true }, + { "fadhlan.web.id", false }, { "fads-center.online", true }, - { "fady.vn", true }, { "fae.watch", true }, { "faedefencesociety.com", true }, { "faedefensesociety.com", true }, { "faehler.de", true }, { "faehling.space", true }, + { "faelix.ch", true }, + { "faelix.eu", true }, + { "faelix.fr", true }, + { "faelix.im", true }, { "faelix.net", true }, + { "faelix.uk", true }, { "faerb.it", true }, { "faeriebabe.com", true }, { "faeriecakes.be", true }, @@ -44951,20 +52029,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faeton.tk", true }, { "fafa106.com", true }, { "fafarishoptrading.com", true }, - { "fafatiger.com", true }, { "fafers.tk", true }, { "fafscloud.com", false }, - { "fag.wtf", true }, { "fagdag.dk", true }, { "faggut.gg", true }, - { "fagioli.com", true }, + { "fagor.com", true }, + { "fagor.eus", true }, { "fagott.pw", true }, { "fagus.hopto.org", true }, { "fahadbook.com", true }, - { "faharas.net", true }, { "fahnamporn.com", true }, { "fahrenwal.de", true }, { "fahrenwalde.de", true }, + { "fahrradreisen-wanderreisen.de", true }, { "fahrschule-laux.de", true }, { "fahrwerk.io", true }, { "fahrzeug-talk.de", true }, @@ -44973,17 +52050,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faidatefacile.it", true }, { "faieurope.it", true }, { "fail.cf", true }, + { "failed-banks.com", true }, { "failforward.tech", true }, { "failover.de", true }, { "failover.eu", true }, { "failoverplan.it", true }, + { "failstats.net", false }, { "faimdevoyages.com", true }, + { "faimmobiliare.it", true }, + { "fainlogistics.com", true }, { "fairbairnrealty.com", true }, { "fairbill.com", true }, { "fairbot.cf", true }, { "fairbot.gq", true }, { "fairbot.ml", true }, { "fairbot.tk", true }, + { "fairbroker.com", true }, { "fairchildband.tk", true }, { "fairchildfun.com", true }, { "fairchildfun.marketing", true }, @@ -45000,14 +52082,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fairfieldmt.gov", true }, { "fairfieldschool.tk", true }, { "fairfieldtexas.gov", true }, + { "fairfieldtwplenaweemi.gov", true }, { "fairfly.com", true }, { "fairgaming.ml", true }, { "fairgaming.tk", true }, { "fairgolfteams.com", true }, + { "fairhavenvt.gov", true }, { "fairleevt.gov", true }, - { "fairleighcrafty.com", true }, { "fairlesslaw.com", true }, - { "fairmarketing.com", true }, + { "fairline.com", true }, { "fairmates.tk", true }, { "fairmontnc.gov", true }, { "fairmonttamarak.cf", true }, @@ -45015,8 +52098,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fairmonttamarak.ml", true }, { "fairmountfireco.gov", true }, { "fairouzacademy.org", true }, + { "fairplay-trading.com", true }, { "fairplay.im", true }, - { "fairr.de", true }, + { "fairprice.com.sg", true }, { "fairssl.dk", true }, { "fairssl.se", true }, { "fairtrade010.nl", true }, @@ -45026,6 +52110,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fairviewevents.ca", false }, { "fairviewfarmacy.com", true }, { "fairviewfcss.com", false }, + { "fairviewheightsil.gov", true }, { "fairviewmotel-simcoe.com", true }, { "fairwork.gov.au", true }, { "fairyani.me", true }, @@ -45039,14 +52124,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faithbulletin.tk", true }, { "faithcentercogop.net", true }, { "faithfuladvisor.com", true }, + { "faithfulcounseling.com", true }, { "faithfulfaye.nl", true }, { "faithfully.tk", true }, { "faithfulroad.org", true }, { "faithleaks.org", false }, - { "faithwatch.org", true }, + { "faithriders.com", true }, { "faixaazul.com", true }, { "faizan.net", true }, - { "faizan.xyz", true }, { "faizanullah.com", true }, { "fajarafriansh.cf", true }, { "fajarilahi.sch.id", true }, @@ -45059,6 +52144,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fakeaddress.net", true }, { "fakeapple.nl", true }, { "fakebusters.club", true }, + { "fakecheck.com", true }, { "faked.org", true }, { "fakedisk.com", true }, { "fakeemergency.com", true }, @@ -45066,42 +52152,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fakeframesers.ga", true }, { "fakeframesest.ga", true }, { "fakehouse.tk", true }, + { "fakehub.com", true }, { "fakel.ga", true }, { "fakemoney.ga", true }, { "fakeout.no", true }, - { "fakerli.com", true }, { "fakeroses.tk", true }, { "fakes-ru.tk", true }, + { "faketaxi.com", true }, { "fakhrudin.tk", true }, { "fakinga.tk", true }, - { "fakt.io", true }, { "fakt.tk", true }, { "faktenfaktenfakten.tk", true }, - { "faktotum.tech", false }, + { "faktotum.tech", true }, { "fakturi.com", true }, { "faktury.co", false }, + { "fal.moe", true }, { "falaeapp.org", true }, { "falbros.com", true }, + { "falcatus-dalmatians.hu", true }, { "falce.in", true }, { "falcema.com", true }, { "falchion.tk", true }, { "falcibiosystems.org", true }, + { "falck.dk", true }, { "falcn.io", true }, { "falcom.co.jp", true }, { "falcona.io", true }, - { "falconelectric.co.uk", true }, + { "falconcrest-lippert.com", true }, { "falconerny.gov", true }, { "falconfrag.com", true }, + { "falconi.com", true }, + { "falconicapital.com", true }, + { "falconieri.it", true }, + { "falconinsurance.com.hk", true }, { "falconstap.tk", true }, - { "falcoz.co", true }, + { "falcoz.net", true }, { "faldoria.de", true }, { "fale.io", true }, { "falegname-roma.it", true }, { "falegname.roma.it", true }, { "falegnameria.milano.it", true }, + { "falixnodes.net", true }, { "falkenthal.org", true }, + { "falkentyre.com", true }, { "falkus.net", true }, - { "fall.es", true }, { "fall.ga", true }, { "fallen-evolution.com", true }, { "fallenangeldrinks.co.uk", true }, @@ -45114,18 +52208,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fallens-home.de", true }, { "fallenspirits.co.uk", true }, { "fallfishtenkara.com", true }, - { "fallin.space", true }, { "falling.se", true }, { "fallingbrick.co.uk", true }, { "fallofthecitadel.com", true }, { "fallonarrocho.tk", true }, { "fallout-craft.ru", true }, + { "fallout-tattoo.de", true }, + { "fallout4london.com", true }, { "fallriverbiblechapel.tk", true }, + { "fallriverma.gov", true }, { "fallspa.gov", true }, { "fallvegermdfharder.gq", true }, { "falmouthpublicsafetyma.gov", true }, { "falmouthretirementma.gov", true }, + { "falscher-kellner.de", true }, { "false.in.net", true }, + { "falsepattern.com", true }, { "falsesecurity.org", true }, { "falsterhus.de", true }, { "falsterhus.dk", true }, @@ -45138,21 +52236,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "famacweb.no", true }, { "famcloud.de", true }, { "famdouma.nl", true }, - { "fame.news", true }, { "fameng.nl", true }, { "famep.gov", true }, { "fameslook.tk", true }, { "fameus.fr", true }, { "fameuxhosting.co.uk", true }, - { "famfi.co", true }, { "famgdigital.com", true }, { "famigliafiorini.it", true }, { "familialchercher.tk", true }, { "familiaperez.net", false }, + { "familiaphoenix.fr", true }, { "familie-keil.de", true }, { "familie-kruithof.nl", true }, { "familie-kupschke.de", true }, - { "familie-leu.ch", true }, { "familie-mischak.de", true }, { "familie-monka.de", true }, { "familie-mueller.com.de", true }, @@ -45166,52 +52262,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "familiedelwicheferrari.tk", true }, { "familieholme.de", true }, { "familiekiekjes.nl", true }, + { "familiekusch.de", true }, { "familienoase-koenigstein.de", true }, { "familienportal.de", true }, + { "familienrat.com", true }, + { "familienzone.at", true }, { "familiereimann.com", false }, + { "familieretshuset.dk", true }, { "familietandarts.nl", true }, { "familievisscher.tk", true }, { "familjenm.se", true }, - { "familledessaint.fr", true }, + { "familjenosterlund.se", true }, { "familleenfete.fr", true }, + { "familleseux.net", true }, { "familleshilton.com", true }, { "family-clinic.tk", true }, + { "familyandpets.com", true }, { "familyclinicstl.com", true }, { "familyconventioners.ga", true }, { "familyd-c.com", true }, + { "familydoctor.ru", true }, { "familyframeworks.com", true }, + { "familyhookups.com", true }, { "familynewsth.com", true }, { "familyparties.co.uk", true }, { "familyrecipe.co.uk", true }, + { "familysinners.com", true }, { "familystockexchangeers.ga", true }, { "familytreehq.com", true }, { "familytrees.net", true }, - { "familytron.com", true }, + { "familytreewebinars.com", true }, { "familyworld.gr", false }, { "familyzone.ga", true }, { "famion.eu", true }, { "famlefeber.nl", true }, - { "fammamtl.com", true }, { "famonitor.com", true }, { "famosas.cf", true }, { "famous-models.tk", true }, { "famousandfaded.com", true }, { "famousbirthdays.com", true }, - { "famouschilirecipes.com", true }, - { "famoushostels.com", true }, + { "famousintel.com", true }, { "famousit.nl", true }, { "famousmodels.tk", true }, { "famouspdf.gq", true }, { "famre.de", true }, + { "famschaefer.ddns.net", true }, { "famvsomeren.nl", true }, + { "fan-sport.com", true }, + { "fan-sport25.com", true }, { "fan.gov", true }, { "fan4all.de", true }, { "fanactu.com", true }, + { "fanart.ru", true }, { "fanaticamandafans.tk", true }, { "fanaticosdehectorlavoeenperu.tk", true }, { "fanatka.tk", true }, { "fanbike.de", true }, { "fanboi.ch", true }, + { "fanbooster.com", true }, + { "fancars.ru", true }, { "fanclubblackhills.tk", true }, { "fanclubmariaciobanu.tk", true }, { "fanclubs.tk", true }, @@ -45219,23 +52328,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fancy.org.uk", true }, { "fancygaming.dk", true }, { "fancypanty.cf", true }, + { "fancysticker.pl", true }, + { "fancywow.com", true }, + { "fandars.com", true }, { "fandeev.tk", true }, { "fander.it", true }, { "fandomservices.com", true }, { "fandt.me", true }, { "fanera.tk", true }, - { "fanescu.ro", false }, + { "fanescu.ro", true }, + { "faneuil.com", true }, { "fanfareokselaar.tk", true }, { "fanfareunion.ch", false }, { "fanfiction.tk", true }, + { "fanflix.co", true }, + { "fang-den-sommer.de", true }, + { "fangan.com", true }, { "fangbing.me", true }, { "fangd.net", true }, - { "fangkehou.eu.org", true }, + { "fangjingdian.com", true }, { "fangkehou.tk", true }, { "fangs.ink", true }, + { "fangshu.com", true }, { "fanidrakopoulou.tk", true }, { "fanjingbo.com", true }, { "fanjoe.be", true }, + { "fanmerchstore.com", true }, { "fanniemaeloans.tk", true }, { "fanning.tk", true }, { "fannyips.tk", true }, @@ -45246,15 +52364,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fans-darkangel.tk", true }, { "fans-lily-allen.tk", true }, { "fansale.de", true }, - { "fanschic.com", true }, + { "fansdefoot.fr", true }, + { "fanshenzhiyi.com", true }, { "fansided.com", true }, + { "fansport.space", true }, { "fansta.jp", true }, - { "fanstuff.ru", true }, { "fantacast.it", true }, { "fantasea.pl", true }, - { "fantasiapainter.com", true }, { "fantasiatravel.hr", true }, - { "fantasmesexuel.info", true }, { "fantasmma.tk", true }, { "fantasticcleaners.com.au", true }, { "fantasticcleanersbristol.co.uk", true }, @@ -45274,7 +52391,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fantasybet.co", true }, { "fantasycastles.co.uk", true }, { "fantasycdn.com", true }, - { "fantasydesign.no", true }, { "fantasydreams.tk", true }, { "fantasyempires.net", true }, { "fantasyempires.nl", true }, @@ -45284,6 +52400,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fantasyforever.tk", true }, { "fantasymina.de", true }, { "fantasypartyhire.com.au", true }, + { "fantasypartyrental.com", true }, { "fantasyprojections.com", true }, { "fantasyrooms.com", true }, { "fantasyspectrum.com", true }, @@ -45301,23 +52418,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fanz.pro", true }, { "fanzade.com", true }, { "fanzapers.ga", true }, + { "fanzhuang.com", true }, { "fanzine-nimbus.tk", true }, { "fanzlive.com", true }, { "fap.link", true }, { "fap.no", true }, { "fapcoholic.com", true }, - { "fapdrop.com", true }, { "fapiis.gov", true }, - { "fapp.tube", true }, + { "fappeningthots.com", true }, + { "fapplejuice.com", true }, { "fapplepie.com", true }, { "fapplesauce.com", true }, { "fapzone.tk", true }, { "faq.ie", true }, - { "faq.lookout.com", false }, { "faqbite.com", true }, { "faqexchangeest.ga", true }, { "faqin-hr.info", true }, { "faqiteam.tk", true }, + { "faqprivacyincidentleasing.ca", true }, + { "faqprivacyincidentmortgages.ca", true }, { "far-east.tk", true }, { "far3link.tk", true }, { "fara.gov", true }, @@ -45332,34 +52451,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faraonplay8.com", true }, { "faraslot8.com", true }, { "faraslot8.net", true }, + { "faraso.org", true }, { "farb-tabelle.de", true }, { "farberplasticsurgery.com", true }, { "farbyin10.com", true }, { "farcecrew.de", false }, + { "farcon.com", true }, { "farda.gov", true }, { "fardinarafat.tk", false }, { "fareast.cf", true }, { "fareast.ga", true }, { "fareast.gq", true }, { "fareast.tk", true }, - { "fareastpornhub.com", true }, - { "fareinternational.com", true }, - { "faresair.com", true }, + { "farenheit.net", true }, { "farescan.com", true }, - { "fareto.com", true }, { "faretravel.co.uk", true }, { "faretrotter.com", true }, + { "fareuntrasloco.it", true }, { "farexpress.it", true }, { "farfallapets.com.br", true }, { "farfallina.nl", true }, { "farfor.tk", true }, { "farhadexchange.com", true }, + { "farhamaghdasi.ir", true }, { "farhandanish.tk", true }, { "farian.tk", true }, { "faribanx-porn.com", true }, { "faribanx-xxx.com", true }, { "faridathaimassage.com.au", true }, { "farikaporselen.com", true }, + { "fariya.com", true }, { "farizhan.com", true }, { "farizizhan.com", false }, { "farizstore.tk", true }, @@ -45368,41 +52489,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "farleymetals.com.au", true }, { "farleysworlds.com", true }, { "farlezz.de", true }, + { "farlitesolutions.com", true }, { "farm-catalog.ga", true }, { "farm-dogecoin.tk", true }, { "farm-vacations.com", true }, { "farm24.co.uk", true }, { "farmaceuticainternazionale.it", true }, { "farmacia.pt", true }, - { "farmaciaanagallis.com.br", true }, { "farmaciacomunalelacchiarella.it", true }, - { "farmaciacorvi.it", true }, { "farmaciadejaime.es", true }, - { "farmaciaviva.es", true }, + { "farmacovigilancia-exeltis.com.mx", true }, { "farmakon.tk", true }, { "farmasimahaganesha.ac.id", true }, { "farmaspeed.it", true }, { "farmauna.com", true }, { "farmaweb.be", true }, + { "farmbureauinsurance-mi.com", true }, { "farmer-miniaturen.tk", true }, - { "farmer.dating", true }, { "farmerfairness.gov", true }, { "farmers.gov", true }, + { "farmersfridge.com", true }, { "farmersgirlkitchen.co.uk", true }, + { "farming.co.uk", true }, { "farmingtonlaxwi.gov", true }, { "farmkazuto.com", true }, { "farmmaximizer.com", true }, { "farmocracy.in", true }, { "farmqa.com", true }, - { "farmtigo.com", true }, + { "farmscbdoil.com", true }, + { "farmtogether.com", true }, { "farmvilleva.gov", true }, + { "farnboroughairshow.com", false }, + { "faro-car-hire.co.uk", true }, + { "faro.com", true }, + { "farodegracia.com", true }, { "farodeluz.ca", true }, { "farodistribuidora.com.br", true }, { "faroes.net", true }, { "faroes.org", true }, { "faroit.tk", true }, + { "faroitalia.it", true }, { "farol.cz", true }, { "faros-studio.gr", true }, + { "farouk.com", true }, { "faroutsolutions.com", true }, { "farrel-f.cf", true }, { "farrel-f.id", true }, @@ -45417,21 +52546,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fartypants.com", true }, { "farukcesur.com.tr", true }, { "farumbedandbreakfast.dk", true }, - { "farvisun.com", false }, { "faryaz.tk", true }, + { "fasab-portcenter.se", true }, { "fasad.eu", true }, { "fasam.edu.br", true }, { "fascat.com", true }, { "fashion-buttons.tk", true }, { "fashion-family.cf", true }, + { "fashion-hunters.pl", true }, { "fashion-stoff.de", true }, { "fashion-swimwear.tk", true }, { "fashion-world.tk", true }, { "fashion.bg", true }, - { "fashion.net", true }, + { "fashionactivation.com", true }, { "fashionadvice.tk", true }, { "fashionagent.tk", true }, - { "fashionandbeautystyle.com", true }, { "fashionblogs.tk", true }, { "fashioncatalogues.tk", true }, { "fashionchanel.tk", true }, @@ -45441,6 +52570,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fashiondays.hu", true }, { "fashiondays.ro", true }, { "fashiondesign.ml", true }, + { "fashiondistrict.org", true }, { "fashiondock.de", false }, { "fashiondot.ga", true }, { "fashioneditor.gr", true }, @@ -45453,6 +52583,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fashioninitaly.tk", true }, { "fashionlink.tk", true }, { "fashionlistify.tk", true }, + { "fashionmagazine.com", true }, { "fashionmagz.tk", true }, { "fashionmasala.tk", true }, { "fashionmovie.tk", true }, @@ -45503,12 +52634,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fashionweekweb.com", true }, { "fashionworlds.ml", true }, { "fashionxmas.gq", true }, + { "fasigbrooks.com", true }, { "fasmaritime.com", true }, { "faspirits.co.uk", true }, { "faspirits.com", true }, + { "fasqu.com", true }, { "fassaden-selleng.de", true }, { "fassadenverkleidung24.de", true }, { "fassi-sport.it", true }, + { "fassiportugal.pt", true }, { "fast-cargo.ml", true }, { "fast-drops.cf", true }, { "fast-events.eu", true }, @@ -45521,33 +52655,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fast4ever.tk", true }, { "fastaim.de", true }, { "fastamundi.com", true }, - { "fastandroid.org", true }, { "fastandtuning.tk", true }, { "fastbackmbg.be", true }, { "fastbackmbm.be", true }, - { "fastbizcards.com", true }, + { "fastbet.it", true }, { "fastblit.com", true }, + { "fastblob.com", true }, { "fastbob.cf", true }, { "fastbob.ga", true }, { "fastbob.gq", true }, { "fastbob.ml", true }, { "fastbob.tk", true }, - { "fastburg.com", true }, { "fastcash.com.br", true }, { "fastcast.ga", true }, { "fastcats.tk", true }, + { "fastcdn.info", true }, + { "fastcloud.ge", true }, { "fastcomcorp.net", true }, { "fastcommerce.org", true }, { "fastconfirm.com", true }, { "fastconv.com", true }, { "fastcp.top", true }, + { "fastcup.net", true }, + { "fastcustomboxes.com", true }, + { "fastdronespro.com", true }, { "fastener.tk", true }, { "fastensorozo.hu", true }, { "faster-disinfestazioni.it", true }, + { "faster.cz", true }, { "fasterblogsers.ga", true }, { "fasterblogsest.ga", true }, { "fasterci.com", true }, + { "fasterfront.com", true }, + { "fasterfront.com.br", true }, { "fasternie.tk", true }, + { "fastestknowntime.com", true }, + { "fastfast.click", true }, { "fastfloorscreed.ie", true }, { "fastforwardsociety.nl", true }, { "fastforwardthemes.com", true }, @@ -45558,6 +52701,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fastknighki.ga", true }, { "fastknigi.ml", true }, { "fastmail.com", false }, + { "fastme.co", true }, { "fastmeet.tk", true }, { "fastonline.ro", true }, { "fastopen.ml", true }, @@ -45569,66 +52713,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fastpresence.com", true }, { "fastproxycat.ml", true }, { "fastproxyforfree.gq", true }, + { "fastrocket.pl", true }, + { "fastscanapp.com", true }, { "fastserv.pl", true }, { "faststage.ch", true }, { "fasturl.ml", true }, + { "fastvanya.com", true }, { "fastvelocityers.ga", true }, { "fastvelocityest.ga", true }, { "fastvisit.tk", true }, { "fastvistorias.com.br", true }, { "fastworx.com", true }, + { "faszination-fankurve.de", true }, { "fatal-beauty.tk", true }, { "fatal.ga", true }, { "fatalchat.tk", true }, { "fatalerrorcoded.eu", true }, { "fatalityimmortals.ga", true }, { "fatalsunrise.com", true }, + { "fatassbooty.com", true }, { "fatcat.tk", true }, + { "fate-srd.com", true }, { "fatecdevday.com.br", true }, { "fateitalia.it", true }, - { "fatemehyavari.com", true }, + { "fatemaalhabsi.com", true }, { "fates.online", true }, { "fatetx.gov", true }, { "fatfueled.com", true }, { "fatherhood.gov", true }, { "fatidique.com", true }, - { "fatig.com", true }, - { "fatiguefree.com", true }, - { "fatiguesyndrome.com", true }, + { "fatih-catering.com", true }, { "fatihingemisi.com", true }, { "fatimamoldes.com.br", true }, { "fatinsl.info", true }, { "fatlabwebsupport.com", true }, { "fatmixx.com", true }, { "fator25.com.br", true }, - { "fatosmilitares.com", true }, { "fatowltees.com", true }, + { "fatoxgames.eu", true }, + { "fatpussytube.com", true }, { "fattailcall.com", false }, { "fattoriabio.jp", true }, { "fattorino.it", true }, - { "fatturaelettronica-app.it", true }, + { "fatturegeko.eu", true }, { "fattyink.com", true }, { "fatumagro.bg", true }, { "fatvalley.at", true }, + { "fatzebra.com.au", true }, { "fau-bremen.tk", true }, { "fau8.ml", true }, { "fauceton.cf", true }, { "fauceton.tk", true }, { "faucetslist.tk", true }, + { "faulhaber.com", true }, { "faulkner2020.com", true }, { "faulknercountyar.gov", true }, - { "faultlines.org", true }, { "faultyserver.com", true }, { "faunahotel.cl", true }, { "faunatrek.com", true }, + { "fauteuil-bebe.fr", true }, { "fauvettes.be", true }, { "fauwater.com", true }, - { "faux.digital", true }, { "fauxcams.com", true }, { "fauxil.shop", true }, + { "fauxreal.com", true }, { "favalart.com", true }, { "favarica.com", true }, - { "favedog.com", true }, + { "favicone.com", true }, { "favirei.com", true }, { "favorai.com", true }, { "favorit-stroy-snab.ru", true }, @@ -45641,9 +52792,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "favoritetechers.ga", true }, { "favouritequotations.ca", true }, { "favourperfect.com.au", true }, + { "favro.com", true }, + { "favrotest.com", true }, { "faw-club.cf", true }, { "faw.gg", true }, - { "fawe-gmbh.de", true }, { "fawong.com", true }, { "fawter.online", true }, { "faxfarmers.ga", true }, @@ -45651,13 +52803,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "faxitron.com", true }, { "faxreader.net", true }, { "faxvorlagen-druckvorlagen.de", true }, + { "fayalove.com", true }, { "fayamovies.tk", true }, { "fayettecountyillinois.gov", true }, { "fayettecountyoh.gov", true }, + { "fayettecountytn.gov", true }, { "fayettecountywv.gov", true }, { "fayettemopd.gov", true }, + { "fayettevilleflyer.com", true }, { "fayettevillewv.gov", true }, - { "faymoshub.com", true }, + { "fayffersons.com", true }, + { "fayfilms.com", true }, { "fayntic.com", true }, { "faysalabdi.fi", true }, { "fazal.tv", true }, @@ -45665,11 +52821,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fazhion.tk", true }, { "fazo.gq", true }, { "fazrin.tk", true }, + { "fazz.fun", true }, { "fazz.id", true }, { "fb.audio", true }, { "fb.gg", true }, { "fb.me", true }, { "fb.watch", true }, + { "fb88.com", false }, { "fbaun.dk", true }, { "fbausch.de", true }, { "fbcdn.net", true }, @@ -45680,11 +52838,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fbf.gov", true }, { "fbfwd.email", true }, { "fbi.gov", true }, + { "fbiagentedu.org", true }, { "fbigame.com", true }, { "fbihr.gov", true }, { "fbiic.gov", true }, + { "fbijobs.gov", true }, { "fbilab.gov", true }, { "fbk.moe", true }, + { "fbmedia-ckl.com", true }, { "fbo.gov", true }, { "fbo.network", true }, { "fboerman.nl", true }, @@ -45696,16 +52857,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fbwat.ch", true }, { "fbwifi.com", true }, { "fc-corvinul.tk", true }, + { "fc-rostov.ru", true }, { "fc8882.net", true }, { "fca-tools.com", true }, { "fcapartsdb.com", true }, { "fcapollo.tk", true }, { "fcarrascosa.es", true }, { "fcbarcelona.cz", true }, - { "fcbasel.info", true }, + { "fcbasel.info", false }, { "fcblueboys.be", true }, { "fcbrasov.tk", true }, - { "fcburk.de", true }, { "fccaracciolo-solution.tk", true }, { "fccarbon.com", false }, { "fcd.im", true }, @@ -45717,22 +52878,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fcforum.net", true }, { "fcg.fyi", true }, { "fcgmd.gov", true }, + { "fcht.fr", true }, { "fcic.gov", true }, { "fcijobportalodisha.com", true }, - { "fcingolstadt.de", true }, + { "fcingolstadt.de", false }, { "fcit-tems.org", true }, { "fcitasc.com", true }, - { "fcl.guru", true }, + { "fcm.org.co", true }, { "fcmoorsel.tk", true }, { "fcode.tk", true }, { "fcosinus.com", true }, - { "fcpn.org", true }, + { "fcporto.ws", true }, { "fcprovadia.com", true }, { "fcrrijswijk.nl", true }, { "fcsarajevo.tk", true }, { "fcsic.gov", true }, { "fcsm.gov", true }, { "fcts.ml", true }, + { "fd-lajante.fr", true }, + { "fd-telecom.ru", true }, { "fd.gov", true }, { "fdalawboston.com", true }, { "fdaregs.com", true }, @@ -45740,13 +52904,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fdevs.ch", true }, { "fdfz.edu.cn", true }, { "fdg-98.de", true }, - { "fdi-service.ovh", false }, { "fdicig.gov", true }, { "fdicoig.gov", true }, { "fdimmo24.com", true }, { "fdis.net.cn", true }, + { "fdj.fr", true }, + { "fdkm.eu", true }, { "fdlibre.eu", true }, + { "fdlp.gov", true }, { "fdlpl.org", true }, + { "fdltcc.edu", true }, + { "fdmg.nl", true }, { "fdms.gov", true }, { "fdn.one", true }, { "fdnsc.net", true }, @@ -45754,6 +52922,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fdp-heinsberg.de", true }, { "fdpbrig.ch", true }, { "fdresearch.ca", true }, + { "fdsys.gov", true }, + { "fdx-insurance.com", true }, { "feac.us", true }, { "feaden.me", true }, { "feandc.com", true }, @@ -45762,6 +52932,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fearfactory.tk", true }, { "fearghus.org", true }, { "fearlessmusic.tk", true }, + { "fearnley.uk", true }, + { "fearnomoreevents.com", true }, { "fearstyle.tk", true }, { "fearunknown.tk", true }, { "feast-day.tk", true }, @@ -45772,18 +52944,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feastr.io", true }, { "feastshare.com", true }, { "feat.agency", true }, + { "feataccess.in", true }, + { "feath.net", true }, + { "featherfan.io", true }, { "feathermc.com", true }, { "feathersbtq.com", true }, - { "featherwallet.org", true }, { "featherweightlabs.com", true }, { "feature-branch.nl", true }, { "featured.tk", true }, { "featuredcarders.ga", true }, { "featuredmen.com", true }, + { "featurous.com", true }, { "feb.gov", true }, { "febeditora.com.br", true }, { "febooti.com", true }, - { "febstudio.com", true }, { "fed-shashek.spb.ru", true }, { "fed51.com", true }, { "fedbizopps.gov", true }, @@ -45792,50 +52966,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fedel.tk", true }, { "fedema.com", true }, { "federacaoanarquista.com.br", true }, + { "federacaofutebolmesa.pt", true }, + { "federacaomatraquilhos.pt", true }, + { "federacaoportuguesafutebolmesa.pt", true }, { "federaciocatalanapipaclubs.tk", true }, { "federacionanarquista.net", true }, { "federalbus.ga", true }, { "federalbusers.ga", true }, { "federalbusest.ga", true }, { "federalcalendarest.ga", true }, + { "federalcriminaldefenseattorney.com", true }, { "federalinvestments.gov", true }, { "federaljob.net", true }, { "federaljobs.gov", true }, + { "federallawenforcement.org", true }, { "federalprisonforums.com", true }, + { "federalregister.gov", true }, { "federalreserve.gov", true }, { "federalreserveconsumerhelp.gov", true }, + { "federalsignal.com", true }, { "federasco.ga", true }, { "federatedbank.com", true }, { "federation.gov.au", true }, { "federica.tk", true }, { "federico.ro", true }, - { "federico.tokyo", true }, { "federicomigliavacca.it", true }, { "fedextrackingservices.com", true }, { "fedidcard.gov", true }, - { "fedinvest.gov", true }, + { "fedifeed.net", true }, + { "fedinvest.gov", false }, + { "fedistatus.com", true }, + { "fedistatus.eu", true }, + { "fedistatus.net", true }, + { "fedistatus.org", true }, + { "fedistatus.social", true }, + { "fediver.city", true }, + { "fediver.com", true }, + { "fediver.eu", true }, + { "fediver.net", true }, + { "fediver.org", true }, + { "fediver.social", true }, + { "fedivercity.com", true }, + { "fedivercity.eu", true }, + { "fedivercity.net", true }, + { "fedivercity.org", true }, + { "fedivercity.social", true }, + { "fediverse.observer", true }, { "fedjobs.gov", true }, { "fedlocatorers.ga", true }, { "fedlocatorest.ga", true }, { "fedn.it", true }, + { "fednat.com", true }, { "fedorahosted.org", true }, { "fedoralinux.or.kr", true }, + { "fedoranews.org", true }, { "fedorapeople.org", true }, { "fedoraproject.org", true }, { "fedorblog.tk", true }, { "fedpartnership.gov", true }, { "fedramp.gov", true }, + { "fedres.gov", true }, + { "fedrigoni.com", true }, { "fedrooms.gov", true }, { "fedrtc.org", true }, { "fedshat.space", true }, { "fedshirevets.gov", true }, + { "fedupwithliberals.com", true }, { "fedux.com.ar", true }, - { "feecreativity.com", true }, + { "feecotec.com", true }, { "feed-back.com", true }, { "feedback-project.eu", true }, { "feedbackproduction.tk", true }, { "feedbin.com", false }, - { "feedclean.co", true }, { "feedetailsers.ga", true }, { "feedetailsest.ga", true }, { "feedfall.com", true }, @@ -45843,7 +53045,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feedinghouse.tk", true }, { "feedingmethodsers.ga", true }, { "feedingmethodsest.ga", true }, - { "feedingmykid.com", true }, { "feedingmynewbaby.com", true }, { "feedkovacs.hu", true }, { "feedmail.org", true }, @@ -45851,8 +53052,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feedstringer.com", true }, { "feedthebot.com", true }, { "feedthefood.com", true }, + { "feedthefuture.gov", true }, { "feedthegreek.tk", true }, { "feedtube.com", true }, + { "feedvisor.com", true }, { "feeg-wage.gc.ca", true }, { "feegg.com.br", true }, { "feehla.com", true }, @@ -45860,23 +53063,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feel-events.com", true }, { "feel.aero", true }, { "feelamazing.com.au", true }, + { "feelbycubanas.com", true }, { "feeld.cloud", true }, { "feelerfolg.com", true }, { "feelgood-workouts.de", true }, { "feelgood.com.tw", true }, + { "feelgoodcasino.com", true }, + { "feeling.com.mx", true }, { "feelingdesperate.net", true }, { "feelingdesperate.org", true }, - { "feelingmassage.nl", true }, { "feelmingo.com", true }, - { "feelmom.com", true }, { "feelnet.top", true }, { "feeltennis.net", true }, { "feelya.com", true }, { "feen.us", true }, { "feepod.com", true }, { "feeriedesign-event.com", true }, + { "feest.com", true }, { "feestbierfusten.nl", true }, { "feestfactory.tk", true }, + { "feestgids.nl", true }, { "feetek.net", true }, { "feetnesclub.tk", true }, { "feetpa.ws", true }, @@ -45891,31 +53097,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fegame.nl", true }, { "fegc-wgec.gc.ca", true }, { "fegli.gov", true }, - { "fegunlock.com", true }, { "fehlerqultur.net", true }, { "fehngarten.de", true }, { "fehr-online.eu", true }, + { "fehrm.gov", true }, { "feigling.net", false }, { "feignandfolly.tk", true }, { "feiki.tk", true }, + { "feikuai.tv", true }, { "feildel.fr", true }, { "feilen.de", true }, { "feilestrokestown.com", true }, - { "feintuchlaw.com", true }, + { "feinform.com", true }, + { "feip.co", true }, { "feirlane.org", false }, { "feiromo.com", true }, - { "feisim.com", true }, - { "feisim.org", true }, { "feistore.com.tw", true }, { "feistyduck.com", true }, + { "feisworld.com", false }, { "feitam.es", true }, { "feixiang.eu.org", true }, { "feixiang.pp.ua", true }, { "feiya.ng", true }, { "feiyang.moe", true }, { "fejervar.hu", true }, + { "fejo.dk", true }, { "fekepp.net", true }, { "fekir.info", true }, + { "felcas.com.co", true }, { "feld.design", true }, { "feld.saarland", true }, { "feldbogenclub-hamburg.de", true }, @@ -45927,6 +53136,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "felger-times.fr", true }, { "felgitscher.xyz", true }, { "felicifia.org", true }, + { "felid.gay", true }, { "felidas.net", true }, { "felin.es", true }, { "feline.ro", true }, @@ -45940,8 +53150,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "felix-amez.tk", true }, { "felix-hirner.de", true }, { "felix.vn", true }, - { "felixadr.com", false }, - { "felixaufreisen.de", true }, { "felixbarta.de", true }, { "felixbrand.de", true }, { "felixbroekhuizen.tk", true }, @@ -45953,17 +53161,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "felixhollitzer.de", true }, { "felixkauer.de", true }, { "felixklenner.de", true }, - { "felixman.com", true }, { "felixmendez.com", true }, { "felixsanchez.tk", true }, { "felixschuermeyer.de", true }, { "felixseele.de", true }, { "felixsworld.tk", true }, - { "felixturgeon.ca", true }, { "felixvelarde.com", true }, { "felixweb.tk", true }, { "feliz.tk", true }, - { "fellatrix.net", true }, + { "fellas.com.tr", true }, + { "felly.com.br", true }, + { "felmodrj.com", true }, + { "felonymath.com", true }, + { "felonymath.net", true }, + { "felonymath.org", true }, { "felsare3.com", true }, { "felsefe.tk", true }, { "felsenheimer.tk", true }, @@ -45972,16 +53183,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feluck.de", true }, { "female-costumes.tk", true }, { "femalecare.tk", true }, + { "femalefoodie.com", true }, { "femalefrag.com", true }, { "femalehumorers.ga", true }, { "femalehumorest.ga", true }, { "femaleteamest.ga", true }, { "femarelle.is", true }, { "femastudios.com", true }, - { "femboy.observer", true }, + { "femboy.clothing", true }, + { "femboys.pics", true }, { "femcompany.nl", true }, { "femik.net", true }, - { "femiluna.com", true }, { "femina.se", true }, { "feminina.eu", true }, { "feminina.pt", true }, @@ -45994,7 +53206,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feministwiki.org", true }, { "feminteligencia.com", true }, { "femiwiki.com", true }, - { "femmenordic.com", true }, + { "femme.fitness", true }, { "femmes-women.gc.ca", true }, { "femmes.gc.ca", true }, { "femmesaupluriel.com", true }, @@ -46003,13 +53215,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fenagav.ga", true }, { "fenatrigo.com.br", true }, { "fence-stlouis.com", true }, + { "fencebutlers.com", true }, { "fencekirkwood.com", true }, { "fencestlouis.co", true }, { "fencestlouis.com", true }, + { "fencethisyard.com", true }, { "fencingmarters.ga", true }, { "fencingmartest.ga", true }, - { "feng-hhcm.com", true }, + { "fendisunglasses.us", true }, { "feng.si", true }, + { "feng18.vip", false }, + { "feng28.vip", false }, + { "feng58.vip", false }, + { "feng68.vip", false }, + { "feng88.vip", false }, + { "feng98.vip", false }, { "fengchuiyudaqu.ml", true }, { "fenghuangcheng.tk", true }, { "fengrui.me", false }, @@ -46022,25 +53242,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fenix-site.tk", true }, { "fenix-zone.tk", true }, { "fenixcorporative.tk", true }, - { "fenixhost.com.br", true }, { "fenixmetal.tk", true }, { "fenj.nl", true }, { "fenn.moe", true }, { "fennet.rentals", true }, { "fenns.co.za", true }, + { "fennville.gov", true }, { "fennydewit.nl", true }, { "fenom.ga", true }, { "fenotipo.com", true }, { "fenris.ovh", true }, { "fenritec.eu", true }, { "fenritec.fr", true }, - { "fenschui.ru", true }, + { "fense.cf", true }, + { "fense.ml", true }, { "fenster-bank.at", true }, { "fenster-bank.de", true }, { "fensterbau-mutscheller.de", true }, + { "fenwickisland-de.gov", true }, { "feodosiya.cf", true }, { "feodosiya.tk", true }, - { "ferad.net", true }, { "feras-alhajjaji.com", true }, { "feraz.com.mx", true }, { "ferc.gov", true }, @@ -46050,7 +53271,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fereum.com", true }, { "ferfer.ga", true }, { "fergtm.com", true }, + { "fergusfallsmn.gov", true }, + { "fergusoncastle.com", false }, + { "fergusonroofing.com", true }, + { "ferhatsurer.com", true }, { "feriadelvellon.tk", true }, + { "feribotlines.com", true }, { "feridun.tk", true }, { "feriehus-danmark.no", true }, { "ferien-haus-mittelpunkt.de", true }, @@ -46064,21 +53290,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ferienhaus-polchow-ruegen.de", false }, { "ferienhaus-urlaub-danemark.de", true }, { "ferienhausprovence.ch", true }, - { "ferienstpeter.de", true }, { "ferienwohnung-hafeninsel-stralsund.de", true }, { "ferienwohnung-ruegen.tk", true }, { "ferienwohnung-wiesengrund.eu", true }, + { "ferienwohnung-wilmersdorf.de", true }, { "ferienwohnungen-lastminute.de", true }, { "ferienwohnungen-willingen.de", true }, { "ferienwohnunglanger.de", true }, { "ferieservice.dk", true }, - { "feriespotter.dk", true }, { "ferio-fuu.tk", true }, { "ferlc.org", true }, { "ferluxilluminazione.it", true }, { "fermabel.com.br", true }, { "fermanacuratampaparts.com", true }, { "fermanaghomagh.com", true }, + { "fermani.ar", true }, + { "fermani.com.ar", true }, { "fermastore.cf", true }, { "fermastore.tk", true }, { "fermateh.com.ua", true }, @@ -46091,10 +53318,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fernandob.com", true }, { "fernandobarata.pt", true }, { "fernandobarillas.com", true }, + { "fernandolucas.info", true }, { "fernandomiguel.net", true }, { "fernandomorientes-zone.tk", true }, { "fernandosuarez.cf", true }, { "fernatura.tk", true }, + { "ferngas.de", true }, { "fernheim.com.py", true }, { "fernhowe.co.uk", true }, { "fernland.com.au", true }, @@ -46104,24 +53333,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "feross.net", true }, { "feross.org", true }, { "ferozes.com.br", true }, - { "ferprobolivia.com", true }, { "ferrada.org", false }, + { "ferrari.com", true }, { "ferrariadvisor.it", true }, { "ferrariale.tk", true }, { "ferrarichat.fr", true }, + { "ferreh.com", true }, { "ferreira.ovh", true }, - { "ferret.zone", true }, { "ferreteriaferreiro.com", true }, { "ferrets.tk", true }, { "ferretslife.com", true }, + { "ferriday.gov", true }, + { "ferrikomm.de", true }, { "ferrin.tk", true }, + { "ferrisfox.me", true }, { "ferriswheelofficial.us", true }, { "ferro-design.tk", true }, { "ferrodata.de", true }, - { "ferrolatino.ch", true }, { "ferrousmoon.com", true }, { "ferrovial.com", true }, + { "ferrumformat.com", true }, { "ferrybig.me", true }, + { "fersedo.mk", true }, { "fersumalin.cf", true }, { "fersumalin.ga", true }, { "fersumalin.gq", true }, @@ -46130,25 +53363,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ferticare.pt", true }, { "fertigehecke.de", true }, { "fertila.de", true }, - { "fertilaqua.com", true }, { "fertile.fund", true }, { "fertilityquick.ga", true }, { "fertilityquickers.ga", true }, { "fertilityquickest.ga", true }, { "fertilityspace.io", true }, + { "fertilitytreatmentcenter.com", true }, { "fertilizers.tk", true }, + { "ferwor.studio", true }, { "ferydoonzandi.tk", true }, + { "fes.at", true }, { "fescosales.com", true }, { "fescuesodsouthernindiana.com", true }, { "feseev.ml", true }, - { "fespad.org.sv", true }, + { "fesne.com", true }, + { "fesoftware.net", true }, { "festaprylar.se", true }, { "festar.tk", true }, + { "festasdosenhordocalvario.pt", true }, { "festesuniversitaries.tk", true }, + { "festfabriken.se", true }, { "festin.tk", true }, { "festival-tipps.com", true }, - { "festival-transform.com", true }, { "festival365.ml", true }, + { "festivalcarpark.com.au", true }, { "festivaldays.tk", true }, { "festivaldecinedemallorca.tk", true }, { "festivaldelumieresgand.be", true }, @@ -46158,11 +53396,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "festivalfumo.tk", true }, { "festivalgourmet.com", true }, { "festivaljapon.com", true }, + { "festivalplaza.com.au", true }, { "festivalpopayan.tk", true }, { "festivalsalmondeoro.tk", true }, + { "festivalsquare.com.au", true }, { "festivalsrit.tk", true }, - { "festivitas.tk", true }, + { "festivaltower.au", true }, + { "festivaltower.com.au", true }, + { "festo.net", true }, + { "festo.online", true }, { "festrentcar.pl", true }, + { "fests.info", true }, + { "festusmo.gov", true }, { "festx.co.za", true }, { "fetanbus.com", true }, { "fetawerelddans.tk", true }, @@ -46170,12 +53415,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fetchmag.com", true }, { "fetchmonitors.com", true }, { "fetclips.se", true }, + { "fethtv.com", true }, { "fetichedecaramelo.tk", true }, { "fetih1453.tk", true }, { "fetish-x.com", true }, { "fetishbazar.cz", true }, { "fetishblend.com", true }, - { "fetishwheels.com", true }, { "fetishzone.org", true }, { "fetlife.com", true }, { "fetlinks.ga", true }, @@ -46183,78 +53428,247 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fettings.com", true }, { "feudalisten.de", true }, { "feudaltactics.com", true }, - { "feuerhaken.org", false }, { "feuerhuhn.de", true }, { "feuerloescher-arten.de", true }, { "feuerloescher-test.de", true }, - { "feuerwehr-coesfeld.de", true }, { "feuerwehr-dachaufsetzer.de", true }, { "feuerwehr-e-learning.de", true }, { "feuerwehr-gebirge.de", true }, { "feuerwehr-heiligenberg.de", true }, { "feuerwehr-mehring.de", true }, { "feuerwehr-offenbach-bieber.de", false }, + { "feuerwehr-solms.de", true }, { "feuerwehr-vechta.de", true }, { "feuerwerksmanufaktur.de", true }, { "feuerwolke.spdns.de", true }, { "feuetgloire.com", false }, { "feurich.tk", true }, { "fever.ch", true }, + { "fevo.us", true }, { "fevolden.com", true }, + { "fewo-groden.de", true }, { "fewo-hafeninsel-stralsund.de", true }, { "fewo-thueringer-wald.de", true }, { "fewo-wildrosenpfad.de", true }, + { "fewo.plus", true }, + { "fewo.reise", true }, { "fewo32.de", true }, { "fexopay.com", true }, { "fey-web.tk", true }, { "feyenoordrotterdam.tk", true }, { "feyenoordsite.tk", true }, { "feyenoordvakz.tk", true }, + { "fezbet.net", true }, + { "fezlee.com", true }, { "ff-bad-hoehenstadt.de", true }, { "ff-bg.xyz", true }, { "ff-koenigstein-opf.de", true }, { "ff-obersunzing-niedersunzing.de", true }, { "ff-tostedt.de", true }, { "ff15.ddns.net", true }, - { "ff18.cc", false }, { "ff326.com", false }, - { "ff5.info", false }, { "ff5197.co", true }, { "ff5g.com", true }, { "ff6729.co", true }, { "ff6729.com", true }, - { "ff675.com", false }, { "ff6957.co", true }, { "ff9297.co", true }, { "ff9397.com", true }, - { "ff956.com", false }, - { "ff965.com", true }, { "ff9721.com", false }, { "ff9728.co", true }, { "ff976.com", false }, + { "ffaaa00.com", true }, + { "ffaaa11.com", true }, + { "ffaaa22.com", true }, + { "ffaaa33.com", true }, + { "ffaaa44.com", true }, + { "ffaaa55.com", true }, + { "ffaaa66.com", true }, + { "ffaaa77.com", true }, + { "ffaaa88.com", true }, + { "ffaaa99.com", true }, + { "ffamranteatime.com", true }, { "ffb.gov", true }, { "ffbans.org", true }, + { "ffbbb00.com", true }, + { "ffbbb11.com", true }, + { "ffbbb22.com", true }, + { "ffbbb33.com", true }, + { "ffbbb44.com", true }, + { "ffbbb55.com", true }, + { "ffbbb66.com", true }, + { "ffbbb77.com", true }, + { "ffbbb88.com", true }, + { "ffbbb99.com", true }, { "ffbsee.net", false }, + { "ffc-gerlingen.de", true }, + { "ffccc00.com", true }, + { "ffccc11.com", true }, + { "ffccc22.com", true }, + { "ffccc33.com", true }, + { "ffccc44.com", true }, + { "ffccc55.com", true }, + { "ffccc66.com", true }, + { "ffccc88.com", true }, + { "ffccc99.com", true }, + { "ffddd00.com", true }, + { "ffddd11.com", true }, + { "ffddd22.com", true }, + { "ffddd33.com", true }, + { "ffddd44.com", true }, + { "ffddd55.com", true }, + { "ffddd66.com", true }, + { "ffddd77.com", true }, + { "ffddd88.com", true }, + { "ffddd99.com", true }, + { "ffeee00.com", true }, + { "ffeee11.com", true }, + { "ffeee22.com", true }, + { "ffeee33.com", true }, + { "ffeee44.com", true }, + { "ffeee55.com", true }, + { "ffeee66.com", true }, + { "ffeee77.com", true }, + { "ffeee88.com", true }, + { "ffeee99.com", true }, { "fff-du.de", true }, + { "fffaa00.com", true }, + { "fffaa11.com", true }, + { "fffaa22.com", true }, + { "fffaa33.com", true }, + { "fffaa44.com", true }, + { "fffaa55.com", true }, + { "fffaa66.com", true }, + { "fffaa77.com", true }, + { "fffaa88.com", true }, + { "fffaa99.com", true }, + { "fffbb00.com", true }, + { "fffbb11.com", true }, + { "fffbb22.com", true }, + { "fffbb33.com", true }, + { "fffbb44.com", true }, + { "fffbb55.com", true }, + { "fffbb66.com", true }, + { "fffbb77.com", true }, + { "fffbb88.com", true }, + { "fffbb99.com", true }, { "fffbhv.de", true }, + { "fffcc00.com", true }, + { "fffcc11.com", true }, + { "fffcc22.com", true }, + { "fffcc33.com", true }, + { "fffcc44.com", true }, + { "fffcc55.com", true }, + { "fffcc66.com", true }, + { "fffcc77.com", true }, + { "fffcc88.com", true }, + { "fffcc99.com", true }, + { "fffdd00.com", true }, + { "fffdd11.com", true }, + { "fffdd22.com", true }, + { "fffdd33.com", true }, + { "fffdd44.com", true }, + { "fffdd55.com", true }, + { "fffdd66.com", true }, + { "fffdd77.com", true }, + { "fffdd88.com", true }, + { "fffdd99.com", true }, { "fffdm.com", true }, + { "fffee00.com", true }, + { "fffee11.com", true }, + { "fffee22.com", true }, + { "fffee33.com", true }, + { "fffee44.com", true }, + { "fffee55.com", true }, + { "fffee66.com", true }, + { "fffee77.com", true }, + { "fffee88.com", true }, + { "fffee99.com", true }, + { "fffgg00.com", true }, + { "fffgg11.com", true }, + { "fffgg22.com", true }, + { "fffgg33.com", true }, + { "fffgg44.com", true }, + { "fffgg55.com", true }, + { "fffgg66.com", true }, + { "fffgg77.com", true }, + { "fffgg88.com", true }, + { "fffgg99.com", true }, + { "fffhh00.com", true }, + { "fffhh11.com", true }, + { "fffhh22.com", true }, + { "fffhh33.com", true }, + { "fffhh44.com", true }, + { "fffhh55.com", true }, + { "fffhh66.com", true }, + { "fffhh77.com", true }, + { "fffhh88.com", true }, + { "fffhh99.com", true }, + { "fffii00.com", true }, + { "fffii11.com", true }, + { "fffii22.com", true }, + { "fffii33.com", true }, + { "fffii44.com", true }, + { "fffii55.com", true }, + { "fffii66.com", true }, + { "fffii77.com", true }, + { "fffii88.com", true }, + { "fffii99.com", true }, + { "fffjj00.com", true }, + { "fffjj11.com", true }, + { "fffjj22.com", true }, + { "fffjj33.com", true }, + { "fffjj44.com", true }, + { "fffjj55.com", true }, + { "fffjj66.com", true }, + { "fffjj77.com", true }, + { "fffjj88.com", true }, + { "fffjj99.com", true }, + { "fffkk00.com", true }, + { "fffkk11.com", true }, + { "fffkk22.com", true }, + { "fffkk33.com", true }, + { "fffkk44.com", true }, + { "fffkk55.com", true }, + { "fffkk66.com", true }, + { "fffkk77.com", true }, + { "fffkk88.com", true }, + { "fffkk99.com", true }, + { "fffll00.com", true }, + { "fffll11.com", true }, + { "fffll22.com", true }, + { "fffll33.com", true }, + { "fffll44.com", true }, + { "fffll55.com", true }, + { "fffll66.com", true }, + { "fffll77.com", true }, + { "fffll88.com", true }, + { "fffll99.com", true }, + { "fffmm00.com", true }, + { "fffmm11.com", true }, + { "fffmm22.com", true }, + { "fffmm33.com", true }, + { "fffmm44.com", true }, + { "fffmm55.com", true }, { "fffnrw.de", true }, - { "ffg.berlin", true }, { "ffiec.gov", true }, { "ffis.me", false }, { "ffl123.com", true }, { "fflone.com", true }, { "ffmradio.de", true }, - { "ffmv.de", true }, + { "ffnm.org", true }, + { "ffoz.org", true }, { "ffp-survey.com", true }, { "ffprofile.com", true }, { "ffrev.de", true }, - { "ffsbgateway.com", true }, { "ffsociety.nl", true }, - { "ffta.eu", true }, + { "fftech.se", true }, + { "fftechnology.pt", true }, + { "fftimes.com", true }, { "ffty2.com", true }, { "ffw-zeven.de", true }, - { "ffwd.fm", true }, + { "ffwd-it.nl", true }, + { "ffxiv-eureka.com", true }, { "ffxiv-tools.jp", true }, { "ffzeven.de", true }, { "fgdc.gov", true }, @@ -46264,42 +53678,81 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fgsv-kongress.de", true }, { "fgtsolutions.com", true }, { "fgui.de", true }, + { "fh-apac.com", true }, + { "fh-chinese.com", true }, + { "fh-chn.com", true }, + { "fh-jituan.com", true }, + { "fh-wechat.com", true }, { "fh-x.de", true }, + { "fh-zh.com", true }, { "fh14.com", true }, { "fh169.cc", true }, - { "fh70.com", true }, + { "fh70.com", false }, { "fhappcp.com", true }, { "fhar.be", true }, { "fharbe.com", true }, { "fharbe.de", true }, { "fharbe.net", true }, + { "fhasiacorp.com", true }, + { "fhasiacorporate.com", true }, { "fhba.com.au", true }, { "fhcdn.xyz", true }, - { "fhconseil.fr", false }, { "fhdhelp.de", false }, { "fhdhilft.de", false }, { "fhersoberanes.tk", true }, - { "fheuschen.de", true }, { "fhfaoig.gov", true }, + { "fhfuhui.com", true }, + { "fhglobal-zh.com", true }, + { "fhglobal-zhs.com", true }, + { "fhglobalcn.com", true }, + { "fhgroup-chn.com", true }, + { "fhgroup-cn.com", true }, + { "fhgroup-zh.com", true }, + { "fhgroup-zhs.com", true }, + { "fhgroupcn.com", true }, + { "fhgroupzhs.com", true }, + { "fhi.nl", true }, { "fhinds.co.uk", true }, + { "fhjituan-cn.com", true }, + { "fhjituan-zh.com", true }, + { "fhjituan-zhs.com", true }, + { "fhjituancn.com", true }, + { "fhjituanzhs.com", true }, + { "fhjt-apac.com", true }, + { "fhjt-zh.com", true }, + { "fhjtapac.com", true }, + { "fhjtchn.com", true }, + { "fhjtcn.com", true }, + { "fhjtglobal.com", true }, + { "fhjtzh.com", true }, + { "fhjtzhs.com", true }, { "fhm.duckdns.org", true }, + { "fhmarkets.com", true }, { "fhmkh.cn", true }, { "fhome.ch", true }, + { "fhope.org", true }, { "fhsseniormens.club", true }, + { "fhstation.com", true }, + { "fhstatus-chinese.com", true }, + { "fhtrader.com", true }, { "fhv-waldhausen.de", true }, + { "fhwechat.com", true }, + { "fhzhs.com", true }, { "fi.google.com", true }, { "fi.se", true }, { "fi.search.yahoo.com", false }, { "fiam.me", true }, - { "fiamor.com.br", true }, { "fiamtorino.eu", true }, { "fianna.tk", true }, + { "fianoromano.news", true }, { "fiasgo.dk", true }, { "fiataldivat.hu", true }, + { "fibank.bg", true }, + { "fiber.mk", true }, { "fiberoptikz.tk", true }, { "fiberxl.com", true }, { "fibery.io", true }, - { "fibo-forex.org", true }, + { "fibogroup.com", true }, { "fibrasynormasdecolombia.com", true }, { "fibraworks.com", true }, { "fibrefly.co.uk", true }, @@ -46311,68 +53764,89 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fibu.email", true }, { "fibune.com", true }, { "fibutest.de", true }, + { "fic.is", true }, + { "ficfellowship.org", true }, { "fichajes.com", true }, { "fichier-pdf.fr", false }, { "fickfreundinnen.net", true }, { "fickweiler.nl", true }, { "ficlab.com", true }, { "fico.com", true }, - { "ficus.io", true }, + { "fictionaltruths.com", true }, + { "ficus.io", false }, { "fid-elite.ch", true }, { "fidanza.eu", true }, + { "fiddle.to", true }, { "fiddlesaw.com", true }, + { "fiddlestickstoys.com.au", true }, { "fidecorp.com", true }, { "fidelapp.com", true }, { "fidelis-it.ch", true }, { "fidelis-it.net", true }, + { "fidelitybank.com.gh", true }, { "fidelitybankonline.com", true }, + { "fidelityhomestead.com", true }, { "fidelitysound.es", true }, + { "fidell.com.ua", true }, + { "fides.ch", true }, { "fideschile.tk", true }, { "fidesic.com", false }, + { "fidgetbox.co.uk", true }, { "fidhouriet.ch", true }, - { "fidonet.io", true }, + { "fidlar.com", true }, + { "fidmmuseum.org", true }, { "fidoo.com", true }, { "fiduciaire-ratio.ch", false }, { "fiducoldex.com.co", true }, + { "fiedelaks-landbarf.de", true }, { "fieggen.eu", true }, { "fieggen.net", true }, { "fiekeoffringa.nl", true }, + { "fieldcrafts.com", true }, + { "fieldeffect.com", true }, { "fieldsgynroboticsurgery.com", true }, + { "fieldworkbrewing.com", true }, { "fienaliri.tk", true }, - { "fierce-escarpment-59441.herokuapp.com", true }, { "fierman.eu", false }, { "fierman.net", false }, { "fierman.us", false }, { "fierscleaning.nl", true }, { "fiery.me", false }, + { "fieryaura.eu", true }, { "fierykitchen.pl", true }, { "fiesta-mk5-limited-edition.nl", true }, { "fiestasalquezar.tk", true }, + { "fiet.cat", true }, { "fietsambassade.be", true }, { "fietsambassade.gent", true }, { "fietsambassadegent.be", true }, { "fietsennaarbarcelona.tk", true }, { "fietsherstel.gent", true }, - { "fietskr.at", true }, { "fietsvakman.nl", true }, { "fietsvierdaagsen.nl", true }, { "fifaaddict.com", true }, { "fifacup.ga", true }, { "fifadimensions.tk", true }, { "fifafans.tk", true }, - { "fifashions.com", true }, { "fifastars.tk", true }, { "fifatournament.tk", true }, { "fifaultimatemod.tk", true }, + { "fifauteam.com", true }, + { "fifehg.org.uk", true }, { "fifemedicalgroup.co.uk", true }, + { "fiff.de", false }, + { "fifi.club", true }, { "fifr.nl", true }, + { "fifthwall.com", true }, { "fiftynorth.eu", true }, { "fiftyseven.media", true }, { "fiftyshadesofgreyfullmovie.ga", true }, { "fiftyshadesofluca.ml", true }, - { "fiftytalk.com", true }, { "fig.ms", true }, + { "figaroparrucchiere.it", true }, { "figbert.com", true }, + { "figbytes.biz", true }, + { "figbytes.com", true }, { "fighribali.tk", true }, { "fightape.cf", true }, { "fightape.ga", true }, @@ -46382,31 +53856,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fighting-turtle.tk", true }, { "fightinggobbler.com", true }, { "fightingshit.tk", true }, - { "fightsupplies.co.uk", false }, + { "fightsupplies.co.uk", true }, { "figinstitute.org", true }, { "figl.net", true }, { "figliasons.com", true }, { "figma.com", true }, { "figmalover.com", true }, + { "figshare.com", true }, + { "figsrugbyleague.com.au", true }, { "figura.cz", true }, { "figuras.tk", true }, { "figurasdelinguagem.com.br", true }, + { "figure.com", true }, { "figure.nz", true }, - { "figuro.la", true }, { "figuurzagers.nl", false }, { "fihatest.ml", true }, - { "fihclawgroup.com", true }, { "fiilr.com", true }, { "fiix.io", true }, + { "fija.org", true }, { "fijibutterflyfishcount.com", true }, { "fijimarinas.com", true }, { "fijiresortforsale.com", true }, { "fijisharkcount.com", true }, { "fijnefeestdageneneengelukkignieuwjaar.nl", true }, { "fijnewoensdag.nl", true }, - { "fika.com.vn", true }, { "fikaauto.com", true }, - { "fikain.com", true }, { "fiken.no", true }, { "fikirtasarim.net", true }, { "fikong.com", true }, @@ -46414,14 +53888,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fikriwildannugraha.com", true }, { "fiksem-it.nl", true }, { "fikst.com", true }, - { "fil-tec-rixen.com", true }, { "fil.fi", false }, { "filamentia.nl", true }, { "filanthropystar.org", true }, + { "filantropikum.com", true }, + { "filapanel.com", true }, { "filaretihairlove.gr", true }, { "filcosplay.tk", true }, { "file-cloud.eu", true }, - { "file-pdf.it", false }, + { "file.ac", true }, { "file24.tk", true }, { "filebox.one", true }, { "filecopa.com", true }, @@ -46429,14 +53904,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "filedoom.ml", true }, { "filehash.de", true }, { "filehippo.com", true }, + { "filehippo.jp", true }, { "filehorsefile.com", true }, - { "filehosted.net", true }, { "fileio.io", true }, { "filejet.io", true }, + { "filejo.com", true }, { "filek.ga", true }, { "fileon.com", true }, { "fileplanet.com", true }, - { "filepunks.com", true }, + { "fileport.io", true }, { "filequit.xyz", true }, { "files.com", false }, { "files.from-me.org", true }, @@ -46444,6 +53920,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "filesense.com", true }, { "fileservicios.com.ar", true }, { "fileshare.party", true }, + { "filesharingshop.com", true }, { "filesoup.io", true }, { "filestar.io", true }, { "filestartest.io", true }, @@ -46457,12 +53934,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "filigrana.tk", true }, { "filiio.com", true }, { "filiotech.com", true }, + { "filiotech.pl", true }, { "filip-prochazka.com", false }, + { "filipadamczak.com", true }, { "filipdima.ro", false }, { "filipi.no", true }, { "filipinasdailynews.tk", true }, { "filipinochinese.tk", true }, { "filipinostaff.uk", true }, + { "filipn.cz", true }, { "filippo.io", true }, { "filippoberio.co.uk", true }, { "filipstaffa.net", true }, @@ -46475,21 +53955,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "film-colleges.com", true }, { "film-op-tv.nl", true }, { "film-storyboards.com", false }, + { "film-storyboards.fr", false }, { "film-tutorial.com", true }, { "film.ru", true }, - { "filmarchiv-sachsen.de", true }, { "filmatiporno.xxx", true }, { "filmbabasi.net", true }, { "filmbasar.com", true }, { "filmbest.tk", true }, { "filmcorner.tk", true }, { "filmdates.co.uk", true }, - { "filmdirectingtips.com", true }, { "filme-onlines.com", true }, { "filmedonstage.com", true }, + { "filmezzunk.hu", true }, { "filmfestivalflix.com", true }, { "filmfog.cf", true }, { "filmfog.ga", true }, + { "filmimpact.com", true }, { "filmisfun.com", true }, { "filmisfun.net", true }, { "filmitis.com", true }, @@ -46497,41 +53978,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "filmkode.com", true }, { "filmnet.pl", true }, { "filmnetz.tk", true }, + { "filmocracy.com", true }, { "filmoffice.pl", true }, { "filmosliw.cf", true }, + { "filmovka.pl", true }, { "filmowanie-dronem.com.pl", true }, { "filmphotograph.com", true }, + { "filmpornofrancais.fr", true }, { "filmpronet.in", true }, { "filmsearch.tk", true }, { "filmserver.de", true }, { "filmsidan.tk", true }, { "filmsite-studio.com", true }, + { "filmsleague.com", true }, { "filmtheaternieuwegein.tk", true }, { "filmwallpapers.ml", true }, + { "filmyporno.net", true }, + { "filmzwesela.online", true }, { "filobot.xyz", true }, { "filokiralama.name.tr", true }, { "filosofare.tk", true }, { "filosofia.tk", true }, - { "filoxenia.io", true }, { "filpromer.com", true }, { "filstop.com", true }, { "filter-kiev.com", true }, { "filterlists.com", true }, { "filtershekanha.com", true }, - { "filth.bar", true }, { "filthyapartmenters.ga", true }, { "filthyapartmentest.ga", true }, { "filtr.me", true }, + { "filwebasia.com", true }, + { "filworx.com", true }, + { "fimc-biodiversityportal.org", true }, { "fimfiction.net", true }, { "fimozin.ga", true }, { "fimp.pt", true }, { "fimsquad.com", true }, + { "fin-ware.ru", true }, + { "fin.ee", false }, { "fina-foxy.com", true }, + { "finagosolo.com", true }, { "finaktiv.tk", true }, { "final-expense-quotes.com", true }, { "final-rest.co.uk", true }, { "final-x.com", true }, + { "final.ac", true }, { "finalashes.tk", true }, + { "finalesuperuser.com", true }, { "finalfate.tk", true }, { "finalfoursteam.tk", true }, { "finalfourstream.tk", true }, @@ -46542,6 +54035,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "finalrewind.org", true }, { "finalworkdriesstef.tk", true }, { "finalx.nl", true }, + { "finanalysis.com", true }, { "finance-colleges.com", true }, { "finance-consulting.ga", true }, { "finance-devils.com", true }, @@ -46551,61 +54045,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "financecontrol.tk", true }, { "financedepth.com", true }, { "financedraft.com", true }, + { "financeforafrica.com", true }, { "financeguest.com", true }, { "financehindi.com", true }, { "financeinterface.tk", true }, { "financejobs.ch", true }, { "financelong.com", true }, + { "financemagnates.com", true }, { "financemain.com", true }, { "financenews.tk", true }, { "financepen.com", true }, { "financeplush.com", true }, { "financepre.com", true }, + { "financepreneur.fr", true }, { "financestead.com", true }, { "financethrive.com", true }, { "financetwenty.com", true }, { "financewhile.com", true }, { "financewithcromulent.com", true }, { "financial-law.tk", true }, + { "financial-standby.de", true }, { "financialfreedomaus.com", true }, + { "financialfrolicker.com", true }, { "financialhost.org", true }, { "financialmoveers.ga", true }, { "financialmoveest.ga", true }, { "financialnews.today", true }, - { "financialopticshq.com", true }, + { "financialopticshq.com", false }, + { "financialplannerworld.com", true }, { "financniexperti.sk", true }, { "finansa.no", true }, + { "finansified.com", true }, { "finansinspektionen.se", true }, { "finanskredirehberi.com", false }, { "finanstilsynet.dk", true }, { "finansy.tk", true }, { "finanz-planer.net", true }, { "finanzasydinero.com", true }, + { "finanzberatungdueren.de", true }, { "finanzconsult.org", true }, + { "finanzen-az.com", true }, { "finanzen-weblog.de", true }, { "finanzierung-sofortzusage.de", true }, + { "finanztime.com", true }, { "finanzwende-recherche.de", true }, { "finapi.io", true }, { "finaster.com.br", true }, { "finax.eu", true }, { "finbio.cf", true }, + { "fincaalegranza.com", true }, + { "fincarebank.com", true }, { "fincas-ruiz.com", true }, + { "fincent.xyz", true }, { "finch.am", true }, { "finch.ga", true }, - { "finchi.de", true }, { "finchkeeper.com", true }, { "finchnest.co.uk", true }, - { "fincitegroup.com", true }, + { "finchtechie.com", true }, { "fincities.tk", true }, { "find-mba.com", true }, { "findahero.com.au", true }, { "findairconditioningers.ga", true }, { "findairconditioningest.ga", true }, + { "findanengineer.com", true }, { "findapinball.com", true }, { "findautoloan.ml", true }, { "findbalancedliving.com", true }, { "findcanary.com", true }, - { "findcasinos.net", true }, { "findcbdoilnearme.com", true }, { "findcep.com", false }, { "finddecisionsest.ga", true }, @@ -46614,42 +54120,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "findete.tk", true }, { "findeth.io", true }, { "findheim.at", false }, - { "findingawesome.com", true }, + { "findhow.org", true }, { "findinggenius.com", true }, { "findingimagesers.ga", true }, { "findingimagesest.ga", true }, { "findingkorea.com", false }, + { "findingneverlandthemusical.com", true }, + { "findings.co", true }, { "findingtheuniverse.com", true }, { "findingturkeyers.ga", true }, { "finditalldirectory.com", true }, { "finditez.com", true }, + { "findjeen.com", true }, { "findlayohio.gov", true }, { "findlimitsers.ga", true }, { "findlocalproduce.co.uk", true }, { "findmail.ga", true }, + { "findmassmoney.gov", true }, { "findme.partners", true }, { "findmentalhealth.co.uk", true }, { "findmespot.com", true }, { "findmybottleshop.com.au", true }, + { "findmycare.ca", true }, { "findmyfamily.org", true }, - { "findmynudes.com", true }, { "findmytricks.com", false }, + { "findnhmoney.gov", true }, { "findolino.at", true }, - { "findom.network", true }, { "findoon.de", true }, - { "findpetproducts.com", true }, + { "findoutlyrics.com", true }, + { "findprivateinvestor.com", true }, { "findrejsepartner.dk", true }, { "findsalmonest.ga", true }, + { "findscan.me", true }, + { "findschool.ge", true }, { "findsingledating.ml", true }, { "findstorenearme.ca", true }, { "findstorenearme.co.uk", true }, { "findstorenearme.us", true }, + { "findsupport.gov", true }, { "findthatnude.com", true }, { "findthere.net", true }, { "findtrain.tk", true }, { "findtreatment.gov", true }, { "findyour.diet", true }, { "findyourdreams.tk", true }, + { "findyouridealpartner.com", true }, + { "findyourstores.com", true }, { "findyourtrainer.com", true }, { "findyourvoice.ca", true }, { "fine-services.paris", true }, @@ -46664,43 +54180,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "finelineaestheticstx.com", false }, { "finenet.com.tw", true }, { "fineshare.tk", true }, + { "finesio.sk", true }, { "finesoon.net", true }, { "finestblingers.ga", true }, { "finestblingest.ga", true }, - { "finestinfo.com", true }, { "finestrabatalera.tk", true }, { "finestreview.cf", true }, - { "finestrina.net", true }, + { "finet.se", true }, { "finex.by", true }, { "finexo.ch", true }, { "finflee.co", true }, { "finfleet.id", true }, + { "finfocus.today", true }, { "finform.ch", true }, + { "finfowe.com", true }, + { "fingerlakesgaming.com", true }, + { "fingerprint.com", false }, + { "fingerprintjs.com", true }, { "fingerscrossed.style", true }, { "fingertight.ga", true }, { "finhelp.ga", true }, { "fini-de-jouer.ch", false }, + { "finicity.com", true }, { "finilaviolence.gc.ca", true }, { "finion.com", true }, { "finishingpasteers.ga", true }, { "finishingpasteest.ga", true }, + { "finishmaster.com", true }, { "finisron.in", true }, { "finkelstein.fr", true }, { "finlandcook.online", true }, { "finlandcook.top", true }, + { "finlaylloyd.com", true }, { "finlib.in", true }, { "finlito.tk", true }, + { "finmozg.ru", true }, { "finn-svoboda.cf", true }, { "finn-thorben.me", true }, { "finn.io", true }, { "finnclass.cz", true }, { "finndel.no", true }, + { "finnhjelpemidler.no", true }, { "finnishclothing.tk", true }, { "finnishconsulting.com", true }, { "finnjumping.tk", true }, { "finnkupongkoder.no", true }, { "finnwea.com", false }, { "finom.co", true }, + { "finovate.com", true }, { "finpomosh.gq", true }, { "finprison.net", true }, { "finpt.com", false }, @@ -46709,13 +54236,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fins.money", true }, { "finscan.com", true }, { "finsecurity.eu", true }, + { "finsight.com", true }, { "finsprings.org", true }, + { "finst.com", true }, { "finstererlebnis.de", true }, - { "fintechlaw.pl", true }, + { "fintechaccelerate.com", true }, { "fintechnics.com", false }, { "finteo.de", true }, + { "fintracker.ca", true }, { "fintry.ca", true }, - { "finturelife.com", true }, { "finturio.de", true }, { "finvantage.com", true }, { "finvantive.com", true }, @@ -46728,7 +54257,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fionamcbride.com", true }, { "fionna.io", true }, { "fiore31.fr", true }, - { "fiorebjj.com", true }, { "fiorellaweddings.com", true }, { "fiorenzaperfumhome.com.br", true }, { "fioriepiante.info", true }, @@ -46737,17 +54265,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fiosgenomics.com", true }, { "fioulmarket.fr", true }, { "fipackaging.com", true }, + { "fiphfp.fr", true }, { "fipo.life", true }, { "fipq.tk", true }, { "fir.ch", true }, { "firatcakir.com.tr", true }, + { "firatnews.com", true }, { "firatofm.tk", true }, { "firaun.tk", true }, - { "firb.gov.au", true }, { "firc.de", true }, { "fire-eyes.tk", true }, { "fire-places.tk", true }, { "fire-schools.com", true }, + { "fire-science-schools.com", true }, { "firealarms.gq", true }, { "fireballsteven.tk", true }, { "firebaseio.com", true }, @@ -46757,9 +54287,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firebrandchurch.com", true }, { "firecask.com", true }, { "firechip.cc", true }, - { "firechip.srl", true }, { "firecity.tk", true }, - { "firecontrols.net", true }, { "firecore.com", true }, { "firecry.org", true }, { "firedemons.tk", true }, @@ -46769,19 +54297,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firefart.at", false }, { "firefense.com", true }, { "firefightergarage.com", true }, - { "firefighters.dating", true }, - { "firefish.com.au", true }, { "fireflygatlinburg.com", true }, { "fireglow.de", true }, - { "fireinthedeep.com", false }, + { "fireinthedeep.com", true }, { "fireintheholevideos.tk", true }, { "fireleadership.gov", true }, + { "firemail.de", true }, { "firemaker.tk", true }, { "firemudfm.com", true }, { "firenews.cf", true }, { "firenza.org", true }, { "firenzetoday.it", true }, { "fireoakstrategies.com", true }, + { "fireperformerstoronto.com", true }, { "fireplex.co.uk", true }, { "fireportal.cz", true }, { "fireportal.sk", true }, @@ -46789,14 +54317,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firerain.me", true }, { "fireservicerota.co.uk", true }, { "fireshellsecurity.team", true }, - { "firesofdestruction.nl", true }, { "firesofheaven.org", true }, + { "firesolutionsinc.com", true }, { "firesprite.com", true }, - { "firesquare.ru", true }, { "firestart.tk", true }, { "firestarter.fi", true }, + { "firestickhacks.com", true }, { "firestuff.org", true }, { "firetotheprisons.org", true }, + { "firetrunk.com", true }, { "fireurboss.tk", true }, { "firevap.org", true }, { "firewall.net.za", true }, @@ -46810,20 +54339,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firingsquad.tk", true }, { "firma-cerny.cz", true }, { "firma-offshore.com", true }, - { "firmaadler.de", true }, { "firmador.cloud", true }, { "firmador.online", true }, + { "firmaet.com", true }, { "firmajulegaver.dk", true }, { "firmale.com", true }, { "firmament.space", true }, { "firmament.tk", true }, { "firmanali.com", true }, - { "firmant.me", true }, { "firmapi.com", true }, { "firmennie-crossovki.tk", true }, { "firmenwerbung-vermarktung.de", true }, - { "firmfoundationsconsulting.com", true }, - { "firmground.nl", true }, + { "firmfoundationsconsulting.com", false }, { "firmkernel.tk", true }, { "firmware.science", true }, { "firobe.fr", true }, @@ -46831,19 +54358,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firsov.gq", true }, { "first-aid-kit.net", false }, { "first-house.no", true }, - { "first-legion.eu", false }, + { "first-hyp.de", true }, + { "first-legion.eu", true }, { "first-money.tk", true }, { "first-ns.com", false }, { "first-time-offender.com", true }, + { "first-wishes.com", true }, { "first.org", true }, { "first4it.com", true }, + { "firstbankkansas.com", true }, { "firstbaptistchurchofchrist.org", true }, { "firstbooks.ml", true }, + { "firstbus.co.uk", true }, + { "firstcallnc.com", true }, + { "firstcapitalfcu.com", true }, { "firstcentralsavings.com", true }, { "firstchoicebouncycastlehire.co.uk", true }, { "firstchoicefriseur.at", true }, + { "firstchoicejunkservice.com", true }, { "firstchoicewaterproofing.com", true }, { "firstchurchmn.org", true }, + { "firstcitizensbank.com", true }, { "firstclass.com.kh", true }, { "firstclasscastles.com", true }, { "firstclassleisure.co.uk", true }, @@ -46852,14 +54387,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firstcoastsir.com", true }, { "firstcoastteaco.com", true }, { "firstcolonyengraving.com", true }, + { "firstcommunity.com", true }, { "firstcontact.cf", true }, - { "firstderm.com", true }, { "firstdry.com.br", true }, { "firstechpayments.com", true }, + { "firstfinanceit.com", true }, { "firstfinca.de", true }, { "firstgov.gov", true }, { "firstgradeframeofmind.com", true }, + { "firstimpressionsecuritydoors.com", true }, + { "firstlab.com", true }, { "firstlayout.net", true }, + { "firstlegal.group", true }, { "firstlightinspirations.tk", true }, { "firstload.tk", true }, { "firstmall.de", true }, @@ -46868,29 +54407,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "firstnet.gov", true }, { "firstnetwork.cf", true }, { "firstnetworksouth.com", true }, + { "firstorion.com", true }, + { "firstperformance.ro", true }, { "firstphilec.com", true }, { "firstplace.ga", true }, { "firstq.xyz", true }, { "firstqa.com", true }, { "firstresponder.gov", true }, + { "firstshowing.net", true }, { "firstsiteguide.tk", true }, { "firsttimer.tk", true }, { "firsttimeround.tk", true }, { "firsttimeshopperers.ga", true }, { "firsttimeshopperest.ga", true }, + { "firstup.io", true }, { "firstversionist.com", true }, { "firstwebring.tk", true }, + { "firstwordpharma.com", true }, + { "firthidaho.gov", true }, { "firtreetechnology.co.uk", true }, { "fis.io", true }, { "fisa.net.za", true }, + { "fiscalidadresiduos.org", true }, + { "fiscalitatresidus.org", true }, + { "fischbacher-reisebuero.de", true }, + { "fischer-group.com", true }, { "fischer-immoteam.de", true }, { "fischer-its.com", false }, { "fischer-kundendienst.de", true }, { "fischer-programmierung.ch", true }, + { "fischer-usa.com", true }, { "fischer-wasels-medizin.de", true }, - { "fischerlaender.de", true }, + { "fischerca.com", true }, + { "fischerfutureheat.de", true }, { "fischerp.net", true }, { "fischers.srv.br", true }, + { "fischersports.com", true }, { "fiscoeconti.it", true }, { "fish-hook.ru", true }, { "fish-n-chips.uk", true }, @@ -46898,7 +54450,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fish24.bg", true }, { "fishbattle.io", true }, { "fishbattle.net", true }, + { "fishbrain.com", true }, { "fishcorp.dk", true }, + { "fishdeeper.com", true }, { "fishergo.ml", true }, { "fishergo.tk", true }, { "fishermailbox.net", true }, @@ -46906,17 +54460,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fishermansbend.apartments", true }, { "fishermansbendcorporation.com.au", true }, { "fishermansbendtownhouses.com.au", true }, - { "fisherstonelaw.com", true }, + { "fishersin.gov", true }, { "fishexport.eu", true }, { "fishfive.top", true }, { "fishgen.no", true }, { "fishingworld.tk", true }, + { "fishingzone.bg", true }, { "fishlanestudios.com", true }, { "fishman.idv.tw", true }, { "fishoftheday.tv", true }, { "fishoilsafety.com", true }, { "fishport.cloud", true }, - { "fishport.cyou", false }, { "fishserver.net", true }, { "fishtacos.blog", true }, { "fishtank.ga", true }, @@ -46925,17 +54479,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fishyscans.tk", true }, { "fishystuff.cf", true }, { "fisinfomanagerdr.com", true }, + { "fisio-clinics.com", true }, + { "fisio.cn", true }, { "fisiobox.eu", true }, { "fisiodomiciliargoiania.com.br", true }, - { "fisiolunges.it", true }, + { "fisioterapia-online.com", true }, { "fisioterapista.roma.it", true }, { "fisiotohome.com", true }, { "fiskelures.se", true }, - { "fiskenco.be", true }, + { "fission.moe", true }, { "fistingtogether.com", true }, + { "fisvo.org", true }, { "fit-4u.ch", false }, { "fit-mit-nina.com", true }, { "fit-mit-system.eu", true }, + { "fit-portal.ru", true }, { "fit365.jp", false }, { "fit81.com", true }, { "fit81.it", true }, @@ -46947,10 +54505,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fitbase.fitness", true }, { "fitbylo.com", true }, { "fitcamp.fitness", true }, + { "fitch.group", true }, + { "fitchannel.com", true }, + { "fitchconnect-stg.com", true }, { "fitchconnect.com", true }, - { "fitchdesigncompany.com", true }, + { "fitchpeople.nl", true }, { "fitcoachion.com", true }, { "fitcrewhn.com", true }, + { "fitculator.com", true }, { "fite.family", false }, { "fitecleaningservices.com", true }, { "fitekin.com", true }, @@ -46958,40 +54520,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fitflaop.ga", true }, { "fitfocusau.com.au", true }, { "fitfoodfab.nl", true }, - { "fitgirl-repacks.site", true }, - { "fitgirlsdiary.com", true }, + { "fitfoodrecipe.com", true }, { "fitint.ro", true }, - { "fitkram.cz", true }, { "fitleads.nl", true }, + { "fitlinewellnesscoach.com", true }, { "fitmeat.at", true }, { "fitmommyinheels.com", true }, - { "fitmybike.eu", true }, + { "fitmybike.eu", false }, { "fitness-challenge.co.uk", true }, { "fitness-world.ga", true }, + { "fitness.edu.au", true }, { "fitness.gov", true }, { "fitnessbest.com", true }, + { "fitnessbond.com", true }, + { "fitnessfoodguide.com", true }, { "fitnesshaber.com", true }, { "fitnessimage.com.au", true }, { "fitnesskarate.club", true }, { "fitnessmaus.com", true }, { "fitnessplanet.best", true }, + { "fitnessstudio-website.de", true }, + { "fitnesstotal.com.br", true }, + { "fitnesstrainer-website.de", true }, { "fitnessunder50.com", true }, { "fitnessup.fr", true }, { "fitnessupay.com", true }, + { "fitnessupreme.com", true }, + { "fitnessvocab.com", true }, + { "fitnessvolt.com", true }, { "fitnetion.com", true }, { "fitnhot.com", true }, + { "fitnur.com", true }, { "fitnutkatie.com", true }, { "fitnutricode.pt", true }, { "fito.tk", true }, { "fitodifesa.it", true }, - { "fitpeo.com", true }, + { "fitotovar.ru", true }, + { "fitpass.co.in", true }, { "fitrecepty.info", true }, + { "fitrospective.com", true }, + { "fitspo.net", true }, { "fitspring.com", true }, { "fittelo.cz", true }, - { "fittingperfetto.it", true }, + { "fittherapy.biz", true }, { "fitxxxsandy.net", true }, { "fitzsim.org", true }, - { "five-wyches-farm.co.uk", true }, + { "fiu.ee", true }, + { "fius.de", true }, { "five.sh", true }, { "fiveboosts.xyz", true }, { "fivefortheroad.com", true }, @@ -47000,22 +54575,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fivepb.me", true }, { "fivepedia.tk", true }, { "fiveslice.pizza", true }, + { "fivestar.et", true }, { "fivestartrader.com", true }, { "fivetecnologia.com", true }, { "fivethirtyeight.com", true }, { "fiveyearsahead.com", true }, + { "fix-boredom.ml", true }, + { "fix-boredom.xyz", true }, { "fix-css.com", true }, { "fix-ru.ga", true }, { "fix-the-timeline.com", true }, { "fix-the-timeline.org", true }, { "fix.mk", true }, - { "fixapc.net", true }, { "fixaslowcomputer.com", true }, - { "fixedbets.tips", true }, { "fixedfeeplacements.co.uk", true }, { "fixedgear.tk", true }, { "fixedmatch.bet", true }, { "fixedtoday.com.au", true }, + { "fixerra.tech", true }, + { "fixfd.com", true }, { "fixfix.ch", true }, { "fixfm.tk", true }, { "fixforce.nl", true }, @@ -47025,26 +54603,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fixlasvegas.com", true }, { "fixmobile.online", true }, { "fixmyalarmpanel.co.uk", true }, - { "fixmycomputerdude.com", true }, { "fixmyglitch.com", true }, { "fixodent-fr-fr-swapper.azurewebsites.net", true }, { "fixodent.fr", true }, + { "fixpart.de", true }, + { "fixpart.nl", true }, { "fixpix.gq", true }, + { "fixplusflex.de", true }, { "fixpoint.co.at", true }, { "fixpoint.systems", true }, { "fixthetimeline.com", true }, { "fixthetimeline.org", true }, + { "fixturemundial.com", true }, { "fixverkaufen.de", true }, - { "fixvoltage.ru", true }, { "fiyatgrafik.com", true }, { "fiyatinedir.net", true }, { "fizadvocaten.nl", true }, + { "fizeau.com", true }, { "fiziktedavi.name.tr", true }, { "fizjo-strefa.com", true }, { "fizjoterapia.uk", true }, { "fizmix.lv", true }, + { "fizyonetistanbul.com", true }, { "fizyoterapi.name.tr", true }, - { "fizz.buzz", false }, + { "fizz.buzz", true }, { "fizz.cloud", true }, { "fizz.space", true }, { "fizz.studio", true }, @@ -47064,30 +54646,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fjallconnections.com", true }, { "fjant.tk", true }, { "fjco.alsace", true }, + { "fjerhammer.dk", true }, + { "fjewellery.co.uk", true }, { "fjharcu.com", true }, + { "fjkl.uk", true }, + { "fjnuacm.top", true }, { "fjordboge.dk", true }, { "fjordenpaard.tk", true }, { "fjordtorsk.se", true }, + { "fjournal.lol", true }, { "fjsb.com", true }, { "fjugstad.com", true }, { "fjzone.org", true }, + { "fkbae.to", true }, { "fkcdn.de", true }, { "fkfev.de", true }, + { "fkgfw.men", true }, { "fklegal.com", true }, + { "fkmt-server.net", true }, { "fkosquad.moe", true }, { "fkraiem.org", true }, { "fktpm.ru", true }, + { "fl-ad.com", true }, + { "fl-catering.ru", true }, { "fl.ru", true }, + { "fl3xx.com", false }, { "flabacinov.ga", true }, { "flabutelov.tk", true }, { "flacandmp3.ml", true }, { "flacon.tk", true }, - { "fladby.org", true }, + { "flacsoandes.edu.ec", true }, + { "fladnag.net", true }, { "flaeskeklubben.dk", true }, { "flaeskeklubben.eu", true }, { "flagburningworld.com", true }, { "flagcdn.com", true }, - { "flagcity.com", true }, { "flagfox.net", true }, { "flaggorvarlden.se", true }, { "flaggrimsby.co.uk", true }, @@ -47097,19 +54690,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flagistrany.ru", true }, { "flaglercounty.gov", true }, { "flaglerelections.gov", true }, + { "flaglermosquito.gov", true }, + { "flagma-no.com", true }, + { "flagma.biz.tr", true }, { "flagma.by", true }, + { "flagma.de", true }, + { "flagma.es", true }, + { "flagma.hu", true }, { "flagma.pl", true }, { "flagma.ua", true }, - { "flagmanfishing.by", true }, + { "flagma.uz", true }, { "flagpedia.asia", true }, { "flagpedia.net", true }, { "flagriculture.gov", true }, { "flagspot.net", false }, { "flagstone-magazin.ro", false }, + { "flagstone.co.uk", true }, + { "flagthis.com", true }, { "flagyl-500-mg.ga", true }, { "flair.nl", true }, - { "flairfindr.com", true }, - { "flam.io", true }, + { "flaite.com", true }, + { "flam.studio", true }, { "flaman-h7a.fr", true }, { "flamehaze.tk", true }, { "flamencoexplained.com", false }, @@ -47117,6 +54718,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flamengopi.tk", true }, { "flamentecnic.tk", true }, { "flameofthoughts.tk", true }, + { "flameport.com", true }, { "flamer-scene.com", false }, { "flamet.eu", false }, { "flameviper.tk", true }, @@ -47128,64 +54730,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flamingowomenspavilion.com", true }, { "flamme-von-anor.de", true }, { "flammy.tk", true }, + { "flamoes.be", true }, { "flana.com", true }, { "flanadot.com", true }, { "flanagan.tk", true }, { "flanderslaw.com", true }, + { "flandersmake.be", true }, { "flanga.io", false }, { "flanigan.tk", true }, { "flapoverspeed.com", true }, { "flapperistic.tk", true }, { "flare.cloud", true }, + { "flareian.com", true }, { "flaretechnologies.io", true }, { "flarewalker.com", true }, { "flarewalker.eu", true }, { "flarewalker.net", true }, { "flarewalker.org", true }, + { "flareweb.it", true }, { "flart.tk", true }, { "flarumtr.com", true }, { "flasaki.gr", true }, { "flash-games.tk", true }, + { "flash.gr", true }, { "flashback.org", true }, { "flashbackband.tk", true }, - { "flashbaggie.com", true }, { "flashbeat.tk", true }, { "flashcardsmobile.com", true }, { "flashcover.com.br", true }, - { "flashcrasher.com", true }, { "flasheschile.tk", true }, { "flashgamedev.tk", true }, + { "flashgamesplayer.com", true }, { "flashgot.net", true }, { "flashigra.tk", true }, + { "flashingblinkylights.com", true }, { "flashissue.com", true }, { "flashkeysers.ga", true }, { "flashlearners.com", true }, { "flashlightchart.com", true }, - { "flashmarkets.com", true }, + { "flashpegasus.com.br", true }, { "flashscores.tk", true }, { "flashset.tk", true }, - { "flashtek-uk.com", false }, { "flashuk.com", true }, { "flassetlocators.com", true }, + { "flaszka.com", true }, { "flat-cdn.com", true }, { "flat-embed.com", true }, { "flat-tire.biz", true }, + { "flat.io", true }, { "flatart.pl", true }, { "flatbellyreview.com", true }, { "flatbook.one", true }, { "flatcast.tk", true }, { "flatcoated.tk", true }, + { "flatheadelectric.com", true }, { "flathome.co.jp", true }, + { "flaticons.net", true }, { "flatlandchurch.com", false }, + { "flatmail.net", true }, { "flatmail.pl", true }, { "flatmatehub.com.au", true }, - { "flatpackcreative.com", true }, { "flatpackmates.co.uk", true }, { "flatplanet.tk", true }, + { "flatrate.com", false }, { "flatrooms-chiemgau.de", true }, { "flatsomestudio.ir", true }, { "flatsurfers.eu", true }, { "flattie.cz", true }, + { "flatwoodsky.gov", true }, { "flauschig.net", true }, { "flavelappliances.com", true }, { "flaviao.com", true }, @@ -47204,16 +54816,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flayla.tk", true }, { "flblog.top", false }, { "flcatering.com", true }, + { "flcgil.it", true }, { "flcma.gov", true }, { "flcourts.gov", true }, + { "flcttn.com", true }, { "fldjj.gov", true }, { "fldsmdfr.nl", true }, { "flealab.it", true }, - { "flechatec.net.br", true }, + { "flechatec.net.br", false }, { "fleche-ardennaise.be", true }, { "flect.net", true }, { "fleeb.xyz", true }, { "fleep.io", true }, + { "fleeps.co", false }, { "fleesty.dynv6.net", true }, { "fleet-group.com", true }, { "fleet-search.com", true }, @@ -47230,6 +54845,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fleetcor.pl", true }, { "fleetcor.sk", true }, { "fleetcorcards.be", true }, + { "fleetlinkatlascopco.com", true }, { "fleetofhope.tk", true }, { "fleetsmith.com", true }, { "fleetssl.com", true }, @@ -47239,6 +54855,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fleisch.club", true }, { "fleischkaes.de", true }, { "fleki.hu", true }, + { "flemberg.com", true }, + { "fleming.de", true }, { "flemingmccullagh.com", true }, { "flemingtonaudiparts.com", true }, { "flemishopelclub.tk", true }, @@ -47250,6 +54868,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fletcherdigital.com", true }, { "fletcherdoescrime.com", true }, { "fletchmusic.tk", true }, + { "fletchto99.com", true }, { "fletesymudanzasbaratas.com", true }, { "flets-ms.com", true }, { "fleurdelune.it", true }, @@ -47259,12 +54878,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fleursdesoleil.fr", false }, { "fleursdujour.ph", true }, { "fleuryfleury.com", true }, + { "flevoland.nl", true }, { "flex-one.fr", true }, + { "flex1solutions.com", true }, + { "flexalert.org", true }, { "flexapplications.se", true }, - { "flexbox.cloud", true }, { "flexbpo.com.br", true }, + { "flexcube.ch", true }, { "flexdesign.fr", true }, { "flexdrukker.nl", true }, + { "flexforcemonkey.com", true }, + { "flexgs.ca", true }, + { "flexgs.net", true }, + { "flexhyp.de", true }, { "flexi-dance.pl", true }, { "flexiblenetflow.com", true }, { "flexibsd.com", true }, @@ -47272,23 +54898,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flexicurity.tk", true }, { "fleximus.org", false }, { "flexingpro.com", true }, + { "flexinsurance.com.au", true }, { "flexinvesting.fi", false }, { "flexitanq.es", false }, { "flexman.tk", true }, { "flexmedia.tk", true }, { "flexopus.com", true }, { "flexphonesest.ga", true }, + { "flexpoint.com.br", true }, { "flexport.com", true }, { "flexsuplementos.com.br", true }, + { "flextrades.com", true }, { "flextribly.xyz", true }, - { "flexussolucoes.com.br", true }, + { "flextudo.com", true }, + { "flexundfix.de", true }, { "flexve.com", true }, { "flfl.de", true }, + { "flgaming.gov", true }, { "flhealthcharts.gov", true }, { "fliacuello.com.ar", true }, { "flibanserina.com", true }, { "flicerdowneh.cf", true }, + { "flickcritter.com", true }, + { "flickdirect.com", true }, { "flicke.red", true }, + { "flickingercenter.com", true }, { "flickor.tk", true }, { "flicks2click.com", true }, { "flie.co.jp", true }, @@ -47301,13 +54935,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flightdiary.ga", true }, { "flightdiary.gq", true }, { "flightjackets.tk", true }, - { "flightscarhire.com", true }, + { "flightrights.gov", true }, { "flightschoolbooking.com", true }, { "flightschoolcandidates.gov", true }, - { "flightschoolusa.com", true }, - { "flightstoheathrow.com", true }, - { "flightti.com", true }, - { "flightticketsto.com", true }, + { "flightschoolxxi.com", true }, { "flightzero.cf", true }, { "fliino.com", true }, { "fliino.eu", true }, @@ -47319,22 +54950,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flinch.io", true }, { "fling.dating", true }, { "flingflong.com", true }, - { "flinkthink.ch", true }, { "flinny.org", true }, { "flintstones.tk", true }, { "flip-flop.tk", true }, { "flip.kim", true }, { "flip.lease", true }, + { "flipflop.rs", true }, { "flipin.ga", true }, { "flipmusic.tk", true }, { "flipneus.net", true }, + { "flipnhotdeals.com", true }, { "flipos.be", false }, { "flipperkast.tk", true }, + { "flippers-leuven.be", true }, { "flipphotography.ga", true }, { "flipping.land", false }, { "flipsidevr.com", true }, + { "flipsnack.com", true }, { "fliptable.org", true }, { "flipthebrain.com", true }, + { "flipthescripts.org", true }, { "flipweb.tk", true }, { "flirt-norden.de", true }, { "flirtbox.tk", true }, @@ -47346,21 +54981,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flirtlu.org", true }, { "flirtportalcheck24.de", true }, { "flirty.tk", true }, + { "flissinger.com", true }, { "flixcheck.com", true }, { "flixcheck.de", true }, { "flixcost.com", true }, + { "flixed.io", true }, { "flixflex.tk", true }, - { "flixhaven.net", true }, + { "flixone.com", true }, { "flixpatrol.com", true }, { "flixports.com", true }, { "flixstats.com", true }, + { "flmedicaidmanagedcare.com", true }, { "floart.tk", true }, + { "floatapp.com", true }, { "floatationlocations.com", true }, { "floaternet.com", true }, { "floatifnghotel.cf", true }, { "floatifnghotel.ga", true }, { "floatifnghotel.tk", true }, - { "floating-holidays.co.uk", true }, { "flockbox.club", true }, { "flocktofedora.org", true }, { "floersheimer-openair.de", true }, @@ -47387,7 +55025,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floodguypro.com", true }, { "floodheroessaltlakecity.com", true }, { "floodsmart.gov", true }, - { "floofie.org", true }, { "floogulinc.com", true }, { "flooood.tk", true }, { "floor3.co.uk", true }, @@ -47400,39 +55037,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floors4lessbay.com", true }, { "floort.net", true }, { "floosak.co", true }, + { "flooz.trade", false }, { "flop.tk", true }, + { "floppa.com.br", true }, { "floppomoppo.ml", true }, { "floppy.tk", true }, - { "floqast.com", true }, { "flora-nova.tk", true }, { "floraclick.net", true }, { "florademurcia.tk", true }, { "floraexpress.it", true }, { "florafaunafavourites.co.uk", true }, { "floragarden.tk", true }, + { "florahospitality.com", true }, { "floralin.se", true }, { "floralworkshopsers.ga", true }, + { "floranext.com", true }, + { "florante.com", true }, { "florasite.tk", true }, { "florausa.net", false }, + { "floravan.com", true }, { "floravino.de", true }, { "floreg.com", true }, { "florencecountywi.gov", true }, + { "florenceutilitieswi.gov", true }, { "florencewi.gov", true }, { "florenciaextrema.tk", true }, { "florenciasabio.com", true }, { "florent-tatard.fr", true }, { "floresastrid.tk", true }, + { "floresdocesfloricultura.com.br", true }, + { "floresgioiellishop.com", true }, { "floresvilleedc.org", false }, { "floria.online", true }, { "florian-bachelet.fr", true }, { "florian-knorn.com", true }, { "florian-thie.de", true }, { "florian2833z.de", true }, + { "florianartisans.com", true }, { "florianbecker.it", true }, { "florianbouchet.fr", true }, - { "florianimdahl.de", false }, { "floriankarmen.com", true }, - { "floriankeller.de", false }, { "florianmitrea.uk", true }, { "florianschmitt.ca", true }, { "florianschmitt.tech", true }, @@ -47441,9 +55085,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floriantanner.ch", true }, { "florianysantiago.com", true }, { "florida-estetica.com", true }, + { "florida-immigration.com", true }, { "florida-online.tk", true }, { "florida-prep.org", true }, { "floridaagriculture.gov", true }, + { "floridabrightfutures.gov", true }, { "floridaconsumerhelp.gov", true }, { "floridados.gov", true }, { "floridaethics.gov", true }, @@ -47451,9 +55097,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floridafieros.org", true }, { "floridafx.gov", true }, { "floridahealthcareconnections.gov", true }, + { "floridaimigracao.com", true }, { "floridaledtruck.com", true }, + { "floridalegion.org", true }, { "floridaplasticsurgery.com", true }, { "floridapowermanagement.com", true }, + { "floridarrc.com", true }, { "floridasexhealth.com", true }, { "floridastadium.ga", true }, { "floridastadiumers.ga", true }, @@ -47462,26 +55111,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "floridastatefair.net", true }, { "floridastatefairag.com", true }, { "floridastatefairauthority.com", true }, + { "floridasturnpike.com", true }, { "floridaweightlossdoctors.com", true }, { "floriebriand.com", true }, { "floriimorii.tk", true }, { "floris.tk", true }, + { "florisbrunet.com", true }, { "florismouwen.com", true }, { "florismouwen.nl", true }, - { "floristik-online.com", true }, + { "floristavirtual.com.br", true }, { "florisvdk.net", true }, { "floriswesterman.nl", true }, { "florix.tk", true }, { "florlola.com", true }, - { "flormar.com", true }, - { "flormidabel.nl", true }, + { "florp.social", true }, { "flortal.de", true }, { "flosch.at", false }, { "floseed.fr", true }, { "flossexanten.de", true }, + { "flosuretechnologies.com", true }, { "floth.at", true }, { "flothost.com", true }, - { "flourishdx.com", true }, + { "flothow.com", true }, { "flourishgrazingevents.co.uk", true }, { "flourishtogether.com", true }, { "flow-serv.com", true }, @@ -47499,21 +55150,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flowercityflavor.com", true }, { "flowerdelivery.tk", true }, { "flowerdesign.tk", true }, - { "flowerpassword.com", true }, + { "flowerpassword.com", false }, { "flowerpictures.tk", true }, { "flowers-city.com.ua", false }, { "flowers-shops.tk", true }, { "flowers.sumy.ua", true }, + { "flowers2moscow.com", true }, { "flowersandplantsco.com", true }, { "flowersbylegacy.com", true }, { "flowerscaffe.com", true }, + { "flowersforwedding.com", true }, { "flowersquito.com", true }, { "flowerstateest.ga", true }, + { "flowerstopetersburg.com", true }, + { "flowerstoukraine.com", true }, + { "flowerstver.ru", true }, + { "flowertuccipornstar.com", true }, + { "flowerwholesale.com", true }, { "flowfest.com", true }, + { "flowgate.net", true }, { "flowgo.tk", true }, + { "flowhcm.com", true }, { "flowheater.net", true }, { "flowhopper.com", true }, + { "flowhub.com", true }, { "flowinformer.com", true }, + { "flowingdata.com", true }, { "flowinity.com", true }, { "flowinity.eu.org", true }, { "flowinity.host", true }, @@ -47523,42 +55185,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flowmagazine.com", true }, { "flowmagazine.nl", true }, { "flownonfiction.com", true }, - { "flowpro.info", true }, + { "flownty.com", true }, { "flowreplicator.com", true }, { "flowscale.com", true }, { "flowstars.tk", true }, + { "flowstateyoga.com.au", true }, { "flowstudios.com", true }, { "flowtex.tk", true }, - { "flowyapp-dev.azurewebsites.net", true }, { "flox.io", true }, { "floydcountyga.gov", true }, + { "floydcova.gov", true }, + { "floydsofleadville.com", true }, + { "floyt.com", true }, { "flp-pushkar.info", true }, + { "flpd.gov", true }, { "flpd6.gov", true }, { "flra.gov", true }, { "flsa6.gov", true }, { "flsbanners.com", true }, { "flslawyer.com", true }, { "flst.link", true }, + { "flstaging.cloud", true }, { "flubio.de", true }, { "flubiostudios.com", true }, { "flubiostudios.de", true }, - { "flucky.xyz", true }, { "fluconazole.gq", true }, - { "fluenciamodas.com.br", true }, { "fluencytech.com", true }, { "fluessiggas.de", true }, { "fluff.im", true }, + { "fluffy.tools", true }, { "fluffycat.ga", true }, { "fluffycloud.de", true }, { "fluggesellschaft.de", true }, { "fluglektuere.com", true }, { "flugplatz-edvc.de", true }, { "flugplatzmanager.de", true }, + { "flugrueckerstattung.de", true }, { "flugsimulatorfrankfurt.com", true }, + { "fluidattacks.co", true }, { "fluidattacks.com", true }, { "fluidbb.co.uk", true }, { "fluidpicturesinc.com", true }, { "fluids.ac.uk", true }, + { "fluidsignal.com", true }, { "fluig.com", true }, { "fluitbeurt.nl", true }, { "flukestar.tk", true }, @@ -47578,14 +55247,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fluxforge.com", true }, { "fluxi.fi", true }, { "fluxnet.tk", true }, + { "fluxo.space", true }, { "fluxoid.com", true }, + { "flvs.net", true }, { "flvyingeagle.ga", true }, - { "flwrightwichita.org", true }, { "flws.cl", true }, { "fly", true }, { "fly-fjends.dk", true }, { "fly.moe", true }, - { "flyabe.com", true }, { "flyantvirtual.tk", true }, { "flyavantar.com", true }, { "flyawayart.tk", true }, @@ -47595,14 +55264,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flyboarder.tk", true }, { "flyboyfpv.com", true }, { "flycheaps.com", true }, - { "flycoo.net", false }, { "flydoc.org", true }, { "flyeagle.com.br", true }, { "flyer.tools", true }, { "flyerdatabase.tk", true }, { "flyfifer.co.uk", true }, + { "flyforpoints.com", true }, + { "flyforsinkelse.dk", true }, + { "flyforsinkelser.no", true }, { "flygexpo.tk", true }, + { "flygforsening.se", true }, { "flygon.pink", true }, + { "flygplanering.se", true }, { "flyhealthy.gov", true }, { "flying-angels.tk", true }, { "flying-dudes.de", true }, @@ -47631,12 +55304,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flynowpaylater.com", true }, { "flyp.me", true }, { "flypenge.dk", true }, + { "flyplay.com", true }, + { "flyprescott.com", true }, { "flypuntoazul.gq", true }, - { "flyseasons.com", true }, { "flyserver.co.il", true }, { "flyspace.ga", true }, { "flyspace.ml", true }, - { "flyss.net", true }, { "flyssh.net", true }, { "flyswoop.com", true }, { "flyt.online", true }, @@ -47645,8 +55318,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "flytoadventures.com", true }, { "flytrap.in", true }, { "flyupture.com", true }, + { "flywareagle.com", true }, { "flywind.ml", true }, { "flyxll.com", true }, + { "flyzold.com", true }, { "flyzone.tk", true }, { "flyzoomattzir.com", true }, { "fm-digitize.de", true }, @@ -47655,10 +55330,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fm.ie", true }, { "fmamfg.org", true }, { "fmanet.org", true }, + { "fmbfirefl.gov", true }, { "fmbilder.se", true }, + { "fmbonline.com", true }, { "fmc.gov", true }, + { "fmc.hk", true }, { "fmclarity.com", true }, { "fmcs.gov", true }, + { "fmcsa.fr", true }, { "fmfp.eu", true }, { "fmi.gov", true }, { "fminsight.net", true }, @@ -47672,13 +55351,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fmodoux.biz", false }, { "fmorales.com", false }, { "fmorales.com.ni", false }, + { "fmpilot2.com", true }, { "fmportal.biz", true }, { "fmpuertomadero.cf", true }, { "fmsforestry.com", true }, + { "fmslovakia.com", true }, { "fmstr.ml", false }, { "fmussatmd.com", true }, + { "fnacdarty.com", true }, { "fnbava.com", true }, { "fnbnokomis.com", true }, + { "fnbofks.com", true }, { "fnbot.shop", true }, { "fnckfashion.com", true }, { "fndho.ca", true }, @@ -47687,14 +55370,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fnerk.org", true }, { "fnet.gr", true }, { "fnews.tk", true }, - { "fnh-expert.net", true }, + { "fnfmods.net", true }, { "fnka.de", true }, { "fnkr.net", true }, + { "fnlcontent.nl", true }, + { "fno.cz", true }, { "fnof.ch", true }, { "fnordserver.eu", true }, { "fnpro.eu", true }, + { "fnpvenues.com", true }, { "fnrs.nl", true }, { "fnscatania.tk", true }, + { "fnz.com", true }, { "foair.me", true }, { "foairbus.fr", false }, { "foairbussas.fr", false }, @@ -47702,26 +55389,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foard.biz", true }, { "foard.us", true }, { "fob-china-moscow.ru", true }, + { "fob-china.ru", true }, + { "fob-india.ru", true }, + { "fob-iran.ru", true }, { "focalforest.com", true }, { "focalpoint.tk", true }, - { "focalpointvr.com", true }, { "focanamoda.com.br", true }, { "focanocliente.com.br", true }, + { "focored.com", true }, + { "focus2career.com", true }, + { "focus2move.com", true }, + { "focusbet-api.com", true }, { "focusbet.cc", true }, - { "focusbet.club", true }, { "focusbet.io", true }, - { "focusbet.space", true }, - { "focusbet777.top", true }, - { "focusbetaffiliates.com", true }, + { "focuscomic.com", true }, { "focusdemolition.com.au", true }, { "focusgroup.tk", true }, { "focushm.com", true }, { "focusministries1.org", true }, + { "focusnews.in", true }, { "focusoptimization.com", true }, { "focusproductions.tk", true }, { "focustec.tk", true }, + { "focusti.com.br", true }, { "focustuningclub.tk", true }, { "fodder.ga", true }, + { "foehl.de", true }, { "foej-aktiv.de", true }, { "foej.net", true }, { "foepwned.com", true }, @@ -47734,14 +55427,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fogu.com", true }, { "foguest.com.br", true }, { "fogway.net", true }, - { "foia.gov", true }, + { "foi.se", true }, { "foiaonline.gov", true }, + { "foilhat.tk", true }, { "foiremobile.com", true }, { "foixet.com", true }, { "fojing.com", true }, { "fojt.cz", true }, { "fojtova.cz", true }, { "fojtovi.cz", true }, + { "fok.nl", true }, { "fokan.be", true }, { "fokan.ch", true }, { "fokep.no", true }, @@ -47751,11 +55446,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "folar.ga", true }, { "folclore.tk", true }, { "foldcle.com", true }, + { "foldertips.com", true }, { "foldnfly.com", true }, - { "foleon.com", true }, { "folf.codes", true }, - { "folianti.com", true }, - { "foliegrzewcze.pl", true }, + { "foliencenter24.com", true }, { "folife.nl", true }, { "folio.no", true }, { "foliumfinance.com", true }, @@ -47764,45 +55458,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "folk.tk", true }, { "folkdance.tk", true }, { "folkfests.org", true }, + { "folkmusicworld.com", true }, + { "folkofolk.se", true }, { "folkperu.tk", true }, { "folkrace.tk", true }, { "folktalerecords.tk", true }, { "folktellers.tk", true }, + { "folkweb.net", true }, { "follandviolins.com", true }, { "follow-the-leader.tk", true }, { "followboost.fr", true }, { "follower98.ir", true }, - { "followersya.com", false }, + { "followgrown.com", true }, { "followlearning.com", true }, { "followme.com", true }, { "followmystaff.com", true }, + { "followpharma.com", true }, { "followthatpage.com", true }, + { "followtheevidence.me", true }, { "followthepin.com", true }, { "follygardens.com", true }, { "folszyb.pl", true }, { "foluomeng.net", true }, { "folwark.krakow.pl", true }, + { "folwia.pl", true }, { "foma.ru", true }, { "foma.tk", true }, { "fomo.af", true }, { "fomo.exposed", true }, { "fomo.trading", true }, + { "fomobremen.info", true }, { "fomopop.com", true }, - { "fonamperu.org.pe", true }, + { "foncorbeta.com", true }, + { "fondation-afnic.fr", true }, { "fondation-vinci.com", true }, + { "fondationdesterritoires.org", true }, + { "fondationgus.com", true }, { "fondationo2.ch", true }, { "fondationwiggli.ch", true }, { "fondbaikal.ml", true }, { "fonds-dieter.be", true }, { "fondy.ua", true }, + { "fondzee.cz", true }, { "foneapk.com", true }, - { "foneo.com", true }, { "fonga.ch", true }, - { "fongsoul.com", true }, { "fonix.tk", true }, { "fonline.tk", true }, { "fono.jp", false }, - { "fonolo.com", true }, { "fonrouge.tk", true }, { "fonseguin.ca", true }, { "fontainebleau.tk", true }, @@ -47813,18 +55515,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fontela.es", true }, { "fontnegar.ir", true }, { "fontocean.com", true }, - { "fonts2u.com", true }, + { "fontplus.jp", true }, { "fonts4free.net", true }, + { "fontsinuse.com", true }, + { "fontstand.com", true }, { "fonzone.it", false }, { "foo", true }, { "foo.fo", true }, { "foo.hamburg", true }, { "foochia.com", true }, + { "food-animall.ro", true }, { "food4healthybones.com", true }, + { "food4me.in", true }, { "foodadaptive.ga", true }, { "foodafter.ga", true }, { "foodagenda.ga", true }, { "foodanchor.ga", true }, + { "foodandseeds.com", true }, { "foodarrow.ga", true }, { "foodatlantic.ga", true }, { "foodattitude.ch", false }, @@ -47857,6 +55564,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodculinaryusa.tk", true }, { "foodcupcake.ga", true }, { "foodcurious.ga", true }, + { "fooddeliverybrands.com", true }, { "fooddeliverypartners.cz", true }, { "fooddeliverypartners.online", true }, { "fooddivine.ga", true }, @@ -47872,6 +55580,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodexcel.ga", true }, { "foodfalcon.ga", true }, { "foodfeature.ga", true }, + { "foodfirefriends.com", true }, { "foodflower.ga", true }, { "foodfriek.nl", true }, { "foodgecko.ga", true }, @@ -47890,7 +55599,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodintergrity.ga", true }, { "foodiron.ga", true }, { "foodiron.tk", true }, - { "foodjaguar.com", true }, + { "foodison.jp", true }, { "foodjoker.ga", true }, { "foodkayak.ga", true }, { "foodlast.ga", true }, @@ -47913,11 +55622,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodnature.ga", true }, { "foodnature.tk", true }, { "foodnight.ga", true }, + { "foodo.cz", true }, { "foodoffline.ga", true }, { "foodomega.ga", true }, { "foodonbook.com", true }, { "foodoneday.ga", true }, - { "foodontour.nl", true }, { "foodopplis.ga", true }, { "foodoriginal.ga", true }, { "foodother.ga", true }, @@ -47943,11 +55652,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foods.pe", true }, { "foodsafety.gov", true }, { "foodsafetyjobs.gov", true }, + { "foodsafetyworkinggroup.gov", true }, { "foodsavers.gent", true }, { "foodsaversgent.be", true }, { "foodsedona.ga", true }, { "foodseurope.com", true }, { "foodshuffle.ga", true }, + { "foodsided.com", true }, { "foodsignature.ga", true }, { "foodsilk.ga", true }, { "foodsleuth.ga", true }, @@ -47956,6 +55667,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodsoul.pro", true }, { "foodsparkle.ga", true }, { "foodsplash.ga", true }, + { "foodspring.co.uk", true }, + { "foodspring.de", true }, + { "foodspring.es", true }, + { "foodspring.fr", true }, + { "foodspring.it", true }, { "foodsreborn.com", true }, { "foodsunflower.ga", true }, { "foodsuperhero.ga", true }, @@ -47982,22 +55698,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foodyankee.ga", true }, { "foodylab.it", true }, { "foodzpace.com", true }, + { "foogle.cf", true }, { "fooishbar.org", false }, + { "fool.im", true }, { "fooladi.tk", true }, { "foolip.org", true }, { "foolproofcomics.tk", true }, { "foonly.fi", true }, { "foorack.com", true }, { "fooster.io", true }, + { "foot-direct.com", true }, { "foot.fr", true }, { "foot2rue.tk", true }, + { "foot4live.com", true }, { "footasse.com", true }, { "football-news.gq", true }, { "football-world.tk", true }, - { "football.de", true }, { "footballcelebrationsers.ga", true }, + { "footballexpress.co.uk", true }, { "footballforum.de", true }, + { "footballfoundation.org.uk", true }, { "footballmessi.tk", true }, + { "footballnews.net", true }, { "footballrussia.cf", true }, { "footballscores.ga", true }, { "footballsrit.tk", true }, @@ -48006,18 +55728,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "footbolki.ml", true }, { "footchronique.tk", true }, { "footdoctorpodiatristnyc.com", true }, - { "footlettuce.xyz", true }, + { "footloose.co.uk", true }, { "footmercato.net", true }, + { "footparisien.com", true }, + { "footsteps.lk", true }, + { "footstepsinthegambia.com", true }, + { "foottube.com", true }, + { "footvillewi.gov", true }, { "footwear-catalogue.tk", true }, { "footytalk.tk", true }, { "for-testing.tk", true }, { "for.care", true }, { "forabrokenrobot.tk", true }, + { "forallgifts.com", true }, { "forat.tk", true }, { "foray-jero.me", true }, { "foraz.tk", true }, - { "forbesmarshall.com", true }, + { "forberedt.no", true }, + { "forbes.com", true }, + { "forbeser.com", true }, { "forbiddenhistory.info", true }, + { "forbiddenshelf.com", true }, { "forbole.com", true }, { "forbusiness.ca", true }, { "forcamp.ga", true }, @@ -48049,21 +55780,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fordlibrarymuseum.gov", true }, { "fordpartsgiant.com", true }, { "fordpartsprime.com", true }, + { "fordsbranch.church", true }, + { "fordservicetraining.com", true }, { "fordshop.by", false }, { "fordtrac.com.br", true }, { "foreammatti.fi", true }, { "forecastapp.net", true }, { "forecastcity.com", true }, - { "foreclosureattorneyhouston.com", true }, { "foreclosurecitiesers.ga", true }, { "foredata.fi", true }, + { "forefront.dental", true }, { "forefrontcloud.com", true }, { "foreign-language-colleges.com", true }, + { "foreignaffairsmotorsports.com", true }, + { "foreignassistance.gov", true }, { "foreignpharmacydirectory.com", true }, - { "foreignxchange.com.au", true }, { "foremail.tk", true }, + { "foreningssparbanken.se", true }, { "forenschmiede.tk", true }, { "forensic-system.com", false }, + { "forensicpsychologyedu.org", true }, + { "forensicpsychologyonline.com", true }, { "forensicsciencecentral.tk", true }, { "forensicsinfo.ga", true }, { "forensicsinfoest.ga", true }, @@ -48071,75 +55808,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forers.com", true }, { "foresdon.jp", true }, { "foresightbusinessservices.co.uk", true }, + { "foresite.com", true }, + { "forest-cl.com", true }, { "forest-remote-control.com", true }, { "forest-soft.xyz", true }, { "forestairllc.com", true }, { "forestcermegresik.com", true }, + { "forestcountypa.gov", true }, + { "forestdeclaration.org", true }, + { "forestersfriendlysociety.co.uk", true }, { "foresthaven.tk", true }, { "forestparkga.gov", true }, { "forestraven.net", true }, + { "forestsprings.com.au", true }, + { "forestsystems.com", true }, { "foresttownrcwi.gov", true }, + { "forestvets.com", true }, { "forever.gq", true }, { "foreverbreak.com", true }, - { "forevermuslim.in", true }, { "foreverpontiac.com", true }, { "foreverreem.com", true }, { "foreverssl.com", true }, - { "foreversummertime.com", true }, { "forevertoday.nl", true }, { "foreverydream.com", true }, { "forewordreviews.com", true }, { "forex-arabia.tk", true }, - { "forex-giants.com", true }, - { "forex-site.com", true }, { "forex-trading-tutorial.tk", true }, { "forex-up.cf", true }, { "forex.ee", true }, - { "forexarby.com", true }, { "forexchef.de", true }, { "forexcity.cf", true }, + { "forexclubfree.com", true }, { "forexclubteam.com", true }, { "forexcomreview.co", true }, { "forexee.com", true }, { "forexexchange.tk", true }, { "forexinthai.com", false }, + { "forexlive.com", true }, { "forexmarketsm.tk", true }, { "forexnew.org", true }, - { "forexox.com", true }, { "forexpattern.tk", true }, { "forexplay.com", true }, - { "forexsignals7.com", true }, { "forextickler.com", true }, - { "forextraders.com", true }, { "forexwine.com", true }, { "forexworld.cf", true }, { "forfeit.ga", true }, { "forfeiture.gov", true }, { "forfortcollins.com", true }, { "forfunssake.co.uk", true }, - { "forgeary.com", true }, + { "forgejo.cloud", true }, + { "forgemedia.io", true }, + { "forgetfulmomma.com", true }, { "forgetme.ga", true }, { "forgetme.gq", true }, { "forgetme.tk", true }, { "forgetmenot.care", true }, { "forgetwp.com", true }, { "forgotten-legends.org", true }, + { "forgottenho.me", true }, { "forgottenrealms.tk", true }, - { "forgottenroles.com", true }, { "forgottenworld.it", true }, + { "forhealth.org", true }, { "forhims.co.uk", true }, + { "forhosting.nl", true }, + { "forix.agency", true }, + { "forixcommerce.com", true }, { "forixecommerce.com", true }, + { "forixseo.com", true }, { "fork-portal.ml", true }, { "forkfeeds.com", true }, { "forkknifeswoon.com", true }, { "forklift.name.tr", true }, + { "forklifttire.com", true }, + { "forksales.com", true }, { "forkurd.ml", true }, { "forlitoday.it", true }, + { "form100.de", true }, { "formacao.org.br", true }, { "formador.tk", true }, + { "formafantasma.com", true }, { "formalgrammar.tk", true }, - { "formalist.cz", true }, - { "formality.one", true }, + { "formalistgallery.com", true }, { "forman.store", true }, { "formand.ru", true }, { "formapi.io", true }, @@ -48148,41 +55897,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "format.ua", true }, { "formation-assureur.com", true }, { "formation-colmar.tk", true }, + { "formation-commissaire-justice.fr", true }, { "formation-cqp-ssiap-paris.fr", true }, { "formation-hauteur.com", true }, { "formation-iade.tk", true }, - { "formation-mac.ch", false }, + { "formation-intergeneration.com", true }, + { "formation-russe-paris.com", true }, { "formation.ai", true }, - { "formations-maritimes.fr", true }, - { "formationseeker.com", true }, + { "formation.tech", true }, + { "formationaumagnetisme.fr", true }, { "formatmydoc.co.nz", true }, { "formblob.com", true }, { "formforger.com", true }, { "formhub.ru", true }, { "formi9.com", true }, + { "formidium.com", true }, { "formingequipment.tk", true }, + { "formini.dz", true }, { "formio.nl", true }, { "formodernkids.com", true }, { "formommiesbymommy.com", true }, { "formopinionest.ga", true }, - { "formosus.de", false }, { "formotherrussia.tk", true }, { "forms.gov", true }, { "formsbyair.com", true }, + { "formsite.com", true }, { "formsmarts.com", true }, { "formsmarts.net", true }, + { "formue.com", true }, + { "formula-busines.ru", true }, { "formula-ot.ru", true }, { "formula.cf", true }, { "formulacionquimica.com", true }, { "formulastudent.de", true }, { "formulaveevictoria.com.au", true }, { "formup.com.pl", true }, - { "formvibes.com", true }, + { "formworkcontractorssydney.com", true }, { "fornarisandres.com", true }, { "fornata.it", true }, + { "fornaxmall.com", true }, + { "fornoreason.net.au", true }, { "foro-coopfuture.tk", true }, { "foro.io", false }, - { "foro.red", true }, { "foroaranda.com", true }, { "forocachacero.tk", true }, { "forocbmollet.tk", true }, @@ -48201,6 +55957,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forowarhammer.tk", true }, { "forrestheller.com", true }, { "forrestwalkbarbershop.com.au", true }, + { "forrettabarinn.is", true }, { "forro.berlin", true }, { "forro.info", true }, { "forsaken.tk", true }, @@ -48213,13 +55970,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forsat.ga", true }, { "forsbenin.org", true }, { "forschbach-janssen.de", true }, - { "forself.me", true }, { "forsi.xyz", false }, { "forskolen.dk", true }, { "forskolin.gq", true }, { "forstbetrieb-hennecke.de", true }, { "forstprodukte.de", true }, { "forsure.tk", true }, + { "forsvarsmakten.se", true }, + { "forsyth.cc", true }, + { "forsythco.com", true }, { "forsythcountync.gov", true }, { "forsythmo.gov", true }, { "forsyththeatre.com", true }, @@ -48228,8 +55987,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortatkinsonia.gov", true }, { "fortatkinsonwi.gov", true }, { "fortawesome.org", true }, - { "fortbertholddiabetes.com", true }, - { "fortcollinsathletefactory.com", true }, { "fortcommunity.com", true }, { "fortdeposital.gov", true }, { "fortdodgeradio.com", true }, @@ -48238,10 +55995,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortepiano.tk", true }, { "fortesanshop.it", true }, { "forthenrycustomknives.com", true }, - { "forthetoys.com", true }, - { "forthewin.rocks", true }, { "forthvalleykeswick.co.uk", true }, { "fortifydiy.com", true }, + { "fortigate.es", true }, { "fortipartner.co.uk", true }, { "fortipartner.com", true }, { "fortipartner.dk", true }, @@ -48251,10 +56007,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortipartner.se", true }, { "fortipartner.uk", true }, { "fortisadhesives.com.au", true }, + { "fortknoxster.com", true }, { "fortlauderdaleaircharter.com", true }, { "fortmatic.com", true }, { "fortnet.online", true }, + { "fortnightlyofeugene.org", true }, { "fortnite.ca", true }, + { "fortnitedb.com", true }, { "fortnitemagic.ga", true }, { "fortoglethorpega.gov", true }, { "fortress.no", true }, @@ -48262,12 +56021,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortresslinux.com", true }, { "fortresslinux.nl", true }, { "fortresslinux.org", true }, + { "fortressofsolitude.co.za", true }, + { "fortressone.net", true }, { "fortricks.in", true }, - { "fortsecure.com.br", true }, { "fortuna-apotheke-lahnstein.de", true }, { "fortuna-loessnitz.de", true }, { "fortuna-s.com", true }, - { "fortuna.co.ua", true }, { "fortunabuilders.tk", true }, { "fortunacigarettes.tk", true }, { "fortunahamburg.tk", true }, @@ -48277,9 +56036,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fortunenames.ga", true }, { "fortunenamesers.ga", true }, { "fortunenamesest.ga", true }, + { "fortunetireusa.com", true }, { "fortwinn.gov", true }, { "forty-two.ml", true }, - { "forty-two.nl", true }, { "forty.sh", true }, { "forty8creates.com", true }, { "fortygordy.com", true }, @@ -48291,6 +56050,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forum-expert.tk", true }, { "forum-finansowo.pl", true }, { "forum-gilee.cf", true }, + { "forum-goszakaz.ru", true }, { "forum-kinozal-tv.appspot.com", true }, { "forum-mercury.tk", true }, { "forum-noginska.tk", true }, @@ -48300,17 +56060,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forum-washington.tk", true }, { "forum24.ml", true }, { "forumblanes.tk", true }, + { "forumblockchain.com.br", true }, { "forumcarriocity.tk", true }, { "forumchiase.com", true }, + { "forumcondominio.it", true }, + { "forumconstruire.com", true }, { "forumdabeleza.com.br", true }, + { "forumderelacionamento.com.br", true }, + { "forumderschan.de", true }, { "forumdimo.fr", true }, - { "forumdimo.tv", true }, { "forumfeeers.ga", true }, { "forumfi.com", true }, { "forumhsbm.tk", true }, + { "forumhub.org", true }, { "forumirc.net", true }, { "forumistudentore.tk", true }, { "forumix.tk", true }, + { "forummobile.com.br", true }, { "forumoff.com", true }, { "forumofld.in", true }, { "forumotion.cf", true }, @@ -48320,23 +56086,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "forumrowerowe.org", true }, { "forums4everyone.tk", true }, { "forumsampdoria.tk", true }, + { "forumsaudedigital.com.br", true }, { "forumsearch.tk", true }, + { "forumsig.net", true }, { "forumsrussia.ga", true }, { "forumstandaardisatie.nl", true }, { "forumtruthest.ga", true }, + { "forumtv.pro", true }, { "forumvardbyggnad.se", true }, { "forve.cf", true }, { "forvisualdesign.com", false }, { "forward-fly-fishing.ch", false }, { "forward-proxy.email", true }, { "forward.com", false }, + { "forward.lc", true }, + { "forwardadvantage.com", true }, { "forwardemail.net", true }, { "forwardfever.tk", true }, { "forwardfinancingest.ga", true }, + { "forwardkredit.de", true }, { "forwardtogether.org", true }, + { "foryoumer.com", true }, { "foryourhealthybody.com", true }, { "forza-milan.tk", true }, - { "forzamotorsport.net", true }, { "forzasette.tk", true }, { "fos-apps.org", true }, { "fos-games.org", true }, @@ -48344,15 +56116,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foscamcanada.com", true }, { "fosdem.org", true }, { "foselectro.ru", true }, - { "fosgreece.com", true }, { "foshanshequ.com", false }, - { "foss.wtf", true }, { "fossagarrafoni.tk", true }, { "fossbots.org", true }, { "fossboxen.com", true }, { "fossboxen.net", true }, { "fossboxen.org", true }, - { "fossbytes.com", true }, + { "fosseseptique.be", true }, { "fossewayflowers.co.uk", true }, { "fossewayflowers.com", true }, { "fossildlp.com", true }, @@ -48362,7 +56132,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fosterwiki.com", true }, { "fotbal-dubina.tk", true }, { "fotbalclubcaracal.tk", true }, - { "fotella.com", true }, { "foter.tk", true }, { "fotikpro.ru", true }, { "fotklinikenvarnamo.se", true }, @@ -48378,11 +56147,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foto-verslui.lt", true }, { "foto-znakomstva.ml", true }, { "foto.by", true }, + { "foto.com", true }, { "fotoallerlei.com", true }, + { "fotoatis.biz", true }, + { "fotoballon.com", true }, { "fotoblog.nrw", true }, { "fotobodyart.nl", true }, - { "fotoboxvysocina.cz", true }, + { "fotobrinke.de", true }, { "fotochip.tk", true }, + { "fotocoach.pl", true }, { "fotocopiatrici.roma.it", true }, { "fotofaerie.net", true }, { "fotofast.tk", true }, @@ -48391,6 +56164,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fotofon.tk", true }, { "fotofreunde-telegram.eu", true }, { "fotograf-mario.de", true }, + { "fotograf-website.de", true }, { "fotografechristha.nl", true }, { "fotografessa.pl", true }, { "fotografiadellalucerossa.com", true }, @@ -48398,9 +56172,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fotografies.tk", true }, { "fotografija.tk", true }, { "fotografoivanalmeida.com.br", true }, + { "fotografy-help.de", true }, { "fotohiking.com", true }, - { "fotojenico.com", true }, - { "fotokomorkomania.pl", true }, + { "fotohome.dk", true }, { "fotokorner.com", true }, { "fotokurskalmar.se", true }, { "fotolectura.tk", true }, @@ -48411,16 +56185,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fotomonza.com", true }, { "fotontechnik.pl", true }, { "fotonza.ru", true }, + { "fotoobraznaplatne.sk", true }, { "fotopalacedigitalstudio.tk", true }, - { "fotopremium.cz", true }, { "fotopro.tk", true }, { "fotorecull.tk", true }, { "fotostravestisbr.com", true }, + { "fotostrobo.ch", true }, { "fotostudio-leitner.com", true }, { "fotostudio-leitner.de", true }, { "fotostudio-schweiz.ch", true }, { "fotostudiobasic.tk", true }, { "fotosubmarina.tk", true }, + { "fotoszkolenia.pl", true }, { "fototjansterkalmar.se", true }, { "fototutorial.tk", true }, { "fotovsibiri.ml", true }, @@ -48432,28 +56208,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fotp.com", true }, { "fotrino.com", true }, { "foudufafa.de", false }, + { "fougereettralala.fr", true }, { "fougner.co", true }, + { "foulabook.com", true }, { "found.com", true }, { "found.website", true }, + { "foundagrave.com", true }, { "foundationassure.com", true }, + { "foundationdevices.com", true }, { "foundationmaintenance.com", true }, + { "foundationmedicine.com", true }, + { "foundationprogramme.nhs.uk", true }, { "foundationrepairannarbor.com", false }, { "foundationrepairasheville.com", true }, { "foundationrepairbasementwaterproofingtn.com", true }, { "foundationrepairchicagoil.com", true }, - { "foundationrepairknoxvilletn.com", true }, { "foundationrepairnebraska.com", true }, { "foundationspecialisteast.com", true }, { "foundationspecialistmi.com", true }, + { "foundationsupplementstampa.com", true }, { "foundchurch.co.uk", true }, { "founded.ml", true }, { "founderinvestors.tk", true }, { "founderio.net", true }, { "foundland.com", true }, - { "foundmyself.com", true }, { "foundrehotels.com", true }, + { "foundries.io", true }, { "foundsounds.me", true }, { "fountainco.gov", true }, + { "fountainvalley.gov", true }, { "fountainvalleyseniorcare.us", true }, { "fourashesgolfcentre.uk", true }, { "fourbrothers.tk", true }, @@ -48469,25 +56252,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fourmies.fr", true }, { "fournarisopenday.com", true }, { "fournisseur-des-collectivites.com", true }, + { "fourpeaks.com", true }, { "fourscore.ga", true }, { "fourseasonsgrower.com", true }, { "foursight.io", false }, { "fourstrategy.de", true }, - { "fourwaysplumber24-7.co.za", true }, - { "fourwaysrubbleremovals.co.za", true }, { "fousekis.tk", true }, { "fousetmoney.tk", true }, + { "foutras.com", true }, { "foutrelis.com", true }, - { "fouwels.com", true }, { "fovndry.com", true }, + { "fowesolutions.net", true }, { "fowlmanor.tk", true }, { "fowlsmurf.net", true }, { "fowos.de", true }, { "fox-zulu.de", true }, { "fox.my", false }, + { "fox13now.com", true }, + { "fox17online.com", true }, + { "fox47news.com", true }, + { "fox4now.com", true }, { "foxandfish.be", true }, + { "foxart.com.tr", true }, { "foxbenjaminfox.com", true }, - { "foxbnc.co.uk", true }, { "foxbnc.uk", true }, { "foxcav.es", true }, { "foxcloud.tk", true }, @@ -48498,52 +56285,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "foxes.no", true }, { "foxesofleicester.com", true }, { "foxeworks.net", true }, + { "foxgirl.land", true }, + { "foxholehq.net", true }, { "foxing.club", true }, + { "foxite.me", true }, { "foxly.de", true }, { "foxmailer.ml", true }, { "foxmay.co.uk", true }, - { "foxmetrix.com", true }, { "foxo.blue", false }, { "foxontheinter.net", true }, { "foxpad.tk", true }, { "foxpointwi.gov", true }, { "foxquill.com", false }, - { "foxroy.com", true }, - { "foxsburg.xyz", true }, + { "foxroy.com", false }, { "foxscribbler.com", true }, { "foxstreetcomms.co.za", false }, { "foxstyle.gq", true }, { "foxtransportables.com.au", true }, + { "foxtravelnews.com", true }, { "foxtrials.com", true }, { "foxtrotcharlie.ovh", true }, { "foxtrotfm.tk", true }, + { "foxtwomodels.com", true }, + { "foxus.lt", true }, { "foxxylove.net", true }, - { "foxydaisy.love", true }, + { "foxycredit.com", true }, + { "foxygf.com", true }, { "foxyslut.com", true }, + { "foxytubes.com", true }, { "foyale.io", true }, { "foylelegal.com", true }, { "fozzie.co.uk", true }, { "fozzie.space", true }, - { "fp.systems", true }, { "fpaci.org", true }, { "fpalzira.es", true }, { "fpasca.com", true }, { "fpc.gov", true }, + { "fpcdn.io", true }, + { "fpds.gov", true }, { "fpersona.com", true }, + { "fpf.org", true }, { "fpgamania.com", true }, - { "fpgaretro.com", true }, + { "fpjscdn.net", true }, { "fpki.sh", true }, { "fpline.jp", true }, { "fpnet.tk", true }, + { "fpnpmcdn.net", true }, { "fppp.fr", true }, { "fprinnovaciones.es", true }, { "fprojects.lv", true }, + { "fps.ac.cn", true }, { "fps168.com", true }, { "fps73.ru", true }, { "fpsclasico.de", true }, { "fpsclasico.eu", true }, { "fpsclassico.com", true }, { "fpsjp.org", true }, + { "fpstest.org", true }, { "fpsturk.net", true }, { "fpsv.de", true }, { "fpt.icu", true }, @@ -48555,23 +56353,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fr.search.yahoo.com", false }, { "fr33tux.org", true }, { "fr3qradio.tk", true }, + { "fra.bg", true }, + { "fraai.agency", true }, { "fracasados.tk", true }, { "frack.nl", false }, { "fracreazioni.it", true }, { "fractieplanner.nl", true }, { "fractionalciso.com", true }, { "fracturedfx.com", true }, - { "fracturedperspective.com", false }, + { "fracturedperspective.com", true }, + { "fraeuleinmeerbackt.de", true }, { "fragara.com", true }, + { "fragbite.se", true }, { "fragclub.tk", true }, { "fragdenstaat.de", true }, { "frageboegen-martini-klinik.de", true }, { "fragilesolar.cf", true }, + { "fragmanhotel.com", true }, + { "fragment.com", true }, { "fragmentation.ml", true }, { "fragments.ga", true }, { "fragmentspuren.de", true }, { "fragmentus.tk", true }, { "fragnation.tk", true }, + { "fragnet.net", true }, + { "fragolabs.com", true }, { "fragstore.net", true }, { "fragzona.tk", true }, { "fraho.eu", true }, @@ -48597,6 +56403,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "framadrive.org", true }, { "framadrop.org", true }, { "framadvd.org", true }, + { "framadventure.no", true }, { "framaestro.org", true }, { "framaform.org", true }, { "framaforms.org", true }, @@ -48620,6 +56427,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "framasite.org", true }, { "framasites.org", true }, { "framaslides.org", true }, + { "framasoft.net", true }, { "framasoft.org", true }, { "framasphere.org", true }, { "framastart.org", true }, @@ -48637,6 +56445,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "framedpaws.com", true }, { "framemo.org", true }, { "framer.com", true }, + { "framer.live", true }, + { "framer.website", true }, + { "framerjs.com", true }, { "frames-eyelash.com", true }, { "frames-hair-design.com", true }, { "framesi.cz", true }, @@ -48648,15 +56459,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "francabellarsi.tk", true }, { "francaispornofilm.com", true }, { "france-cartouches.fr", true }, + { "france-cyber-maritime.eu", true }, { "france-hotellerie-restauration.com", true }, { "france-news.cf", true }, { "france-orchidees.org", true }, + { "france-serres.com", true }, + { "france-volontaires.org", true }, { "franceactivetravel.cf", true }, { "franceactivetravel.ml", true }, { "francebattery.com", true }, { "francelight.fr", true }, + { "francenum.gouv.fr", true }, { "francepandi.fr", false }, + { "francerent.com", true }, + { "frances8.com", true }, { "francesca-and-lucas.com", true }, + { "francescocozza.it", true }, { "francescopalazzo.com", true }, { "francescopandolfibalbi.it", true }, { "francescorandazzo.tk", true }, @@ -48672,14 +56490,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "franchisechaodoi-cambodia.com", true }, { "franchiseguide.ga", true }, { "franchisehive.com", true }, + { "franchiseportal.de", true }, + { "franchisesports.co.uk", true }, { "francinebelanger.network", true }, { "francineverbiest.nl", true }, { "francis.ph", true }, { "franciscadelasllagasvirtual.com", true }, { "franciscoeduardocruz.tk", true }, + { "franciscolapa.eu", true }, + { "francisgoethals.be", true }, + { "francishouserecovery.org", true }, { "francisplaza.com", true }, { "franckgirard.net", true }, { "francocasimirri.tk", true }, + { "francodev.com", true }, + { "francodev.com.br", true }, { "francoexpeditionperu.com", true }, { "francofunghi.tk", true }, { "francois-occasions.be", true }, @@ -48690,26 +56515,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "francoislaude.fr", true }, { "francoislepage.com", false }, { "franconia.space", true }, + { "francosuaga.es", true }, + { "francotecnologia.com", true }, + { "francotecnologia.com.br", true }, + { "francovital.com", true }, { "francoz.me", true }, { "francs-tireurs.tk", true }, { "frand.tk", true }, { "frandash.com", true }, { "frandor.co.uk", true }, + { "frandroid.com", true }, { "frandymvp.tk", true }, { "franekerweer.tk", true }, - { "franfoto.com", true }, + { "franfoto.com", false }, { "frangipane.tk", true }, + { "frank-gcc.com", true }, { "frank-lastia.tk", true }, { "frank-vincent.nl", false }, { "frank-wendy.tk", true }, { "frank.fyi", true }, { "frankbellamy.co.uk", true }, + { "frankcare.shop", true }, + { "frankdufaux.com", true }, { "franke-chemie.de", true }, { "frankellawfirm.com", true }, { "frankelod.com", true }, - { "frankenhost.de", false }, + { "frankenfresh.de", true }, { "frankenlehrmittel.de", true }, { "frankenweb.tk", true }, + { "frankeschenfelder.de", true }, { "frankeurope.com", true }, { "frankferrari.tk", true }, { "frankfu.ltd", false }, @@ -48722,23 +56556,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frankierprofi.de", true }, { "frankierstar.de", true }, { "frankieylosmatadores.tk", true }, - { "frankjobs.ca", true }, { "frankland.tk", true }, { "franklin-townshipohio.gov", true }, { "franklincountyflorida.gov", true }, { "franklincountyia.gov", true }, + { "franklincountyms.gov", true }, { "franklincountync.gov", true }, { "franklincountyne.gov", true }, { "franklincountyny.gov", true }, + { "franklincountypa.gov", true }, { "franklincountywa.gov", true }, { "franklindelco-ny.gov", true }, { "franklinhua.com", true }, + { "franklinmo.gov", true }, { "franklintownshipcarbonpa.gov", true }, { "franklinvillagemi.gov", true }, - { "frankopol-sklep.pl", true }, - { "frankrijkautohuur.nl", true }, + { "frankmungoattorney.com", true }, + { "franksgreatoutdoors.com", true }, { "franksiler.com", true }, - { "frankslaughterinsurance.com", true }, + { "frankslaughterinsurance.com", false }, { "frankthetank.biz", true }, { "frankwei.xyz", false }, { "frankyan.com", true }, @@ -48748,10 +56584,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "franqois.id", true }, { "franqois.my.id", true }, { "franquiadia.com.br", true }, - { "fransceo.com", true }, { "fransebulldog-cadeaushop.tk", true }, { "franta.biz", true }, { "franta.email", true }, + { "frantajaros.cz", true }, { "frantic1048.com", true }, { "frantorregrosa.me", true }, { "franz-vatter.de", true }, @@ -48765,11 +56601,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "franzt.ovh", true }, { "franzters.tk", true }, { "fraor.org", true }, - { "fraplaster.com", true }, { "frappant.cc", true }, { "frappant.net", true }, + { "frappe.cloud", true }, + { "frappe.io", true }, + { "frappecloud.com", true }, + { "frappeframework.com", true }, { "frarossi.tk", true }, { "fraselab.ru", true }, + { "fraserengineco.com", true }, { "fraserleonardart.com", true }, { "frasermurray.scot", true }, { "fraservalleyhotdog.com", true }, @@ -48777,12 +56617,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frasesdodia.com", true }, { "frasesdodia.net", false }, { "frasesparaface.com.br", true }, + { "frasestop.com", true }, { "frasestop.com.br", true }, { "frasesytarjetas.com", true }, - { "frasys.eu", true }, + { "frasicelebri.it", true }, { "frasys.group", true }, - { "frasys.net", true }, - { "frasys.network", true }, { "frasys.shop", true }, { "fratellisbt.it", true }, { "fratelliscarrone.com", true }, @@ -48792,6 +56631,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fraternitynetworkest.ga", true }, { "fraternityphotosers.ga", true }, { "fraternityphotosest.ga", true }, + { "fratia.com", true }, { "fratiicazanoi.ro", true }, { "fratreunioners.ga", true }, { "fratreunionest.ga", true }, @@ -48799,38 +56639,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frau-pusteblu.me", true }, { "frau-sucht-bauer.de", true }, { "frau.gq", true }, - { "fraud.sbs", true }, { "fraudpoders.ga", true }, { "fraudpodest.ga", true }, { "fraudswatch.tk", true }, + { "fraudtoken.com", true }, { "frauen-etappenrennen.de", true }, { "frauenaerztin-wedel.de", true }, - { "frauenarzt-zinke.de", true }, { "frauenarztin-wedel.de", true }, - { "frauenhaut.com", true }, - { "frauenlob.rocks", true }, + { "frauenlob.rocks", false }, + { "fraulen.ru", true }, { "fraurichter.net", true }, { "frax.finance", true }, { "fraye.net", true }, - { "frayfitness.com", true }, { "frazell.net", true }, { "frazeysburg.gov", true }, { "frazi.tk", true }, - { "frbg.me", true }, { "frbracch.it", true }, { "frc.gov", true }, { "frc.gov.au", true }, { "frc.us.com", true }, { "frccsgo.tk", true }, { "frcdr.org", true }, + { "frdbarchive.org", true }, { "frdl.ch", true }, { "freak-show.tk", true }, { "freak-team.tk", true }, + { "freak-waves.de", true }, { "freak-zone.tk", true }, { "freakguitars.tk", true }, { "freakinstream.com", true }, - { "freaksites.dk", true }, - { "freaksports.com.au", true }, + { "freaksites.dk", false }, + { "freaksports.com.au", false }, { "freakyawesome.agency", true }, { "freakyawesome.art", true }, { "freakyawesome.band", true }, @@ -48856,6 +56695,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frebib.com", true }, { "frebib.me", true }, { "frebib.net", true }, + { "freckles.bg", true }, { "fred-dresken.nl", true }, { "fred-latrace.com", true }, { "fred26.fr", true }, @@ -48871,23 +56711,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freddythechick.net", true }, { "freddyvasquez.com", true }, { "freddyxvasquez.com", true }, - { "fredericcote.com", true }, { "fredericfrancois.com", true }, { "frederickearlstein.com", true }, { "frederickmd.gov", true }, + { "fredericksburg.com", true }, + { "frederictonrealestate.com", true }, { "frederikbethkeviolins.com", true }, { "frederikugarte.tk", true }, { "frederikvig.com", true }, { "fredhook.tk", true }, { "fredjanssen.tk", true }, + { "fredloya.com", true }, { "frednet.tk", true }, + { "fredoniaiowa.gov", true }, + { "fredoniawi.gov", true }, { "fredoum.fr", true }, - { "fredperry.hu", false }, { "fredriksslaktforskning.se", true }, { "fredriksslekt.se", true }, { "freds4buildings.com", true }, + { "fredtec.ru", false }, { "fredvoyage.fr", true }, { "fredz.eu", true }, + { "free-apply.com", true }, { "free-barcode-generator.net", true }, { "free-bitco.ml", true }, { "free-cms.tk", true }, @@ -48896,16 +56741,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "free-nation.tk", true }, { "free-obmen.ml", true }, { "free-ppp.jp", true }, + { "free-printablehq.com", true }, + { "free-printablemap.com", true }, { "free-quotes.info", true }, { "free-rein.net", true }, { "free-seo.ml", true }, { "free-seo.tk", true }, { "free-sql-query-tool.com", true }, { "free-ss.site", true }, - { "free-traff.cf", true }, + { "free-tarot.net", true }, { "free-watching.ga", true }, { "free-webtv.tk", true }, + { "free.com.tw", true }, { "free4allsw.com", true }, + { "free4uplay.xyz", true }, { "free6to12yo.gq", true }, { "free8.xyz", true }, { "freeadvertisingexchange.com", true }, @@ -48913,16 +56762,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freeagent.tk", true }, { "freeartico.ga", true }, { "freeassange.net", true }, + { "freeasyshop.com", true }, { "freeauction.tk", true }, { "freeauroraoperations.tk", true }, { "freebacklinksforyoudirectory.tk", true }, { "freebasics.com", true }, { "freebcard.com", true }, { "freebegames.tk", true }, - { "freeben666.fr", true }, { "freebetoffers.co.uk", true }, { "freebetonthegrandnational.com", true }, { "freebettingreviews.com", true }, + { "freebgmringtones.com", true }, { "freebiofuels.ga", true }, { "freebiofuelsers.ga", true }, { "freebitcoinfaucet.org", true }, @@ -48933,6 +56783,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freebsd.la", true }, { "freebsdbrasil.com.br", true }, { "freebus.org", true }, + { "freebusinessideas.net", true }, + { "freebuyertraffic.com", true }, { "freecam-sex.com", true }, { "freecam2cam.site", true }, { "freecatz.pe.kr", true }, @@ -48940,16 +56792,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freecloud.at", true }, { "freeclubpenguin.tk", true }, { "freecn.xyz", true }, - { "freecookies.nl", true }, + { "freecodecamp.rocks", true }, { "freecorner.tk", true }, { "freecottage.fr", true }, { "freecoursepage.net", true }, + { "freecourses.pro", false }, + { "freecourseweb.com", true }, { "freecrypt.ga", true }, { "freedatesite.ml", true }, { "freedatesites.cf", true }, { "freedatingonline.ml", true }, { "freedeals4u.ga", true }, { "freedev.cz", true }, + { "freedgb.com", true }, { "freediomatiq.com", false }, { "freedirectory.tk", true }, { "freedogecrypt.tk", true }, @@ -48958,6 +56813,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freedom.press", true }, { "freedom35.org", false }, { "freedomains4all.tk", true }, + { "freedomaircharters.com", true }, { "freedomdujour.com", true }, { "freedomfinance.se", true }, { "freedomfinanceuat.azurewebsites.net", true }, @@ -48969,8 +56825,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freedomisslavery.tk", true }, { "freedomkiaparts.com", true }, { "freedomonline.bg", true }, + { "freedomonthenet.org", true }, + { "freedomperception.com", true }, { "freedomrahoitus.fi", true }, { "freedomsaukwi.gov", true }, + { "freedomscam.com", true }, { "freedomtoolkit.com", true }, { "freedomvote.nl", true }, { "freedomwill.tk", true }, @@ -48981,87 +56840,108 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freefallproductions.tk", true }, { "freefilesync.org", true }, { "freefincal.com", true }, + { "freeflightstoitaly.ngo", true }, { "freefonts.ga", true }, { "freeform4u.de", true }, { "freefridgeprogram.com.au", true }, + { "freefuckvids.com", true }, { "freegame-mugen.jp", true }, { "freegutters.com", true }, { "freehdporn.tv", true }, + { "freehorseracingtv.com", true }, { "freehotline.ru", true }, { "freehqporno.com", true }, + { "freeiconspng.com", false }, + { "freeimage.host", true }, + { "freeimageclub.com", true }, { "freeinet.cf", true }, { "freeinet.tk", true }, { "freeinfos.fr", true }, { "freeinoutboard.com", true }, - { "freejidi.com", true }, { "freekdevries.nl", true }, - { "freeks.com.br", true }, { "freelance-webdesign.co.uk", true }, { "freelance.boutique", true }, { "freelance.nl", true }, { "freelancecollab.com", true }, { "freelanceessaywriters.com", true }, { "freelancehunt.com", true }, + { "freelancehunt.work", true }, { "freelancejobs.org.uk", true }, { "freelancemw.com", false }, { "freelancerim.ml", true }, { "freelanceunited.co.uk", true }, - { "freelanceunleashed.com", false }, { "freelancewebprogrammer.com", true }, + { "freelancing.info", true }, { "freelansir.com", true }, { "freeliferp.de", true }, { "freemagi.ga", true }, { "freeman-online.tk", true }, - { "freeman-toyota.com", true }, { "freemania.nl", true }, { "freemanlogistics.com", true }, { "freemans.com", true }, - { "freemanwealth.com", true }, + { "freemanwealth.com", false }, { "freemason.pt", true }, { "freemattandgrace.com", true }, { "freemazes.tk", true }, { "freemchosting.tk", true }, { "freeme.gq", true }, { "freemilf.org", true }, + { "freemilfpics.com", true }, { "freeminecraftmaps.tk", true }, { "freeministryresources.org", true }, { "freemomhugs.org", true }, + { "freemor.ca", true }, { "freemotion.tk", true }, { "freemovieonline.ga", true }, { "freemyipod.org", true }, { "freend.me", false }, + { "freenet.com.ng", true }, { "freenetflow.com", true }, { "freenetproject.org", true }, + { "freenft.com", true }, { "freenome.com", true }, { "freenome.net", true }, { "freenomyoulilb.tk", true }, { "freeo.cf", true }, { "freeonlinearticles.tk", true }, + { "freeonlinegames.gq", true }, { "freeonplate.com", true }, { "freeparks.co.uk", true }, { "freepastlife.com", true }, { "freepatternsarea.com", true }, { "freepedia.cf", true }, + { "freepeopledirectory.com", true }, { "freephonefinder.cf", true }, { "freeplace.tk", true }, + { "freepluginoffer.com", true }, { "freepoints.us", true }, { "freepornhunt.com", true }, { "freepornomovies.info", true }, { "freepornovideos.me", true }, + { "freepornpics.net", true }, { "freepornvideos.life", true }, { "freepornxxxvids.com", true }, + { "freeportbakery.com", true }, + { "freeporttx.gov", true }, + { "freeprintabletm.com", true }, + { "freepro.com", true }, { "freepro.fr", true }, { "freepron.xyz", true }, { "freeradical.zone", true }, { "freereal.ml", true }, { "freerealincest.com", true }, { "freergform.org", true }, + { "freeride-dragobrat.com", true }, + { "freeroughporn.com", true }, { "freertomorrow.com", true }, { "freerun.cn", false }, + { "freesat.cn", true }, { "freeschool.cf", true }, + { "freescorefast.com", true }, { "freesexvideo.pro", true }, { "freesexvidz.com", true }, { "freeshell.de", true }, + { "freeshipping.com", true }, { "freeskateparks.com", true }, { "freeslots.guru", false }, { "freesmile.tk", true }, @@ -49071,7 +56951,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freesoftlab.com", true }, { "freesolitaire.win", true }, { "freesoul-deactivate-plugins.com", true }, - { "freesourcecodes.com", true }, { "freesourcestl.org", true }, { "freespace.info", true }, { "freespanlift.com", true }, @@ -49088,20 +56967,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freetelegraph.ga", true }, { "freetelegraphers.ga", true }, { "freetext.org", true }, + { "freethecape.org.za", true }, { "freethetv.ie", true }, { "freethinker.org", true }, + { "freethinkers.cafe", true }, { "freethinkers.org", true }, { "freethought.org", true }, - { "freeths.co.uk", true }, { "freetimefun.tk", true }, { "freetokill.tk", true }, + { "freetranslations.org", true }, { "freetrung.tk", true }, { "freetsa.org", true }, + { "freeunitconverter.online", true }, { "freeuseporn.org", true }, + { "freevideoproxy.com", true }, + { "freeview.in", true }, { "freevisits.tk", true }, + { "freevstplugins.net", true }, { "freewarez.org", true }, { "freewebh0st.tk", true }, - { "freeweibo.com", true }, { "freewerkt.nl", true }, { "freewoman.club", true }, { "freewoodfactory.com", true }, @@ -49114,51 +56998,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freezaworld.com", true }, { "freezemea.com", true }, { "freezerrepairaustin.com", true }, + { "freezion.com", true }, { "freezoneplan.com", true }, { "freezvon.com", true }, - { "frei.social", true }, + { "freezvon.ru", true }, { "freibesetzt.tk", true }, { "freiboth.ddns.net", true }, + { "freie-berufe.de", true }, { "freie-software.net", true }, { "freifahrt.de", true }, { "freifall.tk", true }, { "freifunk-burgaltendorf.de", true }, { "freifunk-duesseldorf.de", true }, - { "freifunk-essen.de", false }, { "freifunk-in-solingen.de", true }, { "freifunk-lindlar.net", true }, + { "freifunk-luenen.de", true }, + { "freifunk-myk.de", true }, { "freifunk-remscheid.de", true }, + { "freight-broker.ru", true }, + { "freight-news.ru", true }, + { "freightcenter.com", true }, { "freiheitjetzt.com", true }, - { "freimeldungen.de", true }, { "freinetmiddenschool.gent", true }, - { "freischaffende-architekten.de", true }, + { "freitas.org", true }, { "freitasm.com", true }, { "freitasul.com.br", true }, { "freitasul.io", true }, { "freiwurst.net", true }, - { "freizeitbad-riff.de", false }, { "freizeitpark.tk", true }, { "freizeitplaza.de", true }, { "frejasdal.dk", true }, { "frekans.tk", true }, { "frekat.tk", true }, + { "fremontcountyco.gov", true }, { "fremontcountyia.gov", true }, + { "fremontcountyid.gov", true }, { "fremontfire.gov", true }, { "fremonthills.gov", true }, { "fremontmi.gov", true }, + { "fremonttribune.com", true }, { "frences.tk", true }, { "french.tk", true }, { "frenchbluecottage.com", true }, { "frenchcreekcog.org", true }, + { "frenchcreekroofing.com", true }, { "frenchmac.com", true }, - { "frenchmusic.fr", true }, { "frenchtownmi.gov", true }, { "frenchvandal.com", false }, { "frendamos-roleplay.ml", true }, { "frendle.tech", true }, { "frenetic.lv", true }, + { "frenger.co.uk", true }, + { "frenger.com.au", true }, { "frente-popular.tk", true }, { "frenzel.dk", true }, + { "frequence-turf.fr", true }, { "frequencebanane.ch", false }, { "frequencymc.cc", true }, { "frequentlyaskedquestions.cf", true }, @@ -49168,7 +57062,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fresadorasytornos.com", true }, { "fresar-engineering.nl", true }, { "frescamezcla.tk", true }, + { "fresco.ph", true }, { "frescobol.tk", true }, + { "frescocooks.com", true }, { "fresh-hotel.org", true }, { "fresh-info.cf", true }, { "fresh-info.gq", true }, @@ -49179,49 +57075,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "freshbean.club", true }, { "freshbooks.com", false }, { "freshcode.nl", true }, - { "freshdesigns.de", true }, - { "freshdesignweb.com", false }, { "freshdesk-apps-by-invantive.com", true }, - { "freshdns.nl", true }, + { "fresheetmusic.com", true }, { "freshempire.gov", true }, { "freshersworld.ml", true }, { "fresherwalkins.tk", true }, + { "freshfinder.com.au", true }, { "freshfishdelivery.com", true }, - { "freshgujarat.com", false }, + { "freshgreenhouse.net", true }, { "freshhosting.tk", true }, { "freshinsport.fr", true }, + { "freshjoomlatemplates.com", true }, { "freshmail.com", true }, + { "freshmail.pl", true }, + { "freshman.tech", true }, { "freshmans-pizza.de", true }, { "freshmusicsheets.com", true }, - { "freshplus62.com", true }, + { "freshpatio.com", true }, + { "freshplus62.com", false }, + { "freshporno.net", true }, { "freshpounds.com", true }, { "freshproducemusic.tk", true }, - { "freshseafood.in", true }, + { "freshsexpics.com", true }, + { "freshsheetmusic.com", true }, { "freshtest.tk", true }, { "freshuk.co.il", true }, + { "freshwave.gr", true }, { "fresno.tk", true }, { "fresnois.com", true }, { "freso.dk", true }, - { "freston.eu", true }, { "fretboardforever.com", true }, + { "fretpal.online", true }, { "fretscha.com", true }, { "frettboard.com", true }, { "frettennet.tk", true }, { "frettirnar.is", true }, - { "freudedurchmachen.de", true }, { "freundeskreis-tarjan.de", true }, - { "freundinnen-ausflug.de", true }, - { "freundinnen-kurzurlaub.de", true }, - { "freundinnen-urlaub.de", true }, - { "freundinnenausflug.de", true }, - { "friarsonbase.com", true }, + { "frfghtr.com", true }, + { "frfi.io", true }, { "fribourgviking.net", true }, { "fricassea.com", true }, { "frickelboxx.de", true }, { "frickelmeister.de", true }, { "frickenate.com", true }, { "frida.se", true }, - { "fridarestaurantemexicano.com", true }, + { "fridakahlofans.com", true }, { "fridaybot.tk", true }, { "fridaybridge.tk", true }, { "fridayfoucoud.ma", true }, @@ -49233,6 +57131,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fridolinka.cz", true }, { "fried.tk", true }, { "friedberg2020.de", true }, + { "friedbergdirectfx.ca", true }, { "friedenauer-herbstfest.de", false }, { "friederes.lu", true }, { "friederloch.de", true }, @@ -49252,19 +57151,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "friendku.tk", true }, { "friendly.pe", true }, { "friendlydabs.com", true }, - { "friendlysiberia.com", true }, { "friendofpaws.com", true }, { "friendofthehoneybee.co.uk", true }, { "friendofthehoneybee.org", true }, { "friendofthehoneybee.org.uk", true }, { "friendowment.us", true }, - { "friendplay.net", true }, { "friends-online.tk", true }, { "friends.cafe", true }, { "friendscapital.co.uk", true }, { "friendsforeverrecords.tk", true }, { "friendshipismagicsquad.com", true }, - { "friendsinfilm.com", false }, { "friendsnew.com", true }, { "friendsnomore.tk", true }, { "friendsofgfwpc.org", true }, @@ -49275,12 +57171,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "friendsofthehoneybee.org", true }, { "friendsofthehoneybee.org.uk", true }, { "friendsofthehoneybee.uk", true }, - { "friendsoftheravines.org", true }, + { "friendsonline.com", true }, { "friendsonline.tk", true }, { "friendspoint.tk", true }, { "friendsvilletn.gov", true }, { "friendswoodtx.gov", true }, { "friendtech.tk", true }, + { "frieslandcollege.nl", true }, { "friesvredesplatform.tk", true }, { "friet.org", true }, { "frietbesteld.nl", true }, @@ -49291,7 +57188,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frign.de", true }, { "frigochaco.com.py", true }, { "frigolit.net", true }, - { "friherrsindemarit.fi", true }, { "frikandellenmoord.nl", true }, { "frikandelmoord.nl", true }, { "friker.tk", true }, @@ -49299,6 +57195,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frikimasters.es", true }, { "frikipedia.tk", true }, { "frikiteca.tk", true }, + { "frikitrucos.com", true }, { "frikizone.tk", true }, { "frikotv.tk", true }, { "frilima.com.br", true }, @@ -49307,6 +57204,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fringeintravel.com", true }, { "frinkiac.com", true }, { "frino.de", true }, + { "frioelectrica.com", true }, + { "friotemp.com.pe", false }, { "friplay.host", true }, { "fripoune.fr", true }, { "fripper.tk", true }, @@ -49317,7 +57216,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frisaga.travel", true }, { "friscorodandgun.com", true }, { "friseur-foerder.de", true }, - { "friss.com", true }, + { "friseur.website", true }, + { "friseure-website.de", true }, + { "friss.com", false }, { "frissenootjes.tk", true }, { "frisuren.tk", true }, { "friteuseairchaud.com", true }, @@ -49326,9 +57227,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fritz-koehne-schule.de", true }, { "fritzbox-forum.tk", true }, { "friv-2018.ga", true }, + { "friv31games.com", true }, { "frizo.com", true }, { "frlcnews.com", true }, - { "frlt.one", true }, + { "frlt.one", false }, { "frmbike.net", true }, { "fro.ge", true }, { "frob.nl", true }, @@ -49336,13 +57238,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "froehliche-hessen.de", true }, { "frog.industries", true }, { "frogatto.com", true }, + { "frogeducation.com", true }, { "frogeye.fr", true }, { "froggitt.com", true }, + { "froginfra.net", true }, + { "froglms.net", true }, + { "frogos.net", true }, + { "frogplay.net", true }, { "frogsonamission.de", true }, { "frogstage.com", true }, + { "frogtest.co.uk", true }, { "frogtown.capital", true }, { "froh-s.com", true }, { "froh.co.jp", true }, + { "froicorp.com", true }, { "frokenblomma.se", true }, { "frolova.org", true }, { "from-the-net.com", true }, @@ -49350,12 +57259,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "from.network", false }, { "from.tk", true }, { "fromager.net", true }, + { "fromageriedepeisey.com", true }, { "fromages-freres-marchand.com", true }, { "fromages-freres-marchand.fr", true }, { "fromages-marchand.com", true }, { "fromages-marchand.fr", true }, { "fromix.de", true }, { "fromlemaytoz.com", true }, + { "fromlifephoto.com", true }, { "fromm-projects.de", true }, { "frommars.tk", true }, { "frommyhands.tk", true }, @@ -49367,28 +57278,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fromthecountsplace.tk", true }, { "fromthemonks.com", true }, { "fromthesoutherncross.com", true }, + { "fromthetopsalonnh.com", true }, { "fromtinythings.com", false }, { "fromwithin.tk", true }, { "fronhadeseda.com.br", true }, { "front.com", true }, { "frontbaydevices.tk", true }, + { "frontconcept.com.my", true }, { "fronteers.nl", false }, { "fronteimoveis.com.br", true }, { "frontendmentor.io", true }, { "fronterasblog.tk", true }, { "frontier.bet", true }, { "frontierbrasil.tk", true }, + { "frontierbundles.com", true }, + { "frontierclimate.com", true }, + { "frontiernav.net", true }, { "frontiernetworks.co.uk", true }, { "frontiers.nl", true }, { "frontiersinflight.com", true }, { "frontigate.com", true }, { "frontline.cloud", true }, + { "frontline6.com", false }, { "frontlinepolicies.com", true }, { "frontrouge.fr", true }, + { "frontrunneragency.com", true }, { "froogo.co.uk", true }, { "frosinonetoday.it", true }, { "frosoku.com", true }, + { "frostedgame.xyz", true }, { "frostfire.tk", true }, + { "frostplatform.com", true }, { "frostprotection.co.uk", true }, { "frostwarning.com", true }, { "frostwolf.tk", true }, @@ -49402,7 +57322,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frowin-stemmer.de", false }, { "frown.town", true }, { "frownonline.co.uk", true }, - { "froxt.com", true }, + { "froyomio.com", true }, { "frozen-gaming.tk", true }, { "frozen-geek.net", true }, { "frozen-solid.net", true }, @@ -49411,31 +57331,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "frozencuisineest.ga", true }, { "frozendurian.club", true }, { "frozenfutures.com", true }, - { "frozenjam.com", true }, { "frozenpennies.com", true }, { "frp-roleplay.de", true }, - { "frp.org", true }, { "frpg.gov", true }, { "frprn.com", true }, { "frprn.es", true }, { "frprn.xxx", true }, + { "frrfb.org.au", true }, + { "frsecure.com", true }, + { "frshminds.com", true }, { "frsnpwr.net", true }, - { "frsqr.xyz", true }, { "frsra.ml", true }, { "frtib.gov", true }, { "frtn.com", true }, + { "frtr.gov", true }, { "frtrains.com", false }, { "fruchtikus.net", true }, { "frugaldateest.ga", true }, + { "frugalfamily.co.uk", true }, { "frugalfamilyhome.com", true }, + { "frugalfarmwife.com", true }, + { "frugalmatic.com", true }, { "frugro.be", true }, { "fruit-farm.tk", true }, { "fruit.ga", true }, { "fruit.ml", true }, + { "fruitbouquets.com", true }, + { "fruitdiva.com", true }, + { "fruitfulenglish.com", true }, { "fruition.co.jp", true }, + { "fruitjuicetab.ch", true }, { "fruitlandmi.gov", true }, { "fruitlawers.ga", true }, + { "fruits-passion.com", true }, { "fruitscale.com", true }, + { "fruitsfromchile.com", true }, { "fruitybeauty.tk", true }, { "fruityloop.tk", true }, { "fruityten.co.uk", true }, @@ -49445,8 +57375,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fruturaproduce.com", true }, { "fruxh.moe", true }, { "fruxnux.net", true }, + { "frwmb.gov", true }, { "frydrychit.cz", true }, - { "fryergroup.com", true }, + { "fryfiredistrictaz.gov", true }, { "fs-d.org", true }, { "fs-fitness.eu", true }, { "fs-g.org", true }, @@ -49460,12 +57391,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fsapubs.gov", false }, { "fsavc.org.uk", true }, { "fsbn.eu", true }, - { "fsbnh.bank", true }, { "fsbpaintrock.com", true }, { "fsbturton.com", true }, { "fsch2009.com", true }, { "fsck.cz", true }, { "fsck.jp", false }, + { "fsconline.info", true }, { "fscott.de", true }, { "fsd.gov", true }, { "fsdress.com", false }, @@ -49476,11 +57407,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fsgeek.ca", true }, { "fsinf.at", true }, { "fsinsight.com", true }, - { "fsk.fo", true }, - { "fskounoike.com", true }, + { "fsk.fo", false }, { "fsky.info", true }, { "fsma.pl", true }, { "fsmi.in", true }, + { "fsnb.com", true }, + { "fspk.pro", true }, + { "fspk.shop", true }, { "fsps.ch", true }, { "fsrs.gov", true }, { "fsscms.com", true }, @@ -49513,46 +57446,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fsub.de", true }, { "fsvoboda.cz", true }, { "fsvt.ch", false }, + { "fsxxi.com", true }, { "ft.com", false }, { "ftang.de", true }, - { "ftc.gov", false }, + { "ftapi.com", false }, + { "ftc.gov", true }, + { "ftccomplaintassistant.gov", true }, { "ftcefile.gov", true }, - { "ftexchange.com", true }, + { "ftcscout.org", true }, + { "ftfgroup.us", true }, { "ftg-ru.ga", true }, { "ftgeufyihreufheriofeuozirgrgd.tk", true }, { "ftgho.com", true }, { "fthat.link", true }, { "ftl-gaming.tk", true }, + { "ftl13.com", true }, + { "ftlparksprojects.com", true }, { "ftm.wiki", true }, { "ftmc.tk", true }, { "ftmwiki.com", true }, { "ftmwiki.net", true }, { "ftmwiki.org", true }, + { "ftmyersdogtraining.com", true }, { "ftng.se", true }, { "ftpmovement.tk", true }, - { "ftprivacy.cloud", true }, + { "ftpporto.com", true }, { "ftptest.net", true }, { "ftrac.com.br", true }, - { "ftrucks.com.au", false }, + { "ftrfnd.me", true }, + { "ftth.eu.org", false }, { "ftv.re", true }, + { "ftw.lol", true }, { "ftworthhousekeeper.com", true }, - { "ftx.com", true }, - { "ftx.cool", true }, - { "ftx.digital", true }, { "ftx.io", true }, { "ftx.tech", true }, - { "ftx.us", true }, + { "ftxtr.com", false }, + { "fu110.de", true }, { "fu898.top", true }, { "fuantaishenhaimuli.net", true }, + { "fuas.cl", true }, { "fucajz.cz", true }, { "fuchs-informatik.de", true }, { "fuchsy.com", true }, { "fuciam.com.co", true }, { "fuck-your-false-positive.de", true }, { "fuckar.ch", true }, - { "fuckav.ru", true }, { "fuckcf.cf", true }, { "fuckedintraffic.com", true }, + { "fuckimm.com", true }, { "fucknazis.cf", true }, { "fucknazis.tk", true }, { "fuckobr.com", true }, @@ -49560,7 +57501,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fuckobr.org", true }, { "fuckobr.su", true }, { "fuckssl.com", true }, - { "fuckthesacklers.network", true }, { "fucktory.tk", true }, { "fuckup.dk", true }, { "fuckwhatyouthink.tk", true }, @@ -49570,25 +57510,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fuckyoupaypal.me", true }, { "fuckz.net", true }, { "fudaoyuan.com", true }, - { "fudcrypter.io", true }, { "fuddittu.tk", true }, + { "fudgeapps.co.uk", true }, + { "fudgeapps.uk", true }, { "fudie.net", true }, - { "fuechschen.org", true }, + { "fudsend.com", true }, { "fuego.tech", true }, { "fuegocruzado.tk", true }, { "fuegoenlasangre.tk", true }, { "fuegosalsapower.tk", true }, + { "fueko.net", true }, { "fuelbyte.sg", true }, + { "fuelcycle.com", true }, { "fuelgalicia.tk", true }, { "fuelingfilms.com", true }, { "fuelingyourdreams.com", false }, { "fuembellida.tk", true }, { "fuenferrada.tk", true }, - { "fuentenaturasalud.com", true }, + { "fuentesdeenergia.org", true }, { "fuentesdeleon.tk", true }, { "fuer-gerechte-steuern.at", true }, { "fuerzaazul.tk", true }, { "fuessenaktuell.de", true }, + { "fufu.dance", true }, { "fugaku.cloud", true }, { "fuge-specialisten.dk", true }, { "fugioninc.com", false }, @@ -49596,6 +57540,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fugle.de", true }, { "fuglede.dk", true }, { "fugu.lol", true }, + { "fuhe-psy.com", true }, + { "fuhui-apac.com", true }, + { "fuhui-asia.com", true }, + { "fuhui-baike.com", true }, + { "fuhui-chinese.com", true }, + { "fuhui-chn.com", true }, + { "fuhui-global.com", true }, + { "fuhui-status.com", true }, + { "fuhui-web.com", true }, + { "fuhui-zhs.com", true }, + { "fuhuiapps.com", true }, + { "fuhuicorporate.com", true }, + { "fuhuifinance.com", true }, + { "fuhuigupiao.com", true }, + { "fuhuihub.com", true }, + { "fuhuijt.com", true }, + { "fuhuilab.com", true }, + { "fuhuimarkets.com", true }, + { "fuhuimobile.com", true }, + { "fuhuionline.com", true }, + { "fuhuiso.com", true }, + { "fuhuistation.com", true }, + { "fuhuistocks.com", true }, + { "fuhuitoutiao.com", true }, + { "fuhuitouzi.com", true }, + { "fuhuitrade.com", true }, + { "fuhuitrading.com", true }, + { "fuhuiwechat.com", true }, + { "fuhuizh.com", true }, + { "fuhuizhihu.com", true }, { "fuinhas.tk", true }, { "fuite.ch", false }, { "fuitedeau.ch", false }, @@ -49611,8 +57585,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fujiwarashinzo.com", true }, { "fujiyakimono.com", true }, { "fukabori-kaidora.com", true }, + { "fukakukeiba.com", true }, { "fukase-seed.com", true }, { "fukikaeru.com", true }, + { "fukn.jp", true }, { "fuku-fashion.nl", true }, { "fukuiedu.com", true }, { "fukuko.biz", true }, @@ -49626,10 +57602,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fulfillmentcostsers.ga", true }, { "fulfillmentcostsest.ga", true }, { "fulfilmentcrowd.com", true }, + { "fulgentoncology.com", true }, { "fulgenzis.com", true }, - { "fulijiejie.com", false }, + { "fulisex.com", true }, { "fuliwang.info", true }, - { "fuliwang.us", true }, + { "full-hd.info", true }, { "full-stack.ninja", true }, { "full.eu.org", true }, { "fullalt.com", true }, @@ -49641,11 +57618,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fullcirclestudio.nl", true }, { "fullcolors7.com", true }, { "fullerlife.org.uk", true }, - { "fullerotikfilm.net", true }, { "fullertonne.gov", true }, { "fullfilez.com", true }, { "fullfillery.com", true }, { "fullhost.com", true }, + { "fullhotfilm.co", true }, + { "fullhouseresorts.com", true }, { "fullhub.ru", true }, { "fullinsiderers.ga", true }, { "fullinsiderest.ga", true }, @@ -49656,7 +57634,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fullpaisa.com", true }, { "fullsize.ml", true }, { "fullsizefordclub.tk", true }, - { "fullstack.love", true }, { "fulltextarchive.com", true }, { "fulltxt.ml", true }, { "fully-covered.tk", true }, @@ -49665,12 +57642,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fultoncountyar.gov", true }, { "fultoncountyil.gov", true }, { "fultoncountyilelections.gov", true }, + { "fultoncountyky.gov", true }, { "fultondaleal.gov", true }, + { "fulup.com", true }, { "fumblers.ca", true }, { "fumerolles.ch", false }, + { "fumerx.com", true }, { "fumify.tk", true }, { "fumilink.com", true }, { "fumonegliocchi.it", true }, + { "fumotousa.com", true }, { "fun-baby.ru", true }, { "fun-bounce.co.uk", true }, { "fun-club-35.com", true }, @@ -49678,13 +57659,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fun-life.com.tw", false }, { "fun-tasia.co.uk", true }, { "fun4ubouncycastles.co.uk", true }, - { "fun88city.com", true }, { "fun9.cc", true }, { "funadiq.com", true }, { "funadvisor.ca", false }, { "funadvisorfrance.com", true }, + { "funaiwhistle.com", true }, { "funandbounce.com", true }, { "funandfriends.tk", true }, + { "funandlearning.es", true }, + { "funart.hr", true }, { "funatic.nl", true }, { "funatic.tk", true }, { "funboards.cz", true }, @@ -49693,23 +57676,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funchal.cf", true }, { "funchal.ga", true }, { "funchal.gq", true }, + { "funchal.pt", true }, { "functional.cc", true }, { "functions-online.com", true }, + { "functionx.io", true }, + { "functori.com", true }, { "funcustomshirts.com", true }, { "fundacaoeveris.com.br", true }, { "fundacion.in", true }, { "fundacionfade.org", true }, { "fundacionfranciscofiasco.org", true }, { "fundacionindigo.tk", true }, + { "fundacionlaboral.org", true }, + { "fundacionminutodigital.org", true }, { "fundacionsiempreadelante.org", true }, + { "fundacionsilverina.org", true }, { "fundacjamatkiewy.pl", true }, { "fundaekhaya.co.za", true }, { "fundamentt.com", true }, { "fundayltd.com", true }, { "fundays.nl", true }, - { "fundchan.com", true }, { "fundedschools.ml", true }, - { "fundevogel.de", true }, + { "fundex.id", true }, + { "fundhawk.com", true }, + { "fundiggitydog.co.nz", true }, + { "funding-zone.com", true }, { "fundingoptions.com", true }, { "fundingpartner.dk", true }, { "fundingpartner.no", true }, @@ -49720,22 +57711,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fundpress.org", false }, { "funds.ddns.net", true }, { "fundstuecke.de", true }, + { "fundwave.com", true }, { "funenhobby.nl", true }, - { "funeraire-365.com", true }, - { "funeral-365.com", true }, { "funeral-doom.tk", true }, { "funeralforafriend.tk", true }, { "funeralshowers.ga", true }, { "funeralshowest.ga", true }, { "funerare-cazacu.com", true }, { "funerare24.ro", true }, + { "funerariaalarcon.cl", true }, { "funfactorleeds.co.uk", true }, { "funfm.tk", true }, - { "funfun.com.br", true }, { "funfunmstdn.tokyo", true }, { "fungalforager.com", true }, { "fungame.eu", true }, - { "fungaming.bet", true }, { "fungit.org", false }, { "fungomoscow.cf", true }, { "fungosdemexico.tk", true }, @@ -49796,6 +57785,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funidelia.sk", true }, { "funidos.tk", true }, { "funinfo.tk", true }, + { "funio.com", true }, { "funkazoid-radio.com", true }, { "funken-networks.de", true }, { "funkfernbedienung-industrie.de", true }, @@ -49805,7 +57795,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funkshop.tk", true }, { "funksteckdosen24.de", false }, { "funkstyles.tk", true }, - { "funktdesign.dk", true }, { "funktdesign.eu", true }, { "funktionel.co", true }, { "funktionevents.co.uk", true }, @@ -49819,13 +57808,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funmobiles.tk", true }, { "funmountaincanyon.com", true }, { "funnelsforbricks.io", true }, + { "funnelw3b.com", true }, { "funniestclip.com", true }, { "funny-boy.tk", true }, { "funny-rates.tk", true }, { "funny-wedding.ga", true }, { "funnyanimalvideos.ml", true }, { "funnybee.tk", true }, - { "funnybikini.com", true }, { "funnybubu.ro", true }, { "funnychristianjokes.tk", true }, { "funnycommercials.ga", true }, @@ -49840,10 +57829,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funnyvideoclips.tk", true }, { "funoverip.net", true }, { "funpakistan.tk", true }, + { "funpartytips.com", true }, { "funphone.tk", true }, { "funplaza.tk", true }, { "funprode.org", true }, { "funprogramming.tk", true }, + { "funraiser.io", true }, { "funreaktor.com", true }, { "funshemale.com", true }, { "funshirts.tk", true }, @@ -49856,7 +57847,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funtime-inflatables.co.uk", true }, { "funtime.com.ua", true }, { "funtime.kiev.ua", true }, - { "funtimeentertainment.co.uk", true }, { "funtimesailing.com", true }, { "funtimesbouncycastles.co.uk", true }, { "funtimeusabiloxi.com", true }, @@ -49869,20 +57859,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "funyirotraktor.hu", true }, { "funzack.cf", true }, { "fur-shop.tk", true }, + { "fur.city", true }, { "fur.mt", true }, { "fur.red", true }, + { "furaffrate.net", true }, + { "furbooru.org", true }, { "furca.ca", true }, { "furcdn.net", true }, { "furcity.me", true }, { "fureais.com", true }, + { "furfurdecory.com", true }, + { "furgetmeknot.co.za", true }, { "furgetmeknot.org", true }, + { "furgetmeknot.org.za", true }, { "furgo.love", true }, { "furi.ga", true }, { "furiacelesteiquique.tk", true }, { "furiaot.com", true }, + { "furik.me", true }, { "furisode-sendai.com", true }, { "furisode-yamaguchiya.com", true }, { "furiya.tk", true }, + { "furkanahsap.com", true }, { "furkankose.ml", true }, { "furkanmudanyali.com", true }, { "furkot.com", true }, @@ -49895,35 +57893,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "furlan.co", false }, { "furlan.tk", true }, { "furlog.it", true }, + { "furmap.fr", true }, { "furnace-zero.tk", true }, { "furnacemybuddytheplumber.com", true }, { "furnfurs.com", true }, { "furnishedproperty.com.au", true }, { "furniteco.com", true }, { "furniture-for-home.tk", true }, + { "furniture-warehouse.co.za", true }, { "furnitureconcept.co.uk", true }, + { "furniturefashion.com", true }, { "furnitureforlife.com", true }, { "furnitureforlifeboulder.com", true }, + { "furnitureiloilo.com.ph", true }, { "furnitureproduction.tk", true }, { "furnituresolutions.tk", true }, { "furniturezoneboone.com", true }, + { "furnu.org", true }, { "furorcanario.tk", true }, { "furoretferrum.tk", true }, { "furosemide-lasix.tk", true }, { "furosemide.gq", true }, { "furries-united.de", true }, { "furry.bot", true }, + { "furry.codes", true }, { "furry.cool", true }, { "furry.dk", true }, { "furry.gay", true }, { "furrybot.co", true }, + { "furrycdn.org", true }, { "furrycraft.ga", true }, { "furrytech.network", true }, + { "furs.town", true }, { "fursandfur.tk", true }, { "fursho.ws", true }, { "furshows.org", true }, + { "furtodo.at", true }, + { "furtodo.com", true }, + { "furtodo.cz", true }, + { "furtodo.de", true }, + { "furtodo.eu", true }, + { "furtodo.hu", true }, + { "furtodo.pl", true }, + { "furtodo.sk", true }, + { "furtodobox.com", true }, + { "furtodobox.cz", true }, + { "furtodobox.eu", true }, + { "furtodobox.sk", true }, + { "furtodoit.com", true }, { "furu-sato.com", true }, - { "furuy.com", true }, + { "furuse-shika.com", true }, + { "furuy.com", false }, + { "furworks.de", true }, { "fusacity.tk", true }, { "fusacovi.cf", true }, { "fuselight.nl", true }, @@ -49940,25 +57961,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fusionarmenia.tk", true }, { "fusionas.tk", true }, { "fusionauth.io", true }, - { "fusionetics.plus", true }, + { "fusionbd.net", true }, + { "fusionespeluqueria.es", true }, { "fusionfactory.tk", true }, { "fusiongaming.de", true }, { "fusionpatrol.com", true }, { "fusionplatter.eu", true }, + { "fusions.co.jp", true }, + { "fusionsfood.com", true }, { "fusionstudios.tk", true }, + { "fusionvr.in", true }, + { "fuso.com.py", true }, { "fuso.net", true }, { "fussball-xxl.de", true }, + { "fussballmanager.de", true }, { "fussballpiraten.com", true }, { "fussballtransfers.com", true }, { "fussell.io", true }, { "fussfetisch.tk", true }, { "fussy.ee", true }, + { "fussycats.com", true }, { "fussycats.uk", true }, { "fuszara.eu", true }, { "fut21gen.com", true }, { "futa.agency", true }, { "futa.wiki", true }, { "futaba-works.com", true }, + { "futacockinside.me", true }, { "futarara.ga", true }, { "futaritomo.tk", true }, { "futaroulette.com", true }, @@ -49970,33 +57999,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "futbomb.com", true }, { "futebolatualizado.tk", true }, { "futebolbrasileirosnes.tk", true }, + { "futeboleapostasonline.com", true }, + { "futhark24.com", true }, + { "futhark24.eu", true }, + { "futhark24.net", true }, + { "futhark24.org", true }, { "futharkhorde.tk", true }, { "futieltextiel.be", true }, { "futo.biz", true }, + { "futone.com.br", true }, { "futos.de", true }, { "futrou.com", false }, + { "futsalnews24.com", true }, + { "futunk.com", true }, + { "futunk.eu", true }, + { "futunk.nl", true }, { "futurageindia.com", true }, + { "futurains.com", true }, { "futurama-il.tk", true }, { "future-dance.tk", true }, + { "future-telecom.com", true }, + { "futureappin.com.au", true }, { "futureaudiographics.com", false }, + { "futurecharcoal.com", true }, { "futurefive.asia", true }, { "futurefive.co.nz", true }, { "futurefive.com.au", true }, { "futureforward.coop", true }, { "futurefund.com", true }, + { "futurefund.gov.au", true }, { "futurefundapp.com", true }, + { "futuregaming.io", true }, { "futuregrowthva.com", true }, { "futurehack.io", true }, - { "futureleaderawards.com", true }, { "futurenda.com", true }, { "futurenewsforyou.com", true }, { "futureofyoucdc.sg", true }, + { "futureplan.de", true }, { "futureplanet.tk", true }, { "futuresinmarketing.co.uk", true }, - { "futuresonline.com", true }, + { "futuresonline.com", false }, { "futuresound.tk", true }, - { "futuressm.com", true }, { "futurestyletiling.com.au", true }, + { "futuretechtrends.co.uk", true }, + { "futurethinkers.org", true }, { "futureville.city", true }, { "futurewithoutfear.com", true }, { "futurewithoutfear.org", true }, @@ -50005,13 +58051,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "futurezone.at", true }, { "futuristacademy.io", true }, { "futuristicarchitectures.tk", true }, + { "futuristicjobs.sk", true }, { "futurity.ml", true }, { "futurygames.com", true }, + { "fuulle.com", true }, { "fuvelis.com", true }, { "fuwafuwa.moe", true }, { "fuwafuwatime.moe", true }, + { "fuwashima.moe", true }, { "fuxgames.com", true }, { "fuyu.moe", true }, + { "fuzenet.net", true }, { "fuzigames.com", true }, { "fuzion.co.th", true }, { "fuzoku-sodan.com", true }, @@ -50023,9 +58073,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fuzzy.domains", true }, { "fuzzylogic.tk", true }, { "fvap.gov", true }, + { "fvb.world", true }, { "fvdm.com", true }, { "fveevaete.com", true }, + { "fvformation.fr", false }, + { "fvg.io", true }, { "fw-einsatz.de", true }, + { "fwaux.de", true }, { "fwba.hopto.org", true }, { "fwdx.net", true }, { "fwest.ovh", true }, @@ -50033,8 +58087,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fwest98.ovh", true }, { "fwfcompany.com", true }, { "fwg.sk", true }, + { "fwkart.de", true }, { "fwo.gov.au", true }, { "fwpda.gov", true }, + { "fwr.cz", true }, { "fws.gov", true }, { "fwt99.com", true }, { "fwt999.com", true }, @@ -50042,12 +58098,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fwtewm.com", true }, { "fwtpic.com", true }, { "fwup.org", true }, + { "fwupd.org", true }, { "fx-rating.com", true }, - { "fx-rk.com", true }, { "fxbrokerreview.org", true }, - { "fxe.pt", false }, + { "fxcg-education.com", true }, + { "fxcm-arabic.com", true }, + { "fxcm-asia.com", true }, + { "fxcm-chn.com", true }, + { "fxcm-global.com", true }, + { "fxcm-markets.com", true }, + { "fxcm-online.com", true }, + { "fxcm.com.tw", true }, + { "fxcm.com.vn", true }, + { "fxcm.eu", true }, + { "fxcm.my", true }, + { "fxcm.vn", true }, + { "fxcmaffiliates.com", true }, + { "fxcmapps-asia.com", true }, + { "fxcmapps.com", true }, + { "fxcmbullion.com", true }, + { "fxcmchn.com", true }, + { "fxcmglobal.com", true }, + { "fxcmhub.com", true }, + { "fxcmidn.com", true }, + { "fxcmportal.com", true }, + { "fxcmzh.com", true }, + { "fxcopierpro.com", true }, { "fxeuropa.com", true }, + { "fxexplained.co.uk", true }, { "fxgame.online", true }, + { "fxiaoke.com", true }, { "fxislamic.com", true }, { "fxnotch.com", true }, { "fxopen.co.uk", true }, @@ -50063,13 +58143,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fxpig-ib.com", true }, { "fxpunch.com", true }, { "fxrates.com", true }, + { "fxstatus-chinese.com", true }, { "fxstock.eu", true }, { "fxstrategics.com", true }, { "fxtalk.cn", false }, { "fxtrade-lab.com", true }, { "fxtwitter.com", true }, { "fxwebstudio.com.au", false }, - { "fyd.li", true }, + { "fy.ink", true }, { "fydjbsd.cn", true }, { "fyfywka.com", true }, { "fyllehack.se", true }, @@ -50078,12 +58159,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fyn.nl", true }, { "fyn.software", true }, { "fynbo.io", true }, + { "fyndiq.se", true }, { "fyol.pw", true }, { "fyp-aiman.com", true }, { "fyphb.com", true }, - { "fyrehost.net", true }, - { "fyrehost.xyz", true }, - { "fyretrine.com", true }, + { "fyptt.to", true }, + { "fyrebox.guru", true }, + { "fyrehost.net", false }, + { "fyrfalkcontent.se", true }, { "fyroeo.fr", false }, { "fysio-ict.nl", true }, { "fysiotherapie-ict.nl", true }, @@ -50093,7 +58176,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fyss.ga", true }, { "fysuite.com", true }, { "fytorio-pasxalis.gr", true }, - { "fzbrweb.cz", true }, + { "fyziotonka.sk", true }, { "fzhyzamt.com", true }, { "fzoske.de", true }, { "fzx750.ru", true }, @@ -50101,6 +58184,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "fzxx.xyz", true }, { "g-c-z.cc", true }, { "g-center.tk", true }, + { "g-dart.com", true }, { "g-ds.de", true }, { "g-electricity.ml", true }, { "g-equip.ru", true }, @@ -50109,6 +58193,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "g-m-w.eu", true }, { "g-p-design.com", true }, { "g-printec.com", true }, + { "g-rom.net", true }, { "g-tea.ml", true }, { "g.co", false }, { "g00228.com", true }, @@ -50116,42 +58201,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "g0158.com", true }, { "g0881.com", true }, { "g0man.com", true }, + { "g0nz0.me.uk", true }, { "g1.ie", true }, { "g10e.ch", true }, - { "g116688.com", true }, - { "g1mra.de", true }, + { "g15ubezpieczenia.pl", true }, { "g1reeds.com", true }, + { "g1trans.com", true }, { "g2-inc.com", true }, { "g2fdistribuidora.com.br", true }, { "g2jp.uk", true }, { "g2links.com", false }, + { "g2llc.com", true }, { "g2oh.com", true }, { "g2pla.net", true }, - { "g2ship.com", true }, { "g2soft.net", false }, { "g36533.com", true }, { "g36594.com", true }, { "g3circuit.com", true }, { "g3d.ro", true }, { "g3dev.ch", false }, - { "g3gestao.com", true }, { "g3hardcore.tk", true }, { "g3homefoods.com", true }, - { "g3rv4.com", true }, { "g47.web.id", true }, { "g4v.in", true }, { "g4w.co", true }, { "g5.gov", true }, { "g51365.com", true }, { "g5197.co", true }, + { "g5yss.uk", true }, { "g6666g.tk", true }, { "g6729.co", true }, { "g6957.co", true }, { "g6957.com", false }, { "g72020.gov", true }, { "g7campdavid.gov", true }, + { "g7liveseafood.com.sg", true }, { "g7usa.gov", true }, - { "g81365.com", true }, { "g82365.com", true }, { "g8energysolutions.co.uk", true }, { "g9297.co", true }, @@ -50165,20 +58250,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gabaldon.eu", true }, { "gabaldon.nl", true }, { "gabapentin.gq", true }, + { "gabare-loire.com", true }, { "gabbeh.jp", true }, { "gabby-online.tk", true }, - { "gabby.vn", true }, + { "gabby.vn", false }, { "gabbyer.ga", true }, { "gabbyer.gq", true }, { "gabbyer.ml", true }, + { "gabe.download", true }, { "gabe.house", true }, - { "gabe.link", true }, { "gabe.pics", true }, { "gabe.space", true }, { "gabe.watch", true }, { "gabe565.com", true }, - { "gabeb1920.com", true }, { "gabecook.com", true }, + { "gabed.net", true }, + { "gabelli.com", true }, { "gabethebabetv.com", true }, { "gabigold.net", true }, { "gabijazava.com", true }, @@ -50186,11 +58273,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gabinetejuridicotecnologicojuandemeseguer.es", true }, { "gabiocs.com", true }, { "gabiz.tk", true }, + { "gablermade.com", true }, { "gablesplasticsurgery.com", true }, { "gablesportsga.com", false }, + { "gablesvets.co.uk", true }, { "gably.net", true }, - { "gabnotes.org", true }, { "gabodesign.tk", true }, + { "gabonflash.com", true }, { "gaborg.hu", true }, { "gabraham.tk", true }, { "gabriel.to", true }, @@ -50198,11 +58287,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gabrielafriasfanclub.tk", true }, { "gabrielcury.tk", true }, { "gabriele-kluge.de", true }, - { "gabriele.tips", true }, { "gabrielemarino.tk", true }, { "gabrielflores.tk", true }, + { "gabrielg.es", true }, { "gabrielgn.com.br", false }, - { "gabrielgroup.com", true }, { "gabriella.cf", true }, { "gabriellabastos.tk", true }, { "gabriellearruda.com", true }, @@ -50217,6 +58305,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gabucho.tk", true }, { "gabyminneboo.tk", true }, { "gabysoft.tk", true }, + { "gabz.net", true }, { "gachea.cl", true }, { "gachimuchi.ru", true }, { "gachiyase.com", true }, @@ -50227,9 +58316,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gackowski.tk", true }, { "gadabit.pl", true }, { "gadaj.eu", true }, + { "gadalkindom.ru", true }, { "gadanie.cf", true }, { "gadanie.ml", true }, { "gadatel.ml", true }, + { "gaddiblog.com", true }, { "gaddini.it", true }, { "gadecs.com", true }, { "gadget-freak.cf", true }, @@ -50239,57 +58330,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gadgetflip.com", true }, { "gadgetfreak.cf", true }, { "gadgetgi.ga", true }, + { "gadgetguideonline.com", true }, { "gadgethacks.com", true }, + { "gadgetick.com", true }, { "gadgetinfo.ga", true }, { "gadgetized.net", true }, { "gadgetmaker.tk", true }, { "gadgetmaniac.tk", true }, { "gadgets-cars.com.es", true }, { "gadgets-mall.com", true }, + { "gadgetsandwearables.com", true }, + { "gadgetsgigabytesandgoodwill.com", true }, { "gadgetshome.ml", true }, { "gadgetslab.tk", true }, - { "gadgetstock.ir", false }, + { "gadgettendency.com", true }, + { "gadgetter.biz", true }, { "gadingpromosindo.tk", true }, { "gadkiy-farm.tk", true }, { "gadsdensoefl.gov", true }, { "gadse.games", true }, { "gadzilla.tk", true }, { "gae123.com", true }, - { "gaea-field.com.vn", true }, { "gaelico.tk", true }, { "gaemsofyesterday.com", true }, { "gaengler.com", true }, { "gaestehaus-leipzig.de", true }, { "gaestehaus-monika.com", true }, { "gaetanosonline.com", true }, - { "gaf-zerbst.de", true }, { "gafachi.com", true }, { "gafan.cf", true }, { "gaff-rig.co.uk", true }, { "gaflooring.com", true }, { "gafrecomex.com", true }, - { "gaga-debki.pl", true }, + { "gag101.com", true }, { "gaganenterprises.in", true }, { "gagarin.ga", true }, + { "gagecountyne.gov", true }, { "gagekroljic.com", true }, { "gagesmith.tk", true }, { "gagne.tk", true }, { "gagnerenfant.tk", true }, { "gagnerplusdargent.info", true }, - { "gagniard.org", true }, + { "gagop.org", true }, { "gagor.pl", false }, { "gagramore.cf", true }, { "gagygnole.ch", false }, + { "gaheztexab.com", true }, { "gaiafood.co", true }, - { "gaiavanderzeyp.com", false }, { "gaijin.network", true }, { "gaijin.systems", true }, { "gaijinsystems.com", true }, { "gailfellowsphotography.com", true }, - { "gailnoglephoto.com", true }, { "gaines-sodiamex.fr", false }, { "gainesvillega.gov", true }, { "gainingadvantage.com", true }, + { "gainnet.ru", true }, { "gaio-automobiles.fr", true }, { "gaireg.de", true }, { "gais.tk", true }, @@ -50298,33 +58393,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gaite.me", false }, { "gaitrehabilitation.com", true }, { "gaitresearch.com", true }, + { "gaitzmemorials.com", true }, { "gajabhindi.cf", true }, { "gajabhindi.tk", true }, { "gajas18.com", true }, { "gajda.cz", true }, { "gajowniczek.eu", true }, { "gajqc.gov", true }, - { "gakdigital.com", true }, { "gakkainavi-epsilon.net", true }, { "gakki.photos", true }, { "gaku-architect.com", true }, + { "gaku-nkc.net", true }, { "gala.kiev.ua", false }, + { "galabands.info", true }, { "galact.tk", true }, - { "galacticaos.tk", true }, - { "galacticbusiness.com", false }, - { "galacticfederation.eu", true }, { "galaksidot.tk", true }, { "galaktika-znakomstv.tk", true }, { "galaltosalento.it", true }, { "galama.tk", true }, + { "galamusik-band.de", true }, + { "galamusikband.de", true }, { "galanight.cz", true }, { "galapagos.cx", true }, - { "galapagostraveldeals.com", true }, - { "galaperfume.com", true }, + { "galapagosbig15.com", true }, { "galasin.cf", true }, { "galasin.ga", true }, { "galatabazaar.com", true }, - { "galatahigiene.com.br", true }, { "galavanmoskou.tk", true }, { "galaw.gov", true }, { "galax.tech", true }, @@ -50338,18 +58432,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "galaxus.eu", true }, { "galaxus.fr", true }, { "galaxy.edu.pe", true }, + { "galaxyaudiobook.com", true }, { "galaxyeuropemusic.com", true }, { "galaxymedia.tk", true }, { "galaxymusicpromo.com", true }, + { "galaxyofebooks.com", true }, { "galaxyplex.tk", true }, { "galaxyscientific.com", true }, { "galaxystaking.space", true }, { "galaxysweeper.com", true }, { "galaxytracker.tk", true }, - { "galbani.it", true }, + { "galecommercial.com", true }, { "galefacialplastics.com", true }, { "galenguyer.com", true }, { "galenreasoner.com", true }, + { "galenzoski.com", true }, { "galepaal.tk", true }, { "galeria-reisen.de", true }, { "galeria42.com", true }, @@ -50359,17 +58456,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "galerias-xamoralarte.cf", true }, { "galerias-xamoralarte.ga", true }, { "galerie-claudia-walz-nagold.tk", true }, + { "galerie-com.com", true }, { "galerie-saintgermain.fr", true }, { "galeries.photo", false }, { "galeriesimple.fr", true }, { "galexlee.com", true }, { "galfarma.cl", true }, { "galgamer.eu.org", true }, + { "galgamer.moe", true }, { "galganoboutique.com", true }, { "galgoafegao.com.br", true }, { "galgoingles.com.br", true }, { "galgopersa.com.br", true }, + { "galhristova.com", true }, + { "galia.bg", true }, + { "galiciamaxica.eu", true }, { "galiciasensual.tk", true }, + { "galickidigital.ie", true }, { "galilahiskye.com", true }, { "galilei.tk", true }, { "galileicompara.com", true }, @@ -50378,13 +58481,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "galim.org.il", true }, { "galina.ga", true }, { "galinas-blog.de", true }, + { "galinkltd.com", true }, { "galinos.gr", true }, + { "galip.nl", true }, + { "galiuzvejoti.org", true }, { "galive.ga", true }, { "galizae-sports.tk", true }, { "galj.info", true }, { "gallagherperformance.com", true }, { "gallaghertownshippa.gov", true }, { "gallant.tk", true }, + { "gallatinhousecleaning.com", true }, { "galle.cz", true }, { "galleonwaymedical.com.au", true }, { "galleriacontinua.com", true }, @@ -50392,22 +58499,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gallery-easysolution.tk", true }, { "gallery-kaze.jp", true }, { "galleryinfo.ga", true }, + { "gallerywestframeplant.com", true }, { "gallesproperties.com", true }, { "gallest.cf", true }, { "gallest.ga", true }, { "galleyfoods.com", true }, + { "gallifordtry.co.uk", true }, { "gallifreyan-koala.tech", true }, { "gallifreyapp.co.uk", true }, { "gallifreypermaculture.com.au", true }, { "gallmeyer-consulting.com", true }, - { "gallolineabagno.it", true }, { "gallopingkylin.com", true }, { "gallun-shop.com", true }, + { "galoforo.it", true }, { "galoserver.org", true }, - { "galpaoap.com.br", true }, { "galpsafetytalks-portal-preprod.azurewebsites.net", true }, { "galpsafetytalks-portal-production.azurewebsites.net", true }, { "galtelligence.com", true }, + { "galton.sk", true }, + { "galtonbrands.com", true }, + { "galtonbrands.es", true }, + { "galtondev.com", true }, + { "galvincdn.com", true }, + { "galvingao.com", true }, { "galvinism.ink", true }, { "galwaytooughterardgreenway.ie", true }, { "galwew.ga", true }, @@ -50416,50 +58530,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamalawadforum.tk", true }, { "gamalhamza.tk", true }, { "gamanlu.com", true }, + { "gambarian.com", true }, { "gamberorosso.menu", true }, { "gamberorotto.com", true }, { "gambetti.fr", true }, { "gambiafishing.tk", true }, { "gambiapagina.tk", true }, { "gambinotrasporti.it", true }, - { "gambipedia.com", true }, { "gambisti.de", true }, { "gambit.pro", true }, { "gambitnash.co.uk", true }, { "gambitnash.com", true }, { "gambitprint.com", true }, - { "gamblerhealing.com", true }, - { "gamblernd.com", true }, { "gamblersgaming.eu", true }, { "gamblerspick.com", true }, { "gambling-business.club", true }, { "gamblingaffiliatevoice.com", true }, - { "gamboahinestrosa.info", true }, + { "gamblingconsulting.expert", true }, { "gamburger.tk", true }, { "gamcore.com", true }, { "game-club.me", true }, + { "game-designers.net", true }, + { "game-developers.org", true }, { "game-dominion.tk", true }, { "game-files.net", false }, - { "game-garage.com", true }, { "game-gentle.com", true }, { "game-net.ml", true }, + { "game-plex.com", true }, + { "game-repack.site", true }, + { "game.es", true }, { "game4less.com", true }, - { "game7.de", true }, { "game818play.com", true }, - { "game88city.com", true }, { "game88play.com", true }, { "gameanalytics.com", true }, { "gameapexlegends.com", true }, { "gamebase.tk", true }, + { "gamebillingcentre.com", true }, { "gamebits.net", false }, { "gameblabla.nl", true }, { "gameboyarchive.com", true }, - { "gameboys.xyz", true }, { "gamebrott.com", true }, { "gamecarddelivery.com", true }, { "gamecdn.com", false }, { "gamechefpummarola.eu", true }, - { "gamechurch.de", true }, { "gameclimax.cf", true }, { "gameclimax.tk", true }, { "gameclue.jp", true }, @@ -50471,10 +58584,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamedaim.com", true }, { "gameday.org.uk", true }, { "gamedealsnow.com", true }, + { "gamedware.com", true }, { "gameexpress.tk", true }, { "gamefarm.ru", true }, { "gamefear.ga", true }, { "gamefear.tk", true }, + { "gameflip.com", true }, { "gamefoster.com", true }, { "gamefreek.tk", true }, { "gamegainlx.cf", true }, @@ -50490,10 +58605,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gameindustry.eu", true }, { "gameisbest.jp", true }, { "gamejobs.co", true }, + { "gamekaitori.jp", true }, { "gamekb.gq", true }, { "gamekeepers.cz", true }, { "gamekeybox.tk", true }, { "gamekiller.ga", true }, + { "gamelarix.com", true }, + { "gamelink.com", true }, { "gameloft.ga", true }, { "gamelok.ga", true }, { "gamemakers.tk", true }, @@ -50504,8 +58622,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gameonespirit.tk", true }, { "gameoveronline.tk", true }, { "gamepad.com.br", true }, - { "gamepiece.com", false }, { "gameplaysforkids.com", true }, + { "gameplus.win", true }, { "gamepokies.ml", true }, { "gameportalmoz.tk", true }, { "gamepower.tk", true }, @@ -50517,8 +58635,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamepuzzleinfo.tk", true }, { "gamer-portal.com", true }, { "gamer-vip.com", true }, - { "gamer.web.tr", true }, { "gameracinginfo.tk", true }, + { "gamerankings.com", true }, { "gamerant.com", true }, { "gamerbits.net", true }, { "gamercredo.com", true }, @@ -50536,12 +58654,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamereactor.se", true }, { "gamereader.de", true }, { "gamerepository.ga", true }, + { "gamerepublic.hu", false }, { "gameres.com", true }, { "gamering.cf", true }, + { "gamerkick.com", true }, { "gamerkings.tk", true }, { "gamers-community.tk", true }, { "gamers-paradise.tk", true }, + { "gamersctrl.com", false }, { "gamersedge.tk", true }, + { "gamersflix.com", false }, + { "gamersgrill.com", true }, { "gamersheaven.tk", true }, { "gamersplace.tk", true }, { "gamerspost.ga", true }, @@ -50554,14 +58677,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamerwater.com", true }, { "gamerwelfare.com", true }, { "gamerzdot.com", true }, + { "games-rt.ru", true }, { "games-station.tk", true }, { "games2kids.net", true }, { "games4theworld.org", true }, - { "gamesalia.com", true }, + { "gamesandcasino.com", true }, { "gamesaviour.com", true }, { "gamesbap.com", true }, { "gamescore.tk", true }, - { "gamescum.ru", true }, { "gamesdepartment.co.uk", false }, { "gamesector.tk", true }, { "gameserver-admin.ga", true }, @@ -50584,27 +58707,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamesputnik.ru", true }, { "gamestand.net", true }, { "gamester.tv", true }, - { "gamestoplayfree.com", true }, { "gamesunited.tk", true }, { "gamesweek.melbourne", true }, { "gameswitchers.uk", true }, + { "gametainment.net", true }, { "gametilt.com", true }, { "gametium.com", true }, { "gametium.es", true }, { "gametowndev.tk", true }, { "gametube.website", true }, { "gameview.tk", true }, + { "gamewarden.org", true }, + { "gamewardenedu.org", true }, { "gamewayz.online", true }, { "gamewinninggoal.com", true }, { "gameworldcdr.tk", true }, - { "gamexperts.ga", true }, + { "gamezero.nl", true }, { "gamezon.ga", true }, { "gamezon.tk", true }, + { "gamezsmack.com", true }, { "gamhealth.net", true }, - { "gamilab.com", true }, + { "gamifi.co.uk", true }, { "gamilab.no", true }, { "gaming-club.tk", true }, { "gaming-dice.tk", true }, + { "gaming-h.xyz", true }, { "gaming-life.tk", true }, { "gaming-news.tk", true }, { "gaming-online.tk", true }, @@ -50616,8 +58743,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamingerox.com", true }, { "gamingexodus.com", true }, { "gamingexperts.ga", true }, + { "gamingforecast.com", true }, { "gaminggear.bg", true }, { "gaminghost.ml", true }, + { "gaminglaptop.deals", true }, { "gaminglessonest.ga", true }, { "gamingmeets.com", true }, { "gamingmonitortest.com", true }, @@ -50629,7 +58758,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamingtilltheend.cf", true }, { "gamingtoday.ga", true }, { "gamingtopbox.ga", true }, - { "gaminguniverse.pl", true }, { "gamingwesters.ga", true }, { "gamingwithcromulent.com", true }, { "gamingx.tk", true }, @@ -50638,81 +58766,90 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gamishijabsyari.com", true }, { "gamishou.fr", true }, { "gamivo.com", true }, + { "gamize.com", true }, + { "gamma-travel.fr", true }, + { "gammaboxtech.com", true }, { "gammabrossfrance.fr", true }, { "gammaknife.com", true }, { "gammaphibeta.tk", true }, - { "gamonacci.com", true }, - { "gamster.tv", true }, + { "gammonvillage.com", true }, + { "gamv.eu", true }, { "gan.wtf", true }, + { "ganado.org", false }, + { "ganaha.org", true }, + { "ganapati.fr", true }, { "ganardinerillo.tk", true }, - { "ganardineroporinternett.com", true }, { "ganasoku.net", true }, { "gancedo.com.es", true }, { "gandalfcz.tk", true }, { "gandalfservice.com", true }, { "gandalfthefeline.com", true }, + { "gandmfamilydental.com", true }, + { "gandmltd.co.uk", true }, { "gangbangs.tk", true }, { "gangbangteen.net", true }, { "ganggalbichler.at", true }, { "ganglioslinfaticos.com", true }, - { "gangnam-club.com", true }, { "gangnamcool.com", true }, + { "gangnamoffices.com", true }, { "gangrulz.tk", true }, { "gangstafier.tk", true }, { "gangstaflow.tk", true }, { "gangsterz.tk", true }, { "ganintegrity.com", false }, { "gankel.nl", true }, + { "ganneff.de", true }, + { "gannett-cdn.com", true }, { "gannettinnovation.com", true }, { "ganodermatiendaonline.com", true }, { "gant.tk", true }, + { "gantt-chart.com", true }, { "ganyouxuan.com", true }, - { "ganzgraph.de", true }, - { "ganztagplus.de", true }, + { "ganzgraph.de", false }, { "gao.rocks", true }, { "gao4.pw", true }, { "gaodebo.com", true }, + { "gaoice.top", true }, { "gaoinnovation.gov", true }, { "gaoinnovationlab.gov", true }, { "gaoinnovations.gov", true }, { "gaojianli.me", true }, { "gaojianli.tk", true }, { "gaon.network", true }, + { "gaoqirun.com", true }, { "gaos.org", true }, - { "gaozj.com", true }, - { "gapdirect.com", true }, - { "gapfa.org", false }, + { "gap150.jp", true }, { "gapfa.ro", true }, { "gaphag.ddns.net", true }, { "gapmechanical.com", true }, { "gaponov.tk", true }, { "garage-leone.com", true }, { "garage.click", true }, + { "garage042.bg", true }, { "garage15.com.ua", true }, { "garagechief.com", true }, { "garagedejan.ch", true }, { "garagedoorrepaircedarhilltx.com", true }, { "garageenginuity.com", true }, - { "garagegoossens.be", true }, { "garagemhermetica.org", true }, { "garagen-crew.de", true }, { "garagenet.com", true }, + { "garageportcenter.se", true }, { "garagerogge.be", true }, - { "garagesmart.com.au", true }, - { "garagevanhulle-used.be", true }, - { "garagewisdom.com", true }, - { "garajedeideas.com", true }, { "garanteasy.com", true }, - { "garantieabschluss.de", false }, + { "garantieabschluss.de", true }, { "garaventa.com", true }, - { "garazskapuszereles.hu", true }, { "garbage-juice.com", true }, { "garbarinocatalogo.com", true }, { "garbuszus.de", true }, { "garbuz.ga", true }, - { "garciagerman.com", true }, + { "garcia-franco.com", true }, + { "garcia-leplus.com", true }, + { "garciacarrion.com", false }, + { "garcialeplus.com", true }, { "garciam.gt", true }, { "garciaortiz.com", true }, + { "garco.co", true }, { "garda-see.mobi", true }, { "gardarika.tk", true }, { "garden-land.ga", true }, @@ -50721,22 +58858,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garden4less.co.uk", true }, { "gardenblog.tk", true }, { "gardencentreshopping.co.uk", true }, + { "gardencityal.gov", true }, { "gardengameshireuk.com", true }, { "gardeninggroot.com", true }, + { "gardenofads.com", true }, { "gardenplantslife.com", true }, { "gardenroomsdirect.co.uk", true }, - { "gardensofelegance.com", true }, + { "gardenstatecakes.com", true }, { "gardensuperstore.com.au", true }, + { "garder.me", true }, { "gardikagigih.com", true }, { "gardinenzubehoer.tk", true }, { "gardinia.ae", true }, + { "gardinpets.com", true }, { "gardis.ua", true }, { "gardnerlawyers.com", true }, - { "gardonslecap-covid19.ch", true }, { "garduri-electrice-animale.ro", true }, + { "gardurialuminiuiasi.ro", true }, { "garethbowker.com", true }, + { "garethbowker.uk", true }, { "garethkirk.com", true }, - { "garethkirkreviews.com", true }, { "garethrhugh.es", true }, { "garfieldairlines.net", true }, { "garfieldairlines.tk", true }, @@ -50748,15 +58889,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gargola.tk", true }, { "garibaldi.gov", true }, { "gariganshi.ml", true }, + { "garip.me", true }, { "garito3pa.tk", true }, { "garlandcountyar.gov", true }, { "garmonia.ml", true }, { "garmonia.tk", true }, { "garnetnv.com", true }, { "garnierna.it", true }, + { "garnix-openair.de", true }, + { "garnuch-immo.de", true }, { "garnuchbau.de", true }, { "garo.email", true }, - { "garo.host", true }, { "garo.ninja", true }, { "garochristian.us", true }, { "garona.ru", true }, @@ -50765,8 +58908,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garotastop10.tk", true }, { "garotos.gq", true }, { "garotos.tk", true }, + { "garp.org", true }, + { "garrafastermicas.net.br", true }, + { "garrardcountyky.gov", true }, { "garrettcornwell.tk", true }, { "garrettcountymd.gov", true }, + { "garrettmotion.com", true }, + { "garrettpopcorn.com", true }, { "garrettrasel.com", true }, { "garrigan.info", true }, { "garrigan.nyc", true }, @@ -50778,17 +58926,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garrow.se", true }, { "garrowdigitalmedia.com", true }, { "garrowmediallc.com", true }, - { "garrulousgrimoire.com", true }, { "garryserver.de", true }, - { "garsio.com", false }, + { "garsio.com", true }, { "gartanien.de", true }, { "garten-diy.de", true }, { "gartenbaur.de", true }, - { "gartenforsenate.com", true }, { "gartengutachter.org", true }, { "gartenplanung-brendes.de", true }, - { "gartmaninsurance.net", true }, - { "garuda.fun", true }, { "garudam.info", true }, { "garwoh.de", true }, { "gary.gov", true }, @@ -50799,17 +58943,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "garywhittington.com", false }, { "gas-boilers.tk", true }, { "gas-proekt.tk", true }, + { "gasar.com", true }, { "gasbarkenora.com", true }, { "gasenergy.kz", true }, + { "gasesdelaguajira.com", true }, { "gashalot.com", true }, { "gasherde.tk", true }, - { "gasiline.com", true }, { "gasinstallationsjohannesburg.co.za", true }, { "gasmar.cl", true }, - { "gasnews.net", true }, { "gasoline.nl", true }, { "gasometria.com", true }, - { "gaspapp.com", true }, { "gaspard-ulliel.tk", true }, { "gasparesganga.com", true }, { "gasscc.id", true }, @@ -50822,12 +58965,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gassycat.uk", true }, { "gassyukumenkyoguide.com", true }, { "gastarbajter.tk", true }, + { "gastepress.com", true }, + { "gasthausbauernhof.ch", true }, + { "gasthaustalacher.ch", true }, { "gastonvietto.tk", true }, { "gastouderbureausnoesje.nl", true }, { "gastoudererenda.nl", true }, - { "gastrailer.com", true }, { "gastro-dino.de", true }, { "gastroalianza.es", true }, + { "gastroboss.cz", true }, { "gastrodino.com", true }, { "gastrodino.de", true }, { "gastroenterologen.no", true }, @@ -50835,40 +58981,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gastromedicalcenter.com.br", true }, { "gastronom.ga", true }, { "gastronomias.com.pt", true }, + { "gastrosfera.info", true }, { "gastrotiger.at", true }, { "gastrotiger.de", true }, { "gatapro.net", false }, { "gate.sc", true }, - { "gate109.com", true }, { "gate2home.com", true }, + { "gate4you.com", true }, { "gatehub.net", true }, + { "gatekiller.co.uk", true }, { "gatemaster.ga", true }, - { "gatemotorsalberton.co.za", true }, - { "gatemotorsgermiston.co.za", true }, + { "gatemotorsbedfordview.co.za", true }, + { "gatemotorskyalami.co.za", true }, { "gatemoves.com", true }, + { "gatenz-panel.com", true }, { "gatesstlouis.com", true }, { "gatestoaesgaard.tk", true }, + { "gateway-cart.com", true }, { "gatewaybridal.com", true }, - { "gatewaydentalinc.com", true }, + { "gatewayfurniture.com", true }, { "gatewayp.com", true }, + { "gatewaytire.com", true }, + { "gatewaytrial.com", true }, + { "gatewaytrust.org.uk", true }, { "gathegi.ga", true }, { "gatherling.com", true }, + { "gatherlyapp.com", true }, + { "gatherup.com", true }, { "gathu.co.ke", true }, { "gatilagata.com.br", true }, { "gatilhoarmas.com.br", true }, { "gatlink.tk", true }, + { "gatoland.es", true }, { "gatolovers.es", true }, { "gatomix.net", true }, + { "gator34.com", true }, { "gatoslivres.org", true }, { "gattomatto.tk", true }, + { "gatturkey.com", true }, { "gauche.com", true }, { "gaudeamus-folklor.cz", true }, { "gaudeamuschoir.tk", true }, { "gaudere.co.jp", true }, + { "gaudernconstruction.com", true }, { "gaudi-renove.com", true }, { "gaumenverfuehrer.de", true }, - { "gauravgo.com", false }, - { "gauravtiwari.org", false }, { "gaurl.ga", true }, { "gautam-iiith.tk", true }, { "gautam-k.tk", true }, @@ -50881,14 +59038,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gavin.sh", true }, { "gavinbrown.ca", true }, { "gavingreer.com", true }, + { "gavinnewsom.com", true }, { "gavins.stream", true }, + { "gavintang.me", true }, { "gavlix.se", true }, - { "gavr.me", true }, - { "gavr.net", true }, - { "gavr.org", true }, - { "gavr.ru", true }, { "gavr.space", true }, - { "gavr.xyz", true }, + { "gavvie.com", true }, + { "gaw.sh", true }, { "gay-chat.it", true }, { "gay-jays.com", true }, { "gay-personal-ads.com", true }, @@ -50897,55 +59053,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gayauthors.org", true }, { "gaycafe.lt", true }, { "gaychatrooms.tk", true }, + { "gaycock4u.com", true }, + { "gaycum.de", true }, { "gayfeedr.com", true }, { "gayga.gov", true }, + { "gaygay.pro", true }, { "gaygeeks.de", true }, - { "gayglobaltravel.com", true }, + { "gayglobaltravel.com", false }, + { "gayhotmovies.com", true }, { "gaymen.pictures", true }, { "gaymer.network", true }, - { "gaymerconnect.net", true }, - { "gaymerx.com", true }, - { "gaymerx.net", true }, { "gaymerx.org", true }, { "gaynight.tk", true }, + { "gayonly.ch", true }, + { "gaypornvideos.xxx", true }, { "gayreppc.com", true }, { "gaysexpositions.guide", true }, + { "gayspress.com", true }, + { "gaytor.rent", true }, { "gaytorrent.ru", true }, { "gaytubec.com", true }, - { "gayubo.com", true }, + { "gayuhtri.my.id", true }, { "gayukai.net", true }, + { "gaz-connect.ru", true }, { "gazapos.ga", true }, { "gazaryan.tk", true }, { "gazbonicacidmc.ga", true }, + { "gazeta-n1.ru", true }, { "gazete.org", true }, - { "gazetefutbol.de", true }, - { "gazetekarinca.com", true }, + { "gazetekarinca.com", false }, { "gazette.govt.nz", true }, - { "gazette365.com", true }, + { "gazettengr.com", true }, + { "gazi.edu.tr", true }, + { "gazik.com.ua", true }, { "gazizov.tk", true }, - { "gazoakley.com", true }, { "gazobeton-don.ru", true }, + { "gazoneo.fr", true }, { "gazor.tk", true }, { "gazoz.ga", true }, + { "gazst.ru", true }, { "gazza.tk", true }, { "gb-repair.com", true }, { "gba.ge", true }, + { "gba.gob.ar", true }, { "gbatroid.com", true }, { "gbcdigitalmarketing.com", true }, { "gbcomm.tk", true }, - { "gbcreative.com.br", true }, { "gbcsummercamps.com", true }, { "gbdavisplasticsurgery.com", true }, + { "gbfoundation.org", true }, { "gbhem.org", true }, { "gbi-etalon.ru", true }, { "gbinsta.com", true }, { "gbiotech.tk", true }, { "gbk-host.de", true }, { "gbk-teamplan.de", true }, + { "gbkom.de", true }, { "gbl.selfip.net", false }, { "gbmwolverine.com", true }, { "gboys.net", false }, { "gbp.com.ph", true }, + { "gbpayments.io", true }, { "gbquotes.com", true }, { "gbs-uk.com", false }, { "gbsapri.it", true }, @@ -50956,23 +59124,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gc-hartberg.tk", true }, { "gc-mc.de", true }, { "gc-pfalz.de", true }, - { "gc.gy", true }, { "gc.ru.net", true }, + { "gc22.xyz", true }, { "gc4hr.org", true }, + { "gcabrasives.co.uk", true }, + { "gcb.com.my", true }, { "gcbit.dk", true }, - { "gccfoodstuff.com", true }, + { "gcc-globalclimatechange.com", false }, + { "gccfoodstuff.com", false }, + { "gcdamp.gov", true }, { "gcfadvisors.com", true }, { "gcgeeks.com.au", true }, { "gcgroup.io", true }, { "gchp.ie", false }, { "gchq.lol", true }, { "gchq.wtf", true }, - { "gcmsnotes.com", true }, + { "gclegal.com.au", true }, + { "gclpower.com", true }, { "gcode.space", true }, { "gcoded.de", true }, { "gcolomboart.com", true }, { "gconcept.tk", true }, { "gconstruction.org", true }, + { "gcoption.pro", true }, { "gcorevape.ca", true }, { "gcqd.fr", true }, { "gcrm.jp", true }, @@ -50980,77 +59154,95 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gcschool.tk", true }, { "gcsepod.com", true }, { "gcso.gov", true }, + { "gctdtx.gov", true }, { "gcuf.edu.pk", true }, { "gcwatx.gov", true }, { "gcwcid1tx.gov", true }, - { "gcxstudio.cn", true }, - { "gd1214b.icu", true }, + { "gd-ots.com", true }, + { "gd1214b.icu", false }, + { "gdacs.org", true }, { "gdax.com", true }, + { "gdb.re", true }, { "gddzqg.com", true }, - { "gde-kupyt.ru", true }, - { "gdedoma.ru", false }, + { "gdedoma.ru", true }, { "gdesemena.ru", true }, - { "gdevpenze.ru", true }, { "gdhzcgs.com", true }, { "gdiary.net", true }, { "gdit.com", true }, { "gdkn0.gq", true }, + { "gdm.cl", true }, { "gdngs.de", true }, { "gdoce.es", false }, { "gdomusicaeventi.tk", true }, { "gdpr-pohotovost.cz", true }, { "gdpr.fr", true }, { "gdretrofunk.cf", true }, + { "gdtd.info", true }, { "gdufe.top", true }, { "gdv.me", false }, { "gdwservices.com", true }, - { "gdxware.com", true }, { "gdz.tv", true }, + { "gdz4you.com", true }, { "ge1.me", false }, - { "ge3k.net", false }, + { "gea-waldviertler.at", true }, { "geafworks.tk", true }, + { "geaiai.com", true }, { "gealot.com", true }, { "geansunter.com", true }, { "gear-acquisition-syndrome.community", true }, + { "gear4music.ch", true }, + { "gear4music.com", true }, + { "gear4music.de", true }, + { "gear4music.dk", true }, + { "gear4music.es", true }, + { "gear4music.fr", true }, + { "gear4music.ie", true }, + { "gear4music.it", true }, + { "gear4music.nl", true }, + { "gear4music.no", true }, + { "gear4music.se", true }, { "gearallnews.com", true }, { "gearbot.rocks", true }, { "gearboxhero.com", true }, { "gearev.net", true }, { "gearfinder.nl", true }, { "gearnews.tk", true }, - { "gearnify.com", true }, { "gearset.com", true }, { "gearsupply.com", true }, - { "geartips.club", true }, + { "geartips.club", false }, { "gearwise.se", true }, - { "geaskb.nl", true }, + { "geaskb.nl", false }, { "geass.xyz", true }, + { "geauxdns.com", true }, { "geba-online.de", true }, { "gebaeude-braun.de", true }, { "gebaeudebilanzierung.de", true }, + { "gebaeudeklima-schweiz.ch", true }, { "gebeliktakibim.com", true }, { "geben.digital", true }, + { "gebiert.de", true }, { "geblitzt.de", true }, { "gebn.co.uk", true }, { "gebn.uk", true }, - { "geboortestoeltje.com", true }, { "geborgen-wachsen.de", true }, { "gebpow.com", true }, { "gebruikershandleiding.com", true }, + { "gebrvoit.de", true }, { "gecem.org", true }, { "gechr.io", true }, { "geckler-ee.de", false }, { "geckogamers.com", true }, + { "geckoroutes.com", true }, { "geckos-geocaching.de", true }, + { "geckosurfschool.com", true }, { "gecosan.com", true }, { "gedachtekaarsje.nl", true }, { "gedankenworks.com", false }, - { "geddert.systems", true }, { "geder.at", true }, { "gedichtensite.tk", true }, + { "gediga.net", true }, { "gedlingcastlehire.co.uk", true }, { "gedlingtherapy.co.uk", true }, - { "gedon.org", true }, { "geecrat.com", true }, { "geek-hub.de", true }, { "geek-rooms.tk", true }, @@ -51068,21 +59260,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geekcreations.co.uk", true }, { "geekdama.com.br", true }, { "geekdocs.de", true }, + { "geekdoit.com", true }, { "geekedin.ga", true }, - { "geekeries.org", true }, + { "geekelectronico.com", true }, { "geekgao.cn", true }, { "geekgear.tk", true }, { "geekgirltech.com", true }, { "geekhelpline.com.au", true }, { "geekium.me", true }, { "geeklair.net", true }, - { "geeklan.co.uk", false }, + { "geeklan.co.uk", true }, { "geekles.net", true }, { "geekmagazine.com.br", true }, { "geeknik.com", true }, - { "geekofun.com", true }, + { "geekofeminin.com", true }, { "geekowl.com", true }, { "geekpad.com", true }, + { "geekplay.fr", true }, { "geekport.net", true }, { "geekpost.net", true }, { "geeks.berlin", true }, @@ -51100,22 +59294,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geektechsolutions.com.au", true }, { "geektechypro.tk", true }, { "geektopia.es", true }, - { "geektweax.com", true }, { "geekurl.cf", true }, - { "geekwanderer.com", true }, { "geekwhack.org", true }, { "geekwithabudget.com", true }, { "geekwu.org", true }, { "geekyboi.co.uk", true }, - { "geekyleisure.com", true }, { "geekymansion.com", true }, { "geekynutritionist.com", true }, - { "geekyquiz.com", true }, { "geekystudios.us", true }, { "geekz.sk", true }, { "geekzone.co.nz", true }, { "geekzone.fr", true }, - { "geekzspawnhere.com", true }, + { "geele.co.th", true }, { "geemprestimos.com", true }, { "geenoo.net", true }, { "geenspam.net", true }, @@ -51128,46 +59318,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geestelijkgezondgent.be", true }, { "geesthof.de", true }, { "gefeuert.de", true }, + { "gefinances.com", true }, { "gefolge.org", true }, { "gegeco.ch", false }, { "gegevensdelen.nl", true }, { "geh.li", true }, - { "gehaowu.com", true }, { "gehirn.co.jp", true }, { "gehirn.jp", true }, { "gehirnapis.jp", true }, { "gehirnstatus.jp", true }, { "gehopft.de", true }, + { "gehrdencarre.de", true }, { "gehrke.cloud", true }, { "gehrke.in", true }, { "gehrke.nrw", true }, { "gehsicht.de", true }, { "geico.com", true }, { "geigr.de", true }, - { "geiler-job.berlin", true }, - { "geilesluder.com", true }, + { "geilefrauen.pics", true }, { "geileverhalen.tk", true }, { "geiser-family.ch", true }, + { "geishamika.com", true }, + { "geisten.net", true }, { "geistlib.xyz", true }, { "geitenijs.com", true }, { "gekko.tk", true }, + { "gekkoldprom.com", true }, { "gekleurdverleden.be", true }, { "geko.cf", true }, - { "gekosoft.eu", true }, { "gelaendermanufaktur.de", true }, + { "gelan.nl", true }, { "gelanc.ml", true }, { "gelaterista.de", true }, { "gelb-computer.de", true }, + { "gelcocktail.fr", true }, { "geld-im-blick.de", true }, { "geld-magazin.info", true }, { "geldimblick.de", true }, { "geldmaat.nl", true }, { "geldoderleben.tk", true }, + { "geldsparen.in", true }, { "geldteveel.eu", true }, + { "geldvoorelkaar.nl", true }, { "geleenbeekdal.nl", true }, { "geleia-real.com", true }, { "geli-graphics.com", true }, { "gelijk.cf", true }, + { "gelisimakademi.com.tr", true }, { "gellis12.com", true }, { "gelmostop.tk", true }, { "geloft.cf", true }, @@ -51179,6 +59376,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gelsey.com", true }, { "geluidsstudio.com", true }, { "geluidstechniek.tk", true }, + { "geluidsverwachting.nl", true }, { "gelukkigehonden.nl", true }, { "geluleminceur.fr", true }, { "gelvetika.cf", true }, @@ -51200,19 +59398,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gemforex.pro", true }, { "gemforex.top", true }, { "gemgroups.in", true }, + { "gemhunter.pro", true }, + { "gemik.com", true }, { "gemini.com", true }, + { "geminicorp.be", false }, { "geminifm.tk", true }, + { "gemmasfashion.com", true }, { "gemmy.cf", true }, { "gemonite.com", true }, { "gempak.com", true }, - { "gemplast.ir", true }, { "gempool.ie", true }, { "gemquery.com", true }, - { "gemsforeveryone.com", true }, { "gemstn.com", true }, { "gemstones.com", true }, { "gemwerx.com", true }, - { "gemwire.uk", true }, { "gen53.org", true }, { "genbars.jp", true }, { "genbright.com", true }, @@ -51224,6 +59423,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gend.moe", true }, { "gend.work", true }, { "gender-summit.com", true }, + { "gendergp.com", true }, { "genderidentiteit.nl", true }, { "genderreveal.nl", true }, { "genderrevealshop.nl", true }, @@ -51232,6 +59432,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gene-drive.com", true }, { "gene-drives.com", true }, { "geneacdn.net", true }, + { "genealog.fr", true }, { "genealog.ong.br", true }, { "genealogiegazet.nl", true }, { "genealogieonline.nl", true }, @@ -51241,6 +59442,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geneanet.org", true }, { "geneastar.org", true }, { "geneau.net", true }, + { "geneawiki.com", true }, { "geneeskrachtig.com", true }, { "genehightower.com", true }, { "genehome.com.au", true }, @@ -51251,6 +59453,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genen.ga", true }, { "generace-id.org", true }, { "generacionmoderatto.tk", true }, + { "generaclatam.com", true }, { "generador-electrico.com", true }, { "generadorminecraft.tk", true }, { "general-anaesthesia.com", true }, @@ -51261,22 +59464,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "generalcustomshop.com.br", true }, { "generali-investments-portal.cz", true }, { "generali-worldwide.com", true }, + { "generali.com.tr", false }, { "generalinsuranceagencies.com.au", true }, { "generalinsuranceservices.com", true }, { "generalliabilityinsure.com", true }, { "generalpsych.cf", true }, - { "generalservice.eu", true }, + { "generalshale.com", true }, { "generalsync.com", true }, + { "generaltitlewebui-stage.azurewebsites.net", true }, { "generaly.ga", true }, { "generateur-thot.fr", true }, + { "generateurdapplis.fr", true }, { "generateurdesmiley.tk", true }, + { "generatevelocity.com", true }, + { "generation-clic.net", true }, + { "generation-free.org", true }, { "generation247.nl", true }, { "generationgoat.com", true }, { "generationnext.pl", false }, { "generationr.nl", true }, { "generationsweldom.com", true }, + { "generator-energy.ru", true }, + { "generatorcountry.com", true }, { "generatorkodowkreskowych.pl", true }, { "generatormusic.tk", true }, + { "generatorreview.pro", true }, + { "generators-pro.ru", true }, { "generic-noroxin.ml", true }, { "generic-plavix.ga", true }, { "generic-sildenafil-citrate.cf", true }, @@ -51306,8 +59519,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genericrhinocort.ga", true }, { "genericuroxatral.gq", true }, { "genericvytorin.ml", true }, + { "generix.biz", true }, { "generujdata.cz", true }, { "geneseecountymi.gov", true }, + { "geneseetwpmi.gov", true }, + { "genesis-a-fresh-translation-from-hebrew-to-english.com", true }, + { "genesis-herbs.com", true }, { "genesisblock.com", true }, { "genesiscoding.net", true }, { "genesiseureka.com", true }, @@ -51316,9 +59533,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genesismachina.ca", true }, { "genesisplay.tk", true }, { "genesistoday.org", true }, - { "genesistrading.com", false }, + { "genesys-uk.com", true }, { "genetargetsolutions.com.au", true }, { "genetidyne.com", true }, + { "genetworx.com", true }, { "geneuse.ai", true }, { "genevaal.gov", true }, { "genevablogers.ga", true }, @@ -51333,6 +59551,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genghan.com", true }, { "genhu.com.ar", true }, { "genia-life.de", true }, + { "genial.ly", true }, { "genie.tk", true }, { "genie23.fr", false }, { "genieall.com", true }, @@ -51345,20 +59564,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genioyfigura.tk", true }, { "geniusclan.tk", true }, { "geniuses.gq", true }, - { "geniushost.in", true }, - { "geniusmarka.com", true }, + { "geniussis.com", true }, { "geniusteacher.in", true }, + { "geniuswin.it", true }, { "geniuszone.biz", true }, { "genkihub.com", true }, - { "genlack.com", true }, + { "genlack.com", false }, { "genmab.co.jp", true }, { "gennaroabete.duckdns.org", true }, { "gennerator.com", true }, + { "gennet.com", true }, + { "geno-hyp.de", true }, + { "geno-hypo.de", true }, + { "geno-invest.com", true }, { "geno4links.ml", true }, { "genocidediary.org", true }, { "genocideofua.org", true }, { "genodeftest.de", true }, + { "genohyp.com", true }, + { "genohyp.de", true }, + { "genohyp.net", true }, + { "genohypo.de", true }, { "genom.by", true }, + { "genome-reform.com", true }, { "genome.eu", true }, { "genome.gov", false }, { "genomedia.jp", true }, @@ -51366,15 +59594,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genomequestlive.com", true }, { "genomesoft.systems", true }, { "genometrik.de", true }, + { "genomicsinc.com", true }, + { "genomicsplc.com", true }, { "genoog.com", true }, { "genophore.com", true }, - { "genosse-einhorn.de", true }, + { "genoplot.com", true }, { "genossen.ru", true }, { "genossenwiese.ch", true }, { "genovatoday.it", true }, { "genoveve.de", true }, { "gensenwedding.jp", true }, - { "genshiken-itb.org", true }, { "gensicke.de", true }, { "gensleiten.de", true }, { "genslerapps.com", true }, @@ -51384,6 +59613,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gensokyo.re", true }, { "gensonline.eu", true }, { "gentapps.com", true }, + { "gentas.se", true }, { "gentbereikbaar.be", true }, { "gentblogt.be", true }, { "gentbrugsemeersen.be", true }, @@ -51395,7 +59625,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gentcongres.org", true }, { "gentcreativecityofmusic.be", true }, { "gentec.cz", true }, - { "gentedehoy.com", true }, { "gentengarde.be", true }, { "gentevenement.be", true }, { "gentfietst.be", true }, @@ -51412,6 +59641,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gentledentalcaregroup.co.uk", true }, { "gentleentuit.be", true }, { "gentlemaan.com", true }, + { "gentlemanwithin.com", true }, { "gentlent.biz", true }, { "gentlent.blog", true }, { "gentlent.cn", true }, @@ -51437,6 +59667,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gentmuziekstad.be", true }, { "gentoo-blog.de", false }, { "gentooblog.de", true }, + { "gentoocn.org", true }, + { "gentryarkansaspd.gov", true }, + { "gentrydeng.cn", true }, + { "gentrydeng.com", true }, { "gentse-ondernemersdagen.be", true }, { "gentsefeesten.be", true }, { "gentsefeesten.gent", true }, @@ -51449,6 +59683,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "genunlimited.ga", true }, { "genunlimited.tk", true }, { "genusbag.com", true }, + { "genutax.ca", true }, + { "genuxtsg.com", true }, { "genxreviewest.ga", true }, { "genzdx.xyz", true }, { "genzia.ga", true }, @@ -51457,23 +59693,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geo-portale.it", true }, { "geoactivism.org", true }, { "geoarchive.tk", true }, + { "geobluestudents.com", true }, + { "geocaching.hu", true }, { "geocar.com", true }, { "geocod.tk", true }, { "geocoin2016.dk", true }, { "geocommunicator.gov", true }, { "geocompass.at", true }, + { "geoconcretsa.com", true }, { "geoconvention.ga", true }, + { "geodatasource.com", true }, { "geodesic-tents.com", true }, { "geodesign.tk", true }, + { "geodnatechsub.com", true }, { "geoenvironconsult.ga", true }, { "geofabrika.ru", true }, { "geoffanderinmyers.com", true }, { "geoffmyers.com", true }, - { "geoffnussmd.com", true }, { "geoffreymmoore.pw", true }, + { "geoffreyrichard.com", true }, { "geoffsec.org", true }, { "geoflowerstudio.com", true }, { "geoforex.ro", true }, + { "geofox.eu", true }, { "geofox.org", true }, { "geogas.com.au", true }, { "geografia-peru.tk", true }, @@ -51489,16 +59731,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geolite.info", true }, { "geologist.tk", true }, { "geology-schools.com", true }, + { "geolonia.com", true }, { "geomac.gov", true }, { "geomadrid.ga", true }, { "geomagne.tk", true }, { "geoman.tk", true }, + { "geomancy.net", true }, { "geomatic.tk", true }, { "geometra.roma.it", true }, { "geometra24.it", true }, { "geometri.tk", true }, { "geometriya-dash.online", true }, - { "geomonkeys.com", true }, + { "geomfilms.com", true }, { "geon.nl", true }, { "geonice.ga", true }, { "geonot.es", true }, @@ -51512,6 +59756,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "george-orwell.com", true }, { "george.black", true }, { "george.com.tw", true }, + { "george.id.au", true }, { "george.ooo", true }, { "georgebeverlysheamemorial.org", true }, { "georgeblack.me", true }, @@ -51529,12 +59774,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "georgemudie.com", true }, { "georgenad.duckdns.org", true }, { "georgepancescu.ro", true }, + { "georgeraphael.net", true }, + { "georges-sadeler.com", true }, { "georges.nu", true }, { "georgesand.be", true }, { "georgeshobeika.cf", true }, { "georgeslasaucisse.fr", true }, - { "georgesmith.com", true }, { "georgetownohio.gov", true }, + { "georgetowntexas.gov", true }, { "georgewatson.me", true }, { "georgewbushlibrary.gov", true }, { "georgiaaccess.gov", true }, @@ -51543,12 +59790,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "georgiaglassrepair.com", true }, { "georgiainfo.ga", true }, { "georgiajetcharter.com", true }, + { "georgian.io", true }, { "georgianews.ml", true }, { "georgiangames.gq", true }, { "georgianhistory.tk", true }, { "georgiaparks.org", true }, { "georgiastuartyoga.co.uk", false }, - { "georgiaurologist.com", true }, { "georgiawrestling.tk", true }, { "georgie.cc", true }, { "georgiebailey.com", true }, @@ -51565,15 +59812,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "georglauterbach.de", true }, { "georgmayer.eu", true }, { "geosales.tk", true }, + { "geoscout.uk", true }, { "geoserves.com", true }, - { "geosever.cz", true }, + { "geosever.cz", false }, { "geosno.com", true }, { "geospecialsers.ga", true }, { "geostems.com", true }, { "geoswohnen.de", true }, - { "geotab.com", true }, { "geotabgov.us", true }, + { "geotec-weilrod.de", true }, { "geotech.tk", true }, + { "geotemtemuco.cl", true }, + { "geotextil.ec", true }, { "geothermalproducts.info", true }, { "geotrust.com.ru", true }, { "geotruth.net", true }, @@ -51583,8 +59833,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gep.ch", true }, { "gepassociati.cloud", true }, { "gepe.ch", true }, - { "gepetoauth.herokuapp.com", true }, { "gepgroup.gr", true }, + { "gepo69.net", true }, { "gepps.de", true }, { "geppy.im", true }, { "gera-haushaltsaufloesung.de", true }, @@ -51594,6 +59844,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "geranium.dk", true }, { "gerard-klooster.net", true }, { "gerardinden.nl", true }, + { "gerardmccabe.com.au", true }, { "gerardozamudio.mx", true }, { "gerards-abenteuer.de", true }, { "gerbang-singkolo.ga", true }, @@ -51603,64 +59854,75 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gerbyte.co.uk", true }, { "gerbyte.com", true }, { "gerbyte.uk", true }, + { "gerd-frank.com", true }, { "gereedschapmuseumdehobbyzolder.tk", true }, { "gerenciaconsultor.com", true }, + { "geret.cl", true }, { "gergoladi.me", true }, { "gerimileva.com", true }, { "gerinet.pl", true }, { "germain.cc", true }, { "germaintechnologies.com", true }, + { "german242.com", true }, + { "germanclarkoh.gov", true }, { "germancoding.com", true }, + { "germancoding.de", true }, { "germancorbo.com", true }, - { "germancraft.net", true }, { "germandarknes.net", true }, { "germanicvs.tk", true }, { "germaniumsoft.com", true }, { "germanmasterpainters.nz", true }, { "germanophobia.tk", true }, + { "germanpay.com", true }, { "germanrojas.ga", true }, { "germansoldiers.net", true }, { "germanssky.de", true }, + { "germantolobis.lt", true }, { "germantownpolicewi.gov", true }, { "germantownwi.gov", true }, { "germantrip.tk", true }, + { "germanymade.com", true }, + { "germanypay.com", true }, { "germanytravel.ga", true }, { "germanytravelguide.ml", true }, { "germanzero-nv.de", true }, { "germfr.ee", true }, { "germinalekeren.tk", true }, + { "germistonplumber24-7.co.za", true }, { "germistry.com", true }, { "gernert-server.de", true }, { "gero.io", true }, { "geroiplavska.tk", true }, + { "geropa.it", true }, { "gerris.tk", true }, { "gerrit078.nl", true }, { "gerritcodereview.com", true }, { "gers-authentique.com", true }, { "gerstbauer.tk", true }, { "gerstner.it", true }, + { "gertiessmalldogrescue.org", true }, { "gertjan-tamerus.tk", true }, { "gertrudeco.com", true }, + { "gertrudentor.de", true }, { "gerum.dynv6.net", false }, { "gerwinvanderkamp.nl", true }, { "ges-bo.de", true }, { "gesamenvat.nl", true }, { "gesath.co", true }, { "gesath.com", true }, + { "geschenkkoerbeversand.de", true }, { "geschenkkorb-ideen.de", true }, { "geschenkly.de", true }, { "geschichtscheck.de", true }, { "geschichtswerkstatt.tk", true }, - { "geschmacksache.online", true }, { "geschmackspiloten.de", false }, { "geschwinder.net", true }, - { "gesditel.es", false }, { "geseduc.cl", true }, { "gesentorno.tk", true }, { "gesetz.tk", true }, - { "gesevi.com", true }, { "gesica.cloud", true }, { "gesmav-trier.de", true }, + { "gesnerfigueiredo.com.br", true }, { "gesnex.com", true }, { "gessettirotti.it", true }, { "gestaoclub.com.br", true }, @@ -51668,45 +59930,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gestionadministrativevirtuelle.ca", true }, { "gestionadministrativevirtuelle.ch", true }, { "gestionadministrativevirtuelle.com", true }, + { "gestione-certificazioni.it", true }, { "gestionth.com", true }, { "gestorehotel.com", true }, { "gestorestecnologicos.com", true }, - { "gestus.co", true }, { "gestus.tk", true }, + { "gesuiti.it", true }, { "gesundessen.at", true }, { "gesundessen.ch", true }, { "gesundessen.de", true }, + { "gesundheit-ifg-muenchen.de", true }, { "gesundheitmassage.com", true }, { "gesundheitswelt24.de", true }, { "gesundimmund.de", true }, + { "get-a-wingman.com", true }, { "get-asterisk.ru", true }, { "get-baaam.com", true }, { "get-erp.ru", true }, { "get-express-vpn.com", true }, - { "get-it-live.com", true }, - { "get-it-live.de", true }, { "get-maurice.com", true }, { "get-my-report.com", true }, - { "get-on.bid", true }, { "get-quick-bits-fast-2018.pw", true }, { "get-refer.com", true }, { "get-x-web-link2.com", true }, { "get-your-business.tk", true }, { "get.design", true }, + { "get.gov", true }, { "get.how", true }, + { "getabear.com", true }, { "getacrane.co.uk", true }, { "getahearing.com", true }, + { "getahostnow.com", true }, + { "getaldea.com", true }, { "getalink.ga", true }, { "getalitools.ru", true }, - { "getanresources.com", true }, { "getanswer.ga", true }, { "getar.tk", true }, + { "getaskoll.at", true }, { "getawaycab.tk", true }, { "getawayline.com", true }, + { "getback.ch", true }, { "getbellhop.co", true }, - { "getbestbooks.com", true }, + { "getblockcard.com", true }, + { "getbodysmart.com", true }, { "getbookked.com", true }, { "getbooks.co.il", true }, + { "getboomerangwater.com", true }, { "getbootstrap.com", true }, { "getboubou.com", true }, { "getbox.me", true }, @@ -51714,25 +59983,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getbreadcrumbs.com", true }, { "getbrowink.com", true }, { "getbutterfly.com", true }, - { "getby.download", true }, - { "getcalc.com", true }, + { "getcabal.com", true }, + { "getcare.com", true }, { "getcarina.com", true }, { "getchip.cc", true }, - { "getcloak.com", false }, + { "getcloak.com", true }, { "getclubsoda.com", true }, { "getcodelove.com", true }, { "getcolq.com", true }, { "getcontact.com", true }, { "getcookie.ml", true }, { "getcreditscore.com.au", true }, + { "getcyber.me", true }, { "getcyber.org", true }, { "getdash.io", true }, { "getdeclutter.com", true }, { "getdinghy.com", true }, + { "getdirectcredit.com", true }, { "getdishnow.tk", true }, + { "getdoc.com.br", true }, { "getdoges.tk", true }, - { "getdone.club", true }, { "getdownon.it", true }, + { "getduds.com", false }, + { "getdumpsterdash.com", true }, + { "getecoins.shop", true }, { "geteducation.tk", true }, { "geteduroam.no", true }, { "getelectronics.tk", true }, @@ -51741,41 +60015,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getescrowest.ga", true }, { "getestudio.com", true }, { "getevidenceers.ga", true }, - { "getexplor.com", true }, + { "getexipure.com", true }, { "getfastanswer.com", true }, { "getfedora.org", true }, + { "getfit.md", true }, + { "getfitbee.com", true }, { "getfitwithkip.com", true }, + { "getflip.com", true }, { "getflorence.co.uk", false }, { "getfreeelectricity.tk", true }, { "getfreeltc.ml", true }, { "getgeek.dk", true }, { "getgeek.ee", true }, { "getgeek.es", true }, - { "getgeek.fi", true }, { "getgeek.fr", true }, { "getgeek.io", true }, { "getgeek.no", true }, { "getgeek.nu", true }, { "getgeek.pl", true }, { "getgeek.se", true }, - { "gethdporn.com", true }, + { "getgreencarpetct.com", true }, { "gethere.gq", true }, - { "gethome.ru", true }, - { "gethost.co.zw", true }, + { "gethotspotshield.com", true }, + { "gethow.org", true }, + { "gethttpsforfree.com", true }, + { "gethvac.pro", true }, { "gethyas.com", true }, { "geti2p.com", true }, + { "getidee.com", true }, + { "getidee.de", true }, { "getidmcc.com", true }, { "getinfoleads.tk", true }, - { "getinphase.com", true }, { "getinsuranceanywhere.com", true }, { "getinternet.gov", true }, - { "getintopc.com", true }, { "getintra.org", true }, - { "getitlive.de", true }, { "getitpeople.com", true }, { "getjadedlocal.com", true }, { "getjms.com", true }, - { "getjobtoday.net", false }, + { "getlaminas.org", true }, { "getlantern.org", false }, { "getlawnbuddy.com", true }, { "getlawyered.com.au", true }, @@ -51786,14 +60063,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getmarksvoice.com", true }, { "getmdl.io", true }, { "getme.cf", true }, + { "getmeback.ru", true }, + { "getmeds.ph", true }, { "getmello.org", true }, + { "getmeloan.org", true }, { "getmerch.eu", true }, - { "getmetech.com", true }, + { "getmimo.com", false }, { "getmonero.cz", true }, { "getmovil.com", true }, { "getmybosslife.com", true }, + { "getnerdio.com", true }, { "getnetset.com", true }, { "getnew.tk", true }, + { "getnews360.com", true }, { "getnib.com", true }, { "getnikola.com", true }, { "getontop.club", true }, @@ -51805,20 +60087,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getpaidtodesign.com", true }, { "getpaidtodev.com", true }, { "getpanelapp.com", true }, - { "getpestoffnow.com", true }, + { "getpdf.in", true }, { "getpet.lt", true }, { "getplus.com.au", true }, + { "getpro.plumbing", true }, { "getprohealth.com", true }, { "getpromo.cf", true }, { "getpublii.com", true }, - { "getrambling.com", true }, { "getready2dance.tk", true }, { "getreadyforever.tk", true }, { "getrelish.com", true }, + { "getrenewedtech.com", true }, { "getresilience.org", true }, + { "getresults.co.za", true }, + { "getroman.com", true }, { "getsamegoal.com", true }, { "getscif.com", true }, { "getsecure.nl", true }, + { "getserm.com", true }, { "getserum.xyz", true }, { "getsession.org", true }, { "getsetbounce.co.uk", true }, @@ -51828,21 +60114,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getsmartlife.in", true }, { "getsmartlook.com", true }, { "getsocreative.com", true }, + { "getspaces.com", true }, + { "getstark.co", true }, { "getstat.net", true }, + { "getstream.io", true }, { "getsubs.net", true }, - { "getsus.com", true }, { "getswadeshi.com", true }, + { "getsweep.com", true }, { "getteamninja.com", true }, { "gettext.tk", true }, { "getthefriendsyouwant.com", true }, - { "getthegoat.com", true }, { "getthejobicanhelp.com", true }, { "gettheworldmoving.com", true }, { "getticker.com", true }, { "gettingtvers.ga", true }, { "gettodoing.com", true }, + { "gettonline.com", true }, { "gettopquality.com", true }, { "gettravelista.com", true }, + { "gettrust.com", true }, { "getts.ro", true }, { "getts.shop", true }, { "gettwo.ml", true }, @@ -51853,31 +60143,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "getvdownloader.com", true }, { "getveer.io", true }, { "getwemap.com", true }, - { "getwisdom.io", true }, + { "getwokegobroke.xyz", true }, + { "getword.com", true }, { "getwork.tk", true }, { "getwsodo.com", true }, { "getyeflask.com", true }, { "getyou.onl", false }, { "getyour.nz", true }, { "getyoureuro.tk", true }, - { "getyourguide.com", true }, { "getyourlifestraight.com", true }, { "getyournurse.de", true }, { "getyourphix.tk", true }, - { "getyourstartcareers.com", true }, { "geulis.tk", true }, { "geus-okna.eu", true }, + { "gevara.cz", true }, { "gevelreinigingtiel.nl", true }, { "gevme.com", true }, + { "gevo.gg", true }, + { "gew.is", true }, { "gewasteelt.ga", true }, { "gewel.io", true }, + { "gewerbe-fix.ag", true }, + { "gewerbe-fix.at", true }, + { "gewerbe-fix.com", true }, + { "gewerbe-fix.org", true }, + { "gewerbefix.biz", true }, + { "gewerbefix.ch", true }, + { "gewerbefix.com", true }, + { "gewerbefix.eu", true }, + { "gewerbefix.net", true }, + { "gewerbefix.org", true }, { "gewinn.tk", true }, + { "gewis.nl", true }, { "gexobiz.tk", true }, { "geyduschek.be", false }, + { "geytabir.cf", true }, { "gezakekazeg.tk", true }, + { "gezginsolar.com", true }, { "gezinnenhilton.com", true }, + { "gezondetips.nl", false }, + { "gezondheidsfondsenvoorrookvrij.nl", true }, { "gezondheidszorg-ict.nl", true }, { "gezondheidszorg-it.nl", true }, + { "gezondverzekerd.nl", true }, { "gf-franken.de", true }, { "gf0.ltd", true }, { "gf5fcalc.com", true }, @@ -51887,29 +60195,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gfc.scot", true }, { "gfcleisure.co.uk", true }, { "gfe.link", true }, - { "gfedating.com", true }, { "gfestival.fo", true }, { "gfetechs.com", true }, { "gfgmmarketing.com", true }, { "gfishbone.com", true }, { "gfk-kunststoff-luebben.de", true }, - { "gflame.de", true }, + { "gfleaks.com", true }, { "gfmp.com.pl", true }, { "gfms.ru", true }, { "gfnetfun.cf", true }, { "gforce.ninja", true }, { "gforex.pro", true }, { "gforex.top", true }, - { "gfoss.eu", true }, { "gfoss.gr", true }, { "gfourmis.co", true }, - { "gfournier.ca", true }, + { "gfrevenge.com", true }, { "gfronline.tk", true }, - { "gftwy.com", true }, + { "gfsolucoesdigitais.com", true }, + { "gfsolucoesdigitais.com.br", true }, { "gfx.cards", true }, { "gfxbench.com", true }, + { "gfxviet.net", true }, { "gfxworld.tk", true }, + { "gfycat.com", true }, { "gg.ax", true }, + { "gg.co.uk", true }, { "gg5197.co", true }, { "gg6729.co", true }, { "gg6729.com", true }, @@ -51918,14 +60228,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gg9397.com", true }, { "gg9721.com", true }, { "gg9728.co", true }, + { "ggb.world", true }, { "ggbet.me", true }, - { "ggcp.com", true }, { "ggdcpt.com", true }, { "ggdghorkennisnet.nl", true }, + { "ggdrop.com", true }, + { "ggdrop.top", true }, + { "gge16.ru", true }, { "ggg.re", true }, + { "gggg.loan", true }, { "gginin.today", true }, { "ggiveilig.nl", true }, - { "ggl-luzern.ch", false }, { "ggld.net", true }, { "gglks.com", true }, { "ggmmontascale.it", true }, @@ -51941,6 +60254,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gh16.com.ar", true }, { "gha.st", true }, { "ghada.blog", true }, + { "ghafatzayed.com", true }, { "ghanaculture.tk", true }, { "ghanapremiumconsultant.com", true }, { "gharbala.com", true }, @@ -51948,9 +60262,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ghazi.im", true }, { "ghbtns.com", true }, { "ghcci.com", true }, + { "ghcma.vic.gov.au", true }, { "ghcoaching.mx", true }, { "ghcpl.in", true }, - { "ghd.com", true }, { "gheestore.in", false }, { "ghentcityofmusic.be", true }, { "ghentcreativecityofmusic.be", true }, @@ -51967,13 +60281,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ghereben.xyz", true }, { "ghettonetflix.de", true }, { "ghgkhalsaschool.com", true }, + { "ghi.gov", true }, { "ghiafeh.com", false }, { "ghil.de", true }, { "ghimaging.com", true }, { "ghini.com", true }, { "ghiro.tk", true }, - { "ghislainphu.fr", true }, + { "ghlinks.com.gh", true }, { "ghllc.com", true }, + { "ghn.vn", true }, + { "ghnewslive.com", true }, { "ghobcars.com", true }, { "ghobot.ai", true }, { "ghobusers.com", true }, @@ -51982,11 +60299,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ghostbusters.tk", true }, { "ghostbustersuk.tk", true }, { "ghostcarve.ml", true }, - { "ghostcir.com", true }, + { "ghostcir.com", false }, { "ghostdesign.tk", true }, { "ghostdog.ga", true }, { "ghostdragon.tk", true }, { "ghostfam.com", true }, + { "ghostfam.win", true }, + { "ghostfiregaming.com", true }, { "ghostgaminggg.live", true }, { "ghostgimbals.com", true }, { "ghostlight.tk", true }, @@ -52011,17 +60330,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ghprinting.net", true }, { "ghwconline.org", true }, { "ghyvelde.fr", true }, - { "ghznews.com", true }, + { "gi-plant.shop", true }, { "giac.net", true }, { "giac.org", true }, + { "giacomodebidda.com", true }, { "giacomopelagatti.it", true }, - { "giakki.eu", false }, + { "giaimanhacai.com", true }, + { "giakki.eu", true }, + { "gialai.gov.vn", true }, { "gialupa.tk", true }, + { "giamcanhieuqua.vn", true }, { "giancarlomarino.com", true }, { "giangma.tk", true }, + { "giannadiorpornstar.com", true }, { "giannakis.tk", true }, { "giannifoti.it", true }, - { "giannoug.gr", true }, { "gianproperties.com", true }, { "giant-panda.com", true }, { "giant-tortoise.com", true }, @@ -52035,6 +60358,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giantsquid.tk", true }, { "gianttree.de", true }, { "gianturl.net", true }, + { "giaohangtietkiem.vn", true }, + { "giapalomapornstar.com", true }, { "giardinaggio.milano.it", true }, { "giardinaggio.napoli.it", true }, { "giardinaggio.roma.it", true }, @@ -52043,19 +60368,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giardiniere.milano.it", true }, { "giardiniere.roma.it", true }, { "giardinoperfetto.com", true }, + { "giatrakos.com", true }, { "giaydepvnn.com", true }, { "gibberfish.org", true }, { "gibbon.tk", true }, + { "gibbonedu.org", true }, { "gibkoesteklo.ml", true }, { "gibraltarwi.gov", true }, { "gibranhernandez.tk", true }, - { "gibreel.tk", true }, - { "gibsondunn.com", true }, + { "gibsonmemorial.ca", true }, + { "gibsonsecurity.co.uk", true }, { "gicasport.it", true }, { "gichigamigames.com", true }, { "gickelskerb.de", true }, { "gidapgs.cf", true }, - { "giddilife.com", true }, { "giddyaunt.net", true }, { "gideonbot.com", true }, { "gidive.com", true }, @@ -52063,25 +60389,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gidro.tech", true }, { "gidroponica.ml", true }, { "giebel.it", true }, - { "giegler.software", false }, + { "giedrioukis.lt", true }, { "gielectrical.com.au", false }, - { "gieoduyentinhdo.com", true }, + { "giemsa.com", true }, { "gierds.de", true }, { "gieschke.de", true }, - { "giethoorn.com", true }, - { "gietvloer-wand.nl", false }, { "gietvloergarant.nl", true }, - { "gif.tips", true }, + { "gif-avatars.com", true }, + { "gif.tips", false }, { "giff.com.mx", true }, + { "giffard.com", true }, { "gifhelittlestars.co.uk", true }, + { "giford.com", true }, { "gifsonline.tk", true }, { "gift4ever.tk", true }, + { "giftbaskets.ru", true }, + { "giftbasketsoverseas.com", true }, + { "giftbit.com", true }, { "giftcard.net", true }, { "giftcardgranny.com", true }, - { "giftcardstarz.com", true }, + { "giftcardstarz.com", false }, { "giftedconsortium.com", true }, - { "giftedhealthcare.com", true }, - { "giftedmindies.art", true }, { "giftedmodels.com", true }, { "giftex.cz", true }, { "giftexperts.com", true }, @@ -52091,8 +60419,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giftnix.com", true }, { "giftofsquare.net", true }, { "giftofsquare.org", true }, + { "giftpoint.io", true }, { "gifts.best", true }, { "giftscop.com", true }, + { "giftsenda.com", true }, { "giftsforaspecialoccasion.com", true }, { "giftsholidays.tk", true }, { "giftsn.com.sg", true }, @@ -52107,14 +60437,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gig40.com", true }, { "giga.nl", true }, { "gigabitz.pw", true }, + { "gigachad.net", true }, { "gigacloud.org", true }, + { "gigacloud.ua", true }, { "gigacomputer.cz", true }, - { "gigagaaf.nl", true }, { "gigagroup.cf", true }, { "giganet.tk", true }, { "gigantar.com", true }, { "gigantism.com", true }, + { "gigantron.com", true }, { "gigaone.pl", true }, + { "gigapc.be", true }, + { "gigarange.org", true }, { "gigarange.xyz", true }, { "gigasoft.tk", true }, { "gigatags.tk", true }, @@ -52122,13 +60456,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gigatron.tk", true }, { "gigawa.lt", true }, { "gigawattz.com", true }, + { "gigaway.com", true }, + { "giggear.com.au", true }, { "giggletotz.co.uk", true }, { "gigharborwa.gov", true }, + { "gigindia.in", true }, { "gigis-pizzeria.de", true }, { "gigiscloud.servebeer.com", true }, { "giglink.club", true }, { "gigloog.tk", true }, { "gigpam.com", true }, + { "gigs.com", true }, { "gigseekr.com", true }, { "gijonshiro.tk", true }, { "gikovatelojavirtual.com.br", true }, @@ -52136,14 +60474,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gil.re", true }, { "gilandrad.tk", true }, { "gilangcp.com", true }, + { "gilbert-schmalriede.de", true }, { "gilbertosimoni.tk", true }, { "gilbertsvilleny.gov", true }, { "gildenhost.de", true }, { "gileadpac.com", true }, { "gilescountytn.gov", true }, - { "giliamor.com", true }, { "gilion.tk", true }, - { "gilium.com", true }, { "gill-cote-bistro.fr", true }, { "gill-swerts.tk", true }, { "gill-temptation.tk", true }, @@ -52153,17 +60490,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gillfamily.de", true }, { "gillmanandsoame.co.uk", true }, { "gillsco.com", true }, - { "gillyscastles.co.uk", true }, + { "gilmanwi.gov", true }, { "gilmasocial.ga", true }, { "gilme.net", true }, { "gilnet.be", false }, { "gilpincountydronepilot.com", true }, + { "gilsanchez2009.com", true }, { "gilsum-nh.gov", true }, { "giltedge.travel", true }, { "gim-app.tk", true }, + { "gim.ac.in", true }, { "gimbal.ca", true }, { "gimhub.com", true }, { "gimme.money", true }, + { "gimmickbots.com", true }, { "gimmickmedia.de", true }, { "gimnazija-skofjaloka.si", true }, { "gimnazija.tk", true }, @@ -52173,33 +60513,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gimnazjum-miloslaw.tk", true }, { "gimpware.tk", true }, { "gina-architektur.design", true }, - { "ginabae.net", true }, { "ginabaum.com", true }, - { "ginasiovirtual.com", true }, { "ginatony.com", true }, { "ginen.xyz", false }, + { "ginepolice.gov", true }, { "ginev.tk", true }, + { "gingerray.co.uk", true }, + { "gingersutton.com", true }, + { "gingerxumd.com", true }, { "ginionusedcars.be", true }, { "ginitaly.it", true }, - { "ginn.press", true }, { "ginnegappen.nl", true }, + { "ginniemae.gov", true }, { "ginnungagap.space", true }, - { "gino-gelati.de", true }, + { "gintaresdental.lt", true }, + { "gintian.com", true }, { "gintonic.tk", true }, + { "ginx.tv", true }, { "ginza-viola.com", true }, + { "ginzago.ru", true }, { "ginzaj.com", true }, { "gio-abbigliamento.it", true }, - { "giocheriamagic.ch", true }, + { "giochistars.it", true }, { "giochistem.it", true }, { "giocolive.com", true }, { "gioielleriamolena.com", true }, + { "gion-ent.co.jp", true }, + { "gion.io", true }, + { "giopiu.it", true }, + { "giordan.com", true }, { "giordano.com", true }, { "giordanomultiservice.it", true }, { "giorgia.tk", true }, { "giorgiosite.tk", true }, + { "giornalisportivi.online", true }, { "giovannarossi.tk", true }, { "giovannibattistadagnino.eu", true }, - { "giovannicellini.com", true }, { "giovannisantini.tk", true }, { "giovinco.tk", true }, { "gip-carif-idf.net", true }, @@ -52207,12 +60556,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gipelpsb.fr", true }, { "giper.ga", true }, { "giperfast.tk", true }, - { "gipernn.ru", false }, - { "gipfelbuch.gr", true }, + { "gipernn.ru", true }, { "gipl.tk", true }, { "gippert-klein.de", true }, + { "gipsic.com", true }, { "gipsplitka.ru", true }, { "gipuzkoabasket.tk", true }, + { "giradiscos.com", true }, { "giraffeduck.com", true }, { "giraffenland.de", true }, { "giraffes.org", true }, @@ -52220,37 +60570,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giresunhaberleri.tk", true }, { "giri.co", true }, { "girishkumar.tk", true }, - { "girisimkaravani.com", true }, + { "girl.click", true }, { "girl.science", true }, { "girlan.net", true }, { "girlandhermoon.com", false }, { "girlbaito.jp", true }, + { "girlboss.ceo", true }, + { "girldevelopit.com", true }, { "girldick.gay", true }, { "girlfriend.gq", true }, + { "girliciousbeauty.com", true }, { "girlie.tk", true }, { "girlingsdiamond.co.uk", true }, { "girlinthetiara.com", true }, - { "girljacket.com", true }, + { "girlisme.com", true }, { "girls-heaven.com", true }, { "girlsaloudcity.tk", true }, { "girlsbar-navi.jp", true }, + { "girlschandigarh.in", true }, { "girlsforum.com", true }, + { "girlsfucked.com", true }, { "girlsgenerationgoods.com", true }, + { "girlsgetpied.com", true }, { "girlsglimpse.cf", true }, { "girlsglimpse.ga", true }, { "girlsglimpse.gq", true }, { "girlshealth.gov", true }, { "girlshere.tk", true }, { "girlsnet.work", true }, + { "girlswhonerd.com", true }, { "girltendance.fr", true }, { "girlunfinished.com", true }, { "girlz.jp", true }, { "gironde-tourisme.fr", true }, { "giroskuter.ga", true }, { "girsedesign.de", true }, - { "girtlak-kanseri.com", true }, { "girvas.ru", true }, - { "gisada.com", true }, + { "gis.ee", true }, + { "gisa.gv.at", true }, + { "gisac.org", true }, { "gisauto.ru", true }, { "gisbornecabs.com.au", true }, { "gisellapiano.tk", true }, @@ -52260,12 +60618,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gishiko.net", true }, { "gishpo.tk", true }, { "gisma.tk", true }, - { "gistportal.com", true }, { "gistr.io", true }, + { "giswi.com", true }, { "git-stuff.tk", true }, - { "git.ac.cn", true }, { "git.co", true }, - { "git.io", true }, { "git.market", true }, { "git.org.il", false }, { "git.sb", true }, @@ -52276,19 +60632,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gitch.xyz", true }, { "gite-ambleteuse.tk", true }, { "gite-bouvines.fr", true }, + { "gite-le-pascaud.fr", true }, { "gitecolombedesbois.com", true }, - { "gitedegroupelatruitedor.fr", true }, + { "gitelermitage.be", true }, { "gitep.org.uk", true }, - { "gitesdeshautescourennes.com", true }, - { "gitgaatdevco.com", true }, + { "gites-melaual.fr", true }, { "gitgaattreaty.ca", true }, { "github.blog", true }, { "github.com", true }, + { "github.partners", true }, { "githubapp.com", true }, { "githubconstellation.com", true }, + { "githubengineering.com", true }, { "githubindia.com", true }, { "githubnext.com", true }, - { "githubuniverse.com", true }, + { "giti.com.sg", true }, { "gitlab-apps.com", true }, { "gitns.com", true }, { "gitns.dev", true }, @@ -52299,8 +60657,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gitstuff.tk", true }, { "gittigidiyor.com", true }, { "gittr.ch", true }, + { "gitvibe.com", true }, { "giuem.com", false }, { "giuliabonati.com", true }, + { "giuliano.design", true }, { "giuliawylde.com", true }, { "giulliamodas.com.br", true }, { "giunchi.net", true }, @@ -52309,7 +60669,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giuseppemacario.it", true }, { "giuseppemacario.men", true }, { "giusyesabatino.it", true }, - { "givastar.com", true }, { "give.net", true }, { "give2charity.co", true }, { "give2charityapp.com", true }, @@ -52317,7 +60676,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "giveasquare.net", true }, { "giveasquare.org", true }, { "giveattheoffice.org", false }, - { "giveguide.org", true }, + { "givecfc.org", true }, + { "givelab.com", true }, { "givemeaverse.com", true }, { "givemebeer.tk", true }, { "givemeyour.cc", true }, @@ -52330,14 +60690,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "given2.me", true }, { "given2.us", true }, { "given4.it", true }, - { "giveoneup.org", true }, { "givepenny.com", true }, { "givery.cz", true }, + { "givery.sk", true }, { "givesunlight.com", true }, { "giveuselife.org", true }, + { "givingassistant.org", true }, { "givingnexus.org", false }, + { "givingpledge.org", true }, { "givingtools.com", true }, { "givip.eu", true }, + { "givostore.com", true }, { "gix.net.pl", true }, { "gixtools.co.uk", true }, { "gixtools.com", true }, @@ -52354,19 +60717,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gizmogrind.com", true }, { "gj-bochum.de", true }, { "gj-cham.tk", true }, + { "gj6.top", false }, { "gjan.in", true }, { "gjan.info", true }, { "gjan.io", true }, { "gjcampbell.co.uk", true }, { "gjengset.com", true }, { "gjnoonan.co.uk", true }, - { "gjspunk.de", false }, { "gjung.com", true }, + { "gkb2.ru", true }, { "gkbm.com", true }, { "gkconsultancy.tk", true }, + { "gkdforum.eu.org", true }, { "gkdk.se", true }, { "gkdworld.com", true }, - { "gkdworld.xyz", true }, + { "gkdworld.eu.org", true }, { "gkepm.com", true }, { "gklparis.fr", true }, { "gkmusicindia.tk", true }, @@ -52374,105 +60739,136 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gkoenig-innenausbau.de", true }, { "gkq.co.in", true }, { "gkralik.eu", true }, + { "gkrru4v.xyz", true }, { "gkstyle.net", false }, { "gku-winterling.de", true }, { "gkv-gorinchem.nl", true }, { "gkvharidwar.org", true }, - { "gkvsc.de", false }, + { "gkvsc.de", true }, + { "gkzmengineering.com", true }, + { "gl-operacion.com.mx", true }, { "gl.search.yahoo.com", false }, { "glabiatoren-kst.de", true }, { "glacialexperience.is", true }, + { "glaciercountymt.gov", true }, + { "glaciercreek.co", true }, { "glacierviewfire.gov", true }, + { "glad.com", true }, { "gladala.tk", true }, - { "gladdy.co.uk", true }, - { "gladdy.uk", true }, - { "gladdymedia.co.uk", true }, - { "gladdymedia.com", true }, - { "gladdymedia.uk", true }, { "gladiac.duckdns.org", true }, - { "gladiatorboost.com", false }, + { "gladiator.tf", true }, { "gladiators-clan.tk", true }, { "gladiatorshop.nl", true }, { "gladiium.store", true }, - { "gladstein.org", true }, + { "gladosdan.com", true }, + { "gladstonemi.gov", true }, { "gladwellentertainments.co.uk", true }, { "gladwork.tk", true }, { "gladysstrickland.com", true }, { "glahcks.com", true }, + { "glamadelaide.com.au", true }, { "glamcambabes.com", true }, { "glamdaldyreklinikk.no", true }, + { "glami.com.tr", true }, + { "glaminati.com", false }, { "glamlivesex.com", true }, - { "glamluxestudios.com", true }, { "glammybabes.com", true }, + { "glamorousgoat.nl", true }, { "glamorously-built.tk", true }, { "glamour4you.de", true }, + { "glamourandgains.com", true }, { "glamourdaze.com", true }, { "glamourhair.tk", true }, - { "glamouria.com.br", true }, { "glamourmagazine.co.uk", true }, { "glamourtime.tk", true }, { "glamur-video.com", true }, + { "glance.gr", true }, { "glanzodergarnicht.com", true }, { "glas-systeme.eu", true }, { "glasdon.com", true }, + { "glase.shop", true }, { "glaserceramics.com", true }, { "glasfaser-im-hanseviertel.de", true }, { "glasgestaltung.biz", true }, - { "glashandelwolf.nl", true }, + { "glasgowfilm.org", false }, + { "glasgowlife.org.uk", true }, + { "glashandelwolf.nl", false }, { "glasiko.tk", true }, { "glasner.photo", true }, + { "glass-blaster.com", true }, { "glass.google.com", true }, { "glass.photo", true }, { "glassact.com", true }, { "glasschmuck-millefiori.de", true }, { "glassellparkschool.org", true }, { "glassemployees.com", true }, - { "glassexpertswa.com", true }, + { "glassfoxowo.com", true }, + { "glassicasino.in", true }, { "glasslikes.com", true }, + { "glassnebula.com", true }, { "glassner.org", true }, { "glassochchoklad.se", true }, { "glassofdirt.tk", true }, { "glassofgrape.com", true }, + { "glassportpapd.gov", true }, { "glassrainbowtrust.org.je", true }, { "glassrepairsperth.com.au", true }, { "glassrom.org", true }, { "glassrom.pw", true }, + { "glasssculpture.org", true }, { "glasstechnics.be", true }, { "glasswall.com", true }, { "glassweb.com.mx", true }, { "glassworld.tk", true }, + { "glastenbury.com", true }, + { "glaston.com", true }, { "glaswerk-mellenbach.de", true }, { "glaswolsite.tk", true }, + { "glatfelter.com", true }, + { "glauca.digital", true }, + { "glauca.space", true }, { "glaucoma.uk", true }, { "glavfundament.ru", false }, + { "glavny-yurist.ru", true }, { "glavred.info", false }, { "glazedmag.fr", true }, { "glazkova.ga", true }, { "glbaumaulwurf.de", true }, + { "glbins.com", true }, + { "glbth.com", true }, { "glcastlekings.co.uk", true }, { "gld.re", true }, { "gle", true }, { "gleam.tk", true }, { "gleanview.com", true }, { "glebov.tk", true }, + { "gleeband.com", true }, + { "gleentech.com", true }, { "gleesongs.tk", true }, { "gleich-aluminium-shop.de", true }, - { "gleisner.law", true }, - { "gleisner.legal", true }, + { "gleisner.io", true }, + { "gleisner.legal", false }, + { "gleki.com", true }, + { "glemtpassord.dep.no", true }, { "glenatlasmd.com", true }, { "glenavy.tk", true }, { "glenbeulahwi.gov", true }, { "glencambria.com", true }, - { "glencarbide.com", true }, { "glencarbonil.gov", true }, { "glencoveny.gov", true }, + { "glendalewv.gov", true }, { "glendarraghbouncycastles.co.uk", true }, + { "glendivemt.gov", true }, { "glenhuntlyapartments.com.au", true }, - { "glenmarieproperties.com", true }, + { "glenmarkpharma.sk", true }, + { "glenmorewisconsin.gov", true }, { "glennfitzpatrick.com", true }, { "glennhamers.nl", true }, + { "glennwilson.co.uk", true }, { "glenshere.com", true }, + { "glenwhitememorial.com", true }, { "glenwoodpark.com", true }, + { "glesbymarks.com", true }, { "glevolution.com", true }, { "glexia.com", true }, { "glgclan.tk", true }, @@ -52484,19 +60880,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glidingshop.cz", true }, { "glidingshop.de", true }, { "glidingshop.eu", true }, + { "glieroidelcalcio.com", true }, { "gliihc.net", true }, { "glimhome.com", true }, { "glimpses.tk", true }, { "glini.net", true }, + { "glintinc.com", true }, { "glit.sh", true }, - { "glitchcity.wiki", true }, { "glitchcomic.tk", true }, { "glitched.online", true }, + { "glitery.com", true }, { "glitter-graphics.com", true }, { "glitterblast.uk", true }, { "glitteringmariah.tk", true }, { "glittersjabloon.nl", true }, { "glitzerstuecke.de", true }, + { "glitzybingo.co.uk", true }, { "glixee.com", true }, { "glk.academy", true }, { "glloq.org", false }, @@ -52504,13 +60903,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glnpo.gov", true }, { "global-adult-webcams.com", true }, { "global-business-solutions.cf", true }, + { "global-carbonsolutions.com", true }, { "global-content.net", true }, { "global-electronic-music.tk", true }, { "global-factory.co.jp", true }, + { "global-fh.com", true }, { "global-free-classified-ads.com", true }, { "global-monitoring.com", true }, { "global-motherboard.com", true }, - { "global-mt.ru", true }, { "global-office.com", false }, { "global-qanoon.gq", true }, { "global-scg.org", true }, @@ -52518,12 +60918,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "global-topsecret.tk", true }, { "global-trance.tk", true }, { "global-village.koeln", true }, + { "global-wire.eu", true }, { "global-wire.fi", true }, + { "global-wire.net", true }, { "global.my.id", true }, { "global1.gg", true }, + { "global66.com", true }, + { "globalacademicgroup.com", true }, { "globalaccountservice.com", true }, { "globalamend.com", true }, - { "globalautomation.com.co", false }, + { "globalassistenciatecnica.com.br", true }, + { "globalautomation.com.co", true }, + { "globalbearings.com.au", true }, { "globalbix.com", true }, { "globalbridge-japan.com", true }, { "globalbusiness.tk", true }, @@ -52544,11 +60950,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globaldataline.ml", true }, { "globaldefensa.tk", true }, { "globaldestruction.tk", true }, - { "globaleducationservices.net", true }, { "globalenergyinterconnection.com", false }, { "globalentertainment.ga", true }, + { "globalenv.online", true }, { "globalepsilon.com", true }, { "globalformat.de", true }, + { "globalfuhui.com", true }, { "globalfuture.eu", true }, { "globalgate.cc", true }, { "globalgivingtime.com", true }, @@ -52559,11 +60966,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalhealthstrategiesnetwork.info", true }, { "globalhealthstrategiesnetwork.net", true }, { "globalhealthstrategiesnetwork.org", true }, + { "globalhomeautomation.ca", true }, { "globalhomicideers.ga", true }, { "globalhorses.de", true }, { "globalimmigrationafrica.co.za", true }, + { "globalimmigrationvisa.com", true }, { "globalink.tk", true }, - { "globalinvestigations.co.uk", true }, { "globalipaction.ch", true }, { "globalisierung-fakten.de", true }, { "globalitac.com", true }, @@ -52574,6 +60982,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalmasonryest.ga", true }, { "globalmaster.com.mx", true }, { "globalmed.tk", true }, + { "globalmethane.org", true }, { "globalmetropolis.tk", true }, { "globalmobilityjourneys.com", true }, { "globalnewsdaily.cf", true }, @@ -52591,6 +61000,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalproduction.ga", true }, { "globalprojetores.com.br", true }, { "globalradio.tk", true }, + { "globalreachgroup.com", true }, + { "globalrocksummit.com", true }, { "globalrussia.tk", true }, { "globalsecuritydatabase.com", true }, { "globalsecuritydatabase.io", true }, @@ -52601,6 +61012,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalsensationsest.ga", true }, { "globalseo.ga", true }, { "globalseo.ml", true }, + { "globalseostrategy.com", true }, { "globalshares.com", true }, { "globalshippinglimited.ga", true }, { "globalsign.com.ru", true }, @@ -52609,12 +61021,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalstrike.tk", true }, { "globalthermoforming.com", true }, { "globaltiendat.com", true }, - { "globaltix.com", true }, { "globaltravel.cf", true }, { "globaltravel.ga", true }, { "globaltravel.tk", true }, { "globaltrucking.uk", true }, { "globalventil.com", false }, + { "globalvision.co", true }, { "globalvisions-events.ch", true }, { "globalvisions-events.com", true }, { "globalvoice.ga", true }, @@ -52623,8 +61035,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globalwire.fi", true }, { "globalwitness.org", false }, { "globalzone.tk", true }, + { "globaz.ch", true }, { "globe-brasil.tk", true }, - { "globecollege.nl", true }, + { "globe.gov", true }, { "globedx.exchange", true }, { "globegazette.com", true }, { "globeinform.com", true }, @@ -52632,8 +61045,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globemilk.com", true }, { "globemilk.nl", true }, { "globemusic.es", true }, + { "globeprotocol.be", true }, + { "globeprotocol.com", true }, + { "globeprotocol.de", true }, + { "globeprotocol.es", true }, + { "globeprotocol.eu", true }, + { "globeprotocol.fr", true }, + { "globeprotocol.io", true }, + { "globeprotocol.it", true }, + { "globeprotocol.nl", true }, + { "globeprotocolecosystem.nl", true }, { "globereservationsest.ga", true }, { "globetalent.nl", true }, + { "globetrotting.com.au", true }, { "globologic.com", true }, { "globotech.be", true }, { "globotur.de", true }, @@ -52641,15 +61065,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "globuli-info.de", true }, { "globus-plus.ml", true }, { "globustrust.tk", true }, + { "glocesterri.gov", true }, + { "glocken-apotheke.info", true }, { "gloeckle-gruppe.de", true }, { "glofox.com", true }, + { "glonee.live", true }, { "gloning.name", true }, { "glont.net", true }, { "gloomy.tk", true }, - { "gloomyspark.com", true }, { "glorenza.org", true }, + { "gloria-home.co.uk", true }, + { "gloria-mundi.eu", true }, { "gloria.tv", true }, + { "gloriousbride.com", true }, + { "gloriousfoods.co.uk", true }, + { "glorycambodia.com", true }, { "glorycamrealty.com", true }, + { "gloryhealthcarellc.com", true }, { "gloryholefucking.com", true }, { "gloryofloveband.tk", true }, { "gloryofmusic.tk", true }, @@ -52660,18 +61092,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glosiko.com.cn", true }, { "glosiko.net", true }, { "glosiko.org", true }, - { "glosons.com", true }, { "glossar.tk", true }, { "glossowiki.ml", true }, { "glossyfied.com", true }, { "glotechrepairs.co.uk", true }, - { "gloucesterphotographer.com", true }, + { "glotte-trotters.fr", true }, + { "glotter.com", true }, { "gloucesterva.gov", true }, { "glovementor.com", true }, { "glowfic.com", true }, { "glowmedspaencino.com", true }, + { "glowskins.my.id", true }, { "glpreparation.com", true }, - { "glubbforum.de", true }, + { "glsauto.com", true }, + { "glucometros.net", true }, { "glue.tk", true }, { "gluechapter.ga", true }, { "glueck-im-norden.de", true }, @@ -52679,60 +61113,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "glueckskindter.de", true }, { "gluecksmomente.boutique", true }, { "gluedtomusic.com", true }, - { "gluhov-ss.ru", true }, + { "gluglu.jp", true }, { "gluit.de", true }, + { "glumac.com", true }, { "glutenfreeandtasty.com", true }, + { "glutenfreefoods.net", true }, { "glutenfreehomemaker.com", true }, { "glutenfreelife.co.nz", true }, { "glutenfreeonashoestring.com", false }, { "glutenfreevr.com", true }, { "gluto.tk", true }, + { "gluware.com", true }, + { "gluwee.com", true }, { "glxnet.com", true }, { "glyam.nl", true }, { "glyburidemetformin.tk", true }, { "glykofridis.nl", true }, { "glyph.ws", true }, { "glyptodon.com", true }, - { "glyxins.com", true }, + { "glz.ca", true }, { "gm-assicurazioni.it", true }, { "gm-net.jp", true }, { "gm.search.yahoo.com", false }, - { "gm207.com", true }, + { "gm207.com", false }, + { "gm5.com.br", true }, { "gmail", true }, { "gmail.com", false }, { "gman.bot", true }, + { "gmanlabs.com", true }, { "gmanukyan.com", true }, { "gmao.com", true }, { "gmasil.de", true }, { "gmavsg.org", true }, { "gmbh-kiekin.de", true }, { "gmc-mca.org", true }, + { "gmc-roma.it", true }, { "gmc.uy", true }, { "gmcbm.net", true }, { "gmccar.it", true }, { "gmcd.co", true }, - { "gmcpe.com", true }, { "gmdu.net", true }, - { "gmeet.io", true }, - { "gmenhq.com", true }, + { "gmfumaria.com", true }, { "gmgard.com", true }, { "gmgcyouth.org", true }, + { "gmhdrivingschool.co.uk", true }, { "gmhostingservices.co.uk", true }, + { "gmimarkets.com", true }, { "gmind.ovh", true }, + { "gmkdetailing.cz", true }, { "gml4d2.ml", true }, + { "gmo-cybersecurity.com", true }, { "gmod.de", true }, { "gmopconsortium.org", true }, { "gmpark.dk", true }, { "gmpartsdb.com", true }, { "gmpartsgiant.com", true }, { "gmpartsprime.com", true }, + { "gmrcarehospitals.in", true }, { "gms-marine.com", true }, { "gmslparking.co.uk", true }, { "gmsociety.tk", true }, { "gmsurveyingms.com", true }, + { "gmta.gov", true }, { "gmta.nl", true }, + { "gmtaccounting.co.uk", true }, + { "gmtm.com", true }, { "gmtplus.co.za", true }, - { "gmuh.fr", true }, + { "gmuh.fr", false }, { "gmundner.africa", true }, { "gmw-hannover.de", true }, { "gmw-ingenieurbuero.de", true }, @@ -52750,24 +61197,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gnaptracker.tk", true }, { "gnawa-diffusion.tk", true }, { "gnax.jp", false }, - { "gncbilgi.com", true }, { "gnetwork.eu", true }, { "gnezdo.tk", true }, { "gnfb.be", true }, { "gnfrazier.me", true }, + { "gnhe.ca", true }, { "gnhub.org", true }, { "gnida.tk", true }, + { "gnihm.ac.in", true }, { "gnilebein.de", true }, { "gnk.io", true }, { "gnmlive.com", true }, { "gnom.me", true }, { "gnomania.ml", true }, { "gnomen.tk", true }, - { "gnous.eu", true }, + { "gnomon-transport.com.ng", true }, { "gnrinfo.tk", true }, + { "gns.gov.pt", true }, { "gnu.style", true }, { "gnuand.me", true }, { "gnucashtoqif.us", true }, + { "gnuher.de", true }, { "gnulinux.gq", true }, { "gnulinuxforum.tk", true }, { "gnupi.tk", true }, @@ -52777,30 +61227,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gnush.gq", true }, { "gnusocial.jp", true }, { "gnuworldorder.ml", true }, - { "gnwp.eu", true }, { "gnylf.com", true }, + { "gnzsnz.com", true }, { "go-away.xyz", true }, { "go-cqhttp.org", true }, { "go-datasecurity.de", true }, + { "go-dove.com", true }, { "go-down.tk", true }, { "go-embedded.de", true }, { "go-go.link", true }, - { "go-healthy.herokuapp.com", true }, + { "go-hijra.com", true }, { "go-kuwait.tk", true }, { "go-life.com.tw", true }, { "go-mail.me", true }, { "go-propiedades.cl", true }, { "go-site.co.uk", true }, + { "go-sprout.de", true }, { "go-srx.tk", true }, - { "go-wild.co.uk", true }, { "go-zh.org", true }, { "go.exchange", true }, { "go.microsoft.com", true }, + { "go.ne", true }, { "go2archive.nl", true }, { "go2mob.tk", true }, { "go2sh.de", true }, { "go2ubl.nl", true }, - { "go350.com", true }, { "go4games.ro", true }, { "go4golfreizen.nl", true }, { "go4it.ro", true }, @@ -52808,21 +61259,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "go6.si", true }, { "go6lab.si", false }, { "go889w.com", true }, - { "goa8.xyz", true }, { "goabase.com", true }, { "goabase.net", true }, { "goaheadireland.ie", true }, + { "goalac.org", true }, { "goalbookapp.com", true }, { "goalie1998.duckdns.org", true }, + { "goalup.com.br", true }, { "goanalyse.co.uk", true }, { "goand.run", true }, { "goapunks.net", false }, + { "goarnlms.org", true }, { "goatbot.xyz", true }, { "goathub.io", true }, { "goatlord.tk", true }, { "goatstore.ca", true }, { "goaudits.com", true }, { "gobarrelroll.com", true }, + { "gobeline.com", true }, + { "gobelka.com", true }, { "gobetweenfilms.com", true }, { "gobeyondtheimpossible.com", true }, { "gobi.tk", true }, @@ -52832,22 +61287,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goblintears.com", true }, { "gobouncy.co.uk", true }, { "gobouncy.com", true }, + { "gobugfree.com", true }, { "gobytedesign.uk", true }, { "gocardless.com", true }, + { "gocareserv.com", true }, + { "gocct.com", true }, { "gocher.me", true }, { "gociicii.com", true }, { "gockelsee.de", true }, { "gockhuatsuky.tk", true }, { "goclark.at", true }, - { "gocleanerslondon.co.uk", true }, + { "gocleanandsafe.nz", true }, { "goclix.ml", true }, + { "goconstruct.org", true }, { "gocornwallbus.co.uk", true }, + { "gocpa.space", true }, { "gocphongthuy.net", true }, { "god-clan.hu", true }, { "godalivetpalandet.tk", true }, { "godall.tk", true }, - { "godalyan.com", true }, { "godan.tech", true }, + { "godanriver.com", true }, { "godark.uk", true }, { "godating.tk", true }, { "godattributes.com", true }, @@ -52855,13 +61315,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "godbo9.com", false }, { "godclan.hu", true }, { "goddamnwinnebago.com", true }, - { "goddessacumen.com", true }, + { "goddess.name", true }, { "goddesslena.com", true }, { "godesigner.ru", true }, + { "godestination-morocco.com", true }, { "godfilm.tk", true }, { "godiscovers.com", true }, + { "godisgreat.africa", true }, + { "godish.com", true }, { "godles.pl", true }, { "godmusicapp.com", true }, + { "godns.ru", true }, { "godofredo.ninja", true }, { "godoter.cn", true }, { "godoza.tk", true }, @@ -52873,8 +61337,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "godsowncountry.tk", true }, { "godsrollercoaster.co.uk", true }, { "godstoghosts.com", true }, + { "godsunchained.com", true }, { "godswila.be", true }, { "godswill.tk", true }, + { "godwithusalinaitwefoundation-ugandalimited.com", true }, + { "godyo.com", true }, { "godzillaencastellano.tk", true }, { "goeddesoundandlight.com", true }, { "goedeke.ml", true }, @@ -52897,19 +61364,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goergetown.tk", true }, { "goerlitz-zgorzelec.org", true }, { "goerres2014.de", true }, + { "goetec.ac.uk", true }, { "goetemp.de", true }, + { "goethe-gymnasium-stolberg.de", true }, { "goetheschule-giessen.de", true }, { "goetic.space", true }, - { "goettinger-biergarten.de", true }, + { "goetteesbarbershop.com", true }, { "goettinger-katzenschutz.de", true }, { "goetzinger-web.de", true }, + { "gofabcnc.com", true }, { "goffrie.com", true }, { "gofigure.fr", false }, { "gofile.io", true }, + { "gofile.link", true }, + { "gofind.sg", true }, { "goflix.cf", true }, { "goflo.net", true }, { "gofobo.com", true }, { "gofoiayourself.org", true }, + { "gofoodieonline.com", true }, { "gofoodservice.com", true }, { "goforcex.top", false }, { "gofriends.cf", true }, @@ -52918,88 +61391,105 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goge.ml", true }, { "gogebic.gov", true }, { "gogeeks.com.au", true }, - { "gogemini.com", true }, + { "gogem.in", true }, { "gogetssl.com", false }, + { "gogle-analytics-srv2456.com", true }, { "gogle-analytics.com", true }, { "gogleapis.com", true }, - { "gogna.me", false }, { "gogo.mn", true }, - { "gogoanime.blue", true }, + { "gogocarto.fr", true }, + { "gogocharters.com", true }, + { "gogogirl.fun", true }, + { "gogogirl.vip", true }, + { "gogohood.com", true }, { "gogolino.tk", true }, { "gogomail.ga", true }, - { "gogonano.com", false }, + { "gogonano.com", true }, { "gogracego.com", false }, + { "gogreece.dk", true }, { "gogroopie.com", true }, - { "gogroopie.ie", true }, { "gogs.ca", true }, { "gogsat.com", true }, - { "gogu.ma", true }, + { "gogu.ma", false }, { "goguarded.com", true }, { "gohanrecords.tk", true }, + { "gohelixit.com", true }, { "gohhaksu.sg", true }, { "gohon.org", true }, + { "gohost.kz", true }, + { "gohvac.pro", true }, + { "gohyer.com", true }, { "going-dutch.tk", true }, + { "going.com", true }, { "goingawesomeplaces.com", true }, { "goinggreenshow.gq", true }, { "goingreen.com.au", true }, { "goiymua.com", true }, { "goizalde.tk", true }, { "gojo.global", true }, + { "gokartwiki.com", false }, { "gokazakhstan.com", true }, + { "gokgids.nl", true }, { "gokhankesici.com", true }, - { "gokkastenstip.nl", true }, + { "gokiebox.com", true }, { "gokmenguresci.com", true }, { "gokoururi.com", true }, + { "goksu.in", true }, { "goktoday.com", true }, + { "goku.black", true }, { "gokyrgyzstan.com", true }, { "golan.ml", true }, { "golang.org", true }, - { "golang.zone", true }, { "golaw.ua", true }, { "golayamadam.tk", true }, { "gold-bird.tk", true }, { "gold-diamondltd.tk", true }, { "gold-fm.ml", true }, - { "gold-iptv.fr", true }, { "goldandgopher.com", true }, { "goldankauf1875.at", true }, { "goldband.tk", true }, - { "goldbar.com.hk", true }, + { "goldbar.com.hk", false }, + { "goldbio.com", true }, { "goldbug.ga", true }, { "goldchip.com", true }, { "goldclubcasino.com", true }, { "goldcoast-plumbing.com.au", true }, { "goldcoastasian.com", true }, + { "goldcoastit.com.au", true }, { "goldcoastphotographycourses.com", true }, { "goldcoastplumbingcompany.com.au", true }, - { "goldcoaststumpbusters.com", true }, { "goldcreek.tk", true }, - { "golden-jackass.com", true }, + { "golden-beef.fr", true }, { "golden-kamuy.com", true }, { "golden-sea.tk", true }, - { "golden-squad.com", true }, { "goldenage.tk", true }, { "goldenagefoundation.tk", true }, { "goldenbadger.de", false }, { "goldenberg.tk", true }, { "goldencircle.ga", true }, { "goldenclub.ga", true }, + { "goldencoil.pl", true }, { "goldendawnapersonalaffair.com", true }, { "goldendogs.tk", true }, { "goldeneggs.club", true }, { "goldeneyesantafe.com", true }, + { "goldenfawz.com", true }, { "goldengatesports.com", true }, + { "goldenglow.fans", true }, { "goldenhillsoftware.com", true }, { "goldenhost.ca", true }, { "goldenhouse.ga", true }, + { "goldeninvestmentbarcelona.com", true }, { "goldenkeys.io", true }, { "goldenoaksgolfclub.com", true }, { "goldenowl.ca", true }, + { "goldenpi.com", true }, { "goldenplate.com.sg", true }, { "goldenravengifts.com", true }, { "goldenretrieverspets.com", true }, { "goldenruleemail.com", true }, { "goldenshiny.com", true }, + { "goldenspikeartisans.com", true }, { "goldensunmfg.com", true }, { "goldentech.ca", true }, { "goldentechelectronics.net", true }, @@ -53010,6 +61500,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goldenyacca.co.uk", true }, { "goldenyacca.net", true }, { "goldenyacca.org", true }, + { "goldequipment.com.br", true }, { "goldex.tk", true }, { "goldfavela.com", true }, { "goldfelt.com", true }, @@ -53018,19 +61509,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goldfmromania.ro", true }, { "goldhill.ml", true }, { "goldloeckchen159.net", true }, - { "goldmancarpetcare.com", true }, + { "goldmanpropertygroup.com", true }, { "goldminer.ga", true }, - { "goldnbraces.com", true }, { "goldpreisfinder.at", true }, { "goldschmiede-suessenguth.de", true }, { "goldsilver.org.ua", true }, + { "goldsmithwest.com", true }, { "goldspace.tk", true }, { "goldstandardtrust.tk", true }, - { "goldstein.rs", false }, + { "goldstein.rs", true }, { "goldstein.tel", true }, + { "goldtits.com", true }, { "goldwater.gov", true }, { "goldwaterfoundation.gov", true }, { "goldwaterscholarship.gov", true }, + { "goldysoptic.bg", true }, { "goldytechspecialists.com", true }, { "goldzilla.eu", true }, { "gole.ms", true }, @@ -53039,7 +61532,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "golezi.com", true }, { "golf-alto-adige.com", true }, { "golf-supplies.tk", true }, - { "golf18staging.com", true }, { "golfbeautyers.ga", true }, { "golfbeautyest.ga", true }, { "golfbettingsystem.co.uk", true }, @@ -53048,53 +61540,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "golfburn.com", true }, { "golfbyzipers.ga", true }, { "golfbyzipest.ga", true }, + { "golfcabrio.de", true }, { "golfcleanerers.ga", true }, { "golfcleanerest.ga", true }, { "golfcleanersers.ga", true }, { "golfcleanersest.ga", true }, { "golfdeviceers.ga", true }, + { "golfedumorbihan56.com", true }, { "golfhausmallorca.com", true }, { "golfinbritishcolumbia.com", true }, { "golfinclusiveers.ga", true }, { "golfingbeters.ga", true }, { "golfingbetest.ga", true }, { "golfinginjuriesers.ga", true }, + { "golfio.com", true }, { "golfkulur.is", true }, { "golfmagic.com", true }, + { "golfplus.fr", true }, { "golfrange-ffm.de", true }, { "golfscape.com", true }, + { "golfshirtsjohannesburg.co.za", true }, { "golftournamentgifts.tk", true }, - { "golfturkey.com", true }, - { "goliathnft.com", true }, - { "golighthouse.com", true }, { "golikes.ml", true }, { "golink.co", false }, { "golnet.hu", true }, { "goloa.fr", true }, { "goloaninsurance.tk", true }, { "goloborodko.net", true }, + { "golootlo.pk", true }, + { "golorr.net", true }, { "golosbots.tk", true }, { "golosok.ml", true }, { "golosovanye4you.tk", true }, - { "golovbuh.online", true }, { "golser-schuh.at", true }, { "golser.info", true }, + { "golyatsec.com", true }, { "gomarket33.com", true }, { "gomasa.net", true }, { "gomasy.jp", true }, { "gomasy.net", true }, { "gomdl.com", true }, - { "gomedium.com", true }, { "gomega.vn", true }, { "gomel.chat", true }, { "gomel.city", true }, + { "gomelagromashplus.by", true }, { "gomelchat.com", true }, { "gomelphoto.com", true }, { "gomer.tk", true }, { "gometa.link", true }, + { "gomeya.com", true }, { "gomezhvac.com", true }, { "gomezites.tk", true }, - { "gomiblog.com", true }, { "gomicrophone.ml", true }, { "gomine.tk", true }, { "gommista.roma.it", true }, @@ -53113,19 +61609,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goncharov.tk", true }, { "gondawa.com", true }, { "gondelvaartdwarsgracht.nl", true }, + { "gondola-parkinson.com", false }, { "gondon.tk", true }, { "gonebald.tk", true }, { "gonenli.com", true }, { "gonepal.com", true }, + { "gonerogue.ml", true }, + { "gonerstudio.com", true }, { "gongik.info", true }, { "gongjianwei.com", true }, { "gongjuhao.com", true }, + { "gonintendo.com", true }, + { "gonitro.com", true }, + { "gonoodle.com", true }, { "gonortheast.co.uk", true }, { "gonorthwest.co.uk", true }, { "gonumber.ga", true }, { "gonx.dk", false }, + { "gonz0.com.ar", true }, { "gonzalesca.gov", true }, { "goo.gl", true }, + { "goo4it.nl", true }, { "gooch.io", true }, { "good-cd.ml", true }, { "good-course.ga", true }, @@ -53136,21 +61640,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "good4good.es", true }, { "gooday.life", true }, { "goodbits.tech", true }, + { "goodbody.ie", true }, { "goodbriar.com", true }, + { "goodcas.ca", true }, + { "goodcas.com", true }, { "goodcasinos.org", true }, + { "goodchoiceflowers.com", true }, { "gooddatingsites.ml", true }, { "goodday.finance", true }, { "gooddayatwork.co.uk", true }, { "gooddomainna.me", true }, + { "goodearth.com.tw", true }, { "goodenglish.ga", true }, { "goodesign.su", true }, { "goodfeels.net", true }, { "goodfoodrussia.com", true }, { "goodfundsgateway.com", true }, + { "goodfundslending.com", true }, { "goodgame.lt", true }, - { "goodglow.co", true }, { "goodhealthgateway.com", true }, - { "goodhealthtv.com", true }, { "goodhopemedical.com", true }, { "goodhotel.co", true }, { "goodhuecountymn.gov", true }, @@ -53158,30 +61666,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goodiesoft.hu", true }, { "goodjobs.gov", true }, { "goodkino.ga", true }, - { "goodkitchendesign.com", true }, { "goodlandks.gov", true }, { "goodleads.co.za", true }, { "goodlink.ml", true }, { "goodlosersest.ga", true }, { "goodmailing.tk", true }, - { "goodmax.com.ua", true }, + { "goodmanwi.gov", true }, { "goodmood.co.uk", true }, { "goodmood.fr", true }, { "goodmoodsocken.de", true }, { "goodmorningapril.com", true }, - { "goodontop.com", true }, + { "goodok.eu", true }, { "goodopportunity.ga", true }, { "goodpeople.tk", true }, { "goodryb.top", true }, { "goodseed.nl", true }, { "goodsex4all.com.br", true }, + { "goodsey.com", true }, { "goodsfromfactory.com", true }, { "goodshepherdmv.com", true }, + { "goodshuffle.com", true }, { "goodsite.ga", true }, { "goodspeaker.tk", true }, { "goodsportsbooks.com", true }, + { "goodsrepublic.com", true }, + { "goodstorage.com.br", true }, { "goodsync.com", true }, { "goodth.ink", true }, + { "goodthing2.com", true }, { "goodtrader.tk", true }, { "goodtrip.kr", true }, { "goodvibesblog.com", true }, @@ -53197,6 +61709,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "google.ax", true }, { "googleadvies.nl", true }, { "googleandroid.cz", true }, + { "googlecom.gq", true }, { "googlehits.com", true }, { "googlekun.tk", true }, { "googlemail.com", false }, @@ -53205,35 +61718,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "googleseo.pw", true }, { "googleshortcuts.org", true }, { "googlesource.com", true }, - { "goole4.com", true }, + { "goola.it", true }, { "goolnk.com", true }, { "goombi.fr", true }, + { "goondocks.io", true }, { "goonersworld.co.uk", true }, { "goonfleet.com", true }, { "goontu.be", true }, { "gooodnews.ga", true }, { "goooo.info", true }, - { "gooseberries.ch", true }, + { "goosecreeksc.gov", true }, { "goosementor.com", true }, { "goosip.tk", true }, { "gootax.pro", false }, { "gooty.ru", true }, - { "goow.in", true }, + { "gooutdoorskansas.com", true }, { "goozp.com", true }, { "gopass-dev.com", true }, { "gopass.health", true }, - { "gopet.shop", true }, { "gopher.tk", true }, { "gophoto.it", true }, + { "gopigment.com", true }, { "gopkg.link", true }, { "gopnikman.cf", true }, { "gopornovideo.com", true }, { "gopostore.com", true }, { "goppold.net", true }, { "gopri.tk", true }, + { "gopro-qa.com", true }, + { "gopro-staging.com", true }, + { "gopro.com", true }, { "goproallaccess.com", true }, { "gopronow.ga", true }, - { "goprozone.com", true }, { "gopuntaisla.com", true }, { "gopwhip.gov", true }, { "goquiq.com", true }, @@ -53242,36 +61758,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goranrango.ch", true }, { "gorazde.tk", true }, { "gorbatschow.tk", true }, + { "gorbilet.com", true }, { "gorbov.tk", true }, { "gorby.tk", true }, { "gordas.cf", true }, { "gordeijnsbouw.nl", true }, + { "gordillo.legal", true }, { "gordion.tk", true }, { "gordon-reid.com", true }, + { "gordonbeeming.com", true }, { "gordonbeeming.xyz", true }, { "gordonhamilton.com", true }, + { "gordonquarter.org.au", true }, + { "gordontrading.co.nz", true }, { "gordvorets.tk", true }, { "gordyf.com", true }, { "gordyforty.com", true }, + { "gorebayairport.ca", true }, + { "gorebayairport.com", true }, + { "goremotely.net", true }, + { "gorenje-ru.ru", true }, { "gorepriest.tk", true }, { "gorf.club", true }, - { "gorgebelle.com", true }, + { "gorgeousb.com", true }, { "gorgeouslyflawed.com", true }, - { "gorgeouspizza.co.nz", true }, + { "gorgeouspizza.co.nz", false }, { "gorgias.me", true }, { "goriki.tk", true }, + { "goringdogsitting.co.uk", true }, { "goritcly.com", true }, { "gorki.tk", true }, { "gorky.media", true }, { "gorlani.com", true }, { "gorlani.net", true }, - { "gorod74.ru", false }, + { "gormanprojects.com", true }, + { "gorn.ch", true }, { "gorodabakan.cf", true }, { "gorodabakan.ga", true }, { "gorodabakan.gq", true }, { "gorodabakan.ml", true }, { "gorodabakan.tk", true }, { "gorodivanovo.tk", true }, + { "gorodrabot.by", true }, + { "gorodrabot.kz", true }, { "gorodrabot.ru", true }, { "gorodrostov.tk", true }, { "gorodruza.tk", true }, @@ -53288,12 +61817,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gorschenin.com", true }, { "gorstom.ml", true }, { "gortaniza.tk", true }, + { "gorymoon.se", true }, { "gosaavd.tk", true }, { "gosarh.tk", true }, { "gosarhiv.tk", true }, + { "gosch.de", true }, { "goshawkdb.io", true }, { "goshin-group.co.jp", true }, { "goshop.pl", true }, + { "goshopnow.co.za", true }, { "gosia-banaszkiewicz.com", true }, { "gosiberia.ru", true }, { "gosimpler.com", true }, @@ -53304,34 +61836,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gosnipe.com", true }, { "gosolockpicks.com", true }, { "gospeldesign.tk", true }, + { "gospelidea.com", true }, { "gospellifewc.com", true }, { "gospelmusic.io", true }, + { "gospelnarrative.com", false }, + { "gospelsmusic.uk", true }, { "gospelstreamingsermons.com", true }, { "gospelunited.tk", true }, { "gospelvestcination.de", true }, { "gospelzone.ga", true }, + { "gospence.com", true }, + { "gospercountyne.gov", true }, { "gosportweather.co.uk", true }, { "gosq.co", true }, { "gosq.com", true }, - { "gossiplolly.com", true }, { "gossiptimes.tk", true }, - { "gosskupka.ru", true }, + { "gossr.pw", true }, + { "gosstyle.es", true }, + { "gost-energo.ru", true }, { "gostaffer.com", true }, { "gostargazing.co.uk", true }, { "gostatera.com", true }, { "gosti-dom.ga", true }, - { "gostles.ru", true }, + { "gostica.com", true }, { "gostomaisdecarrosdoquechocolates.com", true }, { "gostudy.net", true }, { "gosu.pro", true }, + { "gosupps.com", true }, { "goswak.com", true }, { "goszakupki.tk", true }, { "got-tty.de", true }, - { "gotactic.co", true }, { "gotajikistan.com", true }, - { "gotasdeconocimiento.ml", true }, + { "gotchaphotos.net.au", true }, { "gotcounterers.ga", true }, { "gotcounterest.ga", true }, + { "goteamproclean.com", true }, { "goteleport.com", true }, { "gotepisodes.tk", true }, { "gotforumers.ga", true }, @@ -53339,13 +61878,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gotgenes.com", false }, { "gothailand.cf", true }, { "gothic-world.tk", true }, - { "gothic.dating", true }, { "gothiclandscape.com", true }, { "gothicmarketing.tk", true }, { "gothicsite.tk", true }, { "gotikadesaldos.tk", true }, { "gotirupati.com", false }, { "gotit.com.tw", true }, + { "gotit.network", true }, { "gotmilk.ml", true }, { "gotmuebles.com", true }, { "gotnet.tk", true }, @@ -53353,13 +61892,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "goto.google.com", true }, { "goto.world", true }, { "goto10.se", true }, - { "gotoals.com", true }, { "gotobooks.ml", true }, { "gotobrno.cz", true }, { "gotoexam.tk", true }, - { "gotoken.com.tr", true }, + { "gotohomerepair.com", true }, { "gotolinux.ru", true }, { "gotomi.info", false }, + { "gotomojo.com", true }, { "gotonet.tk", true }, { "gotonline.ml", true }, { "gotonline.tk", true }, @@ -53370,16 +61909,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gotowebstore.com", true }, { "gotoxy.at", true }, { "gotrail.fr", true }, + { "gotransferdr.com", true }, + { "gotravel.blog", true }, { "gotravel.hu", true }, { "gotravel.us", true }, { "gotravelmexico.com.mx", true }, { "gotrek.com.au", true }, + { "gotreksperu.com", true }, + { "gotrendier.com.co", true }, + { "gotrendier.mx", true }, { "gotriage.tk", true }, - { "gotrustify.com", true }, - { "gotscrapcar.com", true }, { "gotstreamingers.ga", true }, { "gott-it.dk", true }, - { "gottagohack.fr", true }, + { "gottagohack.fr", false }, { "gottasketchemall.com", true }, { "gottcar.com", true }, { "gottfridsberg.org", true }, @@ -53401,21 +61943,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gouplinkit.com", true }, { "gourgouli.com", true }, { "gourmetfestival.de", true }, + { "gourmetsditalie.com", true }, { "gourmetspalencia.com", true }, { "gourmetvitamins.ga", true }, { "gouthiere.com", true }, { "goutsmits-tegelwerken.nl", true }, + { "gouwdata.nl", true }, + { "gov.md", true }, { "gov.tc", true }, { "gov.uk", false }, { "govape.tk", true }, + { "govecountyks.gov", true }, + { "governikus.de", true }, { "governmentjob.gq", true }, { "governmentjobs.gov", true }, + { "governmentphoneservice.com", true }, + { "governmentresume.org", true }, { "governorhub.com", true }, { "govindagiri.tk", true }, { "goviralnow.ml", true }, { "govisitcostarica.co.cr", true }, { "govisitcostarica.com", true }, { "govisitsandiego.com", true }, + { "govloans.gov", true }, + { "govmi.gov", true }, { "govno-site.tk", true }, { "govnohosting.cf", true }, { "govnosite.tk", true }, @@ -53427,6 +61978,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "govtjobs.blog", true }, { "govtnaukrinews.com", true }, { "govtrack.us", true }, + { "govvacationrewards.com", true }, { "govype.com", true }, { "gow220.ru", true }, { "gowager.co.uk", true }, @@ -53436,17 +61988,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gowe.wang", false }, { "goweraesthetics.co.uk", true }, { "gowervets.co.uk", true }, + { "gowikings.dk", true }, { "gowildrodeo.co.uk", true }, { "gowithflo.de", true }, + { "gowlingwlg.com", true }, { "goworld.gq", true }, + { "gowpcare.com", true }, { "goxyshuk.duckdns.org", false }, { "goyahkles-spirit-to.tk", true }, { "goyumoilexpeller.com", true }, { "gozadera.es", true }, { "gpalabs.com", true }, - { "gpasas.mobi", true }, - { "gpastore.com.br", true }, - { "gpbdev.ru", false }, + { "gpbdev.ru", true }, { "gpccp.cc", true }, { "gpcp.org", true }, { "gpcs.ml", true }, @@ -53458,21 +62011,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gpgscoins.com", true }, { "gphalt.com", true }, { "gphalt.de", true }, - { "gpiimimika.com", true }, { "gpio.gq", true }, { "gpl25.ml", true }, { "gplans.us", true }, { "gplintegratedit.com", true }, { "gpltimes.club", true }, + { "gpltimes.com", false }, { "gpltimes.org", true }, { "gplvilla.com", true }, - { "gpm.ltd", true }, - { "gpna.org", true }, + { "gpnotebook.com", true }, + { "gpo.gov", false }, { "gpodev.gov", true }, { "gpolanco.com", true }, { "gpony.fr", true }, { "gppro.com", false }, { "gpremium.cl", true }, + { "gpridezone.com", true }, + { "gps-coordinates.net", true }, { "gps-fleettracking.ga", true }, { "gps-track-sys.info", true }, { "gps.com.br", true }, @@ -53481,25 +62036,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gpsarena.ro", true }, { "gpsblackbox.com", true }, { "gpsfix.cz", true }, + { "gpskoordinaten.de", true }, { "gpsmith.tech", true }, { "gpsnavigator.tk", true }, { "gpsolarpanels.com", true }, { "gpspolis.nl", true }, { "gpsroomers.ga", true }, + { "gpstrackersaustralia.com", true }, { "gpsvideocanada.com", true }, { "gpswebsoft.ml", true }, { "gpu.nu", true }, { "gpwaconference.com", true }, + { "gpwatimes.org", true }, + { "gpwih.com", true }, { "gpwmd-portal.org", true }, { "gpz500s.tk", true }, { "gq-magazine.co.uk", true }, - { "gqmstore.com.br", true }, { "gqyyingshi.com", false }, { "gr.search.yahoo.com", false }, - { "gr8engineer2b.com", true }, - { "gr8ness.com", true }, + { "gra-gcc.com", true }, { "gra2.com", true }, - { "graandco.com", true }, { "graasp.net", false }, { "grabacabpa.com", true }, { "grabadolasermonterrey.com", true }, @@ -53509,20 +62065,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grabnews.tk", true }, { "grabyourfreeleadshere.tk", true }, { "grace-wan.com", true }, + { "gracealexwatch.org", true }, { "gracebaking.com", false }, + { "graceclinic.com.tw", true }, { "gracecommunity.school", true }, { "gracedaycorea.com", true }, { "gracedays.org", true }, { "gracedonors.co.uk", true }, { "gracedonors.co.za", true }, { "gracedonors.com", true }, - { "graceful-project.eu", true }, - { "gracefully.fr", true }, + { "graceharborapps.net", true }, { "gracelawoffice.com", true }, - { "graceq.com", true }, { "graceradio.tk", true }, + { "gracereminder.com", true }, { "gracethrufaith.com", true }, { "gracetini.com", true }, + { "grachten.museum", true }, { "gracia-club.tk", true }, { "graciasmarvin.tk", true }, { "gracodesign.eu", true }, @@ -53532,14 +62090,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gradgreenhouse.com", true }, { "gradienthosting.co.uk", true }, { "gradients.com", true }, + { "gradientthemes.com", true }, { "gradinacufluturi.ro", true }, { "gradingcontractornc.com", true }, + { "gradinitasamariteanulcluj.ro", true }, + { "gradinskatehnika.bg", true }, + { "gradintel.com", true }, + { "gradity.eu", true }, { "gradle.com", true }, { "gradle.org", true }, { "grads360.org", true }, + { "gradsgateway.com", true }, { "graduados.tk", true }, { "gradualgram.com", true }, + { "graduatenursingedu.org", true }, + { "graduatewriter.com", true }, { "graecum.org", true }, + { "graeskmad.dk", true }, { "graetgossip.com", true }, { "graetintelligence.com", true }, { "graetnew.com", true }, @@ -53547,15 +62114,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "graetreport.com", true }, { "graf-igor.ch", true }, { "graf.re", true }, + { "grafana.com", true }, { "grafcaps.com", true }, - { "grafe.com", true }, { "grafenberg.tk", true }, - { "graffen.dk", false }, { "graffiti-street-art-ebook.tk", true }, { "graffitinetwerk.nl", true }, { "graffitiwall.tk", true }, + { "graffprint.pl", true }, { "grafia.ink", true }, { "graficagesa.com.br", true }, + { "graficanocera.com", true }, { "graficasantana.com.br", true }, { "graficoywebvalencia.tk", true }, { "grafik.gq", true }, @@ -53567,56 +62135,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grafologia.tk", true }, { "grafos.ml", true }, { "grafoterapia.tk", true }, + { "grafphoto.com", true }, { "graft.community", true }, { "graft.spb.ru", true }, { "graftoncountynh.gov", true }, { "graftonglobe.cf", true }, { "graftonglobe.tk", true }, + { "graftonnd.gov", true }, { "graftworld.pw", true }, { "grafuroam.com", true }, - { "grahamarthur.com", true }, + { "grahambaggett.com", true }, { "grahambaker.ca", true }, { "grahamcarruthers.co.za", true }, { "grahamcluley.com", false }, { "grahamedgecombe.com", true }, - { "grahameger.com", true }, + { "grahamfamilydentalwy.com", true }, { "grahamleeonline.com", true }, { "grahamsmith.tech", true }, + { "grailians.com", true }, { "grailify.com", true }, { "grain-feature-branch.co", true }, { "grain-staging.co", true }, { "grain.com", true }, { "graine-de-cafe.com", true }, { "graingert.co.uk", true }, - { "gralhaazulcondominio.com.br", true }, { "graliv.net", false }, { "grallersdegegants.tk", true }, { "gramati.com.br", true }, { "grammar.co.id", true }, { "grammar.hu", true }, - { "grammarhouse.co.za", true }, { "grammarhouse.me", false }, { "grammofono.gr", false }, { "grammysgrid.com", true }, - { "gramsbergen.nl", true }, { "gramtarang.org.in", true }, - { "gramywszachy.pl", true }, { "gran-hermano.tk", true }, { "granalacant.tk", true }, { "granary-demo.appspot.com", false }, { "granaturov.mk.ua", true }, { "granby404.eu", true }, - { "grancargo.com.br", true }, + { "grancargo.com.br", false }, { "grancellconsulting.com", true }, { "grancordobahoy.com.ar", true }, { "grand-books.cf", true }, + { "grand-certification.kz", true }, + { "grand-challenge.org", true }, { "grand-design.tk", true }, { "grand-house.gq", true }, { "grand-knighki.gq", true }, { "grand-sity.ru", true }, - { "grandbelgian.be", true }, + { "grandblanctwpmi.gov", true }, + { "grandcabin.md", true }, { "grandcafeatpark.nl", true }, - { "grandcafetwist.nl", true }, { "grandcanyon.tk", true }, { "grandcanyonmore.com", true }, { "grandcanyonmoretours.com", true }, @@ -53631,15 +62200,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grande.coffee", true }, { "grandepresion.com", true }, { "grandesign.pt", true }, + { "grandesmaisons.fr", true }, + { "grandeurgifts.in", true }, { "grandfallscamp.com", true }, { "grandfieldok.gov", true }, + { "grandfoodandcateringservices.com.au", false }, { "grandfootball.tk", true }, + { "grandhomemx.com", true }, { "grandi-books.gq", true }, { "grandisco.tk", true }, + { "grandiscontionline.com", true }, + { "grandislandne.gov", true }, { "grandkids-toys.com", true }, - { "grandlineshop.com", true }, { "grandmasfridge.org", false }, - { "grandmaspasta.com", true }, { "grandmasternetwork.com", true }, { "grandmusiccentral.com.au", true }, { "grandpachy.tk", true }, @@ -53647,11 +62220,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grandpad.net", true }, { "grandpadusercontent.com", true }, { "grandrapidsmn.gov", true }, + { "grandrapidswi.gov", true }, { "grandstarcourier.ml", true }, { "grandtiresers.ga", true }, + { "grandviewgynecology.ca", true }, { "grandviewheights.gov", true }, { "grandwailea.com", true }, { "grandworldnghiduong.com", false }, + { "grandx86.pl", false }, { "granfort.es", false }, { "granfutbol.com", true }, { "grangecon.tk", true }, @@ -53659,29 +62235,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grani.gq", true }, { "granian.pro", true }, { "granica.tk", true }, + { "granigroup.ru", true }, { "granishe.com", true }, { "granit-capital.ga", true }, + { "graniteedvance.org", true }, + { "graniteescrow.com", true }, { "graniteind.com", true }, { "granitestateproductions.tk", true }, + { "grannynude.tv", true }, + { "grannypussy.net", true }, + { "grannypussy.tv", true }, + { "grannypussypics.com", true }, { "grannys-stats.com", true }, - { "grannyshouse.de", false }, + { "grannytitty.com", true }, + { "grannytube.net", true }, + { "grannytube.tv", true }, + { "grannytubes.com", true }, { "granool.ga", true }, { "granotamaniacos.tk", true }, { "granpoder-islacristina.tk", true }, { "gransfors354.com", true }, - { "granstor.com", true }, + { "granstor.com", false }, { "granstrom.tk", true }, + { "grantashqg.com", true }, { "grantcountyne.gov", true }, { "grantdb.ca", true }, { "grantmorrison.net", true }, - { "grantpark.org", true }, { "grantsmasters.com", true }, + { "grantsolutions.gov", true }, + { "granttwpstclairmi.gov", true }, + { "granulate.io", true }, { "graonatural.com.br", false }, { "grapee.jp", true }, { "grapeintentions.com", true }, { "grapevine.is", true }, { "graph.org", true }, - { "graphcommons.com", true }, { "graphe.gq", true }, { "graphene.software", true }, { "grapheneengine.com", true }, @@ -53691,14 +62279,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grapheneos.net", true }, { "grapheneos.org", true }, { "grapheneos.ovh", true }, + { "grapheneos.social", true }, { "graphic-schools.com", true }, { "graphic-shot.com", true }, { "graphicbuffet.co.th", true }, { "graphicdesignresources.net", true }, { "graphicdream.tk", true }, - { "graphicnab.com", false }, + { "graphicinfo.com", true }, + { "graphicmemory.com", true }, + { "graphicnab.com", true }, + { "graphicps.com", true }, { "graphicspace.tk", true }, - { "graphicwallet.com", false }, + { "graphicwallet.com", true }, { "graphicz.ml", true }, { "graphiste-freelance-rouen.fr", true }, { "graphite.org.uk", true }, @@ -53707,40 +62299,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "graphotism.com", true }, { "graphpaper.studio", true }, { "graphviewer.tk", true }, - { "grappes.co", true }, { "grapplinginsider.com", true }, - { "grappy.net", true }, { "grasboom35plus.nl", true }, - { "grasboomamersfoort.nl", true }, - { "grasboombinnendoor.nl", true }, - { "grasboombunschoten.nl", true }, - { "grasboomclophaemer.nl", true }, - { "grasboomderoos.nl", true }, - { "grasboomharmelen.nl", true }, - { "grasboomleusden.nl", true }, - { "grasboommax.nl", true }, - { "grasboommeerbalans.nl", true }, - { "grasboomveenendaal.nl", true }, - { "grasboomvondellaan.nl", true }, { "grasengroenkunstgras.nl", true }, { "grasmark.com", true }, { "grasp24.pl", true }, { "graspingtech.com", true }, { "grasrijk.tk", true }, + { "grassau.com", true }, { "grasscity.com", false }, { "grassenberg.de", true }, { "grasshoppervape.com", true }, + { "grasski.net", false }, { "grassreinforcement.com.au", true }, { "grassroots.org.nz", true }, { "grast.jp", true }, { "graszoden.tk", true }, + { "gratefulwanderertravel.com", true }, { "gratelin.ga", true }, - { "gratis-app.com", true }, + { "graticule.life", true }, { "gratis-hosting.cf", true }, { "gratis.market", true }, { "gratis4u.tk", true }, + { "gratisfotos.nl", true }, { "gratisfullalbum.tk", true }, { "gratishandy.tk", true }, + { "gratisliste.de", true }, { "gratismuziek.tk", true }, { "gratisonlinespel.tk", true }, { "gratisparati.tk", true }, @@ -53748,24 +62332,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gratitudeabundancepassion.com", true }, { "gratius.tk", true }, { "gratiz.nl", true }, - { "gratschwirt.com", true }, { "grattan.co.uk", true }, { "grattecenne.com", true }, { "gratuitweb.tk", true }, { "graumeier.de", true }, + { "grauwasser-blog.de", true }, { "gravedad-zero.tk", true }, { "gravedigger.tk", true }, { "gravelshooters.com", true }, { "gravelshooters.net", true }, { "gravelshooters.org", true }, + { "gravely-dealers.com", true }, { "gravely.com", true }, + { "gravelylawn.com", true }, + { "gravelymower.com", true }, { "gravensteengent.be", true }, - { "graver-art.ru", true }, { "gravescountyky.gov", true }, { "gravilink.com", true }, { "gravira.ru", true }, { "gravirovshik.ru", true }, - { "gravirpro.ru", true }, { "gravitascreative.net", true }, { "gravitational.co", true }, { "gravitational.com", true }, @@ -53781,15 +62366,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gravityresearchgroup.gq", true }, { "gravityresearchgroup.tk", true }, { "gravitysupplychain.com", true }, + { "gravix.dk", true }, { "gravytrain.tk", true }, { "grawe-blog.at", true }, { "gray.network", true }, { "grayarrow.com", true }, + { "graybroughton.com", true }, { "graycat.ml", true }, { "grayhatter.com", true }, { "grayiron.io", true }, { "graylou.com", true }, + { "graymuzzlesociety.org", true }, { "grayowlworks.com", true }, + { "grayphics.com", true }, { "grayrectangle.com", true }, { "grayslakeadvisors.com", true }, { "grayson.sh", true }, @@ -53798,53 +62387,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grayville-il.gov", true }, { "grazetech.com", true }, { "grazhdanskij-advokat.tk", true }, + { "grbrt.com", true }, { "grc.com", false }, - { "grceurope.eu", true }, { "grday.com", true }, + { "grdnlife.site", true }, { "great-ajax.tk", true }, { "great-mom.tk", true }, { "great.nagoya", true }, { "greatagain.gov", true }, { "greataltrock.tk", true }, + { "greatamericaneu.com", true }, + { "greatamericaneurope.com", true }, + { "greatamericanuk.com", true }, + { "greatbarrierisland.nz", true }, { "greatbeginningsmi.com", true }, + { "greatdane.com", true }, { "greatdanegrp.com", true }, + { "greatdanemowers.com", true }, { "greatepier.tk", true }, { "greatergood.com", false }, + { "greatergoods.com", true }, { "greaterreadingyp.org", true }, { "greaterswissmountaindogs.com", true }, + { "greaterzion.com", true }, { "greatestcampsest.ga", true }, { "greatestwallsest.ga", true }, { "greatestwebsiteonearth.com", false }, { "greatfallsmt.gov", true }, - { "greatfire.kr", true }, { "greatfire.org", true }, { "greatgooglymoogly.tk", true }, { "greathairtransplants.com", true }, + { "greathillpartners.com", true }, { "greatlakesden.net", true }, { "greatlakesintegrativemed.com", true }, + { "greatlakestechdiving.com", true }, { "greatlifeinsurancegroup.com", true }, - { "greatlms.com", true }, - { "greatmazes.tk", true }, + { "greatlms.com", false }, { "greatnetsolutions.com", true }, - { "greatpages.com.br", false }, + { "greatnews.ro", true }, + { "greatoceanroadbrewhouse.com.au", true }, + { "greatplains.io", true }, { "greatplainsaustralia.com.au", true }, { "greatrenumbering.tk", true }, + { "greatrichmond.com", true }, { "greatsankeypc.org.uk", true }, { "greatscholars.tk", true }, { "greatscience.tk", true }, { "greatsittersers.ga", true }, { "greatsittersest.ga", true }, - { "greatsoftwares.com.br", true }, { "greatsurfersers.ga", true }, { "greatsurfersest.ga", true }, { "greatvacation.tk", true }, { "greatwebdesign.uk", true }, { "grechutaszkolenia.pl", true }, { "greciahora.com", true }, - { "greditsoft.com", true }, { "greedy-it.de", true }, { "greek-islands-hotels.tk", true }, - { "greek.dating", true }, { "greeklish.gr", true }, { "greekmusic.academy", true }, { "greeknewspapers.tk", true }, @@ -53855,12 +62453,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "green-anarchy.tk", true }, { "green-attitude.be", true }, { "green-aura.ru", false }, + { "green-clean.at", true }, { "green-factory.gq", true }, { "green-factory.ml", true }, + { "green-gardens.fr", true }, { "green-laser.ga", true }, { "green-laser.ml", true }, { "green-light.cf", true }, - { "green-light.co.nz", true }, + { "green-light.co.nz", false }, { "green-light.ga", true }, { "green-light.gq", true }, { "green-light.ml", true }, @@ -53869,14 +62469,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "green-snake.com", true }, { "green-techno.ru", true }, { "green-version.com", true }, + { "green-wood.com", true }, + { "green.com.do", true }, { "greenaddress.it", true }, - { "greenandgolden.com", true }, { "greenangels.com.ua", true }, { "greenapproach.ca", true }, { "greenartistsswiss.ch", true }, { "greenassembly.fr", true }, - { "greenative.ch", true }, + { "greenbat57.fr", true }, + { "greenbeauty.in", true }, + { "greenbuildingsystemsllc.com", true }, { "greencapital.gent", true }, + { "greencbd.com", true }, { "greencircleplantnursery.com.au", true }, { "greencircleplantnursery.net.au", true }, { "greenclouddefense.com", true }, @@ -53902,35 +62506,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greenecountytn.gov", true }, { "greenecountytnsheriffsdept.gov", true }, { "greenews.ga", true }, - { "greenface.it", true }, - { "greenfever.pl", true }, + { "greenex.pro", true }, { "greenfieldlaxwi.gov", true }, + { "greenfieldwi.gov", true }, + { "greenflashforensics.com", true }, { "greenforum.tk", true }, - { "greenfy.de", true }, + { "greenfunder.co.uk", true }, { "greengarden.tk", true }, { "greengates.co.uk", true }, - { "greengo.shop.pl", true }, { "greengoblindev.com", true }, + { "greengorych.io", true }, { "greengorych.ru", true }, { "greengov.gov", true }, { "greengrocery.tk", true }, { "greenhats.de", true }, - { "greenhillhosting.com", true }, { "greenholiday.tk", true }, { "greenhollowbowmen.tk", true }, { "greenhous-technology.tk", true }, + { "greenice.net", true }, { "greeningsremovalsandstorage.co.uk", true }, + { "greenislandgroupny.com", true }, + { "greenit.eco", true }, { "greenkey.gent", true }, { "greenkitchen.tk", true }, { "greenlakecountywi.gov", true }, { "greenland-estate.tk", true }, { "greenleft.org.au", true }, + { "greenlifecannabis.com", true }, { "greenlifetour.tk", true }, + { "greenlighttreeservices.com", true }, + { "greenline.financial", true }, { "greenliquidsystem.com", true }, { "greenliv.pl", true }, - { "greenlungs.net", true }, + { "greenmesg.org", true }, { "greenmind.tk", true }, + { "greenmonkeydesignstudio.com", true }, { "greenmoon.tk", true }, + { "greenmountainenergy.com", true }, + { "greenopedia.com", true }, { "greenopeningsers.ga", true }, { "greenopeningsest.ga", true }, { "greenpal.jp", true }, @@ -53938,14 +62551,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greenpark.uz", true }, { "greenpartyofnewmilford.org", true }, { "greenpaws.ee", true }, - { "greenpeace.berlin", true }, { "greenpeace.community", true }, { "greenplanet.tk", true }, + { "greenplanetgrass.com.au", true }, { "greenridgemo.gov", true }, { "greenroach.ru", true }, { "greenroom.tk", true }, { "greenrushdaily.com", true }, { "greensad36.ru", true }, + { "greensboro.com", true }, { "greensborosecuritycameras.com", true }, { "greensborovt.gov", true }, { "greensidevetpractice.co.uk", true }, @@ -53964,40 +62578,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "greentea.ml", true }, { "greentea.tk", true }, { "greenteamtwente.nl", true }, + { "greentechhvac.in", true }, { "greenthought.tk", true }, { "greentop.tk", true }, - { "greenturtledev.net", false }, + { "greentulipdesign.com", true }, + { "greenupchdky.gov", true }, { "greenux.cloud", true }, { "greenux.cz", true }, + { "greenville.k12.sc.us", true }, { "greenware.tk", true }, { "greenway-moskva.ru", true }, - { "greenway-moving.com", true }, { "greenwaylog.net", true }, { "greenwhitearmy.tk", true }, { "greenwichbiosciences-influence-beta.azurewebsites.net", true }, { "greenwiki.ca", true }, { "greenwithdecor.com", true }, + { "greenwood-it.co.uk", true }, + { "greenwood.sch.ae", true }, { "greenwoodne.gov", true }, { "greenwoodny.gov", true }, - { "greenyflowers.co.uk", true }, { "greenytimes.com", true }, { "greenyway.com", true }, { "greenzved.tk", true }, { "greer.ru", true }, + { "greetabl.com", true }, + { "greetality.com", true }, { "greetingcdsers.ga", true }, { "greetingcdsest.ga", true }, - { "greffe-de-cheveux-turquie.com", true }, + { "greffe-de-cheveux-turquie.com", false }, { "greg.red", true }, - { "gregbonner.ca", true }, - { "gregbonner.com", true }, { "gregbrimble.com", true }, { "gregdf.com", true }, { "greger.me", true }, { "greggsfoundation.org.uk", true }, { "greghouse.tk", true }, { "gregmartyn.com", true }, + { "gregmarziomedia-staging.com", true }, + { "gregmarziomedia.co.za", true }, { "gregmarziomedia.com", true }, { "gregmc.ru", true }, + { "gregmckeown.com", true }, { "gregmilton.com", true }, { "gregmilton.org", true }, { "gregmote.com", true }, @@ -54007,14 +62627,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gregorkofler.com", true }, { "gregory-kramer.fr", true }, { "gregory-thibault.com", true }, - { "gregory.com.co", true }, { "gregorydorrifourt.fr", true }, { "gregoryhammond.ca", true }, { "gregorykelleher.com", true }, { "gregoryrealestategroup.com", true }, { "gregorywiest.com", true }, { "gregproffit.com", true }, - { "greice.de", true }, + { "gregscloud.com", true }, { "greiner-it.de", true }, { "greinerj.de", true }, { "greizer.tk", true }, @@ -54039,10 +62658,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gresik.info", true }, { "gresrewop.ca", true }, { "gresrewop.com", true }, - { "gressnet.id", false }, { "greta-birkner.de", true }, - { "gretaraccontastorie.com", true }, + { "greta-fischer-schule.de", true }, + { "gretaelectric.com", true }, { "gretathemes.com", true }, + { "gretch.space", true }, { "gretchensbridalgallery.com", true }, { "greuel.online", true }, { "greutmann.net", true }, @@ -54051,23 +62671,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grexx.today", true }, { "grey-cat.tk", true }, { "greybeards.ca", true }, + { "greybullwy.gov", true }, { "greycentre.com", true }, { "greycrane.net", true }, { "greydesign.tk", true }, { "greyhackcentral.gq", true }, { "greyhash.se", true }, + { "greyhawkonline.com", true }, { "greyheads.cat", true }, { "greyline.tk", true }, { "greymatteroffline.tk", true }, { "greymattertechs.com", true }, + { "greymuzzlemanor.org", true }, { "greypanel.com", true }, { "greyrectangle.com", true }, { "greyskymedia.com", true }, + { "greysolonballroom.com", true }, { "greystonesmovement.com", true }, { "greystonesscouts.tk", true }, { "greywalker.tk", true }, { "greywolf.cz", true }, + { "grfinefoods.co.uk", true }, { "grfnhousing.org", true }, + { "grg.de", true }, { "grh.am", false }, { "grhhosting.com", true }, { "griassdi-reseller.de", true }, @@ -54075,46 +62701,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grickle.org", true }, { "grid.is", true }, { "gridcatalyst.org", true }, + { "gridfuse.com", true }, { "gridgain.com", true }, { "gridgames.tk", true }, + { "gridgroup.com.tr", true }, { "gridironelitetraining.com", true }, - { "gridky.com", true }, + { "gridlab.de", true }, { "gridly.nl", true }, { "gridpack.org", true }, { "gridspace.ca", true }, { "gridtennis.net", true }, + { "gridvis.cloud", true }, { "griechische-pfoetchen.de", true }, { "griecopelino.com", true }, { "griefheart.com", true }, { "grieg-gaarden.no", true }, - { "grieg.com", true }, { "grieg.net", true }, - { "grieg.no", false }, + { "grieg.no", true }, { "grieg.org", true }, { "grieglogistics.no", true }, - { "griegshipbrokers.com", true }, { "griegshipbrokers.no", true }, { "griendencollege.tk", true }, { "grienenberger.eu", true }, { "griesser2.de", true }, + { "griffinmuseum.org", true }, { "griffinsrfc.tk", true }, - { "griffioenconsulting.com", true }, + { "griffithobs.org", true }, { "griffithobservatory.org", true }, { "griffophotography.tk", true }, - { "grifomarchetti.com", false }, + { "grifomarchetti.com", true }, { "grifone.tk", true }, { "grigo.ga", true }, { "grigo.tk", true }, + { "grigoraslaw.com", true }, { "grigorev.tk", true }, { "grijalba.tk", true }, { "grijpskerk500.tk", true }, + { "grillboxtaxi.de", true }, { "grillen-darf-nicht-gesund-sein.de", true }, { "grillfocused.com", true }, { "grillidellostretto.tk", true }, { "grilllness.com", true }, { "grilltanksplus.com", true }, { "grillteller42.de", true }, - { "grimdarkterrain.com", true }, + { "grimdarkterrain.com", false }, { "grimetoshinecleaners.co.uk", true }, { "grimm.cz", true }, { "grimmhome.com", true }, @@ -54122,7 +62752,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grimorium.tk", true }, { "grimsby.ac.uk", true }, { "grimsbydns.com", true }, - { "grimstveit.no", true }, + { "grimsbymoneyman.com", true }, { "grinday.tk", true }, { "grindgore.tk", true }, { "grinmore.com", true }, @@ -54132,42 +62762,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grinnellplans.com", true }, { "grinpis.tk", true }, { "gripcoat.jp", true }, + { "gripeffect.nl", true }, { "gripeh1n1.com", true }, { "gripencrossfit.cf", true }, { "gripencrossfit.gq", true }, - { "gripnext.com", true }, { "gripnijmegen.rip", true }, + { "grippingtheether.com", true }, { "gripvol.nl", true }, { "gripwenab.cf", true }, { "grishavirus.cf", true }, { "grissianerhof.com", true }, { "griswoldia.gov", true }, { "grit3.com", true }, + { "gritsany.hopto.org", true }, { "grittherapeutic.com", true }, { "griyadenature.tk", true }, { "griyo.online", true }, { "grizz.gdn", true }, { "grizzenergygum.com", true }, - { "grizzlead.com", true }, - { "grizzlys.com", true }, + { "grizzlys.com", false }, { "grizzlys.tk", true }, + { "grm.com.co", true }, { "grnbank.com", true }, - { "gro.life", true }, { "groaccess.com", true }, { "groben-itsolutions.de", true }, { "grockradio.ga", true }, { "grocock.me.uk", true }, { "groenaquasolutions.nl", true }, { "groendakmaker.nl", true }, - { "groenemoskeeen.nl", true }, + { "groenemoskeeen.nl", false }, + { "groeneoldtimer.nl", true }, { "groenlinks.nl", true }, { "groentebesteld.nl", true }, { "groenteclub.nl", false }, { "groentefruitzeep.com", true }, { "groentefruitzeep.nl", true }, - { "groep20.nl", true }, { "groepjam-usedcars.be", true }, { "groepper-it.de", true }, + { "groestlcoin.org", true }, { "groetzner.net", false }, { "grog.pw", true }, { "grokker.com", true }, @@ -54184,12 +62816,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "groomlake.tk", true }, { "groomscroft.co.uk", true }, { "groomscroft.com", true }, + { "grooove.pl", true }, { "grootinadvies.nl", true }, - { "groots.com", true }, { "groots.ngo", true }, + { "groove3.com", true }, { "grooveguard.tk", true }, { "groover.com.br", true }, { "groovie.tk", true }, + { "groovyboove.co.uk", true }, { "groovydiscountsers.ga", true }, { "groovydiscountsest.ga", true }, { "groovydisk.com", true }, @@ -54199,7 +62833,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grossberger-ge.org", false }, { "grossbesteller.dm.de", true }, { "grosser.io", true }, - { "grossiste-marcassite.com", true }, + { "grossiste-en-ligne.com", true }, { "grossiste-vanille.fr", true }, { "grossmisconduct.news", true }, { "grossorders.com", true }, @@ -54215,67 +62849,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grouchysysadmin.com", true }, { "ground-control.de", true }, { "groundball.tk", true }, - { "groundengenharia.com", true }, { "groundfm.tk", true }, - { "groundhogg.nl", true }, - { "groundlabs.com", true }, { "groundmc.net", true }, + { "groundsdirect.com", true }, { "groundspan.com", true }, { "groundthumpingmotors.com", true }, { "groundthumpingmotors.net", true }, { "groundthumpinmotors.com", true }, { "groundthumpinmotors.net", true }, { "group-digitcom.com", true }, + { "group-galore.com", true }, { "group-project.xyz", true }, { "group4layers.net", true }, { "groupama.hu", true }, { "groupama.sk", true }, { "groupamadirekt.hu", true }, - { "groupcollect.com", true }, { "groupdcc.com", true }, - { "groupe-accedia.com", true }, { "groupe-cassous.com", true }, { "groupe-erige.com", true }, { "groupe-goddi.com", true }, - { "groupe-immo9.com", true }, - { "groupe-neurologique-nord.lu", true }, - { "groupeifams.sn", true }, - { "groupescr.fr", true }, + { "groupe-neurologique-nord.lu", false }, + { "groupekabowd.com", true }, + { "groupeleven.com", true }, + { "groupeonepoint.com", true }, + { "groupescr.fr", false }, { "groupghistelinck-cars.be", true }, { "groupkoufopoulou.gr", true }, + { "groupleavingcards.com", true }, { "groupmallers.ga", true }, { "groupmallest.ga", true }, { "groupme.com", true }, + { "groupouts.com", true }, { "grouppassers.ga", true }, { "groups.google.com", true }, { "groupsgyani.com", true }, { "groupsh.ca", true }, { "groupsite.blue", true }, { "groupx.tk", true }, + { "groutandseal.co.nz", true }, { "grove-archiv.de", true }, { "grovecity.cf", true }, { "grovecity.ga", true }, { "grovecity.gq", true }, { "grovecity.ml", true }, + { "grovecrypto.com", true }, + { "grovefinancialgroup.com.au", true }, + { "groveland.place", true }, + { "grovelandmi.gov", true }, { "grovesales.co.uk", true }, { "growatiopex.com", true }, + { "growblocks.com", true }, { "growbydata.com", true }, { "growbyrabbit.com", true }, - { "growebmarketing.com", true }, + { "growcamp.com.br", true }, + { "growebmarketing.com", false }, + { "growers.social", true }, { "growery.com", true }, { "growery.net", true }, { "growery.org", true }, { "growidentity.com", true }, - { "growik.com", true }, { "growingallthings.co.uk", true }, { "growinghumankindness.com", true }, { "growingsearch.com", true }, - { "growingsmiles.co.uk", true }, - { "growledlamp.es", true }, + { "growitsecure.com", true }, + { "growledlamp.fr", true }, + { "growledlamp.it", true }, + { "growling.net", true }, { "growme.gq", true }, { "growth-rocket.com", true }, + { "growth.design", true }, { "growthagent.com", true }, { "growthandrenewal.ca", true }, + { "growthengineering.co.uk", true }, { "growthinbusiness.com", true }, { "growthlab.com.my", true }, { "growthlytics.co.uk", true }, @@ -54287,11 +62932,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "growy.ch", false }, { "grozdanov.tk", true }, { "grozter.se", true }, + { "grpformations.cloud", true }, { "grplusbd.cf", true }, { "grsecurity.net", true }, { "grsglaciere13.asso.fr", true }, { "grtc.today", true }, { "grthomes.com", true }, + { "grtmmail.com", true }, + { "grtp02.com", true }, { "gruaskmsa.cl", true }, { "gruasllanos.cl", true }, { "gruber-software.com", false }, @@ -54307,9 +62955,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gruener-salon-bochum.de", true }, { "gruenerpass.co.at", true }, { "gruenes-wp.de", true }, + { "gruenhagenlaw.com", true }, { "gruenprint.de", true }, - { "gruenstreifen-ev.de", true }, { "gruenwedels-restaurant.de", true }, + { "gruenwedels.de", true }, { "gruhn.email", true }, { "grummittgroundworks.co.uk", true }, { "grumpie.tk", true }, @@ -54317,55 +62966,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "grumpygamers.com", true }, { "grumpyguy.ga", true }, { "grundig.co.uk", true }, - { "grundlage.com.ua", true }, { "grundlage.fi", true }, - { "grundschule-mittelbuch.de", true }, + { "grundschulratgeber.de", true }, { "grundskoleboken.ga", true }, { "grundskoleboken.gq", true }, { "grundskoleboken.tk", true }, { "grundycountyil.gov", true }, { "grundycountyiowa.gov", true }, - { "grunex.com", false }, { "grunion.tk", true }, { "grunlab.net", true }, + { "grunttoziemia.pl", true }, { "grunwaldzki.center", true }, { "grunwasser.fr", true }, - { "grunzgrunz.com", true }, { "grupatvogzivota.tk", true }, { "grupdedansa.tk", true }, { "gruphepsi.tk", true }, { "grupo-famia.tk", true }, { "grupo-zoom.com", true }, - { "grupoalpi.com", true }, { "grupoauxteclic.com", true }, - { "grupocata.com", true }, + { "grupobit.net", true }, + { "grupocb.com.br", true }, { "grupodcasa.tk", true }, { "grupodecoroinhaspnsa.tk", true }, { "grupodepasajeros.tk", true }, { "grupodes.com.br", true }, + { "grupoeitb.eus", true }, { "grupoellatu.tk", true }, { "grupoenelcolombia.com", true }, { "grupoeurodesign.com", true }, + { "grupofarmavip.pt", true }, { "grupoharbour.com", true }, + { "grupoice.com", true }, { "grupoiwana.tk", true }, + { "grupolegalsgf.com", true }, + { "grupomacroex.com", true }, { "grupomanquecura.tk", true }, - { "grupomedicojoya.com", true }, { "grupomedlegal.com", true }, { "grupomonti.com.ar", true }, - { "grupomultiservicio.com", true }, { "grupoparco.com", true }, { "grupoproabienesraices.com.mx", true }, - { "grupoprodec.com.mx", true }, { "grupos.cf", true }, { "gruposanjose.tk", true }, { "gruposiit.com.mx", true }, { "grupovendap.com", true }, + { "grupovisabeira.com", false }, { "gruppa.ml", true }, { "gruppa.net", true }, { "gruppakolibri.ml", true }, { "gruppe-casablanca.tk", true }, - { "gruppoipl.it", false }, { "grupposiciliaviola.tk", true }, + { "gruppotac.com", true }, { "grurez.com", true }, { "gruslic.org.mx", true }, { "gruta.website", true }, @@ -54376,6 +63026,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gruzchiki.ml", true }, { "gruzchiki74.tk", true }, { "gruzinfo.tk", true }, + { "gruzmt.ru", true }, { "gruzoperevozki.ml", true }, { "gruzoperevozki.tk", true }, { "grwebdesigns.gr", true }, @@ -54398,14 +63049,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gsaxcess.gov", true }, { "gscgh.com", true }, { "gscloud.xyz", true }, + { "gsd.id", true }, { "gsded.com", true }, { "gse.space", true }, { "gservera.com", true }, { "gsfreak.pt", true }, + { "gshoes.bg", true }, + { "gsilva.org", true }, { "gsimagebank.co.uk", true }, { "gsiw.be", true }, { "gsiw.gent", true }, { "gslabnet.org", true }, + { "gslate.com", true }, { "gsm-info.tk", true }, { "gsmbrick.com", true }, { "gsmkungen.com", true }, @@ -54415,44 +63070,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gsmsale.nl", true }, { "gsmtool.tk", true }, { "gsmvermist.tk", true }, - { "gsoc.se", true }, { "gsp.com", true }, { "gspcreations.com", true }, { "gspilar.tk", true }, { "gsrc.io", true }, { "gst.name", true }, + { "gst.priv.at", true }, { "gstackrankers.com", true }, { "gstehlik.com", true }, { "gt-himmel.com", true }, - { "gt-network.de", true }, { "gta-arabs.com", true }, + { "gta5redux.com", true }, + { "gtacoop.com", true }, { "gtacty.co", true }, - { "gtaeventos.com", true }, { "gtaforum.nl", true }, { "gtagames.nl", true }, { "gtalenders.ca", true }, - { "gtamoney.net", true }, + { "gtanalytics.com", true }, { "gtapg.net", true }, { "gtb-nsn.gov", true }, { "gtbeyes.com", true }, { "gtbgames.com", true }, { "gtbprivacy.com", true }, + { "gtc.com.gt", false }, { "gtcountymi.gov", true }, { "gtcprojects.com", true }, { "gtd.cloud", true }, + { "gtek.com.br", true }, + { "gtgcloudservices.com", true }, { "gti.cx", true }, + { "gtk-tim.ru", true }, { "gtlaun.ch", false }, + { "gtlcenter.org", true }, + { "gtld.fyi", true }, + { "gtm-server.com", true }, { "gtmetrix.com", true }, { "gtmhub.com", true }, { "gtn-pravda.ru", true }, - { "gtnh.ru", true }, { "gtoepfer.de", true }, { "gtonline.ml", true }, { "gtopala.com", true }, { "gtopala.net", true }, - { "gtour.info", false }, + { "gtreasury.com", true }, { "gtrwebdesign.nl", false }, + { "gts-tradgard.se", true }, + { "gts-varmepumpar.se", true }, + { "gtsb.io", true }, { "gtsoftware.gr", true }, + { "gttglobal.com", true }, { "gtupgrade.eu", true }, { "gtxbbs.com", true }, { "gtxmail.de", true }, @@ -54466,6 +63131,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guamcourts.gov", true }, { "guanggaonet.com", true }, { "guangjiangk.com", true }, + { "guangxibiaomei238.top", true }, { "guannan.net.cn", false }, { "guanzhong.ca", true }, { "guapcoinswap.finance", true }, @@ -54474,7 +63140,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guaranteedexchangeest.ga", true }, { "guaranteedfitdanceshoes.com", true }, { "guaranteedfittangoshoes.com", true }, - { "guaranteedservice.company", true }, { "guardando.tk", true }, { "guardedbox.com", true }, { "guardedbox.es", true }, @@ -54483,18 +63148,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guardian-codex.tk", true }, { "guardian-heliotrope.tk", true }, { "guardian360.nl", true }, - { "guardianerm.com", true }, - { "guardiansoftheearth.org", true }, + { "guardianangelportraits.com", true }, + { "guardiancodewebservices.com", true }, + { "guardianerm.net", true }, { "guardiapretoriana.tk", true }, + { "guardreserves.com", true }, { "guarever.tk", true }, { "guarrato.tk", true }, { "guategmala.ga", true }, { "guateradio.tk", true }, + { "guatzessen.at", true }, { "guayaquil-consort.tk", true }, { "gubagoo.com", true }, { "gubagoo.io", true }, + { "gubea.org", false }, { "gubernia37.ml", true }, { "gubka.ga", true }, + { "gudaman.com", true }, { "gudangpangan.id", true }, { "gudbrand.no", true }, { "guddaff.de", true }, @@ -54502,20 +63172,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gudostudio.tk", true }, { "gudrun.ml", true }, { "gudrun.tk", true }, - { "gudrunfit.dk", true }, - { "gudrungroup.be", true }, + { "gudrunsleiter.it", true }, { "gueckgueck.tk", true }, { "guegan.de", true }, { "guejarsierra.tk", true }, - { "guell.email", true }, { "guelo.ch", true }, { "guelphhydropool.com", true }, { "guendra.dedyn.io", true }, + { "guenstiger-it-support.ch", true }, { "guenther-freitag.tk", true }, { "guenthereder.at", true }, - { "guepardoinvest.com.br", true }, { "guerard.info", true }, { "guercioarchitecture.com", true }, + { "guerillastocktrading.com", true }, { "guernica1913.tk", true }, { "guernseycounty.gov", true }, { "guerra-civil.tk", true }, @@ -54523,7 +63192,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guerracivilencaceres.tk", true }, { "guerrasgalacticas.tk", true }, { "guerrilla-marketing.cf", true }, - { "guerrilla-rf.com", true }, { "guerrillaradio.tk", true }, { "guerrillas.tk", true }, { "guesclin.com", true }, @@ -54538,7 +63206,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guevener.de", true }, { "gufen.ga", true }, { "gufen.gq", true }, - { "gufengmh8.com", true }, { "gufengmh9.com", false }, { "guffr.it", true }, { "gufolev.tk", true }, @@ -54550,32 +63217,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gugs.tk", true }, { "gugu-game.tk", true }, { "gugucnn.tk", true }, + { "gugumu.com", true }, { "guhei.net", true }, { "guhenry3.tk", true }, { "guiabroker.com", true }, { "guiacg.com", false }, - { "guiadamassagem.site", true }, { "guiadev.com", true }, { "guiaextra.com", true }, + { "guiahotelera.com.co", true }, + { "guialegal.co", true }, { "guiaminhasaude.net", true }, + { "guianoticiario.net", true }, + { "guiaprofesional.co", true }, + { "guiarestobar.com.co", true }, { "guiascliente.com", true }, { "guiasdemexico.tk", true }, { "guiasescapate.tk", true }, + { "guiasuteis.com.br", true }, + { "guiatelefone.com", true }, { "guiaturismovallarta.com", true }, + { "guiaturistica.com.co", true }, { "guiaturisticanuevayork.com", true }, { "guid2steamid.com", true }, { "guid2steamid.pw", true }, { "guidaditalia.com", true }, + { "guiddy.fr", true }, { "guide-ecole.ch", true }, { "guide-peche-cantal.com", false }, { "guide-voyage.ga", true }, { "guidebook.co.tz", true }, + { "guidecbd.fr", true }, { "guidechecking.com", true }, { "guidedesventes.fr", true }, + { "guidedogs.org.uk", true }, { "guidedselling.net", true }, - { "guidedsteps.com", false }, - { "guidefox.org", true }, + { "guidedsteps.com", true }, { "guidegr.com", true }, + { "guidehouseinsights.com", true }, { "guideline-pro.com", true }, { "guideline.com", true }, { "guideline.gov", true }, @@ -54583,18 +63261,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guidelines.gov", true }, { "guidemaroc.tk", true }, { "guideo.ch", false }, - { "guideposts.org", true }, + { "guidepointsecurity.com", true }, + { "guideposts.org", false }, { "guides-peche64.com", true }, { "guidesacademe.com", true }, { "guidesiracusa.tk", true }, { "guidesorbetiere.com", true }, { "guidethailande.tk", true }, - { "guidetoiceland.is", true }, { "guidetourism.tk", true }, + { "guidoclub.fr", true }, { "guidograuer.ch", true }, { "guidopedia.ga", true }, { "guikemarijwielhandel.nl", true }, { "guild.xyz", true }, + { "guilda.gg", true }, + { "guilded.gg", true }, { "guildgearscore.cf", true }, { "guildnet.tk", true }, { "guilfordct.gov", true }, @@ -54602,30 +63283,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guillaume-briand.fr", true }, { "guillaumecote.me", true }, { "guillaumematheron.fr", true }, + { "guillaumesworld.com", true }, { "guille.tk", true }, { "guillemagullo.tk", true }, - { "guillemaud.me", false }, + { "guillembosch.es", true }, { "guillen.tk", true }, { "guillouxinformatique.fr", true }, + { "guiltyeats.com", true }, { "guiltyfox.ca", true }, { "guiltyfox.com", true }, { "guim.co.uk", true }, { "guinaliu.tk", true }, - { "guinchoesteticcar.com.br", true }, + { "guineapig101.com", true }, { "guineapigmustach.es", true }, + { "guinel-johnson.fr", true }, { "guinguetteclovis.com", true }, { "guirossler.com.br", true }, { "guise.tk", true }, { "guitar-strings-online.tk", true }, { "guitarangel.tk", true }, { "guitards.tk", true }, + { "guitare-rumba-congolaise-school.com", true }, { "guitarefacile.tk", true }, { "guitarfreak.tk", true }, { "guitarraclasica.tk", true }, { "guitarreria.tk", true }, { "guitarristaluisquintero.com", true }, + { "guitarristas.info", true }, { "guitartrader.international", true }, + { "guj.nic.in", true }, { "gujarat.tk", true }, + { "gujinfo.com", true }, { "gujun-sky.com", true }, { "guki.me", true }, { "gulabovski.ga", true }, @@ -54633,18 +63321,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gulcinulutuna.com", true }, { "guldhaug.org", true }, { "guldkorn.dk", true }, + { "gule.loan", true }, { "gulenbase.no", true }, { "gulfcoastwaterauthoritytx.gov", true }, - { "gulfstream.ru", true }, + { "gulfstream.ru", false }, { "gulfvestors.com", true }, - { "gulfwings.com", true }, { "gulizaroztemel.av.tr", true }, { "gulkhannasir.tk", true }, - { "gulleyperformancecenter.com", true }, + { "gulliversfun.co.uk", true }, { "gulliwer.tk", true }, + { "gulllakeview.com", true }, { "gulphora.tk", true }, { "gulshankumar.net", true }, { "gulsot.tk", true }, + { "guma.cf", true }, + { "guma.ml", true }, { "gumag.tk", true }, { "gumbles.tk", true }, { "gumbo-millennium.nl", true }, @@ -54652,18 +63343,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gumbo.nu", true }, { "gumbointro.nl", true }, { "gumbolustrum.nl", true }, - { "gumeshop.com", false }, { "gumeyamall.jp", true }, { "gumi.ca", true }, { "gummibande.noip.me", false }, { "gummientchen.net", true }, { "gumtree.ie", true }, - { "gunarupa.com", true }, + { "gun-room.com", true }, + { "gunarchive.com", true }, { "gunauc.net", true }, { "gunbot.com", true }, { "gunbrig.com", false }, - { "guncy.tk", true }, { "gundemguncel.tk", true }, + { "gunduzyucel.com", true }, { "gunerds.com.br", true }, { "gunfighterj.com", true }, { "gunhunter.com", true }, @@ -54671,21 +63362,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guninstructionsest.ga", true }, { "gunisifiyatlari.com", true }, { "gunlaketribe-nsn.gov", true }, - { "gunlukburc.net", true }, { "gunners.cf", true }, { "gunnlawfirm.com", true }, + { "gunsinternational.com", true }, { "gunstatus.net", true }, { "gunturnovizal.tk", true }, { "gununsesi.info", true }, { "gununsesi.org", true }, { "gununsesiaz.info", true }, + { "gunvaluesboard.com", true }, { "gunwatch.co.uk", true }, { "gunworld.com.au", true }, { "gunz.net", true }, { "gunziefolleto.tk", true }, { "gunzreplays.com", true }, { "guochang.fun", true }, - { "guochang.xyz", true }, { "guoda.art", true }, { "guogetv.com", true }, { "guohuageng.com", true }, @@ -54696,46 +63387,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guozeyu.com", true }, { "gura.moe", true }, { "gurbetilan.com", true }, + { "gurges.xyz", true }, { "guri.ml", true }, { "gurl.eu.org", true }, { "gurleyal.gov", true }, { "gurmel.ru", true }, - { "gurnick.edu", true }, + { "gurselcetin.com", true }, { "gurty.tk", true }, { "guru-naradi.cz", true }, { "guruakuntansi.co.id", true }, { "guruarchive.com", true }, { "gurucomi.com", true }, - { "gurueffect.com", true }, + { "gurufox.ai", true }, + { "gurugamer.com", true }, { "gurumobile.tk", true }, { "gurunanakdarvar.tk", true }, + { "gurunanakhospitals.com", true }, { "gurunpa.com", true }, + { "gurupendidikan.co.id", true }, { "gururi.com", true }, + { "gurutraveltraining.com", true }, { "guruworld.tk", true }, - { "gus.host", true }, { "gus.moe", true }, { "gusar.by", true }, { "gusli.net", true }, - { "gusmiller.org", true }, { "guso.gq", true }, + { "gust.edu.kw", true }, + { "gust.org.pl", true }, { "gustaff.de", true }, { "gustarfsberg.cf", true }, { "gustarfsberg.ga", true }, { "gustarfsberg.gq", true }, { "gustarfsberg.tk", true }, + { "gustavapp.com", true }, + { "gustaveeiffel-arruda.pt", true }, { "gustavo-lima.ml", true }, - { "gustavo.website", true }, + { "gustavoleiloeiro.lel.br", true }, { "gustavomolina.com", true }, + { "gustavopalitos.com.br", false }, { "gustavovelasco.ml", true }, { "gustavscelmins.tk", true }, + { "gustaw.net.pl", true }, { "gusted.xyz", true }, { "gustiaux.com", false }, + { "gustimaulan.com", true }, { "gusto.com", true }, { "gustom.io", false }, { "gusuraman.tk", true }, + { "gute-schulen-porta.de", true }, { "gutegutscheine.at", true }, { "gutegutscheine.ch", true }, { "gutegutscheine.de", true }, + { "gutenburger-marburg.de", true }, { "gutendag.ga", true }, { "gutetexte.tk", true }, { "guthabenkarten-billiger.de", true }, @@ -54749,20 +63452,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gutschein-spezialist.de", true }, { "gutscheineplus.de", true }, { "gutscheingeiz.de", true }, - { "gutshaus-marketing.de", true }, + { "gutscheinpony.de", true }, { "gutstein.ch", true }, { "gutterbus.com", true }, { "gutterdogs.com", true }, { "gutterguardcharlotte.com", true }, { "gutterguardsystems.com", true }, + { "guttergurugeelong.com.au", true }, { "gutterlogic.com", true }, + { "gutterpupper.com", true }, { "guttershutter.biz", true }, + { "guttertex.com", true }, { "gutuia.blue", true }, { "guug.ml", true }, { "guus-thijssen.nl", true }, { "guvernalternativa.ro", true }, + { "guwowo.com", true }, { "guyeskens.be", true }, { "guykokken.tk", true }, + { "guymenje.com", true }, { "guypearce.co.uk", true }, { "guyretreaters.ga", true }, { "guyretreatest.ga", true }, @@ -54779,6 +63487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "guzelsozlerim.tk", true }, { "guzelvideo.tk", true }, { "guzey.me", true }, + { "guzgu.me", true }, { "guzlewski.pl", true }, { "gv-kirchberg.ch", true }, { "gv-neumann.de", true }, @@ -54787,12 +63496,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gvatas.in", true }, { "gvc-it.tk", true }, { "gvchannel.xyz", true }, + { "gvdn.cz", true }, { "gveh.de", true }, { "gvenglish.com", true }, - { "gvi-timing.ch", false }, - { "gvip.xyz", true }, + { "gvh.hu", true }, + { "gvip.xyz", false }, { "gvitebsk.cf", true }, - { "gvitiming.ch", false }, { "gvobgyn.ca", true }, { "gvoetbaldagenalcides.nl", true }, { "gvoh-ny.gov", true }, @@ -54802,42 +63511,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gvwgroup.cloud", true }, { "gvwgroup.com", true }, { "gvwparts.com", true }, + { "gw-uks-app-test-coreapi-02.azurewebsites.net", true }, { "gw.fi", true }, { "gw.lu", true }, { "gw2efficiency.com", true }, - { "gw2zone.net", false }, { "gw66.cc", false }, + { "gwandalancobras.com.au", false }, { "gwbet99.cc", true }, - { "gwen-lovecoach.com", true }, { "gwennyeeckels.com", true }, { "gwenolakaigre.tk", true }, { "gwerder.net", true }, { "gwg-march.ch", true }, - { "gwhois.org", true }, { "gwinnettcounty.gov", true }, + { "gwinteriors.com.au", true }, { "gwmean.tk", true }, - { "gwmjordan.com", true }, { "gwnmarketing.com", true }, { "gwo24.pl", true }, { "gworld.cf", true }, { "gwrr.com", true }, { "gwrtech.com", true }, - { "gwtg.com", true }, { "gwy15.com", true }, { "gwynfryncottages.com", true }, { "gxdesign.tk", true }, { "gxgx.org", true }, - { "gxlrx.net", true }, + { "gxlrx.net", false }, { "gxm5.com", true }, { "gxmyqy.net", true }, { "gyaanprasaar.tk", true }, + { "gyanchowk.com", true }, { "gyannews.ga", true }, { "gyara.moe", true }, { "gyas.nl", true }, { "gybagardlin.tk", true }, + { "gycis.me", true }, { "gyefund.com", true }, { "gyefund.org", true }, - { "gyengus.hu", true }, + { "gyertyalang.hu", true }, { "gyjbyev.ga", true }, { "gyllander.tk", true }, { "gylly.net", true }, @@ -54845,6 +63554,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gymagine.ch", true }, { "gymbase.ml", true }, { "gymbunny.de", true }, + { "gymguyzclearwater.com", true }, + { "gymguyzstpete.com", true }, + { "gymguyztampa.com", true }, { "gymhero.me", true }, { "gymjokesers.ga", true }, { "gymjokesest.ga", true }, @@ -54858,48 +63570,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "gymnastic.gq", true }, { "gymnastic.ml", true }, { "gymnastic.tk", true }, + { "gymnasticbodies.com", true }, { "gymnastikfitness.se", true }, { "gymnchod.cz", true }, + { "gymonlondon.com", true }, { "gympap.de", true }, { "gympass.com", true }, { "gymvilla.nl", true }, { "gynaecology.co", true }, { "gynaeinfertility.com.sg", true }, { "gynaemd.com.sg", true }, + { "gynaemdclementi.com.sg", true }, + { "gynaeovariancyst.com.sg", true }, + { "gynas.co.uk", true }, { "gyongyosi.ga", true }, { "gyoriedes.hu", true }, { "gyoza.beer", true }, { "gypsiebylouise.com", true }, { "gypso-sendai.com", true }, + { "gypsybloom.co.uk", true }, { "gypsymama.cz", true }, { "gypsyreel.com", true }, { "gyre.ch", false }, { "gyrenens.ch", false }, { "gyroscopicinvesting.com", true }, + { "gyrusclinic.com", true }, { "gyu-raku.jp", true }, { "gyx.one", true }, + { "gyy.me", true }, { "gz-architekten.de", true }, { "gz-benz.com", true }, { "gz-bmw.com", true }, { "gza.jp", true }, - { "gzitech.com", true }, + { "gzitech.com", false }, { "gzitech.net", true }, { "gzitech.org", true }, { "gzlivre.org", true }, { "gzom.ru", true }, { "gzonemu.ga", true }, { "gztelli.ch", true }, + { "h-advisors.global", true }, { "h-gen.to", true }, { "h-jo.net", true }, { "h-maxton.de", true }, + { "h-node.org", true }, { "h-server.myfirewall.org", true }, { "h-var.com", true }, { "h.fo", true }, { "h001.ru", false }, + { "h07.cn", true }, { "h09.eu", true }, { "h0r.st", true }, + { "h0stb3rry.org", true }, { "h0u5er.com", true }, - { "h1.sbs", true }, { "h10l.com", true }, { "h10s.net", true }, { "h11.io", true }, @@ -54910,8 +63633,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "h2.style", true }, { "h2020faros.eu", true }, { "h24.org", true }, + { "h2b.cz", true }, { "h2cclipboard.com", true }, { "h2cdn.cloud", true }, + { "h2gonc.gov", true }, { "h2hc.email", true }, { "h2ole.com", true }, { "h2omusic.tk", true }, @@ -54927,27 +63652,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "h5q.net", true }, { "h6729.co", true }, { "h6729.com", true }, - { "h6852.com", true }, - { "h6853.com", true }, - { "h6913.com", true }, { "h6957.co", true }, { "h6p.de", true }, - { "h81365.com", true }, { "h82365.com", true }, { "h8p.de", true }, { "h9297.co", true }, { "h9397.com", false }, { "h9728.co", true }, + { "h9j.com.br", true }, { "ha-blog.tw", false }, { "ha-kunamatata.de", true }, { "ha.com", true }, { "ha.gl", true }, { "ha3.eu", true }, + { "ha34.com", true }, { "ha6.ru", true }, { "haagsebubbel.tk", true }, { "haakonbecker.de", true }, { "haaldesignpro.com", true }, { "haancommunity.cf", true }, + { "haaog.com", true }, { "haar-trifft-medizin.de", true }, { "haar.gq", true }, { "haarbosch.net", true }, @@ -54967,8 +63691,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "habbolibres.tk", true }, { "habbstars.org", true }, { "habbzohotel.tk", true }, + { "habedieeh.re", true }, { "habeeba.tk", true }, { "habenafilm.cz", true }, + { "habercininyeri.com", true }, { "haberer.me", true }, { "haberlandconsulting.com", true }, { "haberlanddesign.com", true }, @@ -54977,22 +63703,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haberlandoutreach.com", true }, { "haberlandpartners.com", true }, { "haberlandpodcasts.com", true }, - { "haberlandtalents.com", true }, + { "haberledik.com", true }, + { "habermatik.net", true }, { "habermatik.tk", true }, { "habernet.tk", true }, { "habersitesikur.tk", true }, { "haberton.com", true }, { "habesha.bet", true }, + { "habibi-fit.com", true }, { "habilcondominios.com.br", true }, { "habitable.ga", true }, - { "habitacionesalquiler.com", true }, { "habitat-domotique.fr", true }, { "habitatberks.org", true }, - { "habitatetbatiment.fr", true }, + { "habitatforhorses.org", true }, { "habitiss.be", true }, { "hable.kr", true }, - { "hablemosclaro.blog", false }, { "hablemosdenutricion.com", true }, + { "habnubis.es", true }, { "habr.ee", true }, { "habrastorage.org", true }, { "habsmack.tk", true }, @@ -55004,6 +63731,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haccp.roma.it", true }, { "hacertest.com", true }, { "hachette-collections.com", true }, + { "hachettepartworks.com", true }, { "hachimijiogan.info", true }, { "hachre.de", false }, { "hacifadilogullari.com.tr", true }, @@ -55013,8 +63741,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hack-net.gq", true }, { "hack.fi", true }, { "hackablestuff.cf", true }, - { "hackade.org", true }, - { "hackademix.net", true }, { "hackadena.com", true }, { "hackamac.tk", true }, { "hackathonjr.tw", true }, @@ -55028,14 +63754,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hackcraft.net", true }, { "hackdown.eu.org", true }, { "hackdown.tech", true }, + { "hackdra.io", true }, { "hackeado.tk", true }, { "hacked.com", true }, { "hackedaf.com", true }, + { "hackedthe.net", true }, { "hackendoz.com", true }, { "hackengine.ga", true }, { "hackenkunjeleren.nl", true }, { "hackenturet.dk", true }, - { "hacker.club", true }, { "hacker.deals", true }, { "hacker.holiday", true }, { "hacker.im", true }, @@ -55075,11 +63802,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hackforgood.com", true }, { "hackgunny.tk", true }, { "hackhouse.sh", true }, - { "hackingacademy.io", true }, { "hackingand.coffee", false }, { "hackingdh.com", true }, { "hackingfever.tk", true }, { "hackingwithswift.com", true }, + { "hackintosh.eu", true }, + { "hackintosh.social", true }, { "hackmd.io", true }, { "hackmeifyoucan.site", true }, { "hacknet-bar.cn", true }, @@ -55087,20 +63815,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hackops.tk", true }, { "hackreone.com", true }, { "hackrepreneur.com", true }, + { "hackrigs.com", true }, { "hacksecu.re", true }, + { "hacksnation.com", true }, { "hacksoc.co.uk", true }, { "hackthat.tk", true }, { "hackthecat.com", true }, { "hackthehacker.ml", true }, { "hackthissite.org", true }, - { "hacktic.info", true }, { "hacktivis.me", true }, { "hacktivitycon.com", true }, { "hacktober.dk", true }, { "hackworx.com", false }, { "hackyourfaceoff.com", true }, { "hackzogtum-coburg.de", true }, + { "hacp.gov", true }, { "hadaly.fr", true }, + { "hadassah.moscow", true }, { "haddos.tk", true }, { "haderecker.me", true }, { "hadetlachapelle.com", true }, @@ -55113,22 +63844,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hadotifpc.in", true }, { "hadouk.in", true }, { "hadouken.tk", true }, + { "hadoverde.com", true }, { "hadrons.org", true }, { "hadudonura.tk", true }, { "hady.boutique", true }, { "hady.fr", true }, - { "haeckdesign.com", true }, + { "hadzaproperty.com", true }, { "haefligermedia.ch", true }, + { "haegele.consulting", true }, { "haehnel.xyz", true }, { "haehnlein.at", true }, { "haemka.de", true }, { "haemmerle.net", true }, + { "haemonetics.com", true }, { "haens.li", true }, + { "haenterprise.co", true }, { "haerwu.biz", true }, { "hafcareclinic.com", true }, { "hafer.tech", true }, { "haferman.net", true }, { "haferman.org", true }, + { "haffen.com", true }, { "hafizkadir.tk", true }, { "hafling.net", true }, { "haflingers.tk", true }, @@ -55136,35 +63872,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hag27.com", true }, { "hagalaz-design.de", true }, { "hagbergmedia.se", true }, - { "hagen-bauer.de", true }, + { "hagen-bauer.de", false }, { "hagenkleinert.de", true }, { "haggeluring.su", true }, { "haggisofnorway.tk", true }, { "hagiati.gr", true }, - { "hagiaweb.com", true }, { "hagix.tk", true }, + { "hagleitner.com", true }, { "hagoyvivo.com", true }, { "hagskold.se", true }, { "hagtingius.nl", true }, { "haguichi.net", true }, { "haha-raku.com", true }, - { "haha.nl", true }, - { "haibara.top", false }, + { "haha.moe", true }, + { "haha.nl", false }, + { "hahahahaha.cf", true }, + { "hahapo.com", true }, + { "hahn-trafo.com", true }, + { "haiawan.de", true }, + { "haibara.top", true }, { "haiboxu.com", true }, { "haiduc.tk", true }, { "haifaworld.tk", true }, - { "haigekassa.ee", true }, { "haigle.com", true }, - { "haigure.com", true }, + { "haileyuantoy.com", true }, { "hails.info", true }, { "hailstorm.nl", true }, { "hailstormproject.tk", true }, { "haimablog.ooo", true }, { "hainanstar.cc", true }, - { "haindlmuehle.eu", false }, { "haineshilton.com", true }, - { "hainoni.com", false }, - { "hainstr.de", true }, + { "hair-and-makeup-artist.com", true }, { "hair-care-guide.com", true }, { "hair-carekit.tk", true }, { "hair-dressing.tk", true }, @@ -55179,6 +63917,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haircrazy.com", true }, { "haircutideas.gq", true }, { "hairdrezzersonfire.com", true }, + { "hairextensionjakarta.com", true }, { "hairextensionsaustralia.tk", true }, { "hairextensionshop.tk", true }, { "hairextensionstore.tk", true }, @@ -55189,20 +63928,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hairgrowth.ml", true }, { "hairhardstyle.tk", true }, { "hairhumanextensions.tk", true }, - { "hairlissage.be", true }, { "hairloss.com", true }, { "hairlossadvice.tk", true }, + { "hairmitage.pl", false }, { "hairphoto.tk", true }, { "hairpins.tk", true }, { "hairsalon-wish.com", true }, { "hairstyles-salon.tk", true }, + { "hairyfilm.com", true }, + { "hairymilfpics.com", true }, + { "hairypussyvideos.net", true }, + { "hairyteenpics.com", true }, + { "hairytouch.com", true }, + { "hairytube.tv", true }, + { "hairywomen.tv", true }, + { "hairywomenpics.com", true }, { "haislipcorp.com", true }, { "haitaka.cc", true }, { "haitang.com", true }, + { "haitangsoshu.com", true }, + { "haitangsoushu.com", true }, { "haititan.com", true }, { "haititransfert.com", true }, { "haitou.tk", true }, { "haitrieu.com", true }, + { "haixihui.cn", true }, { "haixingyun.com", true }, { "haizs.com", true }, { "haizs.net", true }, @@ -55213,7 +63963,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hajekdavid.cz", true }, { "hajekj.com", true }, { "hajekj.cz", true }, - { "hajnzic.at", false }, + { "hajnzic.at", true }, { "hak-lab.com", true }, { "hak-zona.tk", true }, { "hak.edu.ee", true }, @@ -55224,6 +63974,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hakase.pw", true }, { "hakasia.tk", true }, { "hakatabijin-mind.com", true }, + { "hakatemia.fi", false }, { "hake.me", true }, { "haker24.tk", true }, { "hakerzona.tk", true }, @@ -55235,17 +63986,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hakkasan.com", true }, { "hakkasannightclub.com", true }, { "hakon.lol", true }, - { "haku.farm", true }, { "haku.vn", true }, { "hakufarm.vn", true }, { "hakugin.me", true }, - { "hakuna.live", true }, + { "hakurei.ga", true }, + { "hakurei.win", true }, { "hal-9th.space", true }, - { "hal52.nl", true }, { "halacs.hu", true }, - { "halageorgia.com", true }, { "halagroup.ml", true }, { "halalbooking.com", true }, + { "halatik.com.ua", true }, { "halbbit.eu", true }, { "halberstadt.tk", true }, { "halbich.design", true }, @@ -55253,8 +64003,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "halcyonsbastion.com", true }, { "halcyonyachts.com", true }, { "haleluyah-asuubabi.ga", true }, + { "halepetdoorsofaz.com", true }, { "halescornerswi.gov", true }, { "haleyandlucas.tk", true }, + { "haleyreedpornstar.com", true }, + { "haleywinterspornstar.com", true }, { "half-logic.eu.org", true }, { "half.ga", true }, { "half.host", true }, @@ -55263,14 +64016,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "halfbeastest.ga", true }, { "halfco.de", true }, { "halfhosting.de", true }, + { "halfmba.com", true }, { "halfords.com", true }, { "halfords.ie", true }, { "halfreal.tk", true }, - { "halfwaythere.eu", true }, { "halgap.ga", true }, { "haliava.tk", true }, { "halic.tk", true }, + { "halifaxboropdpa.gov", true }, { "halifaxma.gov", true }, + { "halifaxmoneyman.com", true }, + { "halifaxsailingclub.org.uk", true }, { "halilova.ga", true }, { "halilova.ml", true }, { "halilova.tk", true }, @@ -55278,26 +64034,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "halilyagcioglu.tk", true }, { "halimjr.com", true }, { "halkakoop.com", true }, + { "halkbank.mk", true }, + { "halkoyu.org", true }, { "halkyon.net", true }, - { "hallaminternet.com", true }, - { "hallasan.skin", true }, + { "hall1c.com", true }, + { "hallanalysis.com", true }, { "hallcopainting.com", true }, - { "hallcouture.com", true }, { "hallelujahsoftware.com", true }, { "hallettxn.com", true }, - { "hallhireforevents.co.uk", true }, { "halli.tk", true }, { "halliday.work", true }, { "halligan.tk", true }, { "hallighof.de", true }, { "halligladen.de", true }, { "hallmanmemorials.net", true }, + { "hallmarkbusiness.com", true }, { "hallmarkestates.ca", true }, { "halloffameapartments.com", true }, { "hallofoddities.tk", true }, { "hallofworlds.online", true }, { "hallopstyling.com", true }, { "halloway.tk", true }, + { "halloweencostumesideas101.com", true }, { "halloweenmusic.org", true }, { "hallspumpandwellservice.net", true }, { "halltrends.tk", true }, @@ -55310,12 +64068,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "halogen.city", true }, { "halogen.vip", true }, { "halogenos.org", true }, + { "halomark.com", true }, { "halongbaybackpackertour.com", true }, { "haloobaloo.com", true }, + { "halopedia.org", true }, { "haloperidol.cf", true }, { "halovanic.org", true }, { "halpin.tk", true }, { "halseyor.gov", true }, + { "halterner-tc.de", true }, + { "haluan.co", false }, + { "halukaka.net", true }, + { "halv.me", true }, { "halvalla.tk", true }, { "halyul.com", true }, { "hamacho-kyudo.com", true }, @@ -55325,15 +64089,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hamartrophy.cf", true }, { "hamave.nl", true }, { "hamburg40grad.de", true }, + { "hamburgcode.com", true }, { "hamburgerbesteld.nl", true }, - { "hamburgerbiker.de", true }, { "hamburgerland.tk", true }, { "hamburgobgyn.com", true }, { "hamcram.io", true }, + { "hamdenct.gov", true }, { "hamedfans.tk", true }, + { "hamelneinfachonline.de", false }, + { "hamelnpsychotherapie.de", true }, { "hamerslag.tk", true }, + { "hamgamweb.com", true }, { "hamha.tk", true }, + { "hamibot.cn", true }, + { "hamibot.com", true }, + { "hamiltonatlnj.gov", true }, { "hamiltoncountyil.gov", true }, + { "hamiltoncountyne.gov", true }, + { "hamiltone-clearance.co.uk", true }, + { "hamiltone.co.uk", true }, { "hamiltonil.gov", true }, { "hamiltonpdnj.gov", true }, { "hamiltonsalestraining.com", true }, @@ -55344,6 +64118,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hamiltonzinelibrary.gq", true }, { "hamiltonzinelibrary.ml", true }, { "hamking.tk", true }, + { "hamkorbank.uz", true }, { "hamletstudio.tk", true }, { "hammacklawfirm.com", true }, { "hammann-services.de", true }, @@ -55352,11 +64127,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hammer-sms.com", true }, { "hammercast.fm", true }, { "hammered.tk", true }, - { "hammergroup.com.ua", true }, { "hammerhead.tk", true }, - { "hammerjack.ru", true }, { "hammernews.tk", true }, { "hammerofdamnation.tk", true }, + { "hammerofthor-india.com", true }, { "hammerstorm.ga", true }, { "hamminga.nl", true }, { "hammondwi.gov", true }, @@ -55364,6 +64138,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hampelmd.com", true }, { "hampl.tv", true }, { "hampshiretechservices.co.uk", true }, + { "hamptonandrhodes.com", true }, + { "hamptonrhodes.com", true }, { "hamptonroads.gov", true }, { "hampus.lol", true }, { "hampuskraft.com", true }, @@ -55371,41 +64147,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hamsokhan.tk", true }, { "hamsterchines.tk", true }, { "hamsteriousgift.com", true }, + { "hamsternetwork.com", true }, { "hamstersenanos.tk", true }, { "hamsterworld.tk", true }, { "hamsystems.eu", true }, { "hamtwpfcoh.gov", true }, - { "hamwan.nl", true }, - { "hamyardnn.com", true }, + { "hamwan.nl", false }, + { "hamyarkesht.com", true }, + { "hamza.estate", true }, { "hamzahamry.ga", true }, { "han-nas.com", true }, { "hana-groupsac.com", true }, { "hana.ondemand.com", true }, { "hanabi.fan", false }, - { "hanakaraku.com", true }, + { "hanacademy.us", true }, { "hanakaru.tk", true }, + { "hanan.cz", true }, + { "hanatan.net", true }, { "hanazono.tokyo", true }, { "hanbing.it", true }, + { "hancevillewateral.gov", true }, { "hancockcountyia.gov", true }, + { "hancockcountyky.gov", true }, { "hancockcountymaine.gov", true }, { "hancockcountyohioelections.gov", true }, { "hancockcountywv.gov", true }, { "hancockin.gov", true }, { "hancocklawfl.com", true }, - { "hand-made-business.com", true }, { "hand-made24.de", true }, { "hand.community", true }, { "hand2h.com", true }, + { "handballinside.de", true }, { "handballmania.tk", true }, { "handbrake.fr", true }, + { "handelsbanken.co.uk", true }, + { "handelsbanken.com", true }, + { "handelsbanken.dk", true }, + { "handelsbanken.fi", true }, + { "handelsbanken.no", true }, { "handelsbanken.se", true }, + { "handheldsound.com", true }, { "handhockeyers.ga", true }, { "handhockeyest.ga", true }, + { "handicap-job.com", true }, { "handicappingsportsers.ga", true }, { "handicappingsportsest.ga", true }, { "handicaps-ensemble.org", false }, { "handicapzero.org", true }, { "handicraftsman.tk", true }, + { "handigehannie.nl", true }, { "handleidingkwijt.com", true }, { "handlekrypto.com", true }, { "handles.tech", true }, @@ -55414,19 +64204,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "handlungsleitfaden.de", true }, { "handmade-club.tk", true }, { "handmade-workshop.de", true }, - { "handmadebuy.ru", true }, { "handmadehechoamano.com", true }, + { "handmadeselling.com", true }, { "handmadetutorials.ro", true }, { "handphones.tk", true }, - { "handrollschile.cl", true }, + { "handpresso.com", true }, { "hands.net", true }, { "handsaccounting.com", true }, + { "handsender-express.com", true }, { "handsome-samurai.jp", true }, { "handsomeabel.tk", true }, { "handsonscience.com.au", true }, { "handstandstudio.ga", true }, { "handsup.dance", true }, { "handwerk-digital-steinfurt.de", true }, + { "handwerker4u.de", true }, { "handwerkwebseiten.de", false }, { "handy-fun.tk", true }, { "handy-page.tk", true }, @@ -55436,7 +64228,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "handymanbypolli.com", true }, { "handymanlondonplease.co.uk", true }, { "handynummer-info.ch", true }, - { "handynummer.online", true }, { "handyoutdoorgoods.com", true }, { "handyschaft.de", true }, { "handysex.live", true }, @@ -55456,23 +64247,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hangtenseo.com", true }, { "hangw.xyz", true }, { "hanhardt.org", true }, - { "hanikira.com", true }, + { "haniasitek.com", true }, { "hanimat.pl", true }, + { "hanishbagga.com", true }, { "hanisirfan.cf", true }, - { "hanjl.com", true }, + { "hanjl.com", false }, { "hanjuapp.com", true }, { "hanke.se", true }, { "hankoreas.com", true }, { "hankr.com", true }, - { "hanksacservice.com", true }, { "hanksservice.com", true }, - { "hankunlaw.com", true }, { "hanky2.com", true }, + { "hanlonconcrete.com", true }, + { "hanlonhouse.us", true }, + { "hanmandalu.com", true }, + { "hanmandao.com", true }, + { "hanmandaohang.com", true }, + { "hanmangu.com", true }, + { "hanmanlou.com", true }, + { "hanmanshijie.com", true }, + { "hanmanxia.com", true }, + { "hanmofu.life", true }, + { "hannaandersson.com", true }, + { "hannagroup.ca", true }, { "hannah.link", true }, { "hannahbarrettyoga.com", true }, { "hannaljungberg.tk", true }, - { "hannde.com", true }, { "hannehovi.fi", true }, + { "hannekroencke.com", true }, { "hannes.paris", true }, { "hannit.de", true }, { "hannoluteijn.nl", true }, @@ -55487,6 +64289,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hansa-flex.com.ua", true }, { "hansa.org.ru", true }, { "hansahome.ddns.net", true }, + { "hansanders.nl", true }, { "hansashop.eu", true }, { "hansashop.fi", true }, { "hansbijster.nl", true }, @@ -55498,6 +64301,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hansgoes.nl", true }, { "hansgoesit.nl", true }, { "hanshosting.nl", true }, + { "hanshow.com", true }, + { "hansinternational.com.au", true }, { "hansklok.tk", true }, { "hansminten.com", true }, { "hansmund.com", true }, @@ -55510,35 +64315,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hansvaneijsden.nl", true }, { "hant.se", true }, { "hantera.fi", true }, - { "hantse.com", true }, + { "hantse.com", false }, + { "hanwhalife.com", true }, { "hanxv.pw", true }, { "hanys.xyz", true }, { "hanzcollection.online", true }, { "hanzubon.jp", true }, { "hao-zhang.com", true }, - { "haogoodair.ca", true }, { "haorenka.co", true }, - { "haorenka.me", true }, { "haosq123.com", true }, - { "haoyangmao8.com", false }, { "haoyugao.com", true }, { "haoz.tk", true }, - { "haozhang.org", true }, { "haozhexie.com", true }, + { "haozi.me", true }, { "hap-horecamakelaardij.nl", true }, - { "hapbalili.com", true }, + { "hapfox.de", true }, { "hapijs.cn", true }, { "hapissl.com", true }, { "hapivm.com", true }, { "hapless.tk", true }, - { "haplogroup.org", true }, + { "happeopleindonesia.id", true }, { "happiestoutdoors.ca", true }, { "happii.dk", true }, - { "happilyeverafter.kiwi", true }, - { "happineo.com", true }, { "happinera.com", true }, { "happiness.solutions", true }, - { "happist.com", true }, + { "happity.co.uk", true }, { "happu-dinero.tk", true }, { "happy-end-shukatsu.com", true }, { "happy-face.tk", true }, @@ -55552,6 +64353,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "happyandrelaxeddogs.com", true }, { "happyandrelaxeddogs.eu", true }, { "happyanimalsshop.com", true }, + { "happybabyhappymama.nl", true }, { "happybeerdaytome.com", true }, { "happybirthdaywisher.com", true }, { "happybounce.co.uk", true }, @@ -55565,6 +64367,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "happycore.ml", true }, { "happycrashers.ga", true }, { "happycrashest.ga", true }, + { "happycustomer360.pt", true }, { "happydad.tk", true }, { "happydays.cat", true }, { "happydoghosting.net", true }, @@ -55579,78 +64382,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "happygardencenter.com.br", true }, { "happygreats.ml", true }, { "happygreats.tk", true }, - { "happygutlife.com", true }, - { "happyhealthytechie.com", true }, - { "happyheartsabode.com", true }, { "happyhumans.com", true }, { "happyindia.ml", true }, { "happykidscastles.co.uk", true }, - { "happykidsforkids.com", true }, { "happylearning.com", true }, - { "happylifeacademy.eu", true }, { "happylifestyle.com", true }, { "happymine.nl", true }, + { "happymonday.ua", true }, { "happymondayclub.com", true }, + { "happymoney.com", true }, { "happymothersday.tk", true }, { "happynight.tk", true }, { "happyplantparent.com", true }, { "happyretail.ai", true }, { "happyrunning.tk", true }, { "happyschnapper.com", true }, + { "happyscore.nl", true }, { "happyscubadiving.tk", true }, { "happyteamlabs.com", true }, { "happytestings.com", true }, { "happytime.gq", true }, { "happytours.cf", true }, + { "happytugs.com", true }, { "happyukgo.com", true }, { "happywater.my", true }, { "happyweekend.ga", true }, { "happywheels1.online", true }, { "hapronailz.tk", true }, + { "haproxy.tech", true }, { "hapsana.nl", true }, { "hapsfordmill.co.uk", true }, { "haptemic.com", true }, { "hapticmedia.com", true }, { "hapticmedia.io", true }, { "hapvm.com", true }, + { "haqrpatrol.com", true }, { "harabar.ga", true }, { "harabar.gq", true }, { "harabar.ml", true }, { "harabe.ga", true }, { "harahanla.gov", true }, - { "haraj.com.sa", true }, { "harakahdaily.net", true }, { "harald-d.dyndns.org", true }, { "harald-nyborg.dk", true }, { "harald-pfeiffer.de", true }, - { "haramainbd.com", true }, { "harambo.cf", true }, + { "harapanrakyat.com", true }, { "harapecorita.com", true }, { "harapjunk.hu", true }, + { "harappahomes.com", true }, { "harasov.tk", true }, { "harbecke.cloud", true }, { "harbecke.me", true }, { "harbecke.net", true }, { "harbecke.org", true }, { "harbecke.xyz", true }, + { "harbor.com", true }, { "harborhillsdaycamp.com", true }, { "harborluxuryapartments.com", true }, - { "harcourt.site", true }, { "hard-drive-recovery-blog.tk", true }, { "hard.email", true }, { "hardatack.tk", true }, - { "hardcoen.com", true }, - { "hardcore-bodybuilding.com", true }, + { "hardcore-bodybuilding.nl", true }, { "hardcore-hooligans.tk", true }, + { "hardcore-toys.com", true }, { "hardcoreincest.net", true }, { "hardcorejokeers.ga", true }, { "hardcorejokeest.ga", true }, + { "hardcorepost.com", true }, { "hardeecountyfl.gov", true }, { "hardeman.nu", true }, { "hardenburghny.gov", true }, { "hardenize.com", true }, { "hardergayporn.com", true }, - { "hardertimes.com", true }, { "hardesec.com", true }, { "hardfalcon.net", true }, { "hardfloorcleaninglondon.co.uk", true }, @@ -55660,7 +64464,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hardh.at", false }, { "hardhat.io", true }, { "hardhatengineer.com", true }, - { "hardhour.com", true }, { "hardies.nl", true }, { "hardinal.com", true }, { "hardincountyil.gov", true }, @@ -55674,11 +64477,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hardnoiser.tk", true }, { "hardrain980.com", true }, { "hardrock.tk", true }, + { "hardrockcasinolaketahoe.com", false }, + { "hardscience.games", true }, + { "hardscience.io", true }, { "hardstation.tk", true }, { "hardstyleclothes.tk", true }, { "hardtec.tk", true }, { "hardtfrieden.de", true }, - { "hardtime.ru", true }, { "hardtime.tk", true }, { "hardtimeszine.tk", true }, { "hardwake.tk", true }, @@ -55687,23 +64492,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hardwarelogin.com", true }, { "hardwarelogin.rocks", true }, { "hardwareschotte.de", true }, - { "hardweb.it", true }, + { "hardwick-ma.gov", true }, { "hardwickvt.gov", true }, + { "hardwoodhoudini.com", true }, { "hardworm.tk", true }, { "hardy.bz", true }, + { "hardyboyplant.com", true }, { "hardyhaberland.com", true }, - { "harelmallac.com", false }, + { "hardzone.es", true }, { "harem.tk", true }, { "harery.com", true }, + { "harfordpark.org", true }, { "harfordvotes.gov", true }, { "hargaindo.com", true }, { "hargamobilmu.com", false }, { "hari-katha.tk", true }, - { "harianaceh.co.id", false }, + { "hari-tech.com", true }, + { "harianjogja.com", true }, + { "hariberkesan.com", true }, { "haribilalic.com", true }, { "harigovind.org", true }, { "hariharnagar.tk", true }, { "hariji.tk", true }, + { "haringtwpmi.gov", true }, { "harion.fr", true }, { "harishgoyal.tk", true }, { "haritsa.co.id", true }, @@ -55712,31 +64523,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "harkenzconstruction.com", true }, { "harlan.cc", true }, { "harlem-mt.gov", true }, - { "harley24.org", true }, + { "harlemeverafter.com", true }, { "harleyclassifieds.com", true }, + { "harleyhazepornstar.com", true }, + { "harleysvillegroup.com", true }, { "harlim.tk", true }, + { "harlingentx.gov", true }, { "harlor.de", true }, { "harmfarm.nl", true }, + { "harmim.cz", true }, { "harmlesspeopleers.ga", true }, { "harmlesspeopleest.ga", true }, + { "harmogarde.com.br", true }, { "harmoney.com", true }, { "harmonicasireland.com", true }, { "harmonizely.com", false }, - { "harmonyonline.ir", true }, - { "harmonyplace.com", true }, + { "harmony.co.id", true }, + { "harmonyroomspa.com", true }, + { "harmreductionwa.org", true }, { "harms.io", true }, { "harmsboone.org", true }, + { "harnettcountync.gov", true }, { "harneycountyor.gov", true }, + { "harno.ee", true }, { "harnov.dk", true }, { "harodeportivo.tk", true }, { "haroldkip.nl", true }, { "haroldkramer.tk", true }, + { "haroldsharpe.com", true }, { "harp.gov", true }, { "harpen.de", true }, { "harpersvilleal.gov", true }, { "harplingemark.se", true }, - { "harpoo.jp", false }, { "harpoonlarsen.tk", true }, + { "harputlugil.com", true }, { "harrachovskyapartman.cz", true }, { "harray.tk", true }, { "harrcostl.com", true }, @@ -55758,11 +64578,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "harrisonassessments.de", true }, { "harrisonassessments.eu", true }, { "harrisoncareerguide.com", true }, + { "harrisoncountymo.gov", true }, { "harrisoncountyms.gov", true }, { "harrisoncountymschanceryclerk.gov", true }, + { "harrisontownshipmi.gov", true }, + { "harrisrealestate.com", true }, + { "harriswebworks.com", true }, + { "harrogatemoneyman.com", true }, { "harry-baker.com", true }, { "harry-hk.tk", true }, { "harryagustiana.tk", true }, + { "harryanddavid.com", true }, + { "harryandharrison.com", true }, { "harrychristensen.tk", true }, { "harrymcgee.tk", true }, { "harrymclaren.co.uk", true }, @@ -55771,17 +64598,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "harrypottereditor.com", true }, { "harrypottereditor.net", true }, { "harrypottervenezuela.tk", true }, - { "harrysdiveshop.com", true }, { "harrysmallbones.co.uk", true }, - { "harrysqnc.co.uk", true }, { "harryvapoteur.com", true }, + { "harryvrancken.nl", true }, { "harryxxjohnson.ga", true }, - { "harryyy.me", true }, + { "harryyy.me", false }, { "harshani.ga", true }, { "harshee.ml", true }, { "hartan.to", true }, { "hartfordct.gov", true }, - { "hartfordschools.org", true }, + { "hartfordschools.org", false }, + { "hartfordtwpwipd.gov", true }, { "hartie95.de", true }, { "hartleighclyde.com.au", true }, { "hartlep.email", true }, @@ -55789,9 +64616,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hartlieb.me", true }, { "hartmancpa.com", true }, { "hartmann-hartmann.eu", true }, + { "hartmannindustries.com", true }, { "hartmutschnepel.de", true }, { "hartpsychologen.nl", true }, { "hartsfieldrock.tk", true }, + { "hartslagnu.nl", true }, { "hartstart.info", true }, { "hartvannike.tk", true }, { "hartwellga.gov", true }, @@ -55803,42 +64632,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "harukawa.moe", true }, { "harumi-cl.jp", true }, { "harunafilez.tk", true }, + { "haruto.zone", true }, { "harvard-ma.gov", true }, + { "harvardil.gov", true }, { "harvardpartners.com", true }, { "harvestapp.com", true }, { "harvester.fr", true }, { "harvestfellowshipchurch.net", true }, + { "harvestgospelministries.org", true }, { "harvestmoon.ga", true }, { "harvestmoon.ml", true }, { "harveyauzorst.com", true }, { "harveyplum.com", true }, { "harveysautoservice.net", true }, + { "harveysproducts.co.nz", true }, { "harwoeck.group", true }, + { "haryana.gov.in", true }, { "harz.cloud", false }, { "harzin.tk", true }, + { "harzlaender.de", true }, { "has-no-email-set.de", true }, { "has.gy", true }, { "has.report", true }, { "has.work", true }, { "hasabig.wang", true }, { "hasalittle.wang", true }, - { "hasan.im", true }, { "hasandeniz.uk", true }, + { "hasandurmus.com", true }, + { "hasanmtech.com", true }, { "hasansaribas.com", true }, { "hasanyildiz.com", true }, + { "hasas-automatizari.ro", true }, + { "hasas-cnc.ro", true }, { "hasbara.tk", true }, { "haschrebellen.de", true }, { "hasdf.de", true }, { "hasecuritysolutions.com", true }, + { "hasel.news", true }, { "haselsteiner.me", true }, { "hasenmueller.de", true }, { "hasgeek.com", true }, - { "hash.army", true }, { "hash.works", true }, { "hashcat.net", true }, + { "hashedin.com", true }, { "hashemian.com", true }, { "hashes.org", true }, - { "hashi.dk", true }, + { "hashi.dk", false }, { "hashi.icu", true }, { "hashi.sbs", true }, { "hashiconf.com", false }, @@ -55854,11 +64693,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hashru.nl", true }, { "hashsters.com", true }, { "hashsters.io", true }, + { "hashulchan.co.il", true }, { "hashworks.net", true }, { "hashxp.org", true }, { "hasilkeluaransgp.com", true }, { "hasilocke.de", true }, { "hasjob.co", true }, + { "haskellcountytx.gov", true }, { "haskovec.com", true }, { "hasmoralsers.ga", true }, { "hasmoralsest.ga", true }, @@ -55868,23 +64709,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hassclan.tk", true }, { "hasselbach-dellwig.de", true }, { "hassellunden.ga", true }, - { "hasseplatslageri.se", true }, { "hassiba-abderaouf.tk", true }, { "hassmelden.de", false }, { "hassra.org.uk", true }, { "hasstopped.com", true }, { "hastadoktor.com", true }, + { "hastaneurunleri.com.tr", true }, { "hastati.tk", true }, { "hastavem.com", true }, + { "hastingsapplianceservice.com.au", true }, + { "hastingsdirect.com", true }, + { "hastingsmi.gov", true }, { "hastingsne.gov", true }, { "hastmassage.tk", true }, { "hastyllc.com", true }, - { "hasyour.xyz", true }, + { "hasx.me", true }, { "hasznosithato.tk", true }, - { "hatachan.site", true }, + { "haszon.hu", true }, { "hatake.tk", true }, + { "hatakekaigi.com", true }, { "hataonline.tk", true }, { "hatarisecurity.co.ke", true }, + { "hataybitkisel.com", true }, { "hatcher.cloud", true }, { "hate.ga", true }, { "hate.tk", true }, @@ -55895,10 +64741,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hathai.org", true }, { "hathawaydinwiddie.com", true }, { "hatierchinois.fr", true }, + { "hatinyhouse.com", true }, { "hatori.tk", true }, { "hatpakha.com", true }, { "hatraters.ga", true }, { "hatratest.ga", true }, + { "hatsnet.io", false }, + { "hatsthings.com", true }, { "hatsuharu.tk", true }, { "hatsukoi-seikotsu.com", true }, { "hatter.ink", true }, @@ -55908,6 +64757,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haucke.xyz", true }, { "haughtonla.gov", true }, { "hauller.ch", true }, + { "haulpackaging.com", true }, { "hauntedcastle.tk", true }, { "hauntedhouserecords.co.uk", true }, { "hauntedtruth.tk", true }, @@ -55916,11 +64766,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hauora.tech", true }, { "haus-garten-test.de", true }, { "haus-henne.de", true }, + { "haus-maritchen.at", true }, { "haus-mittelpunkt.de", true }, { "haus-momo.ch", true }, { "haus.bio", true }, { "hausarzt-nw.de", true }, { "hausarzt-nw.info", true }, + { "hausdorf.ru", true }, { "hausfoto.cz", true }, { "hausfrauficken.com", true }, { "haushaltsaufloesung-vor-ort.de", true }, @@ -55928,17 +64780,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haushaltsaufloesunghannover.de", true }, { "haushenne.de", true }, { "hausjugo.de", true }, + { "hausmann-versorgungstechnik.de", true }, + { "hausmeister-website.de", true }, { "hauspie.fr", true }, + { "hausresidential.com.au", true }, { "haust.tk", true }, { "haustechnik-breu.de", true }, { "hausverbrauch.de", true }, { "hausverwaltung-motsch.de", true }, { "hautarztzentrum.ch", true }, - { "hauteslatitudes.com", false }, - { "hautzentrumwien.at", true }, + { "hautehorlogerie.org", true }, + { "hautemontagne.com", true }, + { "hautescimesone.ch", true }, + { "hauteslatitudes.com", true }, + { "hautsache-friesoythe.de", true }, + { "hautsdefrance.fr", true }, { "havaci.tk", true }, - { "haval.iq", true }, + { "havana-club.com", true }, + { "havanaheritage.org", true }, { "havarijna-sluzba-bratislava.sk", true }, + { "havasuinsurance.com", true }, { "havasuopenhouse.com", true }, { "havasutacohacienda.com", true }, { "havator.fi", true }, @@ -55949,23 +64810,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "haveforeningen-enghaven.dk", true }, { "havefunbiking.com", true }, { "haveg.ru", true }, + { "haveibeenpwned.be", true }, { "haveibeenpwned.com", true }, { "havellab.de", true }, + { "havells.com", true }, { "haven-staging.cloud", true }, { "havencyber.com", true }, + { "havendirecthealth.com", true }, { "havenstar.com", true }, + { "havenstudios.com", true }, + { "haverford.com", true }, { "havernbenefits.com", true }, + { "haverplastics.co.uk", true }, { "haverstack.com", true }, { "havetherelationshipyouwant.com", true }, + { "havivdriver.co.il", true }, { "havohravo.com", true }, + { "havuzkapinda.com", true }, { "hawaiiafro.tk", true }, { "hawaiianchoice.com", true }, { "hawaiianlion.cf", true }, { "hawaiianlion.ga", true }, { "hawaiianlion.gq", true }, + { "hawaiifamilydental.com", true }, { "hawaiiforbernie.com", true }, - { "hawaiiherb.co", true }, { "hawaiinet.tk", true }, + { "hawaiipolice.gov", true }, + { "hawaindustrial.com", true }, { "hawat.cz", true }, { "hawawa.kr", true }, { "hawickvets.co.uk", true }, @@ -55974,6 +64845,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hawk-la.com", true }, { "hawk.pl", true }, { "hawkargentina.com", true }, + { "hawkbiosystems.com", false }, + { "hawkeyeia.gov", true }, { "hawkeyeinsight.com", true }, { "hawkins.plus", true }, { "hawkinsonkiaparts.com", true }, @@ -55981,73 +64854,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hawkon.dk", true }, { "hawkrovers.tk", true }, { "hawksguild.com", false }, + { "hawle-service.at", true }, { "hawler.tk", true }, { "hawo.academy", true }, { "hax.to", true }, { "haxland.tk", true }, - { "haxo.nl", false }, { "haxor.one", true }, { "haxx.hu", true }, { "hay.email", true }, { "hayai.space", true }, + { "hayalgucu.net", true }, { "hayashi-rin.net", true }, { "hayatmurat.tk", true }, - { "hayden.co.uk", true }, - { "hayden.ru", true }, + { "haydenal.gov", true }, { "haydenbleasel.com", false }, { "haydenfranklin.com", true }, { "haydenjames.io", true }, + { "hayestwpotsegomi.gov", true }, { "hayfordoleary.com", true }, { "hayl.me.uk", true }, - { "haylerivas.com", true }, { "hayleywestenra.tk", true }, - { "hayobethlehem.nl", false }, + { "hayobethlehem.nl", true }, { "hayonik.com", true }, { "haysc.tech", true }, { "hayssuperclean.com", true }, { "haystack.tk", true }, { "haystackrenovation.com.au", true }, + { "haystravel.co.uk", true }, + { "hayvanlar.net", true }, { "hayvid.com", true }, + { "hayvid.net", true }, { "hayward.uk.com", true }, - { "haywardhonda.com", true }, + { "haywoodtn.gov", true }, { "hazalturesan.tk", true }, - { "hazan.eu", true }, { "hazana.ovh", true }, { "hazara-online.tk", true }, - { "hazardhub.com", true }, { "hazaristan.asia", true }, { "haze-productions.com", true }, { "haze.productions", true }, { "hazelhof.nl", true }, { "hazelkid.tk", true }, - { "hazelwilks.co.uk", true }, { "hazeover.com", true }, + { "hazethings.com", true }, { "hazimdesign.tk", true }, { "hazit.co.il", true }, + { "hazlocheaters.com", true }, { "hazloconlapix.com", true }, { "hazyhosting.tk", true }, { "hazytales.com", true }, { "hazza.net", true }, + { "hb.by", true }, { "hb5197.com", false }, { "hb6729.com", true }, { "hb8522.com", true }, { "hb9397.com", true }, + { "hba1crechner.de", true }, { "hbaa.ml", true }, { "hbag.org", true }, - { "hbauer.net", true }, + { "hbauer.net", false }, { "hbbet.com", true }, { "hbcm70.fr", true }, { "hbcu-colleges.com", true }, - { "hbelectricsolutions.com", true }, { "hbfisioeesthetic.com.br", true }, { "hbgshop.cf", true }, { "hbh.sh", true }, - { "hbility.eu", true }, + { "hbility.eu", false }, + { "hbl-stahl.de", true }, { "hblwrk.de", true }, { "hbo-center.com", true }, { "hboeck.de", true }, + { "hbomaxaustralia.com", true }, { "hbpro.pt", true }, { "hbr.link", true }, + { "hbs-it-gmbh.de", true }, { "hbshop.com.br", true }, { "hbsslaw.co.uk", true }, { "hbsslaw.com", true }, @@ -56057,24 +64936,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hbweb.io", true }, { "hbxianghang.com", false }, { "hby.cx", true }, + { "hc-sc.gc.ca", false }, + { "hcahealthcare.co.uk", true }, + { "hcamag.com", true }, + { "hcaptcha.com", true }, + { "hcasino.it", true }, { "hcaz.io", true }, - { "hcbj.io", true }, { "hcc-s.de", true }, { "hcc-server.de", true }, { "hccnet.org", true }, + { "hcd.com", false }, { "hcdatn.gov", true }, + { "hcdonbass.com", true }, + { "hcelite.org", true }, + { "hcfeye.com.au", true }, + { "hcfl.gov", true }, { "hcfoodpantry.org", true }, { "hcg24.com", true }, { "hcgallia.tk", true }, { "hcie.pl", false }, { "hclsrilanka.com", true }, + { "hclsw.at", true }, + { "hclsw.ch", true }, + { "hclsw.de", true }, { "hclu.co", true }, + { "hcmuehlethurnen.ch", true }, { "hcnh.gov", true }, { "hco4.com", true }, { "hcqmeta.com", true }, { "hcr.io", false }, { "hcs.land", true }, - { "hcsbk.kz", true }, { "hcscrusaders.com", true }, { "hcsoffshore.com", true }, { "hctegelhandel.tk", true }, @@ -56082,8 +64973,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hcv.cz", true }, { "hcv.ind.in", true }, { "hcvp.com.pt", true }, - { "hd-iptv.co", true }, { "hd-offensive.at", false }, + { "hd-olimpo.club", true }, { "hd-only.org", true }, { "hd-outillage.com", true }, { "hd4arab.tk", true }, @@ -56091,33 +64982,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hd6957.com", true }, { "hd9397.com", true }, { "hd9721.com", true }, + { "hd9xmovie.co", true }, + { "hdaccess.info", true }, + { "hdatraining.ma", true }, + { "hdbigass.com", true }, { "hdbits.org", true }, + { "hdblackporn.com", true }, + { "hdbooty.com", true }, { "hdc.cz", true }, - { "hdcenter.cc", true }, + { "hdc.sg", true }, { "hdcoupler.com.au", true }, { "hddrecovery.net.au", true }, { "hdeaves.uk", true }, { "hdepic.com", true }, - { "hdepic.net", true }, { "hdert.com", true }, { "hdevent.net", true }, { "hdf.world", true }, - { "hdfilmifullizle.com", true }, { "hdfilmtime.com", true }, { "hdfreeizle.com", true }, { "hdfreex.com", true }, - { "hdgarage.nl", true }, + { "hdgrannytube.com", true }, { "hdguru.com", true }, { "hdhoang.space", true }, - { "hdkandsons.com", true }, + { "hdhomelift.com", true }, { "hdlooks.tk", true }, + { "hdm-bogensport.at", true }, + { "hdmatureporn.com", true }, + { "hdmaturetube.com", true }, + { "hdmaturetube.tv", true }, + { "hdmilfporn.com", true }, { "hdmixfilim.com", true }, { "hdml.kr", true }, + { "hdmomtube.com", true }, + { "hdmovierulz.co", true }, + { "hdnakedgirls.com", true }, { "hdnastudio.com", true }, + { "hdporno.tv", true }, { "hdpornose.com", true }, + { "hdpornpics.com", true }, + { "hdpornpicture.com", true }, { "hdrams.com", true }, { "hdrezka2018.tk", true }, - { "hdrsource.com", true }, + { "hdrip.info", true }, { "hdrtranscon.com", false }, { "hds-lan.de", true }, { "hdscheduleers.ga", true }, @@ -56131,23 +65037,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hdtvboardest.ga", true }, { "hdv.paris", true }, { "hdv12.horse", true }, - { "hdvburs.nl", true }, { "hdview.co.uk", true }, { "hdwallpapers.net", true }, + { "hdwetpussy.com", true }, + { "hdxvideosporns.com", true }, { "hdxxxpics.net", true }, { "hdy.nz", true }, { "hdz.org", true }, { "hdzineers.ga", true }, { "hdzineest.ga", true }, + { "he-sb.cf", true }, + { "he-sb.eu.org", true }, + { "he-sb.top", true }, { "he.kg", true }, { "heaaart.com", true }, { "head-hunters.tk", true }, { "head.org", true }, { "head.ru", true }, { "heade.cf", true }, + { "headed2.com", true }, { "headforcloud.com", true }, { "headhuntercolombia.com", true }, { "heading2australia.ga", true }, + { "headinsider.net", false }, + { "headlight.tech", true }, { "headlineclub.gr", true }, { "headlinenews.co", true }, { "headlinepublishing.be", true }, @@ -56156,27 +65069,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "headshotharp.de", true }, { "headsmackskatepark.tk", true }, { "headstogether.org.uk", true }, + { "headstrong.de", true }, + { "headsuphealth.com", true }, + { "headwall-hosting.com", true }, { "headwayapp.co", true }, { "heal-thybody.nl", true }, { "healdsburg.gov", true }, { "healinfoods.com", true }, - { "healingourskin.com", true }, + { "healingfoundation.org.au", true }, + { "healingriverscounseling.net", true }, { "healingthenaturalway.cf", true }, { "healingthenaturalway.ga", true }, { "healingthenaturalway.gq", true }, + { "healingwell.com", true }, + { "healingwithvibrationsummit.com", true }, + { "healinlife.com", true }, + { "healmaster.net", true }, { "healmyhearttoday.ga", true }, { "healmynation.com", true }, { "healtbeautyturkey.tk", true }, { "health-and-beauty-news.net", true }, { "health-ashlandcounty-oh.gov", true }, - { "health-iq.com.au", true }, + { "health-e.org.za", true }, + { "health-ecore.com", true }, + { "health-in-mind.org.uk", true }, { "health-match.com.au", true }, { "health-plan-news.com", true }, { "health-road.ga", true }, + { "health-toolbox.com", true }, + { "health-tourism.com", true }, { "health.gd", true }, { "health.gov", true }, { "health.graphics", true }, - { "health.inc", true }, { "health.mil", true }, { "health24.ml", true }, { "health24world.ml", true }, @@ -56190,7 +65114,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthalbuquerque.tk", true }, { "healthalternativemedicine.tk", true }, { "healthamazing.ga", true }, - { "healthand-beautynews.net", true }, { "healthand.ml", true }, { "healthandglow.tk", true }, { "healthandskinbeauty.com", true }, @@ -56216,20 +65139,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthbrite.ga", true }, { "healthbrochures.info", true }, { "healthbunny.ga", true }, + { "healthcalculator.site", true }, { "healthcanal.ga", true }, { "healthcaptive.ga", true }, { "healthcare.gov", false }, + { "healthcare4ppl.com", true }, + { "healthcareadministrationedu.org", true }, { "healthcareagency.tk", true }, { "healthcareareainfo.tk", true }, + { "healthcareconnexion.com", true }, { "healthcarediversion.org", true }, { "healthcaredrugs.tk", true }, { "healthcareera.tk", true }, { "healthcareinfonews.tk", true }, { "healthcaremedicine.tk", true }, { "healthcarenutrition.tk", true }, + { "healthcarepathway.com", true }, { "healthcareresearch.tk", true }, { "healthcarereviews.tk", true }, - { "healthcaresuccess.com", true }, + { "healthcarestaffingacademy.com", true }, + { "healthcaresystemcareersedu.org", true }, { "healthcatch.ga", true }, { "healthcentralasia.tk", true }, { "healthcentralmedicine.tk", true }, @@ -56244,6 +65173,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthclassy.ga", true }, { "healthclearance.ga", true }, { "healthclyman.tk", true }, + { "healthcode.cf", true }, { "healthcollect.ga", true }, { "healthcolumbia.tk", true }, { "healthcolumbus.tk", true }, @@ -56251,6 +65181,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthcompany.tk", true }, { "healthconfluence.tk", true }, { "healthconstruct.ga", true }, + { "healthcostinstitute.org", true }, { "healthcounty.ga", true }, { "healthcourier.ga", true }, { "healthcrafter.ga", true }, @@ -56277,16 +65208,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthdraw.ga", true }, { "healtheagle.ga", true }, { "healtheffectsofasbestos.com", true }, - { "healthefoundation.eu", true }, { "healthekids.tk", true }, { "healthemden.tk", true }, - { "healthequity.com", true }, { "healthessence.ga", true }, { "healthfalcon.ga", true }, { "healthfame.ga", true }, { "healthfiesta.ga", true }, { "healthfinder.gov", true }, { "healthfitapp.com", true }, + { "healthfitstore.com", true }, { "healthflavor.ga", true }, { "healthfleet.ga", true }, { "healthfoam.com", true }, @@ -56294,21 +65224,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthfortworth.tk", true }, { "healthfrederick.tk", true }, { "healthfreeport.tk", true }, + { "healthful.eu.org", true }, { "healthglamour.ga", true }, { "healthgoddess.ga", true }, { "healthgrace.ga", true }, + { "healthgrad.com", true }, { "healthgrandrapids.tk", true }, { "healthguerilla.ga", true }, { "healthguerrilla.ga", true }, + { "healthhair.ru", true }, { "healthhard.ga", true }, { "healthharrisburg.tk", true }, { "healthhelena.tk", true }, { "healthhendersonville.tk", true }, { "healthhopper.eu", true }, + { "healthhosts.com", true }, { "healthhuntsville.tk", true }, { "healthhusky.ga", true }, + { "healthi.ch", true }, { "healthiercompany.com", true }, - { "healthiergenerations.co.uk", true }, + { "healthierweight.co.uk", true }, { "healthimagine.ga", true }, { "healthintergrity.ga", true }, { "healthiraq.ga", true }, @@ -56317,15 +65252,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthjackpot.ga", true }, { "healthjarrettsville.tk", true }, { "healthjoker.ga", true }, - { "healthjoy.com", false }, { "healthkaro.tk", true }, { "healthkaty.tk", true }, { "healthkayak.ga", true }, { "healthknight.ga", true }, - { "healthl.ink", true }, { "healthlable.com", true }, { "healthlabs.com", true }, { "healthlar.com", true }, + { "healthleadsusa.org", true }, { "healthlesson.tk", true }, { "healthlifeforyou.tk", true }, { "healthlightning.ga", true }, @@ -56373,11 +65307,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthnutritionpublic.tk", true }, { "healthnutritionusa.tk", true }, { "healthnweight.tk", true }, - { "healthoakbrook.tk", true }, { "healthoakland.tk", true }, { "healthocity.ga", true }, { "healthoffline.ga", true }, { "healthoneday.ga", true }, + { "healthonplanet.com", true }, { "healthoptions.tk", true }, { "healthpaducah.tk", true }, { "healthpeace.ga", true }, @@ -56395,6 +65329,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthproconsulting.com", true }, { "healthquality.tk", true }, { "healthquantum.ga", true }, + { "healthquest.com.au", true }, { "healthrail.ga", true }, { "healthrangely.tk", true }, { "healthrapid.ga", true }, @@ -56419,6 +65354,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthscience.tk", true }, { "healthseason.ga", true }, { "healthseattle.tk", true }, + { "healthservicediscounts.com", true }, { "healthsession.ga", true }, { "healthshadow.ga", true }, { "healthsleuth.ga", true }, @@ -56456,16 +65392,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthvision.ml", true }, { "healthwarior.tk", true }, { "healthwausau.tk", true }, + { "healthwealthtime.org", true }, + { "healthweather.us", true }, { "healthwichita.tk", true }, { "healthworksmarden.com.au", true }, { "healthy-map.com", true }, { "healthy-shoko.com", true }, + { "healthy.io", true }, { "healthyaging-digital.com", true }, { "healthyalabama.tk", true }, { "healthyalaska.tk", true }, { "healthyankee.ga", true }, { "healthyarizona.tk", true }, { "healthyarkansas.tk", true }, + { "healthybeauty365bn.com", true }, { "healthyburn.tk", true }, { "healthychoices.tk", true }, { "healthyclinic.tk", true }, @@ -56479,18 +65419,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthyhours.tk", true }, { "healthyindiana.tk", true }, { "healthykansas.tk", true }, - { "healthykitchen101.com", false }, + { "healthykitchen101.com", true }, { "healthykitchen33.com", false }, - { "healthykitz.com", true }, - { "healthyliving-healthnetwork.com", true }, { "healthymaine.tk", true }, { "healthymen.ml", true }, { "healthyminnesota.tk", true }, { "healthymississippi.tk", true }, { "healthynewjersey.tk", true }, { "healthynutritionguide.info", true }, + { "healthyoptions4me.com", true }, + { "healthyorbeauty.com", true }, { "healthyoregon.tk", true }, { "healthypennsylvania.tk", true }, + { "healthypeople.gov", true }, + { "healthyrecipes101.com", true }, { "healthyrun.tk", true }, { "healthysanfrancisco.org", true }, { "healthysouthdakota.tk", true }, @@ -56504,29 +65446,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "healthyyou.ml", true }, { "healtmainwp.tk", true }, { "healtyersworld.tk", true }, - { "heanbian.com", true }, { "heap.zone", true }, + { "heapsofheaven.com", true }, { "heardcountyathletics.com", true }, { "hearfool.cc", true }, { "hearingshofar.com", true }, - { "hearingthecall.org", true }, { "hearkener.com", true }, { "heart-cartoons.tk", true }, + { "heart-valve-surgery.com", true }, { "heartbeat24.de", true }, { "heartbomb.co.jp", true }, { "heartbound.wiki", true }, { "heartcard.tk", true }, { "heartchating.tk", true }, - { "heartfolder.com", true }, + { "heartcomms.com.au", true }, { "heartgames.pl", true }, { "hearthealing.ca", true }, { "hearthstonehungary.hu", true }, { "hearthustlebrands.com", true }, { "heartlandbiomed.com", true }, + { "heartlandbraidedrugs.com", true }, + { "heartlandcocacola.com", true }, { "heartlandrentals.com", true }, { "heartlandtownandcountry.tk", true }, - { "heartmdinstitute.com", true }, { "heartofamum.com", true }, + { "heartofenglandfirstaidtraining.com", true }, { "heartofgod.tk", true }, { "heartofthepeace.com", false }, { "heartonmysleevegreetings.com", true }, @@ -56535,10 +65479,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hearttruth.gov", true }, { "heartview.com.br", true }, { "heartwoodart.com", true }, - { "heartwoodrefuge.org", true }, + { "heartwork.pl", true }, { "hearty.blog", true }, - { "hearty.edu.pl", true }, + { "hearty.eu.org", false }, { "hearty.ga", true }, + { "hearty.gift", true }, { "hearty.gq", true }, { "hearty.ink", true }, { "hearty.me", true }, @@ -56551,40 +65496,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hearty.tw", true }, { "heartyapp.com", true }, { "heartyapp.tw", true }, - { "heartycorp.com", true }, - { "heartycraft.com", true }, + { "heartymail.com", true }, + { "hearusa.com", true }, + { "heaslip-aluminium-smelter-engineering.com", true }, + { "heat-press.com.au", true }, { "heat-ua.pt", true }, { "heat.gov", true }, { "heatcheck.security", true }, { "heatcleanerers.ga", true }, { "heatcleanerest.ga", true }, { "heatershop.co.uk", true }, + { "heatgeek.com", true }, { "heatherbells.tk", true }, { "heatherleysephotography.com", true }, { "heathersmithcommercial.com", true }, + { "heathersnotes.com", true }, { "heatingequipment.tk", true }, { "heaven-boutique.de", false }, - { "heaven.moe", true }, { "heavenlybeauty.tk", true }, + { "heavenlylanka.com.au", true }, + { "heavenlynails.pl", true }, { "heavenlyseals.com", true }, { "heavenlysmokenc.com", true }, { "heavennewsers.ga", true }, { "heavennewsest.ga", true }, { "heavensattic.co.uk", true }, + { "heavensolutions.com.br", true }, + { "heaventurizm.com.tr", true }, { "heavycaliber.com", true }, { "heavycoupleers.ga", true }, { "heavycoupleest.ga", true }, { "heavyequipments.org", false }, + { "heavyhymnal.com", true }, { "heavylord.tk", true }, - { "heavymetalonline.co.uk", true }, { "heavysounds.tk", true }, { "hebamme-cranio.ch", true }, { "hebamme-ebersberg.de", true }, { "hebamme-sabine.eu", true }, { "hebbelabi.tk", true }, - { "hebbet.de", true }, { "hebe.stream", true }, { "heber.tk", true }, + { "hebersprings.gov", true }, { "heberut.gov", true }, { "hebikhiv.nl", true }, { "hebin.cf", true }, @@ -56592,7 +65544,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hebrew.ga", true }, { "hebronnh.gov", true }, { "hec-espace-entreprise.ch", false }, - { "hec.global", true }, { "hecco.io", true }, { "heccubus.tk", true }, { "hechaocheng.ga", true }, @@ -56601,16 +65552,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hechizosymagianegra.es", true }, { "hechno.com", true }, { "heckelektro.de", true }, - { "heckhome.com", false }, + { "heckhome.com", true }, { "hecking.tk", true }, { "heckmann.photos", true }, { "hectorama.tk", true }, { "hectorfiorini.com.ar", false }, { "hectorlima.tk", true }, + { "hedd.audio", true }, { "heddoun.com", true }, { "hedefcini.com", true }, + { "hedefhalk.com", true }, + { "hedefkompresor.com", true }, { "hedenskrig.tk", true }, { "hederaconsulting.com", true }, + { "hederawinkel.nl", false }, { "hedge.fi", true }, { "hedgedoc.net", true }, { "hedgedoc.org", true }, @@ -56623,23 +65578,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hedman.tk", true }, { "hedonics.org", true }, { "hedonism.org", true }, + { "hedonistai.org", true }, { "hedonistic-imperative.com", true }, { "hedonistic.org", true }, + { "hedonisticimperative.com", true }, { "hedonium.com", true }, { "hedronarchive.com", true }, { "hedweb.co.uk", true }, { "hedweb.com", true }, { "hedweb.net", true }, { "hedweb.org", true }, + { "hedweb.uk", true }, { "hedys.de", true }, - { "heedybees.com", true }, - { "heedybees.lk", true }, { "heeftmijnwebsitehttpsnodig.nl", true }, - { "heeler.blue", true }, { "heeler.red", true }, { "heello.es", true }, { "heerenveenlokaal.nl", true }, { "heesenyachts.com", true }, + { "heethealthcare.com", true }, + { "hefengautoparts.com", true }, + { "heficed.com", true }, + { "heftfilme.com", true }, + { "hefty.cloud", true }, { "heg.ge", true }, { "hegartymaths.com", true }, { "hegdahl.tk", true }, @@ -56652,9 +65612,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heheparty.net", true }, { "heheparty.org", true }, { "hehn.de", true }, - { "hehome.xyz", true }, + { "hehome.xyz", false }, { "heiaheia.com", true }, { "heibel.tk", true }, + { "heibobo.cf", true }, + { "heibobo.com", true }, + { "heibobo.ga", true }, + { "heibobo.gq", true }, + { "heibobo.ml", true }, + { "heibobo.tk", true }, { "heic.nz", true }, { "heid.ws", true }, { "heidarilawgroup.com", true }, @@ -56663,15 +65629,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heiden-wir-helfen.de", true }, { "heidifuller.com", true }, { "heidihills.com", true }, + { "heidinousiainen.com", true }, { "heidirange.tk", true }, { "heidisheroes.org", true }, - { "heidiwoodgate.com", true }, { "heidns.cn", true }, { "heighton.com.au", true }, { "heightselectrical.com.au", true }, + { "heigl-care.de", true }, + { "heihaha.com", true }, + { "heihei.cf", true }, + { "heijblok.com", true }, { "heijdel.nl", true }, { "heijmans.blog", true }, - { "heijmans.email", true }, { "heijmans.io", true }, { "heijmans.org", true }, { "heijmans.pm", true }, @@ -56679,7 +65648,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heikal.tk", true }, { "heikegastmann.com", true }, { "heikki-mikkola.tk", true }, - { "heikkileivonen.fi", true }, + { "heiko-zimmermann.com", true }, + { "heiko.ph", true }, { "heikomauel.de", true }, { "heikoopminiaturen.nl", true }, { "heikorichter.name", true }, @@ -56688,26 +65658,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heiliao.in", true }, { "heiligebirmanen.tk", true }, { "heiliger-gral.info", true }, - { "heimansschildersbedrijf.nl", true }, + { "heilpraktiker-maxdorf.de", true }, { "heimatverein-eitensheim.de", true }, - { "heimdallr.nl", true }, + { "heimdallsensors.com", true }, { "heimnetze.org", false }, { "heimonen.eu", true }, + { "heimstaden.dk", true }, { "heina.net", true }, - { "heinenhopman.ro", true }, + { "heineken.co.za", true }, { "heino-peters.de", true }, { "heinonen.cc", true }, + { "heinrich1.de", true }, { "heinrich5991.de", true }, { "heinvanhemert.nl", true }, { "heinzdekat.tk", true }, { "heinzencastellano.tk", true }, { "heiraten-gardasee.de", true }, { "heiraten-venedig.de", true }, + { "heirloom-grove.com", true }, + { "heise.cf", true }, + { "heise.ml", true }, { "heisenberg.co", true }, { "heisgod.org", true }, - { "heissluft-fritteuse.com", true }, + { "heishop.com.br", true }, + { "heishop.mx", true }, { "heist-clan.tk", true }, { "heistheguy.com", true }, + { "heit.store", true }, { "heitepriem.info", true }, { "heiwa-valve.co.jp", true }, { "hejazultra.org", true }, @@ -56715,25 +65692,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heka.ai", true }, { "hekat.sk", true }, { "hekate.com.mx", true }, + { "hekatija.com", true }, { "hekeki.com", true }, - { "hekimim.tk", true }, { "hekoro.ml", true }, { "hektenkairez.com", true }, { "hekwerken.tk", true }, + { "helabet.com", true }, + { "helabet.ng", true }, { "heladospipos.ga", true }, { "helagotaland.ga", true }, { "helagotaland.gq", true }, { "helali.me", true }, - { "helastel.com", true }, { "helbreath.tk", true }, + { "helcim.com", true }, + { "helco.xyz", true }, { "helden-spielen.de", true }, { "heldenhalde.de", true }, - { "helder.tk", true }, - { "helderneves.pt", true }, + { "heldmayer.com", true }, { "heldtech.services", true }, { "heldundsexgott.de", true }, { "helebce.tk", true }, { "heleendebruyne.be", true }, + { "helemduruth.com", true }, + { "helena-loos.de", true }, + { "helenair.com", true }, { "helenakmiec.pl", true }, { "helenaknowledge.com", true }, { "helenapaparizouspainfanclub.tk", true }, @@ -56744,6 +65726,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helenelefauconnier.com", true }, { "helenevanwunnik.tk", true }, { "helenkellersimulator.org", true }, + { "helenlim.pw", true }, { "helensmithpr.co.uk", true }, { "helenssjoholm.cf", true }, { "helenssjoholm.ga", true }, @@ -56753,7 +65736,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helfordriversc.co.uk", true }, { "helga-fest.tk", true }, { "helgaschultz.de", true }, + { "helgeklein.com", true }, { "helhetsframtradande.se", true }, + { "helia.com.au", true }, { "helichat.de", true }, { "heliconservices.com", true }, { "heligrandcanyon.com", true }, @@ -56764,18 +65749,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helioanodyne.eu", true }, { "heliobil.fr", true }, { "heliocentrism.jp", true }, + { "helion.ch", false }, { "helioring.com", true }, { "helios4.com", true }, { "heliosbot.net", true }, { "heliosnet.com", true }, { "heliosvoting.org", false }, + { "heliport-moscow.ru", true }, + { "helisimmer.com", true }, { "heliumtech.tk", true }, { "helix.am", true }, - { "helix.social", true }, + { "helixagencyservices.com", true }, { "helkyn.eu", true }, { "helkyn.fr", true }, { "helkyn.org", true }, - { "hell.rodeo", true }, + { "hell.rodeo", false }, { "hell.sh", true }, { "hellband.tk", true }, { "hellblade.tk", true }, @@ -56785,28 +65773,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hellenicagora.co.uk", true }, { "hellenicmusicacademy.com", true }, { "hellerarko.de", true }, - { "hellersgas.com", true }, { "hellfreak.tk", true }, { "hellhammer.tk", true }, { "hellhavens.tk", true }, + { "hello-aioi.com", true }, { "hello-papaye.com", true }, + { "hello-products.com", true }, { "helloacm.com", true }, { "helloafrica.ga", true }, + { "helloalpha.com", true }, { "helloappservices.com", true }, { "hellobarestore.com", true }, { "hellobee.com", true }, + { "hellobetter.de", true }, { "hellobrian.me", true }, + { "hellocash.business", true }, { "hellocat.cf", true }, { "hellocentral.ga", true }, { "hellocoding.de", true }, { "hellodesign.tk", true }, + { "hellodollface.com", true }, { "helloemailers.ga", true }, { "helloemailest.ga", true }, { "helloexit.com", true }, { "hellofilters.com", true }, - { "hellofound.co", true }, + { "helloheadsup.com", true }, { "helloindia.tk", true }, - { "hellojapan.asia", true }, { "hellokashmir.tk", true }, { "hellolove.sg", true }, { "hellomookie.com", true }, @@ -56821,11 +65813,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helloo.com.br", true }, { "hellopandaphoto.com", true }, { "hellopowerserg.com", true }, + { "hellopredict.com", true }, + { "hellorory.com", true }, { "hellorussia.ga", true }, { "hellosalmon.com", true }, { "hellosells.com", true }, + { "hellosixpackabs.com", true }, + { "helloskip.com", false }, + { "hellosmoove.com", true }, { "hellotandem.com", true }, + { "hellotars.com", true }, { "helloteen.tk", true }, + { "hellothematic.com", true }, { "hellothought.net", true }, { "hellotwist.com", true }, { "hellov.in", true }, @@ -56833,8 +65832,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hellovillam.com", true }, { "helloworldhost.com", false }, { "hellpc.net", true }, + { "hellpizza.nz", true }, + { "hellraid.com", true }, { "hellseeker.tk", true }, - { "hellsh.com", true }, { "hellsinkivampires.tk", true }, { "hellskitsch.com", true }, { "hellsoldiers.tk", true }, @@ -56844,14 +65844,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helm-pokale.at", true }, { "helm-pokale.de", true }, { "helm-trophy.com", true }, + { "helmethouse.com", true }, { "helminger-lrs.at", true }, - { "helmondautoschade.nl", true }, { "helmscapital.co.uk", true }, - { "helmtrophy.com", true }, { "helochic.com", true }, + { "heloisamarra.com", true }, + { "helorobo.com", true }, { "help-me.today", true }, { "help207.me", true }, - { "help24.be", true }, + { "help24.be", false }, { "help911.com", true }, { "helpamericavote.gov", true }, { "helpantiaging.com", true }, @@ -56864,12 +65865,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helpconnect.com.au", true }, { "helpcrm.co.uk", true }, { "helpekwendenihospital.com", true }, - { "helpfulhealthinsurance.com", true }, + { "helpinghandspartners.org", true }, + { "helpingupromo.com", true }, { "helpkoil.com", true }, { "helplightning.com", true }, - { "helpline.com.ua", true }, + { "helpmecovid.com", true }, { "helpmij.cf", true }, { "helpnet.ro", true }, + { "helpout.us", true }, + { "helpowl.com", true }, { "helppc.com.ua", true }, { "helprb.ru", true }, { "helpscoutdocs.com", true }, @@ -56880,7 +65884,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helpticket.ml", true }, { "helpticket.tk", true }, { "helpwaarbenik.nl", true }, + { "helpwiki.nl", true }, + { "helpwise.io", true }, { "helpwithadoption.com", true }, + { "helpwithinreach.com", true }, { "helpwithmybank.gov", true }, { "helpwithmycheckingaccount.gov", true }, { "helpwithmycreditcard.gov", true }, @@ -56888,15 +65895,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "helpwithmymortgage.gov", true }, { "helpwithmymortgagebank.gov", true }, { "helsenorge.no", true }, - { "helseogmassasje.no", true }, + { "helsi.me", true }, { "helsingfors.guide", true }, { "helsinginlaakariyhdistys.fi", true }, - { "helsinki.dating", true }, + { "helsinki-systems.de", true }, + { "helst.org", true }, { "heluna.tk", true }, + { "helvatech.ch", true }, { "helvella.de", true }, { "helvetic.finance", true }, { "hemagon.com", true }, - { "hemant.net", true }, + { "hemanklerehab.com", true }, { "hemaroids.tk", true }, { "hemato.ai", true }, { "hematoonkologia.pl", true }, @@ -56904,25 +65913,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hemdal.se", true }, { "hemdian.com", true }, { "hemlibra.co.il", true }, + { "hemmersbach.com", true }, { "hemnet.se", true }, { "hemorroi.ga", true }, { "hemp.com", true }, { "hemphopper.eu", true }, - { "hempseedhealth.com", true }, + { "hempoffset.com", true }, { "hempsteadcitytx.gov", true }, + { "hemrin.com", true }, { "hems.si", true }, + { "hemtest.com", true }, { "hen.ee", true }, { "hen.ne.ke", true }, { "hendersoncountyil.gov", true }, + { "hendersonky.gov", true }, + { "hendersontennislessons.com", true }, { "hendersonvalleyautomotive.co.nz", true }, { "hendersonwomenscare.com", true }, { "henderz.tk", true }, { "hendrickx.be", true }, { "hendrik.li", true }, { "hendrinortier.nl", true }, + { "hendrix.com.ng", true }, { "hendrix.tk", true }, { "hendryelections.gov", true }, - { "hengelsportdeal.com", true }, { "hengelsportjansenlommel.tk", true }, { "hengstumone.com", true }, { "henhenlu.com", false }, @@ -56930,6 +65944,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "henke-home.eu", true }, { "henker.net", true }, { "henkibeer.com", true }, + { "henko-consulting.com", true }, { "henkpille.tk", true }, { "henkrensing.nl", false }, { "henkverlinde.com", false }, @@ -56939,6 +65954,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hennecke-forstbetrieb.de", true }, { "henneke.me", true }, { "hennepincounty.gov", true }, + { "hennepintheatretrust.org", true }, { "hennes-haan.de", true }, { "hennes-pokalshop.de", true }, { "hennes-shop.de", true }, @@ -56947,25 +65963,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hennesshop.de", true }, { "hennessy.tk", true }, { "hennies.org", true }, + { "hennikernh.gov", true }, { "henningkerstan.de", true }, { "henningkerstan.org", true }, - { "hennymerkel.com", true }, + { "henradplumbing.co.uk", true }, { "henri-feuillade.tk", true }, { "henri.moe", true }, + { "henrico.gov", true }, { "henrieta-nagyova.tk", true }, { "henriettatownshipmi.gov", true }, { "henrik-bondtofte.dk", true }, + { "henrik-sachse.de", true }, { "henrikjosefsson.net", true }, { "henrikjuvonen.fi", true }, { "henriknoerr.com", true }, + { "henriksachse.com", true }, + { "henriksachse.de", true }, { "henriksoderlund.com", true }, { "henrikwelk.de", true }, { "henrilammers.nl", true }, + { "henrri.net", true }, { "henry.gg", true }, { "henryalanbrown.com", true }, { "henrybelk.com", true }, { "henrybrown0.com", true }, { "henryclub.tk", true }, + { "henryco911tn.gov", true }, { "henrycountyga.gov", true }, { "henrycountyohio.gov", true }, { "henrycountysheriffga.gov", true }, @@ -56977,16 +66000,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "henrymercado.tk", true }, { "henrymintzberg.nl", true }, { "henryocallaghan.com", true }, - { "henrysautodetail.com", true }, - { "henrysstore.co.uk", true }, - { "hentai.baby", true }, + { "hentai-paradise.fr", true }, { "hentaigogo.com", true }, { "hentaimaster.net", true }, { "hentaipornography.com", true }, + { "hentaipros.com", true }, + { "hentaiprosnetwork.com", true }, + { "hentairead.com", true }, { "hentairoulette.com", true }, + { "hentaishit.com", true }, { "hentaiworld.cc", false }, - { "hentaiz.net", true }, - { "hentaiz.pro", true }, { "hentaizm.cf", true }, { "hentamanga.tk", true }, { "hentavfall.no", true }, @@ -57005,31 +66028,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heptafrogs.de", true }, { "heptagonsystems.com", true }, { "heptner24.de", true }, + { "hepuer.com", true }, + { "hepworthwakefield.org", true }, + { "her-life.ru", true }, + { "her.porn", true }, + { "her123.win", true }, + { "heraa.top", true }, + { "heracasinos.com", true }, + { "herald-review.com", true }, { "herald.ga", true }, + { "heraldcourier.com", true }, { "heraldik-wiki.de", true }, { "heraldmakassar.com", true }, { "herasoft.com", true }, { "heratnews.tk", true }, { "herba-belgie.be", true }, + { "herbacom.ro", true }, + { "herbalcart.com", true }, { "herbalhouse.tk", true }, + { "herbalife.ru", true }, { "herbalifereport.tk", true }, { "herbalkanker.tk", true }, - { "herbandpat.org", true }, - { "herbarex.eu", true }, + { "herbarex.bg", true }, { "herbarium.cf", true }, { "herberichfamily.com", true }, { "herbers.tk", true }, - { "herbert.io", true }, + { "herbertjanvandinther.nl", true }, { "herbertmouwen.nl", true }, { "herbiez.com", true }, { "herbigass.com", true }, { "herbisan.pl", true }, { "herbolarigranvida.com", true }, + { "herborisia.fr", true }, { "herbreathonglass.tk", true }, + { "herbsociety.org", true }, { "herbsupplements.co.uk", true }, { "herbweb.net", true }, { "herbweb.org", true }, { "herbymiast.waw.pl", true }, + { "herculesslr.com", true }, { "herculex.fi", true }, { "herderradio.ml", true }, { "herdingcatshere.com", true }, @@ -57038,25 +66075,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "herdwilliam.tk", true }, { "here.ml", true }, { "herealways.tk", true }, - { "herecsrymy.cz", false }, { "heredapoxetine.gq", true }, { "herefordlighthouse.org", false }, { "hereits.com", true }, { "heren.fashion", true }, { "herenstraatvoorburg.tk", true }, + { "hereplus.me", true }, + { "hereporn.com", true }, { "heretic-guild.com", true }, { "hereticle.com", true }, { "hereticmaniacs.tk", true }, { "hereticofficial.com", true }, { "hereticpreist.tk", true }, - { "herewomentell.com", true }, { "herez.fr", true }, + { "herf.top", true }, { "hergeandtintin.tk", true }, { "herila.ml", true }, { "heringer.tk", true }, + { "heritagehandicraft.com", true }, { "heritagereformed.tk", true }, { "heritagetea.tk", true }, { "herizon.cf", true }, + { "herjj.com", true }, { "herkam.pl", true }, { "herkel.email", true }, { "herkel.media", true }, @@ -57064,27 +66104,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "herkelmedia.de", true }, { "herkimercountyny.gov", true }, { "herlimit.com", true }, - { "hermanasmolina.com", true }, { "hermanbrouwer.nl", true }, { "hermandadblanca.org", false }, + { "hermandevries.com", true }, { "hermann-hesse-kolleg.de", true }, { "hermann.in", true }, { "hermanoscarrera.tk", true }, { "hermes-net.de", true }, { "hermes-servizi.it", true }, { "hermessenger.fr", true }, + { "hermetas.org", true }, { "hermetien.tk", true }, { "hermietkreeft.site", false }, { "herminghaus24.de", true }, - { "hermitant.fr", false }, + { "hermiston.gov", true }, + { "hermitant.fr", true }, { "hermiu.com", true }, { "hermodesign.com", true }, { "hermonmaine.gov", true }, + { "hermosaseagirt.com", true }, { "hernandovotes.gov", true }, { "hernanygerman.tk", true }, { "herndl.org", true }, { "herne-kupony.sk", true }, { "herni-kupony.cz", true }, + { "herniaclinic.com.sg", true }, { "hernikgames.tk", true }, { "hernn.com", true }, { "heroblog.info", true }, @@ -57092,35 +66136,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heroco.xyz", true }, { "herod.tk", true }, { "heroes3stat.tk", true }, + { "heroesofthenorth.com", true }, { "heroesorchestra.com", true }, { "herofil.es", true }, { "herogaming.net", true }, + { "herohealth.com", true }, { "heroiclove.com", true }, { "heroicpixel.com", false }, - { "heroku.com", true }, + { "heroinaaustral.com", true }, { "herold.me", true }, { "herold.space", true }, { "heromlabs.tk", true }, { "heromuster.com", true }, - { "heroningenieria.com", true }, + { "heronhallacademy.org.uk", true }, + { "heroplusgroup.com", false }, { "heroxin.com", true }, + { "herp.careers", true }, + { "herp.top", true }, + { "herpderpderpderp.com", true }, { "herpes-no.com", true }, { "herr-webdesign.de", true }, { "herrald-skeeleren.tk", true }, + { "herramientasbazarot.com", true }, { "herrderzeit.de", true }, + { "herregruppa.no", true }, { "herrenblut.tk", true }, { "herrenmuehle-wein.de", true }, { "herreriamauricio.com.ar", true }, { "herreriaorozco.com", true }, { "herrfirm.com", true }, { "herriman.net", true }, - { "herrin-samantha.org", true }, { "herringadvancemachine.com", true }, { "herringboneeats.com", true }, { "herringsresidence.be", true }, { "herritage.ga", true }, { "herrkal.eu", true }, { "herrman.tk", true }, + { "herrns.cloud", true }, { "herrschaftlich-durch-dresden.de", true }, { "herrsmith.com", true }, { "herrtxbias.net", true }, @@ -57129,19 +66181,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hersheyfeis.com", true }, { "hersmartchoice.com", true }, { "herthaloewen.tk", true }, + { "hertie.de", true }, { "hertsbouncycastles.com", true }, { "hertz.zone", true }, { "heru.tk", true }, { "herumixer.ga", true }, { "herus.net.pl", true }, + { "hervegranger.fr", true }, + { "hervia.com", true }, { "hervormdweeshuiszwolle.nl", true }, + { "herwz.com", true }, + { "herx.top", true }, { "herychreality.cz", true }, { "herza.id", true }, { "herzberg.site", true }, { "herzfuersoziales.at", true }, { "herzig.cc", true }, - { "herzogglass.com", true }, + { "herzpfa.de", true }, { "herzwacht.de", true }, + { "herzzuherz.de", true }, { "hes.com.cy", true }, { "hesabcenter.com", true }, { "hesago.store", true }, @@ -57150,12 +66208,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hesbayefrost.be", true }, { "hesbenergie.be", true }, { "hescos.tk", true }, + { "heshamelsawah.clinic", true }, { "heshamselim.tk", true }, { "hessen-liebe.de", true }, + { "hessen.de", true }, { "hessen.social", true }, { "hessenheim.tk", true }, { "hessherrera.com", true }, { "hessis.xyz", true }, + { "hessischer-landtag.de", true }, { "hesslag.com", true }, { "hestaheimur.is", true }, { "hestegrovvaren.dk", true }, @@ -57165,6 +66226,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hestia-systeme.eu", true }, { "hestia-systeme.fr", true }, { "hesyifei.com", true }, + { "het-klaverblad.nl", true }, { "hetchie.com", true }, { "hetcoronalab.nl", true }, { "hetdebat.tk", true }, @@ -57177,35 +66239,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hetmer.cz", true }, { "hetmozaiekje.nl", true }, { "hetoefenpunt.be", true }, - { "hetun555.com", true }, { "hetushu.com", true }, { "hetveurtheater.nl", true }, { "hetvezercsarda.hu", true }, { "hetwalhalla.nl", true }, + { "heureetka.fr", true }, { "heureka.fi", true }, { "heureka2.com", true }, - { "heuremiroir.info", true }, { "heute-kaufen.de", true }, { "heute.training", true }, + { "heutger.de", true }, { "heutger.net", true }, { "hev.edu.ee", true }, + { "heveacom.com", true }, + { "hevenerfeld.de", true }, + { "hevertonfreitas.com.br", true }, { "hevo.io", true }, { "hevoapp.com", true }, { "hevodata.com", true }, { "hevoiq.com", true }, + { "hevolus.it", true }, { "hevrishut.cf", true }, { "hewavitharanamv.tk", true }, { "hewlettbayparkny.gov", true }, + { "hewlettharbor.gov", true }, { "hex.nl", true }, { "hexagon-e.com", true }, + { "hexagonengg.com", true }, { "hexalinq.com", true }, { "hexane.cf", true }, { "hexapt.com", true }, + { "hexashore.tn", true }, + { "hexasoft.com.my", true }, { "hexatech.gq", true }, { "hexatech.tk", true }, - { "hexavalent.org", true }, { "hexaware.com", true }, { "hexaweb.tk", true }, + { "hexcel.com", true }, { "hexclock.io", true }, { "hexcode.in", true }, { "hexhu.com", true }, @@ -57213,13 +66283,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hexiaohu.cn", false }, { "hexid.me", false }, { "hexieshe.com", true }, + { "hexil.org", true }, { "hexis.hr", true }, { "hexo.ink", false }, { "hexo.io", false }, { "hexobind.com", true }, - { "hexony.com", true }, { "hexr.org", true }, { "hexsafe.io", true }, + { "hexstream.expert", true }, { "hexstream.net", true }, { "hexstream.xyz", true }, { "hexstreamsoft.com", true }, @@ -57227,19 +66298,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hey-staging.com", true }, { "hey.com", true }, { "hey.pw", true }, - { "heyapakabar.com", true }, - { "heybaker.com.au", true }, + { "heyblogging.com", false }, { "heybookmark.ga", true }, { "heybookmark.gq", true }, { "heybritney.tk", true }, { "heybyrdie.com", true }, - { "heycrab.xyz", true }, { "heydorff.duckdns.org", true }, - { "heyfordpark.com", true }, + { "heyfiesta.com", true }, { "heyfringe.com", true }, { "heyghost.io", true }, { "heyitgirl.com", true }, { "heyitsfree.net", true }, + { "heyjoecoffee.com", true }, { "heyjournal.com", true }, { "heyomg.com", true }, { "heyplay.eu.org", true }, @@ -57249,31 +66319,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "heyvilleest.ga", true }, { "heywise.com", true }, { "heywood.cloud", true }, + { "hezzit.net", true }, { "hf-rpg.ml", true }, { "hf51-domeinen.nl", true }, { "hf51.nl", true }, + { "hfa3.org", true }, + { "hfholidays.co.uk", true }, { "hfikq8.cf", true }, { "hflsdev.org", false }, { "hfox.org", true }, + { "hfsa.org", true }, { "hfsctx.gov", true }, { "hfsg-habicht.at", true }, + { "hfvuejq.pro", true }, { "hfx405.de", true }, + { "hg.eu", true }, { "hg.gg", true }, { "hg.python.org", true }, { "hg0086.la", false }, - { "hg661.cc", true }, { "hg71839.com", true }, - { "hg881.com", true }, + { "hgb.club", true }, { "hgc.solutions", true }, { "hgc369.com", true }, { "hgcityca.gov", true }, { "hgfa.fi", true }, { "hghanbarimd.com", true }, - { "hghotels.com", true }, { "hgmaranatha.nl", true }, { "hgpowerglue.nl", true }, { "hgseo.me", true }, { "hgseo.net", true }, + { "hgtwa.com.au", true }, { "hguandl.com", true }, { "hgvnet.de", true }, { "hgyo.me", true }, @@ -57292,34 +66367,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hh9397.com", true }, { "hh9721.com", false }, { "hh9728.co", true }, + { "hhank.com", true }, { "hhdelfland.nl", true }, + { "hhdy3.com", true }, { "hhhdb.com", true }, { "hhristov.tk", true }, { "hhs.gov", true }, { "hhsrocketry.tk", true }, - { "hhtoners.com.br", true }, { "hhxiaozhan.ml", true }, { "hi-million.ga", true }, { "hi-million.ml", true }, { "hi-newspaper.ml", true }, { "hi-res.cloud", true }, { "hi-res.vip", true }, - { "hi-science.com", true }, { "hi-techcrimes.net", true }, { "hialatv.com", true }, + { "hiatoconteudodigital.com.br", true }, { "hiaus.net.au", true }, { "hibanaworld.com", true }, - { "hibari.moe", true }, + { "hibbingmn.gov", true }, { "hibin.tk", true }, { "hibiscuscoastfinancialservices.com.au", true }, - { "hibiscusladigue.com", true }, + { "hibit.de", true }, { "hibrid-turf.com", true }, { "hiccupsandjuice.co.uk", true }, + { "hickmancountytn.gov", true }, + { "hickoryrecord.com", true }, { "hickorywinecellar.com", true }, + { "hicksvilleohio.gov", true }, { "hicl.org", true }, { "hicoria.com", true }, { "hicts.nl", true }, { "hiczp.com", true }, + { "hidalgoad.org", true }, + { "hidashin.co.jp", true }, + { "hidayatullah.com", true }, { "hidbo.de", true }, { "hidden.gq", true }, { "hidden.nyc", true }, @@ -57340,7 +66422,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hiddenpalms.tk", true }, { "hiddenredknights.tk", true }, { "hiddenrefuge.eu.org", true }, + { "hiddenremote.com", true }, { "hiddens.tk", true }, + { "hiddenvalley.com", true }, { "hiddout.com", true }, { "hide-in.cloud", true }, { "hide.me", true }, @@ -57352,7 +66436,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hideo54.com", true }, { "hideouswebsite.com", true }, { "hidetagu2021.net", true }, - { "hidglobal.com", true }, + { "hideuri.com", true }, + { "hidon.hu", true }, { "hidra.tk", true }, { "hidrolimpiadora.com.es", true }, { "hidrolimpiadorasprofesionales.org", true }, @@ -57364,7 +66449,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hierer.com", true }, { "hietbrink.tk", true }, { "hietegerrekes.tk", true }, - { "hieu.com.au", true }, { "hieucd.com", true }, { "hif.red", true }, { "hif88.com", true }, @@ -57377,19 +66461,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hifly.com.tw", true }, { "hifrds.com", true }, { "hifrnds.in", true }, - { "hifumi.us", true }, { "hig.gov", true }, + { "higeniqcleaning.com.au", true }, + { "higginsroofing.com.au", true }, { "higgsboson.tk", true }, { "high-flying.co.uk", true }, { "high-ground.org", true }, { "high-heels.se", true }, { "high-school-atka.ga", true }, + { "high-solar.com", true }, { "high-tech.tk", true }, { "high-way.me", true }, { "highaltitudearchery.com", true }, + { "highburycorp.com", true }, { "highcalorierecipes.com", true }, + { "highcbdoildrops.com", true }, { "highchair.tk", true }, - { "highcorkett.com", true }, { "highdaseo.ml", true }, { "highdefinitionnetworksers.ga", true }, { "highdefinitionnetworksest.ga", true }, @@ -57415,42 +66502,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "highlandpublicschool.co.in", true }, { "highlandsclerkfl.gov", true }, { "highlandsfl.gov", true }, + { "highlandsmode.nl", true }, { "highlatitudestravel.com", false }, { "highlevelwoodlands.com", true }, - { "highlifegayrimenkul.com", true }, + { "highlightsfootball.com", true }, { "highlightsfootball.net", true }, { "highlnk.com", true }, { "highnation.ml", true }, + { "highperfection.com", true }, { "highperformance.ie", true }, { "highplainssiding.com", true }, + { "highposthoops.com", true }, { "highpressuretech.com", true }, + { "highproject.site", true }, { "highproxies.com", true }, { "highqappliance.com", true }, { "highrank.cf", true }, { "highrank.ga", true }, { "highrank.tk", true }, + { "highship-industries.com", true }, { "highskilled.tk", true }, { "highsky.ir", true }, { "highspeed-arnsberg.de", true }, { "highspeedinternetservices.ca", true }, { "highspenfc.tk", true }, + { "highsprings.gov", true }, { "highstage.com", true }, + { "highstakesdb.com", true }, { "hightech.construction", true }, { "hightechone.cf", true }, { "hightechreviews.ga", true }, { "hightimes.com", true }, - { "hightop.com", true }, - { "hights.se", true }, + { "hightop.com", false }, { "highway11north.tk", true }, { "highway54.tk", true }, { "highway71autoparts.com", true }, { "highwaytohoell.de", true }, { "highwayzen.org", true }, { "highworldnet.ga", true }, + { "higilimpmaringa.com.br", true }, { "higilopocht.li", true }, + { "higsegeirl.com", true }, { "higueras.tk", true }, + { "hii.or.th", true }, { "hiig.edu.ee", true }, { "hiitrepublic.com.au", true }, + { "hiiumeretuulepark.ee", true }, { "hiiw.cloud", true }, { "hiiw.de", true }, { "hijyen-belgesi.com", true }, @@ -57462,19 +66559,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hikeinrio.com", true }, { "hiker.cool", true }, { "hikerone.com", true }, - { "hikikomori-sos.site", true }, { "hiking-site.nl", true }, { "hikingmonthlyers.ga", true }, { "hikingmonthlyest.ga", true }, { "hikka.ru", true }, + { "hikyu.it", true }, { "hilahdih.cz", true }, { "hilalnews.ga", true }, { "hilaolu.com", true }, { "hilarious.ga", true }, { "hilaryhutler.com", true }, { "hilarymundial.tk", true }, + { "hilbertwi.gov", true }, { "hilde.link", true }, { "hildebrand.group", true }, + { "hiledge.com", true }, { "hilelipc.com", false }, { "hilfe-bei-krebs-vechta.de", true }, { "hilinecreators.tk", true }, @@ -57482,6 +66581,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hillcottagessuffolk.co.uk", true }, { "hillcountryoralsurgery.com", true }, { "hillcrestplumber.co.za", true }, + { "hillenbrand.com", true }, { "hillexplorer.com", true }, { "hillhiker.com", true }, { "hillier-swift.co.uk", true }, @@ -57491,41 +66591,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hillsandsaunders.co.uk", true }, { "hillsandsaunders.com", true }, { "hillsboroccpa.org", true }, + { "hillsboroughchristian.org", true }, + { "hillsclerk.com", true }, { "hillsdalecounty.gov", true }, { "hillshandymate.com", true }, { "hillsphotosoc.tk", true }, + { "hillstohome.com", true }, { "hillstrak.com.au", true }, { "hillstrakwpg.com.au", true }, { "hilltopcellar.com", true }, { "hilltopsurgicalhospital.ga", true }, { "hilnu.com", true }, { "hilomrm.com", true }, + { "hiltonfoundation.org", true }, { "hiltonhylandluxurycondos.com", true }, - { "hiltonsydney.com.au", true }, + { "hiltonsedonaresort.com", true }, + { "hiltonwaikoloavillage.com", true }, { "hilunetan.tk", true }, - { "himachalgraminbank.org", true }, { "himalaya-masala.at", true }, - { "himalayanoutback.com", true }, { "himarijuana.tk", true }, { "himawari-scanlator.tk", true }, - { "himbak.com", true }, + { "himawari-shika.org", true }, { "himbamcky.com", true }, { "himcy.ga", true }, + { "himemariepornstar.com", true }, { "himens.com", false }, { "himg.eu", true }, - { "himgdz.ru", true }, + { "himgdz.ru", false }, + { "himic.ru", true }, { "himiku.com", true }, { "himj.de", true }, + { "himmi.ru", true }, + { "himnosycanticos.org", true }, { "himpler.com", false }, + { "himprom.com", true }, { "hin10.com", true }, { "hinaryazan.com", true }, { "hinata-hidetoshi.com", true }, + { "hinatayamagolf.jp", true }, { "hindenburgring.com", true }, { "hindenburgring.de", true }, { "hindibaba.tk", true }, { "hindigalaxy.com", true }, { "hindikibindi.tk", true }, - { "hindimeinjankari.com", true }, { "hindimeseekhe.tk", true }, { "hindimoviedownload.net", true }, { "hindu-temple.tk", true }, @@ -57535,29 +66643,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hindweb.tk", true }, { "hingehealth.com", false }, { "hingle.me", true }, + { "hinit.no", true }, { "hinkel.tk", true }, { "hinketsujyoshi-no-torisetsu.com", true }, - { "hinksonlabs.com", true }, - { "hino.moe", true }, { "hinsdaledental.com", true }, { "hintergedanken.com", false }, { "hinterposemuckel.de", true }, + { "hinto.com.au", true }, { "hintss.pw", false }, { "hinyari.net", true }, + { "hiob.fr", false }, { "hiorth.tk", true }, { "hiparish.org", true }, { "hipcircles.tk", true }, { "hipecompany.tk", true }, { "hipeople.com.br", true }, { "hiper-humor.tk", true }, - { "hiperbusinessblog.hu", true }, + { "hipercultura.com", true }, { "hipermenu.com", true }, { "hipersuli.hu", true }, - { "hiperusera.es", true }, { "hiphop.ren", true }, { "hiphopall.tk", true }, { "hiphopbolivia.tk", true }, + { "hiphopdates.de", true }, { "hiphopfashion.tk", true }, + { "hipkneeortho.com.sg", true }, { "hipnos.net", true }, { "hipnosisypsicoterapia.com", true }, { "hipnotista.tk", true }, @@ -57567,21 +66677,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hippiekiller.net", true }, { "hippies.com.br", true }, { "hippler.cloud", true }, + { "hippogriffhaven.com", true }, + { "hippogriffhaven.net", true }, + { "hippolini-herold.de", true }, { "hippomovers.com", true }, { "hippopotamuses.org", true }, { "hips.com", true }, + { "hipstermamaproductions.com", true }, { "hipsterpixel.co", true }, { "hiptwist.tk", true }, { "hipuranyhou.cz", true }, + { "hiq.co.za", true }, { "hiq.sh", true }, - { "hiqhub.co.uk", false }, - { "hiqonline.co.uk", true }, { "hirake55.com", true }, { "hiramoto-ph.com", true }, { "hiranosayuri-piano.com", true }, - { "hiratake.xyz", false }, - { "hire.auction", true }, + { "hiratake.xyz", true }, { "hireabouncycastle.net", true }, + { "hirechrisfinazzo.com", true }, { "hirecities.cf", true }, { "hirecities.ml", true }, { "hirecitiesers.ga", true }, @@ -57589,9 +66702,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hireinsight.io", true }, { "hirel.gq", true }, { "hirelisting.com", true }, + { "hirepro.in", true }, { "hireprofs.com", true }, + { "hireshield.com", true }, { "hiresteve.ca", true }, - { "hiretech.com", true }, { "hirevets.gov", true }, { "hirevo.eu", true }, { "hirevue.com", true }, @@ -57602,8 +66716,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hiringopps.com", true }, { "hiringprocess.careers", true }, { "hiringrise.com", true }, - { "hirisejanitorial.com", true }, - { "hiro-dc.info", true }, + { "hirisejanitorial.com", false }, { "hirobbie.com", true }, { "hiromi.eu.org", true }, { "hiromuogawa.com", true }, @@ -57613,27 +66726,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hirsch-lawyer.tk", true }, { "hirschbergertal.de", true }, { "hirschl.eu", true }, - { "hirte-digital.de", false }, { "hirtz.pm", true }, { "hirtzfr.eu", true }, + { "hiru.top", false }, { "hirunet.ml", true }, { "hiruthicsha.com", true }, + { "his.com", true }, { "hisax.de", true }, { "hisbrucker.net", true }, { "hiseplast.com.br", true }, { "hishirikka.com", true }, + { "hisingensck.se", true }, + { "hiskill.ru", true }, { "hisoft.pk", true }, { "hispadent.com.do", true }, { "hispalazarus.tk", true }, + { "hispanae.com", true }, { "hispania-valencia.com", true }, { "hispania.ml", true }, { "hispanidad.tk", true }, { "hispasat.es", true }, - { "hispasys.com", true }, + { "hispashare.org", true }, + { "hispasonic.com", true }, + { "hispro.co", true }, { "hisregistries.net", true }, { "hisregistries.org", true }, + { "hisscentralen.se", true }, + { "hisscraft.se", true }, + { "hissgruppen.com", true }, { "histalek.de", true }, { "histhist.ru", true }, + { "histicle.com", true }, { "histkult.ml", true }, { "histkult.tk", true }, { "histogames.com", true }, @@ -57646,8 +66769,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "historiasdepueblo.es", true }, { "historiasyrelatos.tk", true }, { "historiasztuki.tk", true }, + { "historicbethlehem.org", true }, + { "historicengland.org.uk", true }, { "historichousesghent.be", true }, - { "historicist.com", true }, { "historicizam.tk", true }, { "historischehuizengent.be", true }, { "history-schools.com", true }, @@ -57657,15 +66781,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "history.pe", true }, { "historymuseumsb.org", true }, { "hit-electronics.com", true }, - { "hitandhealth.nl", true }, + { "hit.moe", true }, + { "hitchcockcountyne.gov", true }, { "hitchen.net", true }, { "hitchens.tk", true }, { "hitchpin.com", true }, { "hitchunion.org", true }, { "hitech-news.ml", true }, { "hitech-zone.com", false }, - { "hitechgr.eu", true }, - { "hiteco.com", true }, { "hitekcomputing.net", true }, { "hitel.tk", true }, { "hiteshchandwani.com", true }, @@ -57673,10 +66796,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hitflow.net", true }, { "hitfm.ml", true }, { "hitfm.tk", true }, - { "hitfront.com", true }, + { "hithai.net", true }, { "hitham.tk", true }, { "hithouse.tk", true }, { "hitiles.tk", true }, + { "hitimewine.net", true }, { "hititgunesi-tr.com", true }, { "hititleers.ga", true }, { "hititleest.ga", true }, @@ -57697,10 +66821,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hitpatrolest.ga", true }, { "hitpointer.tk", true }, { "hitpt.com", false }, + { "hitrecord.org", true }, { "hitrek.ml", true }, - { "hitrost.com", true }, { "hitrow-move.ga", true }, { "hitrueauthentic.com", true }, + { "hitsk.in", true }, { "hitter-lauzon.com", true }, { "hitter.family", true }, { "hitterfamily.com", true }, @@ -57716,18 +66841,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hive101.info", true }, { "hivekey.eu", true }, { "hivekey.io", true }, + { "hivelocity.net", true }, { "hivemind.org", true }, { "hivemindsystems.com", true }, { "hiveopolis.eu", true }, { "hiverlune.net", false }, { "hivesigner.com", true }, - { "hiwannz.com", true }, + { "hiwannz.com", false }, { "hiwebsite.tk", true }, { "hiwiki.tk", true }, + { "hix.fi", true }, { "hiyacar.co.uk", true }, { "hiyuki2578.net", true }, { "hizakura.nl", true }, + { "hizhina-hagrida.ru", true }, { "hj-mosaiques.be", true }, + { "hj.rs", true }, { "hj111777.com", false }, { "hj2375.com", false }, { "hj3586.com", false }, @@ -57741,15 +66870,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hj99111.com", true }, { "hj99333.com", false }, { "hjallboscoutkar.se", true }, + { "hjaltespizza.dk", true }, { "hjartasmarta.se", true }, { "hjbw-sterken.nl", true }, { "hjdiaz.com", true }, { "hjelmqvist-it.se", true }, { "hjelpemiddeldatabasen.no", true }, - { "hjertingfysioterapi.dk", true }, { "hjes.com.ve", true }, { "hjkbm.cn", true }, - { "hjmag.com", true }, + { "hjmag.com", false }, { "hjorslev.com", false }, { "hjort.land", true }, { "hjosh.com", true }, @@ -57763,27 +66892,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hjyl699.com", false }, { "hjyl7999.com", false }, { "hjyl9898.com", false }, + { "hk-shuttle.net", true }, { "hk.search.yahoo.com", false }, { "hk130.com", true }, + { "hkamran.com", true }, { "hkas.org.hk", true }, { "hkconcept.lu", true }, - { "hkhk.edu.ee", true }, - { "hkkangenwater.org", true }, { "hkl-gruppe.de", true }, { "hklbgd.org", true }, { "hkmap.co", true }, { "hkmap.com", true }, + { "hkmap.live", true }, { "hkmap.net", true }, + { "hkmusz.cn", true }, { "hkno.it", true }, + { "hkoreatv.gq", true }, + { "hkp-usa.com", true }, { "hkr.at", true }, - { "hks-projekt.at", true }, { "hks.pw", true }, { "hkskhf.dk", true }, + { "hkspeed.com", true }, { "hktech.link", true }, { "hktkl.com", true }, { "hktss.pp.ua", true }, { "hkustmbajp.com", true }, { "hkvi.nl", true }, + { "hl8id.club", true }, { "hl8id.vip", true }, { "hl8th.vip", true }, { "hlavacek.us", true }, @@ -57792,20 +66926,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hledejlevne.cz", true }, { "hledejpravnika.cz", true }, { "hlfh.space", true }, - { "hlg66.cc", true }, { "hlg88.cc", true }, { "hlidani-tornado.cz", true }, { "hlinformatics.nl", true }, { "hllr.xyz", true }, - { "hlnet.us", true }, + { "hlm.wtf", true }, + { "hln.be", true }, { "hloe0xff.ru", true }, { "hlopokshop.ru", true }, + { "hlp.group", true }, { "hlpublicidad.com", true }, { "hls-tutorial.tk", true }, { "hlsblog.com", true }, { "hlsjgw.com", true }, { "hlsmandarincentre.com", true }, { "hlstory.tk", true }, + { "hltdos.com", true }, { "hltk.fi", true }, { "hltv.org.cn", true }, { "hlucas.de", true }, @@ -57814,53 +66950,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hly0928.com", true }, { "hlz.mn", true }, { "hm-notes.ru", true }, + { "hm.ee", true }, { "hm.seg.br", true }, { "hm1ch.com", true }, { "hm1ch.ovh", true }, - { "hm773.net", true }, { "hmarchat.tk", true }, - { "hmcc.nl", true }, + { "hmbana.org", true }, { "hmcdj.cn", true }, { "hme360.com", true }, + { "hmgym.ru", true }, { "hmka.com", true }, + { "hmlpoc.com.br", true }, { "hmnd.io", true }, - { "hmoegirl.com", true }, + { "hmodapk.com", true }, { "hmp.sc", true }, { "hmri.org.au", true }, + { "hms-networks.com", true }, { "hms-zentrum.de", true }, + { "hmshost.com", true }, { "hmsotel.com", true }, { "hmsplatform.tk", true }, { "hmtransfer.ir", true }, + { "hmv.com", true }, { "hn.search.yahoo.com", false }, { "hn122.cc", true }, - { "hncpremiumhouse.vn", true }, - { "hncurated.com", true }, + { "hnbyalitim.com", true }, { "hndmd.com", true }, { "hnfertilizermachine.com", true }, { "hnmd9.gq", true }, { "hnn.net.br", true }, + { "hno-arzt-thomitzek.de", true }, { "hno-norderstedt.de", true }, - { "hnrk.io", true }, + { "hnojik.cz", true }, { "hnsseed.com", true }, { "hntuin.nl", true }, { "hny.co", true }, { "hnyp.hu", true }, - { "ho188.net", true }, - { "ho918.net", true }, { "hoaas.no", true }, - { "hoadvertising.com", true }, - { "hoagiandpita.com", true }, { "hoahau.org", true }, { "hoahop.tk", true }, { "hoanghaiauto.vn", true }, + { "hoangvangioi.com", true }, + { "hoaphathomes.com", true }, { "hoardit.ml", true }, - { "hoast.xyz", true }, { "hoatangthucung.vn", true }, { "hoathienthao.com", true }, { "hoathienthao.vn", true }, { "hobartok.gov", true }, { "hobbiesworld.tk", true }, { "hobby-drechselei.de", true }, + { "hobby-lover.com", true }, + { "hobbybrauer.de", true }, { "hobbydo.cf", true }, { "hobbydo.ga", true }, { "hobbydo.gq", true }, @@ -57868,6 +67008,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hobbyweeklyers.ga", true }, { "hobbyweeklyest.ga", true }, { "hoberg.ch", true }, + { "hobiliga.mk", true }, { "hobindesign.com", true }, { "hobo.video", true }, { "hoboken.tk", true }, @@ -57876,18 +67017,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hobonline.tk", true }, { "hobroefterskole.dk", true }, { "hoc-bv.nl", true }, - { "hocassian.cn", false }, - { "hocgiai.com", false }, + { "hochatown.gov", true }, { "hochhaus.us", true }, { "hochimins.org", true }, + { "hochland.pl", true }, { "hochoukikikiraku.com", true }, - { "hochyi.com", true }, + { "hochuvrotik.cf", true }, + { "hochyi.com", false }, { "hochzeit-ap.de", true }, { "hochzeit-dana-laurens.de", true }, { "hochzeit-saufzeichnungen.tk", true }, - { "hochzeitsfotograf-deinfoto.ch", true }, { "hochzeitsplaner-rodgau.de", true }, { "hochzeitsplanerin-hamburg.de", true }, + { "hochzeitsregion.at", true }, { "hochzeitstypen.de", true }, { "hockey.academy", true }, { "hockeyalertest.ga", true }, @@ -57902,8 +67044,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hocoma.net", true }, { "hocoma.org", true }, { "hoctienganhgiaotiep.ga", true }, - { "hoctracnghiem.com", true }, - { "hocz.net", false }, { "hodeis.ga", true }, { "hodes.tk", true }, { "hodgeman.gov", true }, @@ -57911,21 +67051,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hodi.dk", true }, { "hodi.host", true }, { "hoe.re", true }, + { "hoegl.com", true }, { "hoeheterobenjij.nl", true }, { "hoejetaastrupprovsti.dk", true }, - { "hoekvanholland.eu", true }, { "hoelty.network", true }, { "hoerbuecher-und-hoerspiele.de", true }, { "hoeren.club", true }, + { "hoerspielbox.de", true }, { "hoesnelwasik.nl", true }, { "hoest.it", true }, { "hoeveiligismijn.nl", true }, { "hoewler.ch", false }, - { "hof-dreisprung.de", true }, { "hof-imbiss-lieske.de", true }, { "hof-mulin.ch", true }, { "hofapp.de", true }, + { "hofbraeu-muenchen.de", true }, + { "hoferdach.de", true }, { "hoffmancorporation.com", true }, + { "hoffmanig.com", true }, { "hoffmannresearch.ca", true }, { "hoffmanns-ballonshop.de", true }, { "hoffmeyer.me", true }, @@ -57941,7 +67084,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hoga.fr", true }, { "hogamail.fr", true }, { "hogar.gt", true }, - { "hogarthdavieslloyd.com", true }, { "hoge.se", true }, { "hogepad.com", false }, { "hogerduinen.tk", true }, @@ -57953,52 +67095,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hogren.gq", true }, { "hogvorts.tk", true }, { "hogwarts.io", true }, + { "hogwartshome.org.ua", true }, { "hoh.com.sg", true }, { "hohenleimbach.de", true }, { "hohenpoelz.de", true }, { "hohlhupe.de", true }, { "hohlhupen.de", true }, + { "hohm.in", true }, { "hohma.tk", true }, { "hohnet.com", false }, + { "hohny.gov", true }, { "hoikin.tk", true }, + { "hoiku-map.tokyo", false }, + { "hoiku-navi.com", false }, { "hoing.io", true }, - { "hoiquanadida.com", true }, - { "hoistfinance.co.uk", true }, { "hoistsdirect.com", true }, { "hojalatero.tk", true }, { "hojat.tk", true }, - { "hokejovykalendar.cz", true }, + { "hojoworks.com", true }, + { "hoka.com", true }, { "hoken-okazaki.com", true }, { "hoken-wakaru.jp", true }, { "hokende.com", true }, { "hokenselect.jp", true }, { "hokioisecurity.com", true }, { "hokkaido.tk", true }, + { "hokko.de", true }, + { "hokqbet88.co", true }, { "hokuin.co.jp", true }, { "hokung.xyz", true }, - { "hokusya.com", true }, { "holacannx.com", true }, { "holacbdoils.com", true }, + { "holad.de", true }, { "holadinero.es", false }, { "holadinero.mx", false }, { "holainternet.tk", true }, { "holbrookaz.gov", true }, + { "holdeminside.com", true }, { "holdengreene.com", false }, + { "holdenmaine.gov", true }, + { "holdenmo.gov", true }, { "holderbekebvba.be", true }, { "holdiers.tk", true }, { "holdingcelebrations.tk", true }, { "holdinghandsbrazil.com", true }, - { "holdmybeer.io", true }, + { "holdmybeer.io", false }, + { "holdmymeme.com", true }, { "holdperson.tk", true }, { "holdport.com", true }, { "holebedeljek.hu", true }, + { "holeboom.com", true }, { "holgapanama.tk", true }, { "holger-schwarze.de", true }, { "holgergruenhagen.com", true }, { "holgerlehner.com", true }, { "holgr.com", true }, { "holi-coresdaindia.com.br", true }, + { "holiday-home-baer.de", true }, { "holidayacademy.co.uk", true }, + { "holidayclub.tk", true }, + { "holidayformula.ru", true }, { "holidayincotswolds.co.uk", true }, { "holidayland.gent", true }, { "holidaylocal.ga", true }, @@ -58010,49 +67166,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "holine.studio", true }, { "holini.com", false }, { "holisticacupuncture.com.au", true }, + { "holisticdevelopmentagency.ml", true }, { "holistichealer.in", true }, { "holisticon.de", true }, + { "holisticwebsolutions.co.uk", true }, { "holiy.jp", true }, { "hollabanken.cf", true }, { "holland-sailing.de", true }, { "hollandco.com", true }, { "hollanderclub.tk", true }, - { "hollandersleepdecor.com", true }, { "hollandersleepproducts.com", true }, { "hollandhouse.info", true }, { "hollandsewolken.nl", true }, + { "hollandskroon.nl", true }, + { "hollandsweb.com", true }, + { "hollandwi.gov", true }, { "hollermann.eu", true }, - { "hollidays.tk", true }, + { "hollinsbookstore.com", true }, + { "hollistermo.gov", true }, { "hollisters.servepics.com", true }, + { "hollmann.international", true }, { "hollomanfss.marketing", true }, + { "hollowman.ml", true }, { "hollowrap.com", true }, { "hollowwinds.xyz", true }, + { "holly.lgbt", true }, { "hollybanks.net", true }, { "hollybonnerdesigns.com", true }, { "hollyforrest.ca", true }, { "hollyforrestphotography.ca", true }, + { "hollyhendrixpornstar.com", true }, + { "hollyloless.com", true }, + { "hollyloless.net", true }, + { "hollyloless.org", true }, { "hollyspringsms.gov", true }, + { "hollywoodbios.com", true }, + { "hollywoodsmilesfl.com", true }, { "hollywoodstars.tk", true }, { "hollyworks.com", true }, { "holmenwi.gov", true }, - { "holmes.ie", true }, + { "holmes.ie", false }, { "holmeselectionsfl.gov", true }, { "holmesian.org", true }, + { "holmeslaw.ie", true }, { "holmesworkholding.co.uk", true }, - { "holmium-laser.ru", true }, + { "holmium-laser.ru", false }, { "holmq.dk", true }, { "holmqvist.tk", true }, + { "holo.host", true }, { "holo.ovh", true }, { "holocron.one", true }, { "holod-servis777.tk", true }, - { "holofono.com", true }, { "holofox.ru", true }, { "holori.com", true }, { "holostyak.tk", true }, { "holowaty.me", true }, { "holoxplor.space", true }, { "holstein.tk", true }, + { "holstphoto.com", true }, { "holtcountyne.gov", true }, + { "holtkampfinancieeladvies.nl", false }, { "holtslander.ca", true }, { "holubowski.com", true }, { "holundersberg.de", true }, @@ -58070,6 +67243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "holygrove.tk", true }, { "holyhiphopdatabase.com", true }, { "holymartyrschurch.org", true }, + { "holyoake.org.au", true }, { "holyriders.cf", true }, { "holyrosary.com.au", true }, { "holyscriptur.es", true }, @@ -58080,6 +67254,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "holyubofficial.net", true }, { "holywhite.com", true }, { "holywr.it", true }, + { "holzbau-lepski.de", true }, { "holzed.com", true }, { "holzschutz-holzbearbeitung.de", true }, { "holzspielzeug-shop.ch", true }, @@ -58088,7 +67263,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homa.website", false }, { "homake.cf", true }, { "homatism.com", true }, + { "homd.xyz", true }, { "home-design.bg", true }, + { "home-hunts.com", true }, { "home-insurance-quotes.tk", true }, { "home-manicure.tk", true }, { "home-ncj.com", true }, @@ -58097,6 +67274,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "home-remedies.tk", true }, { "home-sagita.tk", true }, { "home.saxo", true }, + { "home24bank.com", true }, { "homeable.io", true }, { "homeadore.com", true }, { "homeadvice.ga", true }, @@ -58128,9 +67306,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homecompost.in", true }, { "homecpr.com.au", true }, { "homecrawler.ga", true }, + { "homecreatives.net", true }, { "homedecorclassic.tk", true }, { "homedecorspecialists.com", true }, - { "homedentist.cl", true }, { "homedesignabilene.tk", true }, { "homedesignakron.tk", true }, { "homedesignalbuquerque.tk", true }, @@ -58239,10 +67417,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homedesigntulsa.tk", true }, { "homedesignventura.tk", true }, { "homedesignwashington.tk", true }, + { "homedev.cf", true }, { "homedeveloper.cf", true }, { "homedeveloper.ga", true }, + { "homedeveloper.gq", true }, + { "homedeveloper.ml", true }, { "homedeveloper.tk", true }, { "homedirectory.ml", true }, + { "homedizz.top", true }, { "homedollar.ga", true }, { "homedollars.ga", true }, { "homeduck.ga", true }, @@ -58260,15 +67442,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homeforum.tk", true }, { "homegang.ga", true }, { "homegardendecoration.tk", true }, - { "homegardengift.com", true }, { "homegardeningforum.com", true }, { "homegardenresort.nl", true }, { "homegeo.ga", true }, { "homegreenmark.com", true }, { "homegreens.eu", true }, { "homegrounds.co", true }, + { "homegrouporlando.com", true }, { "homegrowncannabisco.com", true }, { "homegun.ga", true }, + { "homehealthbookshelf.co.nz", true }, { "homeideasanddesigns.tk", true }, { "homeimagician.com.au", true }, { "homeimprovement.ga", true }, @@ -58277,6 +67460,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homeindiainfratech.com", true }, { "homeinet.tk", true }, { "homeinformation.tk", true }, + { "homeinformationpackages.com", true }, { "homeinspired.tk", true }, { "homeinteriorasia.tk", true }, { "homeinteriorcanada.tk", true }, @@ -58291,7 +67475,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homekiss.ga", true }, { "homelab.farm", true }, { "homelabquotes.com", true }, + { "homeland.ie", true }, { "homelandsecurity.gov", true }, + { "homelandsecurityedu.org", true }, { "homeletter.ga", true }, { "homelib.cf", true }, { "homelion.ga", true }, @@ -58317,22 +67503,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homeofbeer.nl", true }, { "homeofceline.tk", true }, { "homeofjones.net", true }, - { "homeogenium.com", false }, + { "homeologyla.com", true }, { "homeomatic.ga", true }, { "homeopathie.tk", true }, { "homeopathieridderspoor.nl", true }, + { "homeoperator.net", true }, { "homeopplis.ga", true }, { "homeorama.ga", true }, { "homeostase.pt", true }, { "homeover.ga", true }, { "homeownersinsurancenv.com", true }, - { "homepage.shiga.jp", true }, + { "homepage-nach-preis.de", true }, { "homepal.cf", true }, + { "homepal.ga", true }, { "homepal.gq", true }, { "homepassport.ga", true }, { "homepatch.ga", true }, { "homephonelookup.tk", true }, - { "homeportal.cz", true }, { "homeprivate.de", true }, { "homeprivate.net", true }, { "homepropertyera.tk", true }, @@ -58340,26 +67527,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homepropertynews.tk", true }, { "homepropertyunique.tk", true }, { "homepropertyworld.tk", true }, + { "homeprotech.com", true }, { "homequality.tk", true }, { "homerail.ga", true }, { "homerally.ga", true }, + { "homerecording.com", true }, { "homerepairsideas.tk", true }, { "homerequest.ga", true }, { "homerex.ga", true }, { "homero.tk", true }, { "homesbyayres.com", true }, + { "homeschoolinkorea.tk", true }, + { "homesconnect.com", true }, { "homeseguridad.com", true }, { "homeseller.com", true }, + { "homeserve.es", true }, { "homeserver-kp.de", true }, { "homeservices.ro", true }, { "homesforaustralia.ga", true }, + { "homesfordinner.ca", true }, { "homeshow.ml", true }, { "homeshowoff.com", true }, - { "homesoldfast.com", true }, { "homesonic.ga", true }, { "homesport.es", true }, { "homespunhouse.tk", true }, + { "homespure.com", true }, { "homestamp.ga", true }, + { "homestay.id", false }, { "homestead-honey.com", true }, { "homesteadfarm.org", true }, { "homesteadserver.cloud", true }, @@ -58370,35 +67564,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homesugar.ga", true }, { "homesuite.tk", true }, { "homesweethouse.tk", true }, - { "hometask.in", true }, { "hometeamns.sg", true }, - { "hometechmtl.com", true }, { "hometeenorgy.com", true }, { "hometown.ml", true }, + { "hometrust.ca", true }, { "hometunnel.de", false }, { "homeunder.ga", true }, { "homeunion.tk", true }, - { "homeuser.xyz", true }, { "homeview.ga", true }, { "homevisual.ga", true }, { "homewarrantyreviews.com", true }, { "homewatt.co.uk", true }, { "homewebnews.tk", true }, - { "homewell-hk.com", true }, { "homewidget.ga", true }, { "homewinner.ga", true }, { "homewish.ga", true }, { "homewood.com", true }, { "homeworkacers.com", true }, + { "homeworksuite.com", true }, + { "homeworld.ga", true }, { "homeyou.com", true }, { "homeyx.cf", true }, { "homezlog.com", true }, { "homitov.tk", true }, - { "hommeatoutfaire.be", false }, + { "hommecontemporain.org", true }, { "homnest.fr", false }, + { "homo.ga", true }, { "homofo.tk", true }, { "homoglyph.net", true }, { "homointerneticus.tk", true }, + { "homokfuvo.com", true }, { "homoo.social", true }, { "homophobia.tk", true }, { "homophones.ml", true }, @@ -58407,37 +67602,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "homs.design", true }, { "homunyan.com", true }, { "homyak.gq", true }, + { "homyhomee.com", true }, { "homyneeds.com", true }, { "homyremedies.com", true }, { "honaragah.com", true }, + { "honbin.tw", true }, { "honda2wheelersindia.com", true }, + { "honda2wheelersindia.in", true }, + { "hondaactivindia.com", true }, + { "hondaarabia.com", true }, + { "hondabigwing.in", true }, + { "hondacustomerserviceexperience.com", true }, + { "hondadigitalevent.com", true }, + { "hondago-bikerental.jp", true }, + { "hondainamerica.com", true }, + { "hondaindiafoundation.org", true }, { "hondajoyclub.com", true }, { "hondapartsnow.com", true }, + { "hondaracingindia.com", true }, { "hondasancarlos.com", true }, + { "hondaswap.com", true }, { "hondengedragscentrumfriesland.nl", true }, + { "hondensnacks.shop", true }, { "hondudiario.tk", true }, { "honest.ga", true }, { "honestblogers.ga", true }, { "honestblogest.ga", true }, { "honestworknmoney.tk", true }, + { "honesty.com.pl", true }, + { "honey-whale.com", true }, { "honey.beer", true }, { "honey.is", true }, - { "honeybadger.io", false }, { "honeybhealthyliving.com", true }, { "honeybrooklibrary.org", true }, { "honeycomb.io", true }, { "honeycombcreative.com", true }, { "honeycome-recruit.com", false }, { "honeycreeper.com", true }, + { "honeycrypt.com", true }, { "honeygirl.tk", true }, - { "honeypot.net", true }, { "honeyspot.de", true }, + { "honeysucklewhite.com", true }, { "honeytracks.com", true }, { "honeyuniversity.net", true }, { "honeyxlips.com", true }, { "hong.com.br", true }, { "hongbomiao.com", true }, - { "hongfumall88.com", true }, + { "honghan.tw", true }, { "hongjun.li", true }, { "hongki.tk", true }, { "hongkongliberate.com", true }, @@ -58451,13 +67662,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hongyun-rent.com", true }, { "honigconte.com", true }, { "honigkuchenpferdeher.de", true }, + { "honkai.sr", true }, { "honkhonk.net", true }, { "honkion.net", true }, { "honnedechuju.com", true }, + { "honohr.com", true }, { "honoka-seitai.jp", true }, - { "honoka.tech", true }, + { "honolulubws.gov", true }, { "honovere.de", true }, + { "hontint.com", true }, { "hontoir.eu", true }, + { "hoo.lt", true }, + { "hooapp.lt", true }, { "hood-epc.xyz", true }, { "hoodoo.io", true }, { "hoodoo.tech", true }, @@ -58476,7 +67692,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hookahfoil.ru", true }, { "hookandloom.com", true }, { "hookbin.com", true }, - { "hooked-on.co.za", true }, + { "hookedoncraftswaterford.ie", true }, + { "hookemheadlines.com", true }, + { "hookercountyne.gov", true }, { "hookshotdesign.com", true }, { "hoolibit.com", true }, { "hooliganka.tk", true }, @@ -58489,19 +67707,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hooplessinseattle.com", true }, { "hooprelief.tk", true }, { "hoopshabit.com", true }, - { "hooqshot.com", true }, + { "hoopweb.org", true }, { "hooray.beer", true }, { "hoorig.de", true }, { "hoorr.com", true }, { "hoos.cf", true }, { "hoosa.de", true }, + { "hooshop.lt", true }, { "hoosierstateofmind.com", true }, + { "hootv.lt", true }, { "hootworld.net", false }, { "hoovism.com", true }, - { "hope21.ch", true }, + { "hop.exchange", true }, + { "hope.com", true }, + { "hopeandhealing.cz", true }, { "hopeforlorn.tk", true }, { "hopeforukraine.org.uk", true }, - { "hopefultexas.com", true }, { "hopeland.com.br", true }, { "hopemeet.info", true }, { "hopemeet.me", true }, @@ -58513,14 +67734,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hopglass.net", true }, { "hopital-tarascon09.fr", true }, { "hopitaux-ariege.fr", true }, - { "hopkinsmediation.com", true }, { "hopkintonri.gov", true }, { "hoplongtech.com", true }, { "hopo.design", true }, { "hoponmedia.de", true }, - { "hopps.me", true }, + { "hopps.me", false }, { "hops-and-ashes.de", true }, { "hopscotch.cz", true }, + { "hopscotchmodel.com", true }, { "hopzone.net", true }, { "hor.rent", true }, { "hor.website", true }, @@ -58528,6 +67749,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "horaceli.com", true }, { "horaciolopez.pro", true }, { "horackova.info", true }, + { "horaenpunto.com", true }, { "horairetrain.be", true }, { "horairetrain.ch", true }, { "horairetrain.fr", true }, @@ -58538,13 +67760,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "horclan.tk", true }, { "hord.ca", true }, { "horde-entertainment.tk", true }, - { "horecaapparatuurkobezuijen.nl", true }, { "horecatiger.eu", true }, { "horeco.com", true }, { "horgenberg.com", true }, + { "horiconwi.gov", true }, { "horikawa-cement.co.jp", true }, { "horionimoveis.com.br", true }, - { "horizech.com", true }, { "horizon.ne.jp", true }, { "horizonlawncare.tk", true }, { "horizonmail.ga", true }, @@ -58561,30 +67782,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hormonetrackerers.ga", true }, { "hormonetrackerest.ga", true }, { "horn.co", true }, + { "hornbach-holding.de", true }, { "hornblower.tk", true }, { "hornburg.io", true }, - { "hornertranslations.com", true }, + { "horne.com", true }, + { "hornet.pl", true }, { "hornetsecurity.com", true }, + { "horneytownbrewing.com", true }, + { "horngyihyangped.com.tw", true }, + { "horntec.at", true }, + { "hornwiesen-grundschule.de", true }, { "horny-gay-dragons.com", true }, { "hornyaf.com", true }, + { "hornybank.com", true }, { "hornyforhanzo.com", true }, { "hornyhostel.com", true }, { "horoca.net", true }, { "horochx.org", false }, { "horodance.dk", true }, + { "horoscope-sound-healing.com", true }, { "horoscopimages.tk", true }, { "horoscopo.ml", true }, - { "horoscopos-amor.com", false }, { "horotoday.tk", true }, { "horozo.com", true }, { "horrell.ca", true }, { "horrendous-servers.com", true }, - { "horrentotaalshop.nl", true }, { "horror-forum.de", true }, { "horrorfreaks.tk", true }, { "horrormovies.gr", true }, { "horrorserv.com", true }, { "horrycountysc.gov", true }, + { "hors.coffee", true }, + { "horsa.cc", true }, + { "horsa.io", true }, + { "horsa.xyz", true }, { "horsebreeding.cf", true }, { "horsebreeding.ga", true }, { "horsebreeding.gq", true }, @@ -58593,19 +67824,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "horsegateway.com", true }, { "horsehead.tk", true }, { "horsehunter.co.uk", true }, + { "horsellscouts.org.uk", true }, + { "horsellscoutsandguides.com", true }, { "horsemanshipdentistry.com", true }, { "horsemanshipdentistryschool.com", true }, { "horseplanet.tk", true }, - { "horseridingdurban.com", true }, { "horsewithnoname.com", true }, + { "horsgroup.com", true }, { "horsky.me", true }, { "horstfuchs.tk", true }, { "horstmanshof.eu", true }, { "horstmanshof.nl", true }, + { "hortencollection.com", true }, { "horti-it.com", false }, { "hortico.rs", true }, { "horton-brasses.com", true }, { "horus.com.br", true }, + { "horusrc.com", true }, { "horvat.tk", true }, { "horvathd.eu", true }, { "horvatia.tk", true }, @@ -58613,12 +67848,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hory.me", true }, { "horza.org", true }, { "hose.ga", true }, + { "hosentaschenblog.org", true }, + { "hoshi-sr.com", true }, { "hoshimaq.com.br", true }, { "hoshimaquinas.com.br", true }, { "hoshinplan.com", true }, { "hosiery.tk", true }, { "hosieryexpoers.ga", true }, { "hosieryexpoest.ga", true }, + { "hosifuri.net", true }, { "hosoi-tax.com", true }, { "hospiceandcommunitycare.com", true }, { "hospiceandcommunitycare.net", true }, @@ -58634,27 +67872,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hospicespringfling.org", true }, { "hospicewebsite.org", true }, { "hospicewise.org", true }, + { "hospimedia.fr", true }, { "hospitalcmq.com", true }, { "hospitalcruzvermelha.pt", true }, + { "hospitaldaluz.pt", true }, + { "hospitaldebarcelona.cat", true }, + { "hospitaldelaconcepcion.com", true }, { "hospitality-colleges.com", true }, - { "hospitalorto.com.br", true }, - { "hossi.pro", true }, + { "hospitalsanjuandedios.es", true }, + { "hospitalsineachstate.com", true }, + { "hospitalviladaserra.com.br", true }, + { "hossi.pro", false }, { "hossien.tk", true }, { "hossleylps.com", true }, + { "host-heberg.com", true }, { "host-morezar.ml", true }, { "host-stage.net", true }, { "host.ax", true }, + { "host.com.tw", true }, + { "host1oc.eu.org", true }, { "host2100.xyz", true }, - { "host2be.com", false }, - { "host2do.com", false }, - { "host4us.cc", true }, { "hostadvice.com", true }, + { "hostalk.net", true }, { "hostalsanmarcos.tk", true }, { "hostarea51.com", true }, { "hostathome.fr", true }, { "hostatic.com", true }, + { "hostaz.net", true }, + { "hostboxonline.com", true }, { "hostcloud.ml", true }, - { "hostco.nl", true }, { "hostcoz.com", true }, { "hostcsr.com", true }, { "hostdaddyhn.com", true }, @@ -58681,20 +67927,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hostfree12.tk", true }, { "hosthum.com", true }, { "hostiberi.com", false }, + { "hostidn.com", true }, + { "hostido.net.pl", true }, + { "hostiko.com.ua", true }, + { "hosting-fast.com", true }, { "hosting-rus.tk", true }, { "hosting-swiss.ch", true }, - { "hostingactive.it", true }, + { "hostingactive.it", false }, { "hostingalternative.com", false }, { "hostingdiario.com", true }, { "hostingdirect.nl", true }, { "hostingdirectory.ga", true }, + { "hostingedominio.com", true }, { "hostingelite.tk", true }, { "hostingfirst.nl", true }, { "hostingforyou.online", true }, { "hostinghaus.tk", true }, { "hostinghelp.guru", true }, { "hostinginnederland.nl", true }, - { "hostinglogin.net", true }, { "hostingmedia.cl", true }, { "hostingorservers.com", true }, { "hostingphp.ch", true }, @@ -58703,21 +67953,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hostingsvizzera.com", true }, { "hostingtg.com", true }, { "hostingtipps.eu", true }, + { "hostingweb.pe", true }, { "hostinkos.com", true }, { "hostinvest.tk", true }, + { "hostitforcheap.com", true }, { "hostix.de", true }, - { "hostker.com", true }, { "hostker.net", true }, + { "hostlev.com", true }, { "hostma.ma", true }, { "hostmijnpagina.nl", true }, { "hostmodern.com.au", true }, + { "hostmore.com.br", true }, { "hostonssd.ga", true }, { "hostpoint-static.ch", true }, { "hostpoint.ch", true }, { "hostprior.ro", true }, { "hostreputation.com", true }, + { "hostripples.com", true }, + { "hostripples.in", true }, { "hosts.cf", false }, + { "hostsall.com", true }, + { "hostup.se", false }, { "hostux.network", true }, + { "hostvn.net", true }, + { "hostwella.com", true }, { "hostwinds.com", true }, { "hosuronline.com", true }, { "hosuto.nl", true }, @@ -58726,6 +67985,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hot-models.tk", true }, { "hot-sex-photos.com", true }, { "hot-spa.ch", false }, + { "hot.in.th", true }, { "hot101fm.tk", true }, { "hotaircoldlove.tk", true }, { "hotaru.tk", true }, @@ -58733,21 +67993,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotbabesplus.com", true }, { "hotbeats.tk", true }, { "hotbella.net", true }, + { "hotblondepussy.com", true }, + { "hotbox.fun", true }, + { "hotbustymoms.com", true }, { "hotcandlestick.com", true }, { "hotcars.com", true }, { "hotchillibox.co.za", true }, { "hotchillibox.com", true }, { "hotcoder.tk", true }, { "hotcursosrio.com.br", true }, - { "hotdates18.com.au", true }, + { "hotdates18.dk", true }, + { "hotdates18.fi", true }, { "hotdishes.tk", true }, { "hotdoc.com.au", true }, { "hotdogscoolcats.net", true }, { "hotdogwheel.tk", true }, { "hotdresses.ga", true }, { "hote-inox.ro", true }, + { "hotearth.de", true }, + { "hotebonytube.com", true }, { "hotel-4-stelle.it", true }, - { "hotel-alan.hr", true }, { "hotel-altabadia.com", true }, { "hotel-arabba.net", true }, { "hotel-bella-muerte.tk", true }, @@ -58759,26 +68024,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotel-garni-letizia.it", true }, { "hotel-gruenwald.it", true }, { "hotel-gschwendt.it", true }, - { "hotel-kontorhaus-stralsund.de", true }, { "hotel-kontorhaus.de", true }, + { "hotel-kornwestheim.de", true }, { "hotel-kronjuwel.de", true }, { "hotel-kyiv.com.ua", true }, { "hotel-le-vaisseau.ch", false }, + { "hotel-leda.com", true }, { "hotel-navis.hr", true }, { "hotel-promyk.pl", true }, { "hotel-rosner.at", true }, { "hotel-rosskopf.it", true }, { "hotel-selva-gardena.net", true }, - { "hotel-siret.ro", true }, - { "hotel-teresa.com", true }, { "hotel-valgardena.net", true }, { "hotel-vipiteno.net", true }, { "hotel-waldheim.eu", true }, - { "hotelallago.it", true }, { "hotelalpino.com", true }, - { "hotelamgarnmarkt.at", false }, + { "hotelandplace.com", true }, { "hotelarevalo.com", true }, { "hotelastor.com", true }, + { "hotelbird.com", true }, { "hotelbiz.cf", true }, { "hotelbiz.ga", true }, { "hotelbiz.gq", true }, @@ -58788,6 +68052,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotelcorporate.codes", true }, { "hotelcorporatecodes.com", true }, { "hoteldahu.it", true }, + { "hoteldel.com", true }, { "hoteldimorae.it", true }, { "hoteldvorik.ml", true }, { "hotelelaphusabrac.com", true }, @@ -58796,24 +68061,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotelfloresta.tk", true }, { "hotelfloridachaco.com", true }, { "hotelflow.com.br", true }, + { "hotelgodisa.com", true }, { "hotelident.de", true }, + { "hoteliers.com", true }, { "hotelitalia.tk", true }, { "hotelite.tk", true }, { "hotelkaj.hr", true }, + { "hotelkeihan.co.jp", true }, + { "hotellalucciola.net", true }, { "hotellamm.it", true }, { "hotellaserenella.it", true }, + { "hotellme.eu", true }, { "hotello.io", true }, - { "hotelmadhuwanvihar.com", true }, { "hotelmap.com", true }, { "hotelmariasas.it", true }, { "hotelmarinaadria.com", true }, { "hotelmonal.in", true }, { "hotelnagarkotparadise.tk", true }, { "hotelneptundalmatien.com", true }, + { "hotelplazataranto.com", true }, + { "hotelponcowinatan.com", true }, { "hotelpromo.codes", true }, { "hotelreis.com.br", true }, { "hotels-insolites.com", true }, - { "hotels-merano.it", true }, { "hotels-resorts-in-crimea.tk", true }, { "hotels3d.com", true }, { "hotels4teams.com", true }, @@ -58821,7 +68091,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotelsalzberg.gq", true }, { "hotelsalzberg.ml", true }, { "hotelsantalibera.tk", true }, - { "hotelsfares.com", true }, + { "hotelscatalog.ru", true }, { "hotelsinbuxton.com", true }, { "hotelsinformer.com", true }, { "hotelsinncoventry.com", true }, @@ -58829,67 +68099,89 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hotelsonline.tk", true }, { "hotelsrejber.cz", true }, { "hotelsrit.tk", true }, - { "hotelsthisweekend.com", true }, { "hotelv.com", true }, { "hotelvalena.com", true }, { "hotelvisegrad.hu", true }, { "hotelzapse-aurora.tk", true }, { "hotesb.net", true }, { "hotfiesta.ml", true }, - { "hotfulltv.com", true }, + { "hotgirl.tv", true }, + { "hotglue.me", true }, + { "hothag.com", true }, { "hothardware.com", true }, { "hothbricks.com", false }, - { "hothiphopmusic.com", true }, + { "hotheart.ru", true }, { "hothub.net", true }, + { "hotify.net", true }, { "hotiii.ga", true }, { "hotiks.tk", true }, { "hotjuice.com", true }, - { "hotlab.in", true }, + { "hotlinenum.com", true }, { "hotlinetohell.cf", true }, - { "hotlistproducts.com", false }, { "hotlog.tk", true }, { "hotmail", true }, { "hotmango.tk", true }, { "hotmann.de", true }, + { "hotmart.com", true }, + { "hotmilfphotos.com", true }, { "hotmmagirls.com", true }, - { "hotnewhiphop.com", true }, + { "hotmom.tv", true }, + { "hotmomsvideos.com", true }, + { "hotmovies.com", true }, + { "hotmoviesforher.com", true }, + { "hotnakedgirls.net", true }, + { "hotnews-today.com", true }, { "hotnewsnl.tk", true }, { "hotnow.live", true }, + { "hotnudeteen.com", true }, { "hoto.us", true }, { "hoton.in", true }, { "hotornot.com", true }, { "hotperiscope.tk", true }, + { "hotpinkbraces.com", true }, { "hotplate.co.nz", true }, { "hotpopky.cf", true }, + { "hotpornfilms.com", true }, + { "hotporngirl.com", true }, + { "hotporntubes.com", true }, + { "hotpornvideos.tv", true }, + { "hotprintind.com.br", true }, { "hotproxy.gq", true }, + { "hotpussypics.com", true }, + { "hotpussytube.com", true }, { "hotrender.com", true }, { "hotroviettel.vn", true }, { "hotrowordpress.com", false }, { "hotschneckchen.net", true }, { "hotscripting.tk", true }, + { "hotsex.tv", true }, { "hotsexvids.net", true }, { "hotshira.com", true }, + { "hotshotsleeves.com", true }, { "hotsmi.cf", true }, { "hotsoft.com.br", true }, { "hotsolarsolutions.com", true }, + { "hotspot.cl", true }, { "hotspotshield.com", true }, { "hotspringsar.gov", true }, + { "hotspurhq.com", true }, { "hotsvenja.com", true }, { "hottaro.com", true }, { "hottestguyoftech.com", true }, { "hottestwebcamgirls.org", true }, { "hottheme.net", true }, + { "hottie.at", true }, { "hotting.nl", true }, { "hottoys.tk", true }, - { "hottubspasnewcastle.co.uk", true }, { "hotvehs.com", true }, { "hotvideosgalleries.com", true }, { "hotwaterspecialist.com.au", true }, { "hotwifer.com", true }, { "hotyoyo.ga", true }, { "hotzheipoe.com", true }, + { "houchcannabis.com", true }, { "houdah.com", true }, - { "houghtonhouse.co.za", true }, + { "houdenvanhonden.nl", true }, { "houhuayuan.com", true }, { "houlang.ac.cn", true }, { "houldsworthmill.com", true }, @@ -58898,6 +68190,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hourlyearning.tk", true }, { "hourlyringtonesers.ga", true }, { "hourlyringtonesest.ga", true }, + { "hoursofoperation.biz", true }, + { "hourspent.com", true }, { "house-cleaning-howtos.com", true }, { "house-sparrow.com", true }, { "houseandgarden.co.uk", true }, @@ -58917,13 +68211,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "houseinfonews.tk", true }, { "housekeeperlondon.co.uk", true }, { "houselocal.co.uk", true }, + { "houselygoods.com", true }, { "housemart.company", true }, { "housemates.uk.com", true }, { "housemouse.tk", true }, { "houseofaceonline.com", true }, { "houseofhipsters.com", true }, { "houseofhouston.com", true }, + { "houseofmusic.co.uk", true }, { "houseofpertijs.com", true }, + { "houseofpheromones.com", true }, + { "houseoftutors.co.uk", true }, { "houseofyee.com", true }, { "housepartyradio.net", true }, { "houseplant.tk", true }, @@ -58932,13 +68230,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "houseremodels.tk", true }, { "houseroxrecords.com", true }, { "housese.at", true }, + { "housesinportugal.net", true }, + { "housesittingparaguay.com", true }, { "housesmartdecore.tk", true }, - { "housestationlive.com", true }, { "housesumo.com", true }, + { "housetories.com", true }, { "housing.com", true }, + { "housingauctions.net", true }, { "housingcenter.com", true }, { "housingloan.jp", true }, - { "housingneedz.com", true }, + { "housingokc.gov", true }, + { "houston-building-maintenance.com", true }, + { "houston-probate-law.com", true }, + { "houstonaudubon.org", true }, { "houstonauthorizedrepair.com", true }, { "houstoncenterforvaluedliving.com", true }, { "houstoncountyal.gov", true }, @@ -58955,17 +68259,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "houtinee.com", true }, { "hovala.tk", true }, { "hoverboardbarato.com", true }, + { "hovia.com", true }, { "hovset.net", true }, - { "how-old.info", true }, { "how-to-build-computer.tk", true }, { "how-to-simply.com", true }, - { "how-to-use-elementor.com", true }, { "how-to-write-a-book.cf", true }, { "how-to-write-a-book.ga", true }, { "how-to-write-a-book.gq", true }, { "how-to-write-a-book.ml", true }, - { "how10.com", true }, - { "how2b.studio", true }, { "how2dev.tools", true }, { "how2fsbo.com", true }, { "how2recycle.info", true }, @@ -58974,25 +68275,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "howandroidhelp.com", true }, { "howandwhys.com", true }, { "howardchippewawi.gov", true }, + { "howardcounty-mo.gov", true }, { "howardcountyne.gov", true }, { "howardcountysheriffmo.gov", true }, { "howardhannava.com", true }, - { "howardplastics.co.uk", true }, + { "howardkaplanbooks.com", true }, { "howardscholars.org", true }, { "howardsgrovewi.gov", true }, { "howardshaw.com", true }, - { "howarh.com", true }, - { "howbehealthy.com", true }, + { "howarh.com", false }, { "howdo.nl", true }, { "howdoesmycode.work", true }, { "howdoyousaythis.com", true }, { "howdybikes.com", true }, { "howellaccounts.co.uk", true }, { "howellcountymo911.gov", true }, + { "howellpolicenj.gov", true }, { "howesky.com", true }, { "howgoodwasmysex.com", true }, { "howieisawesome.com", true }, - { "howl.chat", true }, { "howlers.tk", true }, { "howlettmartin.com", true }, { "howlinhawk.tk", true }, @@ -59014,21 +68315,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "howsecureismypassword.net", true }, { "howsmyssl.com", true }, { "howsmytls.com", true }, + { "howto-outlook.com", true }, { "howtobehealthy.tk", true }, - { "howtocurekennelcough.com", true }, - { "howtodesignwebsite.com", true }, - { "howtofixwindows.com", true }, + { "howtoboy.com", true }, { "howtofreelance.com", true }, { "howtogeek.com", true }, { "howtogeekpro.com", true }, { "howtogosolar.org", false }, { "howtohomepage.tk", true }, + { "howtohow.org", true }, + { "howtoinstall.co", true }, { "howtomakefriends.tk", true }, + { "howtomanagedevices.com", true }, { "howtomediacenter.com", true }, { "howtomovetheneedle.com", true }, + { "howtoplayguitarlikeapro.com", true }, { "howtopreventvulnerabilities.com", true }, { "howtorunfasterandlonger.com", true }, { "howtoslapsomeonethroughtheinternet.com", true }, + { "howtostopsnoring.tk", true }, { "howtoteachviolin.com", true }, { "howtotech.com", true }, { "howtotech.de", true }, @@ -59041,6 +68346,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "howtutu.link", true }, { "howtutu.net", true }, { "howtutu.org", true }, + { "howtutu.social", true }, { "howudoin.tk", true }, { "howunadeydoam.ng", true }, { "howwhy.tw", true }, @@ -59050,17 +68356,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hoyosdelespino.tk", true }, { "hoz-pack.com.ua", true }, { "hozana.si", false }, - { "hozdhaza.hu", false }, { "hozinga.de", true }, { "hozio.com", true }, + { "hozkomurcu.com", true }, { "hp-67.com", true }, { "hp-lexicon.org", true }, { "hp42.de", true }, { "hpac-portal.com", true }, { "hpage.com", true }, + { "hpbclinic.com", true }, { "hpbn.co", true }, + { "hpc.mil", true }, + { "hpccsystems.com", false }, { "hpeditor.tk", true }, - { "hpepub.com", false }, { "hpfxd.com", true }, { "hphp.ga", true }, { "hpic.net", true }, @@ -59068,18 +68376,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hpk.edu.ee", true }, { "hpkp-faq.de", true }, { "hplace.com.br", true }, + { "hpm.pt", true }, { "hpneo-conseil.com", true }, - { "hps.digital", true }, + { "hpruehl.de", true }, { "hpsdigital.hu", true }, + { "hpsldc.com", true }, { "hpv-info.ee", true }, { "hpvtimmerwerken.nl", true }, + { "hq.marketing", true }, { "hq77.ru", true }, { "hqblog.cn", false }, - { "hqmovies.club", true }, + { "hqproductreviews.com", true }, { "hqteas.com", true }, + { "hqtrannytube.com", true }, { "hquest.pro.br", true }, { "hqwebhosting.tk", false }, { "hqy.moe", true }, + { "hqy2000.com", true }, { "hr-automation.eu", true }, { "hr-books.shop", true }, { "hr-clan.tk", true }, @@ -59092,22 +68405,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hrabogados.com", true }, { "hraesvelg.net", true }, { "hrafnkellbaldurs.com", true }, + { "hrafnsholl.is", true }, { "hrajhry.sk", true }, { "hrajme.tk", true }, { "hranicka.cz", true }, + { "hravatar.com", true }, { "hrbanen.nl", true }, { "hrbatypes.cz", true }, - { "hrbl.lc", true }, { "hrblnrdx.org.cn", true }, { "hrbrt.co", true }, - { "hrbrt.nl", true }, + { "hrbrt.nl", false }, + { "hrcdn.net", true }, + { "hrcigroup.com", true }, { "hrcrew.com.au", true }, { "hrd.pl", true }, - { "hrdns.de", false }, + { "hrdns.de", true }, { "hreflang.info", true }, { "hrejterzy.com", true }, { "hrgt.eu", true }, { "hristijanspirovski.tk", true }, + { "hristos.com", true }, + { "hristov.help", true }, + { "hriveralaw.com", true }, { "hrjfeedstock.com", true }, { "hrjfeedstock.org", true }, { "hrjob.ml", true }, @@ -59124,23 +68443,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hrmg.agency", true }, { "hrmny.sh", true }, { "hrndz.io", true }, + { "hrnk.org", true }, { "hro.to", true }, { "hrobert.hu", true }, { "hroc.co.uk", true }, + { "hrodna.life", true }, { "hroling.nl", true }, { "hromaticworld.tk", true }, { "hroschyk.cz", true }, { "hrpage.ml", true }, - { "hrpregnancy.com", true }, { "hrprofessionals.tk", true }, + { "hrreporter.com", true }, { "hrsa.gov", true }, { "hrseoservice.com", true }, { "hrstapps-dev.com", true }, { "hrtech.shop", true }, { "hrtechnologypro.cf", true }, { "hrtpova.gov", true }, + { "hru.gov", true }, { "hrumka.net", true }, - { "hrw.guru", true }, { "hrw66.cc", true }, { "hrxkauppa.fi", true }, { "hryniewski.net", true }, @@ -59148,12 +68469,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hrzblt.eu", true }, { "hs-flensburg.de", true }, { "hs-group.net", true }, + { "hs-hire.co.uk", true }, { "hs7imports.com.br", true }, { "hsappstatic.net", true }, { "hsbc-zertifikate.de", true }, { "hsbs.com.sg", true }, + { "hsbuild.com", true }, + { "hsc.com.vn", true }, + { "hsc.gd.cn", true }, { "hschen.top", false }, + { "hscomposites.co.nz", true }, { "hscorp.de", true }, + { "hsdade.com", true }, { "hse-dev.com", true }, { "hse-online.com", true }, { "hse-reglementaire.com", true }, @@ -59161,24 +68488,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hsex.tv", false }, { "hsg-lumdatal.de", true }, { "hsgms.de", true }, - { "hsimrall.com", true }, { "hsivonen.com", true }, { "hsivonen.fi", true }, { "hsivonen.iki.fi", true }, + { "hsjdzaragoza.es", true }, { "hskernel.com", true }, { "hskin.top", true }, + { "hskprep.com", true }, { "hsm-eldesafio.tk", true }, { "hsmithsmithfield.co.uk", true }, { "hsmr.cc", true }, { "hsn-tsn.com", true }, { "hsn.com", true }, { "hsog.tk", true }, - { "hspinc.ca", true }, - { "hsr.gov", false }, + { "hsprotection.net", true }, + { "hsr.gov", true }, { "hsreformas.es", true }, - { "hsrm.cz", true }, { "hsselite.com", true }, { "hst.tc", true }, + { "hstoyanov.com", true }, { "hsts-preload-test.xyz", true }, { "hsts.eu", true }, { "hsts.eu.org", true }, @@ -59202,6 +68530,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "htb-email.uk.com", true }, { "htb.click", true }, { "htb.co.uk", true }, + { "htbap.net", true }, { "htbemail.co", true }, { "htbemail.co.uk", true }, { "htbemail.com", true }, @@ -59213,8 +68542,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hte.ovh", true }, { "hti.digital", true }, { "htikeagkyaw.com", true }, + { "htl-anmeldung.at", true }, { "htl.wiki", true }, { "htlball.at", true }, + { "htm-partners.com", true }, + { "htmag.co.il", true }, { "htmanager.fr", true }, { "htmdom.com", true }, { "html-builder.tk", true }, @@ -59228,16 +68560,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "htmlcssphp.ml", true }, { "htmlcssphp.tk", true }, { "htmlformatter.net", true }, - { "htmljatekok.xyz", true }, { "htmlnet.tk", true }, + { "htmltemplated.com", true }, { "htmlvalidator.com", false }, { "htmlweb.ml", true }, { "htmlyse.com", true }, - { "htmtools.com", true }, { "htmue.org", true }, { "htp2.top", true }, { "htt.pe", true }, - { "http-2.com", true }, { "http.dog", true }, { "http.garden", true }, { "http2.com.cn", true }, @@ -59247,10 +68577,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "http3.ch", true }, { "http3.pro", true }, { "http418.org", true }, - { "httpheaders.info", true }, + { "httpd.gq", true }, { "https-rulesets.org", true }, { "https.com.tw", true }, { "https.dk", true }, + { "https.gs", true }, { "https.jetzt", true }, { "https4all.org", true }, { "httpsalarm.com", true }, @@ -59262,7 +68593,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "httpsnow.com", true }, { "httpsnow.org", true }, { "httpstaak.tk", true }, - { "httpstest.com", true }, { "httpstest.eu", true }, { "httpstest.nl", true }, { "httpswatch.ca", true }, @@ -59270,6 +68600,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "httpswatch.nl", true }, { "htxnet.biz", true }, { "htzopremasrbija.co.rs", true }, + { "hu-1xbet.com", true }, { "hu-a-u.com", true }, { "hu.search.yahoo.com", false }, { "hua-in.net", true }, @@ -59277,6 +68608,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huagati.com", true }, { "huahinpropertylisting.com", true }, { "huang.nu", true }, + { "huangban.org.cn", true }, { "huangguancq.com", true }, { "huangh.com", true }, { "huangjia71.com", true }, @@ -59294,15 +68626,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huangzenghao.cn", false }, { "huangzenghao.com", true }, { "huangzjnet.gq", true }, + { "huangzz.xyz", true }, { "huanqiu1988.com", true }, { "huanta.tk", true }, - { "huanvm.com", true }, { "huanwei.com", true }, { "huapood.com", true }, { "huaqian.art", true }, { "huashan.co.uk", true }, { "huashang.tk", true }, - { "huastecanetwork.com", true }, { "huawenyy.com", true }, { "huaxueba.com", true }, { "hub24.com.au", true }, @@ -59312,17 +68643,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hubbardhouseugrrmuseum.org", true }, { "hubbaworld.tk", true }, { "hubbell.com", true }, + { "hubblogging.com", true }, { "hubchain.com", true }, { "hubchain.com.br", true }, { "hubchain.fr", true }, { "hubchain.io", true }, { "hubchain.org", true }, { "huber-informatik.de", true }, - { "hubex.ie", true }, { "hublaagram.ml", true }, { "hubnet.fr", true }, { "hubok.net", true }, { "huboo.co.uk", true }, + { "huboo.com", true }, { "hubovra.nl", true }, { "hubrecht.at", true }, { "hubsaveers.ga", true }, @@ -59333,42 +68665,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hubspot.fr", true }, { "hubspot.jp", true }, { "hubux.tk", true }, + { "hubx.co", true }, { "huchet.me", false }, { "hucklebucks.com", true }, { "huckletree.com", false }, + { "hudaa.us", true }, + { "huddlecamhd.com", true }, { "hudebnibazarmixer.cz", true }, + { "hudeem-vmeste.ml", true }, { "hudhaifahgoga.co.za", true }, { "hudhomestore.gov", true }, { "hudobniny.net", true }, { "hudognik.com", true }, { "hudrydum.cz", true }, + { "hudsonlifting.co.uk", true }, { "hudsonregional.gov", true }, + { "hudsonsolutions.com", true }, { "hudsonwi.gov", true }, { "huduser.gov", true }, { "huecomundo.tk", true }, { "huehnerartikel.de", true }, { "huelgajusticiaextremadura.tk", true }, + { "huellasfestival.com", true }, { "huelvatrabaja.com", true }, { "huemeyraophelia.com", true }, { "huemul.studio", true }, + { "huepfburggiessen.de", true }, + { "huertoydesamparados.tk", true }, { "hues-in-lee.de", true }, { "huesers.de", true }, { "huesitos.tk", true }, { "hueterecruiters.com", true }, { "hufelare.tk", true }, { "huffduffer.com", true }, + { "huffingtonwire.com", true }, + { "huffsinsurance.com", true }, + { "hug0.cz", true }, { "hugebeasters.ga", true }, { "hugebeastest.ga", true }, - { "hugemonitor.com", true }, + { "hugeboobs.pics", true }, + { "hugetits.tv", true }, + { "huggies.com.au", true }, { "huggy.moe", true }, { "hughfitzgerald.com", true }, - { "hughtodd.ink", true }, { "hugi.is", true }, { "huglen.info", true }, - { "hugo.pro", true }, { "hugobarral.me", true }, { "hugochilemme.com", true }, - { "hugodubois.ch", true }, + { "hugocurado.info", true }, { "hugofs.com", true }, { "hugolegrand.fr", true }, { "hugolynx.fr", false }, @@ -59379,20 +68723,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hugonote.ml", true }, { "hugonote.ovh", true }, { "hugonote.tk", true }, + { "hugotech.vn", true }, { "hugovr.nl", true }, { "hugoyugou.com", true }, { "hugs.ua", true }, - { "huguesditciles.com", false }, - { "huh.gdn", true }, { "huhao.tk", true }, - { "huidapotheek.nl", true }, - { "huihui.moe", true }, + { "huhu.cf", true }, + { "huibrotladen.com", true }, { "huiketang.com", true }, { "huininga.com", true }, { "huininga.nl", true }, { "huininga.org", true }, - { "huipc.com", true }, { "huirongis.me", true }, + { "huis-en-tuin.be", true }, { "huisaandecosta.nl", true }, { "huisartsen-ict.nl", true }, { "huisartsenpraktijkheemraadssingel.nl", true }, @@ -59402,13 +68745,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huisdierinfopunt.tk", true }, { "huiser.nl", true }, { "huisjeboompje-baby.nl", true }, - { "huiskopenspanje.nl", true }, { "huislaw.com", true }, { "huislijn.nl", true }, { "huissier-vosges.com", true }, { "huit.re", true }, { "huitaodang.com", true }, - { "huizenvlees.nl", true }, + { "huk-autoservice.de", true }, { "hukkatavara.com", true }, { "hukuhauchi.com", true }, { "hulaginswoodworking.com", true }, @@ -59417,7 +68759,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hulii.com.au", true }, { "hulkbay.tk", true }, { "hulkweb.tk", true }, - { "hulldevs.net", true }, + { "hullmoneyman.com", true }, { "hullscp.co.uk", true }, { "hullseals.space", true }, { "huloveyou.com", true }, @@ -59428,28 +68770,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hulsoft.co.uk", true }, { "hultrid.hopto.org", true }, { "huma-auto.club", false }, + { "human-centricity.com", true }, { "human-clone.com", true }, + { "human-dev.io", true }, { "human-parasites.tk", true }, { "human-shinri.com", true }, - { "humanafterall.studio", true }, + { "humana-medicaresupplement.com", true }, { "humanamente.tk", true }, { "humanbeing.tk", true }, + { "humandesignstudios.com", true }, { "humanenrich.com", true }, + { "humanesdemadrid.tk", true }, { "humanewolf.com", true }, { "humanexperiments.com", true }, { "humanhairgo.tk", true }, { "humanhealth.pl", true }, { "humanidad.tk", true }, + { "humaninterest.com", true }, { "humanistgruppen.tk", true }, { "humanit.com.au", true }, + { "humanity.com", true }, + { "humanize.security", true }, { "humanlocation.net", true }, { "humanresources.gq", true }, + { "humanresourcesedu.org", true }, + { "humanresourcesmanager.de", true }, { "humanrights.gov.au", true }, { "humanrights.tk", true }, + { "humanrightscareers.com", true }, { "humansense.nl", true }, + { "humanservicesedu.org", true }, + { "humanshiftpaper.com", true }, + { "humantouchmassagechairs.com", true }, + { "humanvidas.com.br", true }, { "humanzee.com", true }, { "humara.tk", true }, { "humass.nl", true }, + { "humbaur.com", true }, { "humbble.fr", true }, { "humbermaritimecollege.ac.uk", true }, { "humbermaritimecollege.co.uk", true }, @@ -59457,9 +68814,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "humblebee.be", true }, { "humblebee.bg", true }, { "humblebee.ch", true }, - { "humblebee.co.in", true }, { "humblebee.co.uk", true }, - { "humblebee.com.mx", true }, { "humblebee.cz", true }, { "humblebee.dk", true }, { "humblebee.es", true }, @@ -59478,18 +68833,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "humblebeeshop.com.au", true }, { "humblecraft.tk", true }, { "humbledot.com", false }, + { "humblenano.africa", true }, + { "humblenano.io", true }, { "humboldt-wi.gov", true }, + { "humboldtcavotes.gov", true }, + { "humboldtcountyca.gov", true }, { "humboldtcountynv.gov", true }, + { "humboldtcsi.com", true }, { "humboldthomeguide.com", true }, { "humboldtmfg.com", true }, + { "humdata.org", true }, { "humdruma-recordingz.tk", true }, - { "humer-it.com", true }, + { "humer-it.com", false }, + { "humetenderbox.org", true }, { "humexe.com", true }, { "humeydi.tk", true }, + { "humi.ca", true }, { "humio.com", true }, + { "humm90.com", true }, + { "hummel.tk", true }, + { "hummingbird.co", false }, { "hummy.tk", true }, { "hummy.tv", true }, + { "humo.be", true }, { "humor-life.tk", true }, + { "humor-web.tk", true }, { "humor.cf", true }, { "humor.ga", true }, { "humorbest.tk", true }, @@ -59498,17 +68866,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "humorcheckest.ga", true }, { "humored.gq", true }, { "humorojo.com", true }, - { "humpchies.com", true }, { "humpen.se", true }, { "humphreyscountytn.gov", true }, - { "humppakone.com", true }, { "humpydumpy.tk", true }, { "humuluslupulus.de", true }, { "humus.tk", true }, { "hund.io", true }, { "hund.ml", true }, { "hundamosantena3.tk", true }, - { "hunde.io", true }, { "hundedekken.tk", true }, { "hundeschule.tk", true }, { "hundestudios.tk", true }, @@ -59518,12 +68883,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hundter.com", true }, { "hundur.tk", true }, { "hunedoara.tk", true }, + { "hungarian-united-church.tk", true }, + { "hungarianeducationagency.com", true }, + { "hungaryz.ml", true }, { "hungnm.me", true }, - { "hungphatlaptop.com", true }, { "hungryas.tk", true }, { "hungryginie.com", true }, { "hungryhealthyhappy.com", true }, + { "hunhold.at", true }, + { "hunhold.biz", true }, + { "hunhold.ch", true }, { "hunhold.com", true }, + { "hunhold.de", true }, + { "hunhold.eu", true }, + { "hunhold.it", true }, + { "hunhold.net", true }, + { "hunhold.org", true }, { "huniverse.co", true }, { "hunngard.com", true }, { "hunqz.com", true }, @@ -59533,26 +68908,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hunter.io", true }, { "hunter32.ru", true }, { "hunterjohnson.io", true }, - { "hunterkehoe.com", true }, { "huntersandprops.tk", true }, { "hunterscreekapartments.net", true }, + { "hunterscrolls.tk", true }, + { "huntertrade.com.br", true }, { "huntexpired.com", false }, + { "huntflow.ai", true }, { "hunting.ml", true }, { "huntingdonlifesciences.com", true }, - { "huntingspirits.tv", true }, + { "huntingdonsmithfieldpa.gov", true }, + { "huntingnewfoundlandlabrador.com", true }, { "huntingtonestateproperties.com", true }, { "huntingtonnow.com", true }, { "huntingtonwv.gov", true }, { "huntreminder.com", true }, { "huntsvillealtransit.gov", true }, { "huntsvillecottage.ca", true }, - { "huntyourshitaround.com", true }, + { "huntvac.com", true }, { "huny.eu.org", true }, { "hunzai.tk", true }, + { "huoduan.com", true }, { "huohu-sports.com", true }, - { "huomiao.me", true }, + { "huohuo.cf", true }, + { "huohuo.ml", true }, { "huon.fyi", true }, - { "huongquynh.com", true }, { "huonit.com.au", true }, { "huoqibaike.club", true }, { "huotuyouxi.com", false }, @@ -59562,26 +68941,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hupoyunlar.com", true }, { "huracanvillegas.com", true }, { "hurbascooter.com", true }, + { "hurdafiyatlari.site", true }, { "hurinkazan2020.com", true }, { "hurleyhomestead.com", true }, { "huron.tk", true }, { "huronsd.gov", true }, { "hurra-blog.tk", true }, { "hurricanecarroll.com", true }, + { "hurricanehvacservices.com", true }, { "hurricanelabs.com", false }, { "hurricaneplaneers.ga", true }, { "hurricaneplaneest.ga", true }, + { "hurricanewv.gov", true }, + { "hurricanewvpd.gov", true }, { "hurriyetseriilan.tk", true }, + { "hurstbourneacresky.gov", true }, { "hurstiharrell.tk", true }, + { "hurtigrabat.dk", true }, { "hurtigtinternet.dk", true }, - { "hus.gay", true }, { "husakbau.at", true }, { "hushbabysleep.com", true }, { "hushfile.it", true }, { "hushpuppiesobuv.ru", true }, { "husic.net", false }, + { "huskercorner.com", true }, { "husky-in-nood.tk", true }, { "huskyeye.de", true }, + { "huskyfaceandbody.com.au", true }, + { "huskygifts.com", true }, { "huskyinc.us", false }, { "husmann.tech", true }, { "husqvarnamoped.se", true }, @@ -59596,12 +68983,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "huurwoordenaar.nl", true }, { "huuto.tk", true }, { "huutonauru.net", true }, - { "huwcbjones.co.uk", true }, { "huwcbjones.uk", true }, { "huwjones.me", true }, { "huwshepheard.com", true }, { "huxcoconstruction.com", true }, { "huxley.net", true }, + { "huynhviet.com", true }, { "huyvu.nl", true }, { "huzurmetal.net", true }, { "huzurpansiyonfirtinavadisi.com", true }, @@ -59610,7 +68997,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hv-anmeldung.de", true }, { "hv-huset.no", true }, { "hv-portal.de", true }, + { "hv.se", true }, { "hva.cl", true }, + { "hvac-distributing.com", true }, + { "hvac-distributing.xyz", true }, + { "hvacschool.org", true }, { "hvanmeldung.de", true }, { "hvanmeldung.online", true }, { "hvcoksvote.gov", true }, @@ -59621,15 +69012,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hvh.no", true }, { "hvhdct.gov", true }, { "hvhercules.tk", true }, + { "hvhindia.in", true }, { "hvllucinvtion.tk", true }, + { "hvorschool.tk", true }, { "hvrint.de", true }, { "hvt.com.au", true }, { "hvtuananh.com", true }, { "hvylya.net", true }, { "hw8.eu", true }, - { "hw923.com", true }, { "hwag-pb.de", true }, { "hwasung.com.vn", true }, + { "hwe.nz", true }, { "hwholdsworth.com.au", true }, { "hwinfo.tk", true }, { "hwjkk.com", true }, @@ -59637,18 +69030,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hwvv.nl", true }, { "hwx8.com", false }, { "hx-sun.com", true }, - { "hx36.net", true }, + { "hx36.net", false }, { "hx53.de", true }, { "hx678.cc", true }, { "hx77.cc", false }, + { "hxhxtyd.com", true }, { "hxit.cn", true }, { "hxkvm.com", true }, { "hxkvm.net", true }, { "hxp.io", true }, { "hxr404.cf", true }, { "hy1.com", true }, + { "hyacinthus.tk", true }, { "hyatt.com", true }, { "hyb7.com", true }, + { "hybrd.is", true }, { "hybrid-crescent.tk", true }, { "hybriden.cf", true }, { "hybriden.tk", true }, @@ -59667,13 +69063,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hybula.com", true }, { "hycken.com", true }, { "hyckenberg.com", true }, + { "hyderabaddccb.org", true }, { "hyderabadonlinegifts.com", true }, + { "hydra-interactive.com", true }, + { "hydra.az", true }, { "hydrabit.nl", true }, { "hydrante.ch", false }, { "hydras.tk", true }, { "hydrazin.pw", true }, { "hydro17.com", true }, { "hydroagro.pl", true }, + { "hydroaralen.com", true }, { "hydrochlorothiazide.gq", true }, { "hydrochlorothiazide125.ga", true }, { "hydrocloud.net", true }, @@ -59683,40 +69083,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hydrogenplatform.com", true }, { "hydrographicsocietybenelux.eu", true }, { "hydroid.tk", true }, + { "hydrolifehottubs.co.uk", true }, + { "hydrolyze.tk", true }, + { "hydromech.com.au", true }, { "hydrometrixtechnologies.com", true }, { "hydronicheatingaustralia.com.au", true }, { "hydronium.cf", true }, { "hydronium.ga", true }, { "hydronium.ml", true }, { "hydronium.tk", true }, - { "hydroponicglobal.com.au", true }, + { "hydroposev.com", true }, + { "hydrosaat.ch", true }, { "hydrosight.com", true }, { "hydrosila.com", true }, { "hydroturbine.info", false }, + { "hydrozen.io", true }, { "hydrozone.fr", true }, { "hyec.jp", true }, - { "hygien.ro", true }, + { "hyex.com.au", true }, { "hygieneproclean.co.nz", true }, { "hygienet.be", true }, { "hygo.com", true }, + { "hygraph.com", false }, { "hyk.me", true }, { "hyland.com", true }, + { "hylark.com", true }, { "hylians.com", true }, { "hyllie.net", true }, { "hymn.com", true }, + { "hymnal.net", true }, { "hymnsandverses.com", true }, + { "hync.io", true }, { "hyncice.com", true }, { "hyndax.com.ar", false }, { "hynek.me", true }, { "hyodyntamaton.site", false }, { "hyoi.de", true }, + { "hypar.io", true }, { "hyparia.fr", true }, { "hyparia.org", true }, - { "hype.tech", true }, + { "hypehub.tech", true }, { "hypelifemagazine.com", true }, { "hypemgmt.com", true }, + { "hyper-fit.nl", true }, { "hyper-matrix.org", true }, - { "hyper-text.org", true }, + { "hyper-network.de", true }, + { "hyper-text.org", false }, { "hyper.ai", true }, { "hyper.lol", true }, { "hyperalgesia.com", true }, @@ -59724,15 +69136,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hyperblast-universe.tk", true }, { "hyperbolic-mayonnaise-interceptor.ovh", true }, { "hypercdn.de", true }, - { "hypercompetitions.com", true }, { "hypercritical.co", true }, { "hyperd.sh", true }, + { "hyperdesign.com", true }, { "hyperhidrose.tk", true }, { "hyperion-project.org", true }, + { "hyperion.gmbh", false }, { "hyperion.io", true }, + { "hyperionms.com", true }, { "hyperjit.com", true }, { "hyperlocal.co.za", true }, { "hypermonkey.tk", true }, + { "hypernet.co.id", false }, + { "hypernode.com", true }, { "hyperonline.tk", true }, { "hyperreal.chat", true }, { "hyperreal.info", true }, @@ -59740,14 +69156,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hypersomnia.com", true }, { "hyperspace.tk", true }, { "hyperstack.org", true }, + { "hypertaut.com", true }, { "hypertensionexplained.com", true }, { "hypertesto.me", true }, { "hyperthymia.com", true }, - { "hyperv-backup.co.za", true }, + { "hypervsn.com", true }, { "hypetrix.com", true }, - { "hypevents.net", true }, + { "hypexstore.tk", true }, { "hyphen.co.za", true }, { "hyphenpda.co.za", true }, + { "hypixelstudios.com", true }, { "hypno-thera.fr", true }, { "hypnobb.com", true }, { "hypnos.hu", true }, @@ -59755,14 +69173,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hypnose-nimes.fr", true }, { "hypnoseduction.tk", true }, { "hypnoside.tk", true }, - { "hypnotechs.com", true }, + { "hypnosis.edu", true }, { "hypnotizedgirls.ml", true }, { "hypnovir.us", true }, + { "hypo-fix.com", true }, + { "hypo-fix.de", true }, + { "hypocretins.com", true }, { "hypocrites.tk", true }, + { "hypofax.de", true }, + { "hypofixweb.de", true }, + { "hypogeal.com", true }, { "hypokalkulacka.sk", true }, + { "hypolife.de", true }, { "hypolineweb.de", true }, { "hypotheca.ca", true }, { "hypotheekbond.nl", true }, + { "hypothekenbank.ag", true }, { "hypotheques24.ch", true }, { "hypothermia.tk", true }, { "hypothes.is", true }, @@ -59774,17 +69200,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hyrius.net", true }, { "hyrulekingdom.tk", true }, { "hys-te-ria.tk", true }, + { "hyscore.io", true }, + { "hyser.com.ua", true }, { "hysh.jp", true }, { "hysh.net", true }, { "hysh.org", true }, { "hysolate.com", true }, - { "hysquad.it", true }, { "hystats.net", true }, { "hysupchile.cl", true }, { "hytale.com", true }, { "hytzongxuan.com", true }, { "hytzongxuan.top", true }, { "hyunbridge.com", true }, + { "hyundaibestpromo.com", true }, + { "hyundaifinance.de", false }, { "hyundaipartsdeal.com", true }, { "hyundaisrilanka.lk", true }, { "hyunjoonkim.net", true }, @@ -59795,16 +69224,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "hyyen.com", true }, { "hyyperchat.com", true }, { "hyze.fr", true }, + { "hyzy.fr", true }, { "hzbk.org", false }, { "hztgzz.com", true }, - { "hzwc.nl", true }, { "i--b.com", true }, { "i-0v0.in", true }, { "i-3c.co.jp", true }, - { "i-aloks.ru", true }, { "i-am-seo.co.uk", true }, + { "i-cite.es", true }, { "i-connect.ie", false }, { "i-cyber.gov.ua", true }, + { "i-experts.nl", true }, { "i-fastnet.net", true }, { "i-forum.ga", true }, { "i-house.gq", true }, @@ -59817,6 +69247,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i-make-love.tk", true }, { "i-make.com", true }, { "i-make.fr", true }, + { "i-med.com.au", true }, { "i-model.org", true }, { "i-motor.nl", true }, { "i-office.com.vn", true }, @@ -59827,9 +69258,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i-prince.tk", true }, { "i-proswiss.com", false }, { "i-r-a.tk", true }, + { "i-readycentral.com", true }, { "i-red.info", true }, { "i-scream.space", true }, { "i-sports.cz", true }, + { "i-stream2watch.com", true }, { "i-telligence.de", false }, { "i-tm.com.tw", true }, { "i-tools.ru", true }, @@ -59842,12 +69275,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i0856.com", false }, { "i0day.com", true }, { "i10z.com", true }, - { "i1314.gdn", true }, + { "i1430.com", false }, { "i1place.com", true }, { "i24.host", true }, { "i2capmark.com", true }, { "i2education.com", true }, - { "i2gether.org.uk", true }, { "i2itherapy.com", true }, { "i2pgit.org", true }, { "i36533.com", true }, @@ -59860,15 +69292,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i4ware.fi", true }, { "i51365.com", true }, { "i5197.co", true }, - { "i5i5i58.com", true }, { "i5y.co.uk", true }, { "i5y.org", true }, { "i6729.co", true }, { "i6729.com", false }, { "i6957.co", true }, - { "i7.io", false }, + { "i7.io", true }, { "i7sas.tk", true }, - { "i81365.com", true }, { "i82365.com", true }, { "i879.com", true }, { "i88i.gq", true }, @@ -59877,11 +69307,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "i9397.com", false }, { "i9721.com", true }, { "i9728.co", true }, - { "i9elo.com", true }, { "i9s.in", true }, + { "ia.ca", true }, { "ia.net", true }, { "ia1000.com", true }, { "iaa.ee", true }, + { "iaata.info", true }, { "iab-diva.ru", true }, { "iabot.tk", true }, { "iacee.org", true }, @@ -59889,23 +69320,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iaco.li", true }, { "iacono.com.br", false }, { "iactu.info", true }, + { "iadb.org", true }, + { "iadminify.com", true }, { "iadore.tk", true }, { "iadttaveras.com", true }, - { "iaeste.no", true }, - { "iaeste.or.jp", true }, + { "iae.one", true }, { "iaf.gov", true }, - { "iahemobile.net", true }, + { "iaf.nu", true }, + { "iafd.com", true }, + { "iaforum.com.br", true }, + { "iafss2023.com", true }, { "iain.tech", true }, { "iainsimms.co.uk", true }, { "iainsimms.com", true }, { "iainsimms.me", true }, - { "ialis.me", true }, { "ialps.cn", true }, { "ialternatywne.pl", true }, - { "iam.lc", true }, + { "iam.lc", false }, { "iam.soy", true }, + { "iamafricacampaign.com", true }, { "iamafricacampaign.org", true }, + { "iamaileen.com", true }, { "iamanewme.com", true }, + { "iamattila.com", false }, { "iambhatti.tk", true }, { "iamcloud.de", true }, { "iamconnected.eu", true }, @@ -59914,25 +69351,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iaminashittymood.today", true }, { "iamjoshellis.com", true }, { "iamkate.com", true }, + { "iamlearning.co.uk", true }, { "iamlegend.ml", true }, { "iamlife.com", true }, - { "iamlizu.com", true }, - { "iamlzh.com", false }, + { "iamlzh.com", true }, { "iamokay.nl", true }, - { "iamreally.cool", true }, + { "iamovement.org", true }, { "iamsadmax.ga", true }, { "iamsainknight.tk", true }, { "iamsamaskom.tk", true }, + { "iamtam.tech", true }, { "iamtheib.me", true }, + { "iamthelife.io", true }, { "iamtonyarthur.com", true }, { "iamtrainsafe.co.uk", true }, { "iamusingtheinter.net", false }, - { "iamwill.io", true }, { "iamyourpillow.com", true }, { "ian-barker.co.uk", true }, { "ian.sh", false }, { "ian678.com", true }, { "ian678.tk", true }, + { "ianbeuchel.ddnss.de", true }, { "ianbrault.com", true }, { "iancu.io", true }, { "iancu.me", true }, @@ -59945,19 +69384,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ianmooreis.me", true }, { "ianmoriarty.com.au", true }, { "ians.lu", true }, - { "ianschulz.com.au", false }, { "iansyst.co.uk", true }, { "ianthompsonbooks.com", true }, { "ianwalsh.org", false }, - { "iap.network", false }, { "iapro.com", true }, - { "iapws.com", true }, + { "iapws.com", false }, { "ias-gruppe.net", true }, { "ias.ua", true }, { "iassess.eu", true }, { "iaswc.org", true }, { "iatfei.com", true }, { "iaudited.com", true }, + { "iav.com", true }, + { "iav.de", true }, { "iawx.net", true }, { "ib-kreindl.at", true }, { "ib-wedler.de", true }, @@ -59967,15 +69406,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ibacktraced.it", true }, { "ibadboy.net", true }, { "iban.com", true }, - { "ibarakisenkyohikaku.com", true }, { "ibavaro.com", true }, { "ibb.co", true }, + { "ibb.co.com", true }, + { "ibb.istanbul", true }, + { "ibbit.ro", true }, + { "ibc-container.be", true }, { "ibcl.us", true }, { "ibcmed.com", true }, { "ibcmed.net", true }, { "ibcmed.org", true }, { "ibe.de", true }, { "ibeep.com", true }, + { "ibei.ru", true }, { "ibemember3.com", true }, { "iberiaversicherungen.com", true }, { "ibericaderedes.es", true }, @@ -59990,48 +69433,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ibericarmovilsur.es", true }, { "ibericarreicomsa.es", true }, { "ibericartechnik.es", true }, - { "iberion.pl", true }, - { "ibertel.eu", true }, - { "ibestproduct.com", false }, + { "ibero.edu.co", true }, { "ibetora.com", true }, - { "ibexcore.com", true }, + { "ibex.co", true }, { "ibexmultiday.com", true }, + { "ibexpackaging.com", true }, { "ibexrepair.co.uk", false }, { "ibhgospel.com", true }, { "ibi.mt", true }, + { "ibidyoupeace.com", true }, { "ibiki-boushi-makura.net", true }, { "ibin.co", true }, { "ibinex.news", true }, + { "ibiu.xyz", false }, { "ibiz.mk", true }, - { "ibizaautohuur.nl", true }, { "ibizads.tk", true }, { "ibizaluxuryachts.com", true }, + { "ibk.at", true }, { "iblackfriday.ro", true }, { "ibliss.digital", false }, { "iblog.pk", true }, { "iblowdry.com", true }, { "iblsoft.com", true }, - { "ibmee.org", true }, + { "ibm.gov.in", true }, + { "ibmaspera.com", true }, + { "ibmix.de", true }, { "ibo-chemnitz.de", true }, { "iboat.eu", true }, { "ibodyiq.com", true }, - { "ibomma.asia", true }, - { "ibomma.org", true }, { "ibon.org", true }, { "iboy1069.com", false }, { "ibpegasus.tk", true }, { "ibps-recruitment.in", true }, { "ibpsrecruitment.co.in", true }, { "ibq.life", true }, + { "ibra.org.uk", true }, { "ibrainmedicine.org", true }, { "ibraphotography.com", true }, { "ibrom.eu", true }, { "ibron.co", false }, + { "ibsasport.org", true }, { "ibsglobal.co.za", true }, { "ibsis.org", true }, { "ibstyle.tk", true }, + { "ibtime.org", true }, { "ibu.ca", true }, { "ibug.io", true }, + { "ibuildings.com", true }, { "ibuildings.nl", true }, { "ibuki.run", true }, { "ibuprofens.gq", true }, @@ -60039,7 +69487,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ibuzz.tk", true }, { "ibwc.gov", true }, { "ibykos.com", true }, - { "ic-enable.com", true }, + { "ibz.be", true }, { "ic3.gov", true }, { "icafecash.com", true }, { "icams-portal.gov", true }, @@ -60047,20 +69495,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icanseeyou.tk", true }, { "icap.my", true }, { "icardistry.com", true }, + { "icaremoving.ca", true }, + { "icaremoving.com", true }, + { "icareofficesolutions.com", true }, { "icarlos.net", true }, { "icas-nsn.gov", true }, + { "icasas.mx", true }, + { "icasnetwork.com", true }, + { "icastgo.ca", true }, + { "icastgo.com", true }, { "icasture.top", true }, + { "icatt.nl", true }, { "icbemp.gov", false }, - { "icc.kharkov.ua", true }, + { "icca-chem.org", true }, { "icci.info", false }, { "iccorporateinteriors.com.au", true }, { "iccupplatoon.tk", true }, { "icddd.pl", true }, + { "icdisinfection.com.au", true }, { "icdp.org.ua", true }, + { "ice.org.uk", true }, { "icebat.dyndns.org", true }, { "iceberg.academy", false }, { "iceberg.cyou", true }, { "iceberg.ddns.me", true }, + { "icebike.org", true }, { "icebook.co.uk", true }, { "icebound.cc", true }, { "icebound.win", true }, @@ -60072,13 +69531,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icecreamika.tk", true }, { "icecutethings.com", true }, { "icedox.ga", true }, - { "icedream.tech", true }, + { "icedre.am", true }, + { "icedream.tech", false }, { "icedterminal.com", true }, { "icedterminal.me", true }, { "icedude.tk", true }, + { "iceewind.com", true }, { "iceflow.tk", true }, { "icefoxtee.com", true }, - { "icegate.gov.in", true }, { "iceheart.tk", true }, { "icehost.cf", true }, { "icekiller.ga", true }, @@ -60093,12 +69553,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icepharmaceuticals.com", true }, { "icerinkwarehouse.com", true }, { "icerockproperties.com", true }, - { "icesemulator.com", true }, { "iceshadow.tk", true }, { "icetechworld.com", true }, { "icetiger.eu", true }, { "icetravellers.com", false }, - { "icewoman.net", true }, { "icewood-bois.com", true }, { "ich-finde-wikipedia-toll.tk", true }, { "ich-hab-die-schnauze-voll-von-der-suche-nach-ner-kurzen-domain.de", true }, @@ -60106,6 +69564,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icharme.fr", true }, { "ichasco.com", true }, { "ichbinein.org", true }, + { "ichbinhuebi.de", true }, { "ichbinkeinfreier.com", true }, { "ichbinkeinreh.de", true }, { "ichglaubesbackt.de", true }, @@ -60117,12 +69576,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ichisound.ml", true }, { "ichitaka.tk", true }, { "ichitaso.com", true }, + { "ichkeria.info", true }, { "ichtroje.tk", true }, + { "ichuck.rocks", true }, { "ici-freewares.tk", true }, { "ici.ac.nz", true }, { "ici.ms", true }, { "ici.net.au", true }, { "icid.com.mx", true }, + { "icie.info", true }, { "icieducation.ca", true }, { "icieducation.co.uk", true }, { "icieducation.ie", true }, @@ -60131,7 +69593,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icims.eu", true }, { "icims.us", true }, { "icisontdesdragons.fr", true }, - { "icium.org", true }, { "ickerseashop.com", true }, { "icl82.systems", true }, { "iclart.com", true }, @@ -60143,62 +69604,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "icloud.st", true }, { "icloudlogin.com", true }, { "icmarket.com", true }, - { "icmhd.ch", false }, + { "icmp2018.org", true }, { "icmsjamaica.com", true }, { "icnc.ga", true }, + { "icnsk.ru", true }, { "icnsoft.org", true }, - { "ico.wf", true }, - { "icobench.com", true }, { "icodeconnect.com", true }, { "icoh.it", true }, { "icojapan.tokyo", true }, { "icollezionisti.com", true }, { "icolorpalette.com", true }, + { "icomuk.co.uk", true }, { "icon-art.nl", true }, { "icon-programming.tk", true }, + { "iconexperience.com", true }, { "iconintegration.com.au", true }, + { "iconique-menuiserie.be", true }, + { "iconmale.com", true }, { "iconoarte.tk", true }, { "iconomi.net", true }, + { "iconparkingsystems.com", true }, { "icons4free.tk", true }, + { "iconsiam.com", true }, { "iconsuppstore.com", true }, { "iconworld.ml", true }, { "iconx.ml", true }, { "iconz.tk", true }, - { "icosnet.com.dz", true }, + { "icounseling.com", true }, { "icountnm.gov", true }, { "icowhitepapers.co", true }, { "icpb.com.my", true }, { "icpc.pp.ua", true }, { "icpc2016.in.th", true }, + { "icpcorp.com", true }, { "icpe.nl", true }, { "icq-project.net", true }, { "icq-world.tk", true }, + { "icq.com", true }, { "icr-box.ddns.net", true }, + { "icrc.org", true }, { "icreative.nl", true }, { "icruise.com", true }, - { "ics.edu.hn", true }, + { "icsolutions.nl", true }, { "icst.tk", true }, + { "icsti.org", true }, { "ict-concept.nl", true }, { "ict-oldehove.nl", true }, - { "ict-radar.com", true }, - { "ict-radar.nl", true }, + { "ict-radar.com", false }, + { "ict-radar.nl", false }, { "ict.govt.nz", true }, { "ictbaneninnederland.nl", true }, - { "ictbiz.com.au", true }, { "ictcareer.ch", true }, + { "ictergezocht.nl", true }, + { "ictfreak.nl", true }, { "ictinforensics.org", true }, { "ictkaisha.be", true }, - { "ictmjc.com", true }, + { "ictl.eu", true }, { "ictoniolopisa.it", true }, - { "ictradar.com", true }, - { "icttindia.org", true }, + { "ictradar.com", false }, + { "icts.gov", true }, + { "icttindia.org", false }, { "icusignature.com", true }, { "icustomboxes.com", true }, { "icy.aq", true }, { "icyapril.com", true }, { "icycanada.com", true }, - { "icynet.eu", true }, { "icyrock.com", true }, + { "icytales.com", true }, { "iczc.cz", true }, { "icze4r.co", true }, { "icze4r.com", true }, @@ -60209,6 +69681,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iczer.one", true }, { "iczer.org", true }, { "id-blog.ch", false }, + { "id-trade.com.ua", true }, { "id.atlassian.com", false }, { "id.fedoraproject.org", false }, { "id.mayfirst.org", false }, @@ -60227,44 +69700,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "idarv.com", true }, { "idaspis.com", true }, { "idatalabs.com", false }, + { "idatownshipmi.gov", true }, + { "idawallen.com", true }, { "idblab.tk", true }, { "idbm.ch", true }, { "idbs.com", true }, { "idc-business.be", false }, { "idc.yn.cn", true }, { "idc95.com", false }, + { "idcat.cat", true }, { "idcrawl.com", true }, { "idcrushermachine.ga", true }, + { "idctechnologies.com", true }, { "idcwr.com", true }, - { "iddaatahmin6.com", true }, + { "iddaatahmin11.com", true }, { "iddaatahminleri.com.tr", true }, { "iddconnect.com", true }, { "iddconnect.org", true }, { "iddent.com.ua", true }, + { "iddportugal.pt", true }, + { "idea.ws", true }, { "ideadozz.hu", true }, { "ideafnd.com", true }, { "ideageek.net", true }, { "ideagenpentana.com", true }, - { "ideagenqpulse.com", true }, { "ideahub.tk", true }, { "ideahubnepal.org", true }, + { "ideaklinik.com", true }, + { "ideaklinikbursa.com", true }, { "ideaktiv.com", true }, { "ideal-reality.com", true }, { "ideal-social.com", true }, { "ideal.shop", true }, { "idealabs.tk", true }, { "idealadvogadosbh.com.br", true }, + { "idealbet.it", true }, { "idealbody.cf", true }, { "idealbody.gq", true }, - { "idealconsertosbh.com.br", true }, { "idealcontabilidade.net", false }, { "idealdedetizadorabh.com.br", true }, - { "idealgo.ca", true }, - { "idealidm.com", true }, { "idealimobiliariabh.com.br", true }, { "idealimplant.com", false }, { "idealize.ml", true }, + { "idealmature.com", true }, + { "idealmilf.com", true }, { "idealnastrona.pl", true }, + { "idealni-hypoteka.cz", true }, { "idealog.id", true }, { "idealresponse.co.uk", true }, { "idealsegurancaeletronica.com.br", true }, @@ -60273,25 +69754,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "idealtruss.com.tw", true }, { "idealucedifilippi.it", true }, { "idealwhite.space", true }, + { "idealwifes.com", true }, { "ideaplex.ca", true }, - { "idearumahidaman.com", true }, + { "ideas.com", false }, { "ideasdigitales2025.es", true }, { "ideasenfoto.com", false }, { "ideashop.com", true }, { "ideasinlab.com", true }, + { "ideau.pl", true }, { "ideaweb.de", true }, { "ideaweblab.com", false }, { "idec.com", true }, - { "ideditorial.com", true }, { "idee-geschenk.eu", true }, { "idee-lq.at", true }, { "idee-lq.ch", true }, { "idee-lq.com", true }, { "idee-lq.de", true }, { "idee-lq.net", true }, - { "ideeaanzee.tv", true }, { "ideefactory.de", true }, - { "idegrafico.com", false }, + { "ideericette.it", true }, + { "ideesrecettes.net", true }, { "idehvector.com", true }, { "ideiasefinancas.com.br", true }, { "ideice.gob.do", true }, @@ -60310,6 +69792,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "identity-hash.online", true }, { "identity-inspector.com", false }, { "identity-project.com", true }, + { "identity.aero", true }, { "identity.plus", true }, { "identityexperts.co.uk", true }, { "identityflashmob.com", true }, @@ -60321,6 +69804,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ideologiaycultura-ap.tk", true }, { "ideorealm.tk", true }, { "idered.net", true }, + { "ides.co.jp", true }, { "idesign.tk", true }, { "idesoft.cloud", true }, { "idesoft.com", true }, @@ -60328,23 +69812,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "idesoft.info", true }, { "idesoft.net", true }, { "idesoft.org", true }, + { "idesoftinnovacion.com", true }, { "idesoftinnovacion.es", true }, { "idev-hub.com", true }, + { "idev.games", true }, { "idevicesinc.com", true }, { "idexxpublicationportal.com", true }, { "idf64.com", true }, { "idf64.org", true }, + { "idfarm.co.kr", true }, { "idfc.gov", true }, - { "idgateway.co.uk", true }, { "idgr.de", true }, - { "idgs.my", true }, { "idheastudio.com", true }, + { "idhl.fr", true }, { "idhosts.co.id", true }, + { "idigovs.com", false }, { "idinby.dk", true }, { "idiomasdelmundo.tk", true }, { "idiomasdominados.tk", true }, - { "idiot.trade", true }, { "idioteque.tk", true }, + { "idjnow.com", true }, { "idkidknow.com", true }, { "idleleo.com", true }, { "idlemon.net", true }, @@ -60354,17 +69841,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "idmanagement.gov", true }, { "idmaster.ml", true }, { "idmobile.co.uk", true }, + { "idmod.org", true }, { "idn.gov.pt", false }, { "idndomain.tk", true }, { "idndx.com", true }, - { "idoc24.com", true }, + { "idnic.net", true }, { "idohost.tk", true }, { "idol-bikes.ru", true }, + { "idol4u.com", true }, { "idolf.dk", true }, { "idolfap.com", true }, { "idolish7.fun", false }, { "idoljp.com", true }, - { "idontexist.me", false }, { "idonthaveawebsite.tk", true }, { "idontplaydarts.com", true }, { "idoparadoxon.hu", true }, @@ -60375,26 +69863,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "idraulico-roma.it", true }, { "idraulico.roma.it", true }, { "idream-solutions.co.uk", true }, - { "idrgroup.com", true }, { "idrissi.eu", true }, + { "idroot.us", true }, { "idsafe.co.za", true }, + { "idsc.com.tw", true }, + { "idsconsulting.co.nz", true }, + { "idshield.cloud", true }, { "idstudio.tk", true }, + { "idta.com.au", true }, { "idtechnowizard.com", true }, { "idtheft.gov", true }, - { "idubaj.cz", true }, + { "idtrkarnal.com", true }, + { "idvchile.cl", true }, + { "idventure.de", true }, { "idvl.de", true }, { "idweblog.com", true }, + { "idwebsitehosting.com", true }, { "idwebtools.tk", true }, { "idxforza.com", true }, { "idyl.fr", true }, - { "idylls.net", true }, { "idysse.com", true }, { "ie.edu", true }, { "ie.search.yahoo.com", false }, - { "iechistore.com", true }, - { "iedn.net", true }, - { "ieeeaast.org", false }, - { "ieeedeis.org", true }, { "ieeesb.nl", true }, { "ieeesbe.nl", true }, { "ieeespmb.org", true }, @@ -60402,17 +69892,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iegatpracticetest.com", true }, { "ieiscccuba.tk", true }, { "ieji.de", true }, + { "iemail.eu.org", true }, { "iemb.cf", true }, { "iemc.pt", true }, { "iemsamex.com", true }, { "ienakacs.jp", true }, { "ienakanote.com", false }, { "ienekolife.net", true }, + { "ienergizer.com", true }, + { "ieomidi.com", true }, { "iepaiement.fr", true }, { "iepanywhere.com", true }, - { "ierei.net", true }, { "ieros.it", true }, { "ies-italia.it", false }, + { "iesegconseil.fr", true }, { "iesonline.co.in", true }, { "iesucreipi.edu.co", true }, { "iet.co.za", true }, @@ -60420,6 +69913,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ieval.ro", true }, { "ievgenialehner.com", true }, { "iewar.com", true }, + { "iexaminer.org", true }, { "iexpats.com", true }, { "if0.ru", true }, { "ifacservice.be", true }, @@ -60427,27 +69921,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ifailed.tk", true }, { "ifailedlife.tk", true }, { "ifaisalmukhtar.tk", true }, + { "ifamily.top", true }, { "ifan.ch", false }, { "ifan.ws", true }, { "ifangpei.cn", true }, { "ifangpei.com.cn", true }, { "ifasfest2022.com", true }, - { "ifashionable.info", true }, { "ifbagro.in", true }, { "ifcfg.jp", true }, - { "ifcfg.me", true }, - { "ifconfig.se", true }, { "ifconfig.tk", true }, + { "ifdb.org", true }, + { "ifdif.com", true }, { "ifederalland.com", true }, { "ifelse.io", true }, { "ifengge.cn", true }, + { "iffk.in", true }, { "ifgcdn.com", true }, { "ifh.cc", true }, { "ifibe.com", true }, { "ifisher.xyz", true }, { "ifleurs.com", true }, { "iflixtv.ga", true }, - { "iflyi.me", true }, + { "iflscience.com", true }, { "ifmilitaria.tk", true }, { "ifmsa-lahore.tk", true }, { "ifnet.fr", true }, @@ -60459,7 +69954,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iformbuilder.com", false }, { "ifort.fr", true }, { "ifosep.fr", false }, - { "ifoss.me", true }, + { "ifpe.edu.br", true }, + { "ifrabb.fr", true }, { "iframefinancement.be", true }, { "ifreemax.ml", true }, { "ifreetion.cn", true }, @@ -60482,16 +69978,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ig-plastik.tk", true }, { "ig.com", true }, { "ig.me", true }, + { "ig.solutions", true }, { "iga-semi.jp", true }, + { "igad.int", true }, { "igame.ml", true }, { "igamingaffiliateprograms.com", true }, + { "igamingdirectory.com", true }, { "igamingnews.com", true }, { "igamingnyheder.dk", true }, { "igamingpocketdirectory.com", true }, { "igamingsuppliers.com", true }, { "igarage.nl", false }, + { "igarchitects.com.au", true }, + { "igdb.com", true }, { "igdn.de", true }, - { "igeh-immo.at", true }, { "igenuinebeauty.co.jp", true }, { "igforum.tk", true }, { "igfwd.email", true }, @@ -60500,21 +70000,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iggprivate.com", true }, { "iggsoft.com", true }, { "iggsoftware.com", true }, - { "ighl.de", true }, { "igi-2.com", true }, { "igi.codes", false }, { "igiftcards.de", true }, { "igiftcards.nl", true }, { "igimusic.com", false }, + { "igiugig.gov", true }, { "igiveyouthisday.com", true }, - { "igk.nz", true }, + { "igk.nz", false }, { "igkabel.cf", true }, { "igkabel.ga", true }, { "igkabel.gq", true }, { "igkabel.ml", true }, { "igkabel.tk", true }, { "iglesiabelen.tk", true }, - { "iglesiadecristocba.tk", true }, { "iglesiaquecamina.tk", true }, { "igln.fr", true }, { "igloballaw.com", true }, @@ -60537,17 +70036,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ignatij.tk", true }, { "ignatovich.by", true }, { "ignatovich.me", true }, - { "ignaziobalboa.tk", true }, { "ignet.gov", true }, + { "ignite-reading.com", true }, { "ignite.cz", true }, { "ignitedmindz.in", true }, - { "ignitelocal.com", true }, - { "ignition.gg", true }, + { "igniteenergy.co.uk", true }, + { "igniteheatcool.com.au", true }, + { "ignytebrands.com", true }, { "igocarwraps.com", true }, + { "igootit.com", true }, { "igor-hristenko.tk", true }, { "igor-usov.tk", true }, { "igorandandre.com", true }, + { "igorlink.com", true }, { "igorrealestate.com", true }, + { "igorshishkin.com", true }, + { "igorshishkin.ru", true }, { "igorvisi.com", true }, { "igorvlasov.tk", true }, { "igorvracar.com", true }, @@ -60566,11 +70070,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "igrodrom-kvest.tk", true }, { "igromasikov.tk", true }, { "igrovoi-klub.tk", true }, + { "igrun.com", true }, + { "igrun80.com", true }, + { "igrun88.com", true }, + { "igrunplay.com", true }, { "igry-onlayn.ru", true }, { "igryalawar.tk", true }, { "igshop.ir", true }, { "igsmgmt.com", true }, - { "igstory.ir", true }, + { "igsoc.org", true }, + { "igt.com", true }, { "igualdaton.org", true }, { "iguanacruda.tk", true }, { "iguru.gr", true }, @@ -60578,6 +70087,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "igva.or.kr", true }, { "ih8sn0w.com", true }, { "iha6.com", true }, + { "ihacares.com", true }, { "ihackear.com", true }, { "ihacker.ai", true }, { "ihacklabs.com", false }, @@ -60587,32 +70097,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ihc.im", true }, { "ihcprofile.com", true }, { "ihdev.party", true }, + { "ihe-europe.net", true }, { "iheartguys.com", true }, { "iheartguys.net", false }, { "iheartguys.org", true }, + { "iheatwithoil.com", true }, { "ihempz.cz", true }, - { "ihgcontrolbook.com", true }, + { "ihersua.es", true }, { "ihk-onlinewahl2021.de", true }, { "ihkk.net", true }, { "ihls.world", false }, + { "ihmc.us", true }, + { "ihmmarketing.com", true }, { "ihmphila.org", true }, { "ihmsp.org", true }, + { "ihonk.com", true }, { "ihorizon.jp", true }, { "ihorvorotnov.com", true }, { "ihost.md", true }, { "ihostup.net", true }, { "ihouseu.com", true }, + { "ihr-finanzcockpit.de", true }, { "ihr-hausarzt-kleinmachnow.de", true }, - { "ihrb.com.br", true }, { "ihre-ernaehrung.de", true }, { "ihre-pflege-sachsen.de", true }, - { "ihredls.de", false }, { "ihrhost.com", true }, - { "ihri.ca", true }, { "ihsangans.my.id", true }, { "ihsolution.in", true }, - { "ihtdenisjaccard.com", true }, - { "ihydra.net", true }, + { "ihwanburhan.com", true }, + { "ii-f.ws", true }, + { "ii-vi.com", true }, { "ii.cx", true }, { "ii5197.co", true }, { "ii6729.co", true }, @@ -60622,17 +70136,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ii9397.com", false }, { "ii9721.com", true }, { "ii9728.co", true }, - { "iiax.net", true }, - { "iiax.org", true }, - { "iic.kharkov.ua", true }, { "iid.sg", true }, + { "iidb.org", true }, { "iideaz.org", true }, { "iiet.pl", true }, { "iig-order.com", true }, { "iii-coalition.us", true }, { "iiii.gq", true }, + { "iiii.loan", true }, { "iiii.ml", true }, { "iiij.ml", true }, + { "iiinhoj.com", true }, { "iiit.pl", true }, { "iimarckus.org", true }, { "iinehp.com", true }, @@ -60643,17 +70157,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iiong.com", true }, { "iipaynationofsantaysabel-nsn.gov", true }, { "iipvapi.com", true }, + { "iipython.cf", true }, + { "iir.com", true }, { "iis.net", true }, { "iisjy.cn", true }, - { "iismr.org", true }, + { "iispeed.com", true }, { "iisuss.gq", true }, { "iitala.fi", true }, { "iitneetprep.com", true }, { "iitowns.ir", true }, + { "iitranslation.com", true }, + { "iitrust.lk", true }, { "iiwbr.org", true }, { "iix.se", true }, { "ij.rs", true }, + { "ijaa.tn", true }, { "ijemin.com", true }, + { "ijianli.cn", true }, { "ijm.com", true }, { "ijmondlijn.nl", true }, { "ijmuiderstrand.tk", true }, @@ -60662,26 +70182,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ijsbaanwitten.nl", true }, { "ijsblokjesvormen.nl", true }, { "ijsclubtilburg.nl", true }, - { "ijsclubwanneperveen.nl", true }, { "ijsselglas.nl", true }, { "ijubt.cf", true }, { "ijunohana.jp", true }, + { "ijustlove2travel.com", true }, { "ijustwanttomeetmyheroes.com", true }, + { "ijzerwarenhandel.nu", true }, { "ika.monster", true }, { "ikachalife.com", true }, { "ikall.com", true }, { "ikall.net", true }, { "ikall.org", true }, { "ikama.cz", true }, + { "ikara.social", true }, { "ikari-san.tk", true }, { "ikaria.com.gr", true }, { "ikaros.tk", true }, + { "ikarus-itkurs.de", true }, { "ikasgela.com", true }, { "ikazumitsu.tk", true }, { "ikbenrichie.nl", true }, { "ikeacareers.co.uk", true }, { "ikebuku.ro", true }, - { "ikebukuro-shame.com", true }, { "ikedaquotes.org", true }, { "ikenmeyer.com", true }, { "ikenmeyer.eu", true }, @@ -60690,12 +70212,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ikeyless.com", true }, { "ikfloreer.nu", true }, { "ikhwanfillah.com", true }, + { "ikikiv.com", true }, { "ikiler.com", true }, { "ikimo9.com", true }, { "ikinokori-marketing.com", true }, { "ikiroutayhtye.fi", true }, { "ikisser.de", true }, { "ikiteker.org.tr", true }, + { "ikk-classic.de", false }, { "ikk.me", true }, { "ikkakujuku.work", false }, { "ikkatsu-satei.jp", true }, @@ -60705,25 +70229,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iklan-baris.gq", true }, { "iklan.tk", true }, { "iklanbaris.tk", true }, - { "iklipcollection.my.id", true }, - { "iklive.org", false }, { "ikmx.net", true }, { "iknet.top", true }, { "iknowd.org", true }, - { "ikools.com", true }, - { "ikootu.com", true }, + { "iknowthatgirl.com", true }, + { "ikonikjourney.com", true }, + { "ikootu.com", false }, + { "ikoreg.nl", true }, { "ikorekofi.com", true }, { "ikparis.com", true }, { "ikra24.in.ua", true }, { "ikrab.club", true }, - { "iks.moe", false }, + { "iks.moe", true }, { "iksi.cc", true }, { "iksi.me", true }, + { "iksworld.kr", true }, { "iktisatbank.com", false }, { "ikudo.top", true }, { "ikulist.me", true }, { "ikumi.us", true }, { "ikvts.de", true }, + { "ikwildjworden.com", true }, { "ikwileendomein.tk", true }, { "ikx.me", true }, { "ikymbo.com", true }, @@ -60732,6 +70258,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "il12thcourt.gov", true }, { "il2eu.com", true }, { "ila.fi", true }, + { "ila.tw", true }, { "ilab.health", true }, { "ilac101.com", true }, { "ilacrehberi.com", true }, @@ -60753,6 +70280,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilc999.com", true }, { "ilchaos.com", true }, { "ilconiglioblu.it", true }, + { "ilcorrieredellacitta.com", true }, { "ilcourthelp.gov", true }, { "ilctucson.com", true }, { "ildepu.tk", true }, @@ -60762,7 +70290,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ile-kalorii.pl", true }, { "ile-sapporo.jp", true }, { "ilearned.eu", true }, - { "ilearnerships.com", true }, + { "ilearningengines.com", true }, { "ileat.com", true }, { "ileci.de", true }, { "ileduguesclin.fr", true }, @@ -60774,11 +70302,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilformichiere.com", true }, { "ilfumoshop.ru", true }, { "ilg.ink", true }, + { "ilgazhaliyikama.com", true }, + { "ilgisaglik.com", true }, { "ilhan.name", true }, { "ilhansubasi.com", true }, { "ilhombek.ml", true }, + { "iliad78.net", true }, { "iliamna.media", true }, { "iliastsi.net", true }, + { "ilienonline.com", true }, { "ilife.bg", true }, { "iligang.cn", true }, { "iligang.com", true }, @@ -60787,7 +70319,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iligang.net", true }, { "iligang.net.cn", true }, { "iligang.xin", true }, - { "ilii.me", true }, { "ilikepenguins.tk", true }, { "ilikevaping.com", true }, { "ilikezo.tk", true }, @@ -60796,6 +70327,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilin.dk", true }, { "ilin.xyz", true }, { "iliny.hu", true }, + { "ilionsky.com", true }, { "iljadr.be", true }, { "ilkeakyildiz.com", true }, { "illaadventure.com", true }, @@ -60810,9 +70342,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "illerzell.de", true }, { "illich.cz", true }, { "illicitart.ca", true }, + { "illicitdigital.com", true }, + { "illicopresto.net", true }, + { "illinitechservice.com", false }, { "illinoiscaselaw.com", true }, { "illinoiscourtscommission.gov", true }, - { "illinoiseagle.com", true }, + { "illinoiseagle.com", false }, { "illinoishealth.tk", true }, { "illjinx.info", true }, { "illnation.tk", true }, @@ -60821,46 +70356,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "illsley.org", true }, { "illu.ee", true }, { "illubel.com", true }, + { "illumed.net", true }, { "illumepgh.com", true }, + { "illuminated-security.com", true }, { "illuminatelife.tk", true }, { "illuminaten.tk", true }, { "illuminaterecovery.com", true }, { "illuminationis.com", true }, { "illuminatisocietyworldwide.org", true }, + { "illuminatiwatcher.com", true }, { "illumini.io", true }, - { "illumis.com", true }, + { "illumis.com", false }, { "illusia.tk", true }, { "illusionephemere.com", false }, { "illusionsdoptique.com", true }, + { "illusionsix.com", true }, { "illusionunlimited.com", true }, + { "illusiveshop.com", true }, { "illustrate.biz", true }, { "illuxat.com", true }, { "illuzionclothing.com", true }, { "ilmaestro.net", true }, { "ilmainensanakirja.fi", true }, + { "ilmanifesto.it", true }, { "ilmataat.ee", true }, { "ilmcorp.com", true }, - { "ilmiobusinessonline.it", true }, { "ilmiogiardiniere.it", true }, + { "ilmubahasainggris.com", true }, { "iloft.xyz", true }, { "iloli.name", true }, { "ilona-france.tk", true }, - { "ilonajewelry.com", true }, { "ilondres.es", true }, { "ilonewolfs.com", true }, { "ilonpolku.fi", true }, { "ilouis.cn", false }, { "ilove.fish", true }, - { "ilove.rocks", true }, { "ilovecomputering.com", true }, { "ilovefanyi.win", true }, { "ilovefun.tk", true }, - { "ilovegrowingmarijuana.com", true }, { "iloveherb.ru", true }, { "ilovelwy.com", true }, { "iloveporn.ml", true }, { "ilovesamara.tk", true }, - { "iloveseo.com", true }, { "ilovesnow.ml", true }, { "ilovestickers.gr", true }, { "ilovethiscampsite.com", true }, @@ -60870,13 +70407,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ilpapaverodermohn.it", true }, { "ilpescara.it", true }, { "ilpiacenza.it", true }, - { "ilpl.me", false }, + { "ilpuntosano.it", true }, { "ilrg.com", true }, { "ils-savaient.fr", true }, + { "ils.lt", true }, + { "ilsalvagente.it", true }, + { "ilsaperedelgusto.it", true }, { "ilsedelangeforum.tk", true }, - { "iltec-prom.ru", true }, { "iltec.ru", true }, - { "iltisim.ch", false }, + { "iltis.live", true }, + { "iltis.rocks", true }, { "iltombolo.tk", true }, { "iltuogiardino.org", true }, { "ilug-ktm.tk", true }, @@ -60899,37 +70439,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "im-internet-geld-verdienen.tk", true }, { "im-razmakh.ru", true }, { "im-s.net", true }, - { "im2net.com", true }, { "im4h.de", true }, { "im4h.eu", true }, { "im4h.info", true }, { "im66.net", true }, { "ima-solutions.fr", true }, - { "imacs.org", false }, { "imadalin.ro", true }, { "image-cdn.co.uk", true }, { "image-drive.de", true }, { "image.hosting", true }, + { "image.ie", true }, { "image.tf", true }, + { "image.wtf", true }, { "image4arab.tk", true }, { "imagealbums.tk", true }, + { "imageav.com", true }, { "imagebin.ca", true }, { "imagecom.tk", true }, - { "imagecurl.com", true }, - { "imagecurl.org", true }, - { "imageessentialsweightloss.com", false }, { "imagefu.com", true }, { "imagen891.tk", true }, - { "imagenenmama.org", true }, { "imagenesdedibujosalapizfacilesdehacer.com", true }, { "imageproductions.ga", true }, + { "imagequix.com", true }, { "imagerecall.tk", true }, + { "imagerestorationcenter.com", true }, { "imagerive.ch", false }, { "imageshare.web.id", true }, { "imagesport.fr", true }, - { "imageurs.com", true }, + { "imagetostl.com", true }, { "imagevillage.ir", true }, { "imageworld.tk", true }, + { "imagex.graphics", true }, { "imaginair.es", true }, { "imaginarium.tk", true }, { "imaginary.ca", true }, @@ -60937,13 +70477,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imaginarymakings.me", true }, { "imaginationpathway.com", true }, { "imagine-programming.com", true }, + { "imaginebelfast.com", true }, { "imaginelab.club", true }, + { "imagineokla.gov", true }, { "imaginescape.tk", true }, + { "imaginethatevent.com", true }, { "imaginethefloor.tk", true }, { "imaginetricks.com", true }, - { "imagingstudio.co.uk", true }, + { "imagingstudio.co.uk", false }, { "imagosplasticsurgery.com", true }, - { "imagr.io", true }, { "imajavm.com", true }, { "imajjeans.com", true }, { "imakash.gq", true }, @@ -60953,50 +70495,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imanageproducts.co.uk", true }, { "imanageproducts.com", true }, { "imanageproducts.uk", true }, - { "imaneferiani.art", true }, - { "imanna.ru", true }, { "imanolbarba.net", true }, { "imanoles.ddns.net", true }, { "imap.support", true }, { "imap2imap.de", true }, { "imaple.net", true }, { "imaple.org", true }, + { "imara-reiki.de", true }, + { "imaret.com.tr", true }, { "imarkethost.co.uk", true }, - { "imarketing.courses", true }, { "imarketing.pe", true }, + { "imarketly.com", true }, { "imask.ml", true }, { "imask.tk", true }, - { "imason.com", true }, + { "imatraelekter.ee", true }, { "imawasn-consulting.com", true }, { "imaya.tk", true }, + { "imbd-pro.net", true }, { "imbdagency.com", true }, { "imbianchino.roma.it", true }, { "imbit.tk", true }, { "imboom.tk", true }, + { "imbri.tech", true }, { "imbrian.org", true }, { "imbunatatiri-logan.tk", true }, { "imbushuo.net", true }, { "imck.ml", true }, { "imcsi.cn", true }, { "imdaadapp.com", true }, + { "imdb-pro.com", true }, + { "imdb-pro.net", true }, { "imdb.com", true }, + { "imdb.me", true }, + { "imdb.pro", true }, + { "imdbpro.com", true }, + { "imdbresume.com", true }, + { "imdcc.net", true }, { "ime-a-tolerancia-eredmenye.club", true }, { "ime.moe", true }, { "imed.com.pt", true }, { "imed.pt", true }, + { "imedhospital.es", true }, { "imedi.it", true }, { "imediabay.com", true }, { "imediafly.com", true }, { "imediato.pt", true }, + { "imediatoonline.com", true }, { "imedikament.de", true }, - { "imeds.pl", true }, { "imeria.tk", true }, { "imerys-mineraux-decoratifs.com", true }, { "imesh-light.tk", true }, { "imex-dtp.com", true }, + { "imexm.mx", true }, { "imexmed.com.gt", true }, { "imfacademy.com", true }, + { "imfblog.com", true }, { "imforza.com", true }, + { "img.cm", true }, { "img.mg", true }, { "img.ovh", true }, { "img.ren", true }, @@ -61005,13 +70560,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imgen.top", true }, { "imgencrypt.com", true }, { "imgg.es", true }, + { "imgmodels.com", true }, { "imgo.ga", true }, { "imgo.tk", true }, { "imgup.co", true }, { "imguploaden.nl", true }, { "imhua.com", true }, { "imi-rhapsody.eu", false }, + { "imibo.com", true }, { "imicroscope.tk", true }, + { "imidge.com.ua", true }, + { "imigrasilampung.co.id", true }, { "imin.co", true }, { "imine.ru", true }, { "iminshell.com", false }, @@ -61022,6 +70581,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imitationjewelry.tk", true }, { "imitza.com", false }, { "imjo.in", true }, + { "imjustcreative.com", true }, { "imkerverein-moenchswald.de", true }, { "imkindofabigdeal.com", true }, { "imksk.com", true }, @@ -61034,11 +70594,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imlinan.net", true }, { "imlloyd.yt", true }, { "imlonghao.com", true }, + { "imls.gov", true }, { "immanuellutheranmedia.org", true }, - { "immartin.com", true }, { "immarypoppinsyall.tk", true }, { "immaterium.de", true }, - { "immatix.xyz", true }, { "immbruxelles.com", true }, { "immedia.net", true }, { "immedicohospitalario.es", true }, @@ -61048,15 +70607,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "immersionclub.tk", true }, { "immersionwealth.com", true }, { "immersivewebportal.com", true }, + { "immiboards.com", true }, { "immigrantdad.com", true }, + { "immigration-lawyers.co.nz", true }, { "immigrationdirect.com.au", true }, { "immijobs.co.uk", true }, { "immivest.com", true }, - { "immo-agentur.com", false }, + { "immo-agentur.com", true }, + { "immo-express.biz", true }, { "immo-israel.ltd", true }, { "immo-les-allees.com", true }, { "immo-ment.eu", true }, { "immo-passion.net", false }, + { "immo-spezial.eu", true }, + { "immo-spezial.org", true }, + { "immoaval.mobi", true }, { "immobiliarecolazzo.it", true }, { "immobilien-badlippspringe.de", true }, { "immobilien-in-istanbul.de", true }, @@ -61071,16 +70636,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "immobilienmakler-berlin-mahlsdorf.de", true }, { "immobiliensachverstaendiger-ludwigsburg.de", true }, { "immobiliensachverstaendiger-waiblingen.de", true }, + { "immobilienservice-website.de", true }, + { "immobilier-realiste.fr", true }, { "immobilier-swiss.ch", true }, { "immobilier.org.il", true }, { "immobilier92.net", true }, + { "immobilierlibourne.com", true }, + { "immobilo.de", true }, { "immocompar.com", true }, { "immoel101.com", true }, + { "immoexpress.org", true }, { "immoisrael.agency", true }, { "immoisrael.be", true }, { "immoisrael.ch", true }, { "immoisrael.co.il", true }, - { "immoisrael.com", true }, + { "immoisrael.com", false }, { "immoisrael.de", true }, { "immoisrael.eu", true }, { "immoisrael.fr", true }, @@ -61093,21 +70663,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "immomydesk.fr", true }, { "immoraldoctors.tk", true }, { "immortal-it.tk", true }, - { "immortal-pc.info", true }, { "immortal.org.in", true }, { "immortal.run", true }, { "immortalcorporation.tech", true }, { "immortallove.tk", true }, { "immortec.com", true }, { "immortol.tech", true }, + { "immortuos.live", true }, + { "immospezial.info", true }, { "immovisual.be", true }, + { "immtel.co", true }, + { "immtel.com", true }, { "immune.cf", true }, { "immunoboost.be", true }, + { "imoads.com", true }, { "imobile3.com", true }, { "imobiliare.tk", true }, + { "imobiliariamax.com.br", true }, + { "imobiliariamoema.com.br", true }, + { "imobiliariaprofit.com.br", true }, { "imobiliariarealdream.com.br", true }, { "imobilien.tk", true }, - { "imogarbe.com", true }, + { "imoe.fun", false }, { "imokuri123.com", true }, { "imolights.com", true }, { "imolights.net", true }, @@ -61116,27 +70693,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imoner.ga", true }, { "imoneynet.com", true }, { "imorano.it", true }, + { "imosthailand.com", true }, { "imouto.my", false }, { "imouto.ru", true }, { "imouyang.com", false }, { "imoveisavenda.rio.br", true }, - { "imoxin.net", true }, - { "impact-flash.com", true }, { "impact-lyon.fr", true }, { "impact-visual.tk", true }, + { "impact.com", true }, { "impact.health.nz", true }, { "impactartstudy.com", true }, + { "impactcomics.com.au", true }, { "impactdepth.com", true }, { "impacter.eu", true }, + { "impactovenezuela.com", true }, { "impactparcels.co.uk", true }, { "impactparcels.com", true }, { "impactpub.ch", false }, + { "impactyou-academy.nl", true }, + { "impactyou.nl", true }, { "impakho.com", true }, - { "impartesco.com", true }, + { "impalaparts.com", true }, + { "imparat.de", false }, + { "imparostobene.it", true }, { "impartner.com", true }, { "impas.se", true }, { "impay.one", true }, - { "impec-cable.com", true }, { "impeka.in", true }, { "impelup.com", true }, { "impendulo.org", true }, @@ -61144,23 +70726,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imperdin.com", true }, { "imperdintechnologies.com", true }, { "imperial-legrand.com", true }, + { "imperialcounty.org", true }, + { "imperialearth.com", true }, { "imperialfenceinc.com", true }, { "imperialfencestlouis.com", true }, { "imperialism.rip", true }, - { "imperialmiami.com", true }, + { "imperialne.gov", true }, { "imperials.family", true }, { "imperialteam.tk", true }, { "imperialwrestling.tk", true }, { "imperiodamodamiranda.com.br", true }, + { "imperiodeleones.cl", true }, { "imperiodigital.online", true }, { "imperiodosvinhos.com.br", true }, { "imperioth.com", true }, - { "imperiumglass.com.au", true }, { "imperiumnova.info", true }, { "imperivm-romanvm.com", true }, { "imperiyashop.tk", true }, { "impermeabilisationqc.com", true }, { "impex.com.bd", true }, + { "impexul.de", true }, { "impf.site", true }, { "impfung.cf", true }, { "impfung.site", true }, @@ -61169,16 +70754,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "impiantistica.org", true }, { "impiantofotovoltaico.roma.it", true }, { "impiricus.com", true }, - { "implantesdentalestopete.com.mx", true }, { "implantologiadentalgt.com", true }, { "implosion.tk", true }, { "implude.com", false }, { "impns.org", true }, { "imponet.com.ar", true }, - { "imporcayu.cl", true }, { "import-shopping.de", true }, { "importanteducation.tk", true }, - { "importeria.com", true }, { "importsagt.com", true }, { "importsem.com", true }, { "importsign.com", true }, @@ -61198,6 +70780,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imprensaglobal.com.br", true }, { "imprensaglobal.org", true }, { "imprenta-es.com", true }, + { "imprentamanonelles.com", true }, { "impresa-di-pulizie.milano.it", true }, { "impresa-di-pulizie.org", true }, { "impresa-pulizie.it", true }, @@ -61206,6 +70789,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "impresadipulizie.roma.it", true }, { "impresadipulizieantonella.com", true }, { "impresaedile.roma.it", true }, + { "impresaitalia.info", true }, { "impresapulizia.milano.it", true }, { "impresapuliziacleanproject.it", true }, { "impresapulizie.firenze.it", true }, @@ -61227,6 +70811,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "improvenerg.com", true }, { "improvetoyourself.ga", true }, { "improveyourvision.tk", true }, + { "improvingsleepnaturally.com", true }, { "impudence.tk", true }, { "impuls.tk", true }, { "impulse-clan.de", true }, @@ -61252,26 +70837,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "imtikai.ml", true }, { "imtikaib.ml", true }, { "imtools.gq", true }, + { "imunify360.com", true }, { "imusionforum.tk", true }, + { "imvod.cc", true }, { "imwalking.de", true }, { "imy.rs", false }, { "imychic.com", true }, - { "imydl.tech", true }, { "imyjy.cn", true }, - { "imyrs.cn", false }, - { "imyz.tw", true }, + { "imzye.me", true }, + { "in-1xbet.com", true }, { "in-bachelor.de", true }, { "in-books.tk", true }, { "in-crypto.tk", true }, { "in-depthoutdoors.com", true }, { "in-flame-team.com", true }, { "in-flames.com", true }, + { "in-line.ru", true }, { "in-love.tk", true }, + { "in-star.com.ua", true }, { "in-ua.com", true }, { "in.search.yahoo.com", false }, { "in.xero.com", false }, { "in10tion.com", false }, { "inaboutique.it", true }, + { "inagenciadigital.com", true }, { "inaji.com", true }, { "inakasoftware.com", true }, { "inakipsikologoa.com", true }, @@ -61284,10 +70873,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inanan.cf", true }, { "inanec.gq", true }, { "inaned.ga", true }, - { "inantrantung.com", true }, + { "inara.cz", true }, { "inares.org", true }, { "inarizona.tk", true }, - { "inazuma7.jp", true }, + { "inawisdom.com", true }, { "inbitcoin.it", true }, { "inblank.tk", true }, { "inbound.tk", true }, @@ -61296,19 +70885,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inboxceo.com", true }, { "inboxen.org", true }, { "inboxsms.tk", true }, - { "inbrand.agency", true }, + { "inboxxme.com", true }, + { "inbrain-api-v2.azurewebsites.net", true }, { "incarceratedwombats.com", true }, { "incarter.ga", true }, { "incaweb10.es", true }, { "ince.tools", true }, + { "incels.is", true }, + { "incels.wiki", true }, { "inceneritore.ga", true }, { "incentea.com", true }, { "incentivi.it", true }, { "inceptionband.tk", true }, { "incert.cn", true }, { "incertint.com", true }, + { "inchargeus.net", true }, { "inchcape-fleet-autobid.co.uk", true }, - { "inchealth.org", true }, { "inchenaim.com", true }, { "inchidi.id", true }, { "incident.dk", true }, @@ -61321,40 +70913,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inclusionhcpa.org", true }, { "inclusiv.nl", false }, { "incnjp.com", true }, + { "incognito.org.uk", true }, { "incoherent.ch", true }, { "income-earnings.tk", true }, { "incomeplus.tk", true }, { "incometaxbengaluru.org", true }, + { "incometaxindia.gov.in", true }, { "incometricks.tk", true }, { "incomewithdraw.tk", true }, { "incomfinance.tk", true }, { "incommon.io", true }, { "incompliance.de", true }, + { "inconkz.com", true }, { "inconsciente.tk", true }, - { "inconsult.com.au", true }, { "incontactmetjezelf.nl", true }, { "inconvietnam.vn", true }, + { "incorporatedstyle.com", true }, { "incowrimo.org", true }, { "incpak.com", true }, - { "incparadise.net", true }, { "incredibilis.tk", true }, { "incrediblenews.tk", true }, { "incrediblez.tk", true }, + { "increment.com", true }, { "incrementation.net", false }, + { "increso.it", true }, + { "increyble.com", true }, { "incrom.com", false }, { "inculate.tk", true }, - { "incursionlegends.com", true }, { "incurvy.de", true }, + { "incyte.com", true }, { "ind.ie", true }, - { "indasun.com", true }, { "indatable.com", true }, { "indecente.tk", true }, { "indeika.ml", true }, { "indeksonline.tk", true }, + { "indenturaswork.lt", true }, { "independenceliveers.ga", true }, { "independenceliveest.ga", true }, { "independencerecovery.com", true }, + { "independent-bank.com", true }, { "independent-operators.com", true }, + { "independent-photo.com", true }, { "independentadvicefinancial.ga", true }, { "independentbookshopers.ga", true }, { "independentbookshopest.ga", true }, @@ -61362,6 +70961,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "independentmoneyadvice.ga", true }, { "independentpartyofamerica.tk", true }, { "independenttravelcats.com", true }, + { "independenttribune.com", true }, { "independenza.tk", true }, { "independesk.com", true }, { "indevelopment.tk", true }, @@ -61369,6 +70969,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "index-education.net", true }, { "index-games.com", true }, { "index.law", true }, + { "indexbase.ru", true }, { "indexcesmad.cz", true }, { "indexhost.tk", true }, { "indexmarket.ga", true }, @@ -61377,18 +70978,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indexpert.es", true }, { "indexsalaire.be", true }, { "india-ennenga.ga", true }, + { "india-export.com.ua", true }, { "indiada.ru", true }, { "indiaexamresult.in", true }, + { "indiaexport.com.ua", true }, { "indiaflowermall.com", true }, { "indiafm.tk", true }, + { "indiainteriors.in", true }, { "indiainvestments.wiki", true }, - { "indialocaltours.com", true }, { "indiamistress.tk", true }, { "indian-elephant.com", true }, + { "indian-health-news.com", true }, { "indianaberry.com", true }, + { "indianacareerconnect.com", true }, + { "indianaffairs.gov", true }, { "indianafoundationpros.com", true }, { "indianahealth.tk", true }, - { "indianamoldrepairpros.com", true }, + { "indianajail.gov", true }, { "indianapolisnews.ml", true }, { "indianapolispsychologistsers.ga", true }, { "indianapolispsychologistsest.ga", true }, @@ -61398,9 +71004,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indianbeauty.ml", true }, { "indianbridalservices.com", true }, { "indianbrides.cf", true }, + { "indiancreekvillagepdfl.gov", true }, + { "indianculture.gov.in", true }, { "indiandramasonline.tk", true }, { "indianengineer.tk", true }, - { "indianerschmuck24.de", true }, { "indianet.tk", true }, { "indiangamingreport.com", true }, { "indianhairextension.tk", true }, @@ -61409,18 +71016,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indianlakepa.gov", true }, { "indianmasala4u.tk", true }, { "indianporn2.xxx", true }, + { "indianrelaypodcast.com", true }, { "indianriver.gov", true }, + { "indiantalents.in", true }, { "indiantechhunter.tk", true }, { "indianvirginhumanhair.tk", true }, { "indianwarriors.tk", true }, { "indianwomen.cf", true }, + { "indiapost.com", true }, + { "indiapostgdsonline.gov.in", true }, { "indiatechblogger.cf", true }, { "indiatourhelp.tk", true }, { "indiatravel.ml", true }, { "indiaviral.ga", true }, + { "indiavotekar.com", true }, { "indiawise.co.uk", true }, { "indiaworlddigital.tk", true }, + { "indico.io", true }, { "indico.tk", true }, + { "indicodata.ai", true }, + { "indicure.com", true }, { "indie.dog", true }, { "indiecat.tk", true }, { "indiecongdr.it", true }, @@ -61428,11 +71043,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indiemovementers.ga", true }, { "indiemovementest.ga", true }, { "indiereview.tk", true }, - { "indiesports.ph", true }, { "indievelopment.nl", true }, { "indieweb-endpoints.cc", true }, + { "indieweb.rocks", true }, { "indigartbeading.ca", true }, { "indigartbeading.com", true }, + { "indigenous.gov.au", true }, { "indigestiblesuppuration.tk", true }, { "indignes-strasbourg.tk", true }, { "indigo.pet", true }, @@ -61442,18 +71058,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indigojewelers.com", true }, { "indigopaints.be", true }, { "indigosakura.com", true }, - { "indigost.com", true }, - { "indigostudios.com", false }, + { "indigterms.com", true }, + { "indihome.co.id", true }, { "indika.pe", true }, { "indilens.com", true }, { "indimike.tk", true }, + { "indioca.gov", true }, { "indir2017.tk", true }, { "indirhadi.tk", true }, { "indirimkuponumarketim.com", true }, + { "indironline.com", true }, { "inditip.com", true }, { "inditoot.com", true }, - { "indivicloud.me", true }, - { "individualizedwellness.net", true }, + { "indivicloud.me", false }, { "individualobligation.com", true }, { "individuals.tk", true }, { "indiwebawards.tk", true }, @@ -61463,7 +71080,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indo-wiki.fr", true }, { "indo4life.tk", true }, { "indobo.com", true }, - { "indochina.io", false }, + { "indobrains.id", true }, { "indochinatravel.tk", true }, { "indodax.com", true }, { "indoetis-surneli.ga", true }, @@ -61471,31 +71088,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "indofountain.tk", true }, { "indogenius.org", true }, { "indogermantrade.de", true }, + { "indoglobenews.co.id", true }, { "indoidnews.ga", true }, { "indoittraining.com", false }, { "indonesiatrip.tk", true }, + { "indonesiax.co.id", true }, { "indoor-kletterwald.de", true }, + { "indoorlandmarks.com", true }, { "indopress.tk", true }, { "indorepack.com", true }, - { "indorsie.com", true }, { "indospot.ml", true }, { "indospot.tk", true }, { "indotravels.tk", true }, { "indovinabank.com.vn", true }, { "indovision.tk", true }, { "indramas.tk", true }, - { "indramdhani.net", true }, + { "indramdhani.net", false }, { "indranesia.tk", true }, { "indraq.tk", true }, - { "indst.eu", true }, + { "indreams.me", true }, { "indtwpmi.gov", true }, + { "induehorse.co.uk", true }, { "indumar.com", true }, { "indumentaria-arabe.tk", true }, { "indusap.com", true }, - { "indusfastremit-ca.com", true }, { "indusfastremit-us.com", true }, { "indusfastremit.com", true }, { "indust.me", true }, + { "industra.finance", true }, { "industreiler.com", true }, { "industreiler.com.br", true }, { "industriafranchini.com", true }, @@ -61503,9 +71123,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "industrial-ventilation.eu", true }, { "industrialalpinism.tk", true }, { "industrialcalibration.co.uk", true }, + { "industrialcomputers.com", true }, + { "industrialcontainer.com", true }, { "industrialgassprings.com", true }, + { "industrilokal.com", true }, + { "industrydecarbonization.com", true }, { "industryoutlaws.tk", true }, + { "industryskillsaustralia.org.au", true }, + { "indyandmeskincare.com.au", true }, { "indybay.org", true }, + { "indyperio.com", true }, { "indyroom.tk", true }, { "indyscouts.tk", true }, { "ineardisplay.com", false }, @@ -61514,26 +71141,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ineffect.net", true }, { "inefin.tk", true }, { "ineight.com", true }, - { "ineko.cc", true }, { "inertianetworks.com", true }, + { "inery.io", true }, { "inesfinc.es", true }, { "inesnutricion.com", true }, { "inessoftsec.be", true }, { "inet.se", true }, { "inetdesign.tk", true }, { "inethost.eu", true }, + { "inetinfo.io", true }, { "inetol.net", true }, - { "inetpub.cn", true }, { "inetserver.eu", true }, { "inetsoftware.de", true }, { "inetuser.tk", true }, + { "inetworking.it", true }, + { "ineuron.ai", true }, { "inevitavelbrasil.com.br", true }, { "inevo.com", true }, { "inevo.no", true }, - { "inex.one", true }, + { "inews.bg", true }, + { "inewsten.com", true }, + { "inex.one", false }, { "inexlog.fr", true }, { "inexpensivecomputers.net", true }, - { "inextmovies.link", true }, { "ineztheminiatureelephant.com", true }, { "inf-fusion.ca", true }, { "inf-it.com", true }, @@ -61542,16 +71172,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infamousguild.tk", true }, { "infans.be", true }, { "infantry.org.ua", true }, + { "infarktniki.ru", true }, + { "infarmbureau.com", true }, { "infcloud.com", true }, { "infectedvoice.tk", true }, - { "infectingthe.world", true }, { "infecyon.tk", true }, { "infelix.tk", true }, { "infelko.ru", true }, { "inference.biz.tr", true }, + { "inferencium.net", true }, { "inferiousbypasser.cf", true }, { "infermiere.roma.it", true }, - { "infernal.rs", true }, + { "inferse.com", true }, { "infertilitycure.tk", true }, { "inffin-portal.com", true }, { "inffin-portal.de", true }, @@ -61559,21 +71191,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infhosting.com.au", true }, { "inficom.org", true }, { "infidel.org", true }, + { "infidels.info", true }, + { "infidels.me", true }, { "infidels.org", true }, { "infidia.tk", true }, { "infiernoalgecireno.tk", true }, { "infihow.com", true }, + { "infinan.ru", true }, { "infineon-bipolar.com", true }, { "infinether.net", true }, { "infinifit.ca", true }, + { "infinifit.store", true }, { "infinipharm.com", true }, { "infinite.com", true }, { "infiniteautomation.com.au", true }, + { "infiniteid.com", true }, { "infinitelightofbeing.org", true }, { "infinitenews.cf", true }, { "infinitenews.ml", true }, { "infinitescript.com", true }, - { "infinitifxbrokers.com", true }, + { "infiniteserieslabs.com", true }, { "infinitiofallentownparts.com", true }, { "infinitiofaugustaparts.com", true }, { "infinitioflynnwoodparts.com", false }, @@ -61582,41 +71219,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infinito.tk", true }, { "infinitomarca.com", true }, { "infinitoporciento.tk", true }, + { "infinity-computer-systems.com", true }, { "infinity-uitvaartzorg.nl", true }, - { "infinity3dengine.com", true }, { "infinitybas.com", true }, { "infinitybc.se", true }, { "infinitybooksindia.in", true }, { "infinitybots.gg", true }, + { "infinitycleaningsolutionsfl.com", true }, + { "infinityels.com", true }, { "infinityengine.org", true }, { "infinityepos.co.uk", true }, { "infinityfaces.tk", true }, - { "infinityhts.com", true }, { "infinityname.tk", true }, { "infinityns.ca", true }, { "infinityonce.ml", true }, { "infinityrecruitinggroup.com", true }, - { "infinitysearch.co", true }, { "infinitysportsandfitness.in", true }, { "infinityvr.net", true }, { "infinityweb.com.au", true }, + { "infinum.com", true }, { "infirmieredevie.ch", false }, - { "infirmiers-montpellier.fr", true }, - { "infivalle.gov.co", true }, + { "infissiconvenienza.com", true }, { "infla-tables.tk", true }, { "inflammatory.tk", true }, { "inflanev.com", true }, { "inflatablehire-scotland.co.uk", true }, { "inflatablesny.com", true }, - { "inflatadays.co.uk", true }, { "inflatamania.com", true }, { "inflate-a-bubbles.co.uk", true }, { "inflatiecalculator.nl", true }, { "inflationstation.net", true }, + { "inflexa.com", true }, + { "inflexsys.com", false }, { "infloat.de", true }, + { "influencemobile.services", true }, + { "influencestaging.services", true }, + { "influentsolutions.ch", true }, { "influo.com", true }, { "influxus.com", false }, - { "info-bay.com", true }, { "info-beamer.com", true }, { "info-bolivia.tk", true }, { "info-compusciencetech.tk", true }, @@ -61633,20 +71273,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "info-sell.ml", true }, { "info-sys.tk", true }, { "info-tech.tk", true }, + { "info-thailand.ru", true }, { "info-usaha.tk", true }, + { "info.go.th", true }, { "info.gov", true }, { "info4camper.com", true }, { "infoaboutlawyers.com", true }, { "infoamin.com", true }, { "infoapis.net", true }, { "infobae.com", true }, + { "infobalkans.com", true }, + { "infobanca.es", true }, { "infobanglanet.tk", true }, { "infobasquet.tk", true }, - { "infobip.com", true }, { "infobiznes.cf", true }, { "infobiznes.ga", true }, { "infobiznes.tk", true }, { "infoblogs.pl", true }, + { "infoblox.com", false }, { "infobot.email", true }, { "infobot.eu", true }, { "infobot.nl", true }, @@ -61656,6 +71300,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infocanada.tk", true }, { "infocanicatti.tk", true }, { "infocapsol.com", true }, + { "infocision.com", true }, { "infocoin.es", true }, { "infocommsociety.com", true }, { "infocon.org", true }, @@ -61668,6 +71313,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infoduv.fr", true }, { "infoeccos.com", true }, { "infofamouspeople.com", true }, + { "infoflora.ch", true }, { "infofp.tk", true }, { "infogai.tk", true }, { "infogamesports.tk", true }, @@ -61685,44 +71331,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infoislamharian.tk", true }, { "infojeunes.fr", true }, { "infojmp.com", true }, + { "infokekinian.com", true }, { "infokesehatan.ga", true }, + { "infokik.com", true }, { "infoland.ml", true }, { "infolatin.com", true }, { "infolead.tk", true }, - { "infolearn.ir", true }, { "infolibertaire.net", true }, { "infomail-online.ml", true }, { "infomalin.fr", true }, { "infomarradi.it", true }, - { "infomate360.com", true }, { "infomax.gr", true }, { "infomeddnews.com", true }, { "infomexico.tk", true }, + { "infomikulcice.cz", true }, { "infomir.eu", true }, { "infomoney.com.br", true }, - { "infonova.com.br", true }, + { "infonet.fr", true }, { "infopaperiguatemi.com.br", true }, { "infopedia.tk", true }, + { "infopercept.com", true }, { "infopico.com", true }, { "infopreneur.blog", true }, - { "infoprofuse.com", true }, { "infopulse.com", true }, { "infopuntzorg.nl", false }, { "inforabota.tk", true }, - { "inforakyat.net", false }, { "inforata.com", true }, + { "inforegister.ee", true }, { "inforeviews.ru", true }, { "inforge.tk", true }, - { "inforges.es", true }, + { "inforges.es", false }, + { "inform-software.com", true }, { "informace-zbozi.cz", true }, { "informaciondeciclismo.com", true }, - { "informasi-teknologi.com", false }, + { "informacionsexual.com", true }, + { "informalflowers.com", true }, { "informasidumay.gq", true }, { "informat.ga", true }, { "informaticapremium.com", false }, { "informaticien.tk", true }, { "informaticmousset.tk", true }, - { "informatico.pt", true }, { "informaticoalicante.tk", true }, { "informaticolamancha.tk", true }, { "informatiger.net", true }, @@ -61731,11 +71379,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "informationdoorers.ga", true }, { "informationdoorest.ga", true }, { "informationinhindi.tk", true }, + { "informationliteracy.gov", true }, + { "informationntechnology.com", true }, { "informationrx.org", true }, { "informations-echafaudages.com", true }, { "informationsarchiv.net", true }, { "informationsaveers.ga", true }, { "informationsaveest.ga", true }, + { "informatique-13.com", true }, + { "informatiquenevers.fr", true }, { "informator.tk", true }, { "informelles.tk", true }, { "informnapalm.org", true }, @@ -61745,12 +71397,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infortheride.com", true }, { "infosactu.com", true }, { "infoschool.ml", true }, - { "infosec-handbook.eu", true }, - { "infosec.ch", true }, + { "infosec-handbook.eu", false }, { "infosec.exchange", true }, + { "infosec.md", true }, { "infosec.mv", true }, { "infosec.pizza", true }, { "infosec.wiki", true }, + { "infoseccenter.ro", true }, { "infosecchicago.com", true }, { "infosecdecompress.com", true }, { "infosecsw.ca", true }, @@ -61761,11 +71414,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infoserp.net.pe", true }, { "infosolution.biz", true }, { "infosoph.org", true }, + { "infostor.com", true }, { "infosubasta.es", true }, { "infosysta.com", true }, { "infosystem.cf", true }, { "infotabla.si", true }, - { "infotainworld.com", true }, { "infotax24.com.pl", true }, { "infotectsecurity.com", true }, { "infoteka.cf", true }, @@ -61773,14 +71426,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infoternet.com.pl", true }, { "infotics.es", true }, { "infotune.nl", true }, + { "infotv.io", true }, { "infotype.ga", true }, + { "infouspekh.ru", true }, { "infovb.org", true }, + { "infoventas.store", true }, { "infovision-france.com", true }, { "infowaywebsolutions.com", true }, { "infoweb.ee", true }, { "infowheels.tk", true }, { "infoworm.org", true }, - { "infra-apparel.com", true }, + { "infozona.com.ar", false }, { "infra-se.com", true }, { "infra-voice.hu", true }, { "infra.beer", true }, @@ -61832,6 +71488,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infranoto.com", true }, { "infranox.com", true }, { "infrapass.com", true }, + { "infrapedia.ch", true }, { "infrapeer.com", true }, { "infrapilot.com", true }, { "infraping.com", true }, @@ -61841,6 +71498,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infrarank.com", true }, { "infrarate.com", true }, { "infrareader.com", true }, + { "infrareal.com", true }, + { "infrareal.de", true }, { "infraredradiant.com", true }, { "infras.fr", true }, { "infrasend.com", true }, @@ -61855,17 +71514,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "infravideo.com", true }, { "infravoce.com", true }, { "infravoice.com", true }, + { "infraware.com", true }, { "infrazine.com", true }, { "infrontusa.com", true }, { "infruction.com", true }, { "infstudios.nl", true }, { "infuse-mn.gov", true }, { "infusemedia.com", true }, - { "infusion.com", true }, { "ing", true }, { "ing-buero-junk.de", true }, + { "ing.dk", true }, { "ingalabs.hu", true }, { "ingatlanjogaszok.hu", true }, + { "ingatlankaland.hu", true }, { "ingatlanneked.hu", true }, { "ingbusiness.pl", true }, { "inge-deco.com", true }, @@ -61874,31 +71535,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ingegnereambientale.tk", true }, { "ingemmologie.com", true }, { "ingeni.ink", true }, - { "ingenias.es", true }, { "ingenieriaclinica.org", true }, + { "ingenieure-website.de", true }, { "ingenious-development.tk", true }, { "ingenium.si", true }, { "ingeniumsociety.tk", true }, { "ingenius.ws", true }, + { "ingenuitycloudservices.com", true }, { "ingerhy.com", true }, { "ingermany.ml", true }, + { "ingersolltwpmi.gov", true }, + { "inges-kattehjem.dk", true }, { "ingeseratlantica.es", true }, { "ingestion.life", true }, { "ingfreelancer.com", true }, { "inghamcountymi.gov", true }, + { "ingilizceturkce.gen.tr", true }, { "ingjobs.ch", true }, { "inglebycakes.co.uk", true }, - { "inglesatutiempo.com", true }, { "inglesencanada.cf", true }, { "inglesfoco.com.br", true }, + { "inglesideonthebaytx.gov", true }, { "inglesnarede.com.br", true }, { "inglessantacruz.tk", true }, { "inglestotal.tk", true }, { "ingo-schlueter.de", true }, - { "ingolonde.pw", true }, { "ingoschlueter.de", true }, + { "ingrain-ed.com", true }, + { "ingrammicrocloud.com", true }, { "ingresatupedido.com", true }, - { "ingresomedicina.com", true }, { "ingresosautomaticos.tk", true }, { "ingresospasivosyafiliados.online", true }, { "ingridbai.me", true }, @@ -61909,31 +71574,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ingushetia.tk", true }, { "ingwaz.org", true }, { "inhabitgroup.com", true }, + { "inhale.it", true }, { "inhaltsangabe.de", true }, { "inhere.cf", true }, { "inherfeet.ml", true }, - { "inhisword.life", true }, { "inhoff.eu", true }, { "inhomedesign.ro", true }, { "inhouseents.co.uk", true }, { "inhousehr.nl", true }, - { "inicio.site", true }, { "iniiter.com", true }, { "iniitian.com", true }, + { "inilabs.xyz", true }, { "inima.org", true }, + { "inimicalpart.com", true }, { "inin.gq", true }, { "init.blog", true }, - { "init.de", true }, { "init.ink", true }, { "init3.cn", true }, { "initblogger.com", true }, - { "initiative-digitalisierung-kmu.de", true }, + { "initiative20x20.org", true }, { "initq.net", true }, { "initramfs.io", true }, { "initrd.net", true }, + { "injerry.com", true }, { "injigo.com", false }, - { "injoicreative.com", true }, - { "injuryclinics.com.au", true }, { "injurylawyers.com", true }, { "injust.cf", true }, { "injust.ga", true }, @@ -61941,18 +71605,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "injust.me", true }, { "injust.ml", true }, { "injust.tk", true }, - { "inkable.com.au", true }, { "inkandtonerni.co.uk", true }, + { "inkbeau.com", true }, { "inkblogdb.com", true }, { "inkblot.art", true }, { "inkbunny.net", true }, { "inkburners.ga", true }, { "inkburnest.ga", true }, { "inkdawgz.com", true }, + { "inkdrop.co.za", false }, { "inkeliz.com", true }, - { "inker.in", true }, { "inkerotic.com", true }, { "inkerz.com.br", true }, + { "inkforall.com", true }, { "inkhor.se", true }, { "inkhub.com.au", true }, { "inkjets-inks.tk", true }, @@ -61972,36 +71637,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inkubatori.tk", true }, { "inkurz.de", true }, { "inkvisual.tk", true }, - { "inkwall.co", true }, { "inlabo.de", true }, { "inlimiters.ga", true }, { "inlimitest.ga", true }, { "inline-online.tk", true }, { "inline-sport.cz", true }, - { "inlinea.ch", true }, { "inlineskates.tk", true }, - { "inlineskating.ga", true }, { "inlink.ee", true }, { "inlink.ltd", true }, { "inlocon.de", true }, - { "inlovechocolate.store", true }, - { "inlt.cc", true }, { "inlt.com", true }, { "inmaaa.cf", true }, { "inmamaskitchen.com", true }, { "inmaps.xyz", true }, { "inmatefinancial.com", true }, + { "inmateintake.com", true }, { "inmedic.pl", true }, { "inmemoria.tk", true }, { "inmemorium.tk", true }, { "inmemoryofdaniella.com", true }, + { "inmigracion-florida.com", true }, { "inmobanking.com.gt", true }, { "inmobiliaria-sanpablo.cl", true }, + { "inmobiliariamarino.com", true }, + { "inmobiliariaredimido.com", true }, { "inmobillium.fr", true }, { "inmonteblandinio.be", true }, { "inmoodforsex.com", true }, { "inmoterrenas.com", true }, { "inmotionmktg.com", true }, + { "inmoveskates.com", true }, { "inmucrom.com", true }, { "inmucrom.es", true }, { "inmuseworld.tk", true }, @@ -62011,7 +71676,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "innatocol.com", true }, { "inncoaching.nl", true }, { "inner-vision.tk", true }, - { "innercamp.com", true }, { "innerdarkside.tk", true }, { "innerfence.com", true }, { "innerlife.company", true }, @@ -62021,36 +71685,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "innermostparts.org", true }, { "innerpeace.tk", true }, { "innersafe.com", true }, + { "innerspace.ae", true }, { "innertrip.co.kr", true }, { "innico.cf", true }, { "inniger.be", true }, { "innio.com", true }, + { "innisfildental.com", true }, { "inno.ch", false }, { "innocence.org.cn", false }, { "innocenceseekers.net", true }, { "innogames.com", true }, { "innogames.de", true }, - { "innogs.space", true }, { "innohb.com", true }, { "innolabfribourg.ch", true }, { "innopharmaeducation.com", true }, { "innopharmatechnology.com", true }, - { "innotec.security", true }, + { "innosol.hu", true }, + { "innosysdelft.com", true }, + { "innot.net", true }, { "innoteil.com", true }, { "innoteknology.com", true }, - { "innotel.com.au", true }, + { "innov.in", true }, { "innova-online.at", true }, + { "innova-scape.info", true }, { "innova360.com.mx", true }, { "innovacoachgroup.com", true }, - { "innovadis.com", false }, - { "innovae.eu", true }, + { "innovae.eu", false }, { "innovairservices.ch", false }, { "innovamag.com", true }, { "innovaptor.at", true }, { "innovaptor.com", true }, + { "innovasistemas.com", true }, + { "innovaspain.com", true }, { "innovate-indonesia.com", true }, { "innovateohio.gov", true }, { "innovateohioplatform.gov", true }, + { "innovation-for-a-mission.com", true }, { "innovation-workshop.ro", true }, { "innovation.gov", true }, { "innovationbranding.ga", true }, @@ -62061,52 +71731,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "innovativeactors.com", true }, { "innovativebuildingsolutions.co.za", true }, { "innovativeideaz.org", true }, - { "innovativesportsurfacing.com", true }, + { "innovativetrials.com", true }, { "innovativeunderwriters.com", true }, + { "innoventity.in", true }, + { "innoventures.cl", true }, { "innover.se", true }, { "innoviahome.com", false }, { "innovomuebles.com", true }, { "innovum.cz", true }, { "innowire.tk", true }, + { "innsaimonitor.com", true }, { "innsalzachsingles.de", true }, { "innvisiondesign.net", true }, { "innwan.com", true }, { "inoa8.com", true }, { "inoapps.com", true }, + { "inocelda.com", true }, { "inoio.de", true }, { "inomics.com", true }, { "inondation.ch", false }, + { "inorbit.io", true }, + { "inorden.se", true }, { "inoreader.com", true }, { "inoruhana.com", true }, + { "inosek.com", true }, { "inostudio.com", true }, { "inostudio.ru", false }, { "inotecsoftware.com", true }, { "inourtime.cn", true }, - { "inova.business", true }, { "inovalon.com", true }, + { "inovalon.global", true }, { "inovasirumahku.tk", true }, { "inovatec.ca", true }, { "inovatec.com", true }, + { "inovatecapi.com", true }, { "inovatecsystems.com", true }, { "inovigo.ro", true }, { "inovitec.ro", true }, { "inox-deurtrekkers.be", true }, { "inoxandco.com", true }, { "inoxdvr.com", true }, + { "inparkmagazine.com", true }, { "inpas.co.uk", true }, - { "inpatec.com", true }, + { "inpasa.com.br", true }, { "inpdp.tk", true }, { "inpector.de", true }, - { "inpertekshop.com", true }, + { "inposia.com", true }, { "inpresso.pl", true }, { "inprosy.com", true }, - { "inprotec.com.co", true }, { "inpsyde.com", true }, { "inpulsetech.io", true }, - { "input.club", true }, - { "input.pt", true }, { "input.sh", true }, - { "inputclub.com", true }, + { "inputdriven.com", true }, { "inputmodes.com", true }, { "inqorp.ca", true }, { "inquant.de", true }, @@ -62118,8 +71794,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ins-kreativ.de", true }, { "ins.to", false }, { "ins1gn1a.com", true }, + { "insame.space", false }, { "insanb.com", true }, + { "insancendekiams.sch.id", true }, { "insane.zone", true }, + { "insaneair.co.uk", true }, { "insanedevs.com", true }, { "insanepyro.tk", true }, { "insanity.zone", true }, @@ -62130,14 +71809,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inscribeinternal.com", true }, { "inscribeusercontent.com", true }, { "inscripcionessena.com", true }, - { "insecret.trade", true }, + { "inscriu.ro", true }, { "insecret.ua", true }, { "insecure.org.je", true }, { "insegne.roma.it", true }, + { "inserior.com", true }, { "inserta.tk", true }, { "insertcoins.net", true }, + { "insertcredit.com", true }, { "insertface.com", true }, - { "inserzioniticino.ch", true }, + { "insertnext.com", true }, { "inshapenutrition.com.br", true }, { "inshared.nl", true }, { "inshop.hu", true }, @@ -62146,7 +71827,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inside-the-outside.com", true }, { "insideastronomy.tk", true }, { "insideaudit.com", true }, - { "insideavanade.com", true }, { "insidebeach.com.br", true }, { "insidebedroom.com", false }, { "insideevs.com", true }, @@ -62155,7 +71835,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "insideevs.de", true }, { "insideevs.fr", true }, { "insideevs.ru", true }, - { "insidegroup.cl", true }, + { "insidegnss.com", true }, { "insidehook.com", true }, { "insideofgaming.de", true }, { "insideperu.tk", true }, @@ -62169,12 +71849,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "insiderx.com", true }, { "insidethefirewall.tk", true }, { "insidetheigloo.com", true }, + { "insidetheloudhouse.com", true }, { "insideview.com", true }, { "insighti.com", true }, { "insights.is", true }, { "insights.plus", true }, + { "insightsoftware.com", true }, { "insignificant.space", true }, - { "insinex.pl", true }, { "insinuator.net", true }, { "insistel.com", true }, { "insolent.ch", true }, @@ -62183,37 +71864,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "insomniac.pl", true }, { "insomniac.ro", true }, { "insomniachelp.com", true }, - { "insomniasec.com", true }, + { "insono.no", true }, { "insotech.eu", true }, { "insouciant.org", true }, - { "inspektre.com", true }, + { "inspektre.com", false }, { "inspektre.io", true }, { "inspirascholen.be", true }, - { "inspiratienodig.nl", true }, + { "inspiration.gr", true }, + { "inspirationalstories.com", true }, { "inspirationalstories.tk", true }, - { "inspiratorysolutions.com", true }, { "inspire-av.com", true }, { "inspire2rise.com", true }, - { "inspireaanmerking.nl", true }, { "inspired-builds.co.uk", true }, { "inspired-creations.co.za", true }, + { "inspired-lua.org", true }, + { "inspiredbyannefrank.com", true }, { "inspiredelements.co.uk", true }, { "inspiredhousewife.com", true }, { "inspiredlife.fun", true }, - { "inspiredrealtyinc.com", true }, - { "inspireincomeimpact.com", true }, + { "inspireplanner.com", true }, + { "inspiresesexshop.com.br", true }, { "inspiresurgery.com", true }, - { "inspireteenhealth.com", true }, { "inspirez-vous-sophro.com", true }, { "inspiringtips.com", true }, { "inspirithealth.ca", true }, + { "insportline.lt", true }, { "inspreeveryone.ga", true }, { "insrt.uk", false }, { "insside.net", true }, + { "insst.es", true }, { "insta-viewer.ml", true }, + { "instacart.careers", true }, { "instacart.com", true }, { "instachina.ru", true }, { "instacredito.pt", true }, + { "instadapp.io", true }, { "instafind.nl", true }, { "instaforex.com.ng", true }, { "instafrases.net", true }, @@ -62227,20 +71912,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "instagraph.cn", true }, { "instahub.net", true }, { "instalamosyreformamos.es", true }, + { "installation-hotte-cuisine.com", true }, { "installation-of-xenon.tk", true }, { "installgentoo.net", true }, - { "instamojo.com", true }, { "instances.social", true }, { "instanse.nl", true }, { "instant-clearance-sale.co.uk", true }, { "instant-hack.com", true }, { "instant-hack.io", true }, + { "instant-hack.to", true }, { "instant-thinking.de", false }, { "instant.io", true }, { "instantdomainsearch.com", true }, { "instantessay.tk", true }, { "instantfinishers.ga", true }, { "instantfinishest.ga", true }, + { "instantinsightinc.com", true }, { "instantintegrationers.ga", true }, { "instantintegrationest.ga", true }, { "instantkhabar.com", true }, @@ -62253,27 +71940,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "instantprint.co.uk", true }, { "instantreplay.tk", true }, { "instantsiteaudit.com", true }, - { "instareeldownload.com", true }, { "instava.cz", true }, { "instawi.com", true }, { "instawierszyki.pl", true }, { "instead.com.au", true }, - { "insteadmobilier.fr", true }, { "insteagle.com", true }, { "instelikes.com.br", true }, { "instem.jp", true }, { "instics.com", true }, { "instinct-nature.fr", true }, - { "instinctive-archery.de", true }, + { "instinctive-archery.de", false }, { "institut-coiffureetnature.fr", true }, { "institut-confucius-montpellier.org", true }, + { "institutchroma.fr", true }, { "instituto18denoviembre.tk", true }, + { "institutoclaro.org.br", true }, + { "institutoconsulplan.org.br", true }, + { "institutodyn.com", true }, { "institutoessencia.com", true }, { "institutogiuseppe.com", true }, { "institutogiuseppe.com.ar", true }, { "institutolancaster.com", true }, + { "institutoliderar.edu.co", true }, { "institutomaritimocolombiano.com", true }, - { "institutomarketingdigital.net", true }, + { "institutulcultural.ro", true }, { "instocktho.cc", true }, { "instructorcarders.ga", true }, { "instrukci.tk", true }, @@ -62283,39 +71973,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "instrumentodepaz.com", true }, { "instylecollection.tk", true }, { "instytut.tk", true }, + { "instytutwellsense.pl", true }, { "insulationchicagoil.com", true }, { "insulations.ga", true }, + { "insulectro.com", true }, { "insult.es", true }, { "insultband.tk", true }, + { "insultniki.ru", true }, { "insurance", true }, { "insurance-companies.tk", true }, { "insurance24.online", true }, { "insurancebloggingers.ga", true }, { "insurancebloggingest.ga", true }, { "insurancebonzer.ga", true }, + { "insurancebusinessmag.com", true }, { "insuranceclassic.ga", true }, { "insurancecompanylive.tk", true }, + { "insurancehotline.com", true }, { "insuranceleep.ga", true }, { "insurancenews.gq", true }, { "insurancequotes.tk", true }, { "insurancesaman.tk", true }, { "insurancesquaders.ga", true }, { "insurancesquadest.ga", true }, + { "insurancevlog.in", true }, { "insuranceweb.ga", true }, + { "insurebot.com.au", true }, { "insurebuysers.ga", true }, { "insurebuysest.ga", true }, { "insured-event.tk", true }, { "insuredcloud.ga", true }, + { "insuredonline.in", true }, { "insuremycar.ru", true }, { "insureon.com", true }, - { "insurepays.com", true }, { "insurethebox.tk", true }, { "insurgent.tk", true }, + { "insurgo.cloud", true }, { "insurrectosdelbosque.tk", true }, { "insyde.cloud", true }, - { "insytesecurity.nl", true }, + { "insyde.com", true }, + { "insydesw.com", true }, { "inszu.com", false }, + { "int-elektro.eu", true }, { "int-ext-design.fr", true }, + { "int-refer.nhs.uk", true }, { "int64software.com", true }, { "intab.io", true }, { "intafe.co.jp", true }, @@ -62326,7 +72027,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intarweb.ca", true }, { "intasky.cz", true }, { "intasky.sk", true }, - { "intdemocratic.org", true }, { "inte.ru", true }, { "inteapuestas.com", true }, { "intechdaybcp.com", true }, @@ -62334,21 +72034,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "integra-belgium.be", true }, { "integrafin.co.uk", true }, { "integrahealth.com.mx", true }, + { "integral-calculator.com", true }, + { "integral-calculator.ru", true }, { "integralblue.com", true }, { "integralcare.org", true }, { "integralkk.com", true }, + { "integralrechner.de", true }, + { "integralschool.ru", true }, { "integrammes.fr", true }, { "integratedbms.co.za", true }, { "integratedmedicalonline.com", true }, - { "integratemyschool.com", true }, + { "integratedphysio.com.au", true }, { "integration-mouvements-oculaires.com", true }, + { "integrativepsychiatry.co.il", true }, + { "integrator.io", true }, + { "integrisaviation.com", true }, { "integritet.com.se", true }, { "integritree.ca", true }, { "integrity.gov", true }, - { "integritygeeks.com", true }, + { "integritydetail.com", true }, + { "integrityfirstloans.com", true }, { "integrityglobal.com", true }, + { "integrityhomecontractors.com", true }, { "integrityingovernmentidaho.com", true }, { "integritykrakow.pl", true }, + { "integrityline.com", true }, { "integritymedicalwaste.com", true }, { "integrityokc.com", true }, { "integrityoklahoma.com", true }, @@ -62358,21 +72068,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intel.gov", true }, { "intel69.cf", true }, { "intelalumni.org", true }, - { "intelghost.com", true }, + { "intelcapital.com", true }, + { "intelekta.es", true }, + { "intelhost.cl", true }, + { "intelhost.com", true }, { "intelhost.com.br", true }, + { "intelhost.com.co", true }, + { "intelhost.com.mx", true }, + { "intelhost.com.pe", true }, { "intelhost.net", true }, + { "intelics.com.au", true }, { "intelius.cf", true }, { "intellar.com", true }, { "intelldynamics.com", true }, { "intellecta.is", true }, { "intellective.us", true }, + { "intellectmoney.ru", true }, + { "intellego.de", true }, { "intellek.io", true }, { "intellektuaalomand.ee", true }, { "intelliance.eu", true }, { "intellicore.cl", true }, + { "intellicyb.com", true }, { "intelligence-explosion.com", true }, + { "intelligenceia.fr", true }, { "intelligenetics.com", false }, - { "intelligentcontacts.com", true }, { "intelligentnegotiator.com", true }, { "intelligentrics.com", true }, { "intelligentwaves.com", true }, @@ -62396,39 +72116,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intencje.pl", true }, { "intenirphoto.tk", true }, { "intensify.pictures", true }, + { "intensiveintervention.org", true }, { "intensivpflege-sachsen.de", true }, { "inter-corporate.com", true }, { "inter-culinarium.com", true }, + { "inter-design.sk", true }, { "inter-news.tk", true }, { "interabbit.co", true }, { "interabbit.com", true }, { "interacademybrazil.com.br", true }, { "interacthindu.tk", true }, { "interactiveanddesign.com", true }, + { "interactivebrokersreview.co", true }, { "interactivedigesters.ga", true }, { "interactivedigestest.ga", true }, { "interactiveliterature.org", true }, { "interactivetheatrecollective.tk", true }, { "interad.com", true }, { "interaffairs.com", true }, + { "interagencystandingcommittee.org", true }, { "interaktiva.fi", true }, { "interallied.org", true }, + { "interbanco.com.gt", true }, + { "interbank.pe", true }, { "interbec.com", true }, { "interblink.tk", true }, { "interc0der.tk", true }, + { "intercariforef.org", true }, + { "interceptorproject.hr", true }, + { "interchangehq.com", true }, { "interchanges.io", true }, + { "intercol.com.br", true }, { "intercom-attachments-1.com", true }, { "intercom-attachments-5.com", true }, { "intercom-attachments-6.com", true }, { "intercom-attachments-9.com", true }, + { "intercom-attachments.com", true }, + { "intercom-attachments.eu", true }, + { "intercom-language.training", true }, + { "intercom-mail.com", true }, + { "intercom-mail.eu", true }, { "intercom-sheets.com", true }, { "intercom.com", true }, { "intercom.io", true }, + { "intercomcdn.com", true }, + { "intercomcdn.eu", true }, { "intercomp-cbu.ru", true }, + { "intercomp.ru", true }, { "intercomunicador.org", true }, { "intercomunicadores.org", true }, { "interconlarp.org", true }, + { "intercop.es", true }, { "intercrosse.tk", true }, + { "interday.net", true }, { "interdc.com", true }, { "interdc.nl", true }, { "interdescargas.tk", true }, @@ -62437,9 +72177,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "interessengemeinschaft-pregelstrasse.tk", true }, { "interesting.ac.cn", true }, { "interestingfacts.gq", true }, - { "interet-citoyen.be", true }, { "interface-systems.de", true }, - { "interferencias.tech", true }, { "interfloraservices.co.uk", true }, { "interflores.com.br", true }, { "interfug.de", true }, @@ -62448,32 +72186,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intergenx.org", true }, { "intergenx.org.uk", true }, { "intergermania.com", true }, - { "intergozd.si", true }, + { "intergraphix.com.ar", true }, { "interguard.net", true }, + { "interguardian.de", true }, + { "interhealthcare.com.au", true }, { "interiery-waters.cz", true }, { "interieursud.fr", true }, { "interimages.fr", true }, { "interimnorge.no", true }, { "interior-design-colleges.com", true }, { "interior16.cf", true }, + { "interiorai.com", true }, { "interiorcarpentryqatar.com", true }, { "interiorcheapo.com", true }, { "interiorcolors.tk", true }, { "interiordesignsconcept.com", true }, + { "interiorsnmore.com", true }, { "interisaudit.com", true }, { "interitus.tk", true }, - { "interlan.se", true }, { "interlapse.tk", true }, { "interlecwa.com", false }, { "interlijn.nl", true }, { "interlingvo.biz", true }, { "interlink-jp.com", true }, { "interlinked.us", true }, + { "interlogos.bg", true }, { "intermac.nl", true }, - { "intermax.nl", true }, + { "intermarche.pt", true }, { "intermediapub.com", true }, - { "intermedinet.nl", true }, { "intermezzo-emmerich.de", true }, + { "intermezzo-emmerich.nl", true }, { "interminsk.tk", true }, { "intern.tax", true }, { "internacionalista.tk", true }, @@ -62482,29 +72224,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "internalframebackpack.tk", true }, { "internalkmc.com", true }, { "internally.ga", true }, + { "internalportal.net", true }, { "international-arbitration-attorney.com", true }, { "international-books.org", true }, + { "international-business-world.com", true }, { "international-friends.net", true }, { "international-genealogy-services.com", true }, + { "international.expert", true }, { "internationalbussines.tk", true }, + { "internationaldelight.com", true }, + { "internationaldesigncomp.com", true }, + { "internationalepolitik.de", true }, { "internationalfashionjobs.com", true }, - { "internationalflightstickets.com", true }, { "internationalfm.tk", true }, - { "internationalfrom.com", true }, + { "internationalgse.com", true }, { "internationaljoustingleague.tk", true }, + { "internationalrelationsedu.org", true }, { "internationalrugsdallas.com", true }, { "internationalschool.it", true }, - { "internationalschoolnewyork.com", true }, - { "internationalstudentassociation.com", true }, { "internationaltalento.it", true }, { "internationalweekly.tk", true }, { "internect.co.za", true }, { "internet-aukcion.info", true }, + { "internet-department.net", true }, { "internet-drive.tk", true }, { "internet-gazeta.ga", true }, { "internet-israel.com", true }, - { "internet-meesters.nl", false }, - { "internet-pornografie.de", false }, { "internet-tv4u.tk", true }, { "internet.org", true }, { "internet42.tk", true }, @@ -62520,6 +72265,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "internetface.tk", true }, { "internetfonden.se", true }, { "internetforall.gov", true }, + { "internethediyesi.com", true }, { "internetinhetbuitengebied.nl", true }, { "internetional.nl", true }, { "internetk.tk", true }, @@ -62539,6 +72285,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "internetoskol.tk", true }, { "internetovehazardnihry.cz", true }, { "internetowykantor.pl", true }, + { "internetpasoapaso.com", true }, { "internetpoem.com", true }, { "internetpro.me", true }, { "internetprofitspro.com", true }, @@ -62554,43 +72301,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "internetwealthresource.com", true }, { "internetzaim.tk", true }, { "internetzentrale.net", true }, + { "internews24.com", true }, + { "internewscast.com", true }, + { "internist.ru", true }, { "interparcel.com", true }, { "interphoto.by", true }, + { "interplex.com", true }, { "interpol.gov", true }, { "interpretacjawynikowbadan.info.pl", true }, { "interprete.tk", true }, - { "interracial.dating", true }, + { "intersectionconsultancy.co.uk", true }, + { "interseguro.pe", true }, { "interseller.io", true }, { "interset.us", true }, { "intersexualite.tk", true }, { "interslang.tk", true }, + { "intersolar.co.in", true }, + { "intersolute.de", true }, + { "interspar.at", true }, + { "intersport.com.kw", true }, { "intersportks.com", true }, { "interspot.nl", true }, { "interssl.com", true }, - { "interstateautomotiveinc.com", true }, { "interstateremovalists.sydney", true }, + { "interstellardabs.com", true }, { "intersun.es", true }, { "intersun.fr", true }, { "intersun.pt", true }, { "intersys.uy", true }, + { "interterranfed.org", true }, { "intertime.services", true }, { "intertrans.tk", true }, { "interval-training-timer.ru", true }, + { "intervalzero.com", true }, + { "intervention.io", true }, { "interview-suite.com", false }, + { "interview-test-taker.com", true }, { "interviewme.pl", true }, { "interviewpipeline.co.uk", true }, { "interviewstarsers.ga", true }, { "interviewstarsest.ga", true }, + { "intervista-rh.fr", true }, { "interways.de", true }, { "interwebz-cheats.com", true }, { "interwebz.nz", true }, + { "interwerk.de", true }, + { "intesis.com", true }, { "intestclub.tk", true }, - { "intheblackwoods.com", true }, { "inthechileanwoods.tk", true }, - { "inthefurrow.com", true }, { "inthepicture.com", true }, + { "inthevip.com", true }, { "inthouse.cloud", true }, - { "intigriti.com", true }, + { "intigriti.com", false }, { "intihalprogrami.com", true }, { "intim-24.tk", true }, { "intim-ru.tk", true }, @@ -62602,18 +72364,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "into-the-mountain.com", true }, { "intomsk.tk", true }, { "inton.biz", true }, - { "intoparking.com", true }, { "intoparking.fi", true }, { "intor.fi", true }, + { "intosec.nl", true }, + { "intotraffic.nl", true }, + { "intouchgames.co.uk", true }, { "intoxicate.tk", true }, + { "intpb.com.au", true }, { "intpforum.com", true }, { "intr0.cf", true }, { "intr0.com", true }, { "intr0.tk", true }, { "intracdf.net", true }, + { "intracellulartherapies.com", true }, { "intrack.net.au", true }, + { "intracom.com", false }, { "intradayseasonals.com", true }, { "intrador.com", true }, + { "intrafi.com", true }, { "intranet.dvag", true }, { "intranetcity.ch", true }, { "intranetcrowd.com", true }, @@ -62624,15 +72392,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "intrepidmedia.tk", true }, { "intrepy.com", true }, { "intrigue3d.com", true }, - { "intrinsicimaging.com", true }, { "intrixgroup.com", true }, { "intro.management", true }, { "intron.pw", true }, { "intropickup.ru", true }, { "intropika.tk", true }, - { "introverted.ninja", true }, { "introvertedtravel.space", true }, - { "intrp.net", true }, { "intrum-credit-information-ws.ch", true }, { "intstyle.com.ua", true }, { "intsys.fi", true }, @@ -62660,17 +72425,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "invantive.cloud", true }, { "invantive.co.uk", true }, { "invantive.com", true }, + { "invantive.es", true }, { "invantive.eu", true }, { "invantive.net", true }, { "invantive.nl", true }, { "invantive.org", true }, - { "invariant.cn", true }, - { "invariant.me", true }, { "invasion.com", true }, { "invasivespeciesinfo.gov", false }, { "invata-ma.ro", true }, { "invenio.software", true }, - { "inventaire.ch", false }, + { "inventarioti.serveftp.net", true }, + { "inventati.org", true }, + { "inventify.com", true }, { "inventionjudgeers.ga", true }, { "inventionjudgeest.ga", true }, { "inventions-home.tk", true }, @@ -62680,31 +72446,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inventortesters.ga", true }, { "inventortestest.ga", true }, { "inventoryimages.co.uk", true }, + { "inventorylab.com", true }, { "inventos.tk", true }, - { "inventtheworld.com.au", true }, + { "inventoseinventores.com", true }, { "inventum.cloud", true }, - { "inventum.es", true }, + { "inveny.fr", true }, { "inverness.gov", true }, { "inversegravity.net", true }, { "inverselink-user-content.com", true }, { "inverselink.com", true }, { "inversion.travel", true }, { "inversionesgalindo.com", true }, + { "invertiaweb.com", true }, + { "invertir.gov", true }, { "invespex.com", true }, - { "invest-into.com", true }, { "invest-stroj.tk", true }, + { "invest.gov", true }, { "investa.ph", true }, { "investactiv.tk", true }, { "investarholding.nl", true }, - { "investarter.nl", true }, { "investasiku.tk", true }, { "investasimudah.tk", true }, { "investasipasti.tk", true }, + { "investbeneficios.com.br", true }, + { "investcorp.com", true }, + { "investelogo.com.br", true }, { "investgold.ml", true }, { "investgold.tk", true }, { "investgroop.ml", true }, + { "investia.ca", true }, + { "investigace.cz", true }, { "investigatemalware.com", true }, - { "investigatenj.org", true }, { "investigatingmalware.com", true }, { "investigations-nbi.com", true }, { "investigatore.it", true }, @@ -62713,24 +72485,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "investigatore.torino.it", true }, { "investigazione.milano.it", true }, { "investigazione.roma.it", true }, + { "investinamerica.gov", true }, { "investinestonia.com", false }, { "investingdiary.cn", true }, + { "investinginamerica.gov", true }, { "investingindiscovery.com", true }, + { "investingnews.com", true }, + { "investingnews.com.au", true }, + { "investingoal.com", true }, + { "investingoutlook.co", true }, { "investingtrader.net", true }, - { "investinturkey.com.tr", true }, - { "investinweed.com", false }, + { "investintech.com", true }, + { "investinweed.com", true }, { "investion.cf", true }, { "investir.ch", false }, { "investirdanslancien.fr", true }, + { "investire.biz", false }, { "investirenisrael.fr", true }, { "investirfazbem.com.br", true }, { "investirsolidaire.fr", true }, { "investisiya.az", true }, - { "investissementimmobilier.be", true }, { "investisseur-nomade.fr", true }, { "investisseur-or-matieres.com", true }, { "investlatam.com", true }, { "investment-adh.com", true }, + { "investment.com", true }, { "investmentrankingsers.ga", true }, { "investmentrankingsest.ga", true }, { "investmonitor.tk", true }, @@ -62742,50 +72521,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "investoren-beteiligung.de", true }, { "investorforms.com", true }, { "investorloanshub.com", true }, - { "investors.pl", true }, + { "investorplace.com", true }, + { "investors.pl", false }, { "investosure.com", true }, { "investpay.ru", true }, { "investpsp.ca", true }, { "investpsp.com", true }, { "investresolve.com", true }, { "investservis.eu", true }, - { "invetep.sk", true }, { "inviaworld.tk", true }, + { "invicta.fr", true }, + { "invicti.com", true }, + { "invictuscapital.com", true }, { "invidious.rocks", true }, - { "inviertefacil.com.mx", true }, + { "invidis.de", true }, { "invincia.com", true }, { "invinoaustria.cz", true }, { "invisible-college.com", true }, { "invisiblehat.ventures", true }, { "invisiblejiujitsu.co.uk", true }, { "invisibles.ch", false }, + { "invisionary.tech", true }, { "invisionary.tk", true }, + { "invisionretail.nl", true }, { "invisitone.com", true }, { "invistics.com", true }, + { "invitarte.net", true }, { "invitation-factory.tk", true }, { "invitationtrackerers.ga", true }, { "invitationtrackerest.ga", true }, { "invitebiz.tk", true }, { "invitepeople.com", true }, { "invitescafe.com", true }, - { "invitescene.com", true }, - { "invitethemhome.com", true }, { "invitia.net", true }, { "invito.tk", true }, { "invoiced.com", true }, { "invoicely.com", true }, { "invokingspirits.tk", true }, { "involic.com", true }, + { "involve.asia", true }, { "invuite.com", true }, { "invuite.com.au", true }, + { "inwebo.net", true }, + { "inwepo.co", true }, { "inwit.tk", true }, { "inwonderofit.com", true }, - { "inwx.at", true }, - { "inwx.com", true }, - { "inwx.de", true }, { "inycia.com", true }, - { "inyourcornerinsurance.com", true }, { "inyourowntime.zone", true }, + { "inyr.hu", false }, { "inzdr.com", true }, { "inzeitinteractive.tk", true }, { "inzelabs.com", true }, @@ -62797,22 +72580,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "inzite.com", true }, { "io.kg", true }, { "io.nl.eu.org", true }, + { "io88.win", true }, { "ioactive.com", true }, { "ioanamateas.ro", true }, { "ioanavisan.tk", true }, { "iobint.com", true }, - { "iocheck.com", true }, + { "iocbc.com", true }, { "iochen.com", true }, - { "ioconsulting.ee", true }, { "iocorp.jp", true }, + { "iocp.org", false }, + { "ioctl.cc", true }, { "iocurrents.com", false }, - { "iocus.fun", true }, - { "iodine.com", true }, + { "iocus.fun", false }, + { "iodb.ru", true }, { "iodu.re", true }, { "ioga.tk", true }, - { "ioghawaii.com", true }, + { "iogamers.org", true }, { "iogm-official.id", true }, + { "iograficathemes.com", true }, + { "ioh.lol", true }, + { "iolabs.io", true }, { "ioliver.co.uk", true }, + { "iololi.com", true }, { "iolpodcast.com", true }, { "iomedia.ch", true }, { "iompost.com", true }, @@ -62826,7 +72615,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iondrey.ml", true }, { "iondrey.tk", true }, { "ione.net.nz", true }, + { "iongroup.com", true }, { "ionhowto.com", true }, + { "ionicframework.com", true }, { "ionicshop.xyz", true }, { "ionize.cloud", true }, { "ionlabs.kr", true }, @@ -62834,18 +72625,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ionovia.de", true }, { "ionspin.com", false }, { "ionstudio.pe", true }, - { "ionutnechita.ro", true }, { "ionutnica.ro", true }, { "ionx.co.uk", true }, { "iop.intuit.com", true }, { "iopex.com", true }, { "iopool.us", true }, { "iorgroup.org", true }, + { "ioriogioielli.com", true }, { "ios.fm", true }, { "ios11018.com", true }, { "iosartstudios.gr", true }, - { "iosbankermyanmar.com", true }, + { "iosco.org", true }, { "iosecurity.co.za", true }, + { "iosgeekblog.com", true }, { "iosjailbreakiphone.com", false }, { "ioslo.net", true }, { "iosme.ga", true }, @@ -62857,23 +72649,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iostream.by", true }, { "iosxr.de", true }, { "iot-alliances.com", true }, + { "iotac.xyz", true }, { "iotanodes.org", true }, + { "iotbusinessforum.com.br", true }, { "iotekha.tv", true }, { "iotfen.com", true }, { "iotmu.com", true }, { "iotportal.tk", true }, + { "iotrasloco.it", true }, { "iotsms.io", true }, + { "ioville.com", true }, + { "iovo.consulting", true }, + { "iowa80.com", true }, { "iowacolonytx.gov", true }, + { "iowacorncountry.com", true }, { "iowadol.gov", true }, { "iowaintex.gov", true }, { "iowamissingpersons.gov", true }, + { "iowaneedsanewkim.com", true }, { "iowaschoolofbeauty.com", true }, { "iowasmokefreeair.gov", true }, { "iowastem.gov", true }, + { "iowaworks.gov", true }, + { "iowaworksforveterans.gov", true }, { "iowawx.com", true }, { "iowxy.com", true }, { "iox.is", true }, { "ioxio-dataspace.com", true }, + { "ioxio-showroom.com", true }, { "ioxio.com", true }, { "ip-addr.es", true }, { "ip-audio.org", true }, @@ -62892,17 +72695,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ip40.com", true }, { "ip4unlocked.tk", true }, { "ip6.li", true }, + { "ipaddress.my", true }, { "ipaddressreputation.com", true }, + { "ipadizate.com", true }, + { "ipadizate.es", true }, + { "ipadkaitori.jp", true }, { "ipal.im", true }, { "ipal.name", true }, { "ipal.tel", true }, { "ipanchev.com", true }, - { "iparduotuves.lt", true }, { "iparenda.tk", true }, { "iparkki.com", true }, { "ipass.live", true }, { "ipcareers.net", true }, - { "ipcfg.me", true }, + { "ipcim.com", true }, { "ipclabs.tk", true }, { "ipcmali.ml", true }, { "ipcom.com.br", false }, @@ -62912,11 +72718,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipcstore.com", true }, { "ipdental.tk", true }, { "ipdfreedom.me", true }, - { "ipeeworld.com", true }, + { "ipdgroup.com.au", true }, { "ipemcomodoro.com.ar", true }, { "iperconnessi.it", true }, - { "iperon.org", true }, { "iperon.ru", true }, + { "ipetecperu.org", true }, + { "ipetitions.by", true }, { "ipfire.org", true }, { "ipfirebox.de", true }, { "ipfixcalculator.com", true }, @@ -62930,7 +72737,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipggroup.com", true }, { "ipgrabbed.rip", true }, { "iphone.fashion", true }, + { "iphone6.ro", true }, { "iphonebatarya.net", true }, + { "iphonechina.net", false }, + { "iphoned.nl", true }, + { "iphonekaitori.tokyo", true }, + { "iphonemobile.ro", true }, + { "iphonerepairbolton.co.uk", true }, { "iphonesoft.fr", true }, { "iphoneunlock.nu", true }, { "iphostreputation.com", true }, @@ -62939,6 +72752,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipigri.tk", true }, { "ipinfo.tw", true }, { "ipioneer.ga", true }, + { "ipl.pt", true }, + { "iplabs.de", false }, { "iplaycraft.ru", true }, { "iplayradio.net", false }, { "ipleak.net", true }, @@ -62948,23 +72763,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iplookup.tk", true }, { "ipmatic.ga", true }, { "ipmotion.ca", true }, - { "ipnetworking.net", true }, + { "ipmscoutek.com", false }, { "ipnoze.com", true }, { "ipnrt.net", true }, - { "ipo-times.jp", true }, { "ipoac.nl", false }, { "ipokabu.net", true }, { "ipomue.com", true }, { "ipon.hu", true }, + { "ipon.ro", true }, { "iposm.net", false }, + { "ipost.rocks", true }, + { "ipoteka.az", true }, { "ipow.tk", true }, - { "ippawards.com", false }, { "ipperde.tk", true }, { "ipplans.com", true }, { "ippo-juku.com", true }, - { "iprash.com", true }, + { "ippo.org.uk", true }, { "iprcenter.gov", true }, - { "iprep.it", true }, + { "iprep.it", false }, { "ipresent.com", true }, { "iprice.co.id", true }, { "iprice.hk", true }, @@ -62973,16 +72789,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iprice.sg", true }, { "iprice.vn", true }, { "ipricethailand.com", true }, + { "iprisk.info", true }, { "iproducemusic.com", true }, { "iproductrepair.com", true }, { "iproskills.com", true }, + { "iprpetitiondenied.com", true }, { "ips-consult.nl", true }, { "ips-sachsen.de", true }, + { "ips.com.my", true }, { "ipschool.spb.ru", true }, + { "ipsculemborg.nl", true }, { "ipsecurelink.com", true }, { "ipsilon-project.org", true }, { "ipso.paris", true }, { "ipssl.li", true }, + { "ipstoragesolutions.com", true }, + { "ipsubscription.store", true }, { "ipsum.dk", true }, { "ipswitch.com.tw", true }, { "iptechnology.tk", true }, @@ -62997,6 +72819,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipv4.cf", true }, { "ipv4.cy", true }, { "ipv4.gr", true }, + { "ipv4.party", true }, { "ipv4.rip", true }, { "ipv6-adresse.dk", true }, { "ipv6-handbuch.de", true }, @@ -63006,25 +72829,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ipv6.gr", true }, { "ipv6.jetzt", false }, { "ipv6.pictures", true }, + { "ipv64.net", false }, { "ipv6ioffentligsektor.se", true }, { "ipv6vpn.net", true }, { "ipvbook.com", false }, { "ipview.tk", true }, { "ipwho.site", true }, + { "iqcybersolutions.com", true }, + { "iqera.it", true }, + { "iqmarketing.nl", true }, + { "iqor.com", true }, { "iqos.com.ua", true }, { "iqos.ml", true }, { "iqphone.cf", true }, { "iqphone.ga", true }, - { "iqreview.ru", true }, + { "iqraskolan.se", true }, { "iqsecurity.eu", true }, { "iqsmn.org", true }, { "iqtechportal.com", true }, { "iqtek.solutions", true }, { "iqteksolutions.com", true }, + { "iqwst.com", true }, { "iraanswersers.ga", true }, { "iraanswersest.ga", true }, { "iraf.de", true }, { "irajsingh.tk", true }, + { "irakturkleri.org", true }, { "iramellor.com", true }, { "iran-best.cf", true }, { "iran-oil.tk", true }, @@ -63034,41 +72864,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iranconnect.tk", true }, { "irandex.ga", true }, { "irandex.gq", true }, - { "irandm.club", true }, { "irando.co.id", true }, { "irandroid.ml", true }, + { "iranettelecom.com.br", true }, { "iranfilmcity.tk", true }, { "iranfreshfruit.cf", true }, { "irangeodesy.tk", true }, { "iranian.lgbt", true }, - { "iranianholiday.com", true }, { "iranjeunesse.com", true }, { "iranjob.tk", true }, { "iranlinks.tk", true }, - { "iranminimalism.ir", true }, { "iranonline.tk", true }, { "iranophiles.com", true }, { "iranophiles.net", true }, { "iranophiles.org", true }, - { "iranpay.biz", true }, { "iranpedia.tk", true }, { "iranturkey.info", true }, - { "iranvisa24.com", true }, { "iranwiki.ovh", true }, + { "irap.org", true }, { "iraq2u.tk", true }, { "iraq4u.tk", true }, { "iraqinews.ga", true }, { "iraqmartialarts.tk", true }, { "iraqtop.tk", true }, { "irareturners.ga", true }, + { "irasandi.com", true }, { "irasingh.tk", true }, + { "iratechwatch.com", true }, { "iratten.de", true }, { "irayo.net", true }, - { "irbe.ch", true }, - { "irbisweb.com", false }, - { "irc-results.com", true }, + { "irbot.com.br", true }, { "ircica.org", true }, { "ircmett.de", true }, + { "ircnet.de", true }, { "ircnow.org", false }, { "ircoholik.ml", true }, { "ircom.com.ar", true }, @@ -63080,6 +72908,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iredellcountync.gov", true }, { "iregister.al", true }, { "ireiguam.org", true }, + { "ireis.fr", true }, { "ireland.gq", true }, { "irelandforukraine.ie", true }, { "irelandinternetstuffs4u.tk", true }, @@ -63087,26 +72916,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "irelandremembers.com", true }, { "irelandremembers.ie", true }, { "irelandremembers.org", true }, - { "iren.ch", true }, + { "irelandstats.com", true }, { "iren.gov", true }, + { "irenefellner.com", true }, { "irenekauer.com", true }, { "irenelove.com", true }, { "ireneskralen.tk", true }, + { "irenictherapy.com", true }, { "irentcar.com.tw", true }, - { "irentcarrental.com", true }, { "ireps.gov.in", true }, { "iresineworld.tk", true }, { "irf2.pl", true }, - { "irfan.id", false }, { "irfanweb.cf", true }, { "irfs.org", true }, - { "irgendeine.cloud", false }, { "irgit.pl", true }, { "iricky.art", true }, { "iridiumbrowser.de", true }, { "irina-beauty.de", true }, { "irinaf.tk", true }, - { "iringtone.net", true }, { "irioka.be", true }, { "irion-edm.com", true }, { "iris-design.info", true }, @@ -63119,19 +72946,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iris-elements.co.uk", true }, { "iris-elements.com", true }, { "iris-insa.com", true }, + { "iris.co.uk", true }, { "irische-segenswuensche.info", true }, { "irisdesideratum.com", true }, { "irisdesign.com", true }, { "irisfansite.tk", true }, - { "irish.dating", true }, { "irish.radio", true }, + { "irishcasinohex.com", true }, { "irishdancing.tk", true }, { "irishdenetwork.org", true }, + { "irishlifehealth.ie", true }, { "irishmusic.nu", false }, { "irishradioplayer.radio", true }, { "irishub.co.uk", true }, + { "irishwool.ru", true }, { "irisinclusiva.pt", false }, + { "irisinfo.net", true }, { "irismq.fr", true }, + { "irisopenspace.co.uk", true }, { "irisws-development.co.uk", true }, { "irisws-staging.co.uk", true }, { "irisws-testing.co.uk", true }, @@ -63141,6 +72973,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "irkutsk38.tk", true }, { "irland-firma.com", true }, { "irlfp.com", true }, + { "irlpack.pl", true }, { "irlprable.tk", true }, { "irma-gadalka.tk", true }, { "irmag.ru", true }, @@ -63149,6 +72982,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "irmgardkoch.com", true }, { "irmo.hr", true }, { "irmonline.tk", true }, + { "iroams.com", true }, + { "irob.co.jp", true }, { "iroiroaruyo.net", true }, { "iroise.ch", true }, { "iroisedh.fr", true }, @@ -63157,8 +72992,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ironarch.net", true }, { "ironbarnyc.com", true }, { "ironbelly.pro", true }, - { "ironbow.com", true }, - { "ironbowhealthcare.com", true }, + { "ironbow.com", false }, + { "ironbowhealthcare.com", false }, { "ironcage.tk", true }, { "ironcladapp.com", true }, { "ironcross.tk", true }, @@ -63171,7 +73006,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ironmaidenbootleghub.tk", true }, { "ironmongery.cf", true }, { "ironmongery.ga", true }, - { "ironmountainsolutions.com", true }, + { "ironmongeryexperts.co.uk", true }, { "ironpeak.be", true }, { "ironraven.ch", true }, { "ironraven.ml", true }, @@ -63184,12 +73019,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ironwaytransport.com", true }, { "ironwind.ga", true }, { "ironwolftechnology.com", true }, + { "ironwoodmi.gov", true }, { "ironycats.net", true }, { "iroomz.co.uk", true }, { "iroquoiscountyil.gov", true }, { "irpadafrique.ml", true }, - { "irpara.com.br", true }, - { "irr.ink", true }, { "irr52.ru", true }, { "irr59.ru", true }, { "irrational.net", true }, @@ -63198,18 +73032,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "irscouponsers.ga", true }, { "irscouponsest.ga", true }, { "irstaxforumsonline.com", true }, - { "irturkey.com", true }, { "iruarts.ch", true }, { "iruca.co", true }, { "iruniruten.tk", true }, + { "iruoy.com", true }, { "irvingtonnj.gov", true }, { "irvingtx.gov", true }, + { "irweb.io", true }, + { "irwincounty-ga.gov", true }, { "irwinvalera.com", true }, { "iryodatumoguide.com", true }, { "irzumshafiq.tk", true }, { "is-a-furry.org", true }, + { "is-and.com", true }, { "is-in-hyper.space", true }, { "is-news.today", true }, + { "is-real.xyz", true }, + { "is-rocket.science", true }, { "is-socket.tk", true }, { "isa357.com", true }, { "isa4310.com", true }, @@ -63226,15 +73065,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isaackhor.com", true }, { "isaacman.tech", true }, { "isaacmorneau.com", true }, - { "isaacpartnership.co.uk", true }, { "isaacperez.tk", true }, { "isaacphysics.org", true }, { "isaaczais.com", true }, { "isaaya.com", true }, { "isab.run", true }, - { "isab.top", true }, { "isabelaflores.com", true }, { "isabelcaviedes.com", true }, + { "isabellahoopsentertainment.com", true }, { "isabellainlove.com", true }, { "isabellavandijk.nl", true }, { "isabelle-delannoy.com", true }, @@ -63244,7 +73082,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isabellzaloof.gq", true }, { "isabelmurillo-ordonez.com", false }, { "isabelvalfer.com", true }, + { "isacybersecurity.com", false }, { "isadamlari.tk", true }, + { "isaeus.nl", true }, { "isakow.cf", true }, { "isakow.gq", true }, { "isamay.es", true }, @@ -63255,11 +73095,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isastylish.com", true }, { "isavanderbrugge.nl", true }, { "isavings.com", true }, + { "isbagla.com", true }, { "isbaseballstillon.com", true }, - { "isbk.de", true }, + { "isbk.de", false }, { "isbpanel.com", true }, + { "isc.org", true }, + { "isc2.org", false }, { "isc2estoniachapter.ee", true }, { "iscert.org", true }, + { "ischia2.it", true }, { "ischool.co.jp", true }, { "iscontrol.com.mx", true }, { "iscultas.pp.ua", true }, @@ -63269,12 +73113,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isecrets.se", true }, { "iseecure.be", true }, { "isekaimaid.xyz", true }, - { "iservicio.com.mx", false }, + { "isense.tw", true }, + { "isentek.com", true }, + { "iservicio.com.mx", true }, { "iservicio.mx", true }, { "iseulde.com", true }, { "isexu.ga", true }, + { "isg-one.com", true }, { "isg-tech.com", true }, - { "isgp-studies.com", false }, + { "isgp-studies.com", true }, + { "ishadow.com", true }, { "ishamf.com", true }, { "ishet.al", true }, { "ishhaara.in", true }, @@ -63285,6 +73133,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ishiro.me", true }, { "ishland.com", true }, { "ishopforpowerserg.com", true }, + { "ishtamar.fr", true }, { "ishtyl.com", true }, { "isidore.uk", true }, { "isiklitabela.tk", true }, @@ -63292,13 +73141,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isimonbrown.co.uk", true }, { "isimonline.tk", true }, { "isincheck.com", true }, - { "isinolsun.com", false }, + { "ising.pl", true }, { "isinthe.uk", true }, { "isis.cloud", true }, { "isiso.com.tr", true }, { "isistomie.com", false }, + { "isitan.com", true }, { "isitchristmas.com", true }, { "isitcoffeetime.com", true }, + { "isitdaytime.com", true }, { "isitdoneyet.gov", true }, { "isitef.com", true }, { "isitnuclearwaryet.com", true }, @@ -63309,10 +73160,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iskanderbroere.nl", true }, { "iskaron.de", true }, { "iskaz.rs", true }, - { "iskin.xyz", true }, + { "iskconbd.org", true }, + { "iskconnews.org", false }, + { "iskconperth.com", true }, + { "iskin.xyz", false }, { "iskkk.com", true }, { "iskkk.net", true }, { "iskorka.tk", true }, + { "iskra.world", false }, { "iskurturkiye.cf", true }, { "iskurturkiye.ga", true }, { "iskurturkiye.gq", true }, @@ -63320,6 +73175,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "islam-azeri.tk", true }, { "islam-doc.tk", true }, { "islam-net.tk", true }, + { "islam.az", true }, { "islam.si", true }, { "islam4all.tk", true }, { "islam4congo.tk", true }, @@ -63327,6 +73183,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "islamantarih.tk", true }, { "islambolivia.tk", true }, { "islamdersi.tk", true }, + { "islamdin.com", true }, { "islamerkantho.com", false }, { "islamfirst.ml", true }, { "islamicacademy.tk", true }, @@ -63336,6 +73193,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "islaminbremen.de", false }, { "islamipages.tk", true }, { "islamisgreat.tk", true }, + { "islamiyet.gen.tr", false }, { "islamiyet.tk", true }, { "islamnews.ga", true }, { "islamnewss.tk", true }, @@ -63351,9 +73209,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "island-line.net", true }, { "island-line.nl", true }, { "island.is", true }, - { "island.studio", true }, { "islandbuses.info", true }, { "islandchillfiji.com.my", true }, + { "islandcityoregon.gov", true }, { "islandheightsborough.gov", true }, { "islandhosting.com", true }, { "islandinthenet.com", true }, @@ -63362,35 +73220,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "islandpumpandtank.com", false }, { "islandsbanki.is", true }, { "islandsofgreenturtles.tk", true }, + { "islasvirgenes.org", true }, + { "islatortuga.eu", true }, + { "islcustomsbrokers.com", true }, { "islekyapi.com", true }, { "islensktlambakjot.is", true }, { "isleofman.tk", true }, { "isletech.net", true }, { "isletmenlikkursuankara.tk", true }, - { "isleyfarmsupply.com", true }, { "isliada.org", true }, { "islide-powerpoint.com", true }, { "islief.com", true }, { "islightdown.today", true }, { "islikimas.lt", true }, + { "islipny.gov", true }, { "islykaithecutest.cf", true }, { "islykaithecutest.ml", true }, { "ismail-biber.tk", true }, - { "ismat.com", true }, + { "ismailtoraman.com", true }, + { "ismailtoraman.com.tr", true }, + { "ismat.com", false }, + { "ismekkurs.com", true }, { "ismena.bg", true }, { "isminc.com", true }, { "ismywebsitepenalized.com", true }, { "isn.cz", true }, { "isn.education", true }, + { "isnot.ai", true }, { "iso.fr", true }, { "iso27001.dk", true }, { "iso27032.com", true }, { "isobook.ml", true }, { "isofartak.com", true }, + { "isogg.org", true }, { "isognattori.com", true }, - { "isoindonesiacenter.com", false }, { "isoip.org", true }, - { "isokernoutdoorliving.com", true }, + { "isolatiehal.nl", true }, + { "isolation-exterieure-thermique.fr", true }, { "isolde.com", true }, { "isole-lofoten.it", true }, { "isolta.com", true }, @@ -63399,14 +73265,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isolta.fi", true }, { "isolta.lv", true }, { "isolta.se", true }, - { "isondo.com", true }, { "isopres.de", true }, { "isopro.info", true }, { "isoroc-nidzica.pl", true }, + { "isosat.net", true }, { "isotope.gov", true }, - { "isotopes.gov", true }, - { "isoverse.net", true }, { "isovideo.com", true }, + { "isowebtech.com", true }, + { "ispactivo.com", true }, { "ispalestinefree.com", true }, { "ispanika.tk", true }, { "ispaniola.ga", true }, @@ -63414,12 +73280,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ispartahaber.cf", true }, { "ispartahaber.gq", true }, { "ispartahaber.tk", true }, + { "ispc-synergies.org", true }, { "ispfontela.es", true }, { "ispmedipv6.se", true }, { "ispn.edu.ar", true }, { "isportsfab.com", true }, { "ispro-ng.com", true }, - { "isprox.com", true }, { "ispsoft.pro", true }, { "isputinstillpresident.com", true }, { "ispymissions.ga", true }, @@ -63430,17 +73296,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "israel-nadlan.com", true }, { "israel-real.estate", true }, { "israel-web.com", true }, + { "israel21c.org", true }, { "israelandantisemitism.com", true }, { "israelandhome.com", true }, { "israelbiblicalstudies.com", true }, { "israelcareersers.ga", true }, { "israelcareersest.ga", true }, + { "israelflorist.com", true }, { "israelimtovim.co.il", true }, { "israelitas.tk", true }, { "israelitopbox.ga", true }, { "israelmesianico.tk", true }, { "israelnewswire.tk", true }, { "israelpalestineconfederation.org", true }, + { "israelpalestinenews.org", true }, { "israelportalk.cf", true }, { "israelportalk.ga", true }, { "israelportalk.gq", true }, @@ -63451,11 +73320,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isreedyinthe.uk", true }, { "isreedyinthe.us", true }, { "isreedyintheuk.com", true }, - { "issa.org.pl", false }, + { "isrib.com", true }, { "issaias.net", false }, + { "issaquah.cam", true }, { "issasfrissa.se", true }, { "isscouncil.com", true }, - { "isseenterprises.com", true }, + { "issea.wiki", true }, { "issforum.org", true }, { "issho.jp", true }, { "issio.net", true }, @@ -63465,19 +73335,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "issnet.gq", true }, { "issuerconsulting.com", true }, { "issues.email", true }, + { "issuetrak.com", true }, + { "ist-analys.com", true }, + { "ist-analyse.com", true }, { "ist-intim.de", true }, + { "ist-toll.xyz", true }, + { "ista-vdm.at", true }, { "istagb.ga", true }, { "istanbul.systems", true }, { "istanbulblog.tk", true }, { "istanbulbogazicienstitu.com", true }, { "istanbuleskort.tk", true }, { "istanbulhaberleri.tk", true }, + { "istanbulhomes.com", true }, { "istanbulmasajsalonu.tk", true }, - { "istanbulsmilecenter.com", true }, + { "istanbulweb.gen.tr", true }, { "istdas.lol", true }, + { "istec.com.ua", true }, { "istech.com.tr", true }, - { "isteinbaby.de", true }, { "istekparcam.com", true }, + { "istekparcam.com.tr", true }, { "isterfaslur.com", true }, { "isthatarabic.com", true }, { "istheapplestoredown.com", true }, @@ -63485,7 +73362,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isthedoorlocked.com", true }, { "isthefieldcontrolsystemdown.com", true }, { "istheinternetonfire.com", true }, - { "isthephone.com", true }, { "istherrienstillcoach.com", true }, { "istheservicedown.co.uk", true }, { "istheservicedown.com", true }, @@ -63500,7 +73376,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "istitutovivaldi.it", true }, { "istkurznochkanzler.at", true }, { "istogether.com", true }, - { "istorie-romaneasca.ro", true }, { "istories.media", true }, { "istorija-balkana.tk", true }, { "istormsolutions.co.uk", true }, @@ -63509,13 +73384,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "istrosec.com", true }, { "istrosec.org", true }, { "istschonsolangeinrente.de", true }, + { "istsi.org", true }, { "istudentpro.ml", true }, + { "istudio.one", true }, { "isuggi.com", true }, { "isultov.tk", true }, { "isutils.com", true }, { "isv.online", true }, { "isvbscriptdead.com", true }, { "isvsecwatch.org", true }, + { "isvstar.com", true }, + { "isvw.nl", false }, { "iswag.se", true }, { "iswapgh.com", true }, { "isystem.cf", true }, @@ -63523,42 +73402,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "isystem.gq", true }, { "isystem.tk", true }, { "isyu.xyz", true }, - { "isz.no", true }, { "iszy.cc", true }, { "iszy.xyz", true }, { "it-academy.sk", true }, { "it-actual.ru", true }, { "it-actually.work", true }, + { "it-altstadt.de", true }, { "it-biznes.com", true }, { "it-blog.cf", true }, { "it-boss.ro", true }, { "it-com.ga", true }, + { "it-connect.fr", true }, { "it-cooking.com", true }, { "it-ebook.ml", true }, { "it-enthusiasts.tech", true }, { "it-expert.tk", true }, - { "it-foro.com", true }, { "it-inside.ch", true }, { "it-inzhener.com", true }, { "it-ip-rudnick.de", true }, { "it-jobbank.dk", true }, - { "it-journal.de", false }, - { "it-kron.de", true }, { "it-lobster.com", true }, { "it-maker.eu", true }, { "it-ngo.com", true }, { "it-novosti.tk", true }, - { "it-ottweiler.de", true }, { "it-perm.tk", true }, { "it-rotter.de", true }, { "it-seems-to.work", true }, { "it-service24.com", true }, { "it-stack.de", true }, + { "it-stek.ru", true }, { "it-support-stockholm.se", true }, { "it-tainment.de", true }, { "it-tekniker.nu", true }, { "it-ti.me", true }, { "it-volgograd.tk", true }, + { "it-wars.com", true }, { "it-web-entwicklung.de", true }, { "it-world.eu", false }, { "it-xperts.be", true }, @@ -63569,7 +73447,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "it4sure.nl", true }, { "it76.tk", true }, { "it82.com", true }, - { "it9.bar", true }, { "itabenar.tk", true }, { "itactiq.com", true }, { "itactiq.info", true }, @@ -63577,23 +73454,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itaiferber.net", true }, { "itaja.com", true }, { "ital-gamma.be", false }, - { "italbavaro.com", true }, + { "italdesign.it", true }, { "italentado.ml", true }, + { "italia-facile.ru", true }, { "italia-store.com", true }, - { "italiachegioca.com", true }, + { "italiaeconomy.it", true }, { "italiale.tk", true }, { "italian-shoes.tk", true }, - { "italian.dating", true }, { "italiana-lacrima.tk", true }, { "italianerd.com", true }, + { "italianerd.it", true }, + { "italianettepizza.com", true }, { "italianfoodonlinestores.com", true }, { "italianforkids.com.au", true }, { "italianhelper.com", true }, { "italianluxuryinter.cf", true }, { "italianluxuryinter.ga", true }, { "italianluxuryinter.gq", true }, - { "italianmodernart.org", true }, { "italiano-bello.com", true }, + { "italianpillow.com", true }, { "italianracingteam.tk", true }, { "italiansrent.com", true }, { "italiansrit.tk", true }, @@ -63612,7 +73491,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "italyspecialty.coffee", true }, { "itamservices.nl", true }, { "itap.gov", false }, - { "itarc.com.br", true }, + { "itape.com", false }, { "itaro.bot", true }, { "itaro.ee", true }, { "itaro.eu", true }, @@ -63626,20 +73505,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itbrief.co.nz", true }, { "itbrief.com.au", true }, { "itbrouwerij.be", true }, - { "itbusiness.com.ua", true }, { "itc-lucke.com", true }, { "itcamefromtheunderground.tk", true }, { "itcbuerobedarf.de", true }, + { "itcentroamerica.com", true }, { "itchy.nl", true }, { "itchybrainscentral.com", true }, + { "itcinfotech.com", false }, { "itcloud.ca", true }, { "itclubonline.tk", true }, { "itcommodities.club", true }, + { "itcompanies.net", true }, { "itconsulting-wolfinger.de", true }, { "itcoolie.in", true }, { "itcreative.ro", true }, { "itcs.services", true }, { "itcyber.pl", true }, + { "itcybersecurity.gr", true }, { "itdashboard.gov", true }, { "itdata.tk", true }, { "itdoneproperly.com", true }, @@ -63647,11 +73529,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itds-consulting.eu", true }, { "itdutchie.com", true }, { "ite.st", true }, - { "itebgarcia.com", true }, + { "itechbrand.com", true }, { "itechfast.tk", true }, { "itechpros.com.au", true }, { "itecor.net", false }, { "iteecafe.hu", true }, + { "itefix.net", true }, + { "itefix.no", true }, { "iteha.de", true }, { "iteke.ml", true }, { "iteke.tk", true }, @@ -63660,10 +73544,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "item.no", true }, { "itemcreator.tk", true }, { "itemmc.com", true }, - { "itemorder.com", true }, { "itempathy.com", true }, { "iteon.pl", true }, - { "iternalnetworks.com", false }, + { "iteracy.com", true }, + { "iternova.net", true }, { "itero.eu", true }, { "iterror.co", true }, { "itexpert12.tk", true }, @@ -63672,76 +73556,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itezu.ml", true }, { "itfall.tk", true }, { "itfh.eu", false }, + { "itfirmaet.dk", true }, { "itfix.org.uk", true }, { "itfly.xyz", false }, - { "itfoerderung.de", false }, { "itgeeks.nl", true }, { "itgoesup.com", true }, { "itgoesupent.com", true }, { "itgoesupentertainment.com", true }, + { "ith-heerlen.nl", true }, { "ithakama.com", true }, { "ithakama.cz", true }, { "ithenrik.com", true }, + { "ithillel.ua", true }, { "ithinc.net", true }, { "ithjalpforetag.se", true }, + { "ithmaarbank.com", true }, + { "ithot.ro", true }, + { "ithriveedinburgh.org.uk", true }, { "ithuthuat.vn", true }, { "itidying.com", true }, { "itikon.com", true }, { "itilo.de", true }, { "itinerance.ca", true }, + { "itinero.xyz", true }, { "itioc10.tk", true }, { "itis.gov", true }, { "itis4u.ch", true }, { "itisjustnot.cricket", true }, { "itisyourmoney.co.uk", true }, { "itiweb.tk", true }, - { "itkaufmann.at", true }, + { "itk.se", true }, { "itleaked.gq", true }, + { "itlg.ru", true }, { "itlife.tk", true }, { "itlitera.com", true }, { "itlog.tk", true }, { "itlogic.com.au", true }, { "itludens.com", true }, - { "itm-c.de", true }, { "itmastersupport.tk", true }, { "itmatournai.tk", true }, { "itmax.ua", true }, { "itmedicinai.lt", true }, { "itmindscape.com", true }, { "itmustbee.com", true }, - { "itmx.cc", true }, - { "itn.co.uk", true }, + { "itmx.cc", false }, + { "itnet.com.ua", true }, + { "itninja.one", true }, { "itnota.com", true }, { "itnow.ng", true }, + { "itnsusa.com", true }, { "itoady.com", true }, { "itochan.jp", true }, { "itoezichtprotocol.nl", true }, - { "itogoyomi.com", true }, { "itoma.tech", true }, { "itondersteuning.eu", true }, { "itotalaccess.net", true }, { "itouriria.com", true }, - { "itousweb.be", true }, { "itoxic.tk", true }, { "itpanda.pl", true }, { "itparty.tk", true }, { "itpaukku.tk", true }, + { "itpedia.nl", true }, { "itperm.tk", true }, { "itpoint.kz", false }, { "itpol.dk", true }, - { "itpro-mg.de", true }, + { "itportal.io", true }, + { "itpress.fi", true }, { "itpro.ua", true }, + { "itprotect.pl", true }, { "itradeaims.net", true }, + { "itradeit.in", true }, + { "itradenetwork.com", true }, { "itraffic.cf", true }, { "itraffic.tk", true }, { "itraincalisthenic.com", true }, { "itraveille.fr", true }, + { "itravelbg.com", true }, { "itraveller.net", true }, { "itreboot.co.nz", true }, { "itrendbuzz.com", true }, { "itrew.ru", true }, { "itrezzo.com", true }, - { "itring.pl", false }, { "itrodeo.com", true }, { "itrollskogens.tk", true }, { "itruss.com.tw", true }, @@ -63749,27 +73644,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "its-aeth.tk", true }, { "its-em.ma", true }, { "its-gutachten.de", true }, + { "its-not-your.business", true }, { "its-schindler.de", true }, - { "its-truck.net", true }, + { "its-taxi.nl", true }, { "its-v.de", true }, { "its.gov", true }, { "its420somewhere.com", true }, { "its4living.com", true }, { "its5oclock.eu", true }, { "itsabouncything.com", true }, + { "itsacheckmate.com", true }, { "itsakerhetspodden.se", true }, { "itsalan.tk", true }, - { "itsallaboutplumbing.com", true }, + { "itsallmath.org", true }, { "itsanicedoor.co.uk", true }, - { "itsatrap.nl", false }, { "itsaw.de", true }, { "itsayardlife.com", true }, { "itsbananas.life", true }, { "itsburning.nl", true }, + { "itscalculator.com", true }, + { "itscc.kr", true }, { "itsch-itsche.com", true }, { "itsdcdn.com", true }, + { "itsebeauty.com", true }, { "itsec.link", true }, { "itsecblog.de", true }, + { "itsecboecker.de", true }, { "itsecrnd.com", true }, { "itsecuritycoach.com", true }, { "itseeze.com", true }, @@ -63777,6 +73677,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itservis.org", true }, { "itsevident.com", true }, { "itsforu.de", true }, + { "itsgottabedark.com", true }, { "itsgreener.com", true }, { "itshamradio.com", true }, { "itshka.rv.ua", true }, @@ -63786,6 +73687,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itsmeaxel.ovh", true }, { "itsmejohn.org", true }, { "itsmohitchahal.com", true }, + { "itsmycode.com", true }, { "itsmyparty.ie", true }, { "itsnotnot.tk", true }, { "itsnotquitethehilton.com", false }, @@ -63806,22 +73708,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itsstefan.eu", true }, { "itstartswithme.ca", true }, { "itstatic.tech", true }, + { "itstimetravel.com", true }, { "itsuka-world.com", true }, + { "itsumleo.com", true }, + { "itsundef.in", false }, { "itsupport24.tk", true }, { "itsupportguys.com", true }, + { "itswincer.com", true }, { "itsynergy.co.uk", true }, { "itt-shop.bg", true }, { "itt-shop.com", true }, + { "itt-us.com", true }, { "ittgame.tk", true }, { "ittreservations.com", true }, { "ittspangdahlem.com", true }, + { "ittutorialpoint.com", true }, { "itur.co.il", true }, { "itvaatlik.ee", true }, { "itvia.email", true }, { "itvia.eu", true }, { "itvia.net", true }, { "itvia.org", true }, + { "itviec.com", true }, { "itvirtual.tk", true }, + { "itw.com", true }, { "itweak.tk", true }, { "itwebentwicklung.de", true }, { "itwell.cz", true }, @@ -63830,10 +73740,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itworks.agency", true }, { "itworks.nyc", true }, { "itwozi.cc", false }, - { "itwozi.com", true }, + { "itwozi.com", false }, + { "itx.no", true }, { "itxartu.tk", true }, { "itxlatam.com", true }, { "itxn.cn", false }, + { "itxnorge.no", true }, + { "itxuc.com", true }, + { "ityug247.com", true }, { "itzahammer.tk", true }, { "itzamnaxelahomestay.tk", true }, { "itzap.com.au", true }, @@ -63841,17 +73755,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "itzine.ru", true }, { "itzkavin.tk", true }, { "itzlive.tk", true }, + { "itzrock.xyz", true }, { "iua.com.au", true }, { "iubuniversity.tk", true }, { "iurisnovagestion.es", false }, { "iurisnow.com", true }, { "iuspenal.com", true }, { "iv-vr.com", true }, - { "iv2.com", true }, - { "iv4khd.com", true }, + { "iv.pl", true }, { "iv4kiso.com", true }, { "ivahbbiz.tk", true }, - { "ivampiresp.com", true }, + { "ivampiresp.com", false }, { "ivan-maliy.tk", true }, { "ivan-popov.tk", true }, { "ivan-tadej.tk", true }, @@ -63859,14 +73773,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivan1874.cf", true }, { "ivan1874.dynu.net", true }, { "ivan770.me", true }, - { "ivana-models-escorts.com", true }, - { "ivana-models-escortservice.de", true }, + { "ivana-models-escortservice.de", false }, { "ivanaleksandrov.com", true }, { "ivanbenito.com", true }, { "ivancacic.com", false }, + { "ivandafish.net", true }, { "ivanderevianko.com", true }, { "ivanesalud.com", true }, { "ivanilla.org", true }, + { "ivanime.com", true }, { "ivankuchin.tk", true }, { "ivanmeade.com", true }, { "ivanov.icu", true }, @@ -63874,21 +73789,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivanovocity.tk", true }, { "ivanovolive.ru", true }, { "ivanpolchenko.com", true }, + { "ivansgroups.com", true }, { "ivantedesco.tk", true }, { "ivanwolf.ga", true }, { "ivanya.tk", true }, { "ivanzorin.cf", true }, { "ivdnt.org", true }, - { "ivelop.me", true }, + { "ivdrama.me", true }, + { "ivelop.me", false }, { "ivendi.com", true }, + { "iventishirts.com", true }, { "ivermectin.gq", true }, + { "ivermectinc19.com", true }, + { "ivertubani.com", true }, { "ivetazivot.cz", true }, { "ivetdata.com", false }, { "ivetebolos.com.br", true }, - { "ivf114.com", true }, { "ivfausland.de", true }, { "ivi.cx", true }, { "ivifashion.tk", true }, + { "ivioschool.nl", true }, { "ivisa.ga", true }, { "ivisitkorea.com", true }, { "ivisitorinsurance.com", true }, @@ -63899,11 +73819,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivkymppi.fi", true }, { "ivmmeta.com", true }, { "ivmstatus.com", true }, + { "ivn555.tk", true }, + { "ivn777.tk", true }, + { "ivn888.tk", true }, + { "ivn999.com", true }, { "ivnext.org", true }, { "ivo-ouwerkerk.nl", true }, { "ivo.co.za", true }, { "ivocopro.com", true }, - { "ivocopro.de", true }, { "ivocotec.com", true }, { "ivoid.cf", true }, { "ivopetkov.com", true }, @@ -63911,6 +73834,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivor.is", true }, { "ivorvanhese.com", true }, { "ivorvanhese.nl", true }, + { "ivory.com", true }, { "ivoryandgrace.com", true }, { "ivoryhomes.com", true }, { "ivoryonsunset.com", true }, @@ -63920,19 +73844,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ivpn.net", true }, { "ivr.fi", true }, { "ivre.rocks", true }, - { "ivs-romania.ro", true }, + { "ivrn.net", true }, { "ivs-tech.ru", true }, { "ivsign.net", true }, - { "ivvl.ru", true }, - { "ivx.gallery", true }, + { "ivtherapyclinic.ru", true }, { "ivy-league-colleges.com", true }, { "ivyandrose.co", true }, { "ivyhelpers.com", true }, - { "ivyrose.shop", true }, + { "ivypanda.com", true }, { "ivyseeds.cf", true }, - { "iw.net.sa", true }, - { "iwader.co.uk", true }, + { "ivywolfepornstar.com", true }, { "iwalton.com", true }, + { "iwant-sex.com", true }, { "iwant.cz", true }, { "iwantexchange.com", true }, { "iwantpayments.com", true }, @@ -63945,25 +73868,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "iwatchcops.com", true }, { "iwatchcops.org", true }, { "iwatchla.net", true }, + { "iwate-shien-r5.com", true }, + { "iwate-tabipro-ver4.jp", true }, { "iwatt.sk", true }, { "iwch.tk", true }, { "iwd.gc.ca", true }, + { "iwebdna.com", true }, { "iwebing.tk", true }, + { "iweblab.it", true }, { "iwebolutions.com", true }, { "iwebsolution.tk", true }, { "iwec.pk", true }, { "iwex.swiss", true }, + { "iwf.sport", true }, { "iwhite.tk", true }, + { "iwiki.net", true }, { "iwismer.ca", true }, + { "iwmf.ir", true }, { "iwonder.tw", true }, { "iwp.ch", true }, { "iwtsd.gov", true }, { "iww.me", true }, { "iww.mx", true }, + { "iww.org.au", true }, { "iww.org.nz", true }, + { "ix.run", true }, { "ix8.ru", false }, { "ixiatiao.com", true }, { "ixit.cz", true }, + { "ixn.com", true }, + { "ixoso.com", true }, { "ixplayer.com", true }, { "ixquick-proxy.com", true }, { "ixquick.co.uk", true }, @@ -63974,31 +73908,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ixquick.info", true }, { "ixquick.nl", true }, { "ixtan.ga", true }, - { "ixuexi.tech", true }, + { "ixware.de", true }, + { "ixxat.com", true }, { "ixypsilon.net", true }, + { "iy.uy", true }, + { "iyadalkassab.com", true }, { "iyan.es", true }, { "iyanmv.com", true }, { "iyassu.com", true }, { "iyc.web.tr", true }, + { "iyiarastir.com", true }, { "iyinolaashafa.com", true }, { "iymark.com", true }, { "iyn.me", true }, - { "iyo.moe", true }, { "iyouewo.com", true }, { "iyoumu.top", true }, { "iyspanel.com", true }, + { "iyte.edu.tr", true }, { "iyume.top", true }, { "iz8mbw.net", true }, + { "izaban.org", true }, { "izabava.tk", true }, { "izabel.tk", true }, { "izamulhakeem.tk", true }, { "izana.com.br", true }, { "izanagi52.ddns.net", true }, + { "izapi4.fr", true }, { "izavel.com", true }, + { "izb.se", true }, { "izbirateli.com", true }, { "izecubz.me", true }, + { "izemporium.com", true }, { "izi-agency.com", true }, - { "izieng.com", true }, { "izipik.gq", true }, { "izkustvo.com", true }, { "izleorg2.org", true }, @@ -64011,42 +73952,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "izmir-organizasyon.tk", true }, { "izmirarabakiralama.name.tr", true }, { "izmirarackiralama.name.tr", true }, + { "izmirde.org", true }, { "izmirescort.tk", true }, { "izmireskortlari.tk", true }, { "izmirotokiralama.name.tr", true }, { "izmirprotestan.org", true }, { "izmirrentacar.name.tr", true }, { "izmirtemizlik.tk", true }, - { "izntz.com", true }, { "izodiacsigns.com", true }, - { "izolyatsia.org", true }, + { "izolpoznan.pl", true }, { "izone.ua", true }, - { "izstore.net", true }, + { "izs.me", true }, { "izttech.com", true }, { "izuba.info", false }, { "izumi-hirodental.com", true }, { "izumi-ryokan.com", true }, - { "izumi.tv", true }, { "izumrudniy.tk", true }, { "izvorul-bucovinei.ro", true }, + { "izxxs.com", true }, + { "izxxs.net", true }, + { "izxzw.net", true }, { "izzardink.com", true }, { "izzqz.me", true }, { "izzycat.net", true }, - { "izzyforeal.com", false }, { "izzymendosa.net", true }, { "izzyontour.tk", true }, - { "izzys.casa", true }, { "j-annonce.co.il", true }, { "j-harrison-media.co.uk", true }, { "j-harrison.co.uk", true }, - { "j-k-fischer-verlag.de", true }, - { "j-l.pw", true }, + { "j-library.com", true }, { "j-maxton.de", true }, - { "j-navi.com", true }, { "j-ph.ovh", true }, { "j-robertson.com", true }, - { "j-sheekey.co.uk", true }, { "j00228.com", true }, + { "j05.cn", true }, { "j0bs.org", true }, { "j0e.com", true }, { "j0hn.net", false }, @@ -64057,19 +73996,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "j1visahealthinsurance.com", true }, { "j2ee.cz", true }, { "j2h.de", true }, + { "j3.cn", true }, { "j32663.com", true }, { "j32665.com", true }, { "j32773.com", true }, { "j32774.com", true }, { "j32b.com", true }, + { "j365.me", true }, { "j36533.com", true }, { "j3e.de", true }, - { "j4e.name", false }, { "j4m.xyz", true }, { "j5197.co", true }, { "j5lx.de", true }, { "j5lx.eu", true }, { "j5lx.io", true }, + { "j5s7.de", true }, { "j5y.de", true }, { "j605.tk", true }, { "j6729.co", true }, @@ -64081,17 +74022,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "j70333.com", false }, { "j70444.com", false }, { "j70555.com", false }, - { "j81365.com", true }, { "j82365.com", true }, + { "j8jp.com", true }, { "j9.com", true }, { "j9297.co", true }, { "j9297.com", false }, - { "j9504.com", true }, { "j9507.com", false }, { "j9508.com", false }, { "j9514.com", false }, { "j95app.com", false }, - { "j95bb.com", true }, + { "j95bb.com", false }, { "j95cc.com", false }, { "j95dd.com", false }, { "j95ee.com", false }, @@ -64101,24 +74041,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "j95zz.com", false }, { "j9721.com", true }, { "j9728.co", true }, - { "j9s.de", true }, - { "ja-gps.com.au", true }, { "ja-hypnose.de", true }, { "ja-jirei-ienohikari.com", true }, { "ja-no-me.ru", true }, { "ja-sobstvennik.tk", true }, { "ja-tay.sr", true }, + { "ja-youth.jp", true }, { "ja-zur-gs.de", true }, { "ja1deijssel.tk", true }, { "jaago-pakistan.tk", true }, + { "jaajko.com", true }, { "jaajko.eu", true }, { "jaajko.fi", true }, + { "jaajko.me.uk", true }, { "jaajko.site", true }, { "jaajko.xyz", true }, { "jaakkohannikainen.fi", true }, + { "jaalits.com", true }, { "jaamaa.com", true }, { "jaanikese.edu.ee", true }, + { "jaapsinstallaties.nl", true }, + { "jaarverslagveere.nl", true }, { "jaaxypro.com", true }, + { "jab-graphics.com", true }, { "jaba.hosting", true }, { "jababu.cz", true }, { "jabagly.com", true }, @@ -64144,6 +74089,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jabsolutions.tk", true }, { "jacaranda-deutschland.org", true }, { "jaccblog.com", true }, + { "jacek.pro", true }, { "jacekowski.org", true }, { "jachtbouw.eu", true }, { "jachtypruszynski.pl", true }, @@ -64155,23 +74101,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jackafur.net", true }, { "jackal-cogito.tk", true }, { "jackandrascals.com", true }, + { "jackarmail.eu", true }, + { "jackass-as.com", true }, { "jackassofalltrades.org", true }, { "jackbauer.tk", true }, { "jackblues.tk", true }, + { "jackdanielssauces.com", true }, { "jackdawphoto.co.uk", true }, { "jacket-coat.tk", true }, + { "jacketars.com", true }, { "jackets-coats.tk", true }, { "jackets-coatsplus.tk", true }, { "jackets-for-men.tk", true }, { "jackf.me", true }, - { "jackgreenrealty.com", true }, + { "jackgames.net", true }, { "jackgreiner.ca", true }, { "jackhammerinteractive.com", true }, { "jackhoodtransportation.com", true }, { "jackienguyen.dk", true }, { "jackiestp.com", true }, { "jackingramnissanparts.com", true }, - { "jackingsolutions.com", true }, { "jackinmybox.com", true }, { "jackjack.ga", true }, { "jackmail.tk", true }, @@ -64186,16 +74135,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jacksball.com", true }, { "jacksfeestverhuur.nl", true }, { "jackson-quon.com", true }, + { "jacksonchen666.com", true }, { "jacksoncountyfl.gov", true }, { "jacksoncountyor.gov", true }, + { "jacksoncountytn.gov", true }, { "jacksoncountywi.gov", true }, { "jacksonfdwi.gov", true }, { "jacksongoo.de", true }, { "jacksonsykes.com", true }, { "jacksontwpclermontoh.gov", true }, + { "jacksontwpfranklinoh.gov", true }, { "jacksontwpmcpa.gov", true }, { "jacksonville.gov", true }, { "jacksonvilleal.gov", true }, + { "jacksonvillebeach.gov", true }, { "jacksorrell.com", true }, { "jackspub.net", true }, { "jackstone.tk", true }, @@ -64203,7 +74156,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jackvaley.com", true }, { "jackvalley.com", true }, { "jackwarren.info", true }, - { "jackwilli.com", true }, { "jackwu.net", true }, { "jackylawless.net", true }, { "jackyliao.me", true }, @@ -64220,64 +74172,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jacobs-implantate.at", true }, { "jacobsenarquitetura.com", true }, { "jacobsmeubels.nl", true }, + { "jacobspctuneup.tk", true }, { "jacobtamassiaadvocacia.adv.br", true }, { "jacobtaylor.id.au", true }, { "jacool.tk", true }, { "jacopo.tk", true }, { "jacopomolina.me", true }, - { "jacov.com", true }, { "jacquant.be", true }, { "jacquelinebellefontaine.co.uk", true }, { "jacquelinesdream.tk", true }, { "jacquesdedixmude.eu", true }, { "jacquesfrantz.com", true }, - { "jaculus.eu", true }, + { "jaculus.eu", false }, { "jacuzziprozone.com", true }, { "jad.so", true }, { "jadara.info", true }, { "jadchaar.me", true }, { "jadedmonkey.tk", true }, - { "jadeforallseasons.com", true }, { "jadehairstyle.nl", true }, { "jadelsbach.de", true }, { "jadesong.cn", true }, { "jadesong.net", true }, + { "jadid-alwadifa.com", true }, { "jadidgroup.com", true }, { "jadiercms.cf", true }, { "jadopado.com", true }, { "jadox.com", true }, { "jaduniv.cf", true }, - { "jae.fi", true }, + { "jadwalsimkeliling.info", true }, { "jae.su", true }, { "jaeger.link", true }, - { "jaegerlacke.de", true }, + { "jaehyeon.it", true }, { "jaepinformatica.com", true }, { "jaetech.org", true }, { "jafarmehdipor.ga", true }, { "jag-meccar.tk", true }, + { "jaga-me.com", true }, { "jagad.id", true }, { "jagadhatrionline.co.in", true }, { "jagaimo.works", true }, { "jagan.be", true }, { "jagar.com.pl", true }, + { "jagatreview.com", true }, { "jagbouncycastles.co.uk", true }, { "jagerkin.tk", true }, { "jagerman.com", true }, - { "jagido.de", true }, { "jagogame.tk", true }, { "jags.tk", true }, { "jagspecialisters.ga", true }, { "jagspecialistest.ga", true }, + { "jagsttalschule.de", true }, + { "jaguar-network.com", true }, { "jaguarkuda.com", true }, { "jaguarlandrover-asse.be", true }, { "jaguarlandrover-occasions.be", true }, { "jahanaisamu.com", true }, { "jahidhasanmurad.tk", true }, + { "jahimees.ee", true }, { "jahit.tk", true }, { "jahner.xyz", true }, { "jahubar.tk", true }, { "jaialdi.tk", true }, - { "jaiestate.com", true }, { "jaiho-zeetoz1server.ga", true }, { "jailbait.ml", true }, { "jailbreakingisnotacrime.org", true }, @@ -64285,48 +74240,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jailfooders.ga", true }, { "jailfoodest.ga", true }, { "jailstorm.ml", true }, + { "jaimechanaga.com", true }, { "jainmantras.com", true }, - { "jaion.ml", true }, { "jaion.tech", true }, { "jaion.xyz", true }, + { "jaipurescort.club", true }, + { "jaipurescortagency.com", true }, { "jairoenfrancien.tk", true }, - { "jaisa.in", true }, { "jaisiam.co.th", true }, { "jaisin.com", true }, { "jaispirit.com", true }, { "jaiyen.com", true }, { "jaiyun.tk", true }, - { "jajanrumah.com", true }, { "jajce.tk", true }, { "jajojababy.com", true }, { "jajycycojota.cf", true }, { "jakarta.dating", true }, + { "jakarta.ee", true }, + { "jakartaone.org", true }, + { "jakartaurbanhosting.com", true }, { "jakdelatseo.cz", true }, { "jake.eu.org", true }, { "jake.ml", true }, { "jake.nom.za", true }, { "jake.rodeo", true }, { "jakegyllenhaal.ga", true }, - { "jakejnx.com", true }, { "jakemansfield.com", true }, { "jakereynolds.co", true }, + { "jakeross.me", true }, { "jakerullman.com", false }, { "jakeslab.tech", true }, { "jaketremper.com", false }, { "jakewales.com", true }, { "jakincode.army", true }, { "jako.tk", true }, - { "jakob-kruse.de", false }, { "jakob-server.tk", true }, { "jakobczyk.org", true }, { "jakobejitblokaci.cz", true }, + { "jakobhildebrand.com", true }, + { "jakobhildebrand.de", true }, { "jakobkrigovsky.com", true }, { "jakobs.systems", true }, { "jakobssystems.net", true }, - { "jakovtasic.com", true }, + { "jakpost.net", true }, { "jakpremyslet.cz", true }, { "jakse.fr", true }, - { "jaksel.id", true }, { "jaksi.io", true }, { "jaktang.com", true }, { "jakub-boucek.cz", true }, @@ -64335,12 +74293,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jakubklimek.com", true }, { "jakubsindelar.cz", true }, { "jakubvrba.cz", true }, + { "jakumammy.pl", true }, + { "jakzostacmilionerem.biz", true }, { "jal-ja.com", true }, { "jala.co.jp", true }, + { "jala.tech", false }, { "jalebiyat.tk", true }, { "jaleesa.sa", true }, { "jaleo.cn", true }, - { "jalingo.net", true }, + { "jalgut.group", true }, { "jaliscolindo.tk", true }, { "jall.com.br", true }, { "jallatte.fr", true }, @@ -64354,13 +74315,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamaica.gq", true }, { "jamaicabeachtx.gov", true }, { "jamally.co.za", true }, + { "jamb.in", true }, + { "jambapp.org", true }, { "jamberry.com.mx", true }, { "jambihackerlink.tk", true }, + { "jamboree.online", true }, + { "jambox.ca", true }, + { "jambox.pl", true }, { "jamcyberinc.com", true }, { "jamdro.id", true }, { "jamelhammoud.com", true }, { "james-bell.co.uk", true }, - { "james-loewen.com", true }, { "james-parker.com", false }, { "james.cyou", true }, { "james.guru", true }, @@ -64368,6 +74333,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "james.pub", true }, { "jamesachambers.com", true }, { "jamesaimonetti.com", true }, + { "jamesandeverett.com", true }, { "jamesbillingham.com", true }, { "jamesbromberger.com", true }, { "jamesbrown.cn", true }, @@ -64383,6 +74349,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamesgreenfield.com", true }, { "jameshawk.pl", true }, { "jamesheald.com", true }, + { "jameshenderson.online", true }, { "jameshost.net", true }, { "jameside.com", true }, { "jamesj.me", false }, @@ -64392,10 +74359,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamesl.tk", true }, { "jameslahey.com", true }, { "jamesmarsh.net", true }, - { "jamesmcdonald.com", false }, - { "jamesmilazzo.com", true }, { "jamesmorrison.me", true }, { "jamesmurphy.tk", true }, + { "jamesplumbingcompanypasadenatx.com", true }, { "jamesredmond.tk", true }, { "jamesrobertson.net", true }, { "jamesrobertson.sh", true }, @@ -64404,30 +74370,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jamesrush.com", true }, { "jamessliu.com", true }, { "jamessmith.me.uk", true }, + { "jamestgh.com", true }, + { "jamestilburg.nl", true }, { "jamestmart.in", true }, { "jamestown.de", false }, + { "jamestowncando-nc.gov", true }, { "jamesturnerstickley.com", true }, { "jameswarp.com", true }, + { "jameswhite.tech", true }, { "jamesxu.com", true }, + { "jameszero.net", true }, { "jamfm.tk", true }, { "jamhost.org", true }, { "jamie-read-photography.com", true }, { "jamieb.org", true }, { "jamiehansonyoga.com", true }, + { "jamiehenrybrown.co.uk", true }, { "jamielinux.com", true }, { "jamiemagee.co.uk", true }, { "jamiemagee.dk", true }, { "jamiematthews.ml", true }, { "jamiepleasants.com", true }, + { "jamiesnape.io", true }, { "jamieweb.net", true }, + { "jamiiforums.com", true }, + { "jaminidesign.com", true }, { "jamjestsimon.pl", true }, + { "jamloop.com", true }, { "jammucake.com", true }, + { "jammy4312.me", true }, { "jammysplodgers.co.uk", true }, { "jamonesrute.com", true }, { "jamonsilva.com", true }, - { "jamstackvietnam.com", true }, - { "jamstallt.se", true }, - { "jamstatic.fr", true }, + { "jamstatic.fr", false }, { "jamusa.tk", true }, { "jamyeprice.com", false }, { "jan-and-maaret.de", true }, @@ -64450,23 +74425,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "janavish.tk", true }, { "janbennink.com", true }, { "janbilek.cz", true }, - { "janbjerke.no", true }, { "janbretschneider.de", true }, { "janbruckner.de", true }, + { "jancosales.com", true }, { "jandenhertog.nl", true }, { "jandenul.com", true }, { "jandesign.at", true }, { "jandev.de", true }, { "jandj.yachts", false }, { "jandonkers.com", true }, + { "jandrliquidations.com", true }, { "jandroegehoff.de", true }, { "janduchene.ch", true }, - { "jane.com", true }, { "janelauhomes.com", true }, { "janelle-jamer.tk", true }, { "janellequintana.tk", true }, { "janenwouter.tk", true }, - { "janescottceramics.com", true }, + { "janes.com", true }, + { "janesaddiction.org", true }, { "janetandjohns.tk", true }, { "janetedkins.com", true }, { "janeweeber.com", true }, @@ -64480,6 +74456,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jani.media", true }, { "janik.cz", true }, { "janikrabe.com", true }, + { "janilowski.pl", true }, + { "janime.top", true }, { "janine-und-johannes.de", true }, { "janjoris.nl", true }, { "jankamp.com", true }, @@ -64489,22 +74467,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jannehonkonen.tk", true }, { "jannekekaasjager.nl", true }, { "jannes-althoff.de", true }, + { "jannesmeyer.com", false }, { "jannhaber.de", true }, + { "jannick-nielsen.dk", false }, + { "jannis-goeing.de", true }, { "jannisfink.de", true }, { "janokacer.sk", true }, { "janome.club", true }, { "janome.com.ua", true }, { "janonis.com", true }, + { "janoshida.hu", true }, { "janostheil.de", true }, + { "janphilip-bernius.de", true }, { "jans.cloud", true }, { "janschaumann.de", true }, { "jansendermatografie.nl", true }, { "janservfl.com", true }, + { "janslab.pl", true }, { "janssen.fm", true }, { "janterpstra.eu", true }, { "jantinaboelens.nl", true }, - { "janu-todo-list.herokuapp.com", true }, { "january.com", true }, + { "janulkowedomki.pl", true }, + { "janus-it.pl", true }, { "janv.it", true }, { "janvanmechelen.tk", true }, { "janvari.com", true }, @@ -64512,40 +74497,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "janvidresearch.com", true }, { "janw.me", true }, { "janwern.com", true }, + { "jao-collection.com", true }, { "jaot.info", true }, { "jaotusvork.ee", true }, { "japan-forum.nl", true }, { "japan-tent.com", true }, + { "japan-xxxtube.com", true }, + { "japan.sh", true }, { "japanasonic.ru", true }, { "japanchiropractic.com.br", true }, { "japanduhoc.com", true }, { "japanese-cuisine.com", true }, + { "japanese-dominatrix.com", true }, { "japanese-imperialism971.tk", true }, { "japanese-tantra-escort.com", true }, { "japaneseacupuncture.london", true }, + { "japaneseemoticons.org", true }, { "japanesekeyboard.net", true }, { "japanesemusic.tk", true }, { "japanesephotosite.tk", true }, { "japanesque.ru", true }, - { "japangids.nl", true }, { "japaniac.de", true }, { "japanknives.tk", true }, { "japannext.co.jp", true }, { "japanphilosophy.com", false }, + { "japanporns.pro", true }, { "japanroll.cf", true }, { "japansepuzzel.tk", true }, - { "japansm.com", true }, { "japantravel.tk", true }, { "japanwatches.xyz", true }, + { "japanwowsex.com", true }, { "jape.today", true }, + { "japi.org", true }, + { "japico.or.jp", true }, { "japlin.io", true }, { "japlin.tk", true }, { "japonskonamiru.cz", true }, { "japonyol.net", true }, + { "japornpics-video.com", true }, { "japornpics.com", true }, + { "jappleng.com", true }, { "jaquelin.tk", true }, + { "jaquishbiomedical.com", true }, { "jar.cool", true }, - { "jar.io", false }, { "jaraizaboli.tk", true }, { "jaramilloconstrucciones.pe", true }, { "jardelatacadao.com.br", true }, @@ -64554,14 +74548,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jardineras.online", true }, { "jardinesimperiales.com", true }, { "jaredfernandez.com", true }, - { "jaredfraser.com", true }, { "jaredkunz.com", true }, { "jaredonline.tk", true }, { "jaresourcehub.org", true }, { "jarett-lee.com", true }, + { "jaris.fi", true }, { "jarkkorahkonen.fi", true }, { "jarl.ninja", true }, { "jarlette.com", true }, + { "jarlstrom.com", true }, { "jarmandental.com", true }, { "jarmatys.pl", true }, { "jarmix.fi", true }, @@ -64585,31 +74580,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jarritosfrance.com", true }, { "jarroba.com", true }, { "jarrods.tech", true }, + { "jarry.io", true }, { "jarsater.com", false }, { "jarski.eu", true }, + { "jas-ac.com", true }, { "jas-team.net", true }, + { "jasasewaspg.com", true }, { "jasawebbisnis.com", false }, { "jasch.tk", true }, { "jaschaa.de", true }, { "jaseng.ga", true }, + { "jasewhite.com", true }, { "jashinchan.cn", true }, - { "jashvaidya.com", true }, { "jasik.xyz", true }, { "jasl.works", true }, { "jasminedirectory.com", true }, { "jasminefields.net", true }, { "jasminka.cz", true }, { "jasminlive.cam", true }, + { "jasminum.uk", true }, { "jasmyn.tk", true }, - { "jasnowidzkajowi.pl", true }, { "jasomill.at", true }, { "jason-isaacs.tk", true }, + { "jason.red", true }, { "jasonamorrow.com", true }, { "jasonchampagne.fr", true }, { "jasoncoopermd.com", true }, { "jasoncosper.com", true }, { "jasoncs.eu.org", true }, - { "jasongerber.ch", false }, { "jasongreenwell.com", true }, { "jasonhardin.me", true }, { "jasonisclever.com", true }, @@ -64621,9 +74619,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jasonthai.me", true }, { "jasonwei.nctu.me", true }, { "jasonwindholz.com", true }, + { "jasonwongwr.com", true }, { "jasper.link", true }, { "jasper.pt", true }, - { "jasperhammink.com", true }, + { "jasperhugo.com", true }, { "jasperhuttenmedia.com", true }, { "jaspernbrouwer.nl", true }, { "jasperpatterson.com", true }, @@ -64636,20 +74635,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jaspyrbooks.com", true }, { "jassecharlie.com", true }, { "jastrow.me", true }, - { "jaswantsinghrathore.com", true }, { "jaszbereny-vechta.eu", true }, + { "jatekjatek.hu", true }, { "jateng.press", true }, { "jatinagroup.com", true }, { "jatiwahidfurniture.com", false }, { "jatransportadora.com", true }, { "jaumepons.net", true }, { "jav.st", true }, - { "jav0x.com", true }, { "java-fan.tk", true }, + { "java-for-minecraft.com", true }, { "java-tracking.gq", true }, { "javaanalysisers.ga", true }, { "javaanalysisest.ga", true }, { "javabahia.tk", true }, + { "javabc.com", true }, { "javabot.ml", true }, { "javacakegames.com", true }, { "javachinna.com", true }, @@ -64659,17 +74659,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "javafluest.ga", true }, { "javan.de", true }, { "javanguiano.mx", false }, - { "javanie.com", true }, { "javapost.tk", true }, - { "javasaranamitrasejati.com", false }, + { "javasaranamitrasejati.com", true }, { "javascriptlab.fr", true }, { "javatraining.at", true }, { "javaweb.site", true }, { "javaxxz.com", true }, + { "javbob.com", true }, { "javedali.tk", true }, { "javedhasrat.com", true }, { "javfree.me", true }, - { "javhdmovies.com", true }, { "javi-soleil.tk", true }, { "javierbalvin.com", true }, { "javierbarrio.com", true }, @@ -64678,7 +74677,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "javiergddw.com", true }, { "javierguandalini.com", true }, { "javierjurado.tk", true }, - { "javierlorente.es", false }, { "javiermascherano.tk", true }, { "javiersanchez.tk", true }, { "javiscoffee.com", true }, @@ -64686,18 +74684,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "javleech.com", true }, { "javorina.tk", true }, { "javsod.top", true }, - { "javtv.cc", true }, { "jawharati.tk", true }, - { "jawn.ca", true }, { "jawo2008.pl", true }, { "jaxfstk.com", true }, { "jaxxnet.co.uk", true }, { "jaxxnet.org", true }, { "jay6.tech", true }, { "jayanthreddy.ml", true }, + { "jayantkageri.in", true }, { "jaybeez.tk", true }, { "jaybrokers.com", true }, - { "jaycouture.com", true }, + { "jaycor.co.za", true }, { "jayf.de", true }, { "jayfreestone.com", true }, { "jayharkess.uk", true }, @@ -64708,19 +74705,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jayjardine.ga", true }, { "jayjardine.gq", true }, { "jayjardine.ml", true }, + { "jaykuhns.com", true }, { "jaylee.us", true }, + { "jaylewis.us", true }, { "jaylineko.com", true }, { "jaymecd.rocks", true }, { "jaypandit.me", true }, { "jaypark.gq", true }, + { "jaypeeaman.in", true }, { "jaypeeonline.tk", true }, + { "jayrl.com", true }, + { "jaysanart.com", false }, { "jaysaw.me", true }, { "jayspage.tk", true }, + { "jayspov.net", true }, { "jaytauron.xyz", true }, { "jaytx.com", true }, { "jayveel.nl", true }, { "jayxon.com", true }, - { "jayxu.com", false }, + { "jayxu.com", true }, { "jazerxx.com", true }, { "jazminguaramato.com", true }, { "jazz-alliance.com", true }, @@ -64740,36 +74743,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jb0.de", true }, { "jb138.cc", true }, { "jballelectronics.com", true }, + { "jbarzoutfitters.com", true }, { "jbayetsecretariat.be", true }, { "jbbd.fr", true }, + { "jbbdev.com", true }, { "jbc88.cc", true }, { "jbcharleston.com", true }, { "jbcharlestonfss.tv", true }, + { "jbctransport.ca", true }, { "jbdesignfoundations.com", true }, { "jbdillon.com", true }, + { "jberlife.com", true }, { "jberlife.marketing", true }, { "jbeta.is", true }, { "jblackweb.com", true }, { "jblan.org", true }, - { "jbliss.net", true }, + { "jbloomphotography.com", true }, + { "jbmechanics.com", true }, { "jbnetwork.org", true }, + { "jboats.com", true }, { "jboho.com", true }, { "jbond.tk", true }, + { "jbootsma.com", true }, { "jbradaric.me", true }, { "jbridal.com.au", true }, { "jbs-jardins.ch", false }, + { "jbs.com.br", true }, { "jbsinternational.com", true }, { "jbsoftware.ca", true }, + { "jbspeakr.cc", true }, { "jbt-stl.com", true }, + { "jc-p2p.com", true }, + { "jc6.xyz", true }, + { "jc666.xyz", true }, { "jcadg.com", true }, { "jcaicedo.com", true }, { "jcaicedo.tk", true }, { "jcb.com", true }, + { "jcbaterias.com.br", true }, { "jcbgolfandcountryclub.com", true }, { "jccars-occasions.be", true }, + { "jcchen.art", true }, + { "jcchouinard.com", true }, { "jccrew.org", true }, { "jcdenast.tk", true }, + { "jcdesign.sk", true }, { "jcelectronics.com.au", true }, + { "jcf-office.com", true }, { "jchn.be", true }, { "jci.bio", true }, { "jci.care", true }, @@ -64819,17 +74839,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jcinet.net", true }, { "jcit.xyz", true }, { "jcleon.tk", true }, + { "jclp.cf", true }, { "jclynne.com", true }, { "jcmo.gov", true }, { "jcmunz.com", true }, + { "jcode.gov", true }, { "jcontspoord.nl", true }, { "jcor.me", false }, + { "jcoscia.com", true }, { "jcphotography.dk", true }, { "jcra.net", true }, { "jcrhcdwy.gov", true }, { "jcrobin56.fr", true }, { "jcsava.gov", true }, - { "jcsobrasyreformas.com", true }, { "jcsolutions.tk", true }, { "jcus.co", true }, { "jcvignoli.com", true }, @@ -64846,8 +74868,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jdd888.cc", true }, { "jdecommastermind.com", true }, { "jdefreitas.com", true }, - { "jdel.com.ph", true }, { "jdelgado.fr", true }, + { "jdhigh.com", true }, + { "jdhouse.com.br", true }, + { "jdjamescorp.com", true }, { "jdjohnsonmedia.com", true }, { "jdjohnsonwaterproofing.com", true }, { "jdlt.co.uk", true }, @@ -64856,15 +74880,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jdmgarage.com.au", true }, { "jdoi.pw", true }, { "jdpleisure.co.uk", true }, - { "jdproofing.com", true }, { "jdscastlehire.co.uk", true }, { "jdsecurity.com.au", true }, { "jdtangney.com", true }, { "jdtic.com", true }, { "jdtrust.net", true }, { "jdtrust.one", true }, - { "jdubya.info", true }, + { "jduarte.xyz", true }, { "je-vends.fr", false }, + { "je-voyage.net", true }, { "je.net.cn", true }, { "je2050.de", true }, { "jealousy.tk", true }, @@ -64874,7 +74898,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeancampa.com", true }, { "jeancardeno.com", true }, { "jeancarlos.tk", true }, + { "jeanclaudegolvin.com", true }, { "jeandanielfaessler.ch", true }, + { "jeanettevanrookhuizen.nl", true }, + { "jeangalea.com", true }, { "jeangarcia.tk", true }, { "jeaninformatico.tk", true }, { "jeankygourmet.com", true }, @@ -64886,6 +74913,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeannekunst.tk", true }, { "jeannelucienne.fr", true }, { "jeanneret-combustibles.ch", false }, + { "jeannette-py.fr", true }, { "jeanniegraefe.tk", true }, { "jeannotbel.tk", true }, { "jeanphilippe.io", true }, @@ -64895,20 +74923,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeans-stores.tk", true }, { "jeansbutik.tk", true }, { "jeansdemodacol.com", true }, - { "jeansdiscounter.de", true }, { "jeanslee.tk", true }, { "jeansmoda.tk", true }, { "jeansstyle.tk", true }, + { "jeanstastytreats.co.za", true }, { "jeayalar.com", true }, - { "jeboivlogs.nl", true }, { "jec-dekrone.be", true }, { "jecho.cn", true }, { "jecjacshop.com", true }, { "jecnetwork.gq", true }, + { "jecrange.com", true }, { "jed.site", true }, { "jeda.ch", true }, { "jeda.im", true }, { "jedatw.com", true }, + { "jedayoshi.me", true }, { "jedayoshi.tk", true }, { "jedcg.com", true }, { "jeddahlyn.nl", true }, @@ -64927,32 +74956,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeep-diagnost.ml", true }, { "jeep4ik.com", true }, { "jeepeg.com", true }, + { "jeepspares.com.au", true }, { "jeeptourpocos.com.br", true }, { "jeeran.com", true }, { "jeeranservices.com", true }, + { "jeetwin.com", true }, { "jeevanmag.tk", true }, { "jeevanpaul.in", false }, - { "jeewanmantra.com", true }, { "jef.yt", true }, - { "jefaisdelordi.com", true }, { "jefaisducafe.mywire.org", true }, { "jefcorlabs.com", true }, { "jeff-dom.ovh", true }, - { "jeff.forsale", true }, - { "jeff.tk", true }, { "jeff.win", true }, { "jeffcasavant.com", false }, { "jeffcloninger.net", true }, { "jeffdaviscountyga.gov", true }, { "jeffersoncountyks.gov", true }, + { "jeffersoncountyne.gov", true }, { "jeffersoncountyny.gov", true }, + { "jeffersoncountyor.gov", true }, { "jeffersoncountypa.gov", true }, + { "jeffersonknoxohio.gov", true }, { "jeffersonkyattorney.gov", true }, { "jeffersonohio.gov", true }, { "jeffersonregan.co.uk", true }, { "jeffersonregan.com", true }, { "jeffersonregan.net", true }, { "jeffersonregan.org", true }, + { "jeffersonsbourbon.com", true }, { "jeffersonvillepdin.gov", true }, { "jeffhoy.us", true }, { "jeffhoyphotography.com", true }, @@ -64965,12 +74996,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeffsanders.com", true }, { "jefrydco.id", true }, { "jefsweden.eu", true }, + { "jegkorongszovetseg.hu", true }, { "jegos.tk", true }, { "jehende.fr", true }, + { "jehjf.com", true }, { "jehovahsays.net", true }, { "jej.cz", true }, { "jej.sk", true }, - { "jeka.online", true }, { "jekadvantage.com", true }, { "jekhar.com", true }, { "jel-tech.com", false }, @@ -64987,19 +75019,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jelleluteijn.nl", true }, { "jelleluteijn.pro", true }, { "jelleraaijmakers.nl", true }, - { "jellybeanbooks.com.au", true }, + { "jellybeanpress.com", true }, { "jellyfin.spdns.eu", true }, { "jellyfish.co", true }, { "jellyfishlivewire.co.uk", true }, { "jellynails.tk", true }, - { "jellypepper.com", false }, + { "jellypepper.com", true }, { "jellysquid.me", true }, { "jelmer.co.uk", true }, { "jelmer.uk", true }, { "jelmoli-shop.ch", true }, - { "jelmyto.com", true }, + { "jelmyto.com", false }, { "jelo.tk", true }, { "jelobox.tk", true }, + { "jelocalise.fr", true }, { "jem.gov", true }, { "jem.style", true }, { "jembatankarir.com", true }, @@ -65008,38 +75041,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jemezsprings-nm.gov", true }, { "jemnezymy.com", true }, { "jemoreng.tk", true }, + { "jemputan-karyawan.site", true }, { "jems-il.gov", true }, + { "jemshoes.com", true }, { "jemyzdrowo.pl", true }, { "jena-fans-aurich.tk", true }, + { "jena.de", true }, { "jena.space", false }, { "jencshiny-org.tk", true }, { "jendela360.com", true }, { "jendialmeditation.com", true }, + { "jendies.com", true }, { "jenelle.ml", true }, { "jeneratorkiralama.name.tr", true }, { "jenever.amsterdam", true }, - { "jeney.hopto.org", true }, + { "jeney.eu", true }, { "jenin.ml", true }, { "jenkinscountyga.gov", true }, { "jenkinsry.fi", true }, { "jenn-pro-graphics.com", true }, { "jennahunt.net", true }, + { "jenne.com", true }, { "jennethaarfotografie.nl", true }, { "jennette.tk", true }, { "jennierobinson.com", true }, { "jenniferchan.id.au", true }, { "jenniferehle.tk", true }, { "jenniferengerwingaantrouwen.nl", true }, + { "jenniferfontaine.fr", true }, + { "jenniferhudsonshow.com", true }, + { "jenniferjoos.de", true }, { "jenniferlucia.com", true }, { "jennifermason.eu", true }, { "jennifermorrisonart.com", true }, { "jennifersauer.nl", true }, { "jenniferschmidt.com.au", true }, { "jennifertilly.tk", true }, - { "jenningsbet.com", true }, { "jenniwiltz.com", true }, { "jennyjones.tk", true }, + { "jennymovies.com", true }, { "jennysarl.ch", false }, + { "jennysbakery.com.au", true }, { "jennysource.tk", true }, { "jennystella.net", true }, { "jennythebaker.com", true }, @@ -65051,7 +75093,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jensdesmeyter.be", true }, { "jensrex.dk", true }, { "jents.ro", true }, - { "jenunudi.com", true }, { "jenyak.com", true }, { "jeoffrey-sanchez.ovh", true }, { "jeon.cf", false }, @@ -65061,52 +75102,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeps.fi", true }, { "jeremiahbenes.com", true }, { "jeremiahlee.com", true }, + { "jeremiebt.com", true }, { "jeremy-chen.org", true }, { "jeremy-gautier.com", true }, { "jeremy.hu", true }, + { "jeremyatwoodlaw.com", true }, { "jeremybentham.com", true }, { "jeremybloomfield.co.uk", true }, { "jeremyc.ca", false }, { "jeremycantu.com", true }, { "jeremycrews.com", true }, + { "jeremyfaton.me", true }, { "jeremyhodges.uk", true }, { "jeremynally.com", true }, { "jeremyness.com", true }, - { "jeremyrobinlyons.com", true }, - { "jeremysnotes.com", true }, - { "jeremytcd.com", true }, { "jeremywinn.com", true }, { "jeremywinn.xyz", true }, { "jericamacmillan.com", true }, { "jerichoproject.org", true }, - { "jering.tech", true }, { "jerisandoval.tk", true }, { "jermann.biz", true }, { "jeroendeneef.com", true }, { "jeroened.be", true }, { "jeroenensanne.wedding", true }, { "jeroenstekelenburg.nl", true }, - { "jeroldirvin.com", true }, { "jerome-r.tk", true }, { "jerome.to", true }, + { "jeromecountyid.gov", true }, { "jeromequezel.fr", true }, { "jerometejano.tk", true }, { "jerret.de", true }, { "jerridoswell.tk", true }, { "jerryabrams.com", false }, { "jerrybustillo.tk", true }, + { "jerrychacon.com", true }, { "jerrysretailstores.com", true }, { "jerrytindell.com", true }, { "jerryweb.org", true }, - { "jerrywithers.com", true }, { "jerryyu.ca", true }, + { "jersec.com", true }, { "jerseybikehire.co.uk", true }, { "jerseycounty-il.gov", true }, { "jerseycountyclerk-il.gov", true }, { "jerseyink.net", true }, { "jerseyjumpingbeans.co.uk", true }, { "jerseylvi2013.org", true }, - { "jerseyplantsdirect.com", false }, + { "jerseywater.je", true }, { "jerusalem.estate", true }, { "jerusalempersonals.ml", true }, { "jerusalempersonalsers.ga", true }, @@ -65114,6 +75155,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jerusalemplus.tv", true }, { "jesec.cn", true }, { "jesec.io", true }, + { "jesen.org", true }, { "jesiensredniowiecza.pl", true }, { "jesmatboutique.com", true }, { "jesmh.de", true }, @@ -65121,6 +75163,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jesperandersson.tk", true }, { "jespersen.tk", true }, { "jessacharlie.com", true }, + { "jessarhodespornstar.com", true }, { "jesscharlie.com", true }, { "jesseblum.com", true }, { "jessebollinger.com", true }, @@ -65128,16 +75171,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jessecharli.com", true }, { "jessecharlie.com", true }, { "jessecharlie.info", true }, + { "jessecharlie.net", true }, { "jessecharlie.org", true }, { "jessecharlienaser.com", true }, - { "jesseerbach.com", true }, { "jessekaufman.com", true }, { "jesseklaver.nl", true }, { "jessem.fr", true }, + { "jessenaser.com", true }, { "jessenaser.net", true }, { "jessenaser.org", true }, { "jesseonline.tk", true }, { "jessesjumpingcastles.co.uk", true }, + { "jessetorrenga.nl", true }, { "jessetrebil.com", true }, { "jessetrebilfoundationsystems.com", true }, { "jessevictors.com", true }, @@ -65145,12 +75190,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jessicabarends.nl", true }, { "jessicabenedictus.nl", false }, { "jessicaevrard.com", true }, - { "jessicagavin.com", true }, { "jessicahrehor.com", true }, { "jessicasmith3d.com", true }, { "jessicharlie.com", true }, { "jessieabraham.tk", true }, { "jessiecharlie.com", true }, + { "jessihod.com", true }, { "jessika-atelier.nl", true }, { "jesslynfietje.com", true }, { "jessycharlie.com", true }, @@ -65160,32 +75205,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jesucristo.ga", true }, { "jesuisadmin.fr", true }, { "jesuisunpapageek.fr", true }, + { "jesuiszen.fr", true }, { "jesus-rock.tk", true }, { "jesuscapitan.tk", true }, { "jesuscnasistente.com", true }, { "jesusda.tk", true }, { "jesusdenazaret.com", true }, { "jesusnazarenobaena.tk", true }, + { "jesusplusnothing.com", true }, { "jesusthegoodshepherd.org", true }, { "jesusvasquez.tk", true }, + { "jet.su", true }, { "jetable.org", true }, - { "jetaninchina.com", true }, { "jetapi.org", true }, { "jetbbs.com", true }, + { "jetcard.co.uk", true }, { "jetchartercanada.com", true }, { "jetchartereurope.com", true }, { "jetcost.com", true }, { "jetcraft.tk", true }, { "jetfirenetworks.com", true }, { "jetflex.de", true }, - { "jethealthsolutions.com", true }, { "jetkittens.co.uk", true }, { "jetmirshatri.com", false }, { "jetmusic.tk", true }, { "jetpack.com.ar", true }, { "jetsadabetchoke77.com", true }, + { "jetsetretiree.com", true }, { "jetsieswerda.nl", true }, - { "jetsome.co", true }, + { "jetsome.co", false }, { "jetson.tk", true }, { "jetstudio.ch", false }, { "jetswhiteout.com", true }, @@ -65196,6 +75244,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jetular.com", true }, { "jetular.net", true }, { "jetwhiz.com", true }, + { "jetzhang.com", true }, { "jetzt-elektromobil.de", true }, { "jeugdbrandweerbladel.tk", true }, { "jeugdclubjia.tk", true }, @@ -65204,23 +75253,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jeugdraad.gent", true }, { "jeurissen.co", true }, { "jeuxerotiques.net", true }, + { "jevalide.ca", true }, { "jevel-mag.tk", true }, { "jevisite.ca", true }, { "jewadvert.ml", true }, { "jewaedv.de", true }, { "jeweet.net", true }, { "jewelcaddesigns.com", true }, + { "jewellerynet.com", true }, { "jewelleryoutlook.com", true }, - { "jewelleryrack.com", true }, { "jewelry-directories.tk", true }, { "jewelrycoverers.ga", true }, + { "jewishboston.com", true }, { "jewishboyscouts.com", true }, + { "jewishfed.org", true }, { "jewishinseattle.org", true }, { "jewishjourneys.org", true }, { "jewishmusic.tk", true }, { "jewishphilanthropies.org", true }, + { "jewishphoenix.com", true }, { "jewishquotations.com", true }, { "jexler.net", true }, + { "jey-line.de", true }, { "jez.nl", true }, { "jezebel.com", true }, { "jezebelsromance.com", true }, @@ -65228,7 +75282,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jezero.tk", true }, { "jezura.cz", true }, { "jezzicat.org", true }, - { "jf-avenidasnovas.pt", true }, { "jf-beco.pt", true }, { "jf-fotos.de", true }, { "jf-igrejanovadosobral.pt", true }, @@ -65242,33 +75295,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jfjtransport.com", true }, { "jfklibrary.gov", true }, { "jfmdevelopment.ml", true }, + { "jfml.lu", true }, { "jfr.im", true }, { "jfreitag.de", true }, + { "jftn.nl", true }, { "jftw.org", true }, + { "jfuturist.com", true }, { "jfvaccountants.nl", true }, + { "jfy.is", true }, { "jfy.jp", true }, { "jg-skid.me", true }, + { "jg-tc.com", true }, { "jg078.com", true }, + { "jgeverest.com", true }, { "jgid.de", true }, { "jgke.fi", true }, + { "jgmenterprises.ca", true }, + { "jgoldbergmd.com", true }, { "jgoldgroup.com", true }, + { "jgomezweb.es", true }, { "jgpeterson.com", true }, { "jgregory.co.uk", true }, { "jgregory.uk", true }, { "jgsbrickwork.co.uk", true }, { "jgwb.de", true }, { "jgwb.eu", true }, + { "jh-group.net", true }, { "jh4.eu", true }, { "jhandke.de", true }, { "jhatpatjobs.com", true }, + { "jhaudio.com", true }, { "jhaveri.net", true }, { "jhburton.co.uk", true }, { "jhcommunitysports.co.uk", true }, { "jhe.li", true }, + { "jhfunerals.com.au", true }, { "jhill.de", true }, + { "jhj.jp", true }, { "jhmrcm.com", true }, - { "jhollandtranslations.com", true }, - { "jhoncampos.com", true }, { "jhonesmarcos.tk", true }, { "jhonmurillo.ml", true }, { "jhost.gq", true }, @@ -65276,21 +75340,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jhw3d.com", true }, { "jiacl.com", true }, { "jiahao.codes", true }, - { "jialinwu.com", true }, + { "jiai.cf", true }, + { "jiai.gq", true }, + { "jiai.ml", true }, + { "jiai.tk", true }, + { "jialiangkang.com", true }, { "jiami.dog", false }, { "jianbin.wang", true }, { "jiangmei.ml", true }, { "jiangmen.tk", true }, { "jiangshiart.com", true }, { "jiangwu.eu", true }, - { "jiangxu.site", true }, - { "jiangzm.com", false }, + { "jianhuo.cf", true }, + { "jianhuo.ml", true }, { "jianny.me", true }, - { "jianshu.com", true }, + { "jianren.cf", true }, + { "jianren.ml", true }, + { "jianseng.com", true }, { "jianwei.wang", true }, + { "jianyu.io", true }, { "jianyuan.art", true }, { "jianyuan.pro", true }, { "jianzhan.com", true }, + { "jiaoliuben.com", false }, + { "jiaoyu8.cn", true }, { "jiaqiang.vip", true }, { "jiatingtrading.com", true }, { "jiaty.com", true }, @@ -65298,10 +75371,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jiayi.eu.org", true }, { "jiayi.life", true }, { "jiazhao.ga", false }, + { "jibe.com", true }, + { "jibeapply.com", true }, + { "jibecdn.com", true }, { "jibungoto.jp", true }, { "jicaivvip.com", true }, { "jichi.io", true }, { "jichi.nz", true }, + { "jiehun.com.cn", true }, { "jieshangwei.com", true }, { "jieyang2016.com", true }, { "jif.gc.ca", true }, @@ -65310,29 +75387,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jigyoushoukei.co.jp", true }, { "jiheng.tk", true }, { "jiid.ga", true }, + { "jiji.co.ci", true }, { "jiji.co.ke", true }, + { "jiji.co.ma", true }, { "jiji.co.rw", true }, { "jiji.co.tz", true }, + { "jiji.com.bd", true }, { "jiji.com.et", true }, { "jiji.com.gh", true }, { "jiji.ke", true }, + { "jiji.lk", true }, { "jiji.ng", true }, + { "jiji.sn", true }, { "jiji.ug", true }, { "jijistatic.com", true }, - { "jikarentalcar.com", true }, { "jikegu.com", true }, - { "jikken.de", true }, + { "jikei-reha.com", true }, + { "jikken.de", false }, { "jilaninteraktif.tk", true }, { "jilking.ga", true }, { "jillamy.com", true }, { "jillvirus.tk", true }, { "jilworldwide.org", true }, { "jimautoservice.pl", true }, + { "jimbeam-welcomesessions.at", true }, { "jimbiproducts.com", true }, { "jimbosprint.com", true }, { "jimbrown.org", true }, { "jimbutlerkiaparts.com", true }, { "jimcoggeshall.com", true }, + { "jimconacher.pro", true }, { "jimdorf.com", true }, { "jime-hlavou.cz", true }, { "jimeaton.com", true }, @@ -65341,56 +75425,75 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jimfranke.nl", true }, { "jimgarrigan.info", true }, { "jimgarrigan.nyc", true }, + { "jiminny.com", false }, { "jimisfanvan.nl", true }, { "jimizhou.xyz", true }, + { "jimkanabar.fr", true }, { "jimkimmel.com", true }, { "jimmiestore.com", true }, { "jimmycai.com", true }, { "jimmycarterlibrary.gov", true }, + { "jimmycn.com", true }, { "jimmydomingo.tk", true }, { "jimmykey.com", false }, + { "jimmynelson.com", true }, { "jimobbs.tk", true }, + { "jimpl.com", true }, { "jimsheatandcool.com", true }, { "jimslop.nl", true }, { "jimucho.online", true }, { "jimvophotography.tk", true }, + { "jimwhitesell.com", true }, { "jimwoodrealty.com", true }, { "jimwoodrealty.help", true }, { "jin-design.si", true }, { "jinancy.fr", true }, { "jinanshen.com", true }, + { "jinbbq.com", true }, { "jinbijin.nl", true }, { "jinbo123.com", false }, { "jinbowiki.org", true }, + { "jinbuguo.com", true }, { "jinduoduo369.com", true }, { "jinduoduo666.com", true }, { "jinduoduo888.com", true }, { "jinfbmanagement.com", true }, { "jing-in.net", true }, - { "jing.su", true }, { "jingbo.fan", true }, { "jinglebugs.co.nz", true }, { "jingmi.com.tw", true }, + { "jinhaagency.com", true }, + { "jinhaagency1.com", true }, { "jinja.ai", true }, + { "jinjafx.io", true }, { "jinjun.top", true }, + { "jinkou.cf", true }, + { "jinkou.ga", true }, + { "jinkou.gq", true }, + { "jinkou.ml", true }, { "jinliming.ml", true }, { "jino.gq", true }, + { "jinshabu.net", true }, { "jintaiyang123.org", true }, { "jiogo.com", true }, - { "jiotvdth.com", true }, + { "jiourl.com", true }, { "jip2011.jp", true }, - { "jira.com", false }, + { "jira.com", true }, + { "jirehlov.cn", true }, + { "jirehlov.com", true }, { "jiretvariedades.com", true }, + { "jiri-vincour.cz", true }, { "jiriholy.cz", true }, - { "jiripik.com", true }, { "jirkanch-ayollar.ga", true }, { "jirkanch-ayollar.ml", true }, { "jisai.net.cn", true }, + { "jisaudavel.com.br", true }, { "jischool.org", true }, - { "jiseigames.com", true }, + { "jiserack.com", true }, { "jisnashville.gov", true }, { "jitendrapatro.me", true }, { "jitprod.com", true }, + { "jitsipatapoe.ddns.net", false }, { "jittruckparts.com", true }, { "jiudao.com", true }, { "jiveinvestments.com", true }, @@ -65399,9 +75502,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jixun.eu", true }, { "jixun.moe", true }, { "jixun.uk", true }, - { "jiyou.pw", true }, + { "jiyou.pw", false }, { "jiyuu-ni.com", true }, { "jiyuu-ni.net", true }, + { "jizhazha.com", true }, { "jizzoh.com", true }, { "jizzoh.net", true }, { "jizzoh.org", true }, @@ -65413,29 +75517,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jj9397.com", true }, { "jj9721.com", false }, { "jj9728.co", true }, - { "jjhampton.com", true }, + { "jjfxz.com", true }, { "jjj.blog", true }, + { "jjjj.loan", true }, + { "jjlandscapedesign.com", true }, { "jjlvk.nl", true }, + { "jjonaws.com", true }, + { "jjphotographyia.com", true }, { "jjsguitarpickups.com", true }, { "jjsmaccountants.com", true }, { "jjspartyhire.co.uk", true }, { "jjsummerboatparty.co.uk", true }, { "jjzmaj.tk", true }, - { "jk-entertainment.biz", true }, { "jk-forensics.de", true }, + { "jk-regeltechnik.de", true }, { "jk-rjevka.gq", true }, { "jkarteaga.tk", true }, - { "jkbfabrics.com", true }, + { "jkbfabrics.com", false }, { "jkbizsolutions.org", true }, - { "jkdhn.me", true }, { "jkessen.de", true }, { "jkest.cc", true }, - { "jkfindings.com", true }, + { "jkfasham.com.au", true }, { "jkg.tw", true }, { "jki.io", true }, { "jkinteriorspa.com", true }, { "jkloli.tk", true }, - { "jkmoving.com", true }, + { "jkmoving.com", false }, { "jkng.eu", true }, { "jkrcuidadopersonal.com", true }, { "jkrippen.com", false }, @@ -65443,19 +75550,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jktu.cc", true }, { "jkuu.org", true }, { "jkv-media.cloud", true }, + { "jkws2.nl", true }, { "jkyuan.tk", true }, { "jl-dns.eu", true }, { "jl-dns.nl", true }, { "jl-exchange.nl", true }, + { "jl-k.com", true }, { "jl-mail.nl", true }, { "jl-picard.tk", true }, { "jlbleakley.com", true }, { "jld.paris", true }, { "jldrenergysaver.com", true }, - { "jlglobal.shop", true }, + { "jliu.xyz", true }, { "jlkhosting.com", true }, - { "jlks.org", true }, { "jlmintegrated.com.au", true }, + { "jlmirall.es", true }, { "jlmunn.com", true }, { "jloh.co", true }, { "jloh.codes", true }, @@ -65467,12 +75576,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jlr-luxembourg.com", true }, { "jls.idv.tw", true }, { "jltcsecuritygroup.com", true }, + { "jltctech.com", true }, { "jlulug.org", true }, { "jlwagner.net", true }, + { "jm-madeira.pt", true }, + { "jm73umh.pw", true }, { "jm9.co", true }, { "jmanalansan.com", true }, + { "jmango360.com", true }, { "jmap.support", true }, { "jmarciniak.it", true }, + { "jmarineau.com", true }, { "jmb.lc", true }, { "jmbmexico.com", true }, { "jmbproject.ga", true }, @@ -65480,7 +75594,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jmce.eu", true }, { "jmcleaning.services", true }, { "jmdekker.it", true }, - { "jmdiesel.com", true }, { "jmedesign.tk", true }, { "jmedved.com", true }, { "jmeno.eu", true }, @@ -65492,19 +75605,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jmisern.com", true }, { "jmk.hu", true }, { "jmlegrand.com", true }, - { "jmlp.fr", true }, + { "jmm.io", true }, { "jmmanadobitung.co.id", false }, + { "jmn.pl", true }, + { "jmob.loan", true }, { "jmonagas-portfolio.ml", true }, { "jmorahan.net", true }, { "jmp.chat", true }, { "jmpb.hu", true }, { "jms8.net", true }, + { "jmservices.pro", true }, { "jmsjms.cc", true }, { "jmsjms.me", true }, { "jmsjms.org", true }, { "jmsjms.xyz", true }, { "jmsmarcelo.tk", true }, - { "jmsole.cl", true }, { "jmsolodesigns.com", true }, { "jmsquall.tk", true }, { "jmssg.jp", true }, @@ -65519,16 +75634,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jnaroofing.co.za", true }, { "jnathatchers.co.za", true }, { "jncie.eu", true }, + { "jnewhook.ca", true }, { "jnjdj.com", true }, + { "jnjpolymer.com", true }, { "jnko.cz", true }, { "jnktn.tv", true }, { "jnm-art.com", true }, + { "jnmpainting.co", true }, { "jnmusicgroup.com", true }, - { "jnordell.com", true }, - { "jnovonj.com", true }, - { "jnp.ooo", true }, { "jnr-industry.tk", true }, - { "jnshome.com", true }, + { "jns.org", true }, { "jnssnfotografie.nl", true }, { "jnsz.hu", true }, { "jnx.dk", true }, @@ -65536,34 +75651,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jo-jo-koi.tk", true }, { "jo3-w3b-d3v.com", true }, { "joa-ebert.com", true }, + { "joa.fr", true }, { "joachimvanrossenberg.com", true }, { "joanmoreira.tk", true }, { "joannechtler.com", true }, + { "joannekemarchal.nl", true }, { "joanofarcmtcarmel.org", true }, { "joansoy.com", true }, { "joaobautista.com", false }, { "joaojunior.com", true }, { "joaoorvalho.com", true }, - { "joaopinto.pt", true }, { "joaosampaio.com", true }, { "joaosampaio.com.br", true }, + { "joaquimfialfotografia.com", true }, { "job-acasa.tk", true }, { "job-chocolat.jp", true }, + { "job-goo.com", true }, { "job-jobs.pl", true }, - { "job-listing.com", true }, + { "job-promotion.jp", true }, { "job-uber.com", true }, { "job.biz.tr", true }, { "job2day.com.ua", true }, + { "jobadx.com", true }, { "jobalicious.nl", true }, + { "jobanzeigen.de", true }, { "jobbkk.com", true }, { "jobbnorge.no", true }, { "jobbsafari.no", true }, { "jobbsafari.se", true }, { "jobcenter.tk", true }, { "jobcie.com", true }, + { "jobcorps.gov", true }, + { "jobcorpsy2y.com", false }, + { "jobers.co.zw", true }, { "jobflyapp.com", false }, { "jobfresh.ga", true }, - { "jobfrog.com.au", true }, { "jobfury.com", true }, { "jobgenic.com", true }, { "jobhouse.jp", true }, @@ -65572,14 +75694,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jobin.care", true }, { "jobindex.dk", true }, { "jobit.gr", true }, - { "jobkontor.com", true }, { "joblab.com.ua", false }, { "joblab.uk", true }, { "joblife.co.za", true }, { "joblover.ml", true }, - { "jobmi.com", true }, - { "jobmiplayground.com", true }, - { "jobnas.com", false }, + { "jobmarkt21.com", true }, + { "jobnas.com", true }, + { "joboutlook.gov.au", true }, { "jobrus.ga", true }, { "jobrus.ml", true }, { "jobs-in-the-middle-east.tk", true }, @@ -65587,28 +75708,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jobs.gov.scot", true }, { "jobs.schwarz", true }, { "jobs.su", true }, + { "jobs.ua", true }, { "jobs4sales.ch", true }, + { "jobsboard24.com", true }, + { "jobscan.co", true }, + { "jobsconnected.com", true }, { "jobscore.com", true }, + { "jobscout24.ch", true }, { "jobseekeritalia.it", true }, { "jobsindemedia.nl", true }, - { "jobsinwales.net", true }, + { "jobsineachstate.com", true }, { "jobsisbrown.com", true }, { "jobsjj.com", true }, { "jobskilled.co.za", true }, { "jobsknowlgee.tk", true }, { "jobsmali.ml", true }, { "jobsmarthasvineyard.com", true }, + { "jobsmnc.co.id", true }, { "jobsnearme.london", true }, - { "jobsocity.com", false }, { "jobsoid.com", true }, { "jobsportalbookmarking.tk", true }, { "jobsuchmaschine.ch", true }, - { "jobtarget.com", true }, { "jobtestprep.it", false }, { "jobtools.tk", true }, { "jobtread.com", true }, + { "jobulk.com", true }, { "joburgplumbing.co.za", true }, - { "jobverse.hu", true }, { "jobvoyager.com", true }, { "jobwinner.ch", true }, { "jobynet.tk", true }, @@ -65619,9 +75744,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jochem.cc", true }, { "jochem.pro", false }, { "jochem.sh", true }, + { "jock2go.eu", true }, { "jockbusuttil.co.uk", true }, { "jockbusuttil.com", true }, { "jockbusuttil.uk", true }, + { "jocomo.gov", true }, { "jocuri-noi.tk", true }, { "jocurionline.eu", true }, { "jodaniels.photography", true }, @@ -65637,36 +75764,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joed.tk", true }, { "joedavison.me", true }, { "joedeblasio.com", true }, + { "joedight.net", true }, { "joedoyle.us", true }, { "joedroll.com", true }, { "joefixit.co", true }, { "joefixit.co.uk", true }, { "joehenry.co.uk", true }, { "joejacobs.me", true }, - { "joekarlsson.com", true }, { "joel-mayer.de", true }, { "joel.coffee", true }, + { "joelandersen.me", true }, { "joelengel.com", true }, { "joelfries.com", true }, { "joelgugler.com", true }, { "joelito.tk", true }, { "joelj.org", true }, + { "joelkoen.com", true }, { "joelle.me", true }, { "joelleandpeter.co.uk", true }, { "joelleisthatbitch.tk", true }, + { "joellelew.is", true }, { "joellev.nl", true }, { "joellimberg.com", true }, { "joellombardo.com", false }, { "joelmunch.com", true }, + { "joelpogar.com", true }, { "joelving.dk", false }, { "joepitt.co.uk", false }, { "joerg-wellpott.de", true }, { "joergschneider.com", true }, { "joerss.at", true }, + { "joesalter.com", true }, { "joeseago.com", false }, { "joeshare.info", true }, { "joeshimkus.com", true }, { "joeskup.com", true }, + { "joesmotorpool.fr", true }, { "joesniderman.com", true }, { "joesniderman.net", true }, { "joesniderman.org", true }, @@ -65678,11 +75811,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joetyson.me", true }, { "joeyfelix.com", true }, { "joeyhoer.com", true }, + { "joeysglassbaytown.com", true }, { "joeysmith.com", false }, { "joeyvanvenrooij.nl", true }, { "joeyvilaro.com", true }, { "jofel-kinderkleding.tk", true }, { "jofogas.hu", true }, + { "jogg.nl", true }, { "joggers.tk", true }, { "joggingtips.ga", true }, { "jogi-server.de", true }, @@ -65692,14 +75827,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jogorama.com.br", false }, { "jogosdeanimais.org", true }, { "jogosecodes.com", false }, - { "jogosfutebolhoje.pt", true }, - { "jogoshoje.io", true }, + { "jogoshoje.com", true }, + { "jogoshoje.io", false }, { "jogwitz.de", true }, { "johan-koffeman.tk", true }, { "johand.io", true }, { "johanlog.com", true }, { "johann.tk", true }, + { "johanna-besmier.fr", true }, { "johanna.gallery", true }, + { "johannabest.com", true }, { "johannaojanen.com", true }, { "johannavarmala.fi", true }, { "johannes-bauer.com", true }, @@ -65715,8 +75852,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johego.org", true }, { "johlmike.com", true }, { "john2point0.com", true }, + { "johnabraham.net", true }, { "johnathanhasty.com", true }, { "johnball.co", true }, + { "johnbeerens.com", true }, { "johnbeil.com", true }, { "johnblackbourn.com", true }, { "johnblackwell.net", true }, @@ -65736,15 +75875,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johndonmoyer.com", true }, { "johnex.se", true }, { "johnfulgenzi.com", true }, - { "johngallias.com", false }, { "johngmchenrymd.com", true }, { "johngreatwood.com", true }, - { "johnhgaunt.com", true }, + { "johnhenderson-god.com", true }, + { "johniii.co", true }, { "johninwood.com", true }, { "johnjayro.com", true }, { "johnjohnsons.tk", true }, { "johnkastler.net", true }, { "johnkraal.com", true }, + { "johnlewis.com", true }, { "johnload.tk", true }, { "johnmac.cn", true }, { "johnmalloneemd.com", false }, @@ -65752,27 +75892,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johnmcintosh.pro", true }, { "johnmellison.com", true }, { "johnmichel.org", true }, - { "johnmillerdesign.com", true }, + { "johnmillerdesign.com", false }, { "johnno.be", true }, { "johnnybegood.tk", true }, { "johnnybet.com", true }, { "johnnybetstaging.com", true }, { "johnnybsecure.com", true }, + { "johnnycastlepornstar.com", true }, { "johnnydoe.tk", true }, + { "johnnyofans.com", true }, { "johnnysandaire.com", true }, { "johnocallaghan.tk", true }, + { "johnocera.com", true }, { "johnopdenakker.com", true }, + { "johnoreilly.org.uk", true }, { "johnroberts.me", true }, { "johnrockefeller.net", true }, { "johnrosen.xyz", true }, + { "johnrosen1.com", true }, { "johnrosewicz.com", true }, + { "johnsoncowy.gov", true }, { "johnsongenealogy.net", true }, { "johnsonho.net", true }, { "johnsons.tk", true }, { "johnsonsca.com", true }, { "johnsonsuk.com", true }, { "johnspion.tk", true }, + { "johnstownpa.gov", true }, + { "johnstownrockcowi.gov", true }, { "johnswarbrick.com", true }, + { "johnthenerd.com", true }, { "johntomasowa.com", true }, { "johntrujillomd.com", true }, { "johnvanhese.nl", true }, @@ -65780,35 +75929,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "johny.tv", true }, { "johnyytb.be", true }, { "johutha.ch", true }, - { "joi-bangla.tk", true }, { "joi-dhl.ch", false }, - { "joifur.com", true }, + { "joi.onl", true }, + { "join-aomori.jp", true }, + { "join.com", true }, { "joinamericacorps.gov", true }, { "joinamericorps.gov", true }, { "joincahoot.com", true }, - { "joincareerfair.com", true }, + { "joinclyde.com", true }, + { "joindiaspora.com", true }, + { "joinentre.com", true }, { "joinet.com", true }, { "joinfear.tk", true }, { "joingy.com", true }, { "joingy.net", true }, { "joingy.org", true }, - { "joinholt.com", true }, { "joinhonor.com", true }, - { "joinmatrix.rocks", true }, { "joinmobilizon.org", true }, { "joinpeertube.org", true }, { "jointheunseen.com", true }, { "jointotem.com", true }, { "jointsache.com", true }, - { "jointworks.com.au", true }, { "joinus-outfits.nl", true }, + { "joj.sk", true }, { "jojo-kiss.com", true }, { "jojo-pieism.tk", true }, - { "jojosplaycentreandcafeteria.co.uk", true }, + { "jojobete.com", true }, { "jokateszunk.hu", true }, { "jokedalderup.nl", true }, { "jokerme.com", true }, - { "jokerscloud.de", true }, { "jokersro.tk", true }, { "jokertv.ovh", true }, { "jokesbykids.com", true }, @@ -65820,63 +75969,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jolienoir.net", true }, { "joliet.gov", true }, { "joliettech.com", true }, + { "jolihi.de", true }, + { "joline.me", true }, { "jolinebrussel.nl", true }, { "jollausers.de", true }, { "jolle.io", true }, - { "jolliffeinstitute.com", true }, { "jollyfun.tk", true }, { "jollygoodspudz.ca", true }, { "jollykidswobbleworld.co.uk", true }, { "jollytotschildminder.com", true }, + { "jollytur.com", true }, { "jolo.software", true }, { "jolokia.ch", true }, + { "jomactransport.com", true }, { "jomagus.de", true }, { "jomibe.de", true }, { "jomjohor.my", true }, + { "jomla.ae", true }, { "jomo.tv", true }, { "jomsolat.tk", true }, - { "jon8rfc.homeip.net", true }, + { "jon8rfc.homeip.net", false }, { "jonadamich.tk", true }, { "jonahburke.com", true }, { "jonahperez.com", true }, { "jonahtheprophet.tk", true }, - { "jonainhetwild.nl", true }, { "jonandnoraswedding.com", true }, { "jonas-thelemann.de", true }, { "jonas.me", true }, { "jonasberger.com", true }, { "jonasbrothers-la-jonaticas.tk", true }, { "jonasdiego.tk", true }, + { "jonasgregersen.com", true }, + { "jonasgroth.se", false }, { "jonasherkel.de", true }, { "jonaskarlssonfoto.se", true }, { "jonaskjodt.com", true }, { "jonaskoeritz.de", true }, { "jonaskruckenberg.de", false }, - { "jonasled.de", true }, { "jonaslovatouniverse.tk", true }, - { "jonasminder.ch", true }, { "jonasvdc.info", true }, { "jonasvildmark.com", true }, { "jonaswitmer.ch", true }, { "jonatan.gq", true }, { "jonathan-apps.com", true }, - { "jonathan.us.com", true }, + { "jonathan-himmelreich.de", true }, { "jonathancarter.org", true }, { "jonathandaleswindle.com", true }, - { "jonathandupree.com", true }, { "jonathanisaac.com", true }, { "jonathanlara.com", true }, { "jonathanmassacand.ch", true }, + { "jonathanpartlow.com", true }, { "jonathanrobichaud.ca", true }, - { "jonathanrobichaud.gq", true }, + { "jonathanrys.com", true }, { "jonathansanchez.pro", true }, { "jonathansomoza.it", true }, - { "jonathantaylorthomas.tk", true }, { "jonathanwisdom.com", true }, { "jonba.tk", true }, { "jonbarron.cf", true }, { "jonblankenship.com", true }, - { "joncellini.com", true }, { "jondarby.com", true }, { "jondevin.com", true }, { "jondowdle.com", false }, @@ -65904,7 +76054,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jonin.tk", true }, { "jonin2.tk", true }, { "jonincharacter.com", true }, - { "jonirrings.com", true }, + { "jonipuhakka.fi", true }, { "jonizatorywody24.pl", true }, { "jonkerkamman.tk", true }, { "jonkermedia.nl", false }, @@ -65925,44 +76075,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jons.org", true }, { "jonscaife.com", true }, { "jonsey.co", true }, + { "jonshelton.com", true }, { "jonslife.tk", true }, + { "jonssheds.com", true }, { "jonssheds.direct", true }, { "jonstar.tk", true }, { "jony.tk", true }, - { "jooblis.com", false }, + { "joo.ru", true }, { "joodari.fi", true }, { "jooksuratas.ee", true }, { "jooli.tk", true }, + { "joom.com", true }, + { "joomag.com", true }, { "joomearaweb.tk", true }, { "joomla-leipzig.com", true }, { "joomlaclub.ch", true }, { "joomladeveloper.ru", true }, { "joomlaguru.pl", true }, - { "joomlon.com", false }, { "joompress.biz", true }, { "joona.pw", true }, { "joonstudios.com", true }, { "joopzy.com", true }, { "joorshin.ir", true }, - { "joostbovee.nl", true }, + { "joostdeheer.nl", true }, { "joostmaglev.nl", true }, { "joostvanderlaan.nl", true }, { "jootshop.ga", true }, - { "jopestkil.com", true }, + { "joovy.com", true }, + { "jopestkil.com", false }, { "jophson.tk", true }, - { "joppies.com", true }, { "joqi4.gq", true }, { "joran.org", true }, { "jorcus.com", true }, { "jordan-armstrong.tk", true }, { "jordan-collector.tk", true }, { "jordan-jungk.de", true }, + { "jordancards.com", true }, { "jordandevelopment.com", true }, { "jordanhamilton.me", true }, - { "jordankmportal.com", true }, + { "jordanlys.com", true }, { "jordanmetal.tk", true }, + { "jordanmlu.nl", true }, { "jordannight.net", true }, { "jordanp.engineer", true }, + { "jordanpark.com", false }, { "jordanprice.ml", true }, { "jordanprogrammer.tk", true }, { "jordanrey.net", true }, @@ -65972,6 +76128,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jordansmovies.tk", true }, { "jordansrequests.tk", true }, { "jordanstrustcompany.com", true }, + { "jordanwd.com", true }, { "jordhy.com", true }, { "jordibelgraver.email", true }, { "jordibelgraver.eu", true }, @@ -65994,6 +76151,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jorritstollman.com", false }, { "jorsev.com", true }, { "jos-verstappen-fan.tk", true }, + { "josaa.nic.in", true }, { "josannedesign.tk", true }, { "josc.com.au", true }, { "joscares.com", true }, @@ -66010,27 +76168,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joseflegal.com", true }, { "josefottosson.se", true }, { "josefranca.pt", false }, - { "josegpt.com", true }, - { "josejimenezgonzalez.es", true }, { "josejorques.tk", true }, { "joseluisberrocal.tk", true }, { "josemariavazquez.com", true }, { "josemortellaro.com", true }, { "josenastrid.tk", true }, - { "joseneto.art", true }, { "josepbel.com", true }, { "josephalexander.media", true }, { "josephanthony.tk", true }, { "josephbarela.com", true }, { "josephbleroy.com", true }, + { "josephcz.com", true }, { "josephcz.win", false }, { "josephcz.xyz", true }, { "josephgeorge.com.au", true }, { "josephmarino.net", true }, { "josephojo.com", true }, { "josephpinder.com", true }, - { "josephrichard.com", true }, { "josephsniderman.com", true }, + { "josephsniderman.net", true }, { "josephsniderman.org", true }, { "josephv.website", true }, { "josephwright.co.uk", true }, @@ -66038,32 +76194,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joserafaelsosa.tk", true }, { "joserecetas.com", true }, { "josericaurte.com", true }, + { "josestiller.de", true }, + { "joseventos.com", true }, + { "josh.life", true }, { "joshanders.com", true }, + { "joshbyrne.com.au", true }, + { "joshcaluette.com", true }, { "joshdiamant.com", true }, { "joshfoley.co.uk", true }, { "joshgilson.com", true }, - { "joshgrancell.com", true }, { "joshgroban.tk", true }, { "joshharmon.me", true }, { "joshhoffer.com", true }, { "joshimedical.com", true }, - { "joshjanzen.com", true }, { "joshking.com", true }, { "joshliba.com", true }, { "joshlovephotography.co.uk", true }, - { "joshmoulin.com", true }, - { "joshpanter.com", false }, { "joshrickert.com", true }, { "joshruppe.com", true }, - { "joshs.photos", true }, { "joshschmelzle.com", true }, + { "joshthewanderer.com", true }, { "joshu.am", true }, { "joshua-kuepper.de", true }, + { "joshua.law", true }, { "joshuadiamant.com", true }, + { "joshuagoss.com", true }, { "joshuajohnson.ca", true }, { "joshuamessick.com", true }, + { "joshuanishimura.xyz", true }, { "joshuaschmitt.us", true }, + { "joshuastock.net", true }, { "joshygeo.tk", true }, + { "josie.boutique", true }, { "josiemccoy.co.uk", true }, { "josien.fr", true }, { "josien.net", true }, @@ -66072,23 +76234,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "josmith.co.za", true }, { "joso.tk", true }, { "josoansi.de", true }, - { "josprox.com", true }, + { "josprox.ovh", false }, + { "jostle.us", true }, { "josueteconecta.mx", true }, - { "josups.cyou", true }, { "josvir.sytes.net", true }, { "jot.works", true }, { "jotbe.io", true }, { "jotes-creations.de", true }, { "jotoho.de", true }, + { "jotoma.de", true }, { "joubinkhorsandmd.com", true }, { "jouetspetitechanson.com", true }, { "jouleperformance.ch", false }, { "jouleperformance.de", false }, - { "jounress.com", true }, { "jouons-aux-echecs.be", true }, { "jourbook.cf", true }, + { "jourdain.pro", true }, { "jourdespa.fr", true }, - { "journal84.ch", true }, + { "journaldesvoisins.com", false }, { "journaldufumeur.ch", true }, { "journales.com", true }, { "journalgameers.ga", true }, @@ -66097,39 +76260,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "journalism.org", true }, { "journaliste.tk", true }, { "journalisticapp.com", true }, + { "journalnow.com", true }, + { "journals.ru", true }, + { "journalstar.com", true }, + { "journaltimes.com", true }, + { "journaway.com", true }, { "journeedesfilles.gc.ca", true }, + { "journey.study", true }, { "journeyfriday.rocks", true }, { "journeying.ca", true }, { "journeyofmymothersson.com", true }, { "journeyrent.com", true }, - { "journeytoascension.com", true }, { "journeytofi.com", true }, { "journeytomastery.net", true }, { "joustsec.com", true }, + { "jouw-job.nl", true }, { "jouwbuis.nl", true }, - { "jouwcoronatest.nl", true }, { "jouwpaardenbak.nl", true }, { "jouwsongteksten.tk", true }, { "jouwzorgjob.be", true }, { "jovanmarkovic.ga", true }, { "jovenescontraelaburrimiento.tk", true }, - { "joviam.com", true }, { "jovic.hamburg", true }, { "jovisa.com.tw", true }, { "joworld.net", false }, { "joy-ride.yokohama", true }, - { "joyamojewelry.com", true }, { "joyas.gt", true }, - { "joyatlife.com", true }, { "joybuggy.com", true }, - { "joyce.re", true }, { "joyce.tk", true }, + { "joycejamiewedding.com", true }, { "joycemachine.com", true }, { "joychetry.com", true }, { "joycosmetics.ch", true }, { "joydivision.tk", true }, { "joydream.tk", true }, - { "joyful.house", true }, { "joyfulevents.tk", true }, { "joyfulexpressions.gallery", true }, { "joyfulhealthyeats.com", true }, @@ -66138,26 +76302,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "joyjohnston.ca", false }, { "joymaxiptv.co", true }, { "joymaxiptv.com", true }, + { "joymepass.com", true }, { "joyofcookingandbaking.com", true }, - { "joyofhaskell.com", true }, - { "joyorganicscoupons.com", true }, + { "joyouscare.co.uk", true }, { "joyousisle.com", true }, { "joyqi.com", true }, { "joysinventingblog.com", true }, { "joystickblog.tk", true }, - { "joythroughlaughter.com", true }, { "jozefjabczun.com", true }, { "jozefkvasnica.tk", true }, + { "jozefmichalmintal.com", true }, { "jozefmutis.com", true }, + { "jozefmutis.sk", true }, { "jp.kg", true }, { "jp.md", true }, - { "jp4f.de", true }, + { "jp404.com", true }, + { "jpan007.com", true }, { "jpanetta.tk", true }, { "jparts.su", true }, { "jpaudio.org", true }, { "jpbe-network.de", true }, { "jpbe.de", true }, { "jpc-design.com", true }, + { "jpcases.com.au", true }, { "jpcorriganlaw.com", true }, { "jpcrochetapparel.com", true }, { "jpdeharenne.be", false }, @@ -66167,24 +76334,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jpegd.io", true }, { "jpegshare.net", true }, { "jpekkala.com", true }, - { "jpennyltd.co.uk", true }, { "jperformance.nl", true }, { "jpg.am", true }, + { "jpg.fr", true }, { "jpgangbang.com", true }, { "jpgtopdfc.com", true }, { "jphost.ml", true }, + { "jpiamr.eu", true }, { "jpilan.com", true }, { "jpinfo.tk", true }, + { "jpixta.com", true }, { "jplennard.com", true }, { "jpm-inc.jp", true }, { "jpmelos.com", true }, { "jpmelos.com.br", true }, { "jpmguitarshop.com.br", true }, { "jpngamerswiki.com", true }, - { "jpod.cc", true }, { "jpope.org", true }, + { "jppc.net", true }, { "jppcadvertising.com", true }, - { "jpph.org", true }, + { "jpph.org", false }, { "jpr.io", true }, { "jpralves.net", true }, { "jpram.net", true }, @@ -66196,8 +76365,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jpsinflatables.co.uk", true }, { "jpst.it", true }, { "jpvermogensregie.com", true }, + { "jpvfinanceira.net", true }, + { "jpvisual.com", true }, { "jqlin.com", true }, { "jqlsql.com", true }, + { "jqpowerwash.com", true }, + { "jqrecycling.com", true }, { "jquery.wtf", true }, { "jr-signalisation.fr", true }, { "jr5devdoug.xyz", true }, @@ -66207,35 +76380,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jrc.cz", true }, { "jrc9.ca", false }, { "jrchaseify.xyz", true }, - { "jrcmo.com", true }, { "jreb.nl", true }, { "jreiff.de", true }, { "jreinert.com", true }, { "jrflorian.com", true }, { "jrfortune.com", true }, + { "jrjgarage.com", true }, { "jrjuristen.nl", false }, { "jrlopezoficial.com", true }, + { "jrmora.com", true }, { "jrock.tk", true }, { "jrock.us", true }, { "jross.me", true }, + { "jrroofinglancs.co.uk", true }, + { "jrrw.de", true }, { "jrstehlik.com", true }, { "jrstehlik.cz", true }, { "jrt.ovh", true }, { "jrtapsell.co.uk", true }, - { "jrtech.hu", true }, - { "jrtouzi.com", false }, { "jrtransportedemotos.com.br", true }, { "jrucomsoc.tk", true }, { "jrulka.ru", true }, + { "jrwu.win", true }, { "jrxpress.com", true }, { "jrzapis.com", true }, { "jrzhong.com", true }, { "jrzid.com", true }, { "jrzly.com", true }, - { "js-relocation.com", true }, + { "js-etiketten.de", true }, { "js-web.eu", true }, { "js-webcoding.de", true }, - { "js0204.com", true }, { "js5203344.com", true }, { "js6868.cc", true }, { "js86.de", false }, @@ -66243,6 +76417,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "js93029.com", true }, { "jsautomation.co.za", true }, { "jsbentertainment.nl", true }, + { "jsberrylaw.com", true }, { "jsbevents.nl", true }, { "jsblights.nl", true }, { "jsc.mx", true }, @@ -66250,6 +76425,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jscsshtml.com", true }, { "jsd-aach.de", true }, { "jsd-cog.org", true }, + { "jsdelivr.com", true }, { "jsdelivr.net", true }, { "jsdesign.mx", true }, { "jselby.net", true }, @@ -66267,51 +76443,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jslots.dk", true }, { "jsme.cz", true }, { "jsme.fun", true }, + { "jsn.one", true }, { "jsnfwlr.com", true }, - { "jsnfwlr.io", true }, + { "jsnfwlr.io", false }, + { "jsnguyenlieu.com", true }, + { "jso-crescendo.ch", true }, { "json.download", true }, { "json.id", true }, + { "json2bot.chat", true }, { "jsonbeautifier.net", true }, { "jsonformatter.net", true }, { "jsonsinc.com", true }, { "jsonvalidator.tk", true }, + { "jsourcery.com", true }, { "jsp-cloud.de", true }, + { "jspartnersinc.com", true }, { "jsphys.org.cn", true }, + { "jspp2023.jp", true }, { "jsproxy.tk", false }, + { "jsre-kinki.jp", true }, { "jss6868.cc", true }, + { "jstanleyasphaltpaving.com", true }, { "jsteward.moe", true }, { "jstore.ch", true }, { "jsvr.tk", false }, { "jswebbdevelopment.com", true }, - { "jswiss.co", true }, { "jsx.jp", true }, { "jsxc.ch", true }, { "jt-evolution.tk", true }, - { "jtbservice.se", true }, + { "jtafla.com", true }, { "jtcat.com", true }, { "jtconsultancy.sg", true }, - { "jtech.com.br", true }, + { "jtfew.co.uk", true }, { "jtkconstructiongroup.com", true }, + { "jtl-software.com", true }, + { "jtl-software.de", true }, + { "jtownacademy.com", true }, { "jtp.id", true }, { "jtrocinski.com", true }, { "jtrojanowska.pl", true }, { "jts3servermod.com", true }, { "jttech.se", true }, + { "jtxmail.org", true }, { "ju-edu.tk", true }, { "ju-rex.eu", true }, { "juabcounty.gov", true }, { "jualkambing.tk", true }, - { "juan23.edu.uy", true }, + { "juancadc.es", true }, + { "juancamos.com", true }, + { "juancarloscubeiro.com", true }, { "juancarlosflores.tk", true }, { "juancarlosgalvez.tk", true }, { "juancarlosllaque.com", true }, { "juancatalangomez.es", true }, { "juanfrancisco.tech", true }, + { "juanherranz.com", true }, { "juanhub.com", true }, { "juanitia.com", true }, + { "juanitofatas.com", true }, { "juanjomontecinos.tk", true }, - { "juanjovega.com", true }, - { "juanmaguitar.com", true }, { "juanmanuel.tk", true }, { "juanmapauso.tk", true }, { "juanmasuarez.tk", true }, @@ -66324,10 +76514,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jub0bs.com", true }, { "jubelmart.ga", true }, { "jubileum.online", false }, - { "jubileumfotograaf.nl", true }, { "jucca-nautica.si", true }, { "jucelo.de", true }, - { "juchheim-methode.de", true }, { "juchit.at", true }, { "jucktehkeinen.de", true }, { "jucocauca.tk", true }, @@ -66336,8 +76524,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "judge.ga", true }, { "judge.tk", true }, { "judge2020.com", true }, - { "judgefuszmediation.com", true }, - { "judgejonesadr.com", true }, { "judi-online.ga", true }, { "judi.ga", true }, { "judi.tk", true }, @@ -66354,8 +76540,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "judosaintdenis.fr", true }, { "judybai.me", true }, { "judykatura.pl", true }, - { "juef.net", true }, - { "juef.space", true }, { "juegosalcubo.es", true }, { "juegosycodigos.mx", true }, { "juejin.com", true }, @@ -66367,28 +76551,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juergmeier.ch", true }, { "juezz.top", true }, { "jufem.tk", true }, - { "jugendbildungshaus-luegsteinsee.de", true }, { "jugendfeuerwehr-vechta.de", true }, + { "jugendforum-schaafheim.de", true }, { "jugendhackt.org", true }, { "jugendpresse-hessen.de", true }, { "jugendpresse.de", true }, { "jugendsuenden.info", true }, { "jugh.de", true }, + { "jugoncalv.es", true }, { "jugwallonie.be", true }, { "juhakoho.com", true }, { "juhanihakala.fi", true }, { "juice.cf", true }, { "juice.codes", true }, + { "juicipattiesfranchising.com", true }, + { "juicydesigns.co.za", true }, { "juicyforum.com", true }, { "jujutsuoulu.fi", true }, { "juk.life", false }, + { "jukan.tv", true }, { "jukebox-manuals.tk", true }, - { "jukk.it", false }, { "jukkakivi.fi", true }, { "jukkakivimaki.fi", true }, { "jukovka.tk", true }, { "juku-wing.jp", true }, { "julb.de", true }, + { "julditec.com", true }, { "jule-spil.dk", true }, { "julenetxaniz.eus", true }, { "julenlanda.com", false }, @@ -66397,8 +76585,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "julia-clarete.tk", true }, { "julia-jones.org", true }, { "julia-pink.org", true }, + { "julia-spriggs.fr", true }, { "julia.school", true }, - { "juliaexclusiv.com", true }, + { "juliaexclusiv.net", true }, { "juliajuice.net", true }, { "juliakieser.de", true }, { "julian-miller.de", true }, @@ -66407,14 +76596,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "julian-weigle.de", true }, { "julian.tech", true }, { "julianaedouglas.ga", true }, - { "julianaferrari.com.br", true }, { "julianatoma.com.br", true }, { "julianbarske.de", true }, { "julianbh.com", true }, { "julianbroadway.com", true }, + { "julianestrada.es", true }, { "juliangonggrijp.com", true }, { "juliangramajo.tk", true }, { "julianickel.de", true }, + { "juliankraemer.de", true }, { "julianmeyer.de", true }, { "julianozucare.tk", true }, { "juliansimioni.com", true }, @@ -66439,6 +76629,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juliekproperties.com", true }, { "juliemaurel.fr", true }, { "julien-demare.com", true }, + { "julien-noyelle.com", true }, { "julien.expert", true }, { "julienc.io", true }, { "juliendoco.com", true }, @@ -66448,22 +76639,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "julienschmidt.com", true }, { "julienstalder.ch", false }, { "julientartarin.com", true }, + { "juliepetit.com", true }, { "julier.com.br", true }, { "juliesararealtor.com", true }, + { "julieskitchensf.com", true }, { "julieskyhigh.net", true }, { "juliet-squad.tk", true }, { "julietous.be", true }, { "julietta-sanchez.org", true }, { "julio.jamil.nom.br", true }, { "juliohernandezgt.com", true }, - { "juliuseskola.org", false }, { "juliusklein.tk", true }, - { "jullensgroningen.com", false }, + { "jullensgroningen.com", true }, { "julm.de", true }, { "julmer.tk", true }, { "juls.cloud", false }, - { "jult.net", true }, + { "jult.net", false }, { "jultube.de", true }, + { "july52.ru", true }, { "jumardotaekwondo.tk", true }, { "jumbo-air.de", true }, { "jumbopan.net", true }, @@ -66473,6 +76666,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jumelagevezin-vezins.tk", true }, { "jumellesvision.fr", true }, { "jumibow.com", true }, + { "jumio.com", true }, { "jummedia.com.au", true }, { "jump4funinflatables.co.uk", true }, { "jumpalitan.tk", true }, @@ -66499,6 +76693,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jumpnplay.co.uk", true }, { "jumpnplay.com.au", true }, { "jumprun.com", true }, + { "jumpseller.cl", true }, + { "jumpseller.com", true }, { "jun-e-jay.com", true }, { "junbread.win", true }, { "junco.nl", true }, @@ -66509,19 +76705,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "junebo.net", true }, { "junebo.nu", true }, { "junebo.se", true }, + { "juneereccentre.com.au", true }, { "junefolkhogskola.se", true }, { "junethack.net", true }, { "junge-linke.tk", true }, + { "jungefreiheit.de", true }, { "jungelinke.tk", true }, + { "junger-chor-marienburg.de", true }, { "jungesforumkonstanz.de", true }, { "junggesellmuc.de", true }, { "junglaurbana.tk", true }, { "jungle-forums.tk", true }, + { "jungleducks.ca", false }, { "junglejackscastles.co.uk", true }, + { "junglelab.io", true }, { "junglememories.co.uk", true }, { "jungleworks.com", true }, { "junglist.org", true }, { "jungschuetzen.tk", true }, + { "jungundwild-design.de", true }, { "jungyonghwa.tk", true }, { "juniet.net", true }, { "juniku.tk", true }, @@ -66533,7 +76735,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juniperroots.ca", true }, { "junix.systems", true }, { "junjie.pro", true }, - { "junjun-web.net", true }, + { "junjun-web.net", false }, { "junkcarboys.ca", true }, { "junkdrome.org", false }, { "junkersparadise.tk", true }, @@ -66541,25 +76743,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "junkguy.tk", true }, { "junkiedownload.tk", true }, { "junkracing.tk", true }, + { "junksleep.com", true }, + { "junksupply.com", false }, + { "junktojewels.com.au", true }, { "junkyardtuning.tk", true }, - { "juno.co.uk", true }, - { "junodownload.com", true }, { "junomessenger.cf", true }, { "junshinkai.ed.jp", true }, { "junte.tk", true }, { "juntos.gov", true }, { "juntosfmc.com.br", true }, { "junyan.ga", true }, + { "junyangz.com", true }, { "juozasveza.lt", true }, { "jupiteram.com", true }, - { "jupiterchiropractic.com", true }, { "juppy.tk", true }, { "jura-reiseschutz.de", true }, + { "jura-versicherungen.de", true }, { "juragan.ga", true }, { "juraganhp.com", true }, + { "juragantembakau.com", true }, { "jurancic.com", true }, { "jurassicbarkharrogate.co.uk", true }, { "jurassicworldfilmen.cf", true }, + { "jurat.online", true }, { "jurena.sk", true }, { "jurex-cup.cz", true }, { "jurex.cz", true }, @@ -66567,10 +76773,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jurgenfranse.nl", true }, { "jurgens.tk", true }, { "jurgis.tk", true }, - { "juridischvertalers.nl", true }, - { "jurilist.fr", true }, { "jurislex.tk", true }, { "jurisprudentacedo.com", true }, + { "jurist-website.de", true }, { "jurist.gq", true }, { "juristech.io", true }, { "juristique.fr", true }, @@ -66578,9 +76783,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juristique.org", true }, { "juristique.us", true }, { "jurjendevries.com", false }, + { "jurkomp.ru", true }, + { "jurllyshe.com", true }, { "jurnalfm.md", true }, { "jurnalilmiah.com", true }, - { "jurojin.net", true }, { "jurposluga.tk", true }, { "jurquestion.tk", true }, { "jurriaan.ninja", true }, @@ -66596,9 +76802,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "just-pools.co.za", true }, { "just-vet-and-drive.fr", true }, { "just-webdesign-berlin.de", true }, + { "just.nl", true }, { "just3preety.com", true }, { "just6f.com", true }, { "justacoupleofclarkes.co.uk", true }, + { "justacrazygirl.com", true }, + { "justalternativeto.com", true }, { "justanorganizedhome.com", true }, { "justanothercompany.name", true }, { "justanotherday.tk", true }, @@ -66607,10 +76816,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "justbookexcursions.com", true }, { "justbooktransfers.com", true }, { "justboom.co", true }, + { "justbraces.com.sg", true }, + { "justbydesign.com", true }, + { "justcall.io", true }, { "justcalm.tk", true }, + { "justcams.tv", true }, { "justchunks.net", true }, { "justement.ch", true }, { "justfashionnow.com", true }, + { "justfencingcheshire.co.uk", true }, { "justfoodfordogs.com", true }, { "justformen.org", true }, { "justforschools.co.uk", true }, @@ -66621,10 +76835,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "justgamblers.com", true }, { "justgardenoffices.co.uk", true }, { "justgayvideo.com", true }, + { "justgiving.com", true }, { "justice-rains-from-above.tk", true }, + { "justice.gc.ca", true }, { "justice.gov", true }, { "justiceforjameela.org", true }, { "justifinetwork.com", true }, + { "justifyloans.com", true }, { "justin-p.me", true }, { "justin-tech.com", true }, { "justin3d.nl", true }, @@ -66633,26 +76850,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "justinfreid.com", true }, { "justinho.com", true }, { "justinmanders.nl", true }, + { "justinritter.de", true }, { "justinsinkula.com", true }, { "justinstago.com", true }, { "justinstandring.com", true }, - { "justjavajobs.co.za", true }, { "justkidsdental.com", true }, { "justknigi.gq", true }, { "justlovecoffeefranchise.com", true }, { "justmade.com.br", true }, { "justmensgloves.com", true }, - { "justmote.me", true }, { "justmyblog.net", true }, - { "justmysocks.tk", true }, + { "justmysocks.tk", false }, { "justmysocks.xyz", true }, { "justnajoua.tk", true }, - { "justnaw.co.uk", true }, { "justneworleans.com", true }, { "justninja.com", true }, { "justnu.se", false }, { "justor.ru", true }, - { "justpaste.it", true }, { "justpdf.cf", true }, { "justpractice.ca", true }, { "justquoteme.ga", true }, @@ -66660,11 +76874,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "justsa.co.za", true }, { "justsandro.tk", true }, { "justsellmycar.com", true }, - { "justsem.org", true }, { "justshare.tk", true }, + { "justt-watch-now.xyz", true }, { "justtalk.site", true }, { "justupdate.me", true }, + { "justwannalearn.com", true }, { "justweather.org", true }, + { "justwikipedia.com", true }, + { "justwizards.me", true }, { "justyardsign.com", true }, { "justyy.com", true }, { "justzz.xyz", true }, @@ -66672,29 +76889,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "juszkiewicz.com.pl", true }, { "jutella.de", false }, { "jutlander-netbank.dk", true }, + { "jutrainingdiet.fr", true }, + { "juttaheitland.com", true }, { "juujee.com", true }, + { "juul-iversen.dk", true }, { "juul.xyz", false }, { "juurussuo.tk", true }, { "juusujanar.eu", false }, { "juvenile-studios.de", true }, { "juventudevareira.tk", true }, { "juventusmania1897.com", true }, + { "juventusnews24.com", true }, { "juweldot.tk", true }, { "juwelier-schmuck.de", true }, - { "juwelierstoopman.nl", true }, + { "juwelierstoopman.nl", false }, { "juweliervanwillegen.nl", true }, { "juzgadocaldas.com", true }, + { "juzz.io", true }, { "jv-projects.be", true }, { "jvanerp.nl", true }, { "jvbouncycastlehire.co.uk", true }, { "jvdham.nl", true }, + { "jvdz.nl", true }, { "jvega.me", true }, { "jvianes.ddns.net", true }, { "jvlfinance.cz", true }, { "jvmcomunicacao.com.br", true }, - { "jvmlending.com", true }, { "jvphotoboothhire.co.uk", true }, - { "jvsticker.com", true }, + { "jvspin.com", true }, + { "jvspin13135.top", true }, + { "jvspinapp.com", true }, { "jw-services-stg.org", true }, { "jw-services.org", true }, { "jw.fail", true }, @@ -66705,14 +76929,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jwb.red", true }, { "jwbrown.cn", true }, { "jwbrown.com", true }, - { "jwbrown.info", true }, { "jwbrown.nl", true }, { "jwbrown.ru", true }, - { "jwbworks.dk", true }, { "jwchords.org", true }, { "jwds.blog", true }, { "jwds.ca", true }, - { "jwds.support", true }, { "jwe.nl", true }, { "jweditions.co.uk", true }, { "jwhite.network", true }, @@ -66725,6 +76946,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jwplay.ml", true }, { "jwpoore.com", true }, { "jwr.me", true }, + { "jwroberts.com", true }, { "jwschuepfheim.ch", true }, { "jwz.org", true }, { "jxcad.com.cn", true }, @@ -66736,56 +76958,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "jxsmodafeminina.com.br", true }, { "jybrid.com", true }, { "jydemarked.dk", true }, - { "jyk.me", true }, - { "jykinturah.io", true }, { "jyllandsakvariet.dk", true }, { "jyoba.co.jp", true }, - { "jyoti-fairworks.org", true }, - { "jyrilaitinen.fi", true }, + { "jyoti-fairworks.org", false }, + { "jysecurity.com", true }, { "jyvaskylantykkimies.fi", true }, { "jz.lc", true }, { "jzagorulko.com", true }, { "jzbk.org", false }, { "jzcapital.co", true }, { "jzeb.co", true }, - { "jzeg.net", true }, + { "jzminimalist.com", true }, { "jztkft.hu", true }, { "jzwebdesign.ie", true }, + { "jzz.cool", true }, + { "jzzfyw.com", true }, { "k-45.ru", true }, + { "k-amenix.co.jp", true }, { "k-bone.com", true }, { "k-collab.com", true }, { "k-designstudio.com", true }, + { "k-h-c.ru", true }, { "k-homes.net", true }, { "k-jtan.ca", true }, { "k-labs.be", true }, { "k-linkcarecenter.com", true }, { "k-matsudaclinic.com", true }, + { "k-moto.sk", true }, { "k-netz.de", true }, { "k-pan.com", true }, { "k-plant.com", true }, - { "k-pture.com", false }, + { "k-s-edition.ru", false }, { "k-sails.com", true }, { "k-scr.me", true }, { "k-system.de", true }, { "k-tube.com", false }, - { "k-unity.co.ke", true }, { "k-will.tk", true }, { "k.tt", true }, { "k0.gg", true }, - { "k0hs.com", true }, { "k1024.org", true }, { "k123123.com", true }, { "k1chn.com", false }, - { "k1yoshi.com", false }, + { "k2.works", true }, { "k234234.com", true }, { "k258059.net", true }, + { "k29.ee", true }, + { "k2industrial.com", true }, + { "k2united.com", true }, { "k2velosi.com", true }, - { "k3508.com", true }, { "k36533.com", true }, { "k38.cc", true }, + { "k3a.me", true }, { "k3nny.fr", true }, { "k3t.net", true }, { "k4law.com", true }, + { "k4nzi.duckdns.org", true }, { "k4r.ru", true }, { "k51365.com", true }, { "k5197.co", true }, @@ -66793,7 +77020,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k60d.com", true }, { "k66.ag", true }, { "k665.vip", true }, - { "k666.ag", true }, { "k6729.co", true }, { "k6729.com", true }, { "k6957.co", true }, @@ -66801,17 +77027,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k7add.com", true }, { "k7azx.com", true }, { "k7cl.com", true }, - { "k801.com", true }, + { "k8.com", true }, { "k805.net", true }, { "k80608.com", true }, { "k8082.com", true }, { "k811.com", true }, { "k811111.com", true }, - { "k81365.com", true }, { "k8158.com", true }, { "k82.org", true }, { "k821.net", true }, - { "k82222.net", true }, { "k82365.com", true }, { "k8268.com", true }, { "k83333.com", true }, @@ -66822,8 +77046,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k8668.net", false }, { "k86681.com", true }, { "k86690.com", false }, - { "k86813.com", false }, - { "k86814.com", false }, + { "k86813.com", true }, + { "k86814.com", true }, { "k86830.com", true }, { "k86833.com", true }, { "k86834.com", true }, @@ -66834,10 +77058,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k86921.com", false }, { "k86929.com", false }, { "k86930.com", true }, - { "k86966.com", true }, { "k86967.com", false }, { "k86990.com", true }, - { "k86991.com", false }, { "k87.app", true }, { "k87021.com", true }, { "k87073.com", false }, @@ -66849,19 +77071,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k87080.com", false }, { "k87100.com", true }, { "k87119.com", false }, - { "k87120.com", false }, { "k87121.com", false }, { "k87126.com", false }, - { "k87127.com", false }, - { "k87130.com", false }, { "k87131.com", false }, - { "k87132.com", false }, { "k87133.com", false }, - { "k87134.com", false }, - { "k87135.com", false }, { "k87136.com", false }, - { "k87137.com", false }, - { "k87138.com", false }, { "k87183.com", true }, { "k87210.com", true }, { "k873.co", false }, @@ -66894,14 +77108,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k88327.com", true }, { "k885.co", true }, { "k886.co", true }, - { "k88601.com", true }, - { "k88603.com", true }, - { "k88606.com", true }, - { "k88608.com", true }, - { "k88609.com", true }, { "k88652.com", true }, { "k88670.com", false }, - { "k88671.com", false }, + { "k88671.com", true }, { "k88672.com", false }, { "k889.co", true }, { "k8892.com", true }, @@ -66919,13 +77128,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k8v02.com", true }, { "k8v03.com", true }, { "k8v05.com", true }, - { "k8v08.com", false }, + { "k8v08.com", true }, { "k8v21.com", true }, { "k8v27.com", false }, - { "k8v30.com", false }, + { "k8v30.com", true }, { "k8vn.com", true }, - { "k8vsy.radio", true }, - { "k90.com.br", true }, { "k9297.co", true }, { "k9728.co", true }, { "k9bhh.net", true }, @@ -66935,28 +77142,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "k9life.gq", true }, { "k9life.ml", true }, { "k9swx.com", true }, + { "ka-28022.xyz", true }, { "ka-kousin.co.jp", true }, - { "ka.wtf", true }, { "ka4aka.tk", true }, { "ka4ka-ru.tk", true }, { "ka4ka.cf", true }, { "ka4ka.ml", true }, - { "kaagsebc.nl", true }, { "kaalberry.com", true }, { "kaamoscreations.com", true }, + { "kaamosmail.com", true }, + { "kaandorpfietsen.nl", true }, + { "kaanhaa.com", false }, { "kaaniche.xyz", true }, { "kaany.io", true }, - { "kaaraali.fr", false }, + { "kaaraali.fr", true }, { "kaas.wtf", true }, { "kaasbesteld.nl", true }, - { "kaatha-kamrater.se", true }, + { "kaatha-kamrater.se", false }, { "kaatsen.tk", true }, { "kab-s.de", true }, { "kabachok.tk", true }, { "kabal.tk", true }, { "kabardinka.ga", true }, { "kabardino-balkariya.ml", true }, - { "kabarr.com", false }, + { "kabataan.ph", true }, { "kabel.cf", true }, { "kabel.ga", true }, { "kabel.gq", true }, @@ -66965,6 +77174,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kabellegger.nl", true }, { "kabeltv.co.nz", true }, { "kabeuchi.com", true }, + { "kabide.net", true }, { "kabinett.cz", true }, { "kabir.cf", true }, { "kabir.tk", true }, @@ -66982,7 +77192,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kabukpsikoloji.com", true }, { "kabulboy.tk", true }, { "kabulpress.org", true }, + { "kabushiki.jp", true }, { "kabyle.com", true }, + { "kacanews.com", true }, + { "kacang-bali.com", true }, { "kacgal.com", true }, { "kachaem-knigi.gq", true }, { "kachat.io", true }, @@ -66990,36 +77203,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kachka.cf", true }, { "kachlikova2.cz", true }, { "kack.website", true }, - { "kacperchmielowiec.pl", true }, + { "kackyreloaded.com", true }, { "kacy-kisha.com", true }, { "kada.lk", true }, + { "kada.mobi", true }, { "kadalove.net", true }, + { "kaddex.xyz", true }, + { "kaddify.de", true }, + { "kadeatwood.com", true }, { "kadenafss.com", true }, { "kadenba.ch", true }, { "kadence.tk", true }, + { "kadenhealth.com", true }, + { "kadenlegion.com", true }, { "kadet.net.ru", true }, { "kadett-c-club-limburg.tk", true }, { "kadhal-kirukkan.tk", true }, - { "kadhambam.in", true }, - { "kadidak.com", true }, - { "kadima.co.il", true }, + { "kadidak.com", false }, + { "kadifeli.com", true }, + { "kadinbonesulsel.id", true }, { "kadinhaber.tk", true }, + { "kadinhayati.com", true }, + { "kadinisci.org", true }, { "kadinsaglikhaber.tk", true }, { "kadinvesaglik.tk", true }, - { "kadix.com.br", true }, + { "kadix.com.br", false }, { "kado-ya.jp", true }, { "kadolis.com", true }, { "kadro.com.pl", true }, { "kadvi.tk", true }, { "kadykchanskiy.ml", true }, + { "kaedehara.xyz", true }, { "kaeme.com", true }, { "kaeptns-sechser.de", true }, { "kaeru-seitai.com", true }, { "kaese-journal.ch", true }, { "kaesehagen.nl", true }, { "kafel-ufa.tk", true }, + { "kafeline.com", true }, { "kaffad.site", true }, { "kaffeekrone.de", true }, + { "kaffeepflanze-pflege.de", true }, { "kaffeeringe.de", true }, { "kaffeesud.org", true }, { "kaffeklubben.tk", true }, @@ -67031,37 +77255,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kagebyvyre.tk", true }, { "kagel.ch", true }, { "kagelmacher.ch", true }, + { "kages.at", true }, { "kaggle.com", true }, { "kagi.com", true }, { "kagicomb.org", true }, - { "kagitreklam.com", true }, + { "kagisoonline.co.za", true }, + { "kagithanemantolama.com", true }, { "kagl.me", true }, { "kagomesashi.tk", true }, - { "kagutech.com", true }, + { "kaguramea.fr", true }, { "kaha.co.id", true }, { "kahane.org", true }, + { "kahmad.in", true }, + { "kahoot.it", true }, { "kahvakiekkotalkoot.fi", true }, { "kai-justin.de", true }, { "kai-ratzeburg.de", true }, { "kai-ruecker.tk", true }, { "kai.cool", false }, + { "kaiahealth.com", true }, { "kaibinyang.com", true }, + { "kaibinyang.tk", true }, { "kaibo.cz", true }, { "kaibo.eu", true }, - { "kaibol.com", true }, { "kaiche.com", true }, + { "kaida-rybak.ru", true }, { "kaidoblogi.eu", true }, + { "kaifischer.tv", true }, { "kaigojj.com", true }, + { "kaihipay.jp", true }, { "kaijo-physics-club.work", true }, { "kaik.io", true }, { "kaika-facilitymanagement.de", true }, + { "kaikaibrai.com", true }, { "kaikei7.com", true }, + { "kaikrups.com", true }, { "kaileymslusser.com", false }, { "kaimassagechairs.com", true }, - { "kaimi.io", true }, + { "kaimi.io", false }, { "kainelaw.com", true }, { "kainetsoft.com", true }, + { "kainsanders.com", true }, { "kainz.be", true }, + { "kaiod.tk", true }, { "kaioken.bar", true }, { "kaion.vn", true }, { "kaipel.de", true }, @@ -67072,11 +77308,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kaiser.ga", true }, { "kaiser.wf", true }, { "kaiseraerospace.tk", true }, + { "kaiserinformativo.com", true }, { "kaisev.net", true }, { "kaishi009.com", true }, { "kaishi555.com", true }, { "kaisto.net", false }, { "kaisyo.co.jp", true }, + { "kaitlinmcdonough.com", true }, { "kaitol.click", true }, { "kaitseministeerium.ee", false }, { "kaity-sun.com", true }, @@ -67086,40 +77324,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kaiwritings.com", true }, { "kaiwu.xyz", true }, { "kaizencraft.ga", true }, + { "kaizendigitalstudios.live", true }, + { "kaizenjuku.org", true }, { "kaizenreporting.com", true }, { "kaizeronion.com", true }, { "kaizoku-dmc.com", true }, { "kajak.land", true }, - { "kajakswaderki.pl", true }, { "kajalkumar.tk", true }, { "kajasafe.fi", true }, { "kajirakuda.com", true }, { "kajlovo.cz", true }, { "kajzonnebeke.tk", true }, - { "kak-pishetsa.ru", true }, { "kak-pohudet-legko.ml", true }, - { "kak-prygotovyt.ru", true }, - { "kak-sarabotatj.ru", true }, - { "kak-sdelatj.ru", true }, { "kaka.farm", true }, { "kakabo.vn", true }, { "kakacon.nz", true }, { "kakan.ml", true }, - { "kakao-karten.de", true }, { "kakaravaara.fi", true }, { "kakazai.com", true }, { "kakdolgonline.cf", true }, { "kakdoma-23.ru", true }, - { "kakdoma23.ru", true }, { "kakeru.cf", true }, - { "kaketang.com", true }, + { "kaketang.com", false }, { "kakkerlakken.tk", true }, { "kakofotmitzaim.cf", true }, { "kakofotmitzaim.ga", true }, { "kakofotmitzaim.gq", true }, { "kakofotmitzaim.ml", true }, { "kakofotmitzaim.tk", true }, - { "kakolightingmuseum.or.jp", true }, { "kakoo-media.nl", true }, { "kakoomedia.nl", true }, { "kakpoluchitzaim.cf", true }, @@ -67128,6 +77360,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kakpoluchitzaim.ml", true }, { "kakpoluchitzaim.tk", true }, { "kaktus-tour.cf", true }, + { "kaktuskola.se", true }, { "kakuch.com", false }, { "kakvzyatdolg.ga", true }, { "kakvzyatdolg.ml", true }, @@ -67137,7 +77370,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kal05.tk", true }, { "kalabhavashricreations.com", true }, { "kaladarb.com", false }, - { "kalafard.com", true }, { "kalaharifeis.com", true }, { "kalakarclub.com", true }, { "kalambur.gq", true }, @@ -67152,17 +77384,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kalaskvintetten.tk", true }, { "kalaspuffar.se", true }, { "kalastus.com", true }, + { "kalbarritudor.com.au", true }, + { "kaldewei.com", true }, { "kaleidoscope.co.uk", true }, { "kalek.eu", true }, { "kalendarabiturienta.tk", true }, { "kalender.com", true }, { "kalender.goip.de", true }, { "kalerne.tk", true }, - { "kalevlamps.co.uk", true }, { "kalhufvudet.se", true }, { "kaliaa.fi", true }, { "kalian.cz", true }, { "kaliboairport.tk", true }, + { "kaliboys.com", true }, { "kaliforniya.tk", true }, { "kalimantan.tk", true }, { "kalimari.tk", true }, @@ -67175,26 +77409,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kalisch.eu", true }, { "kalisilat.tk", true }, { "kalk-shop.nl", true }, + { "kalkaskavillagemi.gov", true }, { "kalkulacka-havarijni.cz", true }, + { "kallanda.com", true }, { "kalleanka.tk", true }, { "kalligo.ga", true }, { "kalligraf.tk", true }, { "kallisto.io", true }, { "kalmarbilder.se", true }, + { "kalmbach.com", true }, + { "kalmservices.ca", true }, { "kalmykia.cf", true }, { "kalmykia.tk", true }, { "kalnet.tech", true }, { "kalogeropoulos-st.com", true }, { "kalohan.tk", true }, { "kaloix.de", true }, - { "kalolina.farm", false }, { "kalombo.ru", true }, + { "kalompaturi.com", true }, { "kalpavriksh.org", true }, { "kalsa.ga", true }, { "kalsbouncies.com", true }, { "kaltenbrunner.it", true }, { "kalterersee.ch", true }, - { "kaltoft.net", true }, + { "kaltoft.net", false }, { "kaluga.cf", true }, { "kaluga.gq", true }, { "kalugadeti.ru", true }, @@ -67209,16 +77447,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kam-teh.com.ua", true }, { "kamalame.co", true }, { "kamandula.tk", true }, + { "kamanja.io", true }, { "kamareddine.tk", true }, { "kamasutra-training.gq", true }, { "kamata-saisyuusyou.com", true }, { "kamata-shinkyu-seikotsu.jp", true }, + { "kamataryo.com", true }, { "kamatoycleaner.com", true }, { "kamazuri.art", true }, { "kambistories.com", true }, { "kamchatkatravel.tk", true }, { "kamchatkawinter.tk", true }, - { "kameari-za.space", true }, + { "kamcolorectal.com", true }, { "kameldesign.com", true }, { "kameliya.tk", true }, { "kamen-master.ru", true }, @@ -67226,10 +77466,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kameno-news.tk", true }, { "kamer.nl", true }, { "kamerakun.com", true }, + { "kamerpower.com", true }, { "kamery.top", true }, + { "kameryzababku.sk", true }, { "kamey-steuerberatung.de", true }, + { "kami-riha.com", true }, { "kamien-ogrodowy.tk", true }, - { "kamikaichimaru.com", false }, + { "kamienie-migdalkowe.pl", true }, + { "kamikami.eu", true }, { "kamikatse.net", true }, { "kamikatzerl.net", true }, { "kamikazeweb.tk", true }, @@ -67237,9 +77481,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kamilla.ml", true }, { "kamilmagdziak.pl", true }, { "kamilporembinski.pl", true }, - { "kamilst96.pl", true }, + { "kamilsevi.com", false }, { "kamin-island.ru", true }, - { "kaminastudios.com", true }, { "kaminbau-laub.de", true }, { "kaminoke.info", false }, { "kaminoweb.com", true }, @@ -67248,32 +77491,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kamisato-ent.com", true }, { "kamistik.com", true }, { "kamitech.ch", true }, - { "kamixa.se", true }, { "kamiyo.tk", true }, { "kamlunglelystad.tk", true }, { "kamnob.com", true }, { "kamp-kisten.nl", true }, { "kampanyakolik.com", true }, + { "kampanyaradar.com", true }, { "kampffische.tk", true }, + { "kampfsportschule-einherjar.de", true }, + { "kampova.sk", true }, { "kamppailusali.fi", true }, { "kampungcyber.tk", true }, { "kampunginggris-ue.com", true }, { "kampusku.tk", true }, { "kamrad.tk", true }, { "kamranmirhazar.com", true }, + { "kamui.co.uk", true }, { "kamuniang.org", true }, { "kan-ken.fr", true }, { "kan.bi", true }, { "kan3.de", true }, { "kana-mono.biz", true }, { "kana.me", true }, + { "kanabun.top", true }, { "kanaete-uranai.com", true }, { "kanag.pl", true }, { "kanal-c.net", true }, { "kanal-schaefer.de", true }, - { "kanal-tv-haensch.de", true }, + { "kanal-tv-haensch.de", false }, + { "kanalasal.id", false }, { "kanalbutikken.no", true }, - { "kanaldagang.com", true }, + { "kanali.info", true }, { "kanapa.gq", true }, { "kanariesite.tk", true }, { "kanatsuki.tk", true }, @@ -67286,11 +77534,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kanden-com-reform.com", true }, { "kandhamal.org", true }, { "kandianshang.com", true }, + { "kandkforwarding.com", true }, { "kandofu.com", true }, + { "kandr.net", true }, { "kandra.com.br", true }, { "kandrahechiceravudu.com", true }, - { "kandwliquor.com", true }, + { "kandrive.gov", true }, + { "kanduit.live", true }, { "kanecastles.com", true }, + { "kanecountyhospitalut.gov", true }, { "kanecountyil.gov", true }, { "kanehisa.xyz", true }, { "kanehusky.com", false }, @@ -67300,34 +77552,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kangarooislandholidayaccommodation.com.au", true }, { "kangaroojacks.co.uk", true }, { "kangaroos.org", true }, + { "kangaroosgardencentre.ca", true }, { "kangavar.tk", true }, { "kangbo.com", true }, { "kangkai.me", true }, { "kangkang.net", true }, { "kangkang.org", true }, + { "kangliortho.com", true }, { "kangoeroeteam.tk", true }, { "kangouroo.ch", true }, { "kangutingo.com", true }, { "kangzaber.com", true }, { "kaninchenartikel.de", true }, { "kanis.ag", true }, - { "kanis.me", true }, { "kanitha.sk", false }, { "kankakeecountyclerk.gov", true }, { "kanker.nl", true }, { "kankerpannekoek.nl", true }, + { "kankfn.com", true }, { "kankimaru.com", true }, { "kanna.cf", true }, + { "kannabia.com", true }, { "kannata.ml", true }, - { "kannchen.de", true }, - { "kano.fan", true }, + { "kano.fan", false }, { "kano.tk", true }, - { "kanobu.ru", true }, { "kanootours.com", true }, - { "kanosuki.com", true }, + { "kanosuki.com", false }, { "kanotijd.nl", true }, { "kanoumokuzai.co.jp", true }, { "kanpian369.com", true }, + { "kanru-clinic.com.tw", true }, + { "kansascitymosaics.com", true }, + { "kansascityzoo.org", true }, { "kansasconstruction.ga", true }, { "kansashealth.tk", true }, { "kansasnet.tk", true }, @@ -67335,24 +77591,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kansasvoterinfo.gov", true }, { "kanshutan.com", true }, { "kantankye.nl", true }, + { "kantoorartikelen.nl", true }, { "kantoorboel.nl", true }, + { "kantora-ivanova.com", true }, { "kantora-plovdiv.com", true }, { "kantorad.io", true }, { "kantorosobisty.pl", true }, { "kantrok.com", true }, { "kantube.tk", true }, { "kanui.ml", true }, + { "kanuking.de", true }, { "kanuvu.de", true }, { "kanvasbaski.tk", true }, { "kanz.jp", true }, { "kanzashi.com", true }, - { "kanzlei-hhh.de", true }, - { "kanzlei-oehler.com", true }, + { "kanzlei-sixt.de", true }, { "kanzshop.com", true }, { "kaohongshu.blog", true }, + { "kaora.cz", true }, { "kaosintesta.tk", true }, { "kap-kirche.de", true }, { "kap.pe", true }, + { "kapaci.com", true }, { "kapanlagi.gq", true }, { "kapelya.gq", true }, { "kapilarya.com", true }, @@ -67363,25 +77623,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kapiteintje.tk", true }, { "kaplan.se", true }, { "kaplanco.com", true }, + { "kaplanprofessional.edu.au", true }, { "kaplatzis.com", true }, - { "kapler.family", false }, { "kapparhokappa.tk", true }, - { "kappawingman.com", true }, { "kappenstein.org", false }, { "kappharn.com", true }, { "kappit.dk", true }, { "kappow.co.uk", true }, { "kapri.dn.ua", true }, - { "kapsalondigo.nl", true }, { "kapsalonlinds.nl", true }, { "kapseli.net", true }, { "kapsouro-ksimeromata.eu", true }, { "kaptadata.com", true }, { "kaptamedia.com", true }, + { "kapui.net", true }, { "kapukoaldizkaria.tk", true }, { "kapulakennel.tk", true }, { "kapunet.tk", true }, - { "kapusta.if.ua", true }, + { "kaputt.com", true }, { "kaputtendorf.tk", true }, { "kaputtzich.duckdns.org", true }, { "kara-fabian.com", true }, @@ -67391,17 +77650,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karabas.com", true }, { "karabukhaber.tk", true }, { "karachay.tk", true }, - { "karachi.dating", true }, { "karacommagere.com", true }, + { "karada.live", true }, { "karadenizhaberleri.tk", true }, + { "karaj.me", true }, { "karajonline.tk", true }, + { "karakafa.net", true }, { "karamanev.me", true }, { "karamel69.ru", true }, { "karamomo.net", true }, { "karand.me", true }, { "karanjthakkar.com", true }, { "karanlyons.com", true }, - { "karantholdings.ga", true }, { "karantyn.pro", true }, { "karaoglanis-info.tk", true }, { "karaoglanis.tk", true }, @@ -67417,12 +77677,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karasik.by", true }, { "karatecabes.tk", true }, { "karateclub-waregem.tk", true }, - { "karatekit.co.uk", true }, { "karatepunkslaroca.tk", true }, { "karatesamurai.tk", true }, { "karawane.tk", true }, - { "karawanken-tunnel.de", true }, + { "karaz.ps", true }, { "karbox.de", true }, + { "kardashiandish.com", true }, { "kardia-bordeauxdoggen.tk", true }, { "kardize24.pl", true }, { "kardjali.bg", true }, @@ -67440,14 +77700,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karen-homestay.tk", true }, { "karencatering.com", true }, { "karenerdos.com.au", true }, - { "karenroldan.net", true }, + { "karenroldan.net", false }, { "karenvien.ga", true }, { "karewan.ovh", true }, { "kargas.cf", true }, - { "karger.com", true }, { "kargl.net", true }, - { "kargonerede.com", true }, - { "kargosuben.com", true }, { "karguine.in", true }, { "karhukamera.com", true }, { "karikatur.cf", true }, @@ -67459,35 +77716,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karina.gd", true }, { "karinahh.net", true }, { "karinheinenmaassen.nl", true }, - { "karinov.co.id", true }, { "karinwerner.com", true }, { "karit.nz", true }, + { "kariyermemur.com", true }, + { "karkey.in", true }, { "karkkilandemarit.fi", true }, - { "karlagalvao.com", true }, - { "karlam.fr", true }, { "karlbowden.com", true }, - { "karlbrandesmediation.com", true }, { "karlic.net", true }, { "karliekloss.tk", true }, { "karlin.run", true }, { "karlis-kavacis.id.lv", true }, { "karlis.tk", true }, + { "karlislab.com", true }, { "karlloch.de", true }, { "karlogavric.com", true }, + { "karloluiten.nl", true }, { "karloskontana.tk", true }, { "karlov.tk", true }, { "karlproctor.co.uk", true }, { "karlskronajk.tk", true }, { "karlsmithmn.org", true }, { "karlson.gq", true }, - { "karlswift.com", true }, + { "karlswift.com", false }, { "karlzotter.com", true }, { "karmaassurance.ca", true }, { "karmaflux.com", true }, { "karmaful.de", true }, + { "karmagroup.com", true }, { "karmainsurance.ca", true }, { "karmalighting.com", true }, - { "karmaniametal.com", true }, + { "karmarxpornstar.com", true }, { "karmatrend.cf", true }, { "karmelava.tk", true }, { "karmil.tk", true }, @@ -67498,15 +77756,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karo.pc.pl", true }, { "karoche.ga", true }, { "karodos.pl", true }, - { "karoke.in", true }, { "karolak.fr", false }, { "karolaschinkel.de", true }, + { "karolinamed.ru", true }, { "karopapier.de", true }, { "karopc.pl", true }, { "karorally.tk", true }, { "karoverwaltung.de", true }, { "karpanhellas.com", false }, - { "karpat.space", true }, { "karperontspanning.tk", true }, { "karperpagina.tk", true }, { "karpets.gq", true }, @@ -67516,16 +77773,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "karramba.tk", true }, { "karriharju.tk", true }, { "karrot.world", true }, + { "karryfishing.com", true }, { "karsiyakacilingir.biz.tr", true }, { "karsofsystems.com", true }, + { "karstenhelmbold.de", true }, { "karstjewellery.co.uk", true }, { "karstransport.tk", true }, { "karta-baikala.ml", true }, + { "karta-mira.com", true }, { "karta-paliwowa.pl", true }, { "kartacha.com", true }, { "kartalvincisletmeciligi.com", true }, { "kartar.net", false }, - { "kartbird.com", true }, { "kartec.com", true }, { "kartenmarie.de", true }, { "kartenplanet.ch", true }, @@ -67538,31 +77797,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kartpower.tk", true }, { "karula.org", false }, { "karupp-did.net", true }, + { "karussell.com.tr", false }, { "kas.ie", true }, { "kasad.com", true }, { "kasamatsu-sogo-hoken.com", true }, + { "kasanikares.com", true }, { "kasasaprotect.com", true }, { "kasattakon.com", true }, { "kasaysayan.tk", true }, - { "kaseban.com", true }, { "kasei.im", true }, { "kasettilamerit.fi", true }, + { "kaseware.com", true }, + { "kaseware.net", true }, + { "kaseware.us", true }, { "kashbet.net", true }, { "kashflowcoupon.co.uk", true }, { "kashflowpromocode.co.uk", true }, - { "kashful.com.bd", true }, { "kashifmajid.tk", true }, { "kashifshah.tk", true }, { "kashinavi.com", true }, { "kashis.com.au", true }, + { "kashmash.com", true }, { "kashmirartquest.tk", true }, { "kashousing.tk", true }, - { "kashsports.com", true }, { "kashta-svgeorgi.com", true }, { "kasiafricagroup.org", true }, { "kasinobonus.com", true }, + { "kasinoilmanrekisteroitymista.io", true }, { "kasinonetti.com", true }, + { "kasinopartio.com", true }, { "kasis.nl", true }, + { "kaskadee.eu", true }, { "kasko.io", true }, { "kaskocdn.com", true }, { "kaskocloud.com", true }, @@ -67574,22 +77839,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kasper-team.tk", true }, { "kasperstad.dk", true }, { "kass-media.com", true }, + { "kassa.at", true }, { "kassa.com", true }, { "kassa.expert", true }, + { "kassa24.kz", true }, + { "kasse.at", true }, + { "kasse.pro", true }, { "kassemmal.at", true }, + { "kassen-zero.net", true }, + { "kassianoff.fr", true }, { "kassola.tk", true }, { "kastamonuhaberleri.tk", true }, - { "kastanie-skolen.dk", true }, { "kastankaoffice.cz", true }, { "kastelruth.biz", true }, { "kastemperaturen.ga", true }, { "kastgroup.com", true }, { "kastmedia.com", true }, { "kastorsky.ru", false }, + { "kastrupvinduet.dk", true }, + { "kastuvas-tau.lt", true }, + { "kasu.ga", true }, { "kasvall.com", true }, { "kasyna-internetowe.com", true }, + { "kasynoanalyzer.com", true }, { "kat.cat", true }, { "kat4at.tk", true }, + { "katachistore.com", true }, { "katagena.com", true }, { "kataiszilveszter.hu", false }, { "katalog-parfyum.tk", true }, @@ -67611,14 +77886,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "katarsisuib.no", true }, { "katartika.tk", true }, { "katazuketai.net", true }, + { "katc.com", true }, { "kate-beckinsale.tk", true }, { "kate-hurst.com", true }, { "katedra.de", true }, + { "kateduggan.com", true }, { "kateduggan.net", true }, { "katekligys.com", true }, { "katemihalikova.cz", true }, { "katenka.tk", true }, - { "katerinastudio.com", true }, { "katerinaverbovskaya.com", true }, { "katerman.cf", true }, { "katerman.ga", true }, @@ -67626,17 +77902,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "katerman.ml", true }, { "kateryan.tk", true }, { "kateryantv.tk", true }, + { "katesymmans.co.nz", true }, { "katewrightmba.com", true }, { "katex.org", true }, { "kateysagal.tk", true }, { "kathakkachakkar.com", true }, + { "kathardt.de", true }, + { "katherineandkegan.love", true }, { "katherineswynford.tk", true }, { "kathleendeisher.com", true }, { "kathless.com", true }, { "kathmandupost.com", true }, { "kathrin-maren-enders.de", true }, { "kathrynbernardo.tk", true }, - { "kathrynread.com", true }, { "kathy.best", true }, { "kathy.lgbt", true }, { "kathy.link", true }, @@ -67646,7 +77924,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kati0.com", true }, { "katiebenson.tk", true }, { "katiechai.xyz", true }, - { "katiekatcreations.com", true }, { "katiepears.net", true }, { "katieriker.com", true }, { "katieskandy.co.uk", true }, @@ -67658,20 +77935,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "katja-nikolic-design.de", true }, { "katjapratschke.de", true }, { "katka.info", true }, + { "katmccormick.com", true }, { "katnunn.co.uk", true }, { "kato-yane.com", true }, { "katoikos.world", true }, + { "katolickaseznamka.cz", true }, { "katom.com", true }, + { "katowice2021.eu", true }, { "katrelleonline.tk", true }, + { "katretter.de", true }, { "katriito.ee", true }, { "katrin.tk", true }, + { "katrinajadepornstar.com", true }, { "katrinakaifphotos.tk", true }, { "katrinasevilla.com", true }, { "katrinjanke.de", false }, { "katscastles.co.uk", true }, { "katsiavarasorthopedics.gr", true }, - { "katsifos.gr", true }, - { "katsunet.com", false }, + { "katsunet.com", true }, { "kattelans.de", true }, { "kattelans.eu", true }, { "kattelus.tk", true }, @@ -67680,17 +77961,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "katushka.cf", true }, { "katushka.ga", true }, { "katyl.info", false }, - { "katyqueen.com", true }, + { "katyusha.net", true }, { "katzei.fr", true }, - { "katzelkraft.fr", true }, { "katzenbrunnen-test.de", true }, { "katzensklave.me", true }, { "katzrkool.xyz", true }, - { "kau-boys.com", true }, - { "kau-boys.de", true }, { "kaufberatung.community", true }, { "kaufhausdesaffen.com", true }, { "kaufkraftkiel.de", true }, + { "kaufleute-sbh.de", true }, { "kaukauna.gov", true }, { "kauper.de", true }, { "kauperwood.ovh", true }, @@ -67700,16 +77979,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kaustubhk.com", true }, { "kavalasite.gr", true }, { "kavatasygarety.tk", true }, + { "kavelruilonline.nl", true }, { "kaverti.com", true }, { "kavik.no", true }, - { "kavin.rocks", true }, + { "kavin.rocks", false }, { "kavinchauhan.in", true }, { "kavitech.vn", true }, { "kavithai.tk", true }, { "kavkaz-info.tk", true }, { "kavkaz.cf", true }, { "kavli-express.gr", true }, + { "kavorka.me", true }, { "kavovary-kava.cz", true }, + { "kavshipping.com", true }, { "kawabeest.tk", true }, { "kawadoart.com", true }, { "kawaii-dollies.tk", true }, @@ -67717,31 +77999,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kawaiicon.org", true }, { "kawaiiku.com", true }, { "kawaiiku.de", true }, + { "kawaiilo.li", true }, { "kawamura-inc.jp", true }, + { "kawandegroup.com", true }, { "kawasakipartsonline.co.uk", true }, { "kawayii.com", true }, + { "kawigraphics.com", true }, + { "kawnation.gov", true }, + { "kawuk.com", true }, { "kay.la", true }, { "kay.moe", true }, { "kayakaventura.tk", true }, { "kayakcastro.tk", true }, { "kayakpolouniversidades.tk", true }, + { "kaycan.com", true }, { "kaydan.io", true }, - { "kayeperry.com", true }, { "kayipkiliseler.com", true }, - { "kayisi.com", true }, + { "kayisir.com", true }, { "kayit.co.uk", true }, - { "kaylassmoothies.nl", true }, { "kayleen.net", true }, { "kaylielaw.com", true }, - { "kaylyn.ink", false }, - { "kayo.digital", true }, + { "kayne.com", true }, { "kayon.cf", true }, { "kayscs.com", true }, + { "kayseri.bel.tr", true }, { "kayserihaberleri.tk", true }, - { "kaysis.gov.tr", true }, { "kaysville.gov", true }, { "kaysvillechurch.com", true }, { "kayteedidquiltsandmore.com", true }, + { "kayture.com", true }, { "kayvepartners.com", true }, { "kazakov.lt", true }, { "kazan-tury.ml", true }, @@ -67753,13 +78039,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kazap.co.uk", true }, { "kazard.co.za", true }, { "kazarmy.tk", true }, + { "kazeso.kz", true }, + { "kazigk.me", true }, { "kazino5.tk", true }, - { "kazky.com", true }, - { "kazmamall.com", true }, { "kazna.ml", true }, + { "kaznice.art", true }, { "kaznur.tk", true }, { "kazoohr.com", true }, { "kaztest.tk", true }, + { "kazu-techlab.com", true }, { "kazu.click", true }, { "kazuhirohigashi.com", true }, { "kazumi-clinic.com", true }, @@ -67767,57 +78055,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kazumi.ro", true }, { "kazuno-jc.or.jp", true }, { "kazvel.com", true }, + { "kazvet.ru", true }, { "kazwolfe.io", true }, { "kazy111.info", true }, - { "kazzylen.com", true }, + { "kb-psy.fr", true }, { "kb096.com", true }, { "kb1000.de", true }, - { "kb10uy.org", true }, { "kb1313.com", true }, - { "kb1515.com", true }, { "kb2121.com", true }, { "kb283.com", true }, { "kb35.net", true }, { "kb38.net", true }, - { "kb481.com", true }, + { "kb481.com", false }, { "kb5050.com", true }, { "kb5151.com", true }, { "kb5757.com", true }, - { "kb65.net", true }, { "kb7070.com", true }, - { "kb7272.com", true }, - { "kb750.com", true }, { "kb82.net", true }, - { "kb88.com", true }, { "kb88dc05.com", true }, { "kb88dc12.com", true }, { "kb88dc15.com", true }, { "kb88dc16.com", true }, { "kb88dc17.com", true }, { "kb88dc26.com", true }, - { "kb9191.com", true }, { "kb930.com", true }, - { "kb957.com", true }, { "kb9797.com", true }, { "kb9988.com", true }, { "kba-online.de", true }, { "kbb-ev.de", true }, { "kbbouncycastlehire.co.uk", true }, { "kbc.be", false }, + { "kbcjiolotterywinners.com", true }, { "kbco.net", true }, { "kbcr.gov", true }, { "kbcso.com", false }, + { "kbet168.com", true }, { "kbhfuge.dk", true }, { "kbit.dk", true }, { "kbjorklu.com", true }, { "kbkstudio.cz", true }, { "kbleventhire.co.uk", true }, { "kbmhawaii.com", true }, + { "kboosting.com", true }, { "kbsinflatablekingdom.co.uk", true }, { "kbst.se", false }, - { "kbterapicenter.se", true }, + { "kbtairmont.com", true }, + { "kbtit.jp", true }, { "kbz.fr", true }, - { "kc-accountants.com", true }, { "kc-holzfaeller.de", true }, { "kc-hrubeho.cz", true }, { "kc-leeuwarden.tk", true }, @@ -67825,44 +78109,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kc3.moe", true }, { "kc5mpk.com", true }, { "kccargo.us", true }, - { "kciglobalstore.com", true }, + { "kcfiradio.com", true }, + { "kchanews.com", true }, { "kcire.me", true }, { "kck-online.tk", true }, + { "kckarchitects.com", true }, + { "kckingdom.com", true }, { "kcliner.com", true }, { "kcmicapital.com", true }, + { "kcnawatch.org", true }, { "kcnexp.eu.org", true }, + { "kcpredict.com", true }, { "kcpromi.sk", true }, { "kcptun.com", true }, + { "kcsconstructioncompany.com", true }, { "kcsh.men", true }, { "kcshipping.co.uk", true }, { "kcsonline.biz", true }, { "kcsordparticipation.org", true }, { "kcsprayfoam.com", true }, + { "kcucs.com", true }, { "kd-23.ru", true }, + { "kd-event.de", true }, { "kd.net.nz", true }, - { "kd23.ru", true }, - { "kd3.in", true }, { "kdarawandekar.tk", true }, - { "kdays.net", true }, + { "kdb.uz", true }, { "kdcinfo.com", true }, { "kdcompany.ru", true }, { "kde-je-skladem.cz", true }, - { "kdex.de", true }, + { "kdiender.nl", true }, { "kdistech.nz", true }, + { "kdizain.ru", true }, + { "kdjsa.com", true }, + { "kdk.com.my", true }, { "kdl-group.pl", true }, + { "kdo-vola.cz", true }, + { "kdonkers.com", true }, + { "kdoslavi.cz", true }, + { "kdpmgi.com", true }, { "kdproduction.cz", true }, + { "kdrama.cc", true }, { "kdramaholic.com", true }, { "kdrive.tk", true }, + { "kduggan.net", true }, { "kdw.cloud", true }, { "kdyby.org", false }, { "ke.fo", true }, + { "ke.ke", true }, { "ke8gtp-vf.herokuapp.com", true }, - { "keakon.net", true }, + { "kea.dk", true }, + { "keaipublishing.com", true }, + { "keala.services", true }, { "keane.space", true }, { "keaneokelley.com", true }, { "kearney.io", true }, { "kearneycountyne.gov", true }, - { "kearneyvisioncare.com", true }, + { "kearneyhub.com", true }, { "kearnyaz.gov", true }, { "keatsandchapman.ie", true }, { "keaysmillwork.com", true }, @@ -67873,7 +78175,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kebabbruce.com", false }, { "kebhanamyanmar.com", true }, { "kebo.xyz", true }, + { "kech-immobilier.com", true }, { "kecht.at", true }, + { "kecrily.me", false }, { "kedarastudios.com", true }, { "kedero.com", true }, { "kedi.tk", true }, @@ -67889,7 +78193,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keechain.io", true }, { "keeckee.ml", true }, { "keeforcecloud.com", true }, - { "keeg.me", true }, { "keekmix.nl", true }, { "keelandlong.com", true }, { "keeley.net", true }, @@ -67904,10 +78207,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keep.moe", true }, { "keepa.com", true }, { "keepagree.gq", true }, + { "keepclean.me", false }, { "keeperapp.com", true }, { "keeperklan.com", false }, { "keepersecurity.com", true }, + { "keepersecurity.com.au", true }, { "keepersecurity.eu", true }, + { "keepersecurity.jp", true }, + { "keepersecurity.us", true }, { "keepingitheel.com", true }, { "keepingitsimpleblog.com", true }, { "keepingtheplot.co.uk", true }, @@ -67916,9 +78223,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keepitsimplebitcoin.com", true }, { "keepitweedy.com", true }, { "keepleft.gr", true }, - { "keeppost.com", true }, + { "keeprunning.fun", true }, { "keepsakedna.com", true }, { "keepsight.org.au", true }, + { "keepsmyrnabeautiful.com", true }, + { "keepsolid.com", true }, { "keepwatchprayer.org", true }, { "keesmartens.tk", true }, { "keesslop.nl", true }, @@ -67933,17 +78242,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keganthorrez.com", true }, { "kegelschiene.net", true }, { "kehalcpa.ca", true }, + { "kehez.com", true }, { "kehlenbach.net", true }, { "kehrle.xyz", true }, - { "kei-homes.com", true }, { "keian.tk", true }, { "keibablood.com", true }, + { "keiebijters.nl", true }, { "keifel.de", true }, { "keigakusha.co.jp", true }, - { "keiji0501.com", true }, + { "keikadreamland.fun", true }, { "keil-web.de", true }, { "keilycosmetics.com", true }, - { "kein-design.de", true }, { "kein-fidget-spinner-werden.de", true }, { "kein-hindernis.de", true }, { "kein-vergessen.tk", true }, @@ -67952,45 +78261,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keio-bizplaza.jp", true }, { "keio-formula.com", true }, { "keiralewis.co.uk", true }, + { "keirna.com", true }, { "keisaku.org", true }, - { "keisepulveda.com", true }, { "keishi.co.jp", true }, { "keishiando.com", true }, + { "keishicho-mirai-method.jp", true }, { "keisinger.name", true }, + { "keisukekimura.com", true }, + { "keitaro.io", true }, { "keith.pro", true }, { "keithazzopardi.tk", true }, + { "keithblakemorenoble.com", true }, { "keithcwood.com", true }, { "keithlomax.com", true }, + { "keithmcmillen.com", true }, { "keiths.ml", true }, { "keithstaxis.co.uk", true }, - { "keithwillcock.com", true }, { "keithws.net", true }, { "keiyuki.com", true }, { "keizeror.gov", true }, - { "kejadiananeh.com", true }, - { "kejar.id", false }, { "kejixiezuo.com", true }, { "kejpop.pl", true }, - { "keka.org", true }, { "kekarimi.com", true }, { "keke-shop.ch", true }, + { "keke125.com", true }, { "kekku.li", false }, { "kekoskee.gov", true }, + { "keks.loan", true }, { "keksi.io", true }, - { "kektime.com", true }, - { "kekz.org", true }, { "kela.jp", true }, { "kelamanproduction.tk", true }, + { "kelamb.com", true }, { "kelantan.tk", true }, { "kelantanmudah.com", false }, { "kelax.tk", true }, { "kelcible.fr", true }, { "keldan.fo", true }, { "kelder.tk", true }, + { "kelderro.nl", true }, { "kelgtermans-usedcars.be", true }, { "kelinda.tk", true }, + { "kelio.io", true }, { "kelis.fr", true }, { "kell.tk", true }, + { "kell3r.ch", true }, { "kellansite.com", true }, { "keller-aarau.ch", true }, { "keller-sports.at", true }, @@ -68013,22 +78327,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keller-x.nl", true }, { "keller-x.se", true }, { "kellercore.tk", true }, + { "kellerencompass.com", true }, { "kellerlan.org", false }, - { "kelleycurran.com", true }, { "kelleylatino.tk", true }, { "kelleymcchesney.us", true }, { "kellimacconnell.com", true }, { "kellyandantony.com", true }, { "kellygrenard.com", true }, { "kellyosbourne.tk", true }, + { "kellyporn.com", true }, { "kellyskastles.co.uk", true }, - { "kellyssportsbarandgrill.com", true }, { "kellyswordshop.com", true }, { "kellyvoice.tk", true }, { "kellywebcam.tk", true }, { "kelm.me", true }, - { "kelp.agency", true }, - { "kelprof.com", true }, + { "kelme.com", true }, + { "keln.net", true }, + { "kelp.agency", false }, { "kelsa.io", false }, { "kelsall39.com", true }, { "kelteks.com", true }, @@ -68036,19 +78351,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kelvinchung.tk", true }, { "kelvinfichter.com", false }, { "kelyan.fr", true }, + { "kelyon.biz", true }, + { "kelyon.com", true }, + { "kelyon.es", true }, + { "kelyon.eu", true }, + { "kelyon.info", true }, + { "kelyon.it", true }, + { "kelyon.net", true }, { "kemahtx.gov", true }, { "kemanai.akita.jp", true }, { "kemand.com", true }, - { "kemandirian.com", true }, + { "kemba.com", true }, { "kemeha.tk", true }, { "kemerovo.gq", true }, { "kemerovo.ml", true }, { "kemerovo.tk", true }, { "kemerovo42.tk", true }, - { "kemet-international.com", true }, { "kemet.co.uk", true }, - { "kemet.com.au", true }, + { "kemhan.go.id", true }, + { "kemian.de", true }, + { "kemmerer-net.de", false }, { "kemono.party", true }, + { "kemono.su", true }, { "kempkens.io", true }, { "kempnertx.gov", true }, { "kemptechnologies.com", false }, @@ -68064,6 +78388,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kemsamnhatban.tk", true }, { "ken-electric.com.br", true }, { "ken.fm", true }, + { "kena-blok.xyz", true }, { "kenbillionsyuan.tk", true }, { "kenbonny.net", false }, { "kendall.productions", true }, @@ -68072,29 +78397,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kendermore.it", true }, { "kendernet.com", true }, { "kendev.com", true }, - { "kendinyapurunleri.com", true }, + { "kendigawards.com", true }, { "kendle.tk", true }, { "kendrick.tk", true }, { "kendu.si", false }, + { "kenduct.net", true }, { "kenedytx.gov", true }, { "kenedytxedc.gov", true }, { "kenforeman.com", true }, - { "kenhgiamgia.net", true }, + { "kenhhomestay.com", true }, { "keniasfamilychildcare.com", true }, { "keniff.gq", true }, - { "kenkoelectric.com", false }, { "kenlewis.com", true }, - { "kenmartin.ru", true }, { "kennebec.gov", true }, { "kennedy.cf", true }, { "kennedy.ie", true }, - { "kennedy.is", true }, { "kennedyinsurancesolutions.com", true }, { "kenners.org", false }, { "kennethaasan.no", true }, { "kennethandersen.com", true }, { "kennethlim.me", true }, - { "kenneths.org", true }, { "kennethsentillas.com", true }, { "kennewell.tk", true }, { "kennfixx.com", true }, @@ -68103,8 +78425,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kennisnetwerkparkeren.nl", true }, { "kennonhvac.com", true }, { "kenny-peck.com", true }, + { "kenny.technology", true }, + { "kennychan.xyz", true }, { "kennynet.co.uk", true }, - { "kennyparsons.com", true }, { "keno.im", true }, { "keno.tk", true }, { "kenockeetownshipmi.gov", true }, @@ -68115,31 +78438,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kenrick95.org", true }, { "kens.pics", false }, { "kensbouncycastles.co.uk", true }, - { "kenscustomfloors.com", true }, { "kenshingakuen.or.jp", true }, + { "kensingtonsqca.com", true }, { "kentcountyde.gov", true }, { "kentdalevets.co.uk", true }, { "kentec.net", false }, { "kenterlis.gr", true }, { "kentlove.com", true }, { "kentradioaeromodelers.com", true }, - { "kenttasimacilik.net", true }, - { "kentuckianatrucking.com", true }, + { "kentut.xyz", true }, { "kenvix.com", true }, { "kenw.ca", true }, + { "kenwood-electronics.co.uk", true }, + { "kenwood.de", true }, + { "kenwood.eu", true }, { "kenx5.eu.org", true }, + { "kenyachildrencentres.com", true }, { "kenyons.info", true }, { "kenzelmann.eu", true }, { "kenzelmann.name", true }, + { "kenzie.com.br", true }, + { "kenziemadisonpornstar.com", true }, + { "kenziereevespornstar.com", true }, + { "kenzietaylorpornstar.com", true }, { "keops-spine.fr", true }, - { "keops-spine.us", true }, { "keos.ga", true }, { "keos.tk", true }, { "kep-sbt.hu", true }, { "kepak.tk", true }, { "kepinski.ch", false }, { "kepkonyvtar.hu", true }, + { "kepleruniklinikum.at", true }, { "keponews.com", true }, + { "kepoper.com", true }, { "keppler.tk", true }, { "kepppi.com", true }, { "kepsbt.hu", true }, @@ -68147,13 +78478,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keramed.ga", true }, { "keramed.gq", true }, { "keramikaopava.cz", true }, + { "kerautretvian.fr", true }, { "kerb-grossauheim.de", true }, { "kerb.com", true }, { "kerbin.org", true }, { "kercovaparty.tk", true }, + { "kerdry.com", true }, { "kerebro.com", true }, - { "kerforhome.com", false }, - { "keridos.de", true }, { "kerijacoby.com", true }, { "kerimusta.com", true }, { "keritial.eu.org", true }, @@ -68167,12 +78498,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kernel-error.com", true }, { "kernel-error.de", true }, { "kernel-panik.me", true }, + { "kernel-video-sharing.com", true }, { "kernel.nz", true }, { "kernelpanics.nl", true }, { "kernelprogrammer.com", false }, { "kernet.com.ar", true }, { "kernkompas.nl", true }, { "kerocristais.pt", false }, + { "kerozenn.net", true }, { "kerp.se", false }, { "kerpen-renovieren.de", true }, { "kerrcountytx.gov", true }, @@ -68180,13 +78513,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kerroscale.in", true }, { "kerryconsulting.com", true }, { "kerrydavisguitars.tk", true }, - { "kerrynbutlergardens.co.nz", true }, { "kersmexico.com", true }, { "kerstboomkantenklaar.nl", true }, { "kerstpagina.tk", true }, { "kersvers.agency", true }, { "kertis.tk", true }, { "kerus.net", true }, + { "kervive.com", true }, { "kescher.at", true }, { "kescher.gay", true }, { "kescher.site", true }, @@ -68198,26 +78531,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keshankang.org", true }, { "keshausconsulting.com", true }, { "keshav.cc", true }, + { "keshavnet.com", true }, { "kesifasya.com", true }, - { "keskeces.com", true }, + { "kesinidulu.com", true }, { "keskikorpimotorsport.fi", false }, - { "kessawear.com", true }, + { "keskkonnaamet.ee", false }, + { "keskraamatukogu.ee", true }, + { "kessa.com", true }, + { "kesse.ru", true }, { "kessel-runners.com", true }, { "kesselrun.goip.de", true }, { "kesslerandsons.com", true }, - { "kestbrook.cn", true }, { "kesteren.org", true }, - { "keszulektervezes.hu", false }, - { "ketabbashi.com", true }, { "ketamine.co.uk", true }, + { "ketamine.uk", true }, + { "ketchcdn.com", true }, + { "ketchikan.gov", true }, { "ketemulagi.com", true }, { "ketgioisu.tk", true }, { "ketoanvietnam.tk", true }, { "ketocanine.ca", true }, { "ketoconazole.gq", true }, { "ketoliv.dk", true }, - { "ketopower.club", true }, { "ketotadka.com", true }, + { "ketquaso.net", true }, { "kett.email", true }, { "kettererholmes.tk", true }, { "kettinggeleider.be", true }, @@ -68229,6 +78566,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ketty-voyance.com", false }, { "ketulgpatel.tk", true }, { "ketzer.tk", true }, + { "keukenhof.nl", true }, { "keukenstudio.tk", true }, { "keurigbestprice.tk", true }, { "keutel.net", true }, @@ -68248,19 +78586,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kevinackford.uk", true }, { "kevinapease.com", true }, { "kevinaud.io", true }, + { "kevinbardot.alwaysdata.net", true }, { "kevinbauer.ca", true }, { "kevinbowers.me", true }, { "kevinchang.me", true }, { "kevincox.ca", true }, { "kevincoynepage.tk", true }, { "kevincramer.net", true }, - { "kevindienst.blog", false }, { "kevinfigueroamusic.tk", true }, { "kevinfoley.org", true }, { "kevinfumbles.com", true }, { "kevingsky.com", true }, { "kevinhill.nl", true }, { "kevinhq.com", true }, + { "kevinji.com", true }, { "kevinkla.es", true }, { "kevinlocke.name", true }, { "kevinloganelectrical.co.nz", true }, @@ -68268,6 +78607,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kevinmeijer.nl", true }, { "kevinmo.com", false }, { "kevinmoreland.com", true }, + { "kevinmorssink.nl", true }, { "kevinn.nl", true }, { "kevinpirnie.com", true }, { "kevinrandles.com", false }, @@ -68276,27 +78616,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kevinschoenmakers.tk", true }, { "kevinvanderperren.tk", true }, { "kevinvermassen.be", true }, - { "kevkevweb.com", true }, { "kevyn.lu", true }, { "kewauneeco.gov", true }, { "kewbee.co.nz", true }, { "kexingqing.com", true }, - { "kexino.com", true }, { "key-content.com", true }, + { "key-right.co.uk", true }, { "key-tracker.de", true }, + { "key.sa", true }, { "key1111.com", true }, { "key2perfection.com", true }, + { "key4.com.ua", true }, { "keybase.io", true }, { "keyblock.ga", true }, { "keyblock.gq", true }, { "keyblock.tk", true }, { "keyboard-monkeys.net", true }, { "keybored.co", true }, + { "keycat.de", true }, { "keycdn.com", true }, { "keycenter.com.br", true }, + { "keycontainers.co.za", true }, { "keydelay.tk", true }, { "keyerror.com", true }, { "keyesrobot.cn", true }, + { "keyestudio.com", true }, { "keyfortech.com", true }, { "keygen.sh", true }, { "keygenguru.com", true }, @@ -68313,27 +78657,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "keynes.id.au", true }, { "keyoxide.org", true }, { "keyphotojs.cf", true }, + { "keypublishing.com", true }, + { "keys.casa", true }, { "keys.fedoraproject.org", true }, { "keyscore.me", true }, + { "keyscouts.com", true }, { "keyserver.sexy", false }, + { "keysix.com", true }, { "keysmedspa.com", true }, { "keysofart.com", true }, { "keysso.net", true }, - { "keysupport.org", true }, + { "keystoimagination.com", true }, + { "keystone-europe.com", true }, + { "keysy.com", true }, + { "keytoenergy.com", true }, { "keytomyq.com", true }, { "keyua.org", true }, { "keywalker.co.jp", true }, - { "keywaysconsulting.co.uk", true }, { "keyworth-meadow.tk", true }, { "keyyek.com", false }, + { "keziah.de", true }, { "kezmanweb.tk", true }, - { "kf-59.com", true }, { "kf-slot.com", true }, { "kf005.com", false }, { "kf068.com", true }, - { "kf196.com", false }, { "kf199.com", false }, { "kf2525.com", true }, + { "kf6636.com", true }, { "kf66888.com", false }, { "kf6820.com", true }, { "kf688.com", true }, @@ -68343,35 +78693,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kf8955.com", false }, { "kf8956.com", false }, { "kf8957.com", false }, + { "kfanhub.com", true }, { "kfassessment.eu", true }, { "kfbl.cc", true }, - { "kffs.ru", true }, { "kfgleasing.pl", true }, - { "kfgsa.pl", true }, { "kfirba.me", true }, { "kfispiff.com", true }, { "kfm.ink", false }, { "kfmhf.ca", true }, - { "kforesund.se", true }, { "kfoundation.org", true }, - { "kfv-kiel.de", false }, + { "kfv-kiel.de", true }, { "kfvullnetari-uck.tk", true }, - { "kfw-confluence.de", true }, { "kfz-hantschel.de", true }, { "kfz-sachverstand.de", true }, { "kfz-service-wachtmann.de", true }, { "kfz.nl", true }, { "kfzjeugd.nl", true }, { "kg7.pl", true }, + { "kgk-cgc.ch", true }, + { "kgk.gov.tr", true }, { "kgky.cc", true }, { "kgm-irm.be", true }, + { "kgmediafactory.com", true }, { "kgnk.ru", false }, { "kgs-neviges.de", true }, { "kgt10.ru", true }, + { "kgun9.com", true }, { "kgunion.com", true }, { "kgv-zappendorf.tk", true }, { "kh.pub.sa", true }, - { "kha.com", true }, + { "khab03.ru", true }, { "khabar24.tk", true }, { "khachhangvietnam.tk", true }, { "khadishalatina.com", true }, @@ -68385,25 +78736,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "khakiblossom.com", true }, { "khakim.gq", true }, { "khakim.tk", true }, + { "khaledalsabt.com", true }, { "khaledkhan.ml", true }, + { "khaleej-trend.online", true }, { "khaleesi.tk", true }, + { "khalid-kanouf.com", true }, { "khalidalnajjar.com", true }, { "khalidmail.tk", true }, { "khaliinfo.tk", true }, { "khalti.com", true }, + { "khampha.vn", true }, { "khanacademy.org", true }, { "khankandi.tk", true }, { "khanovaskola.cz", true }, - { "khanyisacentre.co.za", true }, { "khaotipthai.se", true }, { "kharatinoil.ml", true }, { "kharkiv.tk", true }, { "kharkov.tk", true }, - { "kharris.info", true }, { "khas.co.uk", true }, + { "khatoco.com", true }, + { "khatrimaza99.lol", true }, + { "khayal-3d.com", true }, + { "khda.gov.ae", true }, { "khdestiny.tk", true }, { "khebranet.tk", true }, - { "khedmatazma.com", true }, + { "khepri.uk", true }, { "kheshtar.pl", true }, { "khetzal.info", true }, { "khey-tv.fr", true }, @@ -68412,15 +78769,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "khipu.com", true }, { "khm.v.ua", true }, { "khmb.ru", false }, - { "khmer.vip", true }, { "khmerios.tk", true }, { "khmerlive.cf", true }, { "khmrynok.com.ua", true }, + { "khn.nl", false }, { "khoasweb.tk", true }, { "khodromedic.com", true }, { "khojhealth.com", true }, + { "khonaka.com", true }, { "khorne.me", true }, - { "khosroblog.ir", true }, { "khoteyev.tk", true }, { "khouloud.de", true }, { "khoury-dulla.ch", false }, @@ -68428,6 +78785,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "khoxuongchothuegiare.vn", true }, { "khramtsov.org", true }, { "khristov.com", true }, + { "khronos.org", true }, { "khs1994.com", true }, { "khslaw.com", true }, { "khste-ceciliamoorsel.tk", true }, @@ -68436,8 +78794,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "khusal.tk", true }, { "khushiandjoel.com", true }, { "khwezifinancialservices.co.za", true }, + { "khwiki.com", true }, { "ki-management.ch", true }, + { "ki.ki", true }, { "ki6rbv.com", true }, + { "kiacatherine.sg", true }, { "kiadoapartman.hu", true }, { "kiahalchemy.com", true }, { "kialo-edu.com", true }, @@ -68453,23 +78814,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kiasarnews.tk", true }, { "kiasystems.com", true }, { "kibea.net", true }, - { "kibersalon.com", true }, { "kibibit.net", true }, { "kibickas.lt", true }, { "kibizoid.tk", true }, { "kibonnu.com", true }, - { "kibosj.co.uk", true }, - { "kibrisdoktor.com", true }, { "kibrit.com.tr", true }, { "kichemalamut.tk", true }, - { "kicirdekorasyon.com", true }, { "kick-in.nl", true }, { "kickasscanadians.ca", true }, { "kickasspoker.com", true }, { "kickback-studios.com", true }, { "kickedmycat.com", true }, { "kickex.com", true }, - { "kickitupcoaching.com", true }, + { "kickico.com", true }, + { "kickitfootball.com.au", true }, { "kicksecure.com", true }, { "kickshack.tk", true }, { "kicktipp.at", true }, @@ -68483,42 +78841,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kicktipp.nl", true }, { "kicktipp.pl", true }, { "kicktipp.pt", true }, + { "kickzy.nl", true }, { "kicou.info", true }, + { "kiczeklaw.com", true }, { "kiczela.eu", true }, { "kidalt.tk", true }, { "kidan.ch", true }, { "kidaptive.com", true }, { "kidbacker.com", true }, + { "kidcentraltn.com", true }, + { "kidderminster.ac.uk", true }, { "kiddies.tk", true }, { "kiddieschristian.academy", true }, { "kiddieskingdom.tk", true }, { "kiddocom.org", true }, + { "kiddoscape.eu", true }, { "kiddyboom.ua", true }, + { "kiddyland.co.jp", true }, { "kidfitseries.com.au", true }, { "kidify.co.uk", true }, + { "kidis.lt", true }, { "kidisov.tk", true }, + { "kidm4k.com", true }, + { "kidney.ca", true }, { "kidneydonation.com", true }, { "kido-dc.jp", true }, { "kidonng.me", true }, - { "kidorzo.com", true }, { "kids-castles.com", true }, { "kids-ok.com", true }, { "kids-world.dk", true }, { "kids.gov", true }, { "kids2day.in", true }, { "kids360pediatrics.com", true }, + { "kidsbits.cc", true }, { "kidsclub.photos", true }, - { "kidscraftbook.com", true }, { "kidsdaysout.co.uk", true }, { "kidsdinefree.com", true }, { "kidsdj.co.uk", true }, { "kidsforsavingearth.org", true }, { "kidsgoga.ga", true }, { "kidsinwoods-interfacesouth.org", true }, + { "kidslearners.com", true }, + { "kidslearningchannel.wiki", true }, { "kidsmark.net", true }, { "kidsneversleep.com", false }, + { "kidsontheyard.com", true }, { "kidspaper.nl", true }, - { "kidsphysiotherapy.co.uk", true }, { "kidsplace.tk", true }, { "kidsplanner.fr", true }, { "kidsplay-plymouth.co.uk", true }, @@ -68535,25 +78903,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kiebel.de", true }, { "kiedys.net", true }, { "kiefnersoftware.com", true }, + { "kiehls.pt", true }, { "kiehost.tk", true }, { "kiekin.org", true }, { "kiekko.pro", true }, { "kielux.de", true }, { "kielwi.gov", true }, - { "kienhuon.com", true }, { "kienlen.org", true }, - { "kientrucnamcuong.vn", true }, { "kienviethung.com", true }, - { "kieran-mcguire.uk", false }, + { "kieran-mcguire.uk", true }, { "kieran.de", true }, - { "kieran.ie", true }, { "kieranjones.uk", true }, { "kieranpotts.com", true }, { "kieranweightman.me", true }, { "kieronbartsch.de", true }, { "kierweb.co.uk", true }, { "kiesjeplek.nl", true }, - { "kiesmedia.com", true }, + { "kiesmedia.com", false }, { "kiesuwarbeidsrechtadvocaat.nl", true }, { "kiesuwkerstkaart.nl", true }, { "kietblog.tk", true }, @@ -68563,22 +78929,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kievholod.in.ua", true }, { "kievkiralikotel.com", true }, { "kievlove.tk", true }, - { "kievparus.com.ua", true }, { "kif.rocks", false }, { "kiffmarks.com", true }, { "kifid.nl", true }, { "kigurumi-party.ru", true }, - { "kihi.news", true }, { "kiinanharjakoirat.tk", true }, { "kiinteistot-lidl.fi", true }, + { "kiiteyo.net", true }, + { "kijkmeaanwanneerik.com", true }, + { "kik-info.com", true }, + { "kik-textilien.sk", true }, + { "kik.at", true }, + { "kik.cz", true }, + { "kik.de", true }, { "kik.ee", true }, + { "kik.es", true }, + { "kik.eu", true }, + { "kik.hr", true }, + { "kik.hu", true }, + { "kik.nl", true }, + { "kik.pl", true }, + { "kik.pt", true }, + { "kik.ro", true }, + { "kik.si", true }, { "kikbb.com", true }, - { "kike.wtf", true }, { "kiki-voice.jp", true }, + { "kikikanri.biz", true }, { "kikivega.net", true }, - { "kikoskia.com", true }, + { "kikki.io", true }, { "kiku.pw", true }, - { "kilencamping.no", true }, + { "kilencamping.no", false }, { "kilian.gallery", true }, { "kilianvalkhof.com", true }, { "kiliframework.org", true }, @@ -68589,8 +78969,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "killarnee.org", true }, { "killborn.tk", true }, { "killbot.org", true }, - { "killdeer.com", false }, + { "killdeer.com", true }, { "killedbynlp.com", true }, + { "killeenhardware.co.uk", true }, { "killer-fashion.tk", true }, { "killergreen.tk", true }, { "killerrabb.it", true }, @@ -68606,27 +78987,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kilo-files.tk", true }, { "kilobyte22.de", true }, { "kilogram.nl", true }, - { "kiloklubi.fi", true }, + { "kilomberosugar.co.tz", true }, { "kilometertje.nl", true }, + { "kilosorunum.com", true }, { "kiloton.tk", true }, + { "kilpiapp.com", true }, { "kilte.tk", true }, + { "kim-coiffure.fr", true }, { "kima.de", true }, { "kimai.cloud", true }, - { "kimaindia.com", true }, { "kimama-protein.jp", true }, { "kimbal.co.uk", true }, { "kimballcountyne.gov", true }, { "kimballwi.gov", true }, { "kimballwv.gov", true }, { "kimberleythomson.tk", true }, + { "kimberlitewaxmelts.co.uk", true }, + { "kimberlyal.gov", true }, { "kimberlycaprice.com", true }, + { "kimberlykanepornstar.com", true }, { "kimbunlar.tk", true }, { "kimdotcom.tk", true }, { "kimdumaine.com", true }, { "kimerald.tk", true }, { "kimgirard.com", true }, + { "kimherala.xyz", true }, { "kimicar.de", true }, { "kimino-school.com", true }, + { "kimiris.com", false }, { "kimis.gr", true }, { "kimisia.net", true }, { "kimitang.com", true }, @@ -68644,12 +79032,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kimsufi-jordi.tk", true }, { "kimtran.kim", true }, { "kimtstore.com", true }, + { "kimverly.no", true }, { "kimxxx.org", true }, { "kin-mail.at", true }, { "kin-mail.de", true }, { "kin-mail.net", true }, - { "kin.life", true }, - { "kin.pet", true }, { "kinaesthetics-begleitung-zuhause.at", true }, { "kinaesthetics-forschung.net", true }, { "kinaesthetics-net.at", true }, @@ -68674,25 +79061,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kinaesthetics.ro", true }, { "kinaesthetics.ru", true }, { "kinaesthetik-verein.de", true }, + { "kinamedia.se", true }, + { "kinanart.com", true }, { "kinanbudotenero.tk", true }, - { "kinanta.com", true }, + { "kinandcarta.com", true }, + { "kinarino-mall.jp", true }, { "kinautas.com", true }, - { "kinbev.com", true }, - { "kindbear.pl", true }, + { "kindan.net", true }, + { "kindapoth.com", true }, + { "kindcompany.com.br", true }, + { "kinde.com", true }, + { "kinden-giankyou.jp", true }, + { "kinden-kizuna.com", true }, { "kinder-garten.tk", true }, { "kinderarzt-berlin-zia.de", true }, { "kinderarzt-traunstein.de", true }, - { "kinderballett-frankfurt.de", true }, { "kinderbasar-luhe.de", true }, { "kinderbuecher-kostenlos.de", true }, + { "kinderchirurgie-muenchen.de", true }, { "kinderchor-bayreuth.de", true }, - { "kinderergotherapie-ik.nl", true }, { "kinderevents-sehnde.de", true }, { "kindergarten.vic.gov.au", true }, { "kinderhaus-kunterbunt-priestewitz.de", true }, { "kinderjugendfreizeitverein.de", true }, { "kinderkleding.news", true }, { "kinderlachen.ro", true }, + { "kindermarket.bg", true }, + { "kindernothilfe.de", true }, { "kinderopvang.gent", true }, { "kinderopvangthuis.nl", true }, { "kinderosteopathie-osteopathie.de", true }, @@ -68701,52 +79096,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kinderzorg.tk", true }, { "kindesfreude.ch", true }, { "kindfotografie.nl", true }, + { "kindler.xyz", true }, { "kindlezs.com", true }, { "kindredcode.com", true }, { "kindredcode.net", true }, { "kindredcode.org", true }, { "kindredspirits.tk", true }, + { "kindspace.ca", true }, { "kine-duthil.fr", true }, - { "kine.co.il", true }, { "kinebamps.be", true }, { "kinebioquimica.com", true }, + { "kinecenter.ec", true }, + { "kinecle.com", true }, { "kinencoin-tv.com", true }, { "kinepolis-studio.ga", true }, + { "kinescopecdn.net", true }, { "kinesiologie.tk", true }, { "kinesiologikerteminde.dk", true }, { "kinesiologiodense.dk", true }, { "kinesiologiskolen-syd.dk", true }, { "kinesiologiuddannelsen.dk", true }, - { "kineticit.com.au", true }, + { "kineticsdrive.com", true }, { "kinetikos.com.au", true }, { "kinetiq.com", true }, { "kinfule.tk", true }, { "king-of-the-castles.com", true }, + { "king-shoot.tv", true }, + { "kingandmcgaw.com", true }, { "kingant.net", true }, { "kinganywhere.eu", true }, { "kingbot.tk", true }, { "kingchess.vip", true }, { "kingclass.cn", true }, { "kingcourriel.fr", true }, + { "kingdirectionaldrilling.com", true }, { "kingdomcitymo.gov", true }, { "kingdomcrawlers.tk", true }, { "kingdominnergy.com", true }, - { "kingdommindsmentorsclub.com", true }, { "kingdoms.gg", true }, { "kingdomshow.mx", true }, + { "kingedwardvii.co.uk", true }, { "kingfast.cc", true }, { "kingfast.eu.org", true }, { "kingfin.com", true }, - { "kinggaragedoorsinc.com", true }, + { "kingfisherhallacademy.org.uk", true }, { "kingiescastles.co.uk", true }, { "kingjamesbibleonline.org", true }, { "kingjamesgospel.com", true }, { "kingkongxo.com", true }, - { "kinglaksa.com", false }, { "kinglier.ga", true }, { "kingliey.ga", true }, { "kingmakers.academy", true }, - { "kingmakers.eu", true }, { "kingofshooting.com", true }, { "kingofthecastlecoventry.co.uk", true }, { "kingofthecastlesentertainments.co.uk", true }, @@ -68758,14 +79158,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kingsblueblue.com", false }, { "kingsfoot.com", true }, { "kingsfordmi.gov", true }, - { "kingsgategrease.com", true }, - { "kingsgateseptic.com", true }, { "kingshome.gr", true }, { "kingsley.cc", true }, - { "kingsofkauffman.com", true }, { "kingsolomoncages.com", true }, { "kingsound.tk", true }, - { "kingspalacepainting.com", true }, { "kingstake.network", true }, { "kingston-fear.com", true }, { "kingstonga.gov", true }, @@ -68773,16 +79169,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kingsvilletexas.com", true }, { "kingtech8.tk", true }, { "kingtreeexperts.com", true }, - { "kinhtenongthon.vn", true }, { "kini24.ru", true }, + { "kinison.com", true }, { "kinja.com", true }, { "kinjerboerebroelof.tk", true }, { "kinkenonline.com", true }, - { "kinklist.me", true }, + { "kinklist.me", false }, { "kinksecrets.ga", true }, + { "kinkvr.com", true }, { "kinky-books.com", true }, { "kinkyinlaws.com", true }, { "kinmunity.com", true }, + { "kinnettmemorial.org", true }, { "kinnikinnick.com", false }, { "kino-boom.tk", true }, { "kino-dom.tk", true }, @@ -68802,7 +79200,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kinogold.tk", true }, { "kinograd.tk", true }, { "kinohi.tk", true }, - { "kinohled.cz", true }, + { "kinoks.fr", true }, { "kinokub.tk", true }, { "kinolex.ml", true }, { "kinology.tk", true }, @@ -68811,6 +79209,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kinomangas.tk", true }, { "kinomaniac.tk", true }, { "kinomoto.ovh", false }, + { "kinoplex.com.br", true }, + { "kinoprostor.tv", true }, { "kinos.nl", false }, { "kinoscope.tk", true }, { "kinoserver.ml", true }, @@ -68820,14 +79220,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kinovam.tk", true }, { "kinovsem.ml", true }, { "kinowork.tk", true }, - { "kinozal-me.appspot.com", true }, { "kinozone.tk", true }, { "kinschots.eu", true }, { "kinsei.jp", true }, { "kinshipnd.com", true }, - { "kinsights.com", false }, { "kintanalodge.fr", true }, { "kintawifi.com", true }, + { "kinter.media", true }, { "kinto.pro", true }, { "kintone.com", true }, { "kintore.tv", true }, @@ -68841,12 +79240,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kiomoda.com", true }, { "kionetworks.com", false }, { "kionetworks.es", true }, + { "kioskcomedy.org", true }, { "kiosque-famille.net", true }, { "kiosquefamille.fr", true }, { "kiot.eu", true }, { "kiousis.me", true }, + { "kiow.com", true }, { "kip-ribbetjes-bestellen.be", true }, { "kipa.at", true }, + { "kiparchive.org", true }, { "kipcrepair.com", true }, { "kipi.si", true }, { "kipiradio.com", true }, @@ -68855,6 +79257,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kipriakipita.gr", true }, { "kiprinform.com", true }, { "kiprooks.com", true }, + { "kiprotect.com", true }, { "kiprusoffsummers.tk", true }, { "kipwells32.com", true }, { "kiraboshi.xyz", true }, @@ -68868,17 +79271,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kiraqueen.net", true }, { "kirarie-kusatsu.com", true }, { "kirbear.com", true }, - { "kirche-sankt-augustin.de", true }, + { "kirbyvt.gov", true }, + { "kirche-bamberg.de", true }, { "kirchen-im-web.de", false }, { "kirchenchor-olzheim.de", true }, { "kirchengemeinde-markt-erlbach.de", true }, + { "kirchner.social", true }, { "kircp.com", true }, { "kirei.se", true }, { "kiret.tk", true }, { "kirgistan.tk", true }, { "kiriani.me", true }, { "kirie-photos.tk", true }, - { "kirig.ph", true }, { "kirikira.moe", true }, { "kirill.ws", true }, { "kirillaristov.com", true }, @@ -68895,29 +79299,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kirkkonummenavhkerho.net", true }, { "kirkovsky.com", true }, { "kirkwood-smith.com", true }, - { "kirkwoodfence.com", true }, { "kirkwoodfencing.com", true }, { "kirkwoodoutdoors.com", true }, - { "kiropraktorvard.se", true }, + { "kirmizipill.com", true }, { "kirov.ml", true }, { "kirovcity.tk", true }, { "kirovgrad.tk", true }, { "kirrie.pe.kr", true }, { "kirs.is", true }, { "kirsch-gestaltung.de", true }, + { "kirschbaum.cloud", true }, { "kirschbaum.me", true }, { "kirsehir.tk", true }, { "kirsehirhaber.tk", true }, { "kirstenbos.ca", true }, + { "kirstengillibrand.com", true }, + { "kirstycouture.co.uk", true }, { "kirstygreenwoodartist.ga", true }, { "kirus.de", true }, { "kirwandigital.com", true }, { "kisakazan.ml", true }, + { "kisallatorvos.hu", true }, + { "kisaragi.fund", true }, + { "kisaragi.works", true }, { "kisaragihayato.com", true }, { "kiseimarriage.com", true }, { "kisel.org", true }, { "kish-takhfif.com", true }, { "kishcar.co", true }, + { "kishenya.ua", true }, { "kisiselveri.com", true }, { "kiskeedeesailing.com", true }, { "kislovodsk-zamok.tk", true }, @@ -68926,7 +79336,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kismy.tk", true }, { "kismyder.tk", true }, { "kissanime.moe", true }, - { "kissen.li", true }, { "kisser.name", true }, { "kissesb.net", true }, { "kissgyms.com", true }, @@ -68935,22 +79344,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kissmateszabolcs.hu", true }, { "kissmycreative.com", true }, { "kissoft.ro", true }, - { "kisstube.tv", true }, + { "kisspeptin.com", true }, { "kistenmacher.net", true }, { "kistipro.tk", true }, { "kisulki.tk", true }, { "kisumuterraceapartments.tk", true }, { "kisvasut.tk", true }, + { "kit.com", true }, { "kita-freie-schule.de", true }, { "kita-sun.com", true }, - { "kitabat.com", true }, + { "kita.moe", true }, { "kitabgaul.com", false }, { "kitabnamabayi.com", true }, { "kitacoffee.com", true }, { "kitagawa-internal-medicine-clinic.com", true }, { "kitchen-design.cf", true }, { "kitchen-design.tk", true }, + { "kitchendesignperth.com.au", true }, { "kitchenguides.org", true }, + { "kitchenkettle.com", true }, { "kitchenlove.tk", true }, { "kitchenpad.biz", true }, { "kitchenpad.co.uk", true }, @@ -68962,24 +79374,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kitchenvile.com", true }, { "kitchenware.ml", true }, { "kitchenware.tk", true }, + { "kitchenwarehouseltd.com", true }, { "kitchenwarestore.xyz", true }, { "kitchfurnit.tk", true }, { "kitconcept.com", true }, { "kitconcept.de", true }, + { "kitdealoevera.com", true }, { "kite-surf.tk", true }, { "kite-surfen.tk", true }, - { "kiteadventure.nl", true }, { "kiteboard-selbstbau.tk", true }, { "kitebowl.ru", true }, + { "kitenation.com", true }, { "kiteschoolamsterdam.nl", true }, { "kiteschooledam.nl", true }, { "kiteschoolnoordwijk.nl", true }, + { "kiteschoolofkenpo.co.uk", true }, { "kitesurfen.tk", true }, { "kitevalley.tk", true }, { "kitgratos.tk", true }, { "kitke.de", true }, { "kitkit.cf", true }, { "kitkit.tk", true }, + { "kitmercerpornstar.com", true }, { "kitpara.shop", true }, { "kits-graphiques-shop.tk", true }, { "kits-graphiques.tk", true }, @@ -68991,18 +79407,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kitsplumbingandheating.com", true }, { "kitsquid.de", true }, { "kitsuna.eu", true }, + { "kitsunes.world", true }, { "kitta.tk", true }, { "kittatinny5.org", true }, { "kitten-advice-forum.cf", true }, { "kittenexchangeers.ga", true }, { "kittenexchangeest.ga", true }, + { "kittentoob.com", true }, { "kittitascounty.gov", true }, + { "kittleapps.com", true }, { "kittmedia.com", false }, { "kittpress.com", false }, { "kitty-core.org", true }, { "kittyblair.org", true }, - { "kittybot.de", true }, - { "kittybp2.com", true }, { "kittygalore.nl", true }, { "kittyhacker101.tk", false }, { "kittyknickers.com.au", true }, @@ -69012,30 +79429,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kittywilder.com", true }, { "kivacontainer.com", true }, { "kivitelezesbiztositas.hu", true }, + { "kivitv.com", true }, { "kiwee.eu", true }, { "kiweeagentur.de", true }, { "kiwi.com", true }, - { "kiwi.digital", true }, { "kiwi.global", true }, { "kiwi.ki", true }, { "kiwibird.tokyo", true }, { "kiwicoworking.com", true }, { "kiwideo.ro", true }, { "kiwiflowershop.com.ua", true }, + { "kiwilove.es", true }, { "kiwing.ddns.net", true }, { "kiwipayment.com", true }, { "kiwipedia.sk", true }, - { "kiwiplace.com", true }, + { "kiwiplace.com", false }, { "kiwisouvenirs.com", true }, { "kiwitastic.com", true }, { "kiwiz.co.uk", true }, { "kix.moe", true }, + { "kiyokosimmons.com", true }, { "kizetroniko.tk", true }, { "kizkulesi.tk", true }, { "kizomba.info", true }, + { "kiztarafi.net", true }, { "kizunaai.eu.org", true }, { "kizzedbykelz.com", true }, - { "kj-prince.com", false }, + { "kizzycode.de", true }, { "kj1396.net", true }, { "kjaer.io", true }, { "kjall.me", true }, @@ -69052,7 +79472,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kjkmail.de", true }, { "kjmedia.dk", true }, { "kjnotes.com", true }, - { "kjs73.com", true }, + { "kjrh.com", true }, + { "kk-bs.de", true }, { "kk-gruppe.net", true }, { "kk.gt", true }, { "kk.in.th", true }, @@ -69073,6 +79494,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kkcinemas.in", true }, { "kkcomcon.com", true }, { "kkcsc.co.jp", true }, + { "kkdesignsco.com", true }, + { "kkforwarding.com", true }, { "kkgn.nl", true }, { "kki.org", true }, { "kkiskra.tk", true }, @@ -69088,8 +79511,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kkk204.com", false }, { "kkk208.com", false }, { "kkk209.com", false }, + { "kkkkk.click", true }, { "kklb.de", true }, { "kknapredak-rubin.tk", true }, + { "kkpig.cn", true }, { "kkpp.ga", true }, { "kkr-bridal.net", true }, { "kkren.me", false }, @@ -69097,7 +79522,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kksg-sulzbach.de", true }, { "kksg.com", false }, { "kksshop.com", true }, - { "kkull.tv", true }, { "kkws.co", true }, { "kkyy.me", true }, { "kkzxak47.com", true }, @@ -69106,7 +79530,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klabnik.cz", true }, { "klabnikova.cz", true }, { "klacki.de", true }, + { "klackingtownshipmi.gov", true }, { "klad.tk", true }, + { "kladson.com", true }, { "kladzdor.ga", true }, { "kladzdor.tk", true }, { "klaim.us", true }, @@ -69116,48 +79542,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klankenkast.nl", true }, { "klanklichaam.be", true }, { "klapib.ee", true }, + { "klapsinakis.gr", true }, { "klapty.com", true }, { "klares-licht.de", true }, + { "klarheit.at", true }, { "klarika.com", true }, { "klarmobil-empfehlen.de", true }, { "klart.se", true }, { "klassen.tk", true }, + { "klassenfahrt-tirol.at", true }, { "klassiekballet.tk", true }, { "klassika.cf", true }, { "klassika.tk", true }, { "klatschreime.de", true }, { "klaudialeszczynska.pl", true }, { "klauke-enterprises.com", true }, - { "klausbrinch.dk", false }, + { "klaukegear.eu", true }, + { "klaus-pforte.de", true }, + { "klausapp.com", false }, + { "klausbrinch.dk", true }, { "klausen.dk", true }, + { "klausfischer.info", true }, { "klausfoerster.tk", true }, + { "klauspforte.de", true }, { "klauswissmann.com", true }, { "klautshop.com", true }, { "klavarog.tk", true }, { "klaver.it", true }, { "klaverjassen.tk", true }, + { "klavierhaus-klavins.de", true }, + { "klavierwunsch.de", true }, { "klaxon.me", true }, { "klaxon.ml", true }, + { "klaymemez.com", true }, { "kle.cz", true }, { "klea.tk", true }, { "kleaning.by", true }, - { "klebetape.de", true }, { "kleebauerhof.com", true }, { "kleen.tk", true }, - { "kleidermarkt-vintage.de", true }, + { "kleft.org", true }, { "kleidertauschpartys.de", true }, { "kleim.fr", true }, { "kleinblogje.nl", false }, { "kleine-dingen.nl", true }, - { "kleine-strandburg-heringsdorf.de", true }, - { "kleine-strandburg.com", true }, { "kleine-strolche-lich.de", true }, { "kleine-viecherei.de", true }, { "kleineanfragen.de", true }, - { "kleinestrandburg-heringsdorf.de", true }, - { "kleinestrandburg-usedom.de", true }, - { "kleineviecherei.de", true }, + { "kleineserver.nl", true }, { "kleinfein.co", true }, + { "kleinhamilton.co.uk", true }, { "kleinhaneveld.tk", true }, { "kleinhapl.com", true }, { "kleinhelena.dynv6.net", true }, @@ -69165,7 +79598,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kleins-hutorok.de", true }, { "kleinserienproduktion.com", true }, { "kleinsys.com", true }, - { "kleintransporte.net", true }, { "kleinwenner.eu", true }, { "kleise.gr", true }, { "kleki.com", true }, @@ -69175,13 +79607,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klempin.co.uk", true }, { "klempin.me", true }, { "klempin.net", true }, - { "klempin.network", true }, + { "klempin.org", true }, { "klempin.se", true }, + { "klempin.uk", true }, { "klen.ua", true }, { "klenc.eu", true }, { "kleor.com", true }, { "kleteckova.cz", true }, { "kletsenenproeven.nl", true }, + { "kletskoek.com", true }, { "kleurbkennen.nl", true }, { "kleuro.nl", true }, { "klev.tk", true }, @@ -69191,30 +79625,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klickinvite.com", true }, { "klickstdu.com", true }, { "kliemann.me", true }, + { "klik3.nl", false }, { "klikacc.com", false }, { "klikarnia.pl", true }, { "kliki.tk", true }, { "klikket.dk", true }, { "kliklinks.tk", true }, { "klikmarket.tk", true }, - { "klikweb.id", false }, - { "klil.co.il", true }, + { "klikweb.id", true }, { "klima.com", true }, - { "klimaatgroepstars.nl", true }, { "klimaatkids.be", true }, { "klimaatstad.gent", true }, { "klimacamp-sterkraderwald.de", true }, + { "klimafakten.de", true }, + { "klimakamp.nu", true }, + { "klimakomplekt.com", true }, { "klimaloven.no", true }, { "klimapartner.de", false }, { "klimapartner.net", true }, { "klimaplattform-milch.de", true }, { "klimatt.com", true }, + { "klimchuk.by", false }, { "klimeck.com", true }, + { "klinesignals.com", true }, { "klingeletest.de", true }, { "klingenundmesser.com", true }, { "klinik-fuer-aesthetische-zahnheilkunde.de", true }, { "klinikac.co.id", false }, + { "klinikasoyuz.ru", true }, { "klinikatlantis.com", true }, + { "kliniklistan.se", true }, { "klinikum-oldenburg.de", true }, { "klinkenberg.ws", true }, { "klinkenbergschoenen.nl", true }, @@ -69225,6 +79665,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klishyn.com", true }, { "klitmoeller.de", true }, { "klitmoeller.dk", true }, + { "klitoris.com.tr", true }, { "kliu.io", false }, { "klj-beveren.tk", true }, { "klj-kruibeke.tk", true }, @@ -69234,19 +79675,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klmgewinnspiel.de", true }, { "klmhouses.com", true }, { "klocast.com", true }, - { "klocker-ausserlechner.com", true }, { "klocksnack.se", false }, { "kloclabs.com", true }, { "klogeschichten.net", true }, { "kloia.com", true }, { "klokhuis.nl", true }, - { "klondike-pool.com", true }, { "kloop.kg", true }, { "klop.info", true }, { "klose.family", true }, { "klosko.net", true }, - { "kloudboy.com", true }, + { "klosterruine.de", true }, + { "kloudstack.me", true }, { "kloza.tk", true }, + { "kls-desk.com", true }, { "kls-platform.com", true }, { "klssn.com", true }, { "klu.io", true }, @@ -69255,15 +79696,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klubcajovna.cz", true }, { "kluberphoto.hu", true }, { "klubfitness.pl", true }, + { "klubgerlach.sk", true }, { "klubwsl.tk", true }, { "kluck.me", true }, { "kludge.eu", true }, { "klugemedia.de", true }, { "klumba.org", true }, + { "klumppcompanies.com", true }, + { "klumpprealty.com", true }, { "klusbedrijfdupau.nl", true }, { "klushka.cf", true }, { "klushnikova.tk", true }, - { "klusservice-utrecht.nl", true }, { "klustermedia.com", true }, { "klusweb-merenwijk.nl", true }, { "klute.spdns.de", true }, @@ -69271,24 +79714,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "klva.cz", true }, { "km8.co", true }, { "kma.ua", true }, - { "kmaslo.ru", true }, - { "kmassociations.com", true }, + { "kmartgifted.com.au", true }, { "kmb-chat.de", true }, - { "kmc-kosmetik.de", true }, + { "kmch.com", true }, { "kmdarkmaster.tk", true }, { "kmdevelop.com", true }, + { "kmecnc.com", true }, + { "kmhesaplama.com", true }, + { "kmhesaplama.net", true }, { "kmk.hu", true }, { "kmkz.jp", true }, + { "kmov.cc", true }, { "kmpropertyfunds.com", true }, + { "kmpropertyfunds.com.au", true }, { "kmrgroup.com", true }, - { "kms60.fr", true }, { "kmsk.tk", true }, + { "kmsm.com.au", true }, { "kmzs123.cn", true }, { "kn007.net", true }, { "kn40la.com", true }, { "kn4ivj.com", true }, { "kn4ola.com", true }, { "kn6olc.org", true }, + { "knab-networks.com", true }, { "knabden.co.za", true }, { "knabstrup-autoophug.dk", true }, { "knallfrosch.ddnss.de", true }, @@ -69298,11 +79746,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knapp.servehttp.com", true }, { "knarcraft.net", true }, { "knarkkorven.tk", true }, + { "knarzkopf.de", true }, { "knashaug.com", true }, + { "knauf.com", true }, { "knautiluz.net", false }, { "knbbw-frnab.tk", true }, { "kncg.pw", true }, { "kndrd.io", true }, + { "kneblesauto.com", true }, { "knecht.ca", true }, { "knechtology.com", true }, { "kneerux.de", true }, @@ -69314,6 +79765,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knetterbak.nl", true }, { "kngk-transavto.ru", true }, { "kngkng.com", true }, + { "knhchula.com", true }, { "kniga-ru.tk", true }, { "kniga.market", false }, { "knigareceptov.cf", true }, @@ -69322,6 +79774,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knighkidoma.tk", true }, { "knightsblog.de", true }, { "knightsbridge.net", true }, + { "knightsbridgewine.com", true }, { "knightsweep.com", false }, { "knighulki.cf", true }, { "knigi-free.cf", true }, @@ -69331,7 +79784,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knigifast.ga", true }, { "knigiunass.tk", true }, { "knihovnajablonne.cz", true }, - { "knip.ch", true }, { "knitfarious.com", true }, { "knitted-hats.tk", true }, { "knitted-things.tk", true }, @@ -69340,11 +79792,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knittingmallers.ga", true }, { "knittingmallest.ga", true }, { "knittingstory.cf", true }, + { "knivesandblades.co.uk", true }, { "kniwweler.com", true }, { "knize.tech", true }, + { "knizhniy.com", true }, { "knjazevac.tk", true }, { "knjizevic.at", false }, - { "knk218.com", true }, + { "knkv.nl", true }, { "knmv.nl", true }, { "knnet.ch", true }, { "knop.info", false }, @@ -69352,16 +79806,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knotenpunkt-nbg.de", true }, { "knovator.com", true }, { "know.cf", true }, + { "know2protect.gov", true }, { "knowarth.com", true }, + { "knowbook.org", true }, { "knowdebt.org", true }, - { "knowjoe.uk", true }, { "knowl365.com", true }, { "knowledge-base.info", false }, { "knowledgeforce.com", true }, { "knowledgehook.com", true }, + { "knowledgematters.com", true }, { "knowledgesuccess.org", true }, - { "knowledze.com", true }, { "knowlevillagecc.co.uk", true }, + { "knowmoreplatform.com", true }, { "knownsec.cf", true }, { "knowpanamatours.com", true }, { "knowrentalsers.ga", true }, @@ -69369,8 +79825,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knowthebus.cf", true }, { "knowthebus.ga", true }, { "knowthebus.gq", true }, + { "knowuproxy.com", true }, { "knowyour.place", true }, { "knowyourday.ai", true }, + { "knowyourteam.com", true }, { "knoxcountyil.gov", true }, { "knoxcountyne.gov", true }, { "knoxcountytn.gov", true }, @@ -69393,6 +79851,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "knxstore.cz", true }, { "knyawningrenovation.com", true }, { "knygos.lt", true }, + { "knzb.nl", true }, + { "koaa.com", true }, { "koabaer.com", true }, { "koabaer.de", true }, { "koala.one", false }, @@ -69405,18 +79865,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kobejet.com", true }, { "koberl.com", true }, { "kobet.tk", true }, - { "kobevanhecke.be", true }, { "kobezda.net", true }, { "kobieta.guru", true }, + { "kobietoid.pl", true }, { "kobietydokodu.pl", true }, + { "kobil.com", true }, { "kobly.com", true }, { "kobofarm.com", true }, { "koboldcraft.ch", true }, { "koboldmalade.fr", true }, { "kobovec.tk", true }, + { "kobox.org", true }, { "kobrin.tk", true }, { "kobtsev.tk", true }, { "kobudo49.fr", true }, + { "koc.hu", true }, { "kocaelihaber.tk", true }, { "kocaeliyiseyret.com", true }, { "koccoo.ga", true }, @@ -69424,11 +79887,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koch.com.au", true }, { "kochadaiyaan.tk", true }, { "kochbar.de", true }, - { "kochcommunity.com", true }, + { "kochcommunity.com", false }, { "kochdigital.dk", true }, { "kocherev.org", true }, { "kochereva.com", true }, { "kocheshkov.cf", true }, + { "kochfoods.com", true }, { "kochhar.net", true }, { "kochi-death.ml", true }, { "kochinke.com", true }, @@ -69447,18 +79911,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kodden.com.br", true }, { "kode-it.de", true }, { "kode.ch", false }, - { "kodecat.com", true }, { "kodeholic.me", true }, + { "kodes.com.tr", true }, { "kodexplorer.ml", true }, { "kodifirestick.info", true }, { "kodify.net", true }, { "kodigo.me", true }, - { "kodikom.de", true }, { "kodineuerleben.eu", true }, { "kodioso.com", true }, { "kodkollen.com", true }, { "kodkollen.se", true }, - { "kodomo.live", true }, + { "kodnistudio.com", true }, { "koe.dk", true }, { "koe.hn", true }, { "koe.kr", false }, @@ -69470,9 +79933,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koehn.com", true }, { "koelbli.ch", true }, { "koeldezomerdoor.nl", true }, + { "koelnerkarneval.de", true }, { "koelnmafia.de", true }, { "koelschs.de", true }, { "koenberkhout.nl", true }, + { "koendiender.nl", true }, + { "koenig-pflueger.de", true }, { "koenigsbrunner-tafel.de", true }, { "koenleemans.nl", true }, { "koenrh.com", true }, @@ -69486,14 +79952,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koethen-markt.de", true }, { "koetjesenkanker.nl", true }, { "koez-mangal.ch", true }, - { "kofc7449.org", true }, { "koffie-enzo.com", true }, { "koffiekoeken.tk", true }, + { "koffiekompaan.nl", true }, { "koffiezine.nl", true }, { "kofler.info", true }, { "kogak.ninja", true }, { "kogax.com", false }, { "kogi.fr", true }, + { "kogig.com", true }, { "kogotok.gq", true }, { "kogotok.ml", true }, { "kogro.de", true }, @@ -69501,15 +79968,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kohaku.love", true }, { "kohana.fi", true }, { "kohlchan.net", true }, + { "kohlchan.top", true }, { "kohlpharma.com", true }, - { "kohoutsautomotive.com", true }, { "kohparadise.com", true }, - { "kohsandra.com", false }, { "kohu.nz", true }, { "koi-lexikon.de", true }, { "koidulag.edu.ee", true }, { "koifish.org", true }, - { "koika.ru", true }, { "koing.de", true }, { "koirala.email", true }, { "koiro.fi", true }, @@ -69520,23 +79985,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kojipkgs.fedoraproject.org", true }, { "koka-shop.de", true }, { "kokakiwi.net", true }, - { "kokanbite.com", false }, { "kokankart.com", true }, - { "kokensupport.com", true }, { "koketteriet.se", true }, - { "kokica.si", true }, + { "kokk.loan", true }, { "koko.news", true }, + { "koko5000.com", true }, { "kokoiroworks.com", true }, - { "kokomo.cloud", true }, + { "kokomo.com.au", true }, + { "kokomoislandfiji.com", true }, + { "kokomoprivateisland.com", true }, + { "kokomoresorts.com", true }, { "kokona.ch", true }, + { "kokona.link", true }, { "kokoroheart.cf", true }, - { "kokotaru.com", true }, + { "kokoronomori.jp", true }, { "kokteili.tk", true }, { "koktelparty.tk", true }, { "kokumoto.com", true }, { "kokuryu.ch", true }, { "kokwatersport.nl", true }, { "kokyu-caba.com", true }, + { "kol7sry.news", true }, { "kolabtree.com", true }, { "kolaci.tech", true }, { "kolaczek.cz", true }, @@ -69547,13 +80016,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kolania.net", true }, { "kolaprestaurant.com", false }, { "kolas.in", true }, - { "kolaynota.com", true }, { "kolbeck.tk", true }, { "kolbeinsson.se", true }, { "kolcsey.eu", true }, { "koldanews.com", false }, { "kolfan.tk", true }, { "kolhozik.ml", true }, + { "kolibri.dk", true }, { "kolibrikapp.com", true }, { "kolibrisolutions.nl", true }, { "kolin.org", true }, @@ -69573,6 +80042,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kolmeya.com.br", true }, { "kolodec-pod-kluch.ru", true }, { "kolonie-am-stadtpark.de", true }, + { "kolonie.turystyka.pl", true }, { "kolorado.tk", true }, { "koloradskij-zhuk.tk", true }, { "kolorkids.pt", true }, @@ -69580,29 +80050,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kolotsainaskoto.tk", true }, { "kolpingsfamilie-vechta-maria-frieden.de", true }, { "kolrami.com", true }, + { "kolsandpeers.com", true }, { "koltozzbe.hu", true }, { "kolue.com", true }, { "koluke.co", true }, { "koluke.com", true }, + { "kolukylaselts.ee", true }, { "kolyapetrov.tk", true }, { "kom.pe", true }, - { "komakogemus.ee", true }, { "komalgandhi.tk", true }, { "komall.net", true }, { "komarex.pl", true }, { "komarh.tk", true }, + { "komasan.net", true }, { "komatsuforklift.com", true }, + { "kombikredit.de", true }, { "komehyo.co.jp", true }, { "komelin.com", false }, - { "komenamanda.de", true }, - { "kometaups.ru", true }, { "kometia.com", true }, { "komfort-doma.by", true }, { "komfort.kh.ua", true }, { "komichcapital.com", true }, { "komicloud.com", true }, { "komidoc.com", true }, - { "komiksbaza.pl", true }, { "kominfo.go.id", false }, { "kominki-sauny.pl", true }, { "komintek.ru", true }, @@ -69624,23 +80094,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "komodolabs.com", true }, { "komoju.com", true }, { "komok.co.uk", true }, - { "komon.co.jp", true }, { "komornikmroczek.pl", true }, { "komp-plus.tk", true }, { "komp247.pl", true }, { "kompanen.nl", true }, { "kompaniya-vasya.tk", true }, + { "kompass-bildung.de", true }, { "kompetenzkurs.de", true }, + { "kompiwin.com", true }, { "komplekt.gq", true }, - { "komplektmarket.ru", true }, { "komplet.sk", true }, { "komplexlysimple.com", false }, { "kompliant.nu", true }, - { "komponenty.net", true }, { "kompotik.tk", true }, { "komputer-net.tk", true }, { "komshi.ge", true }, { "komsija.tk", true }, + { "komsomolka.works", true }, { "komun.me", true }, { "kon-sil.de", true }, { "kon.cat", true }, @@ -69649,31 +80119,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "konata.tech", true }, { "konbantsan.com.tr", true }, { "koncertbooking.com", true }, + { "koncertit.com", true }, { "koncertomania.pl", true }, { "kondakov.link", true }, + { "kondakovgorin.us", true }, { "kondakovvg.com", true }, - { "kondi.net", true }, + { "kondi-flex.biz", true }, + { "kondi-flex.de", true }, + { "kondi-flex.net", true }, + { "kondi-flex.org", true }, + { "kondi-save.biz", true }, + { "kondiflex.de", true }, + { "kondiflex.eu", true }, + { "kondisave.biz", true }, { "kondo-kougei.co.jp", true }, - { "kondomshop.org", true }, - { "kondou-butsudan.com", true }, { "konducars.nl", true }, { "konectbus.co.uk", true }, { "konetsu.tk", true }, { "konf.ga", true }, { "konfekcjonowanie.com", true }, { "konfiskator.online", true }, - { "konflikte-als-chance.de", true }, { "konflikthaus.de", true }, { "konfliktklaerer.de", true }, { "konfrontation.tk", true }, { "kong.ink", true }, { "kongar.org", true }, + { "kongjie.cf", true }, + { "kongjie.ml", true }, { "kongress-hostessen.de", true }, { "konicaprinterdriver.com", false }, { "koniecfica.sk", false }, { "konijnen-knaagdieren.tk", true }, { "konijntjes.nl", true }, + { "koningerik.nl", true }, { "konings.it", false }, + { "koningsdag-arnhem.nl", true }, { "koningslust.tk", true }, { "koninkrijk.net", true }, { "konjon.com", true }, @@ -69683,6 +80163,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "konklone.com", true }, { "konkurs.ba", true }, { "konnai.jp", true }, + { "konnex-it.de", true }, { "konnitanaka.com", true }, { "konoex.com", true }, { "konoka.top", true }, @@ -69705,34 +80186,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "konsultaciya-astrologa.gq", true }, { "konsultaciya-astrologa.ml", true }, { "konsultaciya-astrologa.tk", true }, + { "konsultacje-elektryczne.pl", true }, { "konsultation.nu", true }, { "konsultermedipv6.se", true }, { "kontabilitet.tk", true }, { "kontaxis.org", true }, { "kontenido.net", true }, - { "kontikifinance.com", true }, + { "kontent.ai", true }, + { "kontikifinance.com", false }, { "kontikiindustries.tk", true }, { "kontist.com", true }, - { "kontorhaus-schlachte.de", true }, { "kontorhaus-stralsund.de", true }, - { "kontracovid.ph", true }, { "kontracrew.tk", true }, + { "kontramarka.ua", true }, { "kontrapolis.info", true }, { "kontrastonline.tk", true }, { "kontrolapovinnosti.cz", true }, + { "kontur-buh.ru", true }, { "kontur-extern.ru", false }, { "kontur.tk", true }, - { "konuhaber.com", false }, + { "konturalco.ru", true }, { "konus.tk", true }, { "konventa.net", true }, + { "konwerter-online.pl", true }, + { "konyadireksiyonservisi.com", true }, + { "konyadireksiyontamiri.com", true }, { "konyahaber.tk", true }, { "konyalian.com", true }, + { "konyhaelektronika.hu", true }, { "konzaross.tk", true }, { "konzepttreu.de", true }, { "konzertheld.de", true }, - { "koobin.cat", true }, - { "koobin.com", true }, - { "koobin.es", true }, { "kood13.com", true }, { "koodaklife.com", true }, { "koodimasin.ee", true }, @@ -69741,30 +80225,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koof.win", true }, { "kooibeds.com", false }, { "kooky.org", true }, - { "koolauwomenshealthcare.com", true }, { "kooli.ee", true }, { "koolikatsed.ee", true }, { "koolisw.tk", true }, { "koolitee.ee", true }, { "kooliveeb.ee", true }, { "koolkool.tk", true }, - { "koomaldreaming.com.au", true }, + { "koomaldreaming.com.au", false }, + { "kooner.io", true }, { "koood13.com", true }, + { "koopdomeinnaam.nl", true }, { "kooplokaal.gent", true }, { "koopmansamenwerking.nl", true }, { "koopraoulu.ddns.net", true }, + { "koora-lives.tv", true }, { "kooranaps.wa.edu.au", true }, { "kooratalk.ga", true }, - { "koosaline.ch", true }, { "koot.nl", true }, + { "koowde.nl", true }, { "kooxdiving.com", true }, { "koozal.de", true }, - { "kop-papierrestauratie.nl", true }, { "kopany.tk", true }, { "kopatych.tk", true }, - { "kopb.tk", true }, { "kopeechka.ml", true }, - { "kopenenvergelijken.nl", true }, + { "kopenenvergelijken.nl", false }, { "koperek.pl", false }, { "kopeyka.cf", true }, { "kopfgeld.tk", true }, @@ -69772,37 +80256,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kopfsalat.eu", false }, { "kopfschaschlik.de", true }, { "kopieid.be", true }, + { "kopijosari.com", true }, { "kopipasta.cf", true }, { "kopisee.tk", true }, + { "kopitekno.com", true }, { "kopjethee.nl", false }, - { "kopker.hu", true }, { "koplancpa.com", true }, { "koplax-online.com", true }, + { "koppbilling.com", true }, + { "koppelvlak.net", true }, { "kopretka.cz", true }, + { "kopsinc.com", true }, { "koptev.ru", true }, { "kopteva.ru", true }, { "kopular.com", true }, { "kopyandsonslandscaping.com", true }, { "kopykatz.org", false }, { "kor.ovh", true }, + { "kor1xbet.com", true }, { "kora-go.tk", true }, - { "kora-pluss.com", false }, { "korabi.tk", true }, { "korablino.tk", true }, { "korancode.tk", true }, { "koranseruya.com", true }, + { "korayspor.com", true }, { "korbel-loziska.cz", true }, { "korben.info", true }, { "kordamed.ee", true }, { "kordamentha.com", true }, + { "kordamentha.com.au", true }, { "kordut.tk", true }, + { "korea-1xbet.com", true }, { "korea-dpr.org", true }, - { "korea.dating", true }, + { "korea-onlinecasino.com", true }, + { "korea1x-bet.com", true }, { "koreabestood.ga", true }, { "koreaboo.com", true }, { "koreanfashion.tk", true }, { "koreanhouse.tk", true }, - { "koreaninhd.com", true }, { "koreankiosk.ru", true }, { "koreanland.ml", true }, { "koreanpearls.tk", true }, @@ -69810,42 +80301,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koreanrandom.ru", true }, { "koreantextil.com.br", true }, { "koreanure.tk", true }, + { "koreashop24.com", true }, { "koredia.com", true }, - { "koreisai.tech", true }, + { "korehomeinspections.com", true }, { "koresageart.com", true }, { "korespondent.tk", true }, { "koretech.nl", true }, + { "korfbal.nl", true }, { "korfbalinformatie.nl", true }, + { "korfballeague.nl", true }, { "korhonen.cc", true }, + { "korikart.com", true }, + { "korikart.net", true }, + { "korixa.com", true }, { "korkortet.tk", true }, { "korkortonline.se", true }, { "kormmi.ru", true }, { "korn-klan.tk", true }, - { "kornmesser-goldankauf.at", true }, + { "korobi.io", true }, { "korofilms.com", true }, { "koroleva.ml", true }, { "korolevstvo-movie.ml", true }, { "koroli.tk", true }, + { "korona-m.bg", true }, + { "korona-serial.net", true }, { "koroshkabir.tk", true }, - { "korr.com", true }, { "korrelzout.nl", true }, + { "korsordsvar.com", true }, { "korst.tk", true }, { "korstanjebouw.nl", true }, { "korstanjetimmerwerken.nl", true }, { "kortarsmagyarfesto.tk", true }, { "kortgebyr.dk", true }, { "korund.tk", true }, - { "korusautos.com", true }, - { "koryfi.com", true }, { "kos4all.com", true }, { "kos9078.com", true }, { "kosaki.moe", true }, + { "kosara.bg", true }, { "kosato.co.jp", true }, { "koscielniak-nieruchomosci.pl", true }, { "kose.edu.ee", true }, { "koseven.ga", true }, - { "kosgebkredisi.com", true }, { "koshakovo.ga", true }, + { "koshaq.net", true }, { "koshechka.tk", true }, { "koshercutleryers.ga", true }, { "koshercutleryest.ga", true }, @@ -69856,12 +80354,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kosherlunchers.ga", true }, { "kosherlunchest.ga", true }, { "koshkonongwi.gov", true }, + { "koshturada.by", true }, { "kosinc.org", true }, { "kosmetykifm.pl", true }, { "kosmonavt.tk", true }, { "kosmopoisk-orel.tk", true }, { "kosmoprolet.tk", true }, { "kosmosfestival.tk", true }, + { "kosmosjournal.org", true }, + { "kosmosol.it", true }, { "kosmosradio.tk", true }, { "koso.me", true }, { "kosovitolinks.tk", true }, @@ -69869,10 +80370,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kost-magazin.de", true }, { "kostarikanamiru.cz", true }, { "kostavro.eu", true }, + { "kostecka.org", true }, { "kostecki.com", true }, { "kostecki.org", true }, { "kostecki.tel", true }, - { "kostenlosepornos.online", true }, { "kostenloses-forum.tk", true }, { "kosterenpartners.com", true }, { "kostroma-city.tk", true }, @@ -69884,23 +80385,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kosturk.ru", true }, { "kostya.ws", true }, { "kostyumi.tk", true }, + { "kosupayoi.com", true }, { "kosuzu.moe", true }, - { "kot.gay", true }, + { "koszmetics.com", true }, { "kotaartsklan.com", true }, - { "kotabogor.org", true }, { "kotaev.tk", true }, { "kotajakarta.info", true }, { "kotak.us", true }, + { "kotakanimeid.com", true }, { "kotakoo.id", true }, { "kotaku.com", true }, + { "kotaraanglican.org.au", true }, { "kotatgent.be", true }, { "kother.org", true }, - { "kotidevidevta.org", true }, { "kotilinkki.fi", true }, + { "kotisivukone.fi", true }, { "kotka.ml", true }, { "kotly-marten.com.ua", true }, { "kotmale.com", true }, { "kotobox.net", true }, + { "kotobuki-healing.com", true }, { "kotoishihear.tk", true }, { "kotok.tk", true }, { "kotomei.moe", true }, @@ -69908,24 +80412,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kotonozaka.xyz", true }, { "kotoopros.tk", true }, { "kotori.love", true }, + { "kotori.style", true }, { "kotorimusic.ga", true }, { "kottbulle.net", true }, { "kotthaus-bs.de", true }, { "kottur.is", true }, { "kotuwa.tk", true }, - { "kotzepipes.com", true }, + { "kotydomowe.com", true }, { "kouberacing.com.br", true }, { "koubova.net", true }, { "kougeihin.jp", true }, + { "koujiao.ml", true }, { "koujiao.net", true }, { "koujo-soukohonpo.com", true }, { "koumakan.cc", true }, { "kourin.cf", true }, { "koushinjo.org", true }, + { "koushoku.org", true }, { "kouwenhoven.xyz", true }, { "kov.space", true }, { "kovachica.tk", true }, { "kovacia.com", true }, + { "koval.io", true }, { "kovaldo.ru", true }, { "kovered.net", true }, { "kovnsk.net", true }, @@ -69945,23 +80453,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "koyou-nara.com", true }, { "kozackibazar.pl", true }, { "kozak.cloud", true }, + { "kozamac.com", true }, { "kozansa.net", true }, { "kozarac.tk", true }, + { "kozbox.com", true }, { "kozentic.com", true }, { "kozgi.com", true }, { "kozhzamenitely.tk", true }, { "kozitsyn.name", true }, { "kozlekedes.info", true }, { "kozlov.cf", true }, + { "kozmetikatrend.hu", true }, { "kozmetikus.tk", true }, { "kozuch.biz", true }, + { "kozuna.it", true }, { "kozune.com", true }, + { "kp-opt.ru", true }, { "kp-walsh.com", true }, { "kp0808.cc", true }, { "kp0809.com", true }, + { "kp45.ru", true }, { "kpfanworld.com", true }, + { "kpinterface.com", true }, { "kpinvest.eu", true }, - { "kpk.edu.ee", true }, + { "kpizlog.rs", true }, { "kplastics.in", true }, { "kplasticsurgery.com", true }, { "kplnet.net", true }, @@ -69969,15 +80484,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kpmgclientcollab.co.nz", false }, { "kpntdolive.nl", true }, { "kpnthings.com", true }, - { "kpop.events", true }, + { "kpo.fi", true }, { "kpop.re", true }, - { "kpopfanshop.com", false }, { "kpopsource.com", true }, { "kppnmataram.com", true }, { "kprem.com", true }, { "kprf-school74.tk", true }, { "kpumuk.info", true }, - { "kpvpn.com", true }, { "kpx1.de", true }, { "kqh.me", true }, { "kr-beratungscoach.de", true }, @@ -69990,26 +80503,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kraakgeluiden.tk", true }, { "krabathor.tk", true }, { "krabbelsisters.tk", true }, - { "krabo.nl", true }, + { "krabbit.tw", true }, + { "krachbumm.de", true }, { "krachtinverbinding.nl", true }, - { "kradalby.no", true }, - { "kraeuterland.de", true }, { "krafciarka.pl", true }, { "kraft.blog", true }, { "kraft.im", true }, { "kraft.lol", true }, { "kraftek.cf", true }, + { "kraftfahrtversicherungen24.de", true }, + { "kraftway.ru", true }, { "kraftzeiten.de", true }, { "krag.be", true }, { "kraga.sk", true }, - { "kraiwan.com", true }, - { "kraiwon.com", true }, - { "krajowyfunduszgwarancyjny.pl", true }, { "krakato.tk", true }, { "kraken-ttt.com", true }, + { "kraken.com", true }, { "kraken.io", false }, - { "kraken.site", true }, + { "krakenfutures.com", true }, { "krakenrobotik.de", true }, + { "krakenventures.com", true }, { "krakozyabra.ga", true }, { "krakozyabra.gq", true }, { "krakozyabra.tk", true }, @@ -70020,6 +80533,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kram.tec.br", true }, { "kramer-edelstahl.de", true }, { "kramersworld.tk", true }, + { "kramesondemand.com", true }, { "kramsj.uk", true }, { "kran.ga", true }, { "krang.org.uk", true }, @@ -70028,9 +80542,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krankenpflege.ch", true }, { "kranservice-alzey.tk", true }, { "krapiva.tk", true }, + { "krasa.at", true }, + { "krasa.au", true }, + { "krasa.com.au", true }, { "krasa.tk", true }, { "krasavchik.by", true }, - { "krasivye-foto.ru", true }, { "kraski.tk", true }, { "krasnaya-nit.ga", true }, { "krasnodar-pravoved.ru", true }, @@ -70042,7 +80558,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krasotkafirm.tk", true }, { "krasotki.ml", true }, { "kratochvilovi.net", true }, - { "krattk.de", true }, { "krauseent.com", false }, { "krauskopf-it.de", true }, { "krautomat.com", true }, @@ -70057,8 +80572,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krd93.ru", true }, { "kreanoid-clientportal-aus-dev.azurewebsites.net", true }, { "kreanoredact-portal-aus-dev.azurewebsites.net", true }, - { "kreasiwarna.com", true }, - { "kreationnext.com", false }, + { "kreasim32.co.id", true }, + { "kreatio.com", true }, + { "kreationnext.com", true }, { "kreativbande.com", true }, { "kreativelabs.ch", false }, { "kreativenerds.com.ng", true }, @@ -70068,7 +80584,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kreatura.tk", true }, { "kreatywni.co", true }, { "kredi-hesaplama.com", true }, - { "kredi365.net", true }, + { "kredibanka.net", true }, { "kredigram.com", true }, { "kredit-abzocke.com", true }, { "kredit-galerie.de", true }, @@ -70083,7 +80599,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kreditkarta.ml", true }, { "kreditkarten-forum.de", true }, { "kreditkoll.nu", true }, - { "kreditmegasolusi.com", true }, { "kredito.pt", true }, { "kreditonline.ml", true }, { "kreditor.gq", true }, @@ -70092,7 +80607,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kreditvergleich.org", true }, { "kreditzirkus.de", true }, { "krednal.ru", true }, - { "kredobank.com.ua", false }, + { "kredobank.com.ua", true }, { "kredytzen.pl", false }, { "kreen.org", true }, { "krefindo.de", true }, @@ -70100,15 +80615,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kreftprzewieda.pl", true }, { "krehak.com", true }, { "kreideseetaucher.de", true }, + { "kreidl.org", false }, { "kreidlernet.tk", true }, + { "kreiglaw.com", true }, + { "kreisau.com", true }, { "kremalicious.com", true }, { "kremer-sonnenschutzsysteme.de", true }, + { "kremi.org", false }, { "kreno.tech", true }, { "krenstetter.at", true }, { "kreolis.net", true }, + { "krepmarket.ru", true }, { "kresimir-blazevic.tk", true }, { "kretaforum.dk", true }, { "kretschmann.consulting", true }, + { "kretschmann.it", true }, { "kreuzbergflieger.de", true }, { "kreuzpfadfinder.de", true }, { "kreuzwortraetsellosungen.com", true }, @@ -70120,24 +80641,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kriechel.de", true }, { "kriegserinnerungen.tk", true }, { "kriegskindernothilfe.de", true }, - { "kriegstopp.jetzt", true }, { "kriener.photography", true }, + { "kriis.ee", false }, + { "krik.rs", true }, { "krillz.se", true }, { "krilotek.com", true }, { "krilov.tk", true }, { "krimikiosk.de", true }, + { "krimisound.com", true }, + { "krimisound.it", true }, { "krimzeta.com", true }, { "krinetzki.de", false }, { "kringla.xyz", true }, { "kringloopwinkels.tk", true }, - { "krings.nl", true }, { "krinnovations.ie", true }, { "kripa.tk", true }, { "kriptodede.com", true }, + { "kriptokereso.com", false }, + { "kriptokoin.com", true }, { "kriptomat.io", true }, + { "kriptopod.com", true }, { "kriptopodgon.tk", true }, { "kriptosec.com", true }, - { "kriptoworld.hu", true }, { "krisboeckmans.tk", true }, { "krise-chance.ch", true }, { "krisenintervention-deutschland.de", true }, @@ -70156,6 +80681,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krispeinture.be", true }, { "krispymods.com", true }, { "krisstarkey.co.uk", true }, + { "krissylynnpornstar.com", true }, { "krist.club", true }, { "kristall-energie.at", false }, { "kristall.tk", true }, @@ -70169,47 +80695,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kristofdv.be", false }, { "kristoffer.is", true }, { "kriston.tk", true }, + { "kristv.com", true }, { "kristymiley.com", true }, { "kristyvonkashyyyk.net", true }, { "kriswauters.tk", true }, { "kritik.com.br", true }, - { "kritikawebu.cz", true }, { "kriyayoga.fr", true }, { "kriyayoga.mx", true }, { "krizevci.info", true }, { "krizialim.tk", true }, + { "krk-gaming.de", false }, { "krmela.com", true }, { "krmeni.cz", false }, + { "kroati.de", true }, { "kroczynski.net", true }, { "kroell.net", true }, + { "kroenland.at", true }, + { "kroenland.com", true }, + { "kroenland.design", true }, + { "kroglice.si", true }, { "krok.gq", true }, { "krokedil.se", true }, + { "kroldata.com", true }, { "kroliczki.tk", true }, { "kroll.tk", true }, { "kromamoveis.com.br", true }, + { "kromati.co", true }, { "kromberg.tk", true }, { "kromciri.gq", true }, + { "krome.sg", true }, { "kromonos.net", true }, { "kromozottrud.hu", true }, + { "kroms.org", true }, { "krona.ddns.net", true }, { "kronanshopping.se", true }, { "kroneaustralia.com.au", true }, { "kronopolo.com", true }, - { "kronos-crm.com", true }, { "kronos-web.com", true }, { "kronosproject.tk", true }, { "kronospsi.es", true }, { "krony.de", true }, { "kronych.cz", true }, + { "kroo.com", true }, { "kroon.email", true }, + { "kroonika.ee", true }, { "kropkait.pl", true }, { "krosovki-nike.tk", true }, { "krossakorven.tk", true }, + { "krossvordy.com", true }, { "krouzkyliduska.cz", false }, + { "krovat.ru", true }, { "krovatka.tk", true }, { "krovlya911.ru", true }, - { "kroy.io", true }, - { "kroyou.com", false }, { "krozilla.tk", true }, { "krpaforum.org", true }, { "krsaustralia.com.au", true }, @@ -70218,25 +80755,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krtl.eu.org", true }, { "krtl.top", true }, { "krubik.tk", true }, + { "kruchefssensors.azurewebsites.net", true }, + { "kruchheartbeatdev.azurewebsites.net", true }, + { "kruchsensorsdev.azurewebsites.net", true }, { "krudel.tk", true }, + { "kruemelundkruemel.de", true }, { "krug-munroe.wedding", true }, { "krugerengelbrecht.co.za", true }, { "krugermillions.org", true }, { "krugernationalpark.org.za", true }, { "krugersdorpplumber24-7.co.za", true }, { "krugoval.hr", true }, + { "krugson.net", true }, { "kruidenboeket.be", true }, { "kruin.net", true }, + { "kruindy.com", true }, { "kruis.tk", true }, { "kruisselbrink.com", true }, { "kruk.co", true }, { "krukaze.tk", true }, { "krumovgrad.eu", true }, - { "krumpf.de", true }, + { "krumpf.de", false }, { "kruno.ooo", true }, { "krup.com.ua", true }, { "krupa.net.pl", false }, - { "kruselegal.com.au", false }, { "krusesec.com", true }, { "krusic22.com", true }, { "krustyland.net", true }, @@ -70244,26 +80786,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "krutka.cz", true }, { "kruu.de", true }, { "kruvesh.tk", true }, + { "krx1bet.com", true }, { "kry.no", true }, { "kry.se", true }, + { "krymp.no", true }, + { "kryolansaudi.com", true }, { "krypmonet.com", true }, { "krypsys.com", true }, { "krypt.com", true }, { "kryptera.se", true }, { "kryptix.eu", true }, { "kryptix.net", true }, - { "krypto-geld.eu", true }, + { "krypto-webdesign.de", true }, { "kryptoforce.com", true }, { "kryptologie.tk", true }, { "kryptomech.com", true }, { "kryptomodkingz.com", true }, { "kryptonowosci.pl", true }, { "kryptorebels.com", true }, + { "kryptosekken.no", true }, { "kryptux.xyz", true }, { "kryshodel.ml", true }, { "krystal-framework.ml", true }, + { "krystalrsimpson.com", true }, { "krytykawszystkiego.com", true }, { "krytykawszystkiego.pl", true }, + { "kryx.de", true }, { "krzeslaonline.pl", true }, { "ks-19.com", true }, { "ks-39.com", true }, @@ -70273,17 +80821,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks-niceman.tk", true }, { "ks-watch.de", true }, { "ks.kr.ua", true }, - { "ks009.com", true }, { "ks0098.com", true }, { "ks015.com", true }, - { "ks016.com", false }, { "ks017.com", true }, { "ks0318.com", true }, { "ks038.com", true }, { "ks0550.com", true }, { "ks058.com", true }, - { "ks0588.com", false }, - { "ks0599.com", false }, { "ks0618.com", true }, { "ks0660.com", true }, { "ks068.com", false }, @@ -70296,23 +80840,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks168158.net", true }, { "ks17.net", true }, { "ks18.cc", true }, - { "ks181.com", true }, { "ks182.com", true }, - { "ks19.net", true }, - { "ks191.com", true }, + { "ks191.com", false }, { "ks1athome.co.uk", true }, { "ks202.com", true }, { "ks2020.vip", true }, { "ks206.com", true }, { "ks208.com", true }, { "ks2235.com", true }, - { "ks2251.com", true }, - { "ks2375.com", true }, - { "ks288.net", true }, { "ks2888.com", true }, { "ks298.com", true }, { "ks299.com", true }, - { "ks299.net", true }, + { "ks299.net", false }, { "ks330.com", true }, { "ks335.com", true }, { "ks337.com", true }, @@ -70325,7 +80864,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks3737.com", true }, { "ks380.com", true }, { "ks381.com", true }, - { "ks382.com", true }, { "ks386.com", true }, { "ks3888.com", true }, { "ks5000.com", true }, @@ -70337,15 +80875,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks5529.com", true }, { "ks5531.com", true }, { "ks5532.com", true }, - { "ks56.cc", true }, - { "ks571.com", true }, { "ks5822.com", true }, { "ks5888.com", true }, { "ks5888.net", true }, { "ks597.com", true }, { "ks6225.com", true }, - { "ks626.com", true }, - { "ks628.com", true }, { "ks637.com", true }, { "ks6522.com", true }, { "ks6535.com", true }, @@ -70356,11 +80890,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks680.com", true }, { "ks6887.com", true }, { "ks79.app", true }, - { "ks8.com", true }, { "ks8.net", true }, { "ks8112.com", true }, { "ks8113.com", true }, - { "ks8115.com", true }, + { "ks8115.com", false }, { "ks8128.com", true }, { "ks8129.com", true }, { "ks8135.com", true }, @@ -70375,26 +80908,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ks8278.com", true }, { "ks8802.com", true }, { "ks8805.com", true }, - { "ks883.com", true }, { "ks8831.com", true }, { "ks8836.com", true }, { "ks8862.com", true }, - { "ks8883.com", true }, + { "ks8883.com", false }, { "ks8886.com", true }, { "ks8915.com", true }, { "ks9.app", true }, { "ks9122.com", true }, - { "ks920.com", true }, + { "ks920.com", false }, { "ks960.com", true }, { "ks9696.com", true }, - { "ks9888.com", true }, + { "ks9888.com", false }, { "ks99.app", true }, + { "ksa-lawfirm.com", true }, { "ksa.mx", true }, + { "ksa511.com", true }, { "ksabconline.gov", true }, + { "ksamaps.com", true }, { "ksar.tk", true }, + { "ksato.fr", false }, { "ksauhs-med.com", true }, + { "ksbkrasnodar.ru", true }, { "kscarlett.com", true }, { "kscds.gov", true }, + { "kschool.co.in", true }, { "ksdot.gov", true }, { "kselenia.ee", true }, { "kselien.gov", true }, @@ -70402,33 +80940,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kseniya.tk", true }, { "kseniyakoroleva.tk", true }, { "ksenomorf.tk", true }, - { "ksero.center", false }, + { "ksero.info", true }, { "ksero.wroclaw.pl", false }, { "kserownia.eu", true }, { "ksg.edu.ee", true }, { "ksgamerz.ga", true }, + { "kshb.com", true }, { "kshlm.in", true }, { "kshop.gr", true }, { "kshpage.in", true }, { "ksiegarniabk.pl", true }, + { "ksiegowosc.pro", true }, { "ksk-raduga.tk", true }, { "ksm-soccer.de", true }, { "ksm.co.in", true }, { "ksnl.net", true }, - { "ksoc.com", true }, + { "ksoc.com", false }, { "ksoftware.tk", true }, { "ksopp.si", true }, - { "ksp-spb.com", true }, + { "ksp-spb.com", false }, { "kspndanautoba.id", true }, - { "ksradio.it", true }, - { "ksrenovation.com", false }, { "ksrevenue.gov", true }, + { "ksrv.jp", true }, + { "ksst.by", true }, + { "ksstille.de", true }, { "kst-dlvr.tk", true }, { "kst-service.tk", true }, + { "kstdlvr.by", true }, { "kstitleers.ga", true }, { "kstitleest.ga", true }, + { "kstr.us", true }, + { "kstservice.by", true }, { "ksu.kz", true }, { "ksukelife.com", true }, + { "ksuu.loan", true }, { "ksv-friesland.nl", true }, { "ksvehicles.gov", true }, { "ksvip02.com", true }, @@ -70440,16 +80985,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kt-events.de", true }, { "kt-motors.com", true }, { "kt-studio.com.ua", false }, + { "kt.tc", true }, { "kt3i.com", true }, - { "ktbnetbank.com", true }, - { "ktd-design.com", true }, + { "ktateeb.com", true }, + { "ktbuniversity.com", true }, { "kteatras.tk", true }, + { "ktgy.com", true }, { "kthnxbai.xyz", true }, - { "ktinta.es", true }, { "ktk-pc.de", true }, { "ktm-troxler.de", true }, - { "ktmclubitalia.it", true }, - { "kts-thueringen.de", true }, + { "ktnv.com", true }, { "ktsofas.gr", true }, { "ktty.net", true }, { "ktube.yt", true }, @@ -70457,6 +81002,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ktupad.web.id", true }, { "ktw.lv", false }, { "ku-7.club", true }, + { "ku-niederwinkling.de", true }, { "ku.ag", true }, { "kua.com", true }, { "kuaforumden.com", true }, @@ -70465,43 +81011,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kuaitiyu.org", true }, { "kuaiyaojing.com", true }, { "kuaiyun.com", true }, - { "kualiti.net", true }, { "kualo.co.uk", true }, { "kualo.com", true }, { "kualo.in", true }, - { "kuaza.com", true }, { "kub.hr", true }, + { "kuba-erlebnisreisen.de", true }, { "kuba-orlik.name", true }, { "kubabrussel.be", true }, - { "kubahgalvalum.com", true }, { "kubalok.de", true }, { "kubanitoscali.com", true }, { "kubeico.com", true }, { "kubeofficebooth.com", true }, + { "kuberkaitseliit.ee", true }, + { "kubern.at", true }, { "kubevocalbooth.com", true }, { "kubica.ch", true }, { "kubierecki.pl", true }, { "kubik-rubik.de", true }, { "kubilaykiraz.com", true }, + { "kubit.ai", true }, + { "kubit.co", true }, + { "kubit.us", true }, { "kubkprf.ru", true }, { "kublis.ch", true }, + { "kubnews.ru", true }, { "kubopro.com", true }, { "kubopro.cyou", true }, { "kubota.co.nz", true }, { "kubota.com.au", true }, { "kubotapower.com.au", true }, { "kubotek3d.com", true }, - { "kuboweb.it", true }, { "kubrakov.ml", true }, { "kubrick.tk", true }, { "kubusadvocaten.nl", true }, { "kuchen-am-stiel.de", true }, + { "kuchugury.ru", true }, { "kucnibudzet.com", true }, { "kucukayvaz.com", false }, { "kucukcekmececilingir.gen.tr", true }, { "kucukkaymakli.tk", true }, - { "kuda-poexatj.ru", true }, { "kudelskisecurity.com", true }, + { "kudetours.co.za", true }, { "kudinilam.tk", true }, { "kuditel.net", true }, { "kudofoto.com", true }, @@ -70510,10 +81060,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kuechler.info", true }, { "kuehndel.org", true }, { "kuehnel-online.eu", true }, - { "kuemmerlin.eu", true }, { "kuemmling.eu", true }, - { "kuepper.nrw", true }, + { "kuenstler-website.de", true }, { "kuepper.tk", true }, + { "kueri.tech", true }, { "kuestensiegel.de", true }, { "kugelblitz.co", true }, { "kuhakukawa.ml", true }, @@ -70528,45 +81078,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kukeri-karlovo.tk", true }, { "kuketz-blog.de", true }, { "kuketz-security.de", true }, - { "kukiulpindo.com", true }, + { "kukla.club", true }, + { "kukla.io", true }, { "kuko-crews.org", true }, { "kukuku.fun", true }, { "kukuma.tk", true }, { "kukutza.tk", true }, + { "kul.ee", false }, { "kulakov.cf", true }, { "kulakov.tk", true }, { "kulde.net", true }, { "kuldeepg.tk", true }, { "kuliahbahasainggris.com", true }, { "kuliahpendidikan.com", true }, + { "kuliahwisatahati.com", true }, { "kulikov.tk", true }, { "kulinarika.net", true }, { "kulinaristi.fi", true }, { "kulinariya.tk", true }, { "kulivps.com", true }, + { "kulshe.com", true }, + { "kultamuseo.net", true }, { "kultham.ml", true }, { "kulthist.tk", true }, + { "kultmobil.se", true }, { "kultur-werkstatt-wulfen.tk", true }, { "kultur1.se", true }, + { "kulturbanause.de", true }, { "kulturbiljetter.se", true }, { "kulturistika.tk", true }, { "kulturmel.ch", true }, + { "kultus-mv.de", true }, { "kuma-it.de", true }, - { "kumachan.biz", true }, + { "kumacdn.club", true }, { "kumalog.com", true }, { "kumanovo.tk", true }, { "kumaraguruparan.tk", true }, - { "kumasanda.jp", true }, { "kumi.website", true }, { "kumilasvegas.com", true }, - { "kumlucatup.com", true }, + { "kumina.nl", true }, + { "kumiskiri.com", true }, { "kumo.tk", true }, + { "kumpali.com", true }, { "kumpula.tk", true }, - { "kumpulannamabayi.com", true }, + { "kumu.live", true }, { "kumuwiki.de", true }, { "kunadomowa.pl", true }, + { "kunaki.com", true }, { "kunalchakate.tk", true }, { "kunaldesai.blog", true }, + { "kunanji.com", true }, { "kunashir.tk", true }, { "kuncrypto.com", true }, { "kunda.ovh", true }, @@ -70576,18 +81137,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kundesjekk.no", true }, { "kundo.se", true }, { "kungsangen.com", true }, + { "kungsangsgymnasiet.se", true }, + { "kunitomo.jp", true }, { "kunnen.tech", true }, - { "kunra.de", true }, { "kunri.tk", true }, { "kunsanfss.com", true }, { "kunst-im-kokon.de", true }, { "kunst-na-arbeid.tk", true }, { "kunstcentraal.nl", false }, { "kunstdrucke-textildruck.de", true }, + { "kunsten.be", true }, { "kunstenkracht1919.tk", true }, { "kunsthandel-augustus-rex.de", true }, + { "kunstmuseum-moritzburg.de", true }, { "kunstundkulturradioschoepfwerk.tk", true }, { "kunstundunrat.de", true }, + { "kunugi-inc.com", true }, { "kunvarji.com", true }, { "kunze-medien.de", false }, { "kuon.me", true }, @@ -70599,6 +81164,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kupferstichshop.com", true }, { "kupi-ceresit.ru", true }, { "kupibilet.ru", true }, + { "kupid.com", true }, + { "kupidon-rt.ru", true }, { "kupil.ru", true }, { "kupinska.pl", true }, { "kupipled.cf", true }, @@ -70611,14 +81178,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kupkabn.de", true }, { "kupleno.com", true }, { "kuplukover.by", true }, + { "kupoholik.rs", true }, + { "kupon-proxy6.ru", true }, { "kuponmail.tk", true }, { "kuponydoher.cz", true }, + { "kuppingercole.com", true }, { "kupriy-coach.ru", true }, { "kupschke.net", true }, { "kupsluzbu.cz", true }, { "kupu.maori.nz", true }, + { "kupujemprodajem.com", true }, { "kura.gg", true }, { "kurafuto.homeip.net", true }, + { "kuralink.se", true }, + { "kuralreklam.com", true }, { "kurani.tk", true }, { "kuraraynoritake.eu", true }, { "kurashino-mall.com", true }, @@ -70629,6 +81202,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kurdishphotography.tk", true }, { "kurdjokes.tk", true }, { "kurenivka.tk", true }, + { "kurer-sreda.ru", true }, + { "kuretru.com", true }, { "kurgan-city.tk", true }, { "kurgan.cf", true }, { "kurgancity.cf", true }, @@ -70643,6 +81218,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kuroisalva.xyz", false }, { "kuroit.com", true }, { "kurona.ga", true }, + { "kuronarupolyphenol.jp", true }, { "kuronekogaro.com", true }, { "kuropatina.tk", true }, { "kurosawa-yakkyoku.com", true }, @@ -70650,12 +81226,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kurs-dron.pl", true }, { "kurs-elektryka.pl", true }, { "kurs-fotowoltaika.pl", true }, - { "kurs-wordpress.pl", true }, { "kurschies.de", true }, { "kurserne.dk", true }, { "kursk-otoplenie.ru", true }, { "kursk.cf", true }, - { "kurspmr.ru", false }, { "kurssertifikasi.com", true }, { "kurswahl-online.de", true }, { "kursy-sep.com.pl", true }, @@ -70667,12 +81241,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kurtisfranklin.com", true }, { "kurtki-moda.tk", true }, { "kurtlarvadisi-pusu-1.tk", true }, - { "kurtschlatzer.com", false }, + { "kurtneuweiler.com", true }, + { "kurtosys.com", true }, + { "kurtschlatzer.com", true }, + { "kurtseguros.com", true }, { "kurumsalseo.com.tr", true }, { "kurungkurawal.id", true }, { "kuruppa.xyz", true }, { "kuruwi.net", true }, { "kurz.pw", true }, + { "kurzly.de", true }, { "kurzurlaub.tk", true }, { "kusadasiescmagazin.tk", true }, { "kusadasihaber.ga", true }, @@ -70691,23 +81269,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kustod.io", true }, { "kustom-kitchens.com", true }, { "kustomcorner.com.au", true }, + { "kustomer.com", true }, { "kustosija.tk", true }, { "kustus.com.br", true }, { "kustvissen.tk", true }, + { "kusunokitomori.com", true }, { "kutahyaciniyapitasarim.com.tr", true }, { "kutaisi.it", true }, { "kutalek.cz", true }, + { "kutalin.com", true }, { "kutanam.com", true }, { "kutekeiki.com", true }, + { "kuti.hu", true }, { "kutinsoft.com", true }, - { "kutip.id", false }, + { "kutip.id", true }, + { "kutombawewe.net", true }, { "kutsankaplan.com", true }, + { "kuttler.eu", true }, { "kutvonen.net", true }, { "kutyabarathelyek.hu", true }, + { "kutyamacskashop.hu", true }, { "kuudere.moe", true }, { "kuukkanen.net", true }, { "kuunlamaailm.ee", true }, - { "kuvera.in", true }, { "kuwago.io", true }, { "kuwaitmegadeals.com", true }, { "kuwichitagastro.com", true }, @@ -70728,12 +81312,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kvadratnimeter.si", true }, { "kvadru.cz", true }, { "kvalhe.im", true }, + { "kvalita-1a.cz", false }, { "kvalitetsaktiepodden.se", true }, { "kvalitetskatalog.tk", true }, { "kvarta.tk", true }, { "kvartira-grad.tk", true }, { "kvartiragrad.tk", true }, { "kvasta.se", true }, + { "kvdb.io", true }, { "kvdekolk.tk", true }, { "kvest-v-moskve.ga", true }, { "kvestiks.ru", true }, @@ -70742,54 +81328,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kvetuvplotu.cz", true }, { "kvhile.com", true }, { "kvhv-brussel.be", true }, - { "kvhv.brussels", true }, { "kvilt.dk", true }, { "kviskoteka.tk", true }, { "kvitlyr.tk", true }, { "kvm.ovh", true }, + { "kvmcloud.net", false }, { "kvn.tf", true }, { "kvnsport.ru", true }, + { "kvs-demo.com", true }, { "kvso.tk", true }, { "kvspannum.tk", true }, + { "kvsplayer.com", true }, { "kvsrot.cz", true }, { "kvt.berlin", false }, { "kw.gt", true }, { "kwadraadtevredenheid.nl", true }, - { "kwakkelglas.nl", true }, + { "kwakkelglas.nl", false }, { "kwalifikacje.gov.pl", true }, - { "kwbresidential.com", true }, + { "kwc.gov", true }, { "kwcolville.com", true }, { "kweb.ml", true }, { "kwedo.com", true }, { "kwench.com", true }, + { "kwi.li", true }, { "kwieben.com", true }, { "kwik.cx", true }, { "kwikmed.eu", false }, { "kwjx2.ga", true }, - { "kwoll.de", true }, + { "kwl.com.au", true }, + { "kwnet.info", true }, { "kwonghei.net", true }, { "kwork-garand.tk", true }, { "kwx.gg", true }, { "kwyxz.org", true }, { "kx197.com", true }, { "kxah35.com", true }, + { "kxbot.ru", true }, + { "kxc.inc", true }, { "kxnrl.com", true }, + { "kxxv.com", true }, { "ky.rs", true }, + { "kyaba-kura.jp", true }, + { "kyahimt.gov", true }, { "kyango.com", true }, { "kyanjames.com", true }, { "kyaru.net", true }, { "kyau.net", true }, { "kyaulabs.com", true }, + { "kybalion.info.pl", true }, { "kyberna.xyz", true }, { "kybi.sk", true }, { "kycisrael.com", true }, { "kydara.com", true }, - { "kydros.net", true }, + { "kyfiat.com", true }, { "kyj22.com", true }, { "kyj250.com", true }, { "kyj322.com", true }, { "kyj33.com", true }, - { "kyj35.com", true }, { "kyj4.com", true }, { "kyj44.com", true }, { "kyj511.com", true }, @@ -70797,7 +81392,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kyj544.com", true }, { "kyj55.com", true }, { "kyj56.com", true }, - { "kyj566.com", true }, { "kyj57.com", true }, { "kyj577.com", true }, { "kyj59.com", true }, @@ -70810,51 +81404,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kyj67.com", true }, { "kyj677.com", true }, { "kyj76.com", true }, + { "kyke.tech", true }, { "kylacoin.eu.org", true }, { "kylby.com", true }, { "kyle-s.com", true }, { "kyle.place", true }, { "kylebaldw.in", false }, + { "kyledgoodwin.com", true }, { "kyledrake.net", true }, { "kyleggiero.me", true }, + { "kylegough.co.uk", true }, { "kylegutschow.com", true }, { "kylehaka.la", true }, { "kylehakala.com", true }, { "kylelaker.com", true }, { "kylelovell.com", true }, { "kylepet.co", true }, - { "kylese.com", true }, { "kylewentworth.com", true }, { "kylianvermeulen.com", false }, { "kylianvermeulen.nl", true }, { "kylie-pomada.tk", true }, { "kylinj.com", false }, { "kylinseating.in", true }, - { "kylttimax.fi", true }, { "kylvaja.fi", true }, { "kymcojp.com", true }, + { "kymta.com", true }, { "kyn.be", true }, { "kynaston.org.uk", true }, { "kynastonwedding.co.uk", true }, { "kyncostyle.com", true }, + { "kynd.com.au", false }, { "kyne.cn", true }, { "kyne.wang", true }, { "kynect.gov", true }, + { "kynjatshai.com", true }, { "kyobostory-events.com", true }, + { "kyobusiness.com", true }, { "kyochon.fr", true }, + { "kyoox.ch", true }, + { "kyoox.io", true }, { "kyorei.or.jp", true }, { "kyosaku.org", true }, - { "kyosyo-jungle.com", true }, { "kyoto-sake.net", true }, + { "kyoto-sowa.co.jp", true }, { "kyoto-tomoshibi.jp", true }, { "kyrabanx.org", true }, { "kyrgizion.tk", true }, { "kyriakidisship.gr", true }, { "kyrjy.com", true }, { "kyrylych.tk", true }, - { "kys.host", true }, + { "kysepticservice.com", true }, { "kysil.org", true }, - { "kysounds.com", true }, + { "kytkintienautomaalaamo.fi", true }, { "kyujin-office.net", true }, { "kyunyuki.com", true }, { "kyusyu.org", true }, @@ -70864,11 +81465,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "kzar.co.uk", true }, { "kzforce.tk", true }, { "kzsdabas.hu", true }, + { "kztv10.com", true }, + { "l-a-b-a.com", true }, { "l-a-b-a.ru", true }, { "l-atelier-c.com", true }, { "l-i-r.tk", true }, + { "l-ink.eu.org", true }, { "l-lab.org", true }, { "l-poya.ch", true }, + { "l.td", true }, + { "l.tt", true }, { "l0re.com", true }, { "l10n.site", true }, { "l17r.eu", true }, @@ -70877,12 +81483,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "l214.com", true }, { "l2dragonland.tk", true }, { "l2guru.ru", true }, + { "l2kl.com", true }, { "l2news.ga", true }, { "l2relax.ml", true }, { "l2support.tk", true }, { "l33roy.com", true }, { "l33te.net", true }, { "l36533.com", true }, + { "l3p3.de", true }, { "l4s.me", true }, { "l51365.com", true }, { "l5197.co", true }, @@ -70891,39 +81499,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "l6957.co", true }, { "l7plumbing.com.au", true }, { "l7world.com", true }, - { "l81365.com", true }, { "l82365.com", true }, { "l8x.tech", true }, + { "l9.fr", true }, { "l9297.co", true }, { "l9297.com", true }, { "l9397.com", true }, { "l9721.com", false }, { "l9728.co", true }, { "la-baldosa.fr", false }, + { "la-bonne-cuisine.fr", true }, { "la-boutique-langlois.fr", true }, - { "la-buns.com", true }, { "la-casa.tk", true }, - { "la-cave-a-nodo.fr", false }, - { "la-clairiere-arlon.be", true }, + { "la-com.org", true }, { "la-compagnie-des-elfes.fr", true }, { "la-fenice-neheim.de", true }, + { "la-france-ressuscitee.fr", true }, { "la-grande-jaugue.fr", true }, { "la-kaz-a-velo.fr", true }, { "la-laitonnerie.com", true }, - { "la-maison.ch", false }, - { "la-manufacture-du-nettoyage.com", true }, + { "la-maison-neuve.com", true }, { "la-paco.tk", true }, { "la-petite-entreprise.com", true }, - { "la-retraite-info.com", false }, + { "la-petite-epicerie.fr", true }, + { "la-ruche.net", true }, { "la-sc.com", true }, { "la-tourmaline.ch", true }, { "la-verite.tk", true }, { "la-ville-aux-dames-auto-ecole.com", true }, { "la-vraie-histoire.fr", true }, + { "laa.gov.ly", true }, { "laab.gv.at", true }, { "laac.io", true }, { "laagenciaespacial.com", true }, { "laakevahinko.fi", true }, + { "laanius.dk", true }, { "laarroceriacolombiana.com", true }, { "laassari.me", false }, { "laatikko.io", true }, @@ -70931,6 +81541,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lab-advancedservicesportal.com", true }, { "lab-oborud.com", true }, { "lab-recherche-environnement.org", true }, + { "lab24.pl", true }, + { "laba.ua", true }, { "labacanisima.tk", true }, { "labadusa.com", true }, { "labambi.pl", true }, @@ -70941,6 +81553,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "labanskoller.se", true }, { "labanskollermark.se", true }, { "labassist.lt", true }, + { "labaugmbh.de", true }, { "labayru.eus", true }, { "labcenter.com", true }, { "labcoat.jp", true }, @@ -70953,16 +81566,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laberkosmos.tk", true }, { "labiblioafronebrulepas.com", false }, { "labin.tk", true }, + { "labina.com.tr", true }, + { "labinator.com", true }, { "labinsights.com", true }, { "labirint.cf", true }, - { "labittar.com.br", true }, + { "lablaser.tk", true }, { "lablic-beta.work", true }, { "lablnet.tk", true }, + { "lablue.ch", true }, + { "lablue.de", true }, { "labmakelaar.com", true }, { "labmakelaar.eu", true }, - { "labmarket-eg.com", false }, + { "labmarket-eg.com", true }, { "labobooks.com", true }, { "labodeguitamigueltorres.cl", true }, + { "labogue.info", true }, { "laboiteanem.fr", true }, { "laboiteare.fr", false }, { "laboiteasous.com", true }, @@ -70978,15 +81596,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laborriquita.tk", true }, { "labortogether.com", true }, { "labostark.fr", true }, - { "labostech.com", true }, { "labottegafinedistillates.it", true }, { "labouncycastlehire.co.uk", true }, + { "labourmarketinsights.gov.au", true }, { "labourreedevergheas.fr", true }, { "laboutiquedejuliette.com", true }, { "laboutiquedeluminia.fr", true }, { "laboutiquemarocaineduconvoyeur.com", true }, { "laboutiquemarocaineduconvoyeur.ma", true }, - { "laboxfaitsoncinema.com", true }, { "labrat.mobi", true }, { "labroma.tk", true }, { "labs-is.com", true }, @@ -70998,11 +81615,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "labtalleraudiovisual.tk", true }, { "labtechsupplyco.com", true }, { "labussola.site", true }, + { "labworking.lt", true }, { "labworks.org", true }, { "laby.link", true }, { "laby.me", true }, - { "laby.one", false }, - { "labyrinth-technologies.com", true }, + { "labyrinthinetool.de", true }, { "labyrinthus.tk", true }, { "lacaey.se", true }, { "lacalderera.tk", true }, @@ -71010,11 +81627,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lacantine.xyz", true }, { "lacapsule.org", true }, { "lacarniceria.tk", true }, + { "lacarretica.cr", true }, { "lacasadelmaniqui.net", true }, { "lacasadelours.fr", true }, { "lacaserita.org", true }, { "lacasseroy.com", true }, - { "lacatta.es", true }, { "lacavedesergio.fr", true }, { "lacaveducinquantenaire.com", true }, { "lacaverna.net", true }, @@ -71022,10 +81639,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lacebeauty.it", true }, { "laceleste.it", true }, { "lacentral.com", false }, + { "lacera.gov", true }, { "lacetsroses.ch", true }, { "laceysfarm.ie", true }, { "lacfm.cf", true }, + { "lachain.io", true }, { "lachainedesentrepreneurs.fr", true }, + { "lachaussettedebrasparts.fr", false }, + { "lachaussettedelocquirec.fr", false }, { "lachlan-harris.com", true }, { "lachlan.com", true }, { "lachlanallison.com", false }, @@ -71040,19 +81661,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lackfer.tk", true }, { "lackierereischmitt.de", true }, { "laclaque.ch", false }, - { "laclecmoi.com", true }, { "lacledelareussite.com", false }, { "lacledeslan.com", true }, { "lacledeslan.org", true }, { "lacledor.ch", false }, - { "laclefdor.ch", false }, { "lacnesidlo.sk", true }, { "lacoast.gov", true }, - { "lacoccinelle.net", true }, { "lacochinacounselor.com", true }, - { "lacochonne.com", true }, { "laconcepcion.tk", true }, + { "laconiapdnh.gov", true }, + { "lacontrevoie.fr", true }, { "lacoquette.gr", true }, + { "lacorteimoveis.com.br", true }, { "lacoste.net", true }, { "lacragamerpanel.ml", true }, { "lacrimosa.tk", true }, @@ -71060,6 +81680,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lacrosselocatorest.ga", true }, { "lacrossemortgageers.ga", true }, { "lacrossemortgageest.ga", true }, + { "lacrossetribune.com", true }, { "lacrossewi.gov", true }, { "lacroy.com.br", true }, { "lactatiekundigemanouk.nl", true }, @@ -71068,6 +81689,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lacuisine.tk", true }, { "lacuna-vermoegen.de", true }, { "lacyc3.eu", true }, + { "lacylennonpornstar.com", true }, { "lacylynn.net", true }, { "lad-china.com", false }, { "lada-granta.tk", true }, @@ -71077,20 +81699,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ladanivabelgium.tk", true }, { "ladanmokhtari.tk", true }, { "ladbroke.net", true }, + { "ladder.sport", true }, + { "ladderfinance.com.au", false }, { "ladeboks.dk", true }, { "ladedu.com", true }, { "ladelicateparenthese.com", true }, { "ladenzeile.at", true }, { "ladenzeile.de", true }, + { "ladepeche.fr", true }, { "ladies-shoes.tk", true }, { "ladiescode.tk", true }, - { "ladiesofvietnam.net", true }, { "ladiesrapide.tk", true }, { "ladinvestment.ml", true }, { "ladisko.tk", true }, - { "ladislavbrezovnik.com", true }, + { "ladislav-antos.cz", true }, + { "ladislavbrezovnik.com", false }, { "lado.ltd", true }, { "lado.site", true }, + { "ladobe.com.mx", true }, { "ladocdn.com", true }, { "ladocs.tk", true }, { "ladocu.cf", true }, @@ -71110,17 +81736,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ladybirdeducation.co.uk", true }, { "ladyblack.tk", true }, { "ladyblackdiamoond.com", true }, - { "ladyboss.com", true }, + { "ladyboy.tv", true }, + { "ladyboyfiles.com", true }, + { "ladyboyreports.com", true }, + { "ladyboytube.tv", true }, { "ladybugjam.com", true }, + { "ladybugjunction.com", true }, { "ladyestelle.org", true }, { "ladyisabell666.com", true }, - { "ladyjanitor.com", true }, { "ladykarame.org", true }, - { "ladyklub.ru", true }, { "ladylatoria.net", true }, { "ladylikeit.com", true }, + { "ladylucks.co.uk", true }, + { "ladymadd.fr", true }, { "ladymakeup.com.ua", true }, - { "ladymakeup.eu", true }, + { "ladymart.ng", true }, { "ladymayonline.tk", true }, { "ladymeli.org", true }, { "ladyofhopeparish.org", true }, @@ -71136,24 +81766,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laecosmetic.com", true }, { "laecosmetics.es", true }, { "laedia.com", true }, + { "laegemiddelstyrelsen.dk", true }, { "laembajadamexico.com", true }, - { "laemen.com", false }, - { "laemen.nl", false }, { "laemiliafutbol.tk", true }, { "laempresa.tk", true }, { "laencina.tk", true }, - { "laermschmiede.de", true }, + { "laer.ai", true }, + { "laerdal.com", true }, { "laerted.ga", true }, { "laeryn.com", false }, { "laesisvefurinn.is", true }, + { "laetitia-hypnocoach.fr", true }, + { "laettnercamps.com", true }, + { "laetusinpraesens.org", true }, { "laeva.edu.ee", true }, { "laextra.mx", true }, - { "lafamiliallc.com", true }, { "lafansite.tk", true }, { "lafantasticatravel.com", true }, + { "lafattoriabiologica.com", true }, { "lafattoriadiclotilde.it", true }, { "lafayette-rushford.com", true }, + { "lafayettechippewawi.gov", true }, { "lafayetteco.gov", true }, + { "lafayettecountymo.gov", true }, { "lafayettemalleg.com", true }, { "lafayettewcwi.gov", true }, { "lafeemam.fr", true }, @@ -71170,15 +81805,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lafleur-salon.tk", true }, { "laforgia.xyz", true }, { "lafr4nc3.xyz", true }, + { "lafraia.com", true }, + { "lafraia.com.br", true }, { "lafsc.co.uk", true }, { "lafuriadelguardiancelta.tk", true }, { "lag-fan.tk", true }, { "lag-gbr.gq", true }, { "lagaleria-ag.com", true }, + { "lagalerieduchanvre.fr", true }, { "lagavach.com", true }, - { "lagazzettadigitale.it", true }, + { "lagencerie.fr", true }, { "lagendijk.org", true }, { "lagerauftrag.info", true }, + { "laget.se", true }, + { "laghiinitalia.com", true }, { "lagier.xyz", true }, { "lagin.cz", true }, { "laginghanda.gov.ph", true }, @@ -71187,12 +81827,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lagloriadehuampani.com", true }, { "lagodny.eu", true }, { "lagoonrealty.com", true }, + { "lagos-car-hire.com", true }, { "lagoscooperativecollege.com", true }, { "lagotto.tk", true }, { "lagout.org", true }, { "lagovistatexas.gov", true }, { "lagracia.com.br", true }, - { "lagrange.cloud", true }, { "lagrangiandesign.com", true }, { "lagriffeduservice.fr", true }, { "lagriot.com", true }, @@ -71200,8 +81840,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lagrotta.pizza", true }, { "lagrottabergenopzoom.nl", true }, { "lagroza.tk", true }, + { "lagsoftware.com", false }, { "laguiadeliman.com.ar", true }, { "laguiadelpapa.com", true }, + { "laguiainmobiliaria.com.co", true }, { "laguinguette.fr", false }, { "lagunadiosdalmatians.tk", true }, { "lagunakitchenandbath.com", true }, @@ -71210,55 +81852,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laguterbaru.gq", true }, { "lahabra.gov", true }, { "lahacker.net", true }, + { "lahaine.org", true }, + { "lahalte-buvette.fr", true }, { "laharilais.fr", true }, { "lahermandad.tk", true }, - { "lahipotesisgaia.com", true }, { "lahirusblog.tk", true }, { "lahmer.ma", true }, { "lahoguera.tk", true }, { "lahoratunante.tk", true }, { "lai.is", true }, - { "lai.zone", true }, { "lailabanx.org", true }, { "lailai.link", true }, - { "lain-wired.net", true }, { "lain.at", true }, + { "lain.la", true }, { "lain.wiki", true }, { "laindonleisure.co.uk", true }, { "lainoa.eus", true }, { "laipert.com", true }, { "lairdutemps-bbe.fr", true }, + { "laisk.ru", true }, { "laity.gq", true }, { "laiweiyi.com", true }, - { "laizhongliuxue.com", true }, { "lajarana.tk", true }, { "lajauria.tk", true }, + { "lajessaofrancisco.com.br", true }, { "lajetlingerie.nl", true }, + { "laji.fi", true }, { "lajijonencadebarbera.com", true }, { "lajme-shqip.gq", true }, + { "lajmepopullore.com", true }, { "lajornadafilipina.com", true }, { "lajusta.tk", true }, { "lak-berlin.de", false }, + { "lak.li", true }, { "lakabina.tk", true }, - { "lakashirdetes.com", false }, - { "lakashirdetesek.com", false }, { "lakatos.tk", true }, { "lakatrop.com", true }, { "lake-baikal.ml", true }, { "lakeandriverrestoration.com", true }, { "lakearthurnm.gov", true }, + { "lakecity-obgyn.com", true }, { "lakeclerkfl.gov", true }, { "lakecountyclerkfl.gov", true }, + { "lakecountytn.gov", true }, + { "lakedeltonwi.gov", true }, { "lakeee.com", true }, - { "lakehavasucitynews.com", true }, + { "lakegenevanews.net", true }, { "lakehavasuhouserentals.com", true }, + { "lakeheadfreight.biz", true }, { "lakelafayettemo.gov", true }, { "lakelandbank.com", true }, - { "lakelandmom.com", true }, + { "lakemary-doctor.com", true }, { "lakemillsiowa.gov", true }, { "lakenheathfss.com", true }, { "lakenheathfss.marketing", true }, { "lakenheathfss.support", true }, + { "lakepoint.gov", true }, + { "lakerfreight.ca", true }, + { "lakerfreight.com", true }, { "lakersview.com", true }, { "lakesaintlouismo.gov", true }, { "lakesherwoodelectric.com", true }, @@ -71270,53 +81921,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lakesherwoodoutdoorlighting.com", true }, { "lakeshiremo.gov", true }, { "lakeshowlife.com", true }, + { "lakesideweb.design", true }, { "lakestreetministorage.com", true }, + { "lakesviewrobina.com.au", true }, { "laketanglewoodtx.gov", true }, { "lakeview.photography", true }, { "lakevotes.gov", true }, { "lakewaccamawnc.gov", true }, { "lakewinnipegdatastream.ca", true }, - { "lakewoodcityglass.com", true }, { "lakewoodcomputerservices.com", true }, { "lakewoodoh.gov", true }, { "lakewylietax.com", true }, { "lakichat.fi", true }, - { "lakiernictwo.auto.pl", true }, { "lakkt.de", true }, { "lakle.com", true }, { "lakonia.com.br", true }, { "lakorona.tk", true }, - { "lakspuiterijmosman.nl", true }, { "lakupaavi.tk", true }, { "lalagunachalate.tk", true }, { "lalaloe.be", true }, + { "lalaog.com", true }, { "lalarosas.com", true }, { "lalaserniagara.ca", true }, + { "lalatina.com", true }, { "lalaya.fr", true }, - { "lalazodiac.com", true }, - { "lalcora.es", true }, { "laled.ch", false }, + { "laleggepertutti.it", true }, { "lalegria.tk", true }, { "lalelal.me", true }, { "laleli.biz", true }, + { "lalerou.com", true }, + { "lalettrepatriote.com", true }, { "lalibella.co.uk", true }, + { "lalicence.fr", true }, { "lalokura.tk", true }, { "lalucepulsata.it", true }, { "lalucha.tk", true }, - { "lalucioledigitale.com", false }, + { "lalucioledigitale.com", true }, { "lalunedangkor.com", false }, { "lalyre-corcelles.ch", false }, { "lamafioso.com", true }, { "lamai-crochets.fr", true }, + { "lamaisondufort.fr", true }, { "lamaisonfantastique.fr", true }, { "lamakat.de", true }, { "lamalapalabra.tk", true }, { "lamaletademano.com", true }, - { "lamaletarural.es", true }, { "lamaline.tk", true }, { "lamalleauxsaveurs-aubigny.com", true }, + { "lamanchelibre.fr", true }, + { "lamanzanamordida.net", true }, { "lamarieealhonneur.com", false }, { "lamasacre.tk", true }, + { "lamaskill.com", true }, { "lamaturitadidaniele.ml", true }, { "lambassadors.com", true }, { "lambauer.com", true }, @@ -71327,11 +81984,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lambertz.xyz", true }, { "lamblogs.com", true }, { "lamboo.be", true }, + { "lamborghi.ni", true }, { "lamchannang.com", true }, { "lamclam.site", true }, + { "lamcondaugia-khacdaugia.com", true }, { "lamconnect.com", true }, { "lamdav.com", true }, - { "lamecaniquepourlesfilles.com", true }, { "lameco.com", true }, { "lamed.cz", true }, { "lamedog.tk", true }, @@ -71339,8 +81997,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lamei-group.com", true }, { "lamergameryt.xyz", true }, { "lamet-kher.tk", true }, + { "lameusame.be", true }, { "lamigoshevora.pt", true }, - { "lamikvah.org", true }, { "laminaatdealer.nl", true }, { "laminine.info", true }, { "laminsaho.tk", true }, @@ -71355,38 +82013,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lamorera.tk", true }, { "lamorralla.tk", true }, { "lamp.re", false }, - { "lamp24.se", true }, - { "lampade.it", true }, - { "lampara.es", true }, + { "lampandlight.eu", true }, { "lamparassevilla.com", true }, { "lampbooks.gq", true }, { "lampco.com", true }, + { "lampeetlumiere.fr", true }, { "lampegiganten.dk", true }, - { "lampegiganten.no", true }, { "lampen24.be", true }, { "lampen24.nl", true }, + { "lampenlicht.be", true }, + { "lampenlicht.nl", true }, + { "lampenundleuchten.de", true }, { "lampenwelt.at", true }, { "lampenwelt.ch", true }, { "lampenwelt.de", true }, { "lamper-design.nl", true }, - { "lampl.info", false }, { "lamplightvideo.com", true }, { "lampposthomeschool.com", true }, { "lamppostpublishing.com", true }, { "lampsh.ml", true }, { "lampsi.ru", true }, - { "lampvalley.com", true }, { "lampy.pl", true }, + { "lampyiswiatlo.pl", true }, { "lamsa.tk", true }, { "lamudi.ga", true }, { "lamuixeranga.tk", true }, { "lamujerquesoy.com", false }, - { "lamura-swimwear.com", true }, { "lan-der.de", true }, { "lan-der.net", true }, { "lan-divy.com", true }, { "lan-divy.fr", true }, + { "lan-x.no", true }, { "lan.biz.tr", true }, + { "lan.re", true }, { "lana.swedbank.se", true }, { "lanabello.com.br", true }, { "lanaengel.com", true }, @@ -71397,8 +82056,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lanbroa.eu", true }, { "lancashirebeekeepers.org.uk", true }, { "lancashirecca.org.uk", true }, + { "lancastercountysc.gov", true }, { "lancasterma.gov", true }, { "lancastertableandseating.com", true }, + { "lancastervillageny.gov", true }, + { "lance.com.br", true }, { "lancea.pl", true }, { "lancejames.com", true }, { "lancelafontaine.com", true }, @@ -71406,8 +82068,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lancelucido.tk", true }, { "lancemanion.com", true }, { "lancerm.com", true }, + { "lancertactical.eu", true }, { "lanceyip.com", true }, { "lanchong.tk", true }, + { "lanconstruct.be", true }, { "lancyvbc.ch", false }, { "land.nrw", false }, { "landart.tk", true }, @@ -71419,19 +82083,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "landegge.nl", true }, { "landell.ml", true }, { "landeseiten-optimieren.de", true }, + { "landfinity.com", true }, + { "landflirt.de", true }, { "landforsale.co.il", true }, { "landfrauen-hermetschwil.ch", true }, { "landgoeddorrebeek.be", true }, + { "landgorilla.com", true }, { "landhuisweekend.nl", true }, { "landinfo.no", true }, - { "landing-phillipferreira.herokuapp.com", true }, - { "landingear.com", true }, + { "landingtransport.com", true }, + { "landkind.com", true }, + { "landkreis-augsburg.de", true }, { "landloperfm.tk", true }, { "landlordy.com", true }, + { "landmatrix.org", false }, { "landofelves.net", false }, { "landofmerlin.tk", true }, { "landofoz.dynu.net", true }, - { "landoftherisingson.com", true }, + { "landoftherisingson.com", false }, + { "landoftile.com", true }, { "landolakeswi.gov", true }, { "landoncreekapartments.com", true }, { "landonkhull.ddns.net", true }, @@ -71463,49 +82133,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "landscapingrepairers.ga", true }, { "landsearch.com", true }, { "landsforsale.co.il", true }, + { "landshaftnic.ru", true }, { "landslide.tk", true }, { "landtrack.com.au", true }, + { "landverliebt.de", true }, { "landware.cf", true }, { "landzicht.tk", true }, { "lane.computer", true }, { "lanefinder.com", true }, - { "lanehealth.com", true }, - { "lanekoll.se", true }, + { "lanehealth.com", false }, { "lanetix.com", true }, + { "laneygreypornstar.com", true }, { "lanforalla.se", true }, { "lang-php.com", true }, { "langadeduero.tk", true }, { "langages-programmation.tk", true }, { "langapi.com", true }, { "langatang.com", true }, + { "langauto.hu", true }, { "langbein.org", true }, + { "langcom.org", true }, { "langenberg.tk", true }, { "langenu.tk", true }, + { "langer-bauwerk.de", true }, { "langgasse-baar.ch", true }, - { "langhof-immobilien.de", true }, { "langhun.me", true }, - { "langjp.com", false }, { "langley.tk", true }, + { "langleyok.gov", true }, { "langleyporter.com", true }, { "langlois-chateau.fr", true }, { "langly.fr", true }, { "langotie.com.br", true }, { "langrock.info", false }, + { "langthaler.cc", true }, + { "langtonsant.es", true }, { "languageatplay.de", true }, + { "languagecert.org", true }, { "languagecourse.net", true }, { "languageeducation.ml", true }, { "languageguesser.com", true }, + { "languageio.com", true }, + { "languagekeyboard.net", true }, { "languages.services", true }, - { "languages2learn.com", true }, + { "languagesandnumbers.com", true }, { "languageterminal.com", true }, - { "langworth.com", true }, + { "langworth.com", false }, { "langzijn.nl", true }, { "lanhhuyet510.tk", true }, { "lanispa.com", true }, { "lankana.tk", true }, { "lankarkivet.tk", true }, + { "lankatongtravel.lk", true }, + { "lanlaog.com", true }, { "lanmail.tk", true }, - { "lanmsz.cn", false }, { "lanna.io", true }, { "lannainnovation.com", true }, { "lannamontessori.com", true }, @@ -71516,17 +82196,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lanostrasalute.it", true }, { "lanoticia.com", false }, { "lanourotteguiry.fr", true }, - { "lanovice.com", true }, { "lanparty.si", true }, - { "lanre.org", true }, { "lanroamer.de", true }, - { "lansechensilu.com", true }, + { "lansdell.family", true }, { "lanselot.com", true }, { "lansenou.com", true }, - { "lansewu.com", false }, { "lansilesia.tf", true }, { "lansingvotes.gov", true }, { "lansink.it", true }, + { "lansociety.org", true }, { "lansoft.site", true }, { "lansoftware.eu", true }, { "lantai.com", true }, @@ -71540,25 +82218,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lanyang.tk", true }, { "lanyards.com.au", true }, { "lanyardsfactory.com.au", false }, - { "lanyundev.xyz", true }, + { "lanyundev.com", true }, { "lanzalex.com", true }, { "lanzamientovirtual.es", true }, + { "lanzarote.com", true }, + { "lanzastil.com", true }, { "lao.dog", true }, - { "lao88daili.com", true }, - { "laobai.me", true }, { "laobayy.com", true }, { "laoctavadireccion.tk", true }, { "laodongkynghi.info", true }, { "laohei.org", false }, { "laolaweb.tk", true }, { "laoliang.ml", true }, + { "laonawi.gov", true }, { "laoriginalfm.com", true }, { "laorquestadelamemoria.tk", true }, - { "laos.dating", true }, { "laospage.com", true }, { "laostiaradio.tk", true }, { "laotravoz.tk", true }, - { "laoudit.com", true }, + { "laowang.run", true }, + { "laoying.tv", true }, { "laozhu.me", true }, { "lapageamelkor.org", true }, { "lapaginadejuanjo.tk", true }, @@ -71566,17 +82245,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lapakus.com", true }, { "lapapeleriadelola.com", true }, { "laparcela.tk", true }, + { "lapari.gr", true }, { "laparoscopyhospital.com", true }, { "lapasticcerianaturale.store", true }, { "lapatiala.com", true }, - { "lapatio.dk", true }, { "lapazsheriff.org", true }, { "lapcameradongnai.com", true }, { "lapcamerahochiminh.com", true }, { "lapcoversers.ga", true }, { "lapcoversest.ga", true }, { "lapdance.tk", true }, - { "lapelpinsandcoins.com", false }, + { "lapeercountymi.gov", true }, { "laperfumista.es", true }, { "laperla-chemnitz.de", true }, { "laperladelduero.tk", true }, @@ -71584,21 +82263,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lapesbaldai.lt", true }, { "lapetition.be", true }, { "lapicena.eu", true }, + { "lapierrecabinetry.com", true }, { "lapina.tk", true }, + { "lapinas.com", true }, { "lapinator.net", true }, { "lapinmalin.tk", true }, - { "lapis.moe", true }, { "lapismagico.com", true }, { "lapix.com.co", true }, + { "laplace.chat", true }, + { "laplace.live", false }, + { "laplace.network", true }, { "laplacesicherheit.de", true }, + { "lapland.shop", true }, { "laplasadalsol.tk", true }, { "laplazita.tk", true }, { "lapluma.tk", true }, - { "lapolla.com", true }, { "lapolvora.ga", true }, { "lapoly.ga", true }, { "laponder.online", true }, { "laponders.com", true }, + { "laporantercepat.com", true }, { "laportedufutur.org", true }, { "lapotagere.ch", false }, { "lapparente-aise.ch", false }, @@ -71609,17 +82293,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laprensadelasagradafamilia.org", true }, { "lapseofsanity.net", true }, { "lapshore.com", true }, - { "laptop-sewamurah.com", false }, + { "laptop-sewamurah.com", true }, + { "laptophub.net", true }, { "laptopnaive.com", true }, { "laptopnewbie.eu.org", true }, + { "laptoppowerjackinc.com", true }, { "laptopsperu.com", false }, { "laptopuri.tk", true }, + { "laptopvideo2go.com", true }, { "laptopworld.dk", true }, + { "lapublicpress.org", true }, { "lapulgaflamenco.com", true }, { "laqira.io", true }, - { "laqueuedevache.be", true }, + { "laquestionviterepondue.com", true }, { "lara-eu.org", true }, { "larabergmann.de", true }, + { "larabouillere.fr", true }, { "laracode.eu", true }, { "laracumkitten.org", true }, { "laradiorespuestas.tk", true }, @@ -71630,34 +82319,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laralove.org", true }, { "laramewa.tk", true }, { "laramiecountywy.gov", true }, + { "laramiedental.com", true }, { "laranjada.org", true }, { "larasm.tk", true }, { "laravelcommunity.asia", true }, { "larawoodarts.com", true }, { "larax.tk", true }, { "larbertbaptist.org", true }, + { "larcaenviro.com", true }, { "larch.gq", true }, - { "larch.me", true }, + { "larche.org.pl", true }, + { "larchmontbuzz.com", true }, { "larchmontny.gov", true }, + { "larcs.co.uk", true }, { "lareclame.fr", true }, { "lared-vps.ovh", true }, { "lareduction.be", true }, { "lareduction.ch", true }, { "lareduction.fr", true }, { "lareginetta.com", true }, - { "larenaissance.ro", true }, - { "larenas.com", true }, { "larepublicacultural.es", true }, { "larete.ch", true }, + { "largerpweor.uk", true }, { "largescaleforums.com", true }, { "largest-soldiers.cf", true }, { "largeviewer.com", true }, { "laricameche.com", false }, { "larifari.ch", true }, + { "larigami.de", true }, { "larimarhomes.ca", true }, { "larimer.gov", true }, { "larimercolorado.gq", true }, { "lariscus.eu", true }, + { "lariviereaux7pierres.com", true }, { "larkinkerluke.cf", true }, { "larkleclear.com", true }, { "larmenta.tk", true }, @@ -71667,26 +82361,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "larondenet.tk", true }, { "larondinedisinfestazione.com", true }, { "larosadelosvientos.tk", true }, + { "larotative.info", true }, { "larousse-edu.fr", true }, { "larpkalender.ch", true }, { "larptreff.de", true }, - { "larraz.es", true }, { "larry.buzz", true }, - { "larryklug.com", true }, + { "larryandprisca.it", true }, { "larryli.cn", true }, { "larrysalibra.com", true }, { "lars-kusch.de", true }, { "lars-mense.de", true }, - { "lars-mielke.de", true }, + { "lars-mielke.de", false }, { "lars.cloud", true }, { "lars.moi", true }, { "larsberglund.tk", true }, + { "larsentoubro.com", true }, { "larsentransfer.com", true }, { "larser.tk", true }, { "larseriksson.es", true }, { "larsi.org", true }, { "larsklene.nl", true }, { "larsklint.com", true }, + { "larsm.org", true }, { "larsnittve.tk", true }, { "larsvontrier.tk", true }, { "lartduportrait.fr", true }, @@ -71694,13 +82390,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laruralevolution.gov", true }, { "larver.tk", true }, { "larvps.com", true }, + { "larygraphiste.fr", true }, { "las-chichis.tk", true }, { "las.so", true }, { "las7verticales.tk", true }, { "lasabina.it", true }, - { "lasabubillas.es", true }, + { "lasalle.org.co", true }, { "lasallecountyil.gov", true }, { "lasandwicheriamedellin.com", true }, + { "lasanious.com", true }, { "lasarmas.com", true }, { "lasavonnerieducroisic.fr", true }, { "lascana.co.uk", true }, @@ -71710,6 +82408,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lasdelgadas.tk", true }, { "lasept.com.ua", true }, { "laser-toners.tk", true }, + { "laser-world.eu", true }, { "lasercareestetica.com.br", true }, { "lasercloud.ml", true }, { "laserena.tk", true }, @@ -71720,29 +82419,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laserpunch.tk", true }, { "lasersandbacon.com", true }, { "lasersolutions.tk", true }, - { "lasertalk.org", true }, + { "lasertel.com.pk", true }, { "lasfolladoras.com", true }, { "lasik-safely.com", true }, + { "lasinfusiones.com", true }, { "lasiodora.tk", true }, { "lasittellecosmetiques.com", true }, { "lasix-medication.cf", true }, { "lasix-medication.gq", true }, { "lasix-medication.tk", true }, { "lask.in", true }, - { "laskorealestate.com", true }, { "laslilas.tk", true }, + { "laslo-hauschild.eu", true }, { "lasmallbizonline.gov", true }, { "lasmesas.tk", true }, { "lasmoarquitectos.com", true }, { "lasmorfianapoletana.com", true }, { "lasofertas.tk", true }, + { "lasonindia.com", true }, { "lasourisglobe-trotteuse.tk", true }, { "laspalmerasdelnorte.tk", true }, { "laspeligrosas.tk", true }, { "laspeludas.tk", true }, { "laspequenassemillas.com", true }, { "laspirale.tk", true }, - { "lasranas.es", true }, + { "laspoesias.com", true }, { "lasrecetasdeguada.com", true }, { "lasse-boberg.tk", true }, { "lasse-it.dk", false }, @@ -71753,6 +82454,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lasseleegaard.dk", true }, { "lasseleegaard.net", true }, { "lasseleegaard.org", true }, + { "lassencanyonnursery.com", true }, + { "lassencoe.gov", true }, { "lassesworld.com", true }, { "lassesworld.se", true }, { "lassovideos.com", true }, @@ -71761,13 +82464,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lastallaexotics.com", true }, { "lastbooks.gq", true }, { "lastenrad-gifhorn.de", true }, + { "lasthome.co.uk", true }, { "lastingmarksers.ga", true }, { "lastingmarksest.ga", true }, { "lastingsmiles.org", true }, { "lastkaj14.tk", true }, { "lastlowtest.tk", true }, { "lastmile.ml", true }, + { "lastminutehealthcare.com", true }, { "lastmohicans.tk", true }, + { "lastnighton.com", true }, { "lastorder.icu", true }, { "lastorderguild.tk", true }, { "lastorders.tk", true }, @@ -71776,18 +82482,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lastrada.tk", true }, { "lastrik.ch", true }, { "lastsunset.tk", true }, + { "lasttootinaws.com", true }, { "lasttweetinaws.com", true }, { "lastville.com", true }, - { "lasuzefc.fr", true }, + { "lastwill.ie", true }, { "lasvegascasinonews.com", true }, { "lasvegasdiscountattractions.com", true }, - { "lasvegasgfegirls.com", true }, + { "lasvegasfit.org", true }, + { "lasvegasnevada.gov", true }, { "laszlo.sh", true }, { "laszloinstitute.com", true }, { "laszlotamas.hu", true }, { "lat.sk", true }, { "lata.my", true }, - { "latabaccheria.net", true }, { "latabledebry.be", true }, { "latahcountyid.gov", true }, { "latakuta.com", true }, @@ -71807,6 +82514,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "latefeeking.com", true }, { "latefeeking.net", true }, { "latefeeking.org", true }, + { "latelatetoyshow.ie", true }, { "lateliercantaldeco.fr", true }, { "lateliercreationbougie.fr", true }, { "latemarch.com", true }, @@ -71816,34 +82524,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lateralsecurity.com", true }, { "lateraltrust.com", true }, { "laterremotodealcorcon.tk", true }, - { "latestairfaredeals.com", true }, { "latestbitcoinnews.io", true }, + { "latestbitcoinnews.org", true }, { "latestcoin.tk", true }, { "latestimmigrationnews.today", true }, + { "latestjobhub.in", true }, { "latestmobiles.tk", true }, { "latestnewsonworld.tk", true }, + { "latestnewstelugu.com", true }, + { "latestpornvideos.com", true }, { "latestsonglyrics.ml", true }, { "latetrain.cn", true }, + { "latexmattress.com", true }, + { "latexspuitenspecialist.nl", true }, { "lathamlabs.com", true }, { "lathamlabs.net", true }, { "lathamlabs.org", true }, + { "lathamwatkinsplatform.com", true }, { "latherjacket.com", true }, { "latia.tk", true }, { "latiamona.com", true }, { "latiendawapa.com", true }, { "latifolia.com", true }, + { "latina-girls-brides-women.com", true }, + { "latinacon.com", true }, + { "latinapress.it", true }, { "latinatoday.it", true }, { "latinmusiccollection.tk", true }, - { "latino.dating", true }, - { "latinooutdoors.org", true }, + { "latinoguysporn.com", true }, { "latintoy.com", false }, { "latinwomen.tk", true }, { "latitudesign.com", false }, { "latka.tk", true }, + { "latnetwork.com", true }, + { "latoken.com", true }, { "latos.tk", true }, - { "latouchemusicale.com", true }, { "latour-managedcare.ch", true }, + { "latourist.com", true }, { "latremebunda.com", true }, + { "latrobedirect.com", true }, + { "latrobedirect.net", true }, + { "latrobefinancial.com.au", true }, + { "latrobefinancial.com.cn", true }, { "latrynchera.tk", true }, { "lattyware.co.uk", true }, { "lattyware.com", true }, @@ -71857,21 +82579,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laud.io", true }, { "laudableapps.com", true }, { "laudablesites.com", true }, - { "laudlab.de", true }, { "laudon.nl", true }, { "laudwein.fr", true }, { "laufpix.de", true }, { "lauftreff-himmelgeist.de", false }, + { "laugarvatn.com", true }, { "laughdreamexplore.com", true }, { "laughinggrapepublishing.com", true }, { "laughingloon.com", true }, + { "laughlinfss.com", true }, + { "laughlinfss.marketing", true }, { "laukstein.com", true }, { "laultimaestacion.tk", true }, - { "launcher.games", true }, { "launchfinderers.ga", true }, { "launchfinderest.ga", true }, { "launchgroup.com.au", true }, - { "launchmylifend.com", true }, + { "launchindonesia.com", true }, { "launchpad-app2.com", true }, { "launchpadder2.com", true }, { "laundrylessonsers.ga", true }, @@ -71880,7 +82603,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laura.network", true }, { "lauraandwill.wedding", false }, { "laurable.com", true }, - { "lauracookeconsulting.com", true }, + { "lauradavis.net", true }, { "lauraenvoyage.fr", true }, { "laurahausmann.de", true }, { "laurainnes.tk", true }, @@ -71893,9 +82616,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lauravaindumentaria.com", true }, { "laureadesigns.com", true }, { "laureaty.tk", true }, - { "laurelblack.com", true }, { "laurelcountycorrectionsky.gov", true }, { "laurelcountysheriff.gov", true }, + { "laurelmd.gov", true }, { "lauren.gq", true }, { "laurenball.com", true }, { "laurencball.com", true }, @@ -71904,11 +82627,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laurenell.com", true }, { "laurenleesmith.tk", true }, { "laurenlobue.com", true }, + { "laurenphillipspornstar.com", true }, + { "laurenrosewarne.com", true }, + { "laurenslatest.com", true }, { "laurensvanderblom.nl", true }, { "laurentfinance.com", true }, + { "laurentianlanes.com", true }, + { "laurentskyepornstar.com", true }, { "lauresta.lt", true }, { "lauresta.lv", true }, { "lauretta.io", true }, + { "laurikari.net", true }, { "laurindale.tk", true }, { "laurineprice.com", true }, { "laurinhaepaulo.ga", true }, @@ -71917,7 +82646,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lausannelovers.ch", false }, { "laussat.de", true }, { "laut.digital", true }, - { "lautremode.com", true }, + { "lautremode.com", false }, + { "lauxarchitekten.com", true }, { "lauxincost.cf", true }, { "lauzon-hitter.com", true }, { "lava.moe", true }, @@ -71930,10 +82660,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lavalon.tk", true }, { "lavamine.tk", true }, { "lavamob.com", true }, + { "lavamobiles.com", true }, { "lavanderia.it", true }, { "lavanderia.roma.it", true }, { "lavarex.co.jp", true }, { "lavasing.eu.org", true }, + { "lavavetri.it", true }, { "lavdiazofficial.tk", true }, { "laveg.edu.ee", true }, { "lavenderx.org", true }, @@ -71944,15 +82676,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lavinaec.com", true }, { "lavinya.net", true }, { "laviro.tk", true }, + { "lavish.co.id", true }, { "lavita.de", true }, { "lavitagarden.tk", true }, { "lavka.cf", true }, + { "lavkafreida.ru", true }, { "lavkatsvetov.ru", false }, { "lavki.tk", true }, + { "lavndor.com", true }, { "lavocedelviolino.it", true }, { "lavochka.tk", true }, { "lavoieducoeur.be", true }, { "lavoiepharmd.com", true }, + { "lavoixdelain.fr", true }, { "lavoixdesmigraineux.fr", true }, { "lavolte.net", false }, { "lavoniaga.gov", true }, @@ -71961,10 +82697,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lavozdelamusicachilena.tk", true }, { "lavozderanquil.tk", true }, { "lavril.fr", true }, - { "lavval.com", false }, { "law-ag.com", true }, { "law-colleges.com", true }, - { "law-iku.pro", true }, { "law-moshkovich.co.il", true }, { "law-peters.de", true }, { "law-profile.com", true }, @@ -71972,12 +82706,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "law.co.il", true }, { "law22.com", true }, { "lawabidingcactus.com", true }, + { "lawandtheworkplace.com", true }, { "lawcancer.cf", true }, { "lawcer.com", true }, - { "lawclinic-hsg.ch", true }, + { "lawcover.com.au", true }, { "lawda.ml", true }, + { "lawdepot.ca", true }, { "lawebdeljose.tk", true }, { "lawebnobasta.tk", true }, + { "lawebstar.it", true }, + { "lawenforcementedu.net", true }, + { "lawfirmyashajustice.co.id", true }, + { "lawflaws.com", true }, { "lawguidesingapore.com", true }, { "lawhery.com", true }, { "lawlessenglish.com", true }, @@ -71986,8 +82726,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lawlessrepublic.com", true }, { "lawlessspanish.com", true }, { "lawluxury.com", true }, + { "lawma.one", true }, + { "lawmate.ai", true }, { "lawmint.com", true }, { "lawn-seeds.com", true }, + { "lawnandordercs.com", true }, { "lawnenvyva.com", true }, { "lawnkitsers.ga", true }, { "lawnkitsest.ga", true }, @@ -71996,6 +82739,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lawnsearchers.ga", true }, { "lawnsearchest.ga", true }, { "lawnuk.com", true }, + { "lawpay.com", true }, { "lawportal.com.ua", true }, { "lawrad.com", true }, { "lawrenca.com", true }, @@ -72005,6 +82749,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lawrenceberg.nl", true }, { "lawrenceclarkemd.com", true }, { "lawrencecountyboe-ohio.gov", true }, + { "lawrencecountyky.gov", true }, { "lawrencecountymo911.gov", true }, { "lawrencecountypa.gov", true }, { "lawrencecountysd.gov", true }, @@ -72016,16 +82761,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lawsuit.tk", true }, { "lawsuitconsultanters.ga", true }, { "lawsuitconsultantest.ga", true }, + { "lawtimesnews.com", true }, + { "lawton-is.com", true }, { "lawtreeclub.com", true }, { "lawvize.com", true }, { "lawyer.cf", true }, { "lawyerboksburg.co.za", true }, { "lawyerdigital.co.bw", true }, + { "lawyeredu.org", true }, { "lawyermidrand.co.za", true }, { "lawyerscredentialsers.ga", true }, { "lawyerscredentialsest.ga", true }, { "lawyerscreenerers.ga", true }, { "lawyerscreenerest.ga", true }, + { "lawyerservices.in", true }, { "lawyersofmissouri.com", true }, { "lawzakon.tk", true }, { "lawzana.com", true }, @@ -72034,24 +82783,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "laxxl.com", true }, { "layan-luxurylighting.com", true }, { "layazc.com", true }, + { "laycock.org.uk", true }, + { "layer.it", true }, { "layermesh.net", true }, { "layers.media", true }, { "layflamso.tk", true }, { "laylo.io", true }, { "laymans911.info", true }, - { "layordesign.co.uk", true }, { "layoutsatzunddruck.de", true }, + { "layt.org", true }, { "laythetable.com", true }, + { "layxw.com", true }, { "lazarus.es", true }, { "lazarusalliance.com", true }, + { "lazell.co.uk", true }, { "lazell.de", true }, + { "lazell.uk", true }, { "lazer.cf", true }, { "lazerepilasyonankara.tk", true }, { "lazerinitiative.org", true }, { "lazerus.net", true }, { "lazerus.pw", true }, { "lazibeach.tk", true }, - { "lazisbaiturrahman.org", false }, + { "lazionews24.com", true }, + { "lazisbaiturrahman.org", true }, + { "lazismuprovgorontalo.or.id", false }, { "lazistance.com", true }, { "lazo.futbol", true }, { "lazonacartagena.tk", true }, @@ -72068,7 +82824,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lazyboston.com", true }, { "lazyframe.com", true }, { "lazyhelp.com", true }, + { "lazynap.com", true }, { "lazysoftware.fr", true }, + { "lazytapir.com", true }, { "lazytux.org", true }, { "lazywaves.tk", true }, { "lazzo.ml", true }, @@ -72080,6 +82838,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lba-rpg.tk", true }, { "lbarrios.es", true }, { "lbayer.com", true }, + { "lbbw-markets.de", true }, { "lbc-podcast.tk", true }, { "lbc.gr", true }, { "lbda.net", true }, @@ -72088,15 +82847,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lbi.plus", false }, { "lbihrhelpdesk.com", true }, { "lbing.eu", false }, + { "lbio.nl", true }, { "lbiplus.de", false }, { "lbj.tw", true }, { "lbjlibrary.gov", true }, + { "lbk.vn", true }, { "lbls.me", false }, + { "lbofrance.com", true }, { "lbpc.pro", false }, { "lbrlh.tk", true }, { "lbrli.tk", true }, { "lbrls.tk", true }, { "lbsgroup.co.uk", true }, + { "lbwl.com", true }, { "lc-cs.com", false }, { "lc-promiss.de", true }, { "lc-suites.gr", true }, @@ -72105,25 +82868,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lc10086.com", true }, { "lc18.vip", true }, { "lc1800.com", true }, - { "lc1818.net", true }, { "lc2500.com", true }, - { "lc3708.com", true }, - { "lc3710.com", true }, - { "lc3714.com", true }, - { "lc3715.com", true }, { "lc3720.com", false }, - { "lc3723.com", true }, - { "lc3729.com", true }, - { "lc3731.com", true }, - { "lc3732.com", true }, { "lc3736.com", true }, - { "lc3742.com", true }, { "lc3744.com", true }, { "lc3745.com", true }, { "lc3759.com", true }, - { "lc3760.com", true }, { "lc3763.com", true }, - { "lc3780.com", true }, { "lc50000.com", false }, { "lc5188.net", true }, { "lc530.com", true }, @@ -72165,30 +82916,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lc871.com", false }, { "lc873.com", false }, { "lc875.com", false }, - { "lc876.com", true }, { "lc879.com", false }, { "lc88.fun", true }, { "lc8812.com", true }, { "lc8820.com", false }, - { "lc8838.com", true }, { "lc8839.com", true }, { "lc8841.com", true }, { "lc8866.com", true }, - { "lc8868.net", true }, { "lc8881.com", false }, { "lc8885.com", false }, { "lc8887.com", false }, - { "lc8898.net", false }, { "lc891.com", false }, { "lc892.com", true }, - { "lc893.com", false }, + { "lc893.com", true }, { "lc895.com", true }, { "lc897.com", true }, { "lc8c.com", true }, { "lc8dc28.com", true }, { "lc8guidance.com", true }, { "lc9108.com", true }, - { "lc9158.com", true }, { "lc9256.com", false }, { "lc98.net", true }, { "lc9852.com", true }, @@ -72203,7 +82949,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lca.gov", true }, { "lcacommons.gov", false }, { "lcaonline.tk", true }, - { "lcars-sv.info", true }, { "lccwillcounty.gov", true }, { "lcdf.education", true }, { "lce-events.com", true }, @@ -72211,8 +82956,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lcfwasa.gov", true }, { "lcgaj.com", true }, { "lcht.ch", false }, + { "lchtraf.com", true }, + { "lcistit.ru", true }, { "lclarkpdx.com", true }, - { "lclarkuhl.com", true }, + { "lcr94.org", true }, { "lcrehlingen.de", true }, { "lcrmscp.gov", true }, { "lcs.wiki", true }, @@ -72230,93 +82977,100 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lcy.cat", true }, { "lcy.moe", true }, { "ld-begunjscica.si", true }, - { "ld699.com", false }, { "ldcraft.pw", true }, { "lddr.io", true }, + { "ldemb.com", true }, { "ldesignweb.com", true }, { "ldgardenservices.co.uk", true }, { "ldiesel.ca", true }, { "ldjb.jp", true }, { "ldlcorrentes.com.br", true }, - { "ldlorangecountylocksmith.com", true }, { "ldm2468.com", true }, { "ldtborovina.cz", true }, { "ldts.es", true }, { "ldts.us", true }, + { "ldtv.top", true }, { "ldvsoft.net", false }, { "ldwiki.ml", true }, { "ldx.design", true }, { "le-bar.org", true }, - { "le-cannabis.de", true }, { "le-caprice.co.uk", true }, + { "le-clos-st-loup.fr", true }, { "le-club.co", true }, { "le-controle-parental.fr", true }, { "le-creux-du-van.ch", false }, { "le-drive-de-just-vet.fr", true }, { "le-forum.tk", true }, { "le-fumoir.com", true }, - { "le-h.de", false }, + { "le-h.de", true }, { "le-marais.be", true }, { "le-page.info", false }, { "le-palantir.com", true }, + { "le-parrain-boursorama.fr", true }, + { "le-reso.com", true }, { "le-romien.tk", true }, { "le-stroke-of-genius.com", true }, + { "le-tempo.com", true }, { "le-therapeute.com", true }, { "le-traiteur-parisien.fr", false }, { "le-upfitter.com", true }, - { "le0.me", true }, { "le0n.ddns.net", true }, { "le0yn.ml", true }, { "le130rb.com", true }, { "le133cannes.com", true }, + { "le20dinant.be", true }, { "le42mars.fr", true }, - { "leaboucher.fr", true }, + { "lea.pet", false }, { "lead2022.academy", true }, { "leadbook.ru", true }, { "leadbox.cz", true }, + { "leadcricket.com", true }, { "leadercreative.ga", true }, { "leaderfreight.tk", true }, { "leaderinnetflow.com", true }, { "leaderoftheresistance.com", false }, { "leaderoftheresistance.net", false }, { "leadersaudit.ga", true }, - { "leadership-conference.net", true }, { "leadership-insight.nz", true }, { "leadfrp.com", true }, { "leadgem.co.uk", true }, { "leadgenie.me", true }, - { "leadinforce.com", true }, + { "leadinforce.com", false }, { "leadmusic.nl", true }, + { "leadnxt.co.in", true }, + { "leadnxt.com", true }, { "leadonvale-stemcell.co.uk", true }, { "leadplan.ru", false }, + { "leadplus.com.au", true }, + { "leadplusdev.com.au", true }, { "leadquest.nl", true }, { "leadsformoney.tk", true }, - { "leadsguru.ru", false }, { "leadsonline.com", true }, + { "leadvales.com", true }, + { "leaf-nail.com", true }, + { "leafandanchorco.ca", true }, { "leafandseed.co.uk", true }, { "leafans.tk", false }, + { "leafbodhi.com", true }, { "leafinote.com", true }, { "leafinote.net", true }, { "leafland.co.nz", true }, - { "leafletdistributionmanchester.com", true }, { "leafos.org", true }, { "leaftracker.org", true }, { "leaguecitytexas.gov", true }, - { "leaguecloud.org", true }, { "leak.media", true }, { "leakbrasil.tk", true }, { "leakcontroltherapy.com", true }, { "leakeandersson.com", true }, + { "leakedbabes.tv", true }, { "leakedminecraft.net", true }, { "leakfix.nl", true }, - { "leakforums.net", true }, { "leaknet.tk", true }, { "leales.org", true }, { "lealove.net", true }, { "lealuestern.com", true }, - { "leamsigc.com", false }, { "lean-consulting.cf", true }, - { "leanclub.org", true }, + { "leandoo.com", true }, { "leandre.cn", true }, { "leandrebergeron.com", true }, { "leandri-campana-avocat.fr", true }, @@ -72326,20 +83080,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leanovent.de", true }, { "leanplando.com", true }, { "leanrtech.com", true }, + { "leansixsigmadefinition.com", true }, { "leaodarodesia.com.br", true }, { "leap-it.be", false }, { "leap-mission.com", true }, { "leapandjump.co.uk", true }, { "leapday.us", true }, + { "leaps.org", true }, { "leapworks.io", true }, - { "leapxx.com", true }, { "leapxx.pro", true }, + { "lear.com.br", true }, { "leardev.de", true }, + { "learn-everything.info", true }, + { "learn-freely.com", true }, { "learn-smart.uk", true }, { "learn-this.tk", true }, { "learn2fly.training", true }, { "learnapp.com", true }, { "learnatf.gov", true }, + { "learnattack.de", true }, + { "learncodethehardway.org", true }, { "learncoding.tk", true }, { "learncrypto.live", true }, { "learncrypto.show", true }, @@ -72350,19 +83110,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "learnhowtoplayguitar.tk", true }, { "learning-id.com", true }, { "learningaboutcarinsurance.com", true }, - { "learningbydoing.hr", true }, { "learningis1.st", true }, { "learningladderacademy.net", true }, { "learninglaw.com", true }, { "learningman.top", true }, { "learningsolution.tk", true }, + { "learnjapanesedaily.com", true }, { "learnk12.org", true }, { "learnlux.com", true }, + { "learnosity.com", true }, + { "learnoutlive.com", true }, { "learnpedestal.com", true }, { "learnpianogreece.com", true }, - { "learnpine.com", true }, + { "learnpine.com", false }, { "learnplayground.com", true }, - { "learnpress.pl", true }, + { "learnpythonthehardway.org", true }, + { "learnsafe.com", true }, { "learnspace.co.za", true }, { "learntamil.tk", true }, { "learnthetruth.tk", true }, @@ -72371,20 +83134,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "learntosurfcaparica.com", true }, { "learntosurflisbon.com", true }, { "learntotradethemarket.com", true }, - { "learntradingforexnow.com", true }, { "learntube.cz", false }, { "learnupon.com", true }, { "learnwelsh.cymru", true }, + { "learnwithcorne.com", true }, { "learso.com.ua", true }, { "leasecar.uk", true }, { "leaseit24.com", true }, + { "leaselink.pl", true }, { "leasenow.tk", true }, { "leaseourthings.com", true }, { "leaseplanbank.de", true }, { "leaseplanbank.nl", true }, + { "leasing.my", true }, + { "leasing.sos.pl", true }, { "leasit.de", true }, { "leastsignificantbit.de", true }, - { "leatam.fr", true }, { "leather-underwear.tk", true }, { "leatherfur.tk", true }, { "leatherfurnitureexpo.com", true }, @@ -72393,19 +83158,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leathersofacleaning.co.uk", true }, { "leatherstreet.tk", true }, { "leatherwill.com.ua", true }, - { "leatherwood.nl", true }, + { "leauda.fr", true }, { "leavealink.tk", true }, { "leavenworthcounty.gov", true }, { "leavesdencyclehub.org.uk", true }, { "leaving.africa", true }, { "lebal.se", true }, - { "lebanesearmy.gov.lb", true }, + { "lebanesearmy.gov.lb", false }, { "lebaneseastronomygroup.tk", true }, { "lebanoncountypa.gov", true }, { "lebanondodgewi.gov", true }, { "lebanonoregon.gov", true }, { "lebarbatruc.com", true }, - { "lebarmy.gov.lb", true }, + { "lebarmy.gov.lb", false }, { "lebeachvillage.com", true }, { "lebedovskiy.tk", true }, { "leben-pflegen.ch", true }, @@ -72413,24 +83178,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lebenpflegen-march.ch", true }, { "lebenpflegen.ch", true }, { "lebens-fluss.at", true }, + { "lebenshilfe-hannover.de", true }, { "lebensinselparaguay.tk", true }, - { "lebensraum-fitness-toenisvorst.de", true }, + { "lebensmittelwarnung.de", true }, { "lebesis.tk", true }, { "lebihan.pl", true }, - { "leblanc.io", true }, + { "lebkuchen-schmidt.com", true }, + { "leblanc.io", false }, { "leblancq.ca", true }, + { "leblob.fr", true }, { "lebourgeo.is", true }, { "lebozec.org", true }, { "lebureau.tk", true }, + { "lebuys.ca", true }, { "lebv.org", true }, - { "lecafedugeek.fr", true }, { "lecandide.info", true }, { "lecannabis.at", true }, - { "lecannabis.ch", true }, - { "lecannabis.com", true }, - { "lecannabis.de", true }, - { "lecannabis.ru", true }, - { "lecannabis.us", true }, { "lecannabiste.com", true }, { "lecannabiste.fr", true }, { "lecannabiste.it", true }, @@ -72448,29 +83211,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lecheng3.com", true }, { "lecheng5288.com", true }, { "lecheng7.com", true }, - { "lecheng8.net", true }, { "lecheng88.com", true }, { "lecheng88.net", false }, { "lecheng888.com", true }, { "lecheng98.com", true }, { "lechenietravami.cf", true }, - { "lechiennoir.net", true }, + { "lechim-prosto.ru", true }, { "lechite.ga", true }, { "lechocolatier.com", true }, { "lechompenchaine.fr", true }, - { "lechuanginu.ru", true }, - { "lechuck.tk", true }, + { "lechoppe-parisienne.com", true }, + { "lechrismaran.com", true }, { "lecken.tk", true }, { "leclaire.com.br", true }, { "lecoinchocolat.com", true }, { "leconnecteur-biarritz.fr", true }, { "lecoquelicot.info", true }, + { "lecourriercauchois.fr", true }, + { "lecrayondemarz.com", true }, { "lecreative.tk", true }, - { "lectricecorrectrice.com", true }, + { "lecteurs.com", true }, + { "lectormanga.top", true }, { "lecturaweb.tk", true }, { "lecul.site", true }, - { "led-jihlava.cz", true }, { "led-sk.ru", true }, + { "led.my.id", true }, { "led.xyz", false }, { "ledburyvets.co.uk", true }, { "leddeluxe.ml", true }, @@ -72480,7 +83245,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ledeguisement.com", true }, { "ledensite.com", true }, { "lederjackekaufen.tk", true }, - { "ledgy.com", true }, + { "ledgerscope.net", false }, { "ledigajobb.se", true }, { "ledlampor365.se", true }, { "ledlight.com", true }, @@ -72491,12 +83256,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leducq.eu", true }, { "leducq.name", true }, { "leduquwiki.cf", true }, + { "ledvalgustid.ee", true }, { "ledwit.ru", true }, + { "lee.in", true }, + { "lee.net", true }, { "leeaaronsrealestate.com", true }, - { "leeapk.com", true }, { "leebiblestudycenter.co.uk", true }, { "leebiblestudycenter.com", true }, - { "leebiblestudycentre.co.uk", true }, { "leebiblestudycentre.com", true }, { "leebiblestudycentre.net", true }, { "leebiblestudycentre.org", true }, @@ -72506,26 +83272,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leech.tk", true }, { "leeclemens.net", false }, { "leecountyfl.gov", true }, + { "leecountyil.gov", true }, + { "leecountync.gov", true }, + { "leedsmoneyman.com", true }, + { "leee.eu.org", true }, { "leefbaargijzegem.be", true }, - { "leefbaarkrimpen.nl", true }, + { "leefbaarkrimpen.nl", false }, { "leefgratis.tk", true }, { "leefindlow.com", true }, { "leefjongeren.nl", true }, + { "leefl.gov", true }, + { "leekimball.com", true }, { "leekspin.ml", true }, { "leekspin.tk", true }, { "leelanautownshipmi.gov", true }, { "leelaylay.com", true }, { "leelou.wedding", true }, - { "leemahoney.ie", true }, { "leeman.nl", true }, - { "leemankuiper.nl", true }, { "leen.io", false }, + { "leena.ai", true }, { "leenaluhtanen.net", true }, { "leendebroekertfonds.nl", true }, - { "leepakjsc.com", true }, { "leere.me", true }, { "leerkotte.eu", true }, { "leerliga.de", true }, + { "leerob.io", true }, { "leertipp.de", true }, { "leeryan.tk", true }, { "leesilvey.com", false }, @@ -72533,7 +83304,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leetbunny.tk", true }, { "leetcode.com", true }, { "leetcode.net", true }, - { "leetgamers.asia", true }, { "leetizia.net", true }, { "leetsaber.com", true }, { "leetsuliangkkproduction.tk", true }, @@ -72545,29 +83315,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lefebvristes.com", true }, { "lefebvristes.fr", true }, { "lefevre-ec.fr", true }, + { "lefichier.net", true }, { "lefilradio.fr", true }, { "leflibustier.ru", true }, + { "leflorecountyok.gov", true }, { "leflox.cf", true }, { "lefonddeloeil.com", false }, { "lefreka.fr", true }, - { "lefroyee.com", true }, { "left-baggage.co.uk", true }, + { "left.it", true }, { "leftbrainsolutions.com.au", true }, - { "leftclick.be", true }, { "leftclick.cloud", true }, - { "leftclick.es", true }, - { "leftclick.eu", true }, - { "leftclick.fr", true }, - { "leftclick.nl", true }, + { "lefthandwater.gov", true }, + { "leftronic.com", true }, { "lefucine.com", true }, { "lega-dental.com", true }, { "legacktem.com", true }, { "legacy.bank", true }, + { "legacyfarmstx.com", true }, { "legacygame.ga", true }, { "legacygame.gq", true }, { "legacyofkain.tk", true }, { "legacysoft.ml", true }, - { "legacyumc.com", true }, { "legacyumc.org", true }, { "legadental.com", true }, { "legadosindumentaria.com.ar", true }, @@ -72580,6 +83349,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legalatlanta.com", true }, { "legalatlantic.ga", true }, { "legalband.club", true }, + { "legalbeagles.info", true }, { "legalbeast.ga", true }, { "legalbetcanada.com", true }, { "legalcalculator.ga", true }, @@ -72589,6 +83359,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legalclearance.ga", true }, { "legalco.tk", true }, { "legalcollector.ga", true }, + { "legalconnect.com", true }, { "legalconstruct.ga", true }, { "legalcorporation.ga", true }, { "legalcrunch.ga", true }, @@ -72613,10 +83384,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legalhotrod.ga", true }, { "legalhusky.ga", true }, { "legalintergrity.ga", true }, + { "legalis.pl", true }, { "legalisierung.tk", true }, + { "legalit.es", true }, { "legaliz.ml", true }, { "legalizeit.tk", true }, { "legaljewel.ga", true }, + { "legaljobs.io", true }, { "legaljoker.ga", true }, { "legalloco.ga", true }, { "legallowprice.ga", true }, @@ -72646,14 +83420,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legalsample.ga", true }, { "legalsearch.nl", true }, { "legalservicespanel.gov.au", true }, - { "legalsoftware.net", true }, { "legalsoldier.ga", true }, { "legalsouthbeach.ga", true }, { "legalsrit.tk", true }, - { "legalsteroid.co", true }, { "legalsustain.ga", true }, { "legalthunder.ga", true }, - { "legaltile.com", false }, + { "legaltile.com", true }, { "legaltings.com", true }, { "legaltip.eu", true }, { "legaltity.com", true }, @@ -72662,13 +83434,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legalverde.ga", true }, { "legalwaterfront.ga", true }, { "legalyankee.ga", true }, + { "legamedamore.net", true }, { "legato.marketing", true }, { "legatofmrc.fr", true }, + { "legatrace.com", true }, { "legba.in", true }, { "legeaz.net", true }, { "legen.sk", true }, { "legend-of-pirates.tk", true }, - { "legendary-royale.net", true }, { "legendblogers.ga", true }, { "legendblogest.ga", true }, { "legendesdechine.ch", false }, @@ -72676,28 +83449,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legendofkrystal.com", true }, { "legendofmi.com", true }, { "legends-game.ru", false }, + { "legendscasino.com", true }, { "legendtourism.com", true }, { "legendwiki.com", true }, { "legentic.com", true }, { "leger-voertuigen.tk", true }, + { "legginsypolskie.pl", true }, { "leggyeggy.ga", true }, { "legible.es", true }, { "legilimens.de", true }, { "legiofte.com", true }, { "legioiedifrancy.com", true }, { "legion.ge", true }, - { "legion.hosting", true }, { "legionisci.com", true }, { "legioniv.org", true }, - { "legionminecraft.com", true }, { "legions.tk", true }, { "legionwood.tk", true }, { "legiscontabilidade.com.br", true }, + { "legislationupdateservice.co.uk", true }, { "legit.nz", true }, { "legitcorp.com", true }, { "legitedelaguiole.com", true }, { "legitedeprecy.com", true }, - { "legjobblogo.hu", true }, { "legkie-recepty.tk", true }, { "legko-pohudet.cf", true }, { "legko-pohudet.ml", true }, @@ -72713,24 +83486,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "legrand-ia.gov", true }, { "legrandvtc.fr", true }, { "legro.tk", true }, + { "legrub.net", true }, + { "legtech.lu", true }, { "legterm.cz", true }, + { "leguano-barfusspark.eu", true }, { "legyenkianegykereked.hu", true }, + { "lehifibernetwork.gov", true }, { "lehighcountypa.gov", true }, { "lehighvalleypeds.com", true }, + { "lehmanns.de", true }, { "lehmitz-weinstuben.de", true }, + { "lehnc.ddns.net", true }, { "lehnen.xyz", true }, { "lehokolo.eu", true }, + { "lehollandaisvolant.net", true }, { "lehrgang-zum-brandschutzhelfer.de", true }, { "lehti-tarjous.net", true }, + { "lehu.in", true }, { "lehvyn.org", false }, { "leia.cc", true }, { "leibniz-gymnasium-altdorf.de", true }, { "leibniz-trifft.de", true }, { "leibniztrifft.de", true }, + { "leicabiosystems.com", true }, { "leicester.bike", true }, { "leicesterastronomicalsociety.co.uk", true }, { "leicestervt.gov", true }, - { "leidegoncalves.com", false }, + { "leidegoncalves.com", true }, { "leideninternationalreview.com", true }, { "leier.ml", true }, { "leighneithardt.com", true }, @@ -72739,11 +83521,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leilakaleva.fi", true }, { "leilautourdumon.de", true }, { "leilonorte.com", true }, - { "leiloonart.com", true }, { "leiming.co", true }, { "leipzig.photo", true }, { "leipziger-triathlon.de", true }, - { "leiriportti.fi", true }, { "leism.com", true }, { "leism.de", true }, { "leism.eu", true }, @@ -72760,16 +83540,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leisure.tk", true }, { "leisurecooker.co.uk", true }, { "leisurecooker.ie", true }, - { "leivadi.com", true }, + { "leisurevip.com", true }, + { "leit.kr", true }, + { "leitz-cloud.com", true }, { "leiyinan.com", true }, - { "lejade.fr", true }, { "lejardindesmesanges.fr", true }, { "lejlax.com", true }, { "lejournaldublog.com", true }, { "lekarkabajkopisarka.pl", true }, + { "lekarz-wizyty.pl", true }, + { "lekasedgar.com", true }, { "lekitable.fr", true }, { "lekkergoings.nl", true }, - { "lekkerleben.de", true }, { "leko.tk", true }, { "lekota.co.uk", true }, { "leksi.si", true }, @@ -72789,8 +83571,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lelux.fi", true }, { "lelux.net", true }, { "lelux.site", true }, - { "lemagauto.fr", true }, - { "lemans.com.gt", true }, + { "lem0n.eu.org", true }, { "lemarcheelagrandeguerra.it", true }, { "lemarquier.com", true }, { "lemasdupalus.com", true }, @@ -72798,32 +83579,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lemazol.fr", true }, { "lemberg.ml", true }, { "lemco.dk", true }, + { "lemedecin.fr", true }, { "lemediajustice.fr", true }, { "lemediateur-creditagricole-nord-est.com", true }, - { "lemfam.ru", true }, - { "lemgstudio.com", true }, - { "lemilane.it", true }, + { "lemefly.com", true }, + { "lemeridienchambers.com", true }, + { "lemieuxbedard.com", true }, + { "lemieuxproducts.com", true }, { "leminhduong.com", true }, + { "lemitron.fr", true }, { "lemitti.com", true }, { "lemler.family", true }, - { "lemmy.ca", false }, + { "lemmamedia.com", true }, + { "lemmy.cafe", true }, + { "lemmy.name", true }, + { "lemmyfund.org", true }, { "lemni.top", true }, { "lemoine.at", true }, - { "lemon-tree-shop-staging.herokuapp.com", true }, { "lemonadefashion.com", true }, { "lemonardo.ga", true }, - { "lemondrops.xyz", true }, + { "lemoncloud.eu.org", true }, { "lemoniax.com", true }, - { "lemonop.com", true }, { "lemonparty.co", true }, { "lemonpic.ga", true }, { "lemonpool.com.tr", true }, { "lemonrockbiketours.com", true }, { "lemonrotools.com", true }, { "lemonsociety.cf", true }, + { "lemonsoftware.eu.org", true }, { "lemontownshippa.gov", true }, { "lemonwater.tk", true }, - { "lemzarcapital.com", true }, + { "lemr.fr", true }, + { "lemuslimpost.com", true }, + { "lemzarcapital.com", false }, { "lena-klein.de", true }, { "lena-klein.eu", true }, { "lena-nitro.org", true }, @@ -72838,13 +83626,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lencia.ga", true }, { "lenczewski.ddns.net", true }, { "lendahandmissionteams.org", true }, + { "lendera.mx", true }, { "lendingmate.ca", true }, { "lendingpoint.com", true }, + { "lendinvest.com", true }, + { "lendme.com.au", true }, + { "lendme.dk", true }, { "lenemes.tk", true }, { "lenergietoutcompris.fr", true }, - { "lengletremy.fr", true }, { "lengoo.com", true }, - { "lengow.com", true }, { "lengua-alemana.tk", true }, { "lenguajecoloquial.com", true }, { "lenguajecoloquial.es", true }, @@ -72857,7 +83647,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lenii.com", true }, { "lenina72.tk", true }, { "leninalbertop.com.ve", true }, - { "lenirobredo.org", true }, { "lenit.nl", true }, { "lenkeran.tk", true }, { "lenkunz.me", true }, @@ -72872,8 +83661,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lennybruce.tk", true }, { "lennyendewespen.tk", true }, { "lennyobez.be", true }, + { "lennyrodriguez.com", true }, { "lenoblpech.ru", true }, { "lenoirnc.gov", true }, + { "lenord.fr", true }, { "lenorefan.tk", true }, { "lenostech.gr", true }, { "lenou.nl", true }, @@ -72884,53 +83675,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lens.google.com", true }, { "lenseshop.tk", true }, { "lenspirations.com", true }, + { "lenstamiri.com", true }, + { "lenstore.co.uk", true }, { "lensual.space", true }, { "lenta-ru.tk", true }, { "lentanews.ml", true }, + { "lentesbrasil.com", true }, { "lentivo.com", true }, + { "lents.xyz", true }, { "lentusaudio.nl", true }, { "lenuagebauche.org", true }, + { "lenumerozero.info", true }, { "lenyip.com", true }, { "lenyip.works", true }, { "leo-boutique.fr", true }, { "leo-music.tk", true }, { "leo-translate.com.ua", true }, + { "leo.gov", true }, { "leoandpeto.com", true }, { "leob.in", false }, + { "leoburnett.com", true }, { "leochedibracchio.com", true }, { "leocollo.com", true }, { "leodraxler.at", true }, { "leojweda.com", true }, + { "leokoo.com", true }, { "leola.cz", true }, { "leola.sk", true }, + { "leolabs.space", true }, + { "leolawi.gov", true }, { "leomarcou.fr", true }, + { "leomax.ru", true }, { "leominstercu.com", false }, { "leomwilson.com", false }, + { "leon-16255.space", true }, { "leon-tec.co.jp", true }, { "leon-tech.com", true }, { "leon.wtf", true }, { "leonard.io", false }, + { "leonardaccessories.com", true }, { "leonardcamacho.me", true }, - { "leonardcyber.com", true }, + { "leonardcyber.com", false }, { "leonardlorenz.de", true }, { "leonardocontreras.com", true }, { "leonardocremonesi.it", true }, + { "leonardodrs.com", true }, { "leonardofavio.tk", true }, + { "leonardoferrera.com", true }, { "leonardoneiva.com.br", true }, { "leonardostart.tk", true }, { "leonardtheologicalcollege.com", true }, { "leonauto.de", true }, + { "leonbania.com", true }, { "leonbuitendam.nl", true }, { "leoncss.ml", true }, { "leongalin.tk", true }, - { "leongkenghong.com", true }, { "leonhooijer.nl", false }, { "leonidas-dovido.tk", true }, { "leoniepur-porn.com", true }, + { "leonieroessler.com", true }, { "leonklingele.de", true }, { "leonpa.gov", true }, { "leonplast.tk", true }, - { "leontic.es", true }, { "leontiekoetter.de", true }, { "leontworzy.pl", true }, { "leontyev.tk", true }, @@ -72939,7 +83745,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leonvotes.gov", true }, { "leonyork.com", true }, { "leopardstudio.tk", true }, - { "leoservicosetc.com", true }, + { "leoseguin.fr", true }, { "leoservicosetc.com.br", true }, { "leoservicosetc.email", true }, { "leoservicosetc.live", true }, @@ -72955,43 +83761,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lepalierjuridique.com", true }, { "lepallec.tv", true }, { "lepartiecomemoracoes.com.br", true }, + { "lepat.es", true }, { "lepblog.tk", true }, - { "lepenetapeti.com", true }, - { "lepenis.fr", true }, + { "lepenis.fr", false }, { "leper.ga", true }, { "lepetitendroit.fr", true }, { "lepetitkids.com.br", true }, - { "lepetitsavoyardbio.fr", false }, + { "lepetitlievre.re", true }, + { "lepetitsavoyardbio.fr", true }, { "lephilnet.tk", true }, { "lepidum.jp", true }, { "leping.com", true }, { "lepka.tk", true }, { "lepkov.ru", true }, + { "leplus.net", true }, + { "leplus.org", true }, { "leporem.com.br", true }, + { "leportschools.com", true }, { "leppis-it.de", true }, { "lepraconsf.com", true }, { "leprado.com", true }, { "leprekon.tk", true }, + { "lepressoir-info.org", true }, { "leps.fr", true }, { "lepsos.com", false }, + { "leptitbaltar.com", true }, { "leptotrichia.tk", true }, { "lepuyenvelay-tourisme.fr", true }, { "lequerceagriturismo.com", true }, { "lequest.dk", true }, { "lequocthai.com", true }, { "ler3.com", true }, - { "lereporter.ma", false }, + { "lerameau.fr", true }, + { "lerefuge.xyz", true }, { "leretour.ch", false }, { "lerika.tk", true }, + { "lerks.blog", true }, { "lerku.com", true }, { "lerlivros.online", true }, - { "lermer.nl", true }, { "lernenamsee.ch", true }, - { "lernerspersonalinjury.ca", true }, { "lernorteuropa.com", true }, { "lernorteuropa.de", true }, { "lernorteuropa.eu", true }, { "lernpfad.ch", true }, + { "leros.bg", true }, { "leroytwp-calhounmi.gov", true }, { "lertsiritravel.net", true }, { "leruevintage.com", true }, @@ -73002,8 +83815,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "les-inoxydables.com", true }, { "les-pipelettes-de-narbonne.com", true }, { "les-pros-du-drone.com", true }, - { "les-pyrenees.tk", true }, - { "les-rastingles.fr", true }, { "lesa-kiev.biz.ua", true }, { "lesa.biz.ua", true }, { "lesa.boutique", true }, @@ -73011,11 +83822,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lesaffre.es", true }, { "lesalpinistes.com", true }, { "lesamisdelaroumanie.com", true }, + { "lesamoureuxdangelique.ovh", true }, { "lesancheslibres.fr", true }, { "lesargentinas.tk", true }, + { "lesartisanes.fr", true }, { "lesas.tk", true }, - { "lesatelierskosto.com", true }, - { "lesberger.ch", false }, + { "lesbea.com", true }, { "lesbi-porno-video.ru", true }, { "lesbianlovers.tk", true }, { "lesbicas.com.pt", true }, @@ -73024,56 +83836,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lesborgestv.cat", true }, { "lesbrillantsdaristide.com", true }, { "lescarnetsderoutedesophie.com", true }, + { "leschamoisduvercors.fr", true }, { "lescommunes.com", true }, { "lescomptoirsdepierrot.com", true }, { "lesconcours.tk", true }, { "lescoquetteriesdenais.fr", true }, + { "lescouturesdisa.fr", true }, { "lescrapdesfilles.fr", true }, + { "lescrieursduweb.com", true }, { "lesdeuxfilles.be", true }, { "lesdouceursdeliyana.com", true }, { "leseditionsbraquage.com", true }, - { "lesefloh.de", false }, + { "lesershop24.de", true }, + { "lesformations.net", false }, { "lesfouines.com", true }, { "lesgarianes.com", true }, { "lesgitesdusapey.fr", false }, { "lesgoodnews.fr", true }, { "lesh.eu", true }, - { "leshetu.com", false }, { "leshok.tk", true }, + { "leshop.ch", true }, { "lesin.tk", true }, { "lesjardinsdemathieu.net", false }, + { "leskei.ru", true }, + { "leskompi.com", true }, { "leslhassadeluminia.fr", true }, { "leslie.horse", true }, + { "lesmaisonsdaudrey.com", true }, { "lesmamy.ch", false }, { "lesmatinesdheres.fr", true }, + { "lesmills-redirect-test.azurewebsites.net", true }, { "lesmontagne.net", true }, { "lesnet.co.uk", true }, { "lesnoticiesdensergialarcon.site", true }, + { "lesoleilcafe.com", true }, { "lesours.in", true }, + { "lesparqueteurs.xyz", true }, { "lespatriotes.tk", true }, { "lespecialiste-pradelexcellence.com", true }, { "lesperlesdunet.tk", true }, { "lespinasse.org", true }, { "lesplatanes.ch", false }, { "lesportmusic.tk", true }, - { "lespret.nl", true }, { "lesprofsplacotent.com", true }, { "lesptitspasdelyne.fr", true }, { "lesptitstutos.fr", true }, { "lesquatredauphins.fr", false }, + { "lesrivesdegaronne.com", true }, { "lessavonnables.fr", true }, + { "lesschwab-privacyportal-ui.azurewebsites.net", true }, + { "lesschwabdatagovernancetool.azurewebsites.net", true }, { "lessets-graphiques.com", true }, { "lessiamia.net", true }, + { "lessing.consulting", true }, { "lessis.moe", true }, + { "lessonsofacto.com", true }, { "lesspass.com", true }, { "lestanzedelgattopardo.it", true }, { "lesterchan.net", true }, { "lesterrassesdusoleil.ch", false }, + { "lestravauxduparticulier.fr", true }, { "lestrokeofgenius.com", true }, + { "lestudiopecot.fr", true }, { "lesummeira.is", true }, { "lesvertsmaroc.tk", true }, { "lesy.eu", true }, { "lesy.online", true }, + { "lesycr.cz", true }, { "lesyndicat.info", false }, { "leszonderstress.nl", true }, { "letableaunoir.fr", true }, @@ -73088,32 +83917,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leter.io", false }, { "letgodbetrue.com", true }, { "lethalgaming.tk", true }, + { "lethalhardcore.com", true }, { "lethosdesigns.co.uk", true }, { "lethosdesigns.com", true }, { "leticia.com.tw", true }, { "leticia.ml", true }, { "letiloulous.fr", true }, { "letipweb.tk", true }, + { "letitfleet.com", true }, + { "letitfleet.io", true }, { "letitfly.me", true }, + { "letiziamx.com", false }, { "letmdesigncommercial.com", true }, { "letmebet.de", true }, { "letmepost.com", true }, { "letnik.tk", true }, - { "leto12.xyz", true }, { "letocar.com", true }, { "letote.com", false }, { "letraba.com", true }, { "letranif.net", true }, + { "letras.com", true }, + { "letras.mus.br", true }, + { "letras10.co", true }, { "lets-go-acoustic.de", false }, - { "lets.ninja", true }, - { "lets.nu", true }, - { "letsagree.online", true }, - { "letsbounceuk.com", true }, + { "lets.nu", false }, { "letsbrand-holding.com", true }, { "letsbrand-holding.nl", true }, - { "letsbrand.com", true }, { "letsbrandholding.com", true }, { "letsbrandholding.nl", true }, + { "letscahoot.net", true }, { "letscrackit.ml", true }, { "letsdebug.net", true }, { "letsdevelop.com.br", true }, @@ -73125,7 +83957,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "letsearnit.com", true }, { "letselhulpservice.nl", true }, { "letsencrypt-for-cpanel.com", true }, - { "letsfame.com", true }, { "letsflyinto.space", true }, { "letsgame.nl", true }, { "letsgetintouch.com", true }, @@ -73133,6 +83964,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "letsgowhilewereyoung.com", true }, { "letsknow.ga", true }, { "letsknow.tk", true }, + { "letskona.com", true }, { "letsmakeiteasy.tech", true }, { "letsnet.org", true }, { "letson.me", true }, @@ -73142,19 +83974,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "letsrave.tk", true }, { "letstalk.video", true }, { "letstalkcounseling.com", true }, + { "letstryanal.com", true }, { "lette.tk", true }, { "letterbox-online.de", true }, - { "letteringinstitute.com", true }, { "letterrill.gq", true }, - { "lettersvertalingen.nl", true }, + { "lettersblogatory.com", true }, { "lettings101.org", false }, + { "letto.ru", true }, { "lettori.club", true }, { "lettragetattoo.tk", true }, { "lettrefrancophile.ga", true }, { "lettres-motivation.net", true }, { "lettucegeek.com", true }, { "letturaveloce.tk", true }, + { "letusdothehomework.com", true }, { "letustravel.tk", true }, + { "letvikar.dk", true }, { "letweedoo.com", true }, { "letzi-immobilien.ch", true }, { "leuchtmann.ch", true }, @@ -73169,10 +84004,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "levabilligt.com", true }, { "levans.fr", false }, { "levantage.tk", true }, - { "levante.com.au", true }, { "levante.net.nz", true }, + { "levaomat.com", true }, { "levapsych.com", true }, { "levaquin750.ga", true }, + { "levati.name", true }, + { "level33.com.sg", true }, { "level37.tk", true }, { "level4.parts", true }, { "level5-drywall.com", true }, @@ -73183,13 +84020,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "levels3d.com", true }, { "levelsoft.ml", true }, { "levelum.com", true }, + { "levelupdisability.com.au", true }, { "leveluplv.com", true }, { "leveluprankings.com", true }, - { "levendwater.be", true }, + { "levelx.team", true }, { "levendwater.org", true }, { "levensbron.nl", true }, { "leventismotors.com.ng", true }, - { "leveragedtokens.com", true }, { "leverj.io", true }, { "levermann.eu", true }, { "leviaan.nl", true }, @@ -73197,6 +84034,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leviathanfan.tk", true }, { "leviathanstory.tk", true }, { "levico.tk", true }, + { "levida.ca", true }, { "levidromelist.com", true }, { "levimarvin.site", false }, { "levineteamestates.com", true }, @@ -73204,17 +84042,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "leviobery.com", true }, { "levis.fun", true }, { "levis.name", true }, + { "levischuck.com", true }, { "levisenlaw.com", true }, + { "levitate.ro", true }, + { "levitatingx.com", true }, { "levitation.tk", true }, + { "levlagom.com", true }, + { "levmarkov.ru", true }, { "levna-knihovna.cz", true }, { "levolor.com", true }, + { "levonet.sk", true }, { "levothyroxineonline.gq", true }, { "levs.tk", true }, + { "levy.org", true }, + { "levyinstitute.com", true }, + { "levyinstitute.net", true }, + { "levyinstitute.org", true }, + { "levymultiplier.com", true }, + { "levymultiplier.org", true }, { "levyntgard.tk", true }, { "lew.im", true }, { "lewdawson.com", false }, { "lewdgamer.com", true }, - { "lewebarium.com", true }, { "leweslivingstreets.tk", true }, { "lewiatan.opole.pl", true }, { "lewis-sharp.com", true }, @@ -73222,54 +84071,75 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lewiscountyny.gov", true }, { "lewisdatasecurity.com", true }, { "lewisjuggins.co.uk", true }, - { "lewisllewellyn.me", true }, { "lewismcyoutube.uk", true }, + { "lewistonutah.gov", true }, { "lewt.me", true }, + { "lex-legal.com.ua", true }, + { "lex18.com", true }, { "lexapro-price.ga", true }, { "lexautoservice.nl", true }, + { "lexblogplatform.com", true }, + { "lexblogplatformthree.com", true }, + { "lexch.com", true }, { "lexdavicont.ro", true }, { "lexdigital.pl", true }, { "lexe.club", true }, + { "lexeri.com", true }, + { "lexgo.be", true }, + { "lexgo.lu", true }, { "lexic.co", true }, { "lexico.pt", true }, { "lexicography.online", true }, { "lexicore.ga", true }, { "lexifax.ga", true }, { "lexikon24.tk", true }, + { "lexilowepornstar.com", true }, + { "lexilunapornstar.com", true }, { "lexington-credit-repair.com", true }, + { "lexingtonil.gov", true }, { "lexingtonok.gov", true }, + { "lexiprof.com", true }, { "lexis.ml", true }, { "lexitthemovie.tk", true }, { "lexjunkie.xyz", true }, + { "lexmedia.ro", true }, { "lexmondcommunications.com", true }, - { "lexmove.tk", true }, { "lexpartsofac.com", true }, + { "lexpert.ca", true }, { "lexreception.com", true }, { "lexum.com", true }, { "lexuspartsnow.com", true }, + { "lexvademecum.com", true }, { "lexway.pk", true }, + { "leyaonline.com", true }, { "leybelsgarden.cf", true }, - { "leybold.co.id", true }, { "leyendaluzrenacer.com", true }, { "leyeslaboralesdecolorado.gov", true }, - { "leylalewis.com", true }, + { "leyfutmex.com", true }, { "leylalips.org", true }, { "leymaritima.com", true }, { "leytron.tk", true }, { "lez.gent", true }, { "lez2020.be", true }, { "lez2020.gent", true }, + { "lezbomovies.com", true }, { "lezdomsm.com", true }, { "lezen.tk", true }, + { "lezgetreal.com", true }, + { "lezhang.top", true }, { "lezwatchtv.com", false }, + { "lezzetyurdu.com.tr", true }, + { "lf-space.com", true }, { "lfashion.eu", true }, - { "lfaz.org", true }, + { "lfc.com.pl", true }, { "lfcnsv.de", true }, { "lff.club", true }, { "lffweb.ga", true }, + { "lfg.com.ph", true }, { "lfgss.com", true }, - { "lfiore.uk", true }, + { "lfi-mv.de", false }, { "lfmosqueira.com.br", true }, + { "lfn.moe", true }, { "lfnaturopathie.com", true }, { "lforum.tk", true }, { "lfrconseil.com", true }, @@ -73284,12 +84154,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lgbt-colleges.com", true }, { "lgbt.io", true }, { "lgbt.ventures", true }, + { "lgbtqtherapyspace.com", true }, { "lgbtventures.com", true }, { "lgbusiness.es", false }, + { "lgelectric.cz", true }, + { "lgelectric.eu", true }, { "lgerman.de", true }, { "lgesteticaautomotiva.com.br", true }, { "lghfinancialstrategy.ch", false }, { "lgiswa.com.au", true }, + { "lgmars.xyz", true }, { "lgnsh.fr", true }, { "lgobchod.cz", true }, { "lgp.go.th", true }, @@ -73300,7 +84174,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lgshop.sk", true }, { "lgstore.cz", true }, { "lgstore.sk", true }, - { "lgtravelgroup.com", true }, + { "lgsystem.cz", true }, + { "lgsystems.cz", true }, { "lgv-france.com", true }, { "lgworld.cz", true }, { "lhajn.cz", true }, @@ -73308,7 +84183,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lhasaapso.com.br", true }, { "lhconsult.tk", false }, { "lheinrich.org", true }, - { "lhero.org", true }, + { "lhffinanceira.online", true }, + { "lhisp.com", true }, + { "lhm.de", true }, + { "lhokseumawekota.go.id", true }, { "lhost.su", true }, { "lhp-creation.com", true }, { "lhp-creation.fr", true }, @@ -73316,54 +84194,88 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lhsj28.com", true }, { "lhsj68.com", true }, { "lhsj78.com", true }, + { "lhv.nl", true }, { "li-de.tk", true }, { "li-ke.co.jp", true }, { "li-n.net", true }, { "li-project.com", true }, + { "li.fi", true }, { "li.gz.cn", true }, { "li.search.yahoo.com", false }, { "li1436-89.members.linode.com", true }, + { "li985.com", false }, { "lia-fox.org", true }, { "liaengel.com", true }, + { "liaiai.com", true }, { "lialash.pro", true }, { "lialeone.org", true }, { "lialion.de", true }, { "liam-is-a-nig.ga", true }, + { "liam-le-may.fr", true }, { "liam-w.io", true }, { "liambaron.com", true }, { "liamelliott.me", true }, { "liamlin.me", true }, { "lian-in.net", true }, + { "liana.site", true }, + { "lianand.com", true }, { "liangbi.ml", true }, + { "liange.com", true }, + { "liangfaner.com", true }, { "lianglongcredit.com", true }, { "liangxingai.com", true }, { "liangyichen.net", true }, { "lianhe.art", true }, + { "lianid.com", true }, + { "lianka.eu", true }, { "lianka.pl", true }, + { "lianka.uk", true }, { "lianwen.kim", true }, + { "lianxin.com", true }, { "liaozheqi.cn", true }, { "liar.wiki", true }, - { "liaronce.com", true }, { "lib.pm", true }, + { "lib.rs", true }, { "lib64.net", true }, + { "libanswers.com", true }, + { "libanswers.net", true }, + { "libapps.com", true }, + { "libapps.net", true }, + { "libart.so", true }, + { "libauth.com", true }, { "libbitcoin.org", true }, { "libble.eu", true }, + { "libcal.com", true }, + { "libcal.net", true }, + { "libchat.com", true }, + { "libchat.net", true }, { "libcip.org", true }, { "libcmodbus.org", true }, + { "libconnect.com", true }, + { "libconnect.net", true }, { "libcrc.org", true }, - { "libeedo.com", true }, + { "libcrm.com", true }, + { "libcrm.net", true }, + { "libelle.nl", true }, { "libellezomerweek.nl", true }, { "libellezomerweekexposanten.nl", true }, { "libelulaweb.tk", true }, + { "liberad.fr", true }, + { "liberal.ru", true }, + { "liberalartsedu.org", true }, { "liberale-demokraten.de", true }, { "liberalis.tk", true }, { "liberapay.com", true }, + { "liberategrace.com", true }, { "liberation2020.com", true }, { "liberationgroup.com", true }, { "liberationschool.org", true }, + { "liberationtek.com", false }, { "liberatupotencial.site", true }, + { "liberda.nl", true }, { "liberdademg.com.br", true }, { "liberecstehovani.cz", true }, + { "libermoto.fr", true }, { "liberta-me.org", true }, { "libertacao.tk", true }, { "libertadgreen.tk", true }, @@ -73378,41 +84290,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liberty-med.ru", true }, { "liberty-univers.art", true }, { "liberty-universe.art", true }, + { "liberty.co.uk", true }, { "libertycountyflsoe.gov", true }, { "libertydentalplan.com", true }, { "libertyga.tk", true }, { "libertygrovewi.gov", true }, + { "libertyhillssewer.gov", true }, { "libertylakewapd.gov", true }, { "libertyland.tk", true }, + { "libertylasereye.com", true }, + { "libertylondon.com", true }, + { "libertyreversemortgage.com", true }, + { "libertystation.com", true }, { "libertytereconoce.com", true }, + { "libertytwpadamspa.gov", true }, { "libertyvault.us", true }, { "libertywines.co.uk", false }, - { "libertywines.ie", true }, + { "libertywines.ie", false }, { "libertyxpress.tk", true }, { "libfins.org", true }, { "libgame.com", true }, { "libget.com", true }, + { "libgraphe.me", true }, + { "libguides.com", true }, + { "libguides.net", true }, { "libhttp.org", true }, + { "libinsight.com", true }, + { "libinsight.net", true }, { "liblogo.com", true }, { "libmpq.org", true }, { "libnull.com", true }, { "libot.eu.org", true }, { "libpdf.org", true }, { "libportal.cf", true }, - { "libra.com", true }, { "libractes.tk", true }, { "libraideos.tk", true }, - { "librairieducontretemps.com", true }, + { "librairiez.ca", true }, + { "librairiez.com", true }, { "librairiezbookstore.com", true }, { "libramedia.ru", true }, { "libranet.eu", true }, { "libraries.vic.gov.au", true }, + { "librarika.com", true }, { "librarium.tk", true }, { "library-quest.com", true }, + { "library.nhs.uk", true }, + { "libraryh3lp.com", true }, { "libraryofcode.org", true }, { "libraryofcode.us", true }, { "librarytapes.tk", true }, - { "librarytools.com", false }, + { "librarytools.com", true }, { "libravatar.org", true }, { "librazy.org", true }, { "libre-innovation.org", true }, @@ -73430,34 +84357,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "librematrix.com", true }, { "libremedia.video", true }, { "librends.org", true }, - { "libreoffice-from-collabora.com", true }, + { "libreoffice.ee", true }, { "libreofficefromcollabora.com", true }, - { "librerecipes.ga", true }, + { "libreplanet.org", true }, { "libreria-ouroboros.tk", true }, - { "libreriahogardelagracia.com", true }, { "librervac.org", true }, { "libresoft.ml", true }, { "libressobooks.sk", true }, - { "libretech.de", true }, + { "libreview.ru", true }, { "librisulibri.it", true }, { "librosantimateria.com", true }, + { "librosdelasteroide.com", true }, { "librosdescargas.club", true }, { "librosgratisnet.tk", true }, + { "libruis.com", false }, { "libscpi.org", true }, { "libskia.so", true }, { "libslack.org", true }, { "libsodium.org", true }, + { "libstaffer.com", true }, + { "libstaffer.net", true }, + { "libstick.org", true }, { "libstock.si", true }, - { "liburanjogja.co.id", true }, + { "libwizard.com", true }, + { "libwizard.net", true }, { "libyanexpert.ml", true }, - { "licaoz.com", false }, { "licence-registry.com", true }, { "licencja-na-drona.pl", true }, { "licencja-na-drony.pl", true }, + { "licensecrack.com", true }, { "licensediscovery.io", true }, + { "licensekeycrack.co", true }, + { "licenseplates.cc", true }, { "licenzacalcio.tk", true }, - { "liceo.cn", true }, { "liceoc9.tk", true }, + { "licesisters.com", true }, + { "licey369.ru", true }, { "lichess.org", true }, { "lichnyj-astrolog.cf", true }, { "lichnyj-astrolog.ga", true }, @@ -73482,10 +84417,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lichttechnik-tumler.com", true }, { "lichtval.tk", true }, { "licia-music.com", true }, + { "lickd.co", true }, { "lickingcounty.gov", true }, - { "lickthesalt.com", true }, { "licloud.homeip.net", true }, - { "licx.cf", true }, { "licx.ml", true }, { "licx.ru", true }, { "lida-vets.co.uk", true }, @@ -73496,7 +84430,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lidel.org", true }, { "lidernaturascarlettbados.com", true }, { "liderok.tk", true }, - { "liderwalut.pl", false }, + { "lidkoping.se", true }, { "lidl-gewinnspiel.de", true }, { "lidl-holidays.com", true }, { "lidl-immobilien.de", true }, @@ -73507,9 +84441,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lidl-shop.sk", true }, { "lidl-sklep.pl", true }, { "lidl-stikeez.si", true }, + { "lidl-vins.fr", true }, { "lidl.at", true }, { "lidl.be", true }, { "lidl.de", true }, + { "lidl.es", true }, { "lidlonline.es", true }, { "lidlovajogurteka.si", true }, { "lidodecor.com", true }, @@ -73519,7 +84455,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lidservicessac.com", true }, { "lidtkemotors.com", true }, { "liduan.net", false }, - { "liebeisstleben.net", true }, + { "lieba.ch", true }, { "liebel.org", true }, { "lieben.tk", true }, { "lieberwirth.biz", true }, @@ -73527,6 +84463,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lied8.eu", true }, { "liegveld.nl", true }, { "liehuojun.com", true }, + { "liella.me", true }, { "liemen.net", true }, { "liena.be", false }, { "liendar-silver.com", true }, @@ -73540,16 +84477,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lifamily.xyz", true }, { "lifanov.com", true }, { "lifars.com", true }, - { "life-element.com", true }, + { "lifco-industrie.com", true }, { "life-emotions.pt", true }, { "life-experiment.com", true }, { "life-in-hell.tk", true }, { "life-is-riddle.tk", true }, + { "life-mastery-tv.com", true }, { "life-style.tk", true }, { "life-tec.tk", true }, { "life-time.nl", true }, { "life24korea.com", true }, { "life29.com", true }, + { "life360.com", true }, { "life4net.tk", true }, { "lifeandhealthtips.tk", true }, { "lifeandhowtosurviveit.com", true }, @@ -73558,24 +84497,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lifeatthemax.graphics", true }, { "lifeatthemax.marketing", true }, { "lifeatthemax.us", true }, - { "lifeboxhealthcare.co.uk", true }, { "lifebymargot.co.uk", true }, + { "lifecare.org", true }, { "lifecism.com", true }, + { "lifecoach.tw", true }, { "lifecoachkatrien.be", true }, { "lifeconnections.ro", true }, { "lifecraft.cf", true }, { "lifecycle.tools", true }, { "lifedrops.com.au", true }, - { "lifeeducationqld.org.au", true }, { "lifefoto.de", true }, { "lifegoesonsojustsmile.tk", true }, { "lifeguatemala.com", true }, - { "lifehacker.co.il", true }, { "lifehacker.com", true }, - { "lifeindecor.com", true }, + { "lifeinheart.com", true }, { "lifeinhellfansite.tk", true }, { "lifeinhex.com", true }, { "lifeinsurancepro.org", true }, + { "lifeintwentys.com", true }, { "lifeisabug.com", true }, { "lifeismmo.com", true }, { "lifeispain.tk", true }, @@ -73583,6 +84522,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lifekeycounsel.com", true }, { "lifekirov.tk", true }, { "lifekiss.ru", true }, + { "lifelineanimal.org", true }, + { "lifelinespublishing.com", true }, { "lifelinesupport.org", true }, { "lifelinksystems.com", true }, { "lifelock.ml", true }, @@ -73593,8 +84534,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lifemstyle.com", true }, { "lifenews24.tk", true }, { "lifenexto.com", true }, + { "lifengoal.com", true }, { "lifeofasi.com", true }, { "lifepathdoc.com", true }, + { "lifepress.blog", true }, { "lifereset.it", true }, { "lifesafety.com.br", true }, { "lifesaverhindi.tk", true }, @@ -73608,40 +84551,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lifeslice.online", true }, { "lifeslonglist.com", true }, { "lifesoccer.tk", true }, - { "lifestorage.com", true }, - { "lifestrongacademy.org", true }, + { "lifestorage.com", false }, + { "lifestyle.bg", true }, { "lifestyle7788.com", true }, + { "lifestyledoctor.in", true }, + { "lifestylefoodies.com", true }, + { "lifestylepill.com", true }, { "lifestyler.me", true }, { "lifestylexplocial.tk", true }, { "lifetech.com.my", true }, { "lifetimefitness.tk", true }, { "lifetimemedsers.ga", true }, { "lifetimemedsest.ga", true }, - { "lifetimestack.com", true }, + { "lifetimetraining.co.uk", true }, { "lifetoolscdc.com", true }, { "lifetree.network", true }, - { "lifeup.pl", true }, { "lifeupgame.fr", true }, { "lifewithdyna.com", true }, { "lifexpert.tk", true }, { "lifi.digital", true }, { "lifi.is", true }, { "liftagacademy.com", true }, + { "liftedpixel.net", true }, { "liftie.info", true }, + { "liftmode.com", true }, { "liftyourgame.com", true }, { "lig.ink", false }, { "liga.ng", true }, { "liga99.tk", true }, { "ligacontrachetos.tk", true }, + { "ligadegamers.com", true }, { "ligadelconsorcista.org", true }, { "ligadosgames.com", true }, { "ligare-fp.com", true }, { "ligaro.nl", true }, { "light.law", true }, { "light.mail.ru", true }, + { "lightandvideo.com", true }, { "lightbearer.tk", true }, { "lightbluelearning.com", true }, { "lightbox.co", true }, + { "lightcp.com", true }, { "lightcraftmc.tk", true }, { "lightdark.xyz", true }, { "lightfestivalghent.be", true }, @@ -73649,6 +84599,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lightfoot.co.uk", true }, { "lighthouse-rbg.de", true }, { "lighthouseglobal.com", true }, + { "lighthouseguild.org", true }, { "lighthouseinstruments.com", true }, { "lighthousepointfl.gov", true }, { "lightingagoura.com", true }, @@ -73666,11 +84617,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lightingsimivalley.com", true }, { "lightingthousandoaks.com", true }, { "lightingwestlakevillage.com", true }, + { "lightme.us", true }, { "lightmere.com", true }, { "lightning-wallet.com", true }, { "lightning.com", true }, { "lightning.community", true }, { "lightning.engineering", true }, + { "lightningcollectors.com", true }, { "lightningpatrolers.ga", true }, { "lightningpatrolest.ga", true }, { "lightningprotocol.finance", true }, @@ -73678,17 +84631,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lightningseed.net", true }, { "lightningwirelabs.com", true }, { "lighto.pk", true }, + { "lightoflifehomoeopathyclinic.com", true }, { "lightography.com", true }, + { "lightpod.com.au", true }, { "lightquantum.moe", true }, - { "lights.co.uk", true }, - { "lights.ie", true }, + { "lightrun.com", true }, { "lights0123.com", true }, { "lightscale.com", true }, + { "lightsfromspace.com", false }, { "lightsheep.no", false }, - { "lightsonbook.com", true }, + { "lightsouts.com", true }, + { "lightsoverlapland.com", true }, { "lightsproject.com", true }, + { "lightstands.xyz", true }, { "lightstep.com", false }, - { "lighttp.com", true }, + { "lighttp.com", false }, { "lightupcollective.co.uk", true }, { "lightweighthr.com", true }, { "lightwitch.org", false }, @@ -73698,47 +84655,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ligmadrive.com", true }, { "ligne-roset.com", true }, { "ligneclaire.tk", true }, + { "ligneetlumiere.fr", true }, { "lignemalin.com", true }, { "lignite.com", true }, { "lignoma.com", true }, { "ligonier.com", true }, { "ligustinus.tk", true }, - { "lihaul.dnsalias.net", true }, + { "lihaoyu.cn", true }, { "lihi-home.co.il", true }, + { "lihj.eu.org", true }, { "lihj.me", true }, { "lihuenjardin.com", true }, { "liisauusitaloarola.fi", true }, + { "liivimeretuulepark.ee", true }, { "liivioffshorepark.com", true }, { "lijana.rs", true }, - { "lije-creative.com", true }, { "lijero.co", true }, { "liji.ru", true }, + { "lijie.org", true }, { "lijstbob.nl", true }, { "lijstje.be", true }, { "lijstje.nl", true }, { "likans.tk", true }, { "like-boss.ga", true }, { "like-rabota.tk", true }, + { "likeable.com", true }, { "likeablehub.com", true }, { "likeageek.tk", true }, { "likeany.com", true }, { "likebee.gr", true }, { "likebot.ml", true }, + { "likecrabwalkslowly.ml", true }, + { "likedobrasil.com", true }, { "likefast.tk", true }, { "likefluence.com", true }, { "likegeeks.com", true }, { "likehifi.de", true }, { "likemovies.de", true }, - { "likemyporn.com", true }, { "likenewhearing.com.au", true }, { "likenosis.com", true }, { "likere.com", true }, + { "likesec.net", true }, + { "likesec.se", true }, + { "likesforinsta.com", true }, + { "likesolidaria.com.co", true }, { "likestudio.com.ua", true }, { "likewatercs.com", true }, { "likhner.com", true }, - { "likitler.com", true }, { "likui.me", true }, - { "lilaccakeboutique.com", true }, { "lilai107.com", true }, { "lilai116.com", false }, { "lilai18.ph", true }, @@ -73752,11 +84716,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lilai777.com", true }, { "lilai838.com", true }, { "lilai8866.com", false }, - { "lilai9898.com", true }, - { "lilai99.com", true }, { "lilai9966.com", true }, - { "lilaiw66.com", false }, + { "lilaplus.com.tr", true }, { "lilawadee.tk", true }, + { "lile.cl", true }, { "lilianejuchli.ch", true }, { "liliang.moe", true }, { "liliang13.com", true }, @@ -73768,24 +84731,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lilimusic.tk", true }, { "lilisg.tk", true }, { "lilith-magic-molds.com", true }, - { "lilith-magic-ua.com", true }, { "lilith-magic.com", true }, + { "lilithfund.org", true }, { "lilithqueisser.de", true }, + { "lilium.com", true }, { "liliwarrior.com", true }, { "liliweb.tk", true }, - { "liljohnsanitary.net", true }, { "lillalisa.tk", true }, + { "lillaparken.se", true }, { "lillbrothers.com", true }, { "lille.ml", true }, + { "lillenordmann.no", true }, { "lillieprivat.org", true }, { "lilliputpreschool.co.nz", true }, { "lilly-lil.net", true }, { "lilly-lil.org", true }, - { "lillyfox.de", true }, { "lillylove.net", true }, - { "lillypornokatze.net", true }, - { "lilomatrixcorner.fr", true }, + { "lillywhitehotelgroup.com.au", true }, + { "lilola.de", true }, { "lilou-sportswear.com", true }, + { "lilousportswear.com", true }, { "lilpwny.com", true }, { "lilstarry.com", true }, { "liltv.media", true }, @@ -73794,13 +84759,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lily-luv.com", true }, { "lily.flowers", true }, { "lilyallenlife.ga", true }, + { "lilylarimarpornstar.com", true }, { "lilylasvegas.com", true }, { "lilypadwikisecret.tk", true }, { "lilysbouncycastles.com", true }, - { "lilysgrill.com", true }, + { "lilyum.net", true }, { "lilyvet.com", true }, { "lim-light.com", true }, + { "lim.gr", true }, { "limanhaber.net", true }, + { "limaohio.gov", true }, { "limap.ch", true }, { "limatolavvocati.it", true }, { "limatownshipmi.gov", true }, @@ -73809,22 +84777,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "limberg.me", true }, { "limbo-online.tk", true }, { "limbra.tk", true }, + { "limburg.nl", true }, + { "limc.me", true }, { "lime-host.cf", true }, { "lime-host.tk", true }, { "limechain.tech", true }, - { "limehost.com", true }, + { "limecho.net", true }, { "limehotel.tk", true }, { "limelightnashville.cf", true }, { "limelightnashville.ga", true }, { "limelightnashville.gq", true }, { "limenaria-beach.tk", true }, { "limenotlemon.com", true }, + { "limescapes.com.au", true }, { "limesparrow.cf", true }, { "limestart.cn", true }, + { "limestonecleaningchicago.com", true }, + { "limetee.cz", true }, { "limetorrent.gq", true }, { "limetw.eu.org", true }, - { "limewtea.com", false }, + { "limewtea.com", true }, { "limingtonmaine.gov", true }, + { "limitbreak.com", true }, { "limitdropers.ga", true }, { "limitdropest.ga", true }, { "limitededitioncomputers.com", true }, @@ -73834,7 +84808,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "limitshareest.ga", true }, { "limiturls.ga", true }, { "limnt.cn", true }, - { "limo.pl", true }, + { "limo.pl", false }, { "limo.sh", true }, { "limoairporttoronto.net", true }, { "limoforsale.com", true }, @@ -73845,7 +84819,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "limouzy-combi.com", true }, { "limpiadordeporos.online", true }, { "limpid.nl", true }, - { "limportemps.fr", true }, { "limsia.co", true }, { "limsia.com", true }, { "limstash.com", true }, @@ -73865,24 +84838,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lincasonline.tk", true }, { "lincdavis.com", true }, { "lince-bonares.tk", true }, - { "lincnaarzorg.nl", true }, { "lincolnadamscountywi.gov", true }, { "lincolnbrokerage.com", true }, + { "lincolncountyga.gov", true }, + { "lincolncountyid.gov", true }, { "lincolncountymoclerk.gov", true }, { "lincolncountync.gov", true }, { "lincolncountyne.gov", true }, { "lincolncountysheriffok.gov", true }, { "lincolncountytn.gov", true }, { "lincolncountywy.gov", true }, + { "lincolnfinewines.com", true }, + { "lincolnil.gov", true }, { "lincolnimps.tk", true }, - { "lincolnpedsgroup.com", true }, + { "lincolnmoneyman.com", true }, + { "lincolnparkpressurewashing.com", true }, { "lincolnri.gov", true }, { "lincolnshirefdil.gov", true }, - { "lincolnspringsgc.com", true }, { "lincolnstreetband.tk", true }, { "lincolntownshipnewaygocountymi.gov", true }, + { "lincolnzoo.org", true }, { "lincore.ru", true }, { "lindajahn.de", true }, + { "lindakloenreizen.nl", true }, { "lindalap.fi", true }, { "lindalush.net", true }, { "lindamadu.com.br", true }, @@ -73890,25 +84868,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lindaolsson.com", true }, { "lindazi.com", true }, { "lindbladcruises.com", true }, - { "lindeal.com", true }, - { "lindemann-gartenanlagen.de", true }, + { "lindeal.com", false }, { "linden-nj.gov", true }, - { "linden.co", true }, { "linden.me", false }, { "linden.tk", true }, + { "lindenfd-nj.gov", true }, { "lindenlibrary-nj.gov", true }, { "lindentx.gov", true }, + { "lindependant.fr", true }, { "lindependant.ml", true }, { "lindernational.com", true }, { "lindeskar.se", true }, { "lindgrenracing.tk", true }, - { "lindipendente.online", true }, { "lindler.rocks", true }, { "lindner-architektur.ruhr", true }, { "lindner-edv.at", true }, { "lindnerhof-taktik.de", true }, { "lindnerhof.info", true }, { "lindnerova.cz", true }, + { "lindo.ru", true }, { "lindogdahl.dk", true }, { "lindon.pw", true }, { "lindoors.tk", true }, @@ -73917,28 +84895,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lindsay-lohan.tk", true }, { "lindsaygorski.com", true }, { "lindsborgks.gov", true }, + { "lindseyadelman.com", true }, { "lindseyfansite.tk", true }, { "lindskogen.se", true }, - { "line-magazine.com", true }, + { "lindung.pp.ua", true }, { "line.biz", true }, { "line.co.nz", false }, + { "line.me.uk", true }, { "linea-nova.be", true }, - { "lineadmins.com", true }, { "lineaesse5.it", true }, + { "lineagelogistics.com", true }, { "lineageos.org", true }, { "lineamortal.tk", true }, { "linearmap.com", true }, + { "linebet.com", true }, + { "linebet02489q.com", true }, + { "linebet17654d.com", true }, { "linebooks.cf", true }, { "linedance.tk", true }, { "lineinchina-enterprise.tw", true }, { "linejuby.dk", true }, - { "linernotekids.com", true }, + { "lineman.edu", true }, + { "lineru.com", true }, { "lineshop.ml", true }, { "linestep.jp", true }, + { "lineto.com", true }, + { "linext.cn", false }, { "linfadenopatia.com", true }, { "linfamilygc.com", true }, - { "linfordco.com", true }, - { "ling2030.xyz", false }, { "linge-ma.ro", true }, { "lingerie.com.br", true }, { "lingeriecollect.ga", true }, @@ -73949,13 +84933,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lingua.tk", true }, { "lingualeo.com", true }, { "linguamilla.com", true }, + { "linguarama.com", true }, { "linguaromanica.tk", true }, { "linguatrip.com", true }, { "lingvist.com", true }, { "linhaoyi.com", false }, { "linherest.tk", true }, - { "linholiver.com", true }, + { "linhim.de", true }, { "linhua.org", true }, + { "linjerry.tk", true }, { "link-group.tk", true }, { "link-knighki.cf", true }, { "link-list.tk", true }, @@ -73964,15 +84950,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "link-medital.com", true }, { "link-net.ga", true }, { "link-sanitizer.com", true }, + { "link.co.uk", true }, + { "link.com", true }, { "link24.tk", true }, { "link26.tk", true }, { "link2link.tk", true }, { "link2serve.com", true }, { "link2u.tk", true }, { "link9.net", true }, - { "linkagemag.com", false }, { "linkagencia.co", true }, - { "linkages.org", true }, { "linkat4.cz", true }, { "linkatak.ga", true }, { "linkbong.tk", true }, @@ -73988,15 +84974,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linkedpipes.com", true }, { "linkenheil.org", true }, { "linker-wenzel.com", true }, + { "linkgiamgia.com", true }, { "linkie.vn", true }, { "linkinbooks.gq", true }, + { "linkindex.net", true }, { "linking.ml", true }, { "linkinpark4ever.tk", true }, { "linkinparkoutpost.tk", true }, - { "linkinsta.com", true }, { "linkla.ma", true }, { "linklocker.co", true }, { "linkmauve.fr", true }, + { "linkmycyber.training", true }, { "linknaarlinux.tk", true }, { "linknavigator.tk", true }, { "linko-pomoika.tk", true }, @@ -74005,11 +84993,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linkportal.tk", true }, { "linkposts.tk", true }, { "linkrehberi.tk", true }, + { "linkriver.io", true }, { "linkroll.cf", true }, + { "links-l.com", true }, + { "links22.com", true }, { "linksafe.ga", true }, { "linksanitizer.com", true }, { "linksbridge.com", true }, { "linkscloud.org", true }, + { "linksecure.nl", true }, { "linksextremist.at", true }, { "linksite.tk", true }, { "linksmatrix.tk", true }, @@ -74020,9 +85012,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linkthis.me", true }, { "linkthis.ml", true }, { "linkthisstatus.ml", true }, - { "linktio.com", true }, { "linkto.cf", true }, { "linku.com", true }, + { "linkurio.us", true }, + { "linkurious.com", true }, { "linkuva.tk", true }, { "linkview.tk", true }, { "linkwater.org", true }, @@ -74030,14 +85023,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linky.tk", true }, { "linkycat.com", true }, { "linley.de", true }, - { "linlinzzo.top", true }, - { "linmago.com", true }, { "linmania.tk", true }, - { "linmi.cc", true }, + { "linmarrdavao.com", true }, { "linnaeusgroup.co.uk", true }, + { "linncfs.top", true }, { "linncounty-ia.gov", true }, { "linncountyelections-ia.gov", true }, { "linncountyiowa.gov", true }, + { "linncountyor.gov", true }, { "lino.cooking", true }, { "linocolombo.tk", true }, { "linocomm.com", true }, @@ -74048,7 +85041,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linonin.tk", true }, { "linoplan.be", true }, { "linoplan.com", true }, - { "linoplan.de", true }, { "linoplan.dk", true }, { "linoplan.eu", true }, { "linoplan.fr", true }, @@ -74066,13 +85058,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linotrac.com", true }, { "linotrac.nl", true }, { "linotype.tk", true }, - { "linpx.com", true }, + { "linpx.com", false }, { "linqhost.nl", true }, + { "linserto.it", true }, + { "linshiyouxiang.com", true }, { "linss.com", true }, { "lintmx.com", true }, + { "linu.gq", true }, { "linu.me", true }, { "linuq.org", true }, { "linusdrop.tips", true }, + { "linuslagerhjelm.se", true }, { "linusruckstuhl.ch", true }, { "linux-admin-california.com", true }, { "linux-admin.tk", true }, @@ -74102,53 +85098,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "linuxbloc.tk", true }, { "linuxbsd.tk", true }, { "linuxcbt.com", true }, - { "linuxchick.se", true }, { "linuxcommand.ru", true }, { "linuxdashboard.com", true }, { "linuxdays.cz", true }, + { "linuxdoc.org", true }, { "linuxforu.tk", true }, { "linuxforum.ch", true }, { "linuxforwindows.com", true }, { "linuxgiggle.com", true }, { "linuxguru.tk", true }, + { "linuxhandbook.com", true }, { "linuxhostingdelhi.com", true }, { "linuxhostingindia.in", true }, { "linuxhostsupport.com", true }, - { "linuxhub.ro", false }, { "linuxiac.com", true }, { "linuxil.org", true }, { "linuxincluded.com", true }, + { "linuxinfo.com.br", true }, { "linuxiuvat.de", true }, { "linuxkompis.se", true }, { "linuxlatbot.tk", true }, { "linuxlounge.net", true }, { "linuxmalta.tk", true }, - { "linuxnetflow.com", true }, { "linuxnews.de", true }, { "linuxonline.tk", true }, + { "linuxproject.net", true }, { "linuxsecurity.expert", true }, - { "linuxtech.ru", true }, { "linuxwerkstatt.net", true }, { "linuz.it", true }, + { "linvosges.com", true }, { "linx.net", true }, { "linxmind.eu", true }, + { "linxtter.com", true }, + { "linyunbin.com", true }, + { "linz.eu.org", true }, + { "linz.host", true }, { "linzyjx.com", true }, + { "liodex.com", true }, + { "lion-log.com", true }, { "lion3star.store", true }, { "lionchita.tk", true }, - { "lionessport.com", true }, + { "lionessport.com", false }, { "lionhosting.nl", true }, { "lionland.tk", true }, + { "lionpa.ws", true }, + { "lions.gr.jp", true }, { "lionsk.tk", true }, - { "lioprog.com", true }, { "lioraaja.com", true }, { "liorggi.ga", true }, + { "lip.pt", true }, { "lipacom.ga", true }, { "lipartydepot.com", true }, - { "lipaslovanska.cz", true }, { "lipator.cf", true }, { "lipeck.ga", true }, { "lipeck.tk", true }, - { "liperskefest.tk", true }, { "lipetsk-centralniy.cf", true }, { "lipetsk48.tk", true }, { "lipex.com", true }, @@ -74160,11 +85163,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lipovka.tk", true }, { "lipowebsite.tk", true }, { "lippu1.fi", true }, - { "lipsumtech.com", true }, + { "lips.ne.jp", true }, { "liptor.gq", true }, { "lipturess.tk", true }, { "liq.com.br", true }, { "liqd.net", true }, + { "liqiang.com", true }, { "liqueur.wiki", true }, { "liquid.cz", true }, { "liquid.network", true }, @@ -74172,27 +85176,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liquidation.tk", true }, { "liquidationyt.com", true }, { "liquidbounce.tk", true }, + { "liquidcorp.fr", true }, { "liquidflash.ml", true }, { "liquidhost.co", true }, { "liquidinternet.co", true }, - { "liquiditeit.wiki", true }, + { "liquidplus.com", true }, { "liquidradio.pro", true }, { "liquidwarp.net", true }, { "liquidweb.tk", true }, { "liquipedia.net", true }, { "liquiritia.tk", true }, - { "liquor.my", true }, { "lirelesgens.com", true }, { "liress.gq", true }, { "lirico.ca", true }, { "lirion.de", true }, { "lirlandais.ch", false }, { "lirnberger.com", true }, + { "lirui.org", true }, { "lirui.tech", true }, { "lis-na-plasty.cz", true }, { "lis.koeln", true }, { "lisa-mainz.tk", true }, { "lisa.xyz", true }, + { "lisabel.ca", true }, { "lisadelbo.tk", true }, { "lisahh-jayne.com", false }, { "lisahutson.co.uk", true }, @@ -74200,17 +85206,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lisamaffia.tk", true }, { "lisanotes.com", true }, { "lisanshizmetleri.com", true }, + { "lisapinder.com", true }, { "lisapo.info", true }, { "lisas.ml", true }, { "lisasack.net", true }, { "lisasc.gq", true }, - { "lisaschubert.net", true }, { "lisasworkshop.co.uk", true }, { "lisavrobinson.tk", true }, + { "lisaweilandt.com", true }, { "lisbon-pre-1755-earthquake.org", true }, { "lisbonwi.gov", true }, { "lisburnhottubnbounce.co.uk", true }, - { "liscieperfetti.com", true }, { "lishayut-prav.cf", true }, { "lishayut-prav.ga", true }, { "lishayut-prav.gq", true }, @@ -74225,7 +85231,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lislan.org.uk", true }, { "lisowski-development.com", false }, { "lisowski-photography.com", true }, - { "lissabon.guide", true }, { "lissabon.tk", true }, { "lissabonsite.tk", true }, { "lissajouss.tk", true }, @@ -74237,33 +85242,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "listach.tk", true }, { "listahu.org", true }, { "listapp.uz", true }, + { "liste.net.tr", true }, { "listekdo.fr", true }, { "listen.dk", true }, { "listener.ga", true }, { "listening-skills.eu", true }, + { "listenkj.com", true }, + { "listenup.study", true }, { "lister-kirchweg.de", true }, { "listiclepal.com", true }, - { "listim.com", true }, - { "listing-here.com", false }, + { "listinfinity.net", true }, { "listing.gq", true }, { "listisima.com", true }, - { "listkeeper.io", true }, - { "listlockr.com", true }, + { "listkeeper.io", false }, { "listminut.be", true }, + { "listoffreeware.com", true }, { "listoyou.fr", true }, { "listratenkov.com", true }, { "lists.fedoraproject.org", true }, { "lists.mayfirst.org", false }, { "lists.stg.fedoraproject.org", true }, { "listsothebysrealtyhk.com", true }, - { "listyourinfo.com", true }, + { "lit-verlag.de", true }, { "litaphoenix.net", true }, { "litarvan.com", true }, { "litcc.com", true }, { "litchfieldpark.gov", true }, { "litchidova.nl", true }, { "litcomphonors.com", true }, + { "lite-1x0801165.top", true }, + { "lite-1x132537.top", true }, + { "lite-1x378220.top", true }, + { "lite-1x389463.top", true }, + { "lite-1x4720786.top", true }, + { "lite-1x562968.top", true }, + { "lite-1x563355.top", true }, + { "lite-1x5942934.top", true }, + { "lite-1x605138.top", true }, + { "lite-1x6274108.top", true }, + { "lite-1x682393.top", true }, + { "lite-1x7814040.top", true }, + { "lite-1x8343697.top", true }, + { "lite-1x9264112.top", true }, + { "lite-1x9866970.top", true }, { "lite-chat.tk", true }, + { "liteanalytics.com", true }, { "litebit.de", true }, { "litebit.eu", true }, { "litebit.nl", true }, @@ -74274,13 +85297,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "litecloud.ml", true }, { "litecoinnews.club", true }, { "litehost24.tk", true }, - { "litemere.org", true }, + { "litemere.us", true }, { "litemind.com", false }, { "liteminer.cf", true }, - { "litepanels-parts.com", true }, { "litepay.ch", true }, - { "litepost.com", true }, { "literacychannel.ga", true }, + { "literapedia-bern.ch", true }, { "literaria.tk", true }, { "literatura-portal.cf", true }, { "literature-schools.com", true }, @@ -74292,28 +85314,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "literaturpreis.online", true }, { "literaturtage-recklinghausen.de", true }, { "literie06.com", true }, + { "literoticavod.com", true }, { "litespeed-webserver.de", true }, - { "litespeedwebserver.com", true }, { "litespeedwebserver.de", true }, + { "litfest.ru", true }, { "litfin.name", true }, { "litfl.com", true }, - { "lithan.com", true }, { "lithesalar.se", true }, { "lithianissaneugeneparts.com", true }, + { "lithiumhosting.com", true }, { "litiab.tk", true }, + { "litkicks.com", true }, { "litnis.com", true }, { "litolin.tk", true }, { "litorallimpo.com.br", true }, { "litportal.gq", true }, - { "litsovet.com", true }, { "litterfreeriversandstreams.eu", true }, { "little-brother.eu", true }, { "little-cake.com", true }, + { "little-luk.com", true }, { "little-news.gq", true }, + { "little-shield.com", true }, { "little.recipes", true }, { "littlebar.tk", true }, - { "littlebearcare.com", true }, { "littlebestfriend.de", true }, + { "littlebig.co", true }, { "littlebirds.cf", true }, { "littlebites.co.nz", true }, { "littleblackfish.se", true }, @@ -74321,17 +85346,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "littleboutiqueshop.co.uk", true }, { "littleboutiqueshop.com", true }, { "littleboutiqueshop.uk", true }, + { "littlechamp.ro", true }, + { "littlecreatures.com.au", true }, + { "littlecreekhosting.com", true }, { "littlecrochetbytabea.com", true }, { "littledev.nl", true }, { "littleduck.xyz", true }, + { "littlefairy.no", true }, { "littlefamilyadventure.com", true }, { "littlefingersindia.com", true }, { "littlefiredragon.tk", true }, { "littlefool.de", true }, { "littlegiants.edu.au", true }, + { "littlegianttraveler.com", true }, + { "littlegleemonster.com", true }, { "littlehacker.tk", true }, { "littlehide.gq", true }, { "littlehoop.edu", true }, + { "littleireland.co.uk", true }, { "littlelife.co.uk", true }, { "littlelucifercafe.tk", true }, { "littlemaple.tk", true }, @@ -74350,10 +85382,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "littlerphotographie.fr", true }, { "littles.moe", true }, { "littlescallywagsplay.co.uk", true }, + { "littlesearch.net", true }, { "littleservice.cn", true }, { "littlesk.in", true }, { "littleskin.cn", true }, - { "littleson.com.br", true }, + { "littleson.com.br", false }, { "littlesouls.ml", true }, { "littlewatcher.com", true }, { "littleyokohamakennel.tk", true }, @@ -74369,14 +85402,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liuhecai.com", true }, { "liujr.tk", true }, { "liujunyang.com", false }, + { "liukang.com", true }, { "liukang.tech", true }, { "liul.in", true }, { "liuliuya.com.tw", true }, { "liulo.cf", true }, + { "liunian.com", true }, + { "liups.one", true }, { "liuq.org", true }, { "liuqiao.best", true }, { "liuqiao.cf", true }, - { "liuqiao.eu.org", false }, + { "liuqiao.eu.org", true }, { "liuqiao.ga", true }, { "liuqiao.gq", true }, { "liuqiao.ml", true }, @@ -74387,12 +85423,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liuwenxuan.com", true }, { "livada.fr", true }, { "livadm.ml", true }, - { "live-chat-esi.herokuapp.com", true }, + { "livdesign.com.tw", true }, { "live-knigi.cf", true }, { "live-news.gq", true }, { "live-tv-channels.org", true }, { "live-z-rejstejna.cz", true }, { "live2play.ml", true }, + { "live2travelmore.us", true }, { "live4k.media", true }, { "live8811.com", true }, { "live8899.cn", true }, @@ -74406,13 +85443,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livebandphotos.com", true }, { "livebarmenu.com", true }, { "livebestbooks.gq", true }, - { "livebetterwith.com", true }, { "livebookmark.ml", true }, { "livebox-mag.fr", true }, { "livebythesun.de", true }, { "livecards.co.uk", true }, { "livecards.es", true }, - { "livecards.eu", true }, { "livecards.it", true }, { "livecast.com.tr", true }, { "livecchi.cloud", true }, @@ -74421,14 +85456,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "liveciv.top", true }, { "livecommande.fr", true }, { "liveconcertvideo.tk", true }, - { "livecricketscore.co.in", true }, { "livedesign.at", true }, - { "livedesign24.de", true }, { "livedomain.at", true }, + { "livedrawtogel.id", true }, + { "liveeventartist.net", true }, + { "liveeventpainter.ca", true }, { "liveevents.ee", true }, + { "liveflooring.com", true }, + { "livefoot.fr", true }, { "liveforspeed.se", true }, { "livefortheviews.com", true }, { "livehomecams.co.uk", true }, + { "liveinmelbourne.vic.gov.au", true }, { "liveint.org", true }, { "liveit.pt", true }, { "liveita.com", true }, @@ -74439,13 +85478,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livejh.tk", true }, { "livekaarten.be", true }, { "livekaarten.nl", true }, - { "livekarten.de", true }, { "livekey.tk", true }, + { "livekooora.online", true }, { "livekort.com", true }, { "livekort.dk", true }, { "livekort.no", true }, { "livekort.se", true }, - { "livekortti.com", true }, { "livekortti.fi", true }, { "livela.jp", true }, { "livelexi.com", true }, @@ -74461,53 +85499,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livenewsrussia.tk", true }, { "liveomadic.com", true }, { "liveoutdoor.ga", true }, + { "livepainter.ca", true }, { "livepaperhelp.com", true }, { "liveperformersmeeting.net", true }, - { "livepl.eu", true }, - { "liveradiocanada.com", true }, + { "livepix.gg", true }, + { "liveplaygo.com", true }, + { "livepodcast.ru", true }, + { "livepornguide.com", true }, { "liverado.com", true }, - { "liverano.com", true }, { "liveregistratie.nl", true }, + { "liverfoundation.org", true }, { "liverider.co.jp", true }, { "liverkids.tk", true }, { "livermoreca.gov", true }, { "livero.pl", true }, { "liverobot8.com", true }, { "liverobot888.com", true }, - { "livesalons.com", true }, + { "liversurgery.com", true }, + { "livescore-fixedmatches.com", true }, { "livesexcalls.co.uk", true }, - { "livesheep.com", true }, { "liveskype.com", true }, { "livesportts.ml", true }, { "livestone.tk", true }, { "livestrana.tk", true }, + { "livestreamtvbox.com", true }, { "livesure.com", true }, { "liveteachers.in", true }, - { "livethereservega.com", true }, + { "livetilesglobal.com", true }, { "livetopknigi.gq", true }, { "livetoride.co.za", true }, + { "livevacancies.co.uk", true }, + { "livewebtutor.com", true }, + { "liveweddingartist.ca", true }, + { "liveweddingpainter.ca", true }, { "livewirecommunications.co.uk", true }, { "livezrejstejna.cz", true }, { "livfcshop.com", true }, - { "livhao.com", true }, + { "livhao.com", false }, { "livi.co", true }, { "livi.co.uk", true }, { "livi.fr", true }, { "living-legends.tk", true }, { "living-space.co.nz", true }, { "living-with-outlook-2010.com", true }, - { "living.digital", true }, { "living.video", true }, { "living2000.com", true }, { "livingafrugallife.com", true }, { "livingbitsandthings.com", true }, + { "livingconfidently.com", true }, + { "livingdocs.io", true }, { "livinghebrew.tk", true }, { "livinginhimalone.com", true }, + { "livingislands.org", true }, + { "livingislands.tv", true }, { "livinglab.be", true }, { "livinglifesecurely.com", true }, { "livinglink.be", true }, { "livinglocalapp.com", true }, - { "livingorganicnews.com", true }, { "livingoutdoors.ga", true }, { "livingtired.org", true }, { "livingtohearsix.com", true }, @@ -74529,26 +85577,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "livres-et-stickers.com", true }, { "livresetmanuscrits.com", true }, { "livroseuniformes.com.br", true }, + { "livspace.com", true }, { "livsta.ca", true }, + { "livy.one", true }, + { "lixi.today", true }, { "lixiaoyu.live", true }, + { "lixinnovations.com", true }, + { "lixis.com", true }, { "lixtick.com", true }, + { "lixvapes.com", true }, { "lixx.org", true }, { "liyin.date", true }, + { "liying-sub.buzz", true }, { "liyingcloud.org", true }, - { "liz-fry.com", true }, + { "liz-ate.com", true }, + { "liz-fry.com", false }, { "liz.ee", true }, { "lizagalore.tk", true }, { "lizaminnelli.tk", true }, { "lizardsystems.com", true }, { "lizardtech.top", true }, { "lizcheney.com", true }, - { "lizdelmart.me", true }, { "lizeal.tk", true }, { "lizheng.de", true }, { "lizhi.io", true }, { "lizhi123.net", true }, - { "lizhuogui.ga", true }, - { "liziba.cg", true }, + { "lizhuan.cn", false }, + { "lizlew.is", true }, { "liznewton.com.au", true }, { "liztattoo.se", true }, { "lizteacher.com", true }, @@ -74557,16 +85612,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lizzaran.io", true }, { "lizzian.uk", true }, { "lizzwood.com", true }, + { "lizzymcc.com", true }, { "lizzysdoggrooming.com", true }, { "lizzythepooch.com", true }, { "lj-creation.com", true }, { "ljason.cn", true }, - { "ljc.ro", true }, + { "ljekarne-plantak.hr", true }, { "ljoonal.xyz", true }, + { "ljpc-hosting.nl", true }, + { "ljpc.nl", true }, + { "ljpc.solutions", true }, { "ljs.io", true }, + { "ljskatt.com", true }, { "ljskatt.no", true }, { "ljsport.nl", true }, { "ljubescica.hr", true }, + { "ljungabolet.se", true }, + { "ljusdal.se", true }, + { "ljusfallshammar.nu", true }, { "ljw.me", true }, { "lk-hardware.cz", true }, { "lk1.bid", true }, @@ -74574,42 +85637,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lkellar.org", true }, { "lkhrs.com", true }, { "lklyrics.com", true }, + { "lkmt.us", true }, { "lknw.de", true }, { "lkp111138.me", true }, { "lkqpickyourpart.com", true }, + { "lktvchannel.com", true }, { "lkummer.cz", true }, - { "lkw-servis.sk", true }, { "ll-t.com", true }, { "ll.gr", true }, { "ll5197.co", true }, { "ll6729.co", true }, { "ll6729.com", false }, { "ll6957.co", true }, - { "ll8819.com", true }, { "ll9297.co", true }, { "ll9397.com", true }, { "ll9728.co", true }, - { "llamerapido.com", true }, + { "llac.org", true }, { "llanelli-radio-club.tk", true }, { "llanowar.tk", true }, { "llantasysuspensiones.shop", true }, { "llave.io", true }, - { "llbcpa.com", true }, { "llccd.eu.org", true }, - { "lldy88.com", true }, + { "llcgeek.com", true }, + { "llcig.com", true }, + { "llcigroup.com", true }, + { "lldigital.co.il", true }, + { "lleal.com", true }, { "lleidanoticies.com", true }, { "llemoz.com", true }, { "lligwy.co.uk", false }, + { "llinck.fr", true }, { "llinternational.tk", true }, { "llm-guide.com", true }, - { "lloretparty.de", true }, { "lloyd-day.me", true }, { "lloydrogerspencer.com", true }, - { "lltcpa.com", true }, + { "llrpartners.com", true }, + { "llumar.com", true }, { "llvm.us", true }, { "llyncelyn.com", true }, - { "llyq8866.com", true }, - { "llyq9988.com", true }, + { "lm-architecture.com", true }, { "lm-landscapes.co.uk", true }, { "lm1628.com", true }, { "lm228.cn", true }, @@ -74618,54 +85684,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lm338.com", true }, { "lmasqueen.com", true }, { "lmbyrne.co.uk", true }, - { "lmddgtfy.net", true }, + { "lmch.co.uk", true }, + { "lmde.fr", true }, { "lmh-style.com", true }, + { "lmi3d.com", true }, { "lmintlcx.com", true }, { "lmmks.com", true }, { "lmmtfy.io", true }, + { "lmr.com", true }, { "lmrcirurgiaplastica.pt", true }, { "lmrcouncil.gov", true }, - { "lms-luch.ru", true }, + { "lms-mods.com", true }, + { "lmsal.com", true }, { "lmsowl.com", true }, - { "lmsptfy.com", true }, - { "lmsuitespagna.it", true }, - { "lmtlabs.com", false }, { "lmtls.me", true }, { "lmtravis.com", true }, { "lmvsci.gov", true }, { "ln.io", true }, + { "lndb.me", true }, { "lndrive.space", true }, { "lnhydy.cn", true }, { "lnk.bio", true }, { "lnk.dk", true }, { "lnoldan.com", true }, { "lnovus.ru", false }, - { "lnx.li", true }, + { "lnsk.lt", true }, + { "lnsolucoesfinanceiras.com.br", true }, + { "lntpower.com", true }, + { "lnxy.eu", true }, { "lnyltx.cn", true }, { "lnzphoto.com", true }, { "lo-li.icu", false }, - { "lo-mio.com", true }, { "lo-zuromin.tk", true }, { "loackerbusiness.it", true }, - { "load-ev.de", true }, { "load.pm", false }, { "loader.to", true }, { "loader.us.com", true }, - { "loadforge.com", true }, { "loadhourly.tk", true }, { "loading.express", true }, { "loading.se", true }, + { "loadit.lol", true }, { "loadlow.me", true }, { "loadme.ml", true }, + { "loadninja.com", true }, { "loadover.me", true }, { "loadwallet.com", true }, { "loafhead.me", true }, { "loan-lenders.co.za", true }, + { "loanathome.com", true }, { "loanfreeze.ga", true }, - { "loanmatch.sg", true }, + { "loanopedia.in", true }, { "loanpad.com", true }, { "loanpost.com.au", true }, { "loanreadycredit.com", true }, + { "loansafe.com.tw", true }, + { "loanscanada.ca", true }, { "loansharkpro.com", true }, { "loanstreet.nl", true }, { "loantillpaydaydelaware.com", true }, @@ -74673,10 +85746,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lob-assets-staging.com", true }, { "lob-assets.com", true }, { "lob-staging.com", true }, + { "lobandsmash.com", true }, { "lobao.eti.br", true }, { "lobao.pro.br", true }, { "lobbes.nl", true }, + { "lobbster.co", true }, + { "lobby.game", true }, { "lobevert.com", true }, + { "lobiancocucina.com", true }, { "lobin21.com", true }, { "lobivia.de", true }, { "lobmedya.com", true }, @@ -74690,37 +85767,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loc-gauthier.fr", true }, { "loca-voiture.fr", true }, { "locabir.cf", true }, + { "locadoraequiloc.com.br", true }, { "locais.org", true }, + { "local-insight.com", true }, + { "local-shop.com", true }, { "local360.net", true }, { "localassocier.tk", true }, { "localbandz.com", true }, { "localbiketrader.com", true }, { "localbitcoins.com", true }, - { "localblitz.com", false }, + { "localblitz.com", true }, { "localbouncycastle.com", true }, { "localcalifornianews.com", true }, + { "localcdn.org", true }, { "localcleann.uk", true }, - { "localcryptopremium.com", true }, { "localcryptos.com", true }, { "locald.at", true }, { "localdating.ml", true }, { "localdigitaldesign.com", true }, { "localethereum.com", true }, { "localexpert.realestate", true }, + { "localexpress.io", true }, { "localfloridanews.com", true }, - { "localhorst.duckdns.org", true }, - { "localhost.cat", true }, + { "localhandyman.work", true }, + { "localhorst.duckdns.org", false }, + { "localize.live", true }, { "localized.tk", true }, { "localizejs.com", true }, { "localizestaging.com", true }, { "locall.cf", true }, + { "locallandscape.services", true }, { "locallhost.me", true }, { "localmarketingprofessional.com", true }, { "localmonero.co", true }, { "localnet.site", true }, { "localnetwork.nz", true }, + { "localnode.net", true }, { "localplumber-uk.com", true }, - { "localpov.com", true }, { "localprideart.com", true }, { "localprivatediary.com", true }, { "localrvs.com", true }, @@ -74743,11 +85826,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "locapos.com", true }, { "locas.me", true }, { "locatecellphone.gq", true }, + { "locateja.com", true }, { "locatemypain.com", true }, { "location-appartement-dakar.com", true }, { "location-fichier-email.com", true }, { "location-vacances-campello.com", true }, { "location-vacances-croatie.tk", true }, + { "location-vacances.biz", true }, { "locationkaraokemontreal.com", true }, { "locationkaraokeottawa.com", true }, { "locationkaraokequebec.com", true }, @@ -74777,11 +85862,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lock.me", true }, { "lock23.ca", true }, { "lockaby.org", true }, - { "locker.email", true }, + { "lockdownfm.live", true }, + { "lockemower.com", true }, { "locker.plus", true }, { "locker3.com", true }, { "lockerroomstories.com", true }, - { "lockify.com", true }, + { "locketurf.com", true }, { "lockless.tk", true }, { "locklock.com.br", true }, { "locklockbrasil.com.br", true }, @@ -74792,13 +85878,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lockpicks.se", true }, { "lockr.jp", true }, { "locksmith-durbannorth.co.za", true }, - { "locksmith-pasadenatx.com", true }, - { "locksmithalberton24-7.co.za", true }, { "locksmithbalchsprings.com", true }, { "locksmithboksburg.co.za", true }, { "locksmithdearborn.com", true }, { "locksmithdriftwood.com", true }, - { "locksmithedenvale24-7.co.za", true }, { "locksmithedmonds.com", true }, { "locksmithforcarshoustontx.com", true }, { "locksmithgarland-tx.com", true }, @@ -74808,12 +85891,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "locksmithlivoniami.com", true }, { "locksmithmadisonheights.com", true }, { "locksmithmesquitetexas.com", true }, - { "locksmithmidrand24-7.co.za", true }, { "locksmithmissouricity.com", true }, { "locksmithsammamishwa.com", true }, + { "locksmithsanantoniotexas.com", true }, { "locksmithsbluff.com", true }, { "locksmithsbuda.com", true }, { "locksmithscottsdaleaz.com", true }, + { "locksmithservice-houston.com", true }, { "locksmithservice-humble.com", true }, { "locksmithsinsanantoniotx.com", true }, { "locksmithspring.com", true }, @@ -74821,28 +85905,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "locksmithssanmarcostx.com", true }, { "locksmithstaffordtx.com", true }, { "locksmiththewoodlands.com", true }, - { "locksmithunit.cat", true }, - { "locksmithunit.com", true }, - { "locksmithunit.es", true }, + { "locksoflove.org", true }, { "locksport.org.nz", true }, - { "locktonportal.com", true }, { "lockwoodchristmastreefarm.com", true }, - { "locomocosec.com", false }, + { "loco-concepts.nl", true }, + { "loco.gg", true }, { "locomotionds.com", true }, { "locomotiv.tk", true }, { "locomotive.ca", true }, { "locomotiveworks.co.uk", true }, + { "locoroom.com", true }, { "locoserver.net", true }, + { "locspec.com.au", true }, { "locus-dashboard.com", true }, { "locus.ml", true }, { "locus.tk", true }, - { "locusmap.eu", true }, + { "locustvalleyvet.com", true }, { "locutusvader.com", true }, { "lodash.com", false }, { "loddeke.eu", true }, { "lode.li", true }, { "lode.tk", true }, { "lodela.ru", true }, + { "lodestarss.com", true }, { "lodewijkict.nl", true }, { "lodewillems.com", true }, { "lodger.cf", true }, @@ -74853,14 +85938,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lodus.io", true }, { "loekkoopmans.tk", true }, { "loeklommers.nl", true }, + { "loekvormgeving.nl", true }, { "loenshotel.de", true }, + { "loesje.nl", true }, { "loew.de", true }, { "lofirmo.com", true }, { "loforo.com", true }, + { "loft.com.br", true }, { "lofttravel.com", true }, { "loftyideas.ml", true }, { "loftymedia.ca", true }, { "lofw.tk", true }, + { "log.moe", true }, + { "log.pw", false }, { "log4shell.org", true }, { "logactiond.org", true }, { "logal.media", true }, @@ -74876,6 +85966,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logankpaschke.com", true }, { "loganmarchione.com", true }, { "loganparkneighborhood.org", true }, + { "loganpiercepornstar.com", true }, { "loganscene.tk", true }, { "logart.tk", true }, { "logay.com.br", true }, @@ -74883,6 +85974,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logbot.info", true }, { "logcat.info", true }, { "logdoc.tk", true }, + { "loge.fr", true }, { "logement.com", true }, { "logement.tk", true }, { "logentries.com", false }, @@ -74891,19 +85983,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logfile.at", true }, { "logfile.ch", true }, { "logfinish.com", true }, - { "logger-phillipferreira.herokuapp.com", true }, + { "logfro.de", true }, + { "logfurnitureplace.com", true }, + { "logheavenvt.com", true }, { "logic8.ml", true }, { "logical-invest.com", true }, + { "logicalgassolutions.co.uk", true }, { "logicchen.com", true }, - { "logiccircle.ir", false }, { "logicdream.tk", true }, + { "logicgate.com", true }, { "logiciel-entreprise-seurann.fr", true }, + { "logicielscrm.fr", true }, + { "logicintel.com", true }, { "logicio.ch", false }, { "logicio.de", false }, { "logicio.net", false }, { "logicne-hise.si", true }, { "logicnets.com", true }, { "logico.ar", true }, + { "logicsale.com", true }, + { "logicsale.de", true }, + { "logicsale.fr", true }, + { "logicsale.it", true }, { "logicz.top", true }, { "logimap.cz", true }, { "login.corp.google.com", true }, @@ -74915,13 +86016,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "login.ubuntu.com", true }, { "login.yahoo.com", false }, { "logingate.hu", true }, + { "loginsecure.eu", true }, + { "loginvovchyk.ru", true }, { "loginwithmc.com", true }, + { "logipdv.pt", true }, + { "logismarket.com", true }, + { "logismn.gov", true }, { "logisparte.com", true }, { "logitel.de", true }, { "logitheque.tk", true }, { "logitrack.tk", true }, - { "logixtv.com", true }, { "loglineargroup.com", true }, + { "lognetjobs.co.uk", true }, { "logo-vogtland.de", true }, { "logodestekhatti.net", true }, { "logodevir.biz", true }, @@ -74936,22 +86042,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "logon-int.com", true }, { "logopaedie-millian.de", true }, { "logopaedie-sandkrug.de", true }, + { "logopedickyden.cz", true }, { "logopedie-direct.nl", true }, { "logopedietaalrijk.nl", true }, { "logopedista.roma.it", true }, { "logopedistalanni.it", true }, - { "logophiliapress.com", true }, { "logopoeia.com", true }, { "logoprofi.tk", true }, + { "logoprom.fr", true }, + { "logosnet.com.br", true }, { "logosradio.tk", true }, { "logostock.jp", true }, + { "logowik.com", true }, { "logram.io", true }, { "lograr.me", true }, { "logrhythm.com", true }, { "logtalk.org", true }, { "logtenberg.eu", true }, + { "logue.media", true }, { "logue.tk", true }, { "logwise.com", true }, + { "logydice.com", true }, { "logze.nl", true }, { "lohanaflores.com.br", true }, { "loheprobado.com", true }, @@ -74959,18 +86070,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lohmeyer.cc", true }, { "lohnsteuerhilfe-essen.de", true }, { "lohocla.org", true }, + { "lohr.me", true }, { "lohr.net", true }, - { "loi-pinel-bordeaux.fr", true }, { "loic-raymond.fr", true }, { "loichot.ch", false }, { "loiit.ga", true }, - { "loipinelplus.com", true }, { "loire-en-bateau.fr", true }, + { "loirevalley.co", true }, + { "lois-bullion.com", true }, { "lois.cf", true }, { "loisircreatif.net", false }, - { "loisirsdouville.com", true }, - { "lojaacampar.com.br", true }, + { "loja-meltech.com.br", true }, + { "lojaapi.com", true }, { "lojaapoio.com.br", true }, + { "lojabaoshima.com.br", true }, + { "lojaclassicshow.com.br", true }, { "lojadafloresta.pt", true }, { "lojadamimo.com.br", true }, { "lojadanidrea.com.br", true }, @@ -74983,25 +86097,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lojadosirmaos.com.br", true }, { "lojadosomautomotivo.com.br", true }, { "lojaestacaosaopedro.com.br", true }, - { "lojafazendoarte.com.br", true }, + { "lojafilipaper.com.br", true }, { "lojaflordelaranjeira.com.br", true }, { "lojagravataria.com.br", true }, - { "lojahaus.com.br", true }, + { "lojahbk.com.br", true }, { "lojahunamarcenaria.com.br", true }, { "lojak2.com.br", true }, { "lojal19.com.br", true }, { "lojamagicalx.com", true }, - { "lojamascate.com.br", true }, { "lojamoleco.com.br", true }, { "lojamultplick.com.br", true }, { "lojaodo9.com.br", true }, + { "lojapos.eu", true }, + { "lojaprimemed.com.br", true }, { "lojaprojetoagua.com.br", true }, - { "lojaskd.com.br", true }, + { "lojasmary.com.br", true }, { "lojasoulstyle.com.br", true }, { "lojasportmixonline.com.br", true }, { "lojastec.com.br", true }, { "lojasti.com.br", true }, { "lojasvictoria.com.br", true }, + { "lojasvirtuaisesites.com.br", true }, { "lojatema.com.br", true }, { "lojaterrazul.com.br", true }, { "lojatudomi.com.br", true }, @@ -75009,12 +86125,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lojavirtualdopsicopedagogo.com.br", true }, { "lojavirtualinfopaper.com.br", true }, { "lojavisamed.com.br", true }, - { "lojavivacortinas.com.br", true }, { "lojaxo.com.br", true }, + { "lojistaguarani.com.br", true }, { "lojix.com", false }, { "lojj.pt", true }, - { "lokal-speisen.de", true }, - { "lokalna.net", true }, + { "lokace.eu", true }, { "lokan.id", true }, { "loker.by", true }, { "loker.id", true }, @@ -75022,14 +86137,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lokjagruktafoundation.com", true }, { "lokomotivaplzen.cz", true }, { "lokoo.dk", false }, - { "lokusec.com", true }, { "lokys.de", true }, { "lola.by", true }, { "lolacandy.com", true }, { "lolalacita.net", true }, + { "lolalohse.com", true }, { "lolas-vip.com", true }, { "lolaseuropeancafe.com", true }, { "lolbird.tk", true }, + { "lolcats.cat", true }, { "lolchat.tk", true }, { "lolcloud.ru", true }, { "lolcorp.pl", true }, @@ -75038,6 +86154,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loldudes.com", true }, { "lolfunny.tk", true }, { "loli.art", true }, + { "loli.cam", true }, { "loli.com", true }, { "loli.edu.kg", true }, { "loli.gallery", true }, @@ -75053,7 +86170,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lolibrary.org", true }, { "lolic.xyz", true }, { "lolicon.eu", true }, - { "lolicon.info", true }, { "loliel.tk", true }, { "lolifamilies.cf", true }, { "lolifamilies.ga", true }, @@ -75067,8 +86183,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lolifamily.tk", true }, { "lolifox.cf", true }, { "loliloli.moe", true }, + { "loliloli.net", true }, { "loliloli.top", true }, { "lolinfo.ga", true }, + { "lolinya.link", true }, { "lolio.tw", true }, { "loliotero.com", true }, { "lolipops.ga", true }, @@ -75077,9 +86195,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lolivpn.com", true }, { "lolkot.ru", true }, { "lollipopo69.net", true }, - { "lolly.cc", true }, - { "lollybrown.com", true }, { "lollypop.tk", true }, + { "lollysmalls.com", true }, { "lollyteam.tk", true }, { "lolmania.tk", true }, { "lolnet.tk", true }, @@ -75090,36 +86207,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lols.gg", true }, { "lolware.net", true }, { "loma.ml", true }, - { "lomahs.nyc", true }, { "lomaster.tk", true }, { "lomayko.ml", true }, + { "lombard.co.uk", true }, + { "lombard.ie", true }, { "lombardiaeconomy.it", true }, - { "lombri-agro.com", true }, { "lomex.tk", true }, { "lomgo.cf", true }, { "lomgo.ga", true }, { "lomgo.gq", true }, { "lommeregneren.dk", true }, + { "lommers.org", true }, { "lommyfleet.com", true }, + { "lomond.com.au", true }, { "lomuarredi.com", true }, { "lomza.tk", true }, { "lon-so.com", true }, + { "lona.io", true }, { "lonasdigital.com", true }, { "lonavla.tk", true }, { "loncarlyonjenkins.com", true }, + { "london-design.co.uk", false }, + { "london-electricians.com", true }, { "london-mafia.tk", true }, { "london-transfers.com", true }, { "london.dating", true }, { "londoncarpetcleaningltd.co.uk", true }, + { "londonderrynh.gov", true }, + { "londonderrynhfire.gov", true }, { "londonderrynhpd.gov", true }, { "londonelects.org.uk", true }, { "londongynaecologist.co", true }, { "londonhealthcare.ga", true }, { "londonhealthcare.tk", true }, - { "londonindustry.it", true }, { "londonjob.tk", true }, { "londonkan.jp", true }, { "londonkeyholdingcompany.co.uk", true }, + { "londonmoneyman.com", true }, { "londonnorthwesternrailway.co.uk", true }, { "londonpods.co.uk", true }, { "londonpropertymatch.com", true }, @@ -75127,11 +86251,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "londonseedcentre.co.uk", true }, { "londonsoccer.tk", true }, { "londontrivia.gq", true }, + { "londontwpmi.gov", true }, { "londonvetspecialists.vet", true }, - { "londresdecouverte.fr", true }, + { "londonwomensclinic.com", true }, + { "londrihost.com.br", true }, { "londynelliot.com", true }, { "lone-gunman.be", true }, { "lone-wolf.tk", true }, + { "lonelybitcoin.com", true }, { "lonelyhaoss.com", true }, { "lonelyion.com", true }, { "lonelypawn.com", true }, @@ -75146,7 +86273,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lonestarpediatricdental.com", true }, { "lonestarrott.com", true }, { "lonewolftech.ga", true }, - { "long-6.com", true }, { "long-8.com", true }, { "long-9.com", true }, { "long-journey.com", true }, @@ -75165,7 +86291,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "long0556.com", true }, { "long0728.com", true }, { "long0776.com", true }, - { "long0777.com", true }, { "long08.com", true }, { "long0818.com", true }, { "long0877.com", true }, @@ -75182,12 +86307,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "long68.net", true }, { "long688.com", false }, { "long8032.com", true }, - { "longboat.io", true }, + { "longbeachms.gov", true }, + { "longbeachroleplay.de", true }, + { "longboatlocal.com", true }, { "longbridge.hk", true }, + { "longbsants.com", true }, { "longchampgirls.tk", true }, { "longcountyga.gov", true }, { "longenyc.com", true }, { "longest.tk", true }, + { "longevitywi.com", true }, { "longflexing.com", true }, { "longfordlodge.tk", true }, { "longhaircareforum.com", true }, @@ -75196,27 +86325,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "longhorn.id.au", true }, { "longiminus.tk", true }, { "longislandbusiness.info", true }, + { "longislanddigestive.com", true }, { "longlakeny.gov", true }, { "longlanearchitects.co.uk", true }, + { "longlh.vn", true }, { "longlink.tk", true }, { "longlivehongkong.com", true }, { "longma.pw", true }, { "longma168.cn", true }, { "longma168.com", true }, + { "longmeadowma.gov", true }, { "longmelfordswan.co.uk", false }, { "longoconsulting.us", true }, { "longpaddock.qld.gov.au", true }, { "longportpd.org", true }, { "longstride.net", true }, - { "longtaitouwang.com", false }, - { "longtake.ir", true }, + { "longtermcare.gov", true }, { "longtermrentalsportugal.com", true }, { "longviewnc.gov", true }, { "longwoodwrestling.com", true }, { "lonleymoon.tk", true }, { "lonniec.com", true }, { "lonniemason.net", true }, + { "lonokedistrictcourtar.gov", true }, { "lonslai.com", true }, + { "lonza.ch", true }, + { "lonza.com", true }, + { "lonzagroup.net", true }, { "loober.tk", true }, { "look-books.tk", true }, { "look-info.tk", true }, @@ -75230,31 +86365,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lookastic.es", true }, { "lookastic.fr", true }, { "lookastic.ru", true }, + { "lookathernow.com", true }, { "lookatmysco.re", true }, { "lookbetweenthelines.com", false }, { "looker.wang", false }, - { "lookgadgets.com", true }, + { "lookflyfares.com", true }, { "lookie.ml", true }, { "lookitdesign.com", true }, { "lookscanned.io", true }, + { "looksmax.org", true }, { "lookup-dns.net", true }, { "loomi.tv", true }, { "loomis.center", true }, { "loonbedrijfdenboer.nl", true }, + { "loonbedrijfwierda.nl", true }, { "looneymooney.com", true }, { "loonindex.be", true }, - { "loony.info", false }, { "loonylatke.com", true }, + { "loop.co.id", true }, { "loopback.kr", true }, { "loopcore.de", true }, + { "loopgolf.co", false }, + { "loophq.com", true }, { "loopingtag.eu", true }, { "loopingz.com", true }, { "loopkey.com.br", true }, { "loopool.tk", true }, { "looseleafsecurity.com", true }, + { "lootdog.io", true }, { "loothole.com", true }, { "loots.eu", true }, { "lootslot.com", true }, + { "lootstudios.com", true }, { "looxent.com", true }, { "lopendvuurtje.tk", true }, { "lopes.at", true }, @@ -75266,9 +86408,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loqu8.com", true }, { "loquo.com", true }, { "loqyu.co", true }, - { "loqyu.com", true }, { "lor.kharkov.ua", true }, { "loraincountyohio.gov", true }, + { "loraincountyrecorder.gov", true }, { "lorasong.com", true }, { "loratadine10mg.gq", true }, { "lorbooks.tk", true }, @@ -75283,9 +86425,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lorddominion.tk", true }, { "lordfutbol.tk", true }, { "lordgandalf.nl", true }, + { "lordgeorgeanson.com", true }, { "lordgrant.tk", true }, { "lordkrishna.tk", true }, + { "lordlink.net", true }, { "lordmusic.tk", true }, + { "lordofcbd.fr", true }, { "lordofthebrick.com", false }, { "lordofthecraft.tk", true }, { "lordschimney.com", true }, @@ -75299,17 +86444,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lorena-salido.tk", true }, { "lorenadumitrascu.ro", true }, { "lorengraff.net", true }, - { "lorenz-cloud.eu", true }, + { "lorenstudioo.com", true }, { "lorenz-hundler.co", true }, { "lorenzgoossens.be", true }, { "lorenzocampagna.myqnapcloud.com", true }, - { "lorenzocompeticion.com", false }, { "lorenzodallaga.com", true }, { "lorenzodeangelis.tk", true }, + { "lorenzoprinci.com", true }, { "loreofthenorth.com", true }, { "loreofthenorth.net", true }, { "loreofthenorth.nl", true }, - { "lorian.me", true }, { "loricozengeller.com", true }, { "lorimar.bg", true }, { "lorimullins.com", true }, @@ -75320,11 +86464,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lorn.tk", true }, { "lornabenes.com", true }, { "lornategeorge.tk", true }, + { "lornosa.com", true }, { "lorqui.tk", true }, - { "lorrainestreatmentroom.co.uk", true }, { "lorucreative.fi", true }, { "los-diablos.tk", true }, { "los11mandamientos.tk", true }, + { "losangelescarpetcleaning.com", true }, { "losangelesduiattorney.com", true }, { "losangelesprivatejets.com", true }, { "losangelestown.com", true }, @@ -75339,12 +86484,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "losdelapobla.tk", true }, { "losdelcyber.tk", true }, { "losdelsotano.tk", true }, + { "losderover.be", true }, { "losdeshollinadores.es", true }, { "losdingos.tk", true }, { "losdisidentes.tk", true }, { "losdrogatones.tk", true }, { "lose-weight-now.ml", true }, - { "losebellyfat.pro", false }, { "losedata.tk", true }, { "losemperadores.tk", true }, { "loser.wtf", true }, @@ -75358,18 +86503,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "losgringos.tk", true }, { "loshalcones.tk", true }, { "loshogares.mx", true }, + { "losinterrogantes.com", true }, { "losjardines.tk", true }, - { "losjuegosdemesa.online", true }, { "loslegendarios.tk", true }, { "losless.fr", true }, { "loslunesalrock.tk", true }, { "losmaniatikos.tk", true }, { "losmedicamentos.net", false }, + { "losmejoresgadgets.info", true }, { "losmiserables.tk", true }, { "losmolinos.tk", true }, { "losnervios.tk", true }, { "loson.cz", true }, { "losopkos.tk", true }, + { "lospadillas.com", true }, { "lospadrinosmagicos.tk", true }, { "lospegotes.tk", true }, { "lospozuelos.tk", true }, @@ -75378,40 +86525,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "losrso.tk", true }, { "loss.no", true }, { "lossaicos.tk", true }, - { "lossandthemourningafter.com", true }, + { "lossandthemourningafter.com", false }, + { "losseo.net", true }, { "lost-bit.tk", true }, { "lost-illusions.tk", true }, - { "lost-in-place.com", true }, { "lost-perdidos-hiatus.tk", true }, { "lostandfound.mu", true }, { "lostandfoundsoftware.com", true }, { "lostarkstats.com", true }, { "lostarq.com", true }, + { "lostbubblegame.com", true }, { "lostcork.com", true }, { "lostcosmonaut.cc", true }, { "lostfield.tk", true }, + { "lostfilm-tv.ru", true }, { "losthighway.tk", true }, { "lostinfood.co.uk", true }, { "lostinlove.tk", true }, { "lostinside.tk", true }, { "lostinweb.eu", false }, { "lostkeys.co.uk", true }, + { "lostluma.net", true }, { "lostproperty.org", true }, { "lostprophetschile.tk", true }, - { "lostroyanos.tk", true }, { "lostsandal.com", true }, { "lostsandal.io", true }, { "lostserial.cf", true }, { "lostserver.com", true }, + { "loststudios.net", true }, { "losttv.tk", true }, { "lostwithdan.com", true }, { "lostwoods.tk", true }, + { "losviajesdequimyelena.com", true }, { "losyandex.tk", true }, { "loszucoz.tk", true }, { "lotc.cc", true }, { "loteamentoabertocapivari.com.br", true }, { "lotekk.gq", true }, { "lotereiki.tk", true }, + { "loteriasdominicana.com.do", true }, { "lothai.re", true }, { "lothlorien.ca", false }, { "lotimena.com", true }, @@ -75420,6 +86572,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lotnonline.com", true }, { "lotnonline.net", true }, { "lotnonline.nl", true }, + { "lotoquine.io", true }, { "lotos-ag.ch", true }, { "lotro-wiki.com", true }, { "lotto.com", true }, @@ -75427,9 +86580,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lottologics.com", true }, { "lottos.com.au", true }, { "lottosonline.com", true }, - { "lottospielen24.org", false }, { "lottothaipro.com", true }, + { "lotusbook247.com", true }, + { "lotusdiving.net", true }, { "lotuselise.tk", true }, + { "lotushouse.yoga", true }, { "lotusweb.tk", true }, { "lotuswebsolutions.tk", true }, { "lotw.de", true }, @@ -75439,46 +86594,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "louboutin.tk", true }, { "louboutinshoessale.tk", true }, { "loud-dragon.tk", true }, - { "loudclear.com.au", true }, + { "loudavymkrokem.cz", true }, + { "loudcloudhealth.com", true }, { "louddesignstudios.com", true }, { "louderfaster.co.uk", true }, { "loudersent.ga", true }, - { "loudhills.pl", true }, + { "loudly.com", true }, { "loudmouth.tk", true }, + { "loudontn911.gov", true }, { "louerunhacker.fr", true }, + { "louest.ch", true }, { "loueurmeublegestion.expert", true }, { "louhomeworkouts.com", true }, { "louisa.tk", true }, + { "louisacounty.gov", true }, { "louisacountyia.gov", true }, - { "louisahoppe.de", true }, { "louisapolicefoundation.com", true }, { "louisapolicefoundation.org", true }, - { "louiscap.co", true }, { "louisdefunes.tk", true }, { "louisefar.tk", true }, - { "louiselaliberte.ca", true }, { "louisemisellinteriors.co.uk", true }, { "louiserutkowski.tk", true }, { "louisianalifesciences.gov", true }, { "louisianamo.gov", true }, + { "louisianamusicfactory.com", true }, { "louisiananetzero.gov", true }, + { "louisiananursery.com", true }, + { "louisroyer.ovh", true }, { "louisville.gov", true }, { "louisvillecarguys.com", true }, { "louisvilleconnections.ga", true }, - { "louisvillefibroids.com", true }, { "louisvillefilmfestival.org", true }, { "louisvillene.gov", true }, + { "louisvilleohio.gov", true }, { "louiza.tk", true }, { "loujaxx.net", true }, { "loukas-stoltz.fr", true }, { "loukkos.ma", true }, - { "louloulovestreats.com", true }, { "loune.net", true }, { "lounge.guide", true }, { "loungecafe.net", true }, { "loungecafe.org", true }, + { "loungepass.com", true }, { "lourdesigns.tk", true }, + { "lourencolar.com", true }, { "lourissa.tk", true }, + { "lourorestaurante.pt", true }, { "loursaint.tk", true }, { "lousingchaphu.com", true }, { "lousoyolos.fr", true }, @@ -75493,29 +86654,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "love-sent.com", true }, { "love-spells-tarot.com", true }, { "love4musik.com", true }, - { "love4taylor.com", true }, { "love4taylor.eu.org", true }, { "love4taylor.me", false }, { "love4taylor.xyz", true }, { "loveai.org", false }, { "loveamber.me", true }, { "loveandloyalty.se", true }, + { "lovebabo.com", true }, { "lovebeingsexy.co.uk", true }, { "lovebigisland.com", true }, { "lovebirdhut.tk", true }, { "lovebo9.com", true }, { "lovebo9.net", true }, - { "lovebooks.space", true }, + { "lovebombed.wtf", true }, { "lovebowin.com", true }, { "lovebug.beauty", true }, { "lovechester.com", true }, { "lovecrystal.co.uk", true }, { "lovecsnov.tk", true }, { "lovedaleschool.tk", true }, + { "lovedepot.com", true }, { "lovedutch.tk", true }, - { "loveforinfo.com", true }, { "lovegpl.com", true }, + { "lovehairstyles.com", true }, { "loveholidays.com", true }, + { "loveinabox.pt", true }, { "loveismore.de", false }, { "loveismore.es", false }, { "loveismore.eu", false }, @@ -75530,9 +86693,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loveitclickitbuyit.com.au", true }, { "lovejms.com", true }, { "lovejoymethodist.org", true }, + { "lovelandelec.com", true }, { "lovelee.tk", true }, { "lovelens.li", false }, { "loveless.ml", true }, + { "lovelive-anime.jp", true }, { "lovelive-anime.tk", true }, { "lovelive.us", true }, { "lovelivewiki.com", true }, @@ -75551,12 +86716,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lovemesomegadgets.com", true }, { "lovemiku.info", true }, { "lovemoon.tk", true }, - { "lovemoon.xyz", true }, { "lovemybubbles.com", true }, { "lovenet.tk", true }, { "loveni.me", true }, { "lovenwishes.com", true }, - { "loveph.one", true }, { "loveplanets.tk", true }, { "lovepremierevents.com", true }, { "lover-bg.com", true }, @@ -75566,22 +86729,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "loverussiangirls.tk", true }, { "loveshop.pt", true }, { "lovesmagical.com", false }, + { "lovesolutiondua.com", true }, { "lovesquirting.com.br", true }, { "lovessentials.com", true }, + { "lovetablecloths.co.uk", true }, { "lovetarot.jp", true }, { "lovethatmakeup.tk", true }, { "lovetheprint.co.za", true }, { "lovetime.co.il", true }, { "lovetowork.tk", true }, + { "loveuno.com", true }, { "loveweddingphotosandfilm.co.uk", false }, - { "loveyouhome.ua", true }, - { "loveysa.ch", false }, { "lovg.ren", true }, + { "lovi.at", true }, { "lovin.ga", true }, { "lovin.tk", true }, { "loving-house.com", true }, + { "lovingbody.yoga", true }, { "lovink.net", true }, - { "lovizaim.ru", true }, { "lovlyhorses.tk", true }, { "lovlyluna.net", true }, { "lovlyluna.org", true }, @@ -75593,7 +86758,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lowcosthost.cf", true }, { "lowcostivf.net", true }, { "lowcostwire.com.au", true }, - { "lowendpay.com", true }, + { "lowell85.com", true }, + { "lowendblog.com", true }, + { "loweporn.com", true }, { "lower-level.tk", true }, { "lower.nu", true }, { "lowerchancefordtwppa.gov", true }, @@ -75601,31 +86768,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lowermydrinking.com", true }, { "lowerpricefinder.com", true }, { "lowerthetone.com", true }, - { "lowies.com.au", true }, + { "lowesprotect.com", true }, + { "lowlab.io", true }, { "lowlevelmusic.com", true }, { "lowmagnitude.com", true }, { "lowndes-al.gov", true }, { "lowriderz.tk", true }, { "lowsec.space", true }, { "lowson.ca", true }, + { "lowtempind.com", true }, { "loxdonmarkets.com", true }, { "loyaleco.it", true }, { "loyaliplaw.com", true }, { "loyaltech.ch", true }, { "loyaltech.tk", true }, - { "loyalty-connections.co.uk", false }, { "loyaltyreviewers.ga", true }, - { "loyd.co", true }, { "loyisa.cn", true }, { "loyloy.net", true }, - { "loyverse.com", true }, + { "loyolahs.edu", true }, { "loyverse.town", true }, { "lozanoimpresores.com", true }, { "lozhka-mernaya.tk", true }, { "lp-support.nl", false }, { "lp177.fr", true }, - { "lpacademy.com.br", true }, - { "lpasteur.info", true }, + { "lpc.fun", true }, { "lpcd-lafla.gov", true }, { "lpcdops-lafla.gov", true }, { "lpchemicalsolution.tk", true }, @@ -75637,30 +86803,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lphispano.tk", true }, { "lpiem.fr", true }, { "lpkosovo.tk", true }, + { "lplbullets.com", true }, { "lpmkonji.cf", true }, - { "lprr.fr", true }, + { "lpnjobsite.com", true }, + { "lpnm.us", true }, { "lps.in.ua", true }, { "lpt-nebreziny.cz", true }, { "lpt-nebreziny.eu", true }, - { "lq.hr", true }, + { "lptami.gov", true }, { "lqa.org.uk", true }, { "lqd.plus", true }, { "lqhi.cn", true }, + { "lqy.me", true }, { "lr-expert.ru", true }, { "lra-cloud.de", true }, + { "lrbm.com", true }, { "lrc.cn", true }, { "lrcr.ch", false }, { "lrdo.net", true }, + { "lrfix.com", true }, { "lriese.ch", true }, + { "lrn.com", true }, { "lroc.com.au", true }, - { "lrs.lt", true }, + { "lrq.icu", true }, { "lrssystems.com", true }, { "lrumeq.com", true }, { "lrv-grobbendonk.tk", true }, { "ls-alarm.de", true }, { "ls-rp.es", true }, - { "lsal.fr", true }, - { "lsal.me", true }, { "lsbricks.com", true }, { "lsbttiq.org", true }, { "lsc-dillingen.de", true }, @@ -75668,17 +86838,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lsc.ee", true }, { "lsc.moe", true }, { "lscache.de", true }, + { "lsd.cat", true }, { "lsdev.biz", true }, + { "lsfnet.org", true }, { "lsg2021acm.com", true }, { "lshiy.com", true }, - { "lskl.fi", true }, - { "lsl.eu", true }, + { "lshydrogenmethane.cz", true }, + { "lskgreenacquisition.com", true }, + { "lskgreencomponent.com", true }, + { "lskgreendevelop.com", true }, + { "lskgreenenergy.com", true }, + { "lslbc.gov", true }, { "lspdonline.gq", true }, { "lsquo.com", true }, { "lsscreens.de", true }, { "lstlx.com", true }, { "lstma.com", true }, { "lstu.tk", true }, + { "lsupg.com", true }, { "lsxteam.tk", true }, { "lsy.cn", true }, { "lsys.ac", true }, @@ -75688,14 +86865,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ltaake.com", true }, { "ltailshort.tk", true }, { "ltba.org", true }, + { "ltcfeds.com", true }, { "ltcwaterwijk.nl", true }, { "ltdev.im", true }, { "ltecode.com", true }, { "ltgc.cc", true }, + { "lthcastings.com", false }, { "ltheinrich.de", true }, { "ltib.com.au", true }, { "ltime.ml", true }, - { "ltkgrp.com", true }, { "ltlec.cn", true }, { "ltlec.com", false }, { "ltlec.net", true }, @@ -75703,35 +86881,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ltls.org", true }, { "ltmw.xyz", true }, { "ltn-tom-morel.fr", true }, + { "ltn.pw", true }, + { "lto.ru", true }, { "ltonlinestore.in", false }, { "ltransferts.com", true }, { "ltservers.net", true }, - { "ltt-europe.com", true }, + { "lty.best", true }, + { "lty.name", false }, { "lty.space", true }, { "ltycode.org", true }, { "lu-rp.es", true }, { "lu.search.yahoo.com", false }, { "lu2343.com", true }, { "luacustica.tk", true }, + { "luademelsexshop.com", true }, { "lual.tk", true }, - { "luan.ma", true }, { "luanvancaohoc.com", true }, { "luanxt.tk", true }, - { "luatan.com", true }, { "luathungson.vn", true }, { "lubar.me", true }, - { "lubbockyounglawyers.org", true }, { "lubersacr.com", true }, + { "luberto.art", true }, { "lubosabo.tk", true }, { "lubot.net", true }, { "lubotodorov.com", true }, { "luc-nutrition.tk", true }, { "luc-oberson.ch", false }, { "luc.li", true }, + { "luca-app.de", true }, { "luca-steeb.com", true }, { "lucacastelnuovo.nl", true }, { "lucaconrads.de", true }, - { "lucade.ddns.net", true }, + { "lucade.ddns.net", false }, { "lucafontana.net", true }, { "lucafrancesca.me", true }, { "lucakrebs.de", true }, @@ -75743,15 +86924,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lucasbergen.ca", true }, { "lucascantor.com", true }, { "lucascaton.com.br", true }, - { "lucascodes.com", true }, { "lucascosta-ido.ml", true }, { "lucascountyohiovotes.gov", true }, { "lucasdamasceno.com", true }, { "lucasem.com", true }, - { "lucasferraz.com.br", true }, { "lucasfrinktbe.com", true }, { "lucasg.org", true }, { "lucasgymnastics.com", true }, + { "lucasjag.com.br", true }, { "lucaslarson.net", true }, { "lucasmateus.ga", true }, { "lucciolachile.com", true }, @@ -75763,6 +86943,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lucesledsbaratas.shop", true }, { "luchalibre.tk", true }, { "luchandro.tk", true }, + { "luchshie-experty.top", false }, { "luchthavenmaastricht.nl", true }, { "luchtspoor.nl", true }, { "lucia-art.cf", true }, @@ -75771,13 +86952,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lucid-reality.ch", true }, { "lucidea.com", true }, { "lucidframeworks.com", true }, - { "lucidlight.de", true }, + { "lucidlabs.in", true }, { "lucidlink.com", true }, - { "lucidlogs.com", true }, { "lucidmedia.co.nz", true }, { "lucidoccult.com", true }, - { "lucidpacket.com", true }, { "lucidplumbing.com.au", true }, + { "lucidya.com", true }, { "lucie-parizkova.cz", true }, { "lucielavickova.com", true }, { "luciferblog.tk", true }, @@ -75788,6 +86968,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luciobarcellona.it", true }, { "luciogelsi.com", true }, { "lucklesslovelocks.com", true }, + { "luckmoneymyth.com", true }, { "lucko.me", true }, { "luckperms.net", true }, { "lucksh.ga", true }, @@ -75799,27 +86980,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lucky-time.tk", true }, { "lucky13strategies.com", true }, { "luckyabonent.ml", true }, + { "luckybeantravel.com", true }, { "luckyblockland.fr", true }, { "luckycasino.se", true }, { "luckycastles.co.uk", true }, + { "luckycharms.com", true }, { "luckycloud.de", true }, { "luckydag.com", true }, { "luckydoglodge.net", true }, + { "luckyedward.com", true }, { "luckyemail.ml", true }, { "luckyfrog.hk", true }, { "luckymice.ml", true }, { "luckypunks.org", true }, { "luckyrent.tk", true }, { "luckystorevn.com", true }, + { "luckyways.com", true }, { "luckyxf.com", true }, + { "lucloud.top", true }, { "luclu7.fr", true }, { "lucorautopartes.com", true }, - { "lucreds.com", true }, { "lucschiltz.com", true }, { "luctam.com", true }, - { "lucy.science", true }, { "lucychan.tk", true }, - { "lucycorn.com", true }, { "lucyhancock.tech", true }, { "lucymontebello-arte.com", true }, { "lucyparsonslabs.com", true }, @@ -75828,7 +87011,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luda.me", true }, { "ludasmith.co.uk", true }, { "lude.tk", true }, - { "ludejo.eu", true }, { "ludek.biz", true }, { "luden.tk", true }, { "ludika.tk", true }, @@ -75846,13 +87028,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ludothek-burgdorf.ch", true }, { "ludovic-frank.fr", true }, { "ludovic-muller.fr", true }, + { "ludovic.com.br", true }, { "ludovicfernez.com", true }, + { "ludovicozitelli.it", true }, { "ludum-polus.xyz", true }, { "ludum.pl", true }, { "ludunwayoo.com", true }, { "ludwig.im", true }, + { "ludwiggrill.de", true }, { "ludwigjohnson.se", true }, { "ludwigpro.net", true }, + { "ludwigsburger-brauhaus.de", true }, { "luedeke-bremen.eu", true }, { "lueersen.homedns.org", true }, { "luehne.de", true }, @@ -75865,23 +87051,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luftbild-siegerland.de", true }, { "luftfilterbegehren.at", true }, { "luftreiniger.biz", true }, - { "lufu.io", true }, { "lugandbezel.com", true }, { "lugaresturisticosdeguatemala.ga", true }, { "luggagecare.com", true }, - { "luggagechoices.com", true }, - { "luggagehero.com", true }, { "lugimax.com", true }, { "luginbuehl.be", true }, { "luginbuehl.eu", true }, { "lugobama.tk", true }, { "lugros.tk", true }, { "lugui.in", true }, - { "luhn.be", true }, { "lui.vn", true }, - { "luigialtieri.com", true }, + { "luijken-naturephotography.com", true }, { "luijten.it", true }, + { "luijten.net", true }, { "luis-portfolio.es", true }, + { "luis.ee", true }, + { "luis.fi", true }, { "luisa-birkner.de", true }, { "luisafernandapenuela.com", true }, { "luisanalopilatogrecia.tk", true }, @@ -75890,28 +87075,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luisbustamante.mx", true }, { "luisfreire.ml", true }, { "luisillo.tk", true }, - { "luismaier.de", true }, + { "luisjosesaldana.com", true }, { "luismiguelcolombia.tk", true }, { "luisnavarrosl.tk", true }, { "luisnet.tk", true }, { "luisrubiqwe.ml", true }, - { "luissotodesign.com", true }, { "luisv.me", true }, + { "luisvmf.com", true }, + { "luisvmf.tk", true }, { "luisyr.com", true }, { "luiza-fashion.com", true }, { "luiza.ga", true }, + { "luizafigueiredo.com.br", true }, { "luizkowalski.net", true }, { "luje.net", true }, { "luje.nl", true }, { "lujin.ml", true }, { "luk.earth", true }, { "luk.photo", true }, - { "lukacskrem.hu", true }, { "lukas-gorr.de", true }, { "lukas-meixner.com", true }, { "lukas-schauer.de", true }, { "lukas-webdesign.tk", true }, { "lukas.im", true }, + { "lukas21.com", true }, { "lukas2511.de", true }, { "lukasapetra.com", true }, { "lukasberan.com", true }, @@ -75931,19 +87118,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lukaswiden.com", true }, { "lukaszczyk.de", true }, { "lukaszderlatka.pl", true }, - { "lukasztkacz.com", true }, { "lukaszuk.pl", true }, { "lukaszwojcik.com", true }, { "lukaszwojcik.net", true }, + { "lukatz.de", true }, { "luke-hacks.com", true }, - { "luke.ch", true }, { "luke.id", true }, { "luke6887.me", true }, { "lukeandjesse.wedding", true }, { "lukeistschuld.de", true }, { "lukekuza.com", true }, { "lukekuza.me", true }, + { "lukem.eu", true }, { "lukem.net", true }, + { "lukeplant.me.uk", true }, { "luker.org", true }, { "lukersallamericanstorage.com", true }, { "lukersstorage.com", true }, @@ -75952,12 +87140,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lukesbouncycastlehire.com", true }, { "lukestert.com", true }, { "lukesutton.info", true }, + { "lukeswiki.eu", true }, + { "luketscharke.com", true }, { "lukezweb.tk", true }, { "lukin.ga", true }, - { "lukinno.ml", true }, { "lukka.tk", true }, - { "lukloveswhisky.pl", true }, { "lukmanulhakim.id", true }, + { "lukolab.lt", true }, { "lukonet.com", true }, { "luksusy.pl", false }, { "lukullpizza.de", true }, @@ -75965,23 +87154,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lullabycandles.es", true }, { "lullugun.net", true }, { "luls.tk", true }, + { "luluchupornstar.com", true }, { "luludapomerania.com", true }, { "lulugold.ba", true }, - { "lum.sa.it", true }, { "lumacurve.com", true }, + { "lumaesthetic.co.uk", true }, + { "lumapr.com", true }, { "lumbardhi.tk", true }, { "lumbercartel.ca", true }, { "lumberjackman.tk", true }, { "lumbre-encendedores.com", true }, { "lumchan.tk", true }, + { "lumenapp.com", true }, + { "lumenore.com", false }, { "lumentell.us", true }, { "lumer.tech", true }, { "lumi.com", true }, - { "lumi.pw", true }, { "lumien.net", true }, { "lumieredesoy.com", true }, { "lumieresurlourdes.com", true }, - { "luminaire-mobilier-design.be", true }, { "luminaire.fr", true }, { "luminal-creation.com", true }, { "luminaproject.ml", true }, @@ -75989,9 +87180,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lumindigital.com", false }, { "lumineled.se", true }, { "lumingze.eu.org", true }, + { "luminsmart.com", true }, { "lumitop.com", true }, + { "lumixtar.com", true }, { "lumizor.com.ua", true }, { "lummi-nsn.gov", true }, + { "lummihealth.gov", true }, { "lumminary.com", true }, { "lumoa.me", true }, { "lumoria.eu", true }, @@ -75999,14 +87193,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lumpenrock.tk", true }, { "lumpov.com", true }, { "lumpy.ga", true }, - { "lums.se", true }, + { "lumsa.university", true }, { "lumsdens.ga", true }, { "lumus-grafikdesign.de", true }, { "lumweb.tk", true }, - { "lumy.bzh", true }, { "luna-corazon.net", true }, { "luna-love.net", true }, - { "luna-zen.fr", true }, { "luna.ro", true }, { "lunaballoonclub.com.au", true }, { "lunaburner.ml", true }, @@ -76015,20 +87207,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lunadea.tk", true }, { "lunademiel.org", true }, { "lunafag.ru", true }, - { "lunai.re", true }, - { "lunakit.org", true }, + { "lunagiftables.com", true }, + { "lunagrill.com", true }, { "lunalove.de", true }, { "lunalovely.net", true }, + { "lunaluna.com", true }, { "lunalya.de", true }, { "lunanova.moe", true }, { "lunaonline.tk", true }, { "lunapps.com", true }, { "lunar6.ch", false }, { "lunares.pl", true }, - { "lunaretna.com", true }, { "lunarflake.com", true }, { "lunarhost.cf", true }, - { "lunaribes.ch", false }, + { "lunaribes.ch", true }, { "lunarlog.com", true }, { "lunarshark.com", true }, { "lunarsoft.net", true }, @@ -76037,17 +87229,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lunascope.ru", true }, { "lunasqu.ee", true }, { "lunastrail.com", true }, - { "lunaticminx.com", true }, - { "lunchrush.com", true }, + { "luncfreak.com", true }, + { "lund.se", true }, { "lundlist.net", true }, { "lundscape.com", true }, { "lune-indigo.ch", false }, + { "lune.gay", true }, { "lunekes.com", true }, { "lunenburgva.gov", true }, { "lunepieters.co.za", true }, { "lunextd.com", true }, { "lungta.pro", true }, + { "lunguflorin.ro", true }, { "lungvictorycarpet.com", true }, + { "luniak.net", true }, { "lunidea.ch", false }, { "lunight.ml", true }, { "lunite.net", true }, @@ -76055,6 +87250,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lunivertdelyne.fr", true }, { "lunix.io", true }, { "lunk.it", true }, + { "lunlixiaozhan.icu", true }, { "luntadila.ga", true }, { "lunulanails.nl", true }, { "luochunhui.com", true }, @@ -76062,6 +87258,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luoh.cc", true }, { "luoh.me", true }, { "luohua.im", true }, + { "luojan.com", true }, { "luoli.one", true }, { "luoliguan10.com", true }, { "luoliguan11.com", true }, @@ -76079,16 +87276,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luongvu.com", false }, { "luongyen.com", true }, { "luoshifeng.com", true }, + { "luotianyi.online", true }, { "luowu.cc", true }, { "luoxingyu.ml", true }, { "lupa.cz", true }, + { "lupakode.com", true }, { "luparacoes.com.br", true }, { "lupecode.com", true }, { "lupinencyclopedia.com", true }, - { "lupinenorthamerica.com", true }, { "lupnix.org", true }, { "lupocattivoblog.com", true }, - { "lupold.de", true }, + { "luppa.loan", true }, { "lupriflex.com", true }, { "luqsus.pl", true }, { "luripump.se", true }, @@ -76100,31 +87298,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lushka.al", true }, { "lushnikov-alex.ru", true }, { "lushnja.tk", true }, + { "lusignolo.com", true }, { "lusis.fr", true }, { "lusitom.com", true }, - { "luska.cz", true }, - { "lusoforma.com", true }, + { "luso-livros.net", true }, { "lusoft.cz", true }, + { "lusometeo.com", true }, { "lusosider.pt", true }, { "lusson.fr", true }, + { "lust-lingerie.com", true }, { "lust.works", true }, { "lustanslakejer.tk", true }, { "lusteniny.cz", true }, + { "lustgarten.org", true }, + { "lustiger-kellner.de", true }, { "lustigetweets.at", true }, { "lustin.fr", true }, { "lustrecloud.art", true }, { "lustro.com.sa", true }, - { "lustrum.ch", true }, { "lusynth.com", false }, { "lut.im", true }, { "luteijn.biz", true }, { "luteijn.cloud", true }, { "luteijn.email", true }, - { "luteijn.pro", true }, { "lutesite.tk", true }, { "lutherus.tk", true }, { "lutify.me", true }, - { "lutizi.com", false }, { "lutoma.org", true }, { "lutricia.tk", true }, { "lutruwita.com", true }, @@ -76132,47 +87331,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luukdebruincv.nl", false }, { "luukklene.nl", true }, { "luukuton.fi", true }, + { "luuppi.fi", true }, { "luv-scent.com", true }, { "luv.asn.au", true }, { "luv2watchmycam.com", true }, { "luvare.com", true }, { "luvbridal.com.au", true }, { "luvey.com", true }, - { "luvitpatna.com", false }, { "luvmihome.com", true }, { "luvscent.com", true }, { "lux-house.tk", true }, - { "lux.com.de", true }, { "luxanos.com", true }, { "luxarchive.tk", true }, { "luxaterra.com", true }, - { "luxcraft.eng.br", true }, + { "luxcraft.eng.br", false }, { "luxden.com", true }, { "luxe-in.gr", true }, { "luxe.digital", true }, { "luxebadkameraccessoires.nl", true }, - { "luxeblades.com", true }, { "luxedentalfl.com", true }, { "luxedition.ru", false }, { "luxegram.co", true }, - { "luxegram.co.za", true }, { "luxehomecompany.com", true }, { "luxelyhome.com", true }, { "luxemburgsite.tk", true }, { "luxeturf.com.au", true }, { "luxfosdecoenterprise.com", true }, { "luxhome.tk", true }, + { "luxinfine.su", true }, { "luxinmo.com", true }, { "luxonengineering.com", true }, { "luxonmx.com", true }, { "luxosemimos.com.br", true }, - { "luxoticlingerieandswimwear.com", true }, + { "luxoticlingerieandswimwear.com", false }, { "luxplay.com.tw", true }, { "luxsat.tk", true }, { "luxsci.com", true }, { "luxstil.ga", true }, { "luxur.is", true }, - { "luxurydistribution.cz", true }, + { "luxure.cl", true }, + { "luxuryandexecutivetravel.co.uk", true }, { "luxurydress.tk", true }, { "luxuryfashion.hu", true }, { "luxurygifts.tk", true }, @@ -76185,28 +87383,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "luxuryhomeusa.tk", true }, { "luxuryhous.ru", true }, { "luxuryislandtrips.com", true }, - { "luxuryitaly.co.id", true }, { "luxurynsight.net", false }, { "luxuryoutbacktours.com.au", true }, + { "luxuryportal.net", true }, { "luxuryspeed.tk", true }, { "luxurystays.in", true }, { "luxurythatlasts.com", true }, + { "luxurywatchesworldwide.com", true }, { "luxuryweddingsindonesia.com", true }, { "luxushair.com", true }, - { "luxusnivoucher.cz", true }, - { "luxusnyvoucher.sk", true }, { "luxusy.pl", true }, + { "luxuszugreisen.info", true }, { "luxvacuos.net", true }, { "luxwatch.com", true }, { "luyckx.net", true }, { "luyungterd.com", false }, - { "luzat.com", true }, + { "luzat.com", false }, { "luzfaltex.com", true }, { "luzi-type.ch", true }, { "luzica.tk", true }, { "lv.lk", true }, { "lv.search.yahoo.com", false }, { "lv0.it", false }, + { "lv5.top", true }, { "lvcshu.com", true }, { "lvdgroup-innov8.com", true }, { "lvdr.tech", true }, @@ -76215,11 +87414,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lvftw.com", true }, { "lvg-heidelberg.info", true }, { "lvguitars.com", true }, + { "lvkasz.us", true }, + { "lvkaszus.pl", true }, + { "lvlv.cf", true }, { "lvmoo.com", true }, { "lvna.capital", true }, { "lvnacapital.com", true }, { "lwb.pt", true }, { "lwd-temp.top", true }, + { "lwems.co.uk", true }, { "lwis.me", true }, { "lwisa.ma", true }, { "lwl-foej-bewerbung.de", true }, @@ -76228,38 +87431,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lwqwq.com", true }, { "lwsl.ink", true }, { "lx-blog.cn", true }, + { "lx-is.lu", true }, { "lxai.net", true }, { "lxd.cc", true }, + { "lxd.tw", true }, + { "lxhentai.org", true }, { "lxiii.eu", true }, { "lxiv.eu", true }, { "lxn.re", true }, { "lxnchan.cn", true }, + { "lxshowcnc.com", true }, { "lxx4380.com", true }, { "lxx77.com", true }, + { "ly-nux.fr", true }, { "lyam.fr", true }, + { "lyanaprintable.com", true }, { "lyap-lyandiya.ga", true }, { "lyax.be", true }, + { "lycan-fitness.com", true }, { "lycan.me", true }, { "lycaonsec.com", true }, + { "lyceum.lk", true }, { "lychankiet.name.vn", false }, - { "lyclub.vn", true }, { "lycly.me", true }, + { "lydianibley.com", true }, { "lydiawebfans.tk", true }, { "lydudlejning.net", true }, { "lyfbits.com", true }, + { "lyfepyle.com", true }, { "lyftrideestimate.com", true }, + { "lyftservice.se", true }, { "lyklasmidur.is", true }, { "lykope.com", true }, { "lyla-pressing.com", true }, - { "lylares.com", false }, { "lyme-regis-accommodation.co.uk", true }, { "lymia.moe", true }, { "lymiahugs.com", true }, { "lyna.ml", true }, - { "lynamhomeloans.com.au", true }, + { "lyncag.org", true }, { "lyndhurstohio.gov", true }, { "lyndo.ga", true }, - { "lyndonhealthy.com", true }, { "lyndontownshipmi.gov", true }, { "lynero.dk", true }, { "lyness.io", true }, @@ -76268,34 +87479,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lynho.com.br", true }, { "lynk.hopto.org", true }, { "lynkmi.com", true }, + { "lynnbosten.nl", true }, + { "lynnco.com", true }, { "lynndye.com", true }, { "lynnejeancleaning.com", true }, { "lynnellneri.com", true }, { "lynnesbian.space", true }, { "lynnfieldhigh97.com", true }, + { "lynnfieldma.gov", true }, { "lynnlaytonnissanparts.com", true }, { "lynnvartan.com", true }, - { "lynrudinternational.com", true }, { "lynth.io", true }, { "lynthium.com", true }, { "lynwilliams.com", true }, { "lynwoodca.gov", true }, - { "lynx.co.th", true }, + { "lynx-webservice.com", true }, { "lynx.nl", true }, + { "lynxbroker.com", true }, { "lynxbroker.cz", true }, { "lynxbroker.pl", true }, { "lynxbroker.sk", true }, - { "lynxpro.nl", true }, { "lynxriskmanager.com", true }, { "lyodiet.it", true }, { "lyon-interactive.com", true }, { "lyon-synergie.com", true }, { "lyonelkaufmann.ch", false }, - { "lyonl.com", true }, + { "lyonliving.com", true }, + { "lyonsbytes.com", true }, { "lyontwp-higginsmi.gov", true }, { "lyradhealth.com", true }, + { "lyrae.de", true }, { "lyrenhex.com", true }, { "lyrex.net", true }, + { "lyric.co.uk", true }, { "lyrica.systems", true }, { "lyrical-nonsense.com", true }, { "lyricfm.com", true }, @@ -76305,11 +87521,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lyricsroll.com", false }, { "lyricsupdater.tk", true }, { "lyriksidan.ga", true }, + { "lyrique.ch", true }, { "lys.ch", false }, { "lysbed.com", true }, { "lyscnd.com", true }, { "lysel.net", true }, { "lysergion.com", true }, + { "lysethcreation.com", true }, { "lyst.co.uk", true }, { "lyteclinic.com", false }, { "lytkins.ru", true }, @@ -76320,30 +87538,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "lyuly.com", true }, { "lyx.dk", true }, { "lyxel-staging.tk", true }, + { "lz.lv", true }, { "lz.sb", true }, { "lz898.com", true }, { "lzcreation.com", true }, { "lzqii.cn", true }, { "lzwc.nl", true }, + { "lzwwebsite.tk", true }, { "lzzr.me", true }, { "m-16.ml", true }, + { "m-1framingsubsinc.com", true }, { "m-22.com", true }, - { "m-a-i-l.us", true }, { "m-a-s.cc", true }, { "m-ast.de", true }, { "m-beshr.tk", true }, + { "m-cert.fr", true }, { "m-ch.ml", true }, { "m-chemical.com.hk", true }, { "m-em.co.jp", true }, + { "m-enterprise.net", true }, { "m-epigrafes.gr", true }, { "m-exchange.ml", true }, + { "m-fashion.com.ua", true }, { "m-gaming.tk", true }, { "m-generator.com", true }, { "m-h-b.fr", true }, { "m-hydravlika.com.ua", true }, - { "m-idav.ru", true }, { "m-idea.jp", true }, { "m-monitor.pl", true }, + { "m-mts.ru", true }, + { "m-nasiri.com", true }, { "m-net.de", true }, { "m-o-v-i-e.tk", true }, { "m-o-x.de", true }, @@ -76353,7 +87577,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m-team.cc", true }, { "m-warrior.tk", true }, { "m.ac", true }, - { "m.directory", false }, { "m.facebook.com", true }, { "m.mail.ru", true }, { "m.me", true }, @@ -76361,12 +87584,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m08.co", true }, { "m0t0k1ch1.com", true }, { "m0v0.com", true }, + { "m1-garand-rifle.com", true }, { "m132.eu", true }, { "m134.eu", true }, + { "m1d1.black", true }, { "m1gun.tk", true }, { "m1hax.uk", true }, { "m23cal.eu", true }, { "m24o.net", true }, + { "m2designer.com.br", true }, + { "m2dleadership.com", true }, + { "m2epro.com", true }, { "m2h-fiscaliste.fr", true }, { "m2i-api.com", true }, { "m2icondb.com", true }, @@ -76375,9 +87603,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m2jest1c.ml", true }, { "m2os.com", true }, { "m2tm.fr", true }, + { "m3-software.com", true }, { "m360.com.ph", true }, { "m36533.com", true }, + { "m3globalresearch.com", true }, { "m3ntor.tech", true }, + { "m3rck.ch", true }, { "m42-gmbh.de", true }, { "m426.ch", true }, { "m4all.gr", true }, @@ -76391,7 +87622,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m6957.co", true }, { "m6pub.fr", false }, { "m7rxx.com", true }, - { "m81365.com", true }, { "m82365.com", true }, { "m8593.com", true }, { "m9297.co", true }, @@ -76400,33 +87630,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "m9721.com", false }, { "m9728.co", true }, { "m9t.ch", true }, + { "ma-bimbo.com", true }, { "ma-canne-a-peche.fr", true }, - { "ma-eir.nl", true }, + { "ma-decheterie-du-domicile.fr", true }, + { "ma-lex.ma", true }, + { "ma-ligne.co", true }, { "ma-paroisse.ch", true }, { "ma-queue.com", true }, + { "ma-subvention-electrique.com", true }, { "ma-ze-linux.tk", true }, { "ma109.org", true }, { "ma110.org", true }, { "ma162.org", true }, { "ma2t.com", true }, + { "maaamet.ee", false }, { "maadi.tk", true }, { "maafushiscuba.com", true }, { "maagdesigns.com.uy", true }, { "maahchepen.tk", true }, + { "maaiai.com", true }, { "maailm.tk", true }, { "maaldrift.tk", true }, - { "maana.lv", false }, + { "maaleht.ee", true }, { "maaret.de", true }, { "maarivpn.com", true }, { "maarja.edu.ee", true }, { "maartenderaedemaeker.be", true }, { "maartenvandekamp.nl", true }, { "maasstaddinerexpres.nl", true }, + { "maat.pt", true }, { "maatt.ch", true }, - { "maatt.fr", true }, + { "maatt.fr", false }, { "maatwerkopruimcoaching.nl", true }, { "maatwerkzorgcoaching.nl", true }, + { "maavaishnowsewatrust.com", true }, { "maaya.jp", true }, + { "mab.com", true }, { "maba.tk", true }, { "mabankonline.com", true }, { "mabelmartinez.es", true }, @@ -76438,15 +87677,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mabulledu.net", true }, { "mabusalah.tk", true }, { "mac-i-tea.ch", false }, + { "mac-iphone.com", true }, { "mac-world.pl", true }, { "mac.biz.tr", true }, { "mac.osaka.jp", true }, - { "macabacus.com", true }, { "macabeo.bio", true }, { "macallan-tls.com", true }, { "macallantls.com", true }, { "macangus-wainwright.com", true }, - { "macaos.com", true }, { "macapflag.com", true }, { "macappstudio.com", true }, { "macappstudiobridge.com", true }, @@ -76455,49 +87693,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "macarenagomezfan.tk", true }, { "macaroons.tk", true }, { "macaroonshindig.tk", true }, - { "macarthuradr.com", true }, { "macautocouture.ga", true }, { "macautocouture.gq", true }, { "macautocouture.ml", true }, + { "macaw.de", true }, { "macaw.lt", true }, { "macaw.net", true }, { "macaw.nl", true }, - { "macawos.com", true }, { "macaws.org", true }, { "macbach.com", false }, - { "macbparis.com", true }, { "maccabi-dent.com", true }, { "macchinetedesche.it", true }, { "macdj.tk", true }, { "macdonaldplasticsurgery.ca", true }, { "macedonian-hotels.com.mk", true }, { "macedonian-hotels.mk", true }, + { "macegroup.com", true }, { "macehead.tk", true }, { "maceinturecuir.com", true }, { "maces-net.de", true }, { "macgeneral.de", true }, { "macgenius.com", true }, + { "mach-it.com.ar", true }, { "mach-politik.ch", true }, + { "mach.com.ar", true }, { "macha.cloud", true }, { "machaaltricks.tk", true }, { "machbach.com", true }, { "machbach.net", false }, + { "machbel.com", true }, { "machelpnashville.com", true }, - { "machetewp.com", true }, { "machiavelli.tk", true }, { "machikka.com", false }, { "machin.email", true }, { "machinatio.ga", true }, { "machine.email", true }, - { "machineaecrire.fr", true }, { "machinebazar.com", true }, { "machineidle.com", true }, { "machinerysafety101.com", true }, - { "machinetransport.com", true }, + { "machineseeker.com", true }, + { "machineseeker.es", true }, + { "machinio.com", true }, { "machissenefre.ga", true }, { "machmit.tk", true }, { "macho-i-botan.tk", true }, { "machon.biz", true }, + { "machosting.jp", true }, { "machtweb.de", true }, { "machulaexpeditions.com", true }, { "machupicchu.tk", true }, @@ -76507,6 +87748,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "macinyasha.net", true }, { "macioszektv.eu", true }, { "macji-raj.si", true }, + { "mack.im", true }, { "mack.space", true }, { "mackanz.tk", true }, { "mackenziedatastream.ca", true }, @@ -76514,8 +87756,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mackeysack.com", true }, { "mackies.ga", true }, { "mackinawil.gov", true }, + { "mackinvia.com", true }, { "macksproductions.in", true }, { "maclafferty.be", true }, + { "macleans.ca", true }, { "maclemon.at", true }, { "macleod.io", true }, { "macley.nl", true }, @@ -76524,6 +87768,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "macnetwork.eu", false }, { "macnetwork.fr", false }, { "macnetwork.net", false }, + { "macnews.org", true }, { "macnugget.org", true }, { "maco.org.uk", true }, { "macon.de", true }, @@ -76534,94 +87779,114 @@ static const nsSTSPreload kSTSPreloadList[] = { { "macpress.com.br", true }, { "macramos.co.za", true }, { "macreosolutions.com", true }, - { "macreports.com", false }, { "macroeng.tk", true }, + { "macroestetica.com", true }, { "macrogamer.com", true }, { "macropremia.com.ar", true }, { "macros.co.jp", true }, { "macrosec.tech", true }, { "macroseo.tk", true }, { "macrotech.tk", true }, - { "macslure.com", true }, + { "macskorlari.net", true }, + { "macsoftware.org", true }, { "macsonuclari.com.tr", true }, { "macsonuclari.mobi", true }, { "macstore.pe", false }, { "macupdate.com", true }, { "macvcure.com", true }, { "macvidcards.eu", true }, - { "macx.cc", true }, { "mad-in-love.com", true }, { "mad-rabbit.com", true }, - { "mad.ninja", true }, + { "mad.es", true }, + { "mad2moi.com", true }, + { "madaboutsports.in", true }, { "madadmin.com", true }, { "madae.nl", true }, { "madagui.com", true }, - { "madagui.net", true }, { "madamasr.com", true }, { "madamcougar.com", true }, - { "madame-kosmetikstudio.de", true }, { "madameblueimages.com", true }, { "madamegarage.nl", true }, - { "madamove.com", true }, + { "madamemeringue.nl", true }, { "madbicicletas.com", true }, { "madbin.com", true }, { "madbouncycastles.co.uk", true }, + { "madcloud.io", true }, { "madcosao.gov", true }, - { "madcs.nl", true }, + { "madcs.nl", false }, { "maddi.biz", true }, + { "maddie.gay", true }, { "maddin.ga", true }, - { "maddistonevangelical.co.uk", true }, { "made-dwell.com", true }, - { "made-in-earth.co.jp", true }, { "made-to-usb.com", true }, { "made.md", true }, + { "made2coach.com", true }, { "madebydusk.com", true }, + { "madebyesmel.com", true }, { "madebyhand.art", true }, { "madebyshore.com", true }, { "madebythijmen.nl", true }, - { "madebyvasilis.site", true }, { "madecenter.com.br", true }, { "madechocolaterie.nl", true }, { "madedwell.com", true }, + { "madeforelle.shop", true }, { "madeglobal.com", true }, + { "madeinabyss-manga-new.com", true }, { "madeinamerica.gov", true }, { "madeincana.com", true }, { "madeincanarias.net", true }, { "madeinchezmoi.net", false }, { "madeinrussia.com", true }, + { "madeinsport.com", true }, { "madeinstudio3.com", true }, { "madeinua.com", true }, { "madeira.link", true }, + { "madeiraislandnews.com", true }, { "madeiranuncios.pt", true }, - { "madelynn.me", true }, + { "madeitstick.com", true }, + { "madelynn.me", false }, { "mademoe.com", true }, - { "mademons.com", true }, { "maden.com", true }, + { "madenco.nl", true }, { "mader.jp", true }, { "maderasbrown.com", true }, + { "madetosave.org", true }, { "madewithcollab.com", true }, { "madewithopendata.org", true }, + { "madeyra.com", true }, { "madge.tk", true }, { "madhawaweb.tk", true }, + { "madhon.co.uk", true }, + { "madhon.com", true }, { "madhyrecords.com", true }, { "madian.tk", true }, + { "madinahtech360.com", true }, + { "madinatalzahra.org", true }, + { "madinatech360.com", true }, { "madinina.tk", true }, { "madintouch.com", true }, + { "madison.com", true }, { "madisoncountyalema.gov", true }, { "madisoncountyhelps.com", true }, { "madisoncountyil.gov", true }, + { "madisoncountyky.gov", true }, { "madisoncountyne.gov", true }, { "madisonent-facialplasticsurgery.com", true }, + { "madisonhind.com", true }, + { "madisonmobilenotary.com", true }, + { "madisonpressurewashing.com", true }, { "madisonprocaccini.tk", true }, { "madisonsjewelersorlando.com", true }, { "madisonsquarerealestate.com", true }, + { "madisontwpmi.gov", true }, { "madkids.ga", true }, { "madknight.tk", true }, { "madlandezboard.tk", true }, + { "madlife.fr", true }, { "madluging.tk", true }, { "madmasters.tk", true }, - { "madmax-store.gr", true }, { "madmaxstore.it", true }, + { "madmoizelle.com", true }, { "madnetwork.org", true }, { "madobe.tk", true }, { "madokami.net", true }, @@ -76629,8 +87894,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "madonnadellafibra.gq", true }, { "madonnamedia.tk", true }, { "madost.one", true }, + { "madou278.ru", true }, { "madprod.tk", true }, { "madpsy.uk", true }, + { "madrakmoadel.ir", true }, { "madrants.net", true }, { "madrasareforms.cf", true }, { "madrasareforms.ga", true }, @@ -76642,8 +87909,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "madrese.tk", true }, { "madrespect.com", true }, { "madridagency.com", true }, - { "madridartcollection.com", true }, { "madride.tk", true }, + { "madridistas.com", true }, { "madscientistwebdesign.com", true }, { "madskauts.tk", true }, { "madskill.tk", true }, @@ -76665,18 +87932,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maedchenflohmarkt.at", true }, { "maedchenflohmarkt.de", true }, { "maeitems.ca", true }, + { "maeko.fr", true }, { "maeliacreation.fr", true }, { "maeln.com", true }, { "maelstrom-fury.eu", true }, { "maelstrom.ninja", true }, { "maeplasticsurgery.com", true }, { "maeprototipi.it", true }, + { "maersktankers.com", true }, { "maerzpa.de", true }, - { "maes.eu.org", true }, + { "maestrocabins.co.uk", true }, + { "maestrocasas.es", true }, + { "maestrocasas.pt", true }, + { "maestrocase.it", true }, + { "maestrochalet.fr", true }, + { "maestroholzbau.de", true }, + { "maestrotuinhuizen.nl", true }, { "maeterlinck100.be", true }, { "maev.si", true }, + { "maeva-beauty.com", true }, + { "maeva-beauty.fr", true }, + { "maeva.com", true }, { "maevelyfotografia.com", true }, - { "maewmoo.com", true }, { "maewongaming.tk", true }, { "maff.co.uk", true }, { "maff.scot", true }, @@ -76690,10 +87967,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mafiapenguin.club", true }, { "mafiasi.de", true }, { "mafiatown.pl", true }, - { "mafondue.ch", false }, + { "mafondue.ch", true }, { "mafworld.com", true }, { "mafy.fi", true }, - { "magaaral.com", true }, { "magaconnection.com", true }, { "magadan.ga", true }, { "magadan.gq", true }, @@ -76717,7 +87993,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magazone.cf", true }, { "magazone.gq", true }, { "magazone.ml", true }, + { "magazynauto.pl", true }, { "magbt.net", true }, + { "magdahavas.com", true }, { "magdakostyra.pl", true }, { "magdalena-pulawska.pl", true }, { "magdalenabus.tk", true }, @@ -76728,27 +88006,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magebrawl.com", true }, { "magel.io", true }, { "magellan-met.ru", true }, + { "magenbrot.net", false }, { "magenda.sk", true }, { "magentaize.net", true }, { "magentazorg.nl", true }, + { "magento-ecommerce.co.za", false }, + { "magentodevelopment.co.uk", true }, + { "magentrix.com", true }, { "magenx.com", true }, { "magepro.fr", true }, { "magescobd.com", true }, { "magewell.nl", true }, + { "maggianos.com", true }, { "maggie-shaw.co.uk", false }, { "maggie.gy", true }, { "maggiemcgee.tk", true }, { "maggot.cf", true }, + { "maggsy.co.uk", true }, { "magi-cake.com", true }, { "magiamgiatot.tk", true }, + { "magic-3dprint.nl", true }, + { "magic-cakes.nl", true }, { "magic-cards.info", true }, { "magic-carpetcleaning.co.uk", true }, { "magic-cheerleading.tk", true }, + { "magic-city.quest", true }, + { "magic-fly.de", true }, { "magic-network.tk", true }, { "magic-photo-events.fr", true }, - { "magicafacil.com", true }, { "magical-secrets.com", false }, { "magical.rocks", true }, + { "magicalcodewit.ch", true }, + { "magicalvegas.it", true }, { "magicalwishes.tk", true }, { "magicamulet.me", true }, { "magicball.co", true }, @@ -76756,10 +88045,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magicbar.tk", true }, { "magicbeanschool.com", true }, { "magicbroccoli.de", true }, - { "magicbullets.com", true }, { "magiccards.info", true }, { "magicdesktop.com", true }, { "magicdlp.com", true }, + { "magicdust.com.au", true }, { "magicflora.tk", true }, { "magiciansofchaos.tk", true }, { "magicitaca.com", false }, @@ -76769,17 +88058,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magicline.com", true }, { "magiclogix.com", true }, { "magicmycelium.co", true }, - { "magicnatura.ro", true }, { "magicnethosting.com", true }, { "magicomotor.com", true }, { "magicorama.com", true }, { "magicorange.com", true }, + { "magicpaper.net", true }, { "magicpill.com.au", true }, + { "magicpowertissue.com", true }, { "magicsms.pl", true }, { "magicspaceninjapirates.de", true }, + { "magicstay.com", true }, { "magictable.com", true }, { "magictallguy.tk", true }, { "magicthecreation.tk", true }, + { "magicvalley.com", true }, { "magicvaporizers.at", true }, { "magicvaporizers.be", true }, { "magicvaporizers.co.uk", true }, @@ -76804,10 +88096,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magicvaporizers.si", true }, { "magicvaporizers.sk", true }, { "magicvodi.at", true }, - { "magieamour.com", false }, + { "magicvoordeel.nl", true }, + { "magieshop.nl", true }, { "magija.ga", true }, { "magikbyte.com", true }, - { "magilio.com", true }, { "magique.tk", true }, { "magiskmanager.com", true }, { "magisterjuris.com", true }, @@ -76828,24 +88120,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magnesy.de", true }, { "magnesy.net.pl", true }, { "magnesy.priv.pl", true }, + { "magnet-search.com", true }, { "magnet.pub", true }, + { "magnetar.com", false }, { "magnetgaming.com", true }, + { "magnetic-ink.dk", true }, { "magnetic.su", true }, { "magneticanvil.com", true }, { "magneticarrow.com", true }, { "magneticarrowdev.com", true }, { "magneticattraction.com.au", true }, - { "magneticmoney.de", true }, + { "magneticspringsoh.gov", true }, + { "magnetoai.com", true }, { "magnetoscopio.tk", true }, { "magnetoterapiapertutti.com", true }, { "magnetpass.uk", true }, { "magnets.jp", true }, + { "magnetsdb.com", true }, { "magnetto.ga", true }, { "magnettracker.com", true }, { "magnetvpn.com", true }, { "magniezetassocies.fr", true }, + { "magnifact.com", true }, { "magnific.tk", true }, - { "magnificentdata.com", true }, { "magniflood.com", true }, { "magnit-akciya.tk", true }, { "magnitgang.ml", true }, @@ -76855,12 +88152,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "magnoliawi.gov", true }, { "magnosautos.ng", true }, { "magnumopus.one", true }, + { "magnumresearch.com", true }, { "magnunbaterias.com.br", true }, + { "magnusdemant.ch", true }, { "magnusfulton.com", true }, { "magnusj.net", true }, + { "magnuspro.cz", true }, + { "magnuspro.sk", true }, { "magnuz.tk", true }, { "magodasredes.com.br", true }, { "magonote-nk.com", true }, + { "magornitho.org", true }, { "magosmedellin.com", true }, { "magraebela.com", true }, { "magravsitalia.com", true }, @@ -76871,25 +88173,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maguire.tk", true }, { "maguroalmare.com.br", true }, { "maguspace.com", false }, + { "maguy-energies.com", true }, { "magwin.co.uk", true }, { "magyarepitok.hu", true }, { "mah-nig.ga", true }, { "mahabharat.tk", true }, + { "mahadbtmahait.net.in", true }, { "mahadihasan.cf", true }, { "mahadsunnah.com", true }, { "mahalaraibanda.ro", true }, { "mahali.tk", true }, { "mahalux.com", true }, { "mahalux.cz", true }, + { "mahalux.de", true }, + { "mahalux.eu", true }, { "mahanpt.com", true }, { "maharishikaa.org", true }, { "mahaskacountyia.gov", true }, + { "mahatenders.gov.in", true }, + { "mahatmarice.com", true }, + { "mahatmayoga.org", true }, + { "mahavirmandirpatna.org", true }, { "mahawi.sk", true }, { "mahayana.tk", true }, + { "mahayogam.org", true }, { "mahbobmax.tk", true }, { "mahboobi.tk", true }, { "mahdafweb.tk", true }, { "mahealthsurveys.gov", true }, + { "maherhost.uk", true }, { "maheshbabuphotography.tk", true }, { "maheshpur.tk", true }, { "maheshpurnews24.tk", true }, @@ -76910,18 +88222,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mahnaz.tk", true }, { "mahnwache-luetzerath.org", true }, { "mahorka.tk", true }, - { "mahrer.net", true }, + { "mahou-sanmiguel.com", true }, { "mahtabichat.ml", true }, { "mahtra.edu.ee", true }, { "mahurivaishya.co.in", true }, { "mahurivaishya.com", true }, + { "mai.ru", true }, { "maiaimobiliare.ro", true }, + { "maialeechin.com", true }, { "maianduc.vn", true }, { "maiateam.pt", true }, { "maichun.info", false }, - { "maid.gay", true }, + { "maid.gg", true }, { "maid.tk", true }, + { "maidalawfirm.com", true }, { "maidenliput.fi", true }, + { "maidens.se", true }, { "maidenworld.tk", true }, { "maidoty.net", true }, { "maiebanatulfruncea.com", true }, @@ -76929,6 +88245,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maigesellschaft-lammersdorf.de", true }, { "maijia800.com", true }, { "maik-mahlow.de", true }, + { "maikendener.com", true }, { "maikhuong.tk", true }, { "maikolfish.it", true }, { "maikoloc.com", true }, @@ -76939,8 +88256,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mail-routing.net", true }, { "mail-settings.google.com", true }, { "mail-signatures.com", true }, + { "mail.ch", true }, + { "mail.co.uk", true }, { "mail.com", true }, + { "mail.cx", true }, { "mail.de", true }, + { "mail.fr", true }, { "mail.google.com", true }, { "mail.storage", true }, { "mail.td", true }, @@ -76958,6 +88279,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mailchaud.com", true }, { "mailcubexs.tk", true }, { "maildrops.tk", true }, + { "mailer-olivea.cz", true }, { "mailer.me", true }, { "mailex.cf", true }, { "mailexpresso.tk", true }, @@ -76966,18 +88288,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mailexx.ml", true }, { "mailfence.com", true }, { "mailflank.com", false }, + { "mailgenius.com", true }, { "mailgun.com", true }, { "mailhardener.com", true }, + { "mailia.me", true }, { "mailinabox.email", true }, { "mailinabox.ml", true }, { "mailinaitor.tk", true }, { "mailingproduct.tk", true }, + { "mailingwork.de", true }, { "mailinizer.com", true }, { "mailinyzer.com", true }, + { "mailjet.com", true }, { "mailjunkey.tk", true }, { "maillotdefoot.tk", true }, { "maillotfoot.tk", true }, - { "mailmag.net", true }, { "mailmaid.de", true }, { "mailman.ml", true }, { "mailmaster.tk", true }, @@ -76989,6 +88314,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mailosaur.com", true }, { "mailpass.ml", true }, { "mailpenny.com", true }, + { "mailplus.com.au", true }, { "mailsac.com", true }, { "mailsend.ml", true }, { "mailstart.ga", true }, @@ -77003,21 +88329,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mailway.io", true }, { "mailxpress.ga", true }, { "maimaiyeuem.tk", true }, - { "maimea.net", true }, + { "maimemostatus.com", true }, + { "main-bvxea6i-sw23ji6z2nxsu.us-4.platformsh.site", true }, { "main1.host", true }, + { "maindrivekew.com.au", true }, { "mainechiro.com", true }, + { "mainehousing.org", true }, { "mainelosap.gov", true }, { "mainframeserver.space", true }, { "mainhattan-handwerker.de", true }, { "mainhuyahan.tk", true }, { "mainlined.org", true }, - { "mainone.net", false }, - { "mainquest.org", true }, + { "mainserver.co.za", true }, + { "mainstaysafetywedge.com", true }, { "mainstortho.com", true }, - { "mainstreetartisans.com", true }, { "maintainyourwebsite.help", true }, { "maintenance-traceur-hp.fr", true }, { "maintenanceservice.org", true }, + { "mainzbiomed.com", true }, { "mainzelmaennchen.net", true }, { "maioresemelhores.com", true }, { "mair.best", true }, @@ -77027,21 +88356,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mairie-sornay.fr", true }, { "mairiedakieni.ga", true }, { "mairiedemoncelsurseille.com", true }, - { "mairimcosmetics.com", true }, { "maisallianz.com", true }, { "maisapanama.com", true }, - { "maiscelular.com.br", true }, { "maiscuidar.com", true }, { "maiscupoes.com", true }, + { "maisecom.com.br", true }, { "maisempregonet.com", true }, { "maisgasolina.com", true }, { "maisie.nl", true }, { "maison-auriat.fr", true }, { "maison-coutin.com", true }, { "maison-du-savon-de-marseille.fr", true }, + { "maison-et-domotique.com", true }, { "maison-haimard.fr", true }, - { "maisondoree.be", true }, + { "maisonkobe.fr", true }, { "maisonmere.group", true }, + { "maisonpourtous.ca", true }, { "maisproduzida.com.br", true }, { "maistempo.com.br", true }, { "maisvitaminas.com.br", true }, @@ -77049,18 +88379,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maitheme.com", true }, { "maiti.info", true }, { "maitlandcashforcars.com.au", true }, + { "maitlandwardpornstar.com", true }, + { "maitrelucas.fr", true }, { "maitrise-orthopedique.com", true }, + { "maitum.de", true }, + { "maiweave.com", true }, { "maizeks.gov", true }, { "maizuru-ongaku-kan.com", true }, { "maj.ac", true }, { "majahoidja.ee", true }, + { "majalahponsel.org", true }, { "majalmirasol.com", true }, { "majameer.com", true }, { "majasballites.lv", true }, { "majavucic.com", true }, { "majaweb.cz", true }, + { "majelisriyadhah.com", true }, { "majemedia.com", true }, { "majestas.tk", true }, + { "majestic-files.com", true }, + { "majestic-rp.ru", true }, + { "majestic.games", true }, { "majestio.tk", true }, { "majid.info", true }, { "majisign.co.uk", true }, @@ -77068,39 +88407,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "majkassab.net", true }, { "majkassab.org", true }, { "majkl.me", true }, - { "majkl578.cz", true }, { "majkyto.cz", true }, { "majlovesreg.one", true }, { "majolka.com", true }, + { "majorhifi.com", true }, { "majorpaintingco.com", true }, { "majorpussycum.com", true }, { "majusainsurance.com", true }, { "makaleci.com", true }, { "makalu.me", true }, - { "makani.be", true }, { "makanivzw.be", true }, { "makanj.tk", true }, { "makaradigital.com", false }, { "makariza.com.co", true }, { "makasetesan.com", true }, { "make-a-difference-daily.com", true }, + { "make-my-link-longer.ml", true }, + { "make-my-link-longer.xyz", true }, { "make.org", true }, { "make50aday.tk", true }, + { "makeacrowd.eu", true }, { "makeagif.com", true }, - { "makebadge.com", false }, + { "makeaoffice.nl", true }, + { "makebadge.com", true }, { "makechanges.com.au", true }, - { "makecharcoal.com", true }, { "makedin.net", true }, { "makedonija.net.mk", true }, { "makeh2o.com", true }, { "makeit-so.de", false }, { "makeitshort.ml", true }, - { "makejusticework.org.uk", false }, + { "makeitsimple.pt", true }, + { "makejusticework.org.uk", true }, { "makelindazi.com", true }, + { "makelinks.online", false }, + { "makellos-kosmetik.de", true }, { "makemejob.com", true }, { "makemillion.tk", true }, { "makemoney-plan.tk", true }, + { "makemoney.ng", true }, { "makemusic-asia.com", true }, + { "makemypost.com", true }, { "makenaiyo-fx.com", true }, { "makenprint.uk", true }, { "makeovershop.ro", true }, @@ -77112,8 +88458,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "makerdao.com", false }, { "makertown.jp", true }, { "makesenseofdata.co.uk", true }, + { "maketheconnection.net", true }, { "maketheneighborsjealous.com", true }, { "maketodiet.com", true }, + { "makeupartistedu.org", true }, { "makeupevelinua.cf", true }, { "makeupevelinua.ga", true }, { "makeupillusion.com", true }, @@ -77122,11 +88470,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "makeurbiz.com", true }, { "makeurl.ml", true }, { "makewebbetter.com", true }, - { "makfra.com", false }, + { "makfra.com", true }, { "makhmudov.net", true }, { "maki-chan.de", true }, + { "maki-it.de", true }, { "maki.cafe", true }, { "makilingchallenge.tk", true }, + { "making-it.nl", true }, + { "makingbusinessmatter.co.uk", true }, { "makingmemoney.cf", true }, { "makingmemoney.ga", true }, { "makingmemoney.gq", true }, @@ -77136,7 +88487,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "makkiyaz.tk", true }, { "makkusu.photo", true }, { "maklerinfo.biz", true }, - { "makocontrols.com", true }, { "makohu.tk", true }, { "makomako.tk", true }, { "makonet.com.au", false }, @@ -77145,10 +88495,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "makrama.shop", true }, { "makromedikal.com.tr", true }, { "maksa.ga", true }, - { "maksatmoda.com", true }, { "maksima.kh.ua", true }, { "maksimmrvica.tk", true }, + { "maksimyugai.com", true }, { "maksmedia.tk", true }, + { "maksnet.net", false }, { "maksonshop.ga", true }, { "maksoud-karim.net", true }, { "maksport.ml", true }, @@ -77162,27 +88513,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "malacat.com", true }, { "malachiteauth.com", true }, { "maladie-autoimmune.fr", true }, + { "malafidezoeker.nl", true }, + { "malagabaterias.com", true }, { "malagarental.com", true }, { "malagarental.es", true }, { "malahov.tk", true }, { "malamutedoalasca.com.br", true }, - { "malangartchannel.com", false }, { "malardalenvvs.se", true }, { "malareal.com.br", true }, { "malariaadvice.gq", true }, { "malariabehaviorsurvey.org", true }, { "malash.me", true }, - { "malasuk.com", true }, { "malatyahaberleri.tk", true }, { "malavida.tk", true }, { "malavirgen.tk", true }, - { "malawi-cichliden-portal.de", true }, { "malayalamtalkies.tk", true }, { "malaysia.cf", true }, { "malaysia.search.yahoo.com", false }, { "malaysiabrands.com.my", true }, { "malaysiainternship.my", true }, - { "malaysian.dating", true }, { "malaysianews.ga", true }, { "malaysianews.gq", true }, { "malaysianews.ml", true }, @@ -77201,17 +88550,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maldivestraveller.mv", true }, { "male-cats-spray.ml", true }, { "malebooks.ml", true }, + { "malecki.tk", true }, { "malecondemusique.fr", true }, - { "malediven.biz", true }, { "maleevcues.com", true }, { "malego.be", true }, { "malek3d.com.br", true }, + { "malekperiodontics.com", true }, { "malenaamatomd.com", true }, { "malenyflorist.com.au", true }, - { "maleperformancepills.com", true }, { "malermeister-kessler.de", true }, { "malermeister-tichnau.de", true }, { "malesoowki.blog", true }, + { "malevus.com", true }, { "maleyco.tk", true }, { "maleylabapplications.org", true }, { "malezan.com", true }, @@ -77221,27 +88571,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maliar.fr", true }, { "malibaby.ga", true }, { "malibu-electric.com", true }, + { "malibudread.fr", true }, { "malibuexteriorlighting.com", true }, { "malibulingerie.com", true }, { "malibumodas.com.br", true }, { "maliciousdeath.tk", true }, { "malicis.com", true }, - { "malie.it", true }, { "malik.holdings", true }, { "malik.id", true }, { "malikcomputers.tk", true }, { "malikdeenarislamicacademy.tk", true }, + { "maliksofts.com", true }, { "malikussa.id", true }, { "malikussaid.com", true }, + { "malikzinad.com", false }, { "malimusavirler.tk", true }, { "malinaclub.com", true }, { "malinheadview.ie", true }, + { "malinmethod.com", true }, { "malisheva-blog.cf", true }, { "malisheva-blog.ga", true }, - { "maliskovik.si", true }, { "maliweb.ml", true }, - { "malkalni.lv", true }, { "malkaso.com.ua", true }, + { "malkingroup.com.au", true }, { "malkoun.com", true }, { "malkovich.cf", true }, { "malkovich.ga", true }, @@ -77253,26 +88605,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mallach.net", true }, { "mallasvita.com", true }, { "malles.org", true }, - { "malletsheetmetal.com", true }, { "mallettsheetmetal.com", true }, { "mallgastronomico.com.ar", true }, + { "mallhabana.com", true }, { "mallner.me", true }, { "malloc.me", false }, + { "mallofit.com", true }, { "mallonline.com.br", true }, { "mallorca.tk", true }, - { "mallorcaautohuur.nl", true }, + { "mallorca2024.com", true }, { "mallpass.ga", true }, + { "malltina.com", false }, { "malmomusikskola.se", true }, { "malmyzh.tk", true }, - { "malond.com", true }, { "malone.link", false }, + { "maloneyja.com", true }, { "malorita.tk", true }, - { "malouf.gr", true }, + { "malp.cc", true }, { "malphisruul.de", true }, { "malscan.com", false }, { "malsignature.com", true }, - { "malsoftware.com", true }, { "malta-firma.com", true }, + { "maltarugs.com", true }, { "maltasite.tk", true }, { "maltaultrastifo.tk", true }, { "maltegegner.de", false }, @@ -77289,22 +88643,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "malwarewise.com", true }, { "malworld.me", true }, { "malwr.ee", true }, - { "malyjakub.cz", true }, { "malypiesekzuzi.pl", true }, { "malysvet.net", false }, - { "mama-kind-buch.de", true }, { "mamabatataya.com", true }, - { "mamabepo.com", true }, + { "mamacasinos.com", true }, { "mamacitaz.com", true }, { "mamacoolinar.bg", true }, { "mamadoma.com.ua", true }, + { "mamaearth.co.nz", true }, { "mamaisonsherby.ca", true }, { "mamamoet.ru", true }, + { "maman-geek.com", true }, { "mamanakormit.tk", true }, { "mamanecesitaungintonic.com", true }, { "mamanetplus.fr", true }, + { "mamanzari.com", true }, + { "mamanzaris.com", true }, { "mamaplus.net", true }, { "mamasorganizedchaos.com", true }, + { "mamastyle.store", true }, { "mamaxi.org", true }, { "mamaznaet.ml", true }, { "mambas.cn", true }, @@ -77314,43 +88671,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mamijaclean.tk", true }, { "mamilitante.fr", true }, { "mamilove.com", true }, + { "mamkin-wp.ru", true }, { "mamlaka.ml", true }, { "mamlaka.tk", true }, { "mammabelly.com.br", true }, { "mammaklader.tk", true }, { "mammal-taxonomy.tk", true }, { "mammals.net", true }, - { "mammaw.com", true }, { "mammooc.org", true }, { "mammothlakesmls.net", true }, + { "mammothpublishing.org", true }, { "mamochka.org.ua", false }, { "mamodsteam.tk", true }, { "mamohe.de", true }, { "mamoni.co", true }, { "mamont.cloud", true }, { "mamontov.tk", true }, + { "mamopracuj.pl", true }, { "mamoris-net.jp", true }, { "mamospienas.lt", true }, { "mamot.fr", true }, { "mamradost.sk", true }, { "mamsds.com", true }, { "mamtapark.tk", true }, + { "mamufeeds.com", true }, { "mamuko.nl", true }, { "mamunlyric.tk", true }, + { "man-man.nl", true }, { "man-stuff.co.uk", true }, { "man-trailer.com", true }, { "man3s.jp", false }, { "mana.ee", true }, + { "mana.wiki", true }, + { "manab-it.com", true }, { "manach.net", true }, { "manage.cm", true }, { "manage.com", false }, + { "manageairlinesbooking.com", true }, { "manageathome.co.uk", true }, + { "managed-it.africa", true }, { "managed-it.co.za", true }, - { "managed-it.digital", true }, { "managedcontractors.co.uk", true }, { "managedhosting.de", true }, + { "managedserver.it", true }, { "managedservicesraleighnc.com", true }, + { "managedwphosting.nl", true }, { "managefile.tk", true }, + { "managefuhui.com", true }, { "management-companie.ro", true }, { "managementboek.nl", true }, { "managementfeedback.com", true }, @@ -77361,12 +88728,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "managment.io", true }, { "managr.net", true }, { "manalu.cz", true }, + { "manamohajerat.com", true }, { "manaonetrading.com", true }, { "manasakcijas.lv", true }, { "manaspaul.tk", true }, { "manateepao.gov", true }, { "manatees.com.au", true }, { "manatees.net", true }, + { "manausagil.com", true }, { "manav-it.de", true }, { "manavgabhawala.com", true }, { "manawa.tech", true }, @@ -77374,8 +88743,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manawithtea.com", true }, { "manbetx1998.live", true }, { "manboy.tk", true }, + { "mancaverevolution.com", true }, { "manchester.careers", true }, - { "manchesterjobsboard.com", true }, + { "manchestermn.gov", true }, + { "manchestermoneyman.com", true }, { "manchestertechservices.co.uk", true }, { "manchesterwi.gov", true }, { "mancrates.com", true }, @@ -77386,9 +88757,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mandai-t.jp", true }, { "mandala-ausmalbilder.de", true }, { "mandala-book.tk", true }, - { "mandala-porn.com", true }, + { "mandalayogaspa.com", true }, { "mandanudes.ae", true }, + { "mandaraequestrian.com", true }, { "mandarinplay.tk", true }, + { "mandatkollen.se", true }, { "mandcbouncycastlehire.co.uk", true }, { "mandediary.com", true }, { "mandefender.tk", true }, @@ -77396,14 +88769,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mandelaeffect.tk", true }, { "manderstam.com", true }, { "mandiblackburnphoto.com", true }, - { "mandilabeachhotel.com", true }, - { "mandolinexpert.com", true }, - { "mandospersonalizados.com", true }, + { "mandoemedia.com", false }, { "mandospersonalizados.es", true }, - { "mandrill.fr", true }, { "manducoshop.com", true }, { "mandynamic.gr", true }, - { "mandzak.com", true }, { "manegehenriet.tk", true }, { "manegestalflicka.tk", true }, { "maneggio.milano.it", true }, @@ -77411,6 +88780,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manekin.ga", true }, { "manekin.gq", true }, { "manekin.ml", true }, + { "manelbenlloch.com", true }, { "manelli.fr", true }, { "maneql.co.jp", true }, { "maneql.info", true }, @@ -77425,7 +88795,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manfredimatteo.com", true }, { "manfredschafer.ch", true }, { "manfree.tk", true }, - { "manga18.art", true }, + { "manga-boku-no-hero.com", true }, + { "manga-life.info", true }, + { "manga-passion.de", true }, + { "manga-republic.com", true }, + { "manga1000.top", true }, + { "manga1001.in", true }, + { "manga1001.top", true }, + { "manga1001.xyz", true }, + { "manga168.com", true }, { "mangabond.tk", true }, { "mangaboxes.ml", true }, { "mangacat.ga", true }, @@ -77434,12 +88812,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mangafreak.tk", true }, { "mangagaga.tk", true }, { "mangahigh.com", true }, - { "mangalindustries.com", true }, - { "mangamonde.fr", true }, + { "mangajp.top", true }, + { "mangakita.net", true }, + { "mangalove.top", true }, { "manganimefan.tk", true }, { "mangapoi.com", true }, { "mangareactor.tk", true }, - { "mangarosa.pt", true }, { "mangatafestas.com.br", true }, { "mangaworld.gq", true }, { "mangeur-de-cigogne.tk", true }, @@ -77448,16 +88826,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mangio.co.uk", true }, { "mangnhuapvc.com.vn", true }, { "mango-zajm.gq", true }, + { "mango888.com", true }, { "mangomercado.com", true }, { "mangoservers.tk", true }, { "mangotwoke.co.uk", true }, + { "mangumsinc.com", true }, { "manguyen.de", false }, + { "manhack.net", true }, { "manhassetparkdistrictny.gov", true }, + { "manhattan.at", true }, { "manhattanchoralensemble.org", true }, + { "manhattanda.org", true }, { "manhattandermatologistsnyc.com", true }, + { "manhattanfruitier.com", true }, { "manhattangastroenterology.com", true }, { "manhattanks.gov", true }, - { "manhole.club", true }, + { "manhattanlife.com", true }, { "manhuagui.com", true }, { "mani.tw", true }, { "maniacoland.com", true }, @@ -77470,11 +88854,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manicminers.tk", true }, { "manicode.com", true }, { "manicur-salon.tk", true }, - { "manicuradegel.com", true }, { "manicuradegel.es", true }, + { "manif-est.info", true }, { "manikinuk.tk", true }, { "manilacrawl.com", true }, - { "manimassage.fr", true }, { "maniorpedi.com", true }, { "maniosglass.gr", true }, { "manipil.ch", false }, @@ -77482,14 +88865,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manisahaberleri.tk", true }, { "manitaggarwal.com", false }, { "manito.kr", true }, + { "manitoulinairport.ca", true }, + { "manitoulinairport.com", true }, + { "manitoulinglobalforwarding.ca", true }, + { "manitoulinglobalforwarding.co", true }, + { "manitoulinglobalforwarding.com", true }, + { "manitoulinglobalforwarding.mx", true }, + { "manitoulingolf.com", true }, + { "manitoulingroup.ca", true }, + { "manitoulingroup.co", true }, + { "manitoulingroup.com", true }, + { "manitoulinheavyhaul.ca", true }, + { "manitoulinheavyhaul.com", true }, + { "manitoulinlogistics.ca", true }, + { "manitoulinlogistics.com", true }, + { "manitoulintransport.ca", true }, + { "manitoulintransport.co", true }, + { "manitoulintransport.com", true }, + { "manitoulintransport.info", true }, + { "manitoulintransport.net", true }, + { "manitoulinusedequipment.ca", true }, + { "manitoulinusedequipment.com", true }, + { "manitoulinwarehousing.com", true }, { "manitouspringsco.gov", true }, { "manitowoccountywi.gov", true }, + { "manitowocwi.gov", true }, { "manja-und-martin.de", true }, { "manjalcouture.com", true }, + { "manjaro.org", true }, { "manjaro.ru", true }, - { "mankans.com", false }, { "mankier.com", true }, { "mankomarketing.com", true }, + { "manmatters.com", true }, { "mann-und-maeuse.de", true }, { "mannafields.org", true }, { "mannat-hallmumbra.com", true }, @@ -77498,9 +88905,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mannhaarkunst.com", true }, { "mannheimbloggt.tk", true }, { "mannigroup.com", true }, + { "manningtreetilesandflooring.co.uk", true }, { "mannnen.nl", true }, - { "manns-solutions.co.uk", true }, { "mannservrice.cf", true }, + { "manoek.dynu.net", true }, + { "manofmanythings.com", true }, { "manogara.tk", true }, { "manoha-proservices.fr", true }, { "manoila.co.uk", true }, @@ -77513,26 +88922,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manortx.gov", true }, { "manova.cz", true }, { "manowarus.com", true }, + { "manporn.xxx", true }, + { "manpro.systems", true }, + { "manrollo.com", true }, { "mansarda-life.net", true }, { "mansdell.net", true }, - { "mansell-law.com", true }, { "mansfeld.pl", true }, - { "mansform.com", true }, { "manshamita.com", true }, { "manshatech.com", true }, + { "mansikamani.com", true }, { "mansikka-sachi.com", true }, { "mansionflip.com", true }, { "manski.net", true }, { "mansoorkhan.tk", true }, { "mansora.co", true }, { "mansora.io", true }, + { "mansora.net", true }, { "mansour.io", true }, { "mansurov.tk", true }, { "mantachiepharmacy.com", true }, { "mantalak.com", true }, - { "mantalksmanrules.com", true }, { "mantaoilco.com", true }, + { "mantapmedia.com", true }, { "mantaro.site", true }, + { "manteca.gov", true }, { "manteligencia.com", true }, { "mantelligence.com", true }, { "mantenimiento-zaragoza.com", true }, @@ -77543,6 +88956,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mantor.org", false }, { "mantra.pictures", true }, { "mantraptownshipmn.gov", true }, + { "mantu.com", true }, + { "mantul.top", false }, + { "manual-directory.com", true }, + { "manualdousuario.net", false }, { "manuall.ae", true }, { "manuall.co.uk", true }, { "manuall.cz", true }, @@ -77562,6 +88979,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manuall.ro", true }, { "manuall.se", true }, { "manuall.sk", true }, + { "manualowl.com", true }, { "manualscollection.com", true }, { "manuel-herrmann.de", true }, { "manuel-schefczyk.de", true }, @@ -77577,34 +88995,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "manuelosorio.me", true }, { "manuelperujo.ch", true }, { "manuelraimo.cf", true }, - { "manuelrueger.de", false }, + { "manuelrueger.de", true }, { "manufacturedhomemoving.com", true }, { "manufacturing.gov", true }, { "manufacturingsupportgroup.co.uk", true }, { "manufacturingusa.com", true }, - { "manufarm.com", true }, { "manulife.ca", true }, { "manumagnum.com", true }, { "manuscript.com", true }, { "manuscripteditorial.com", true }, { "manuscriptlink.com", true }, { "manusiasosial.tk", true }, + { "manusje-van-alles.nl", true }, + { "manutenzionecaldaie.it", true }, { "manutenzionegiardini.it", true }, { "manuth.life", true }, + { "manutouch.com.cn", true }, + { "manwithavanservices.com", true }, { "manwork.tk", true }, + { "manwv.gov", true }, + { "manychat.com", true }, { "manyebook.com", true }, { "manyetikboya.com", true }, { "manyhotfiesta.ml", true }, { "manylots.ru", true }, + { "manyo.jp", true }, { "manypets.com", true }, { "manyproservices.com", true }, + { "manytricks.com", true }, { "manytubes.ga", true }, { "manyzero.ml", true }, + { "manzanagroup.ru", true }, { "manzanita-nsn.gov", true }, - { "manzoorahmed.com", true }, - { "manzunadh.com", true }, { "maomihz.com", true }, { "maone.net", true }, + { "maorilandfilm.co.nz", true }, { "maorx.cn", true }, { "maoshuai.bid", true }, { "maoshuai.cc", true }, @@ -77624,42 +89049,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maoshuai.ren", true }, { "maoshuai.site", true }, { "maoshuai.store", true }, - { "maoshuai.top", true }, { "maoshuai.tw", true }, - { "maoshuai.us", true }, { "maoshuai.vip", true }, { "maoshuai.wang", true }, { "maoshuai.win", true }, { "maoshuai.xyz", true }, { "maowtm.org", true }, - { "maowushi.net", true }, { "maozedong.red", true }, + { "map-immo.fr", true }, { "map4erfurt.de", true }, { "map4jena.de", true }, + { "mapa-airsoft-akci.cz", true }, { "mapado.ru", true }, { "mapasmundi.com.br", true }, { "mapausenaturelle.fr", true }, { "mapblender.com", true }, { "mapchange.org", true }, { "mapduce.com", true }, + { "mapdump.com", true }, { "mapi.eu.org", true }, { "mapillary.com", true }, { "maplebgm.cc", true }, - { "maplegate.info", true }, { "maplegrove.cf", true }, { "maplegrovetownshipmi.gov", true }, { "mapleholland.tk", true }, { "maplehome.tk", true }, - { "maplehousehomeinvestors.com", true }, + { "maplemountainquiltretreat.com", true }, + { "maples.com", true }, { "mapletime.com", true }, + { "mapletokyo.top", true }, { "mapletonmn.gov", true }, + { "mapletree.com.sg", true }, + { "maplevalleytwpmi.gov", true }, { "maplewood.tk", true }, { "maplewoodnj.gov", true }, { "mappingfutures.org", true }, { "mappingspaceperu.com", true }, { "mapresidentielle.fr", true }, - { "maproaguas.com", true }, { "mapstack.org", true }, + { "maptician.com", true }, { "mapuut.net", true }, { "maqs.tk", true }, { "maquena.org", true }, @@ -77673,6 +89101,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mar-eco.no", true }, { "mar.pt", true }, { "mara.paris", true }, + { "marabook.fr", true }, { "maraboutserieuxhonnete.com", true }, { "marabunta.io", true }, { "maracarlinicourses.com", true }, @@ -77688,11 +89117,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marasma.tk", true }, { "marathoncitywi.gov", true }, { "marathons.tk", true }, + { "marathonsports.com", true }, { "marauderos.tk", true }, { "marazul.tk", true }, { "marbermedical.com", true }, { "marble.com", true }, - { "marblemosaics.ga", true }, + { "marbleceramiccorp.com.au", true }, { "marblenexus.de", true }, { "marbogardenlidkoping.se", true }, { "marbree.eu", true }, @@ -77708,6 +89138,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marcbeije.com", true }, { "marcberndtgen.de", true }, { "marcceleiro.com", true }, + { "marcdietschi.com", true }, { "marcel-preuss.de", true }, { "marcel-waldvogel.ch", true }, { "marcelabarrozo.tk", true }, @@ -77719,17 +89150,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marcelinofranchini.org", true }, { "marcelkooiman.com", true }, { "marcell-jansen.tk", true }, - { "marcellenatureza.com", true }, - { "marcellodomenis.com", true }, { "marcelmarnitz.com", true }, { "marcelofernandez.tk", true }, { "marcelois.me", true }, + { "marcelovasconcelos.com.br", true }, { "marcelpreuss.de", true }, { "marcelsiegert.com", true }, { "marcelwaldvogel.ch", true }, + { "marcelwiedemeier.com", true }, { "marcelwolf.coach", true }, { "marcenariaembh.com.br", true }, { "marcgoertz.de", true }, + { "march-consulting.jp", true }, + { "marcha.org.ar", true }, { "marchagen.nl", true }, { "marche-nordic-jorat.ch", false }, { "marchellenevers.tk", true }, @@ -77739,6 +89172,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marchingnorth.com", true }, { "marchoffrichter.de", true }, { "marchouben.nl", true }, + { "marchqualitymeats.com", true }, { "marcianoandtopazio.com", true }, { "marcillacetfils.fr", true }, { "marclange.net", true }, @@ -77747,7 +89181,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marco-reitmeier.de", true }, { "marco-s.net", true }, { "marcoaurelio.tk", true }, - { "marcobicca.com", true }, { "marcocasoni.com", true }, { "marcoececilia.it", true }, { "marcoherten.com", true }, @@ -77756,14 +89189,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marcopierrard.fr", true }, { "marcopiottante.tk", true }, { "marcopolo-restaurant.com", true }, + { "marcopolonetwork.com", false }, { "marcoreitmeier.de", true }, { "marcorubiol.com", true }, - { "marcositaliandeli.co.uk", true }, + { "marcositaliandeli.co.uk", false }, { "marcosocio.com", true }, - { "marcossamerson.com", true }, { "marcossan.com", true }, { "marcosteixeira.tk", true }, { "marcotolk.com", true }, + { "marcovery.com", true }, + { "marcretzlaff.com", true }, + { "marcschlagenhauf.de", false }, { "marcsello.com", true }, { "marcsferraripage.tk", true }, { "marcus-scheffler.com", true }, @@ -77773,49 +89209,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marcuskoh.com", true }, { "marcusporter.tk", true }, { "marcusstafford.com", true }, + { "marcypro.com", true }, + { "marczocher.de", true }, { "mardelcupon.com", true }, { "mardigrasnapkins.com", true }, { "mardinhaberleri.tk", true }, { "mardinsondakika.tk", true }, { "mare-sylt.de", true }, { "mare92.cz", true }, + { "marebca.xyz", true }, { "marechal-company.com", true }, + { "maregionsud.fr", true }, { "marei.ad", true }, - { "marekherel.cz", true }, + { "mareinitalia.com", true }, { "marekkohn.tk", true }, { "marekkorlak.com", true }, + { "mareklecian.cz", true }, { "marelijah.org", true }, { "marengomi.gov", true }, { "maresencial.com", true }, + { "maresimone.com", true }, { "marex.host", true }, { "marfadelivery.tk", true }, { "marga-marga.tk", true }, - { "marga.tech", true }, { "margagriesser.de", true }, { "margan.ch", true }, { "margaret.land", true }, { "margaretgel.com", true }, { "margaridamendessilva.com", true }, + { "margatroid.com", true }, { "margaux-perrin.com", true }, { "margauxnennig.com", true }, { "margays.de", true }, { "margeriam.com", true }, - { "margeyshah.com", true }, { "margherita.cl", true }, { "margintoniks.fr", true }, - { "marglotfabadi.com", true }, { "margo-co.ch", false }, { "margo.ml", true }, + { "margolcia.com.pl", true }, { "margolis.gq", true }, { "margotbworldnews.tk", true }, + { "margotdesign.ovh", true }, { "margots.biz", true }, { "margots.life", true }, { "margots.tech", true }, - { "marguerite-maison.fr", true }, + { "margriet.nl", true }, + { "margus.uk", true }, { "marhamat.cf", true }, { "marhobateren.tk", true }, + { "mari-ie.ro", true }, { "maria-blanco.tk", true }, - { "maria-galland.cz", true }, { "maria-kirilenko.tk", true }, { "maria-sharapova.tk", true }, { "mariaangelamacario.com", true }, @@ -77823,6 +89266,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mariaelisaejunior.ga", true }, { "mariafernanda.com.br", true }, { "mariage-protestant.ch", false }, + { "mariage-reussi.fr", true }, { "mariagealamontagne.com", true }, { "mariages.net", true }, { "mariagiovannaluini.it", true }, @@ -77832,56 +89276,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marialopez.tk", true }, { "mariamenounos.tk", true }, { "mariamia.org", true }, + { "mariamindbodyhealth.com", true }, { "marianatherapy.com", true }, { "marianelaisashi.com", true }, - { "marianhoenscheid.de", false }, - { "mariannenan.nl", true }, + { "marianhoenscheid.de", true }, { "mariannethijssen.nl", true }, { "marianneveenstra.tk", true }, { "marianrivera.tk", true }, { "mariansalzman.com", true }, { "mariapietropola.com", true }, + { "mariart.studio", true }, { "mariasavchenko.com", true }, { "mariasemarias.com.br", true }, { "mariaterbildt.tk", true }, { "mariavilleme.gov", true }, { "mariberceritera.online", true }, { "marie-pettenbeck-schule.de", true }, + { "marie-psy.fr", true }, { "marie.club", true }, + { "mariealber.cz", true }, + { "mariearthur.fr", true }, { "mariecurie.tk", true }, { "mariedanielle.it", true }, { "mariejulien.com", true }, { "mariella-sun.net", true }, - { "marielouise-oliwkiewicz.nl", true }, { "marielouise.tk", true }, + { "mariemccaig.co.uk", true }, { "mariemiramont.fr", true }, + { "marienoellegendron.com", true }, { "mariereichl.cz", true }, { "mariescountymo.gov", true }, { "marieskyler.net", true }, - { "marietrap.ch", true }, - { "marijnfidder.nl", true }, + { "marietrap.ch", false }, + { "marifilmines.com", true }, + { "marijang.id", true }, { "marijuanajobscannabiscareers.com", true }, - { "marijuanamed420.com", true }, + { "marik.net.br", true }, { "marikafranke.de", true }, { "marikekinze.de", true }, - { "mariliaveiga.com.br", false }, { "marillatownshipmi.gov", true }, { "marilower.tk", true }, { "marilsnijders.nl", true }, + { "marilynandsarah.org", true }, { "marilynmonroy.com.ec", true }, { "marin-business-center.ch", false }, { "marin-dom.ru", false }, { "marin-tullet.com", false }, { "marina-group.tk", true }, { "marina-tsvetaeva.ml", true }, + { "marinadarje.com", true }, { "marinamontana.net", true }, { "marinapetruzio.it", true }, { "marinapozzoli.tk", true }, + { "marinaquip.com", true }, { "marinarinaldi.ml", true }, { "marinasmad.com", true }, { "marinat.de", true }, { "marinat2012.de", true }, - { "marinatecnicavocal.com", true }, { "marinazarza.es", true }, { "marinbusinesscenter.ch", false }, { "marine.gov", true }, @@ -77900,18 +89351,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mario.com.ua", true }, { "mario420.ga", true }, { "marioabela.com", true }, - { "marioafonso.com", true }, { "marioberluchi.by", false }, { "mariogarcia.tk", true }, - { "mariogasparini.com.br", true }, { "mariogb.com", true }, { "mariogeckler.de", false }, { "marioncounty911illinois.gov", true }, + { "marioncountyar.gov", true }, { "marioncountyil.gov", true }, { "marioncountyiowa.gov", true }, + { "marioncountyms.gov", true }, { "marioncountyohio.gov", true }, + { "marioncountysheriffar.gov", true }, { "marioncountytn.gov", true }, - { "marioncvb.com", true }, + { "mariontwpcvxmi.gov", true }, { "marioserver.ml", true }, { "mariospizzaoxford.co.uk", true }, { "mariouniversalis.fr", true }, @@ -77924,6 +89376,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marismenos.tk", true }, { "maritiemshertogenbosch.nl", true }, { "maritime-mea.com", true }, + { "maritime-zone.com", true }, { "maritlarsen.ml", true }, { "maritlarsen.tk", true }, { "marius-schmalz.de", true }, @@ -77932,6 +89385,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marix.ro", true }, { "marizaikonomi.tk", true }, { "marj3.com", true }, + { "marjadeleeuw.nl", true }, { "marjanne.tk", true }, { "marjeta-gurtner.ch", true }, { "marjoleindens.be", true }, @@ -77943,29 +89397,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mark-a-hydrant.com", true }, { "mark-armstrong-gaming.com", true }, { "mark-dietzer.de", true }, - { "mark-goeder-tarant.com", true }, { "mark-semmler.de", true }, + { "mark07.com", true }, { "mark1998.com", true }, - { "markaconnor.com", true }, - { "markadamoda.com", true }, { "markandrosalind.co.uk", true }, { "markantalyamasajsalonu-bayanmasoz-cim.cf", true }, + { "markco.fi", true }, { "markdain.net", true }, - { "markdaine.com", true }, - { "markdaine.net", true }, { "markdixon.name", true }, { "markecubanos.com", true }, { "markedplassen.no", true }, { "markellos-olive.gr", true }, - { "markenet.co", false }, + { "markenet.co", true }, { "markentier.tech", true }, { "markepps.com", true }, { "market-garden.tk", true }, { "market.android.com", true }, - { "marketadvisory.com.au", true }, - { "marketbar.ie", true }, + { "marketadvisory.com.au", false }, { "marketbasket.tk", true }, { "marketcavalli.it", true }, + { "marketcrypto.id", true }, + { "marketerprofesional.com", false }, { "marketespace.fr", false }, { "marketfeed.news", true }, { "marketforce.com", true }, @@ -77975,45 +89427,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marketia.ml", true }, { "marketing-2.de", true }, { "marketing-advertising.eu", true }, + { "marketing-schools.org", true }, { "marketing1-0-1.com", true }, { "marketing4trends.com", true }, { "marketingautomationplan.nl", true }, { "marketingbab.com", true }, { "marketingbrandingnews.com", true }, { "marketingbrandingnews.net", true }, + { "marketingcareeredu.org", true }, { "marketingco.nl", true }, { "marketingconcafe.com", true }, { "marketingdesignu.cz", true }, { "marketingdigitalefisiente.com", true }, { "marketingdominante.com.br", true }, - { "marketingfacile.space", true }, { "marketingforfood.com", true }, - { "marketinghaters.com", true }, { "marketingmd.com", true }, { "marketingmind.in", true }, { "marketingpalace.tk", true }, { "marketingproducts.review", true }, - { "marketingprofesszorok.hu", true }, - { "marketingseo.fr", true }, { "marketingstrategy.gq", true }, { "marketingtrendnews.com", true }, + { "marketingtutor.net", true }, { "marketingvirtuales.com", true }, { "marketingwelt-lipp.de", true }, { "marketingypublicidaddigital.com.mx", true }, { "marketio.ai", true }, { "marketizare.ro", true }, { "marketking.ga", true }, - { "marketmakers.se", true }, + { "marketlocal.ly", true }, { "marketmotion.com.au", true }, + { "marketnews.com", true }, + { "marketone.com", true }, { "marketplace.org", true }, { "marketplace.tf", true }, + { "marketplacetue.nl", true }, + { "marketresearch.biz", true }, { "marketsearch.ga", true }, + { "marketsnerd.com", true }, { "marketsosyali.tk", true }, + { "markettailor.io", true }, { "marketvalue.gq", true }, + { "marketvolume.com", true }, { "marketyourcup.com", true }, { "markfietje.eu", true }, { "markfisher.photo", true }, - { "markfisherauthor.com", true }, { "markhaehnel.de", true }, { "markhedrick.com", true }, { "markholden.guru", true }, @@ -78035,18 +89492,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marklauman.ca", false }, { "marklehane.com", true }, { "markllego.com", true }, + { "markmet.fi", true }, { "markmetcalfe.io", true }, + { "markmorris.com.au", true }, { "markocloud.com", true }, { "markoglou.com.gr", true }, { "markoh.co.uk", true }, + { "markov.com.ru", true }, { "markprof.ru", true }, { "markpulido.net", true }, { "markri.nl", true }, { "markridgwell.co.uk", true }, { "markridgwell.com", true }, - { "markrobin.de", true }, - { "markrussellwebservice.com", true }, - { "marksass.de", true }, + { "markrobin.de", false }, + { "marks.sa", true }, + { "marksa.net", true }, { "markshroyer.com", true }, { "marksm.it", true }, { "marksmanhomes.com", true }, @@ -78054,14 +89514,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "markstevenkirk.com", true }, { "markstickley.co.uk", true }, { "markt-heiligenstadt.de", false }, + { "markt8asten.nl", true }, { "marktcontact.com", true }, { "markterweele.nl", true }, { "marktgemeinde-glonn.de", true }, { "marktgorman.com", true }, { "marktguru.at", true }, { "marktguru.de", true }, + { "marktissink.nl", true }, { "markup-ua.com", true }, { "markus-blog.de", true }, + { "markus-dope.de", true }, + { "markus-enzweiler.de", true }, { "markus-keppeler.de", true }, { "markus-musiker.de", true }, { "markus-ullmann.de", true }, @@ -78075,17 +89539,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "markuskeppeler.no-ip.biz", true }, { "markuslintula.fi", true }, { "markusmani.tk", true }, - { "markuspooch.de", true }, { "markusribs.com", true }, { "markusritzmann.ch", true }, { "markusueberallassetmanagement.de", true }, { "markusueberallconsulting.de", true }, { "markusweimar.de", true }, { "marlboroughchamber.nz", true }, - { "marlboroughchamber.org", true }, { "marlboroughfarmersmarket.tk", true }, - { "marleenjacobi.de", false }, + { "marlen.cz", true }, { "marlenefavela.tk", true }, + { "marlenekrasa.com", true }, { "marliesfens.nl", true }, { "marliesslomp.nl", true }, { "marlosoft.net", true }, @@ -78093,11 +89556,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marmarahaberleri.tk", true }, { "marmelo.digital", true }, { "marmista.roma.it", true }, + { "marmitariaveganfood.com.br", true }, + { "marmitethegreyhound.com", true }, { "marmo.tk", true }, { "marmotte.love", true }, - { "marmuif.fr", false }, { "marmurmedical.com", true }, - { "marneetgondoireathletisme.fr", true }, { "marny.eu", true }, { "marocallo.com", true }, { "marocfoot.net", true }, @@ -78105,34 +89568,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marocnews.tk", true }, { "marocweb.tk", true }, { "maroebeni.tk", true }, - { "marokkaansearganolie.nl", true }, { "marolu.one", true }, { "maroochydorecentre.com", true }, { "maroochydorecitycenter.com", true }, { "maroochydorecitycenter.com.au", true }, { "maroochydorecitycentre.com", true }, + { "maroochydorecitycentre.com.au", true }, { "maroochydorecitycentre.net.au", true }, { "maroquineriepirlot.be", false }, { "maroshionline.tk", true }, { "maroussia.tk", true }, { "marouviere.fr", true }, { "marpa-wohnen.de", true }, + { "marplo.net", true }, { "marqperso.ch", true }, { "marqueandbrew.com", true }, + { "marqued.com", true }, { "marquepersonnelle.ch", true }, - { "marquesalcantara.adv.br", true }, { "marqueswines.co.uk", true }, { "marquimanagement.com", true }, { "marquisepools.com", true }, { "marrai.de", true }, { "marrakech-camel-trips.com", true }, + { "marrakechairporttransfer.com", true }, + { "marrakeche.com", true }, + { "marredesefairebaladersurlenet.com", true }, { "marriage-shrine.jp", true }, + { "marriagedua.com", true }, { "marriageinchrist.com", true }, + { "marriageistikhara.com", true }, { "marrickvilleapartments.com.au", true }, { "marronniergate.com", true }, { "marropax.com", true }, - { "marry-fox.com", true }, { "marryfox.net", true }, + { "mars-infos.org", true }, { "mars.army", true }, { "mars.navy", true }, { "marsafc.tk", true }, @@ -78141,10 +89610,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marseillekiteclub.com", true }, { "marshaiargentina.com", true }, { "marshall-allman.tk", true }, + { "marshallcoms.gov", true }, { "marshallcountyillinois.gov", true }, { "marshallcountywv.gov", true }, { "marshallruskwi.gov", true }, { "marshallscastles.com", true }, + { "marshallsheriffms.gov", true }, { "marshallwilson.com", true }, { "marshfieldvillagevt.gov", true }, { "marshfieldvt.gov", true }, @@ -78159,19 +89630,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marta-chat.ga", true }, { "marta.uz", false }, { "martacooks.com", true }, + { "martapratsmakeup.com", true }, { "martasibaja.com", true }, + { "martastroll.com", true }, { "martdev.com", true }, { "martec.dk", true }, { "martel-innovate.com", false }, { "martelange.ovh", true }, { "martellosecurity.com", true }, - { "martelus.com", true }, { "martemeo-wetterau.de", true }, - { "marten-buer.de", false }, - { "martensmxservice.nl", true }, { "martensson.io", true }, - { "marthajackson.co.uk", true }, + { "martesanamilano.com", true }, { "marthakenney.com", true }, + { "marthas.sale", true }, { "marthasvillemo.gov", true }, { "marti201.ga", true }, { "martial-arts.tk", true }, @@ -78182,7 +89653,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "martian.tk", true }, { "martide.com", true }, { "martijnschreuders.tk", true }, + { "martijnvanderzande.nl", true }, { "martijnvdputten.tk", true }, + { "martin-burger.net", true }, { "martin-caslavsky.tk", true }, { "martin-loewer.de", true }, { "martin-mattel.com", true }, @@ -78199,26 +89672,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "martincernac.cz", true }, { "martincornelissen.tk", true }, { "martindales.ltd.uk", true }, - { "martindano.com", true }, - { "martindoe.pl", true }, { "martine.nu", true }, { "martinebot.com", true }, { "martinelias.cz", true }, { "martineric.tk", true }, + { "martinfresow.de", true }, { "martinhal.cn", true }, - { "martinhal.cz", true }, - { "martinhal.pl", true }, + { "martinhal.com", true }, { "martinhalfamilyblog.com", true }, { "martinhalholiday.com", true }, { "martinhalliving.com", true }, { "martinhalpropertysales.com", true }, { "martinhalresidences.com", true }, - { "martinhalsagres.com", true }, { "martinhaunschmid.com", false }, { "martinho.tk", true }, { "martinishotpodcast.com", true }, { "martinkunc.tk", true }, { "martinkus.eu", true }, + { "martinlukes.cz", true }, + { "martinmawbycurtaintracks.co.uk", true }, { "martinmuc.de", true }, { "martino.ga", true }, { "martinploug.dk", true }, @@ -78229,6 +89701,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "martinschurdak.tk", true }, { "martinsferryoh.gov", true }, { "martinstepar.cz", true }, + { "martinsvillebulletin.com", true }, { "martinus.cafe", true }, { "martinverkerkonline.tk", true }, { "martinvillalba.com", true }, @@ -78254,6 +89727,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marvaco.ga", true }, { "marvaco.tk", true }, { "marvelcargiveaways.co.uk", true }, + { "marveld.nl", true }, { "marvelmoviemarathon.com", true }, { "marvelo.cf", true }, { "marvelweed.ru", true }, @@ -78279,72 +89753,92 @@ static const nsSTSPreload kSTSPreloadList[] = { { "marvnetforum.gq", true }, { "marvnetforum.ml", true }, { "marvnetforum.tk", true }, + { "marvos.se", true }, { "marw.org", true }, + { "marwadionline.com", true }, { "marxist.party", true }, { "marxists.org", true }, { "marxmyths.org", true }, { "marxpark.tk", true }, { "mary-e-kay.tk", true }, { "maryamghorbani.com", true }, + { "maryannhaircpa.com", true }, { "marycliffpress.com", true }, { "marycowanceramics.com", true }, - { "maryeclark.com", true }, { "maryeileen90.party", true }, { "maryeileenkelly.com", true }, + { "maryetmarc.fr", true }, { "maryhaze.net", true }, { "marykatrinaphotography.com", true }, { "marykirsch.net", true }, { "marylandbasementandcrawlspacewaterproofing.com", true }, + { "marylandcomptroller.gov", true }, + { "marylandtaxes.gov", true }, { "marylandtraditions.org", true }, + { "maryleemacdonald.org", true }, { "maryluzturismo.co", true }, { "marymaloney.tk", true }, { "marypierce.tk", true }, { "maryrock.net", true }, + { "maryrose.org", true }, + { "marysvilleks.gov", true }, { "marytetzstore.com.br", true }, { "marywet.net", true }, + { "marzio.co.za", true }, + { "mas.be", true }, + { "mas.bg", true }, + { "masadaoffensive.com", true }, { "masafarms.com", true }, { "masajilanver.tk", true }, { "masakanibu.ga", true }, { "masakigarden.com", true }, { "masalaband.tk", true }, { "masaloku.com.tr", true }, + { "masanteadelavenir.fr", true }, { "masantefinanciere.com", true }, { "masanunciosimpresos.com", true }, { "masarik.sh", true }, { "masaze-hanka.cz", true }, + { "masazomiestas.lt", true }, { "mascarablond.tk", true }, { "mascarbo.tk", true }, { "mascarillas.blog", true }, + { "mascenter.xyz", true }, { "maschine.email", true }, { "maschinen.email", true }, + { "maschinensucher.de", true }, { "mascorazon.com", true }, - { "mascosolutions.com", true }, { "mascotarios.org", true }, { "mascoteando.net", true }, + { "masculina.com.br", true }, { "masdemariette.com", true }, { "masdemexico.com", true }, - { "masdull.net", true }, { "masduta.co", true }, { "masdzub.com", true }, + { "masepps.pe", true }, { "maservant.net", true }, + { "masfloss.net", true }, { "mashairi.co.ke", true }, { "mashandco.it", true }, { "mashandco.tv", true }, { "masharphomecooking.com", true }, { "mashcl.com", true }, { "mashek.net", true }, + { "mashin.al", true }, { "mashinavremeni.ml", true }, + { "mashine-art.ru", true }, { "mashinist.tk", true }, { "mashonkavortu.tk", true }, { "mashoom.co.uk", true }, - { "mashrlab.com", true }, - { "mashrmail.com", true }, { "mashtibax.ga", true }, + { "masimo.com", true }, + { "masinaspalat.info", true }, { "masiniunelte.store.ro", true }, { "masinky.tk", true }, { "masite.net", true }, { "masiul.is", true }, { "mask-skin.tk", true }, + { "masked.love", true }, { "maskedemail.nl", true }, { "maskedworld.tk", true }, { "maskerking.com", true }, @@ -78358,12 +89852,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "masmusica.tk", true }, { "masmusicaradio.tk", true }, { "maso-corto.com", true }, + { "masob.site", true }, + { "masoftware.ddns.net", true }, { "masoncountyil.gov", true }, { "masoncountywa.gov", true }, { "masoncountywaelections.gov", true }, { "masoncountywv.gov", true }, { "masonkysheriff.gov", true }, - { "masquerade.site", false }, + { "masqueless.org", true }, { "masqueradecostumes.tk", true }, { "masrilanguage.tk", true }, { "masrud.com", true }, @@ -78371,7 +89867,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mass.pt", true }, { "massaer.tk", true }, { "massage-californien.tk", true }, - { "massage-chair-relief.com", true }, { "massage-colleges.com", true }, { "massage-la-clusaz.com", true }, { "massage-technique.tk", true }, @@ -78383,25 +89878,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "massagecupping.com", true }, { "massagegunadvice.com", true }, { "massagekartan.ga", true }, + { "massagepraktijkamyklappe.nl", true }, + { "massages-du-monde-charente.fr", true }, + { "massagespaindia.com", true }, + { "massagetherapylicense.org", true }, { "massagetherapyschoolsinformation.com", true }, { "massagik.ml", true }, { "massanews.com", true }, { "massapothecary.com", true }, - { "massar.family", true }, { "massauditor.gov", true }, { "massazh.cf", true }, + { "massbank.eu", true }, { "massconsultores.com", true }, { "masse.org", true }, { "massflix.com", true }, { "massfone.com", true }, - { "masshiro.blog", true }, { "masshost.tk", true }, { "massive.tk", true }, { "massiveanalyser.com", true }, { "massiveassault.tk", true }, - { "massiveink.nl", true }, { "masskick.ga", true }, { "massmurder.tk", true }, + { "massmutualascend.com", true }, + { "massolutions.pro", true }, + { "masspingtool.com", true }, { "masstercurssos.com", true }, { "massvow.com", true }, { "masta.ch", false }, @@ -78410,44 +89910,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mastd.fr", true }, { "mastd.me", false }, { "mastd.onl", true }, + { "mastdatabase.co.uk", true }, { "mastdi.eu", true }, + { "mastelic.net", true }, { "mastellone.us", true }, { "master-net.org", true }, { "master-tmb.ru", true }, + { "master.cz", true }, + { "master.shop", true }, { "masteranimal.tk", true }, { "mastercardpac.com", true }, { "mastercareplus-demo.com", true }, + { "mastercareplus-staging.com", true }, { "mastercareplus-uat.com", true }, { "mastercareplus.com", true }, - { "mastercheat.net", true }, { "mastercomfig.com", true }, { "masterdan.net", true }, + { "masterdc.com", true }, { "masterdemolitioninc.com", true }, { "masterdesingweb.tk", true }, { "masterdigitale.com", true }, { "masterdistillers.net", true }, { "masterdrilling.com", true }, { "mastere.tn", true }, + { "masterflitzer.xyz", true }, { "masterglasses.ru", true }, + { "mastergrampartners.com", true }, { "masterhelenaroma.com", true }, { "masterimperia.com", true }, { "masterin.it", true }, + { "masteringenieriadelfuego.es", false }, + { "masterise.tv", true }, { "masterjuantex-projects.tk", true }, { "masterkitchen.com.br", true }, { "masternetix.ga", true }, + { "masternetltd.com", true }, { "masterofallscience.com", true }, { "masterofazoth.tk", true }, { "masterofbytes.ch", true }, { "masterpassword.org", true }, - { "masterpizzaiolo.com.br", true }, + { "masterpieceessays.com", true }, { "masterplc.com", true }, - { "masterpro1.ru", true }, + { "masterproseo.ru", true }, + { "masterpsylogos.ru", true }, { "masterquest.tk", true }, { "masters-burrell.co.uk", true }, - { "masters.black", true }, + { "masters-education.com", true }, + { "masters-in-special-education.com", true }, { "mastersadistancia.com", true }, - { "mastersofmedia.nl", true }, + { "mastersindatascience.org", true }, + { "mastersinesl.org", true }, + { "mastersinlibraryscience.net", true }, + { "mastersofscale.com", true }, { "mastersplace.tk", true }, + { "mastersservices.com", true }, { "masterstation.net", true }, { "mastersthesiswriting.com", true }, { "masterstruckingacademy.com", true }, @@ -78455,31 +89971,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mastertent.com", true }, { "masterton.com.au", true }, { "mastertutoriales.com", false }, + { "masterunblock.com", false }, + { "masterurist.ru", true }, { "mastervision.tk", true }, { "masterwank.com", true }, { "masterwayhealth.com", true }, { "mastiffingles.com.br", true }, + { "mastips.cl", true }, + { "mastodon-poradnik.pl", true }, + { "mastodon.au", true }, { "mastodon.blue", false }, - { "mastodon.co.nz", false }, - { "mastodon.expert", true }, + { "mastodon.com.pl", true }, + { "mastodon.cr", true }, + { "mastodon.ee", true }, { "mastodon.fun", true }, - { "mastodon.my", true }, { "mastodon.org.uk", true }, - { "mastodon.pl", true }, + { "mastodon.pizza", true }, + { "mastodon.pl", false }, { "mastodon.top", true }, { "mastodon.uno", true }, - { "mastodonperu.xyz", true }, { "mastodont.tk", true }, { "mastpartners.com", true }, - { "masturbatorsareus.com", true }, { "masuclub.jp", true }, { "masuclub.net", true }, { "masumreza.tk", true }, { "masun.org", true }, { "maswali.com", true }, - { "maszdobro.pl", true }, { "mat-berenbostel.de", true }, { "mat.com.vn", true }, + { "mat.services", true }, { "mat.tt", true }, { "mat99.dk", true }, { "mata-i-nautisme.fr", true }, @@ -78488,45 +90008,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matanz.de", true }, { "matanza.info", true }, { "matapacoin.org", true }, + { "matarbyte.se", true }, + { "matarees.com", true }, { "matarrosabierzo.com", true }, { "matatabimix.com", true }, { "matatall.com", true }, { "matc.net", true }, { "match.audio", true }, + { "match.by", true }, + { "match2meet.io", true }, { "matcha-iga.jp", true }, { "matcha14.com", true }, - { "matchatea24.com", true }, { "matchboxdesigngroup.com", true }, { "matchday.cz", true }, + { "matchflix.ch", true }, + { "matchimmo.fr", true }, { "matchlive.ga", true }, - { "matchmadeinstubton.com", true }, { "matchmeup.de", true }, + { "matchmove.com", true }, { "matchpointusa.com", true }, - { "matchupmagic.com", true }, - { "matdesign-prod.com", true }, + { "matco.ca", true }, + { "mate.academy", true }, { "mate.software", true }, + { "mateball.io", false }, { "matega.hu", true }, { "mateiko.by", true }, + { "matej-oliva.cz", true }, { "matejgroma.com", true }, { "matejkosiarcik.com", true }, { "matel.org", true }, { "matematik-ozel-ders.tk", true }, + { "matematikformulleri.com", true }, { "matematikkulubu.tk", true }, { "matematyka.wiki", true }, - { "matemonsac.com", true }, + { "matemonsac.com", false }, + { "mateoconlechuga.com", true }, { "materasocial.live", true }, { "materassi.roma.it", true }, + { "materassicatania.it", true }, { "materi.co.id", true }, { "materiaischiquinho.com.br", true }, + { "material-ui.com", true }, { "material-world-fuyouhin.com", true }, { "material.security", true }, - { "materialdesignlight.com", true }, - { "materialflow.com", true }, { "materialism.com", true }, { "materialyinzynierskie.pl", true }, { "materiel-grand-format.fr", true }, { "maternityfashion.in", true }, + { "maternoinfantile.online", true }, { "maternum.com", true }, + { "mateslibres.com", true }, + { "matetineamoi.fr", true }, { "mateuszchyla.pl", true }, { "mateuszmajewski.com", true }, { "mateuszpilszek.pl", true }, @@ -78537,47 +90069,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matgodt.no", true }, { "math-coaching.com", true }, { "math-colleges.com", true }, + { "math-drills.com", true }, { "math.hamburg", true }, { "mathalexservice.info", true }, { "mathavuzteknolojileri.com.tr", true }, - { "mathchall.net", true }, { "mathdf.com", true }, { "matheball.de", true }, { "mathebau.de", true }, { "mathebibel.de", true }, + { "mathechor.de", true }, + { "mathematica.org", true }, { "mathematik.rocks", true }, { "matheo-schefczyk.de", true }, { "mathers.ovh", true }, { "mathes.berlin", true }, { "matheusmacedo.ddns.net", true }, { "mathewlane.com", true }, - { "mathez.fr", false }, { "mathhire.org", true }, { "mathias.re", false }, { "mathiasbynens.be", true }, { "mathiasgarbe.de", true }, { "mathiasheise.de", true }, { "mathiaswagner.org", true }, - { "mathieu-marteau.fr", true }, + { "mathieu-marteau.fr", false }, { "mathieuchollet.eu", true }, + { "mathieugrant.com", true }, { "mathieuguimond.com", true }, { "mathieui.net", true }, { "mathijskingma.nl", true }, { "mathilderegis.fr", true }, - { "mathis.com.tr", true }, - { "mathiteia.com", true }, { "mathiveri.tk", true }, { "mathleaks.com", true }, { "mathleaks.se", true }, { "maths.network", true }, { "mathschool.lt", true }, + { "mathsensical.com", true }, { "mathsource.ga", true }, { "mathspace.co", true }, + { "mathswithcorne.com", true }, + { "mathteacheredu.org", true }, { "mathys.io", true }, { "mati.gq", true }, + { "mati.lol", true }, { "mati.tk", true }, { "matijakolaric.com", true }, - { "matildajaneclothing.com", true }, { "matildeferreira.co.uk", true }, { "matillat.ovh", true }, { "matindustrial.com", true }, @@ -78586,21 +90121,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matjaz.it", true }, { "matkuling.com", true }, { "matkuling.no", true }, - { "matlabhelper.com", true }, { "matlss.com", true }, { "matocmedia.com", true }, { "matok.me.uk", true }, + { "matolab.lt", true }, { "matomari.tk", true }, - { "matomeathena.com", true }, { "matopu.tk", true }, + { "matosinfo.com", true }, + { "matosinfo.fr", true }, { "matoutepetiteboutique.com", true }, { "matov.tk", true }, { "matovaya-pomada.ml", true }, { "matozone.com", true }, { "matpools.com", true }, { "matras.kiev.ua", true }, - { "matras.ru", true }, { "matratzentester.com", true }, + { "matreon.nl", true }, { "matrichelp.co.za", true }, { "matrieux.dk", true }, { "matrimonio.com", true }, @@ -78610,29 +90146,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matrimoniosriviera.com", true }, { "matrimonybest.com", true }, { "matriterie-sdv.ro", true }, + { "matrix-pm.com", true }, { "matrix-team.tk", true }, { "matrix.org", true }, { "matrix3dp.com", true }, { "matrix40.com", true }, - { "matrixautos.ng", true }, { "matrixbricks.com", true }, + { "matrixeditora.com.br", true }, + { "matrixengineered.com", true }, { "matrixfm.tk", true }, { "matrixglobalsms.com", true }, + { "matrixhealthcare.ca", true }, { "matrixmedia.ro", true }, { "matrixmold.com", true }, - { "matrixread.com", true }, - { "matrixreq.com", true }, + { "matrixpost.net", true }, + { "matrixread.com", false }, + { "matrixreq.com", false }, { "matronal.ru", false }, { "matroskin.ml", true }, - { "matroussedetoilette.com", true }, + { "matsson.com", true }, { "matsu-semi.com", true }, { "matsu.gov", true }, { "matsushima-kosodate.com", true }, { "matt-brooks.com", true }, { "matt-royal.com.cy", true }, - { "matt.gd", true }, { "matt.re", true }, - { "matt.wiki", true }, { "mattab.xyz", true }, { "mattadams.info", true }, { "mattajones.com", true }, @@ -78642,14 +90180,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mattatoio.eu", true }, { "mattberryman.org", true }, { "mattbiscay.com", true }, - { "mattcamron.com", true }, + { "mattbsg.xyz", true }, { "mattcoles.io", true }, { "mattconstruction.com", true }, { "mattcorallo.com", true }, { "mattcorp.com", true }, - { "mattcronin.co.uk", true }, { "mattdbarton.com", true }, - { "mattdrew.org", true }, { "mattelek.com", true }, { "mattelekharris.com", true }, { "mattentaart.tk", true }, @@ -78657,14 +90193,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matteomarescotti.it", true }, { "matteosaturn.com", true }, { "matteozinnia.it", true }, - { "matterhorn-test.com", true }, { "mattersource.com", true }, { "mattessons.co.uk", true }, { "mattferderer.com", true }, + { "mattfiore.com", true }, { "mattga.ca", true }, + { "mattgemmell.com", true }, { "matthew-carson.info", true }, { "matthew-cash.com", true }, - { "matthewbenchimol.com", true }, { "matthewberry.co.za", true }, { "matthewburket.com", true }, { "matthewcollins.me", true }, @@ -78672,35 +90208,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "matthewgallagher.co.uk", true }, { "matthewgraybosch.com", true }, { "matthewgrow.com", true }, + { "matthewhaeck.com", true }, { "matthewimaniphotography.ga", true }, + { "matthewj.ca", true }, { "matthewkairys.com", true }, { "matthewkenny.co.uk", true }, { "matthewkerley.com", true }, - { "matthewlai.ca", true }, - { "matthewlanders.florist", true }, { "matthewlankford.com", true }, - { "matthewohare.com", true }, + { "matthewljiang.com", true }, + { "matthewohare.com", false }, + { "matthewoliver.com", true }, { "matthewoshea.tk", true }, { "matthewprenger.com", true }, { "matthewrochow.com", true }, { "matthewsaeger.com", true }, - { "matthewselby.com", true }, { "matthewsfuneralhome.com", true }, + { "matthewtester.com", true }, { "matthewthode.com", true }, { "matthewthode.net", true }, { "matthewthode.org", true }, { "matthey.nl", true }, + { "matthi.coffee", true }, { "matthi3u.xyz", true }, + { "matthias-lohr.com", true }, { "matthias-muenzner.de", true }, { "matthias-wimmer.de", true }, { "matthiasadler.info", true }, - { "matthiasbeck.com", true }, { "matthiaserb.com", true }, + { "matthiaslohr.net", true }, { "matthiasmueller.me", true }, { "matthiasott.ch", true }, { "matthiasott.com", true }, { "matthiasschwab.de", true }, { "matthiasweiler.de", false }, + { "matthiaswillemsen.me", true }, { "matthieu-munoz.fr", true }, { "matthieuchedidweb.tk", true }, { "matthieuschlosser.fr", true }, @@ -78716,37 +90257,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mattmoorcroft.com", true }, { "mattmorrissound.co.uk", true }, { "mattnetwork83.com", true }, - { "matton-ict.nl", true }, { "mattonline.me", true }, { "mattpippen.com", true }, { "mattprice.eu", true }, + { "mattquintanilla.xyz", true }, + { "mattres.com", true }, + { "mattresscleaningcampsbay.co.za", true }, + { "mattresscleaningcapetown.co.za", true }, + { "mattresscleaningdurban.co.za", true }, + { "mattresscleaninghoutbay.co.za", true }, + { "mattresscleaningseapoint.co.za", true }, + { "mattresscleaningwesterncape.co.za", true }, + { "mattressdiscounters.com", true }, + { "mattressfirm.org", true }, + { "mattressfundraiser.net", true }, { "mattressman.co.uk", true }, + { "mattressomni.ng", true }, + { "mattrubin.me", true }, { "mattrude.com", true }, - { "matts.contact", true }, - { "matts.wiki", true }, - { "mattsavin.me", false }, + { "matts.systems", true }, + { "matts.world", true }, + { "mattsavin.me", true }, { "mattshi.com", true }, - { "mattsmotorclub.com", true }, + { "mattslack.me", true }, { "mattsvensson.com", true }, + { "mattwill.be", true }, { "matucloud.de", true }, { "matuntu.ml", true }, + { "mature-lovers.com", true }, + { "mature-orgasm.com", true }, + { "matureasspics.com", true }, + { "maturebbwtube.com", true }, + { "maturebigass.com", true }, + { "maturecharm.com", true }, + { "maturefucktube.com", true }, + { "maturegrandtube.com", true }, + { "matureladiespics.com", true }, + { "matureporn-videos.com", true }, + { "matureporn.com", true }, + { "maturepornpics.com", true }, + { "maturepussypics.com", true }, + { "maturetube.tv", true }, + { "maturexthumbs.com", true }, { "matuslab.net", true }, { "matway.com", true }, { "matway.net", true }, { "matyldamost.cz", true }, { "matze.co", true }, { "matze.org", false }, + { "matzoos.com", true }, { "mau.chat", true }, { "mau.fi", true }, { "mau.life", true }, { "mau.lu", true }, { "mau.photos", true }, { "maubot.xyz", true }, - { "maudfourier.com", true }, + { "maudfourier.com", false }, { "mauditeboisson.tk", true }, { "maudok.gov", true }, { "mauhalito.tk", true }, { "mauicharm.com", true }, + { "mauioceancenter.com", true }, { "mauldincookfence.com", true }, { "mauletsmallorca.tk", true }, { "maumovie.ml", true }, @@ -78766,35 +90337,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mauriciotoussaint.tk", true }, { "mauriciotoussaintarte.tk", true }, { "mauroalejandro.co", true }, + { "mauronovellas.es", true }, { "maurovacca.com", true }, + { "maurrikone.com", true }, { "maury-moteurs.com", true }, { "mausmani.tk", true }, { "mausoleum.ga", true }, { "maut1.de", true }, + { "mauto.md", true }, { "maveeranpasupathi.tk", true }, + { "maven-cap.com", true }, { "maven.ng", false }, { "mavenclinic.com", true }, - { "mavensecurity.com", true }, { "mavente.fr", true }, + { "maventrading.com", true }, { "mavenvets.co.uk", true }, + { "mavericklabel.com", true }, + { "maverickmobilemechanics.com", true }, { "maveris.com", false }, { "maviepearl.net", true }, { "mavrick.tk", true }, { "mavro.cf", true }, { "mavro.ga", true }, { "mavro.gq", true }, - { "mawidabp.com", true }, { "mawinguhost.co.ke", true }, + { "mawkebaljalal.com", true }, { "mawo.olkusz.pl", true }, { "mawrex.tech", true }, { "max-anime.tk", true }, { "max-apk.com", false }, - { "max-it.fr", true }, + { "max-cafe.cz", true }, { "max-moeglich.de", true }, { "max-went.pl", true }, { "max.gov", true }, { "max00365.com", true }, - { "max0365.com", false }, { "max11365.com", false }, { "max1365.com", false }, { "max22365.com", false }, @@ -78812,16 +90388,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "max88365.com", false }, { "max9365.com", false }, { "max96.de", true }, + { "maxaro.nl", true }, { "maxb.fm", true }, - { "maxbeenen.de", true }, { "maxbike.tk", true }, + { "maxboobs.com", true }, { "maxbruckner.de", true }, { "maxbruckner.org", true }, + { "maxbuelk.de", true }, { "maxbytes.nl", false }, { "maxchan.info", true }, { "maxclean.ml", true }, { "maxcleaning.be", true }, - { "maxclers.com", true }, { "maxdargent.com", true }, { "maxdata.pt", true }, { "maxedgymequipment.com", true }, @@ -78831,10 +90408,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maxhamon.ovh", true }, { "maxhoechtl.at", true }, { "maxhorvath.com", true }, + { "maxi-retail.ru", true }, { "maxibanki.ovh", true }, { "maxico.tk", true }, { "maxiglobal.net", true }, { "maxihide.tk", true }, + { "maxihyp.de", true }, + { "maxim.live", true }, { "maxima.at", false }, { "maximababy.de", true }, { "maximalsparen.com", true }, @@ -78850,24 +90430,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maximilian-greger.com", true }, { "maximilian-staedtler.de", true }, { "maximiliancole.tk", true }, + { "maximiliangaedig.com", true }, { "maximiliankaul.de", true }, { "maximiliankrieg.de", true }, { "maximoguk.com", true }, { "maximosilupu.tk", true }, - { "maximov.space", false }, { "maximovie.eu", true }, { "maxims-travel.com", true }, { "maximumcontrol.nl", true }, { "maximumphysiotherapy.com", true }, { "maximusconstrutora.com.br", true }, { "maximusrose.com", true }, + { "maxindo.net.id", true }, { "maxinesbydennees.com", true }, { "maxipcalls.com", false }, { "maxipro.ru", true }, { "maxiservak.ml", true }, { "maxisito.it", true }, { "maxivisor.ga", true }, - { "maxjacobs.com.au", false }, + { "maxjacobs.com.au", true }, { "maxkaul.de", true }, { "maxlaumeister.com", true }, { "maxley.yachts", true }, @@ -78876,7 +90457,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maxmatthe.ws", true }, { "maxmilton.com", true }, { "maxmind-test.com", true }, - { "maxmoda.eu", true }, { "maxmuen.de", true }, { "maxmusic.tk", true }, { "maxmusical.ml", true }, @@ -78885,21 +90465,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maxopolyworldnews.com", true }, { "maxp.info", false }, { "maxpl0it.com", true }, + { "maxpoint.it", true }, { "maxportal.tk", true }, { "maxprog.com", true }, + { "maxqda.com", true }, + { "maxqda.de", true }, + { "maxr1998.de", false }, { "maxrandolph.com", true }, { "maxrickettsuy.com", true }, { "maxrider.tk", true }, { "maxroganov.tk", true }, { "maxs.com", true }, + { "maxschleiffer.com", true }, + { "maxtransport.az", true }, { "maxtruxa.com", true }, { "maxundlara.at", true }, { "maxundlara.com", true }, { "maxundlara.eu", true }, { "maxundlara.org", true }, + { "maxuniverse.de", true }, + { "maxus.com.py", true }, { "maxus.tk", true }, { "maxvaluedeals.com", true }, - { "maxverboom.nl", true }, { "maxwaellenergie.de", true }, { "maxweiss.io", true }, { "maxwell-english.co.jp", false }, @@ -78907,31 +90494,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "maxwellcity.cf", true }, { "maxwellcity.ga", true }, { "maxwellcity.ml", true }, - { "maxwellcody.com", true }, { "maxwellmoore.co.uk", true }, { "maxwittfeld.tech", true }, + { "may-tree.ru", true }, { "may24.tw", true }, { "mayaimplant.com", true }, { "mayamaibach.org", true }, { "mayamushrooms.co.uk", true }, + { "mayanaturopathy.co.uk", true }, { "mayanet.tk", true }, { "mayarocabletv.com", true }, { "mayaroconstituency.org", true }, { "mayashoefke.tk", true }, { "mayavi.co.in", true }, { "maybeonline.de", true }, - { "maybeshewill.org", true }, { "maybeshewill.xyz", true }, { "maybeul.com", true }, { "mayblossom.net", true }, { "maycarivero.com", true }, + { "maycottagebedandbreakfast.com", true }, { "maydaystrategies.com", true }, { "maydex.info", true }, { "mayerbrownllz.com", true }, + { "mayfieldheightsohio.gov", true }, { "mayflowerbocawina.tk", true }, { "mayflowercreative.com", true }, { "mayflowerfairytales.com", true }, - { "mayhutmuibep.com", true }, { "mayito.tk", true }, { "mayki.ga", true }, { "maykitut.tk", true }, @@ -78941,12 +90529,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mayomarquees.com", true }, { "mayopartyhire.com", true }, { "mayorcahill.com", true }, - { "mayorscouncil.ca", true }, { "mayre-idol.tk", true }, - { "mayrhofer.eu.org", false }, + { "mayrhofer.eu.org", true }, { "mayrivermontessori.com", true }, { "maysambotros.tk", true }, - { "maytalkhao.com", true }, + { "mayslandingcornholeleague.com", true }, { "maythai.eu", true }, { "maythai.pl", true }, { "maytretrungphuong.com", true }, @@ -78954,83 +90541,113 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mayx.eu.org", true }, { "mazartdesign.tk", true }, { "mazavto.ml", true }, + { "mazcue.com", false }, { "mazda-mps.de", true }, { "mazda-thermote.com", true }, { "mazda626.net", true }, { "mazdaofgermantown.com", true }, { "mazdel.tk", true }, + { "maze.com.br", true }, { "maze.fr", false }, + { "mazenitude.fr", true }, { "mazepa.ml", true }, { "mazhab.tk", true }, { "mazik.tk", true }, { "mazken.tk", true }, { "mazloum.adv.br", true }, + { "mazouttank.be", true }, { "mazternet.ru", true }, { "mazurlabs.tk", true }, { "mazury-invest.pl", true }, { "mazzotta.me", true }, + { "mb-amenagements.be", true }, + { "mb-coaching-berlin.de", true }, { "mb-demo.net", true }, { "mb-is.info", true }, { "mb-server.de", true }, + { "mb-t.net", true }, { "mb300sd.com", true }, { "mb300sd.net", true }, { "mbaasy.com", true }, { "mbaestlein.de", true }, { "mbainflatables.co.uk", true }, - { "mbanq.com", true }, + { "mbalaw.pl", true }, + { "mbanogmat.com", true }, { "mbar.us", true }, + { "mbarbadun.es", false }, { "mbardot.com", false }, { "mbasic.facebook.com", false }, - { "mbc.asn.au", true }, { "mbcars.be", false }, { "mbci.gov", true }, { "mbcoaching40.fr", true }, + { "mbcom.de", true }, { "mbd2021cm.com", true }, { "mbda.gov", true }, + { "mbddash-staging.azurewebsites.net", true }, + { "mbdou50.ru", true }, { "mbdrogenbos-usedcars.be", true }, { "mbed.com", true }, + { "mbed.org", true }, { "mbedcloud.com", true }, { "mbedcloudintegration.net", true }, { "mbeo.ch", false }, { "mbfiles.tk", true }, + { "mbi.nl", true }, { "mbilker.us", true }, { "mbinf.de", false }, { "mbinformatik.de", false }, + { "mbjeng.com", false }, { "mbk.net.pl", true }, { "mblankhorst.nl", true }, { "mble.mg", true }, - { "mbombela.gov.za", true }, + { "mbmassageterapi.se", true }, + { "mbpskill.co.id", true }, { "mbr-net.de", true }, + { "mbr.moe", true }, { "mbr.pw", true }, { "mbrd.de", true }, { "mbrental.fr", true }, { "mbrjun.cn", true }, - { "mbs-inari.com", true }, { "mbsec.net", true }, + { "mbsunu.com", true }, { "mbsync4supply.com", true }, { "mbt-constructions.co.uk", true }, { "mbtaadvisoryboard.gov", true }, + { "mbudy.in", true }, { "mburaks.com", true }, { "mburns.duckdns.org", true }, + { "mbvelden.nl", true }, + { "mbw.org.au", true }, { "mbwemmel-usedcars.be", true }, { "mbwsignup.com", true }, { "mc-auth.com", true }, + { "mc-connect.net", true }, { "mc-dos.ru", true }, { "mc-jobs.net", true }, + { "mc-mods.org", true }, + { "mc-sin.ch", true }, { "mc-teemocraft.tk", true }, { "mc.ax", true }, { "mc007.xyz", true }, + { "mc2informatique.fr", true }, { "mc4free.cc", true }, - { "mc5zvezd.ru", false }, + { "mc5zvezd.ru", true }, { "mcagon.tk", true }, - { "mcalestergrazing.company", true }, + { "mcahm.eu.org", true }, + { "mcalert.in", true }, { "mcaps-mn.gov", true }, { "mcb-bank.com", true }, + { "mcbbs.wiki", true }, { "mcbe.ninja", true }, { "mcblain.ca", true }, { "mcblain.com", true }, { "mcbooks.vn", false }, - { "mccarthystonefoundation.org", true }, + { "mccannhealth.com", true }, + { "mccannworldgroup.com", true }, + { "mccarthyprestige.com.au", true }, + { "mccarthystonefoundation.org", false }, + { "mccinc.ca", true }, + { "mcclaincountyok.gov", true }, { "mccn.pp.ua", true }, { "mccommando.tk", true }, { "mcconciergerie.com", true }, @@ -79042,17 +90659,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcculloughsgolf.com", true }, { "mccurtainems.gov", true }, { "mcdanieldevelopmentservices.com", true }, + { "mcdean.com", true }, { "mcdeed.net", true }, { "mcdermottautomotive.com", true }, { "mcdgenclikkulubu.org", true }, { "mcdona1d.me", true }, { "mcdonaldcountymissouri.gov", true }, - { "mcdonalds.be", true }, { "mcdonalds.cloud", true }, + { "mcdonalds.co.il", true }, { "mcdonalds.design", true }, - { "mcdonaldwhsl.com", false }, { "mcdowellcountyncboe.gov", true }, { "mcdowellcountywv.gov", true }, + { "mcdowellnews.com", true }, + { "mcdpromotion.ca", true }, { "mcdreamcity.com", true }, { "mcdsg.net", true }, { "mcduff.ga", true }, @@ -79061,13 +90680,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mce55.eu", true }, { "mcea-hld.jp", true }, { "mceconferencecentre.eu", true }, + { "mcemyigit.com.tr", true }, { "mcescher.com", true }, { "mceyedol.tk", true }, { "mcfallout.ru", true }, { "mcfarlow.sk", true }, { "mcfipvt.com", true }, + { "mcfreedom.eu", true }, { "mcfx.us", true }, - { "mcg4loans.com", true }, { "mcgaccountancy.co.uk", true }, { "mcgarrybair.com", true }, { "mcgavocknissanwichitaparts.com", true }, @@ -79075,6 +90695,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcgillsbuses.co.uk", true }, { "mcgovernance.com", true }, { "mcgrand.shop", true }, + { "mcgregortx.gov", true }, + { "mch2022.org", true }, { "mchaelkordomain.tk", true }, { "mchan.us", true }, { "mchel.net", true }, @@ -79083,15 +90705,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mchopkins.net", true }, { "mchost.no", true }, { "mchristopher.com", true }, + { "mchughisle.net", true }, { "mchuiji.com", false }, + { "mci.gov.sg", true }, { "mcideas.tk", true }, + { "mcintyredisplays.com", true }, + { "mcirculo.com.br", true }, { "mcivor.me", true }, { "mcjackk77.me", true }, { "mcjars.com", true }, { "mckay-bednar.net", true }, + { "mckeancountypa.gov", true }, { "mckendry.com", true }, { "mckendry.consulting", true }, - { "mckenna.academy", true }, + { "mckenna.academy", false }, + { "mckenney.xyz", true }, { "mckenzielandscaping.ca", true }, { "mckernan.in", false }, { "mckhan.com", true }, @@ -79103,21 +90731,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcl.gg", true }, { "mclanedirect.com", true }, { "mclanexpress.com", true }, + { "mclast.de", true }, { "mclear.in", true }, { "mcleishandmatthews.com.au", true }, + { "mclennan.gov", true }, { "mcleodcountymn.gov", true }, + { "mcleodgaming.com", true }, { "mcleodoptical.com", true }, { "mclinflatables.co.uk", true }, { "mclmotors.co.uk", true }, - { "mclyr.com", false }, { "mcmillan.ski", true }, { "mcmillanskiclub.com", true }, { "mcmillanskiclub.com.au", false }, + { "mcmind.ddns.net", true }, { "mcmk.in", true }, - { "mcmo.is", true }, - { "mcmrkt.com", true }, { "mcnairinternational.com", true }, - { "mcnb.top", true }, + { "mcnav.net", true }, { "mcneill.io", true }, { "mcnet.care", true }, { "mcnext.net", true }, @@ -79126,6 +90755,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcon.se", true }, { "mconline.sg", true }, { "mcos.nc", true }, + { "mcost.no", true }, { "mcoutinho.pt", false }, { "mcpa.top", false }, { "mcpaoffice.com", true }, @@ -79134,14 +90764,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcpe.computer", true }, { "mcpebox.com", true }, { "mcpepc.com", true }, - { "mcpepc.me", true }, - { "mcpgnz.tech", true }, - { "mcplat.ru", true }, + { "mcpepc.me", false }, { "mcplayman.de", true }, { "mcprocdn.com", true }, + { "mcprofile.net", true }, + { "mcraft.ru", true }, { "mcregex.com", true }, { "mcrn.jp", true }, { "mcrook.com", true }, + { "mcs-nl.com", true }, { "mcsa-usa.org", true }, { "mcsdatum.co.uk", true }, { "mcseboard.de", true }, @@ -79154,12 +90785,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcsoneca.tk", true }, { "mcsrvstat.us", true }, { "mcstaralliance.com", true }, - { "mcsteve.com", true }, { "mctea.tk", true }, { "mctherealm.net", true }, { "mctitan.net", true }, { "mctools.org", true }, { "mctwcloud.tk", true }, + { "mcubedigital.com", true }, { "mcuexchange.com", true }, { "mcukhost.co.uk", true }, { "mcuuid.net", true }, @@ -79168,6 +90799,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mcwrapper.com", true }, { "mcycbd.com.au", true }, { "mcyukon.com", true }, + { "md-1xbet.com", true }, { "md-clinica.com.ua", true }, { "md-events.tk", true }, { "md-mb.ro", true }, @@ -79177,6 +90809,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "md5file.com", true }, { "mdaemon.de", true }, { "mdaemon.tips", true }, + { "mdangels.org", true }, { "mdatc.gov", true }, { "mdazo.net", true }, { "mdbre.gov", true }, @@ -79192,23 +90825,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mdewendt.de", true }, { "mdf-bis.com", false }, { "mdf-nakladki.kiev.ua", true }, + { "mdgx.com", true }, { "mdinstituteplasticsurgery.com", true }, { "mdinvest.nz", true }, { "mdir.tk", true }, { "mditsa.de", true }, { "mdiv.pl", true }, + { "mdjobsite.com", true }, { "mdl.co.ua", true }, { "mdlayher.com", true }, { "mdleom.com", true }, { "mdma.net", true }, - { "mdmbat.com", true }, { "mdmck10.xyz", true }, { "mdmed.clinic", true }, + { "mdmhukuk.com", true }, { "mdns.eu", true }, { "mdosch.de", true }, { "mdpp.com.br", true }, { "mdpparish.com", true }, - { "mdpraha.cz", true }, { "mdrsp.de", true }, { "mdrthmcs.io", true }, { "mds-paris.com", true }, @@ -79216,53 +90850,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mdscomp.net", true }, { "mdsglobal.com", true }, { "mdswlegal.com", true }, + { "mdtaxconnect.gov", true }, { "mdtorelli.it", true }, + { "mdwedding168.com", true }, + { "mdwellness.ca", true }, { "mdwftw.com", true }, { "mdx.no", true }, { "mdxdave.de", false }, { "mdxn.org", true }, { "me-groups.com", true }, + { "me-mainz.de", true }, { "me-news.tk", true }, { "me-soft.nl", true }, { "me.com.br", true }, - { "me.net.nz", true }, - { "me.tc", true }, + { "me.net.nz", false }, { "me.vu", true }, { "me7878.com", true }, + { "mea-vota-uitvaart.nl", true }, + { "mea.com.lb", true }, + { "meadhunt.com", true }, { "meadowfen.farm", true }, { "meadowfenfarm.com", true }, { "meadowviewfarms.org", true }, - { "meadstats.com", true }, + { "meadvillems.gov", true }, { "mealcast.ml", true }, { "mealpedant.com", true }, { "meals.lv", true }, { "mealsnmemories.in", true }, { "mealz.com", true }, { "meamod.com", false }, - { "meandb.net", true }, + { "meandmyemotions.org", true }, { "meanevo.com", true }, { "meaningfulaction.org", true }, + { "meanit.ie", true }, + { "meanjstraininginstitute.com", true }, { "meany.xyz", true }, + { "meao.market", true }, + { "meao.online", true }, + { "meao.pictures", true }, + { "meao.ru", true }, { "meapbot.com", true }, { "meapbot.net", true }, { "meapbot.org", true }, { "meapbot.pro", true }, + { "measiedu.org", true }, { "measureaustralia.com.au", true }, + { "measurementsolutionsinc.com", true }, { "measureyourpenis.today", true }, + { "meat-education.com", true }, { "meat.org.uk", true }, - { "meat.tk", true }, { "meatfoods.com.br", true }, { "meatfreecarnivore.com", true }, { "meavagas.com", true }, - { "meayne.ddns.net", false }, + { "meazurelearning.com", true }, { "mebehliyetsinavsorulari.com", true }, { "mebel-dnr.ml", true }, { "mebel-voronezh.cf", true }, { "mebelconcept.tk", true }, { "mebelipalitra.ru", false }, + { "mebelipetrov.com", true }, { "mebelisk.com.br", true }, { "mebelnik.pro", true }, + { "mebeloffice.com.ua", true }, + { "mebelok.com", true }, + { "mebelradom.com", true }, { "mebelshik.tk", true }, + { "meblerymar.pl", true }, + { "mebtall.ru", true }, + { "mec.gub.uy", true }, { "mec010.com", true }, { "mec020.com", true }, { "mec021.com", true }, @@ -79564,7 +91219,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mec0991.com", true }, { "mec111.com", true }, { "mec111.net", true }, + { "mec222.com", true }, { "mec222.net", true }, + { "mec333.com", true }, { "mec333.net", true }, { "mec539.com", true }, { "mec555.com", true }, @@ -79577,12 +91234,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mec888.net", true }, { "mec999.com", true }, { "mec999.net", true }, + { "mecalux.com", true }, + { "mecalux.es", true }, { "mecanicoautomotriz.org", false }, - { "mecaniquemondor.com", true }, { "mecari.tk", true }, { "meccano.srl", true }, { "meccrcog-oh.gov", true }, { "mecenat-cassous.com", true }, + { "mecenatfoot.fr", true }, { "mechafightclub.com", true }, { "mechanical.tk", true }, { "mechanics-schools.com", true }, @@ -79593,60 +91252,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mechinfinity.tk", true }, { "mechmk1.me", true }, { "mechta.gq", true }, + { "mecloudprinter.com", true }, { "mecomed.com", true }, { "mecp.de", true }, + { "med-banki.ru", true }, { "med-colleges.com", true }, - { "med-ics.com", true }, { "med-line.cf", true }, + { "med-metrix.com", false }, { "med-nagoya-neurosurgery.jp", true }, { "med-otzyv.ru", true }, { "med-spravca.ml", true }, - { "med.msk.ru", true }, { "med.tips", true }, - { "med360.at", true }, + { "meda.bg", true }, { "medaboutme.ru", true }, + { "medalerthelp.org", true }, { "medali21.tk", true }, { "medaliturki.tk", true }, { "medalofvalor.gov", true }, + { "medbankishop.ru", true }, { "medbiocompany.com", true }, { "medbiocompany.ml", true }, { "medbreaker-friends.at", true }, { "medbreaker.one", false }, + { "medcab.in", true }, + { "medcaremso.com", true }, { "medcartoon.com", true }, - { "medcenter.online", true }, - { "medcentr.online", true }, + { "medcenter.online", false }, + { "medcentr.online", false }, { "medcentrnadezhda.ru", true }, { "medcir.com.br", true }, { "medcorfu.gr", true }, { "medcrowd.com", true }, - { "medcrypt.co", false }, + { "meddata.pp.ua", true }, { "meddatix.com", true }, + { "meddiehub.com", true }, { "meddigital.com", false }, { "meddin.com", true }, { "mede-handover.azurewebsites.net", true }, { "medebridge.com.au", true }, + { "medec.ec", true }, { "medecinesalternatives-developpementspirituelcreatif.com", true }, { "medecinsdumonde.lu", true }, + { "medefield.com", true }, { "medeinos.lt", false }, + { "medelement.com", true }, { "medellinapartamentos.com", true }, { "medellinencanciones.tk", true }, - { "medexpress.co.uk", true }, + { "medfind.link", true }, { "medfordoregon.gov", true }, { "medfordwi.gov", true }, { "medguide-bg.com", true }, + { "medgyd.lt", false }, { "medhatzaki.com", true }, { "medhiwa.com", true }, { "medhy.fr", true }, + { "medi-link.co.il", false }, { "medi.com.br", true }, { "media-cable-solutions.de", true }, { "media-credit.eu", true }, + { "media-cube.com", true }, + { "media-fleet.fr", true }, { "media-instance.ru", true }, + { "media-journalism.org", true }, { "media-land.tk", true }, { "media-library.co.uk", true }, { "media-serwis.com", true }, { "media-start.tk", true }, { "media-store.ir", true }, + { "media-street.co.uk", true }, { "media-valko.hu", true }, + { "media-webs5.com", true }, { "media4u.tk", true }, { "mediaarea.net", true }, { "mediaareplural.ca", true }, @@ -79656,7 +91331,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mediabola.net", true }, { "mediabookdb.de", false }, { "mediabooks.ml", true }, - { "mediaboxfree.com", true }, + { "mediaboutique.nl", true }, { "mediacenter.dynv6.net", true }, { "mediacluster.de", true }, { "mediacolor.fr", true }, @@ -79665,10 +91340,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mediafly.com", true }, { "mediafocus.biz", true }, { "mediaforkids.org", true }, - { "mediafresco.com", true }, - { "mediagenic.ch", false }, { "mediagetnews.tk", true }, { "mediagrand.net", true }, + { "mediagus.com", true }, { "mediahaus.de", false }, { "mediajurnal.com", true }, { "medialab.nrw", true }, @@ -79678,29 +91352,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medialunaventura.com", true }, { "medialys.ca", true }, { "mediamarket42.tk", true }, + { "mediamarkt.pl", true }, + { "mediametrix.ru", true }, { "mediamonitors.net", true }, - { "mediamuda.com", true }, + { "mediamora.nl", true }, { "medianbases.ga", true }, { "mediantechnologies.com", true }, + { "mediaoffice.ae", true }, { "mediapart.fr", true }, - { "mediapath.gr", true }, - { "mediapuller.com", true }, + { "mediapath.gr", false }, + { "mediapost-publicite.fr", true }, + { "mediaprint-eco.com", true }, + { "mediarenegades.net", true }, { "mediarithmics.com", true }, { "mediarithmics.io", true }, { "mediarquita.com", true }, + { "medias-presse.info", true }, { "mediasagasocialseo.com", true }, { "mediaserver7.com", true }, { "mediasklep24.pl", true }, { "mediaspike.com", true }, + { "mediassist.in", true }, + { "mediassistindia.com", true }, + { "mediassistindia.net", true }, { "mediassisttpa.in", true }, { "mediasst.com", true }, - { "mediastorm.us", true }, { "mediastroke.com", true }, { "mediataput.ga", true }, - { "mediathekview.de", true }, + { "mediathekview.de", false }, { "mediation-mv.de", true }, { "mediationculturelleclp.ch", false }, { "mediatorzy.waw.pl", true }, + { "mediatrust.org", true }, { "mediaukkies.nl", true }, { "mediawax.be", true }, { "mediaweb.com.ve", true }, @@ -79711,40 +91394,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medibis.com.au", true }, { "medibooker.com.au", true }, { "medic-world.com", true }, + { "medic808.com", true }, { "medicairsolutions.com", true }, { "medical-assistant-colleges.com", true }, { "medical-centr.tk", true }, { "medical-contact.de", true }, - { "medical-safety-system.com", true }, + { "medical-instinct.de", false }, { "medical-tiny.com", true }, { "medical-tiny.de", true }, { "medicalabroad.org", false }, { "medicalaegis.com", true }, { "medicalassistantadvice.com", true }, + { "medicalassistantschools.com", true }, { "medicalauction.ga", true }, + { "medicalbillingcodingworld.com", true }, { "medicalbillrights.gov", true }, { "medicalcountermeasures.gov", true }, { "medicaldispute.tk", true }, + { "medicalert.ca", false }, + { "medicaleyetec.fr", true }, + { "medicalhelp.com.br", true }, { "medicallicensing.com", true }, { "medicalonliner.tk", true }, { "medicalpeople.tk", true }, { "medicalphysicistservices.com", true }, - { "medicals-i.com", true }, { "medicalsite.tk", true }, { "medicalsland.com", true }, { "medicaltiny.com", true }, { "medicaltiny.de", true }, { "medicaltools.de", true }, { "medicalys-tunisie.com", false }, - { "medicardlimited.com", true }, { "medicare-providers.net", true }, + { "medicareadvantage.com", true }, { "medicareclinic.tk", true }, + { "medicarecompareusa.com", true }, { "medicarecoveragefinder.com", true }, { "medicareful.com", true }, { "medicareinfo.org", true }, + { "medicaremarket.com", true }, + { "medicaresupplement.com", true }, + { "medicasa-gmbh.de", true }, + { "medicel.com", true }, { "medicenteritalia.it", true }, { "medichat.ml", true }, - { "medicina-antiage.com", true }, + { "medicimaging.com", true }, { "medicina-interventionala.ro", true }, { "medicina-news.tk", true }, { "medicinae.solutions", true }, @@ -79754,6 +91447,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medicinasportpadova.it", true }, { "medicine-consultant.com", true }, { "medicine.com", true }, + { "medicine.lv", true }, { "medicinesfast.com", false }, { "medicinia.com.br", true }, { "medicinskavranje.edu.rs", true }, @@ -79765,57 +91459,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medictools.de", true }, { "medicus.ai", true }, { "medidordehumedad.online", true }, + { "mediengestalter-website.de", true }, + { "medienhelden.de", true }, { "medienweite.de", true }, + { "medievalexpert.com", true }, { "medifab.online", true }, { "medifirst.de", true }, { "medifit.si", true }, { "medifoto.tk", true }, { "medigap-quote.net", true }, + { "medihost.com.au", true }, + { "medihostsolutions.com.au", true }, { "medik8.com.cy", true }, { "medikalakademi.com.tr", true }, { "medikuma.com", true }, { "medilogistics.co.za", true }, - { "medimush.co.uk", true }, { "medinacountyohio.gov", true }, { "medinaelst.nl", true }, { "medinc.tk", true }, - { "medinetz-halle.de", true }, { "mediniti.com", true }, { "medino.com", true }, { "medinorte.es", true }, { "medinside.ch", false }, - { "medinside.li", true }, - { "medinsider.ch", true }, - { "medinsider.li", true }, - { "medipost.co.za", true }, + { "medinside.li", false }, + { "medinsider.ch", false }, + { "medinsider.li", false }, { "medirota.com", true }, { "medisense.tk", true }, { "mediskin.ro", true }, { "medisuv.ga", true }, { "medisysintl.net", true }, + { "medisystempharmacy.com", true }, + { "meditacionesparasanar.club", true }, { "meditadvisors.com", true }, { "meditarenargentina.org", true }, { "meditateinolympia.org", true }, - { "meditation-kompass.de", true }, + { "meditation-music.shop", true }, { "meditation-rennes.org", true }, - { "meditbe.com", true }, + { "meditationsydney.org.au", true }, { "meditel.nl", true }, { "meditez.ca", true }, { "meditrak.ml", true }, - { "meditrine.cd", true }, { "medium.com", true }, { "mediums.cf", true }, - { "mediumvoyant.be", true }, { "medivisionsc.com", true }, { "medivox.tk", true }, { "mediweed.tk", true }, { "mediziner-goettingen.tk", true }, { "medja.net", true }, { "medklee.com", true }, + { "medkliniks.ru", true }, { "medlineplus.gov", true }, + { "medlink.pl", true }, + { "medmark.com", true }, + { "mednet-communities.net", true }, { "medo64.com", true }, { "medofis.com", true }, - { "medonline.co.nz", true }, + { "medorand.gov", true }, { "medosedu.in", true }, { "medousaclinique.com", true }, { "medovea.ru", true }, @@ -79823,16 +91523,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medpeer.co.jp", true }, { "medpeer.jp", true }, { "medportalmd.tk", true }, + { "medpost.com", true }, { "medprozone.com", true }, { "medreich.com", true }, { "medrol.cf", true }, + { "meds.ru", true }, { "medsanuk.co.uk", true }, - { "medsblalabs.com", true }, + { "medscangroup.ru", true }, { "medschat.com", true }, { "medschrome.com", true }, { "medscope.com.au", true }, { "medscope.tk", true }, - { "medservis.online", true }, + { "medservis.online", false }, { "medsi-online.tk", true }, { "medsister.tk", true }, { "medsourcelabs.com", true }, @@ -79840,85 +91542,92 @@ static const nsSTSPreload kSTSPreloadList[] = { { "medspecial.tk", true }, { "medstatix-dev.com", true }, { "medstatix.co", true }, - { "medstatix.com", true }, - { "medstreaming.com", false }, { "medtalents.ch", true }, { "medtankers.management", false }, { "medtech-jp.net", true }, { "medtehnika.ua", true }, - { "medtip.de", false }, { "medtronicpain.com", true }, { "medullaortopedi.com", true }, { "medunovi.com", true }, { "medusa.wtf", true }, { "meduza.io", true }, - { "medved1.ru", true }, { "medvedikorenka.cz", true }, { "medvedivka.tk", true }, { "medvedka-nasekomoe.tk", true }, { "medvedkovo-hovrino.ru", true }, { "medvesajt.hu", true }, { "medvet.com.es", true }, + { "medxpf.com", true }, { "medy-me.com", true }, - { "medyascope.tv", true }, + { "medyahabertv.com", true }, + { "medyaweb.net", true }, + { "medycznyangielski.pl", true }, { "medyotan.ga", true }, { "medza.ru", true }, { "medzinenews.com", false }, - { "meedoenhartvanwestbrabant.nl", false }, { "meedoennoordkop.nl", false }, { "meek.ml", true }, { "meekhak.com", true }, { "meeko.cc", true }, - { "meeko.ro", true }, + { "meekru.com", true }, { "meektech.com", true }, { "meenzen.net", true }, { "meeo7.tk", true }, { "meepbot.net", true }, { "meepbot.org", true }, { "meepbot.pro", true }, + { "meeque.de", true }, { "meer-der-ideen.de", true }, { "meeras.ga", true }, { "meereskunst.de", true }, { "meerman.nl", true }, { "meerutcake.com", true }, + { "meesenburg.ro", true }, + { "meesman.nl", true }, { "meesteresmisty.nl", true }, { "meet", true }, { "meet.google.com", true }, { "meetanshi.com", true }, + { "meetbeagle.com", true }, { "meetbot.fedoraproject.org", true }, - { "meetdatingfriends.com", true }, - { "meetfinch.com", false }, + { "meetcleo.com", true }, { "meetfranz.com", true }, { "meetfriends.tk", true }, { "meeting-server.ml", true }, - { "meetingapplication.com", true }, { "meetingvotes.com", true }, { "meetjeslandsetriathlon.tk", true }, + { "meetmaps.com", true }, + { "meetmarlo.com", true }, { "meetmibaby.co.uk", true }, + { "meetmonarch.com", true }, { "meetmygoods.com", true }, { "meetmyown.ga", true }, { "meetmyown.tk", true }, { "meetthesinglessda.co.uk", true }, { "meettheslavs.com", true }, + { "meetville.com", true }, { "meetyou.me", true }, { "meeusen-usedcars.be", true }, { "meewan.fr", true }, { "meeztech.com", true }, { "meeztertom.nl", true }, + { "meffrepatrimoine.com", true }, { "meg-a-bounce.co.uk", true }, { "mega-aukcion.ru", true }, { "mega-byte.nl", false }, { "mega-feeling.de", true }, { "mega-jeans.ru", true }, { "mega.co.nz", true }, + { "mega.io", false }, { "mega.nz", true }, { "megaar.tk", true }, { "megabike.tk", true }, { "megabook.ml", true }, + { "megabooker.hr", true }, { "megabounce.co.uk", true }, { "megabouncingcastles.com", true }, + { "megacellenerji.com", true }, { "megadrol.com", true }, - { "megaelements.com", true }, { "megaelettrostimolatore.com", true }, { "megafilez.tk", true }, { "megaflix.nl", true }, @@ -79926,7 +91635,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "megagame.zapto.org", true }, { "megagifs.de", true }, { "megaherz.tk", true }, + { "megahobby.jp", true }, + { "megahost.kz", true }, { "megahostingbr.tk", true }, + { "megahouse.co.jp", true }, { "megaimpressao3d.com.br", true }, { "megainflatables.co.uk", true }, { "megainformatyk.pl", true }, @@ -79939,12 +91651,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "megalol.tk", true }, { "megalonomia.ml", true }, { "megam.host", true }, + { "megamarket-russia.ru", true }, + { "megamarkey.de", false }, { "megamillions.tk", true }, { "megamisja.pl", true }, { "megamov.eu", true }, { "megamov.fr", true }, { "megamov.pro", true }, - { "megamp3.eu", true }, { "meganandmarc.us", true }, { "meganholliday.blog", true }, { "meganmarston.cf", true }, @@ -79952,6 +91665,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meganruggiero.com", false }, { "megaobzor.com", true }, { "megaparadise.ml", true }, + { "megapari.com", true }, { "megapixel.cz", true }, { "megaplan.cz", true }, { "megaplan.ru", true }, @@ -79960,21 +91674,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "megaprofi.tk", true }, { "megarap.cf", true }, { "megaron.at", true }, + { "megasesso.com", true }, { "megasitesoficial.tk", true }, + { "megastores.com", true }, + { "megasunsunglasses.bg", true }, { "megateam.tk", true }, { "megatom.net.br", true }, - { "megatravel.com.mx", true }, - { "megatyumen.ru", false }, + { "megatyumen.ru", true }, { "megauction.tk", true }, { "megavasoc.com.ar", true }, { "megaviews.tk", true }, - { "megawarez.org", true }, { "megawebsite.tk", true }, { "megawhat.energy", true }, { "megaxchange.cash", true }, { "megayachts.world", true }, { "megazigzag.com", true }, - { "megazine3.de", true }, + { "megeve-tourisme.fr", true }, { "megger-aktionen.de", true }, { "megger.li", true }, { "meggidesign.com", true }, @@ -79995,12 +91710,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mehalick.com", true }, { "meharossii.ru", true }, { "mehdavia.tk", true }, + { "mehdi-lifestyle.com", true }, { "mehdibouchema.be", true }, { "mehdimassage.com", true }, { "meherbaba.sk", true }, - { "meherpurnews.com", true }, { "mehhh.xyz", true }, { "mehibo.tk", true }, + { "mehlogy.com", true }, { "mehlvilletermiteandpestcontrolinc.com", true }, { "mehmetince.net", true }, { "mehode.com", true }, @@ -80011,55 +91727,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mehrnevesht.com", true }, { "mehrwert.de", true }, { "meia.ir", true }, + { "meiaiai.com", true }, { "meideas108.com", true }, - { "meidev.co", true }, + { "meidev.co", false }, { "meier-stracke.de", true }, { "meierhofer.net", true }, { "meiersmarkus.de", true }, + { "meifacil.com", true }, { "meigetsuen1980.com", true }, { "meijburg.com", true }, { "meijwebdesign.nl", true }, { "meikampf.de", true }, { "meikan.moe", true }, - { "meiksbar.de", false }, { "meiler.cf", true }, + { "meilink.eu", false }, { "meilleur-casino-fiable.com", true }, + { "meilleursagents.com", true }, { "meilleursavis.fr", true }, + { "meilleursjeuxporno.fr", true }, { "meilleurstrucs.com", true }, { "meima.cc", true }, { "meimeistartup.com", true }, + { "mein-betriebsrat.digital", true }, { "mein-domizil.at", true }, + { "mein-es1.de", true }, { "mein-gehalt.at", true }, { "mein-muehlhausen.bayern", true }, { "mein-neuer-garten.de", true }, - { "mein-tortenladen.de", true }, + { "mein-restaurant.digital", true }, { "mein-webportal.de", false }, { "meinbetriebsrat24.de", true }, + { "meinbuild.de", true }, { "meincenter-meinemeinung.de", true }, { "meincoach.at", true }, + { "meine-email-im.de", true }, { "meine-email-im.net", true }, { "meine-finanzanalyse.de", true }, { "meine-immofinanzierung.de", true }, - { "meine-stirnlampe.de", true }, + { "meine-lebensenergie-staerken.de", true }, + { "meine-mav.digital", true }, + { "meine-mobile-reiseagentur.de", true }, { "meineip.eu", true }, { "meineit.dvag", true }, - { "meinema.nl", true }, + { "meinereiseangebote.de", true }, { "meinevorlagen.com", true }, { "meineweidegans.at", true }, { "meinewolke.pw", true }, { "meineziege.de", true }, + { "meinezuckerbaeckerei.de", true }, { "meinforum.net", true }, { "meinhard.com", true }, - { "meinheizstrom.de", true }, { "meinstartinsleben.com", true }, { "meinstartinsleben.de", true }, { "meintragebaby.de", true }, - { "meinv.asia", true }, + { "meinungsplatz.ch", true }, + { "meinungsplatz.de", true }, { "meiqia.cn", true }, + { "meirifuli6.com", true }, { "meis.space", true }, + { "meise.cf", true }, + { "meise.ml", true }, + { "meistaramajas.lv", true }, + { "meister-stuecke.com", true }, + { "meister-texte.com", true }, { "meister-wuttke.de", true }, { "meisterlabs.com", true }, + { "meisternote.com", true }, + { "meisterplan.com", true }, + { "meisterplan.io", true }, { "meistertask.com", true }, + { "meistronamai.lt", true }, { "meitan.gz.cn", true }, { "meitianyixiaobu.com", true }, { "meiyi.ga", true }, @@ -80070,21 +91807,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mejofi.nl", true }, { "mejofi.org", true }, { "mejor-broker.com", true }, - { "mejorator.com", true }, - { "mejorator.es", true }, + { "mejor-vpn.com", true }, { "mejorator.net", true }, { "mejorator.org", true }, { "mejorespatineteselectricos.es", true }, - { "mejoreswebscitas.com", true }, { "mejorfiltrodeagua.com", true }, { "mejorlimpiafondos.com", true }, - { "mejorwork.com", false }, { "mejovonakowogov.gq", true }, + { "mejpbs.com", true }, { "mekajen.com", true }, { "mekaleskirit.tk", true }, { "mekanika.com.my", true }, { "mekanismo.tk", true }, - { "mekanova.art", true }, { "mekatro.tech", true }, { "mekatronika.tk", true }, { "mekatrotekno.com", true }, @@ -80095,25 +91829,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mekkaoui.cf", true }, { "mekker.dk", true }, { "meklon.net", true }, + { "mekomit.co.il", true }, { "mekongmontessori.com", true }, + { "mel-bet.com", true }, { "melagenina.tk", true }, { "melanfengshui.com", true }, + { "melaniatrump.com", false }, { "melanie-guy.fr", true }, { "melanie-schwarze.de", true }, { "melaniebernhardt.com", true }, { "melaniec-thebest.tk", true }, + { "melaniefaucher.ca", true }, + { "melaniegowen.com", false }, { "melaniegruber.de", true }, { "melanieschweiger.com", true }, { "melanin.cf", true }, { "melaodealmeirim.pt", true }, - { "melatonin.fun", true }, { "melbar.com.au", false }, + { "melbet-sp.com", true }, { "melbet.com", true }, - { "melbet.ru", true }, + { "melbet.mobi", true }, + { "melbet27.com", true }, + { "melbet33011.com", true }, + { "melbetaffiliates.com", true }, { "melbetapp.com", true }, + { "melbetua.com", true }, { "melbourne.dating", true }, { "melbourneapartments.website", true }, + { "melbournebushwalkers.org.au", true }, { "melbournecivilcelebrant.tk", true }, + { "melbournefringe.com.au", true }, { "melbournehookah.com.au", true }, { "melbournehousesitters.com", true }, { "melcher.it", true }, @@ -80130,34 +91875,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "melectronics-ostschweiz.ch", true }, { "meledia.com", false }, { "melenchatsmelenchiens.fr", true }, - { "melhorconsorcio.com.br", true }, { "melhoresmarcasdenotebook.com.br", true }, { "melhorproduto.com.br", true }, { "meli-deluxe.org", true }, + { "melicove.com", true }, { "melideluxe.org", true }, { "melihacar.com.tr", true }, { "melikoff.es", true }, { "melina-schefczyk.de", true }, { "melinacurves.com", true }, { "melinamay.net", true }, + { "melino.com.ua", true }, { "meliowebweer.nl", true }, { "melisica.tk", true }, { "melissaadkins.com", true }, { "melissaauclaire.com", true }, - { "melissacellini.com", true }, { "melissadeluxe.com", true }, { "melissageorge.tk", true }, { "melissalb.tk", true }, { "melissameuwszen.nl", true }, - { "melissasmith4mt.com", true }, - { "melissasundwall.com", true }, { "meliyb.ga", true }, + { "melkboshigh.co.za", true }, { "melkiran.tk", true }, { "melkoghonning.no", true }, + { "mellenbergerathletics.com", true }, { "mellika.ch", true }, - { "mellmon.com", true }, { "mellonexia.ml", true }, - { "melloni.consulting", true }, { "mellonne.com", true }, { "melnessgroup.com", true }, { "melodee.de", true }, @@ -80169,46 +91912,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "melodiouscode.net", true }, { "melodiouscode.uk", true }, { "melody-lyrics.com", true }, - { "melodybiz.com", true }, + { "melody.my", true }, { "melodycenter.de", true }, { "melonhub.com", true }, { "melonstudios.net", true }, + { "melontech.com", true }, { "melopie.com", true }, - { "melosyne.com", true }, - { "melosyne.de", true }, - { "melosyne.net", true }, - { "melosyne.org", true }, + { "melpomene.me", true }, { "melrosemichaels.net", true }, + { "melrosewi.gov", true }, { "meltdownresearch.com", true }, { "melted.me", true }, { "meltina-hotel.com", true }, + { "meltybit.com", true }, { "melusine.eu", true }, { "melvillecity.com.au", true }, { "melvinsfrance.tk", true }, + { "melvintemo.com", true }, + { "melyssamonroy.com", true }, { "mema.recipes", true }, { "memberbaz.ml", true }, + { "memberclicks.net", true }, + { "memberplushq.com", true }, { "members-arbourlake.com", true }, { "members-only-shopping.com", true }, { "members.nearlyfreespeech.net", false }, { "membershipservices.org.uk", true }, + { "membersolutions.com", true }, { "memberstweets.com", true }, { "memdoc.org", true }, { "meme", true }, { "meme.fi", true }, { "meme.institute", true }, + { "memecentral.org", true }, { "mememan.org", true }, { "memememememememe.me", true }, { "memento-mori.cf", true }, - { "memepasmal.org", true }, { "memetrash.co.uk", true }, + { "memez.download", true }, { "memind.net", true }, { "memiux.com", true }, + { "memnet.com.au", true }, { "memo-linux.com", true }, { "memo.ee", true }, { "memoire-resistance-ariege.fr", true }, { "memoirmedie.dk", true }, { "memolestas.tk", true }, { "memorablewords.org", true }, + { "memoriaacademy.com", true }, { "memoriadeunaciudadzccm2019.com", true }, { "memorial.com.tr", true }, { "memoriaseternizadas.com.br", true }, @@ -80219,6 +91970,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "memorylines.ml", true }, { "memoryofyou.eu", true }, { "memoryplex.com", true }, + { "memphisrap.com", true }, + { "memphisthemusical.com", true }, { "mempool.chat", true }, { "mempool.de", true }, { "mempool.ninja", true }, @@ -80226,38 +91979,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "memrise.com", true }, { "memurvadisi.tk", true }, { "men-costumes.tk", true }, + { "men.com", true }, { "menanam.net", true }, - { "menanwc.org", true }, { "menaraannonces.com", true }, { "menardcountyil.gov", true }, + { "menashawi.gov", true }, { "menazimkhan.tk", true }, - { "menchez.me", true }, { "menddie.com", true }, { "mendekuitxua.tk", true }, { "mendel.tk", true }, { "menden.com", true }, + { "mending.id", true }, { "mendipbouncycastles.co.uk", true }, { "mendix-apps.com", true }, { "mendmybackprogram.com", false }, + { "mendocinocounty.gov", true }, { "mendomaps.com", true }, { "mendonca.co", true }, { "mendonvt.gov", true }, { "mendovoice.com", true }, { "mendozagenevieve.com", true }, { "mendrala.eu", true }, - { "mendrala.io", true }, { "mendrala.net", true }, - { "mendritzki.de", true }, { "menerga.it", true }, - { "menfis.es", true }, - { "menfis.info", true }, - { "menfis.net", true }, - { "menfisnet.com", true }, - { "menfisnet.es", true }, - { "menfisnet.net", true }, - { "menfisonline.com", true }, - { "menfisonline.es", true }, - { "mengjianjiemeng.com", true }, { "mengjiucai.com", true }, { "mengliangyun.xyz", true }, { "mengma.pub", true }, @@ -80273,6 +92017,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "menlo-partner1.com", true }, { "menlo.cloud", true }, { "menlo.security", true }, + { "menlofire.gov", true }, { "menlogov-admin.com", true }, { "menlogov.com", true }, { "menlosecurity.com", true }, @@ -80281,6 +92026,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "menlotraining.net", true }, { "menlotraining.org", true }, { "menn.tk", true }, + { "mennace.com", true }, + { "mennetwork.com", true }, { "menno.cloud", false }, { "menno.me", true }, { "menole.com", true }, @@ -80302,37 +92049,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mensajitos.tk", true }, { "mensarena.gr", true }, { "mensasifrovacka.cz", true }, - { "mensatek.com", true }, { "mensch-peter.me", true }, { "menschocolat.jp", true }, { "mensconvoy.tk", true }, + { "mensdiorsneakers.shop", true }, { "menselijkembryo.tk", true }, + { "menshaircuts.com", false }, + { "menshairstylestoday.com", true }, { "menshealthcollective.au", true }, { "menspeak.ga", true }, + { "mensvanilla-magazine.jp", true }, { "menswear.tk", true }, { "mental-check.jp", true }, { "mentalcalculations.tk", true }, { "mentalcraft.tk", true }, { "mentalevolution.tk", true }, + { "mentalhealthcounselorlicense.com", true }, { "mentalhealthmn.org", true }, { "mentalhealthtimes.tk", true }, { "mentalizes.tk", true }, { "mentalpage.com", true }, { "mentalproblems.tk", true }, + { "mentaltraining-fuer-musiker.ch", true }, { "mentecuriosa.net", true }, { "menteofficial.com", true }, + { "menterarchitects.com", true }, { "mentes-inquietas.tk", true }, { "mentesinquietas.tk", true }, { "menthiere.fr", true }, + { "menti.com", true }, + { "mentimeter.com", true }, { "mentiq.az", true }, - { "mentita.de", true }, { "mentolo.tk", true }, + { "mentonein.gov", true }, { "mentor.gov", true }, - { "mentorbizlist.com", true }, { "mentoringauchan.es", true }, { "mentors4stem.org", true }, - { "mentta.com", true }, - { "menu.fyi", true }, + { "mentrixpill.com", true }, { "menuel.me", true }, { "menufree.org", true }, { "menuiserie-deumer.be", true }, @@ -80341,22 +92094,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "menurutparaahli.com", true }, { "menzel-motors.com", false }, { "menzel4you.tk", true }, + { "menzietti.it", true }, + { "meo.cz", true }, + { "meo.de", true }, + { "meo.es", true }, { "meodihoang.com", true }, - { "meorca.com", true }, + { "meoption.biz", true }, + { "meoteam.dk", true }, + { "meou.pictures", true }, { "meow-games.com", true }, { "meow.cloud", false }, { "meow.enterprises", true }, { "meow.plus", true }, - { "meowpic.com", true }, + { "meower.org", true }, + { "meowstodon.net", true }, { "meowtech.network", true }, { "mepassport.com", true }, { "mepc.jp", true }, + { "mepcoeng.ac.in", true }, { "meperidina.com", true }, { "mephedrone.org", true }, { "mepresto.com", true }, { "meps.net", true }, { "mera.ddns.net", true }, - { "merafsolutions.com", true }, + { "merabsurviladze.com", true }, + { "meraki.hu", true }, { "meralda.eu", true }, { "meralda.net", true }, { "meralda.org", true }, @@ -80366,9 +92128,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meraldamulder.org", true }, { "meran.in", true }, { "meransuedtirol.com", true }, - { "meraseo.com", true }, { "meravirsa.com", true }, { "mercadobitcoin.com.br", true }, + { "mercadocampesino.com.co", true }, { "mercadohype.tk", true }, { "mercadoleal.com.br", true }, { "mercadolibre.cl", true }, @@ -80390,7 +92152,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mercadolibre.com.ve", true }, { "mercadolibrefz.tk", true }, { "mercadolivre.com.br", true }, - { "mercadopago.cl", true }, + { "mercadopago.cl", false }, { "mercadopago.com", true }, { "mercadopago.com.ar", true }, { "mercadopago.com.br", true }, @@ -80408,21 +92170,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mercedes-anciennes.fr", true }, { "mercedes-benz-arena-stuttgart.de", true }, { "mercedes-benz-kiev.com", true }, + { "mercedes-benz.com.py", true }, { "mercedes-ig.de", true }, { "mercelo.com", true }, { "mercenaryvfx.com", true }, { "mercercountyohio.gov", true }, { "mercercountypa.gov", true }, { "mercerisland.gov", true }, - { "merchandiseforfan.com", true }, + { "merchantsbankofindiana.com", true }, { "merchcity.com", true }, { "merchentpro.biz", true }, { "merchify.in", true }, { "merchifyapp.com", true }, { "merchstudio.ru", true }, { "mercici.com", true }, + { "merck-animal-health-usa.com", true }, { "merco.com.au", true }, + { "mercode.eu.org", true }, + { "mercosuleditora.com.br", true }, { "mercredifiction.io", true }, + { "mercure.dk", true }, + { "mercuretv.com", true }, + { "mercury-pool.com", true }, + { "mercury.com", true }, { "mercury.foundation", false }, { "mercury.photo", true }, { "mercuryamericas.com", false }, @@ -80436,17 +92206,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "merenita.net", true }, { "merenita.nl", true }, { "merezha.ua", true }, + { "mergegroup.com.au", true }, { "mergellina.tk", true }, { "meribook.com", true }, - { "meric-graphisme.info", true }, { "meridanas.me", true }, { "meridiangroup.ml", true }, { "meridianmetals.com", true }, { "meridianoshop.com.br", true }, { "meridianstore.com.br", true }, { "merikserver.tk", true }, + { "merino.codes", true }, { "merionwest.com", true }, { "meripohi.edu.ee", true }, + { "merisia.ca", true }, + { "meritcb.eu", true }, + { "meritsol.com", true }, + { "meritus.com.au", true }, + { "merkatal.com", true }, { "merkattumaa.tk", true }, { "merkchest.tk", true }, { "merke.tk", true }, @@ -80462,22 +92238,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mermakov.info", true }, { "mernau.co", true }, { "merojob.com", true }, - { "meronberry.jp", true }, { "merpay.com", true }, { "merrickcountyne.gov", true }, + { "merrillanwi.gov", true }, { "merrimacwi.gov", true }, { "merrison.uk", true }, - { "merry.news", true }, { "merrychristmas.ml", true }, { "merryxmas2015.tk", true }, { "merson.org", true }, { "merson.tv", true }, { "mertak.cz", true }, - { "mertarauh.com", false }, { "mertcangokgoz.com", true }, { "mertuslu.com", true }, - { "meruri.com", true }, + { "meruhealth.com", true }, { "mervart.co.uk", true }, + { "mervetekinmimarlikinsaat.com.tr", true }, { "mervewear.com", true }, { "merza.is", true }, { "merzai.co.uk", true }, @@ -80489,45 +92264,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mesaazpolice.gov", true }, { "mesabi.ga", true }, { "mesappros.com", true }, + { "mesas-auxiliares.com", true }, { "mesasysillas.site", true }, { "mesbonnesrecettes.com", true }, { "mescaline.com", true }, { "mescaline.org", true }, + { "mescaline.uk", true }, + { "mescaline.wiki", true }, { "mesdagh.be", true }, { "mesec.cz", true }, { "mesh.gov", true }, - { "mesh.org.ua", true }, + { "meshachgt.com", true }, { "meshdigital.io", true }, { "meshekard.co.il", true }, { "meshintranet.com", true }, - { "meshok.info", true }, { "meshok.ru", true }, { "meshotes.com", true }, { "meskdeals.com", true }, - { "meskimonos.fr", true }, { "meskiukas.tk", true }, { "meslekkursu.com", true }, { "mesmer.tk", true }, { "mesologie-soesterberg.nl", true }, { "mesomeds.com", true }, { "mesonandino.tk", true }, + { "mesondelcazador.com", true }, { "mesothelioma.com", true }, { "mesotheliomacentre.tk", true }, { "mesotheliomalawfirm-worldwide.tk", true }, - { "mesoyca.com", true }, { "mesquitegcd.gov", true }, + { "mesquitelandscapeservices.com", true }, { "messageclient.gq", true }, + { "messagely.com", true }, { "messagescelestes-archives.ca", true }, { "messagevortex.com", true }, { "messagevortex.net", true }, { "messaha.tk", true }, { "messcoutsandguides.tk", true }, - { "messcustom.com", true }, { "messdorferfeld.de", true }, + { "messemakine.com", true }, { "messen.tk", true }, - { "messenger.co.tz", true }, { "messenger.com", false }, - { "messenger.md", true }, { "messengerkids.com", true }, { "messengerupdate.com", true }, { "messengerwebbrands.com", true }, @@ -80536,12 +92312,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "messifan.tk", true }, { "messinale.tk", true }, { "messinatoday.it", true }, - { "messner.top", true }, { "messonline.tk", true }, - { "messymom.com", true }, + { "messure.ru", true }, + { "mest3s.com.br", true }, { "mestazitrka.cz", true }, { "mesterbold.dk", true }, { "mestovpohybu.cz", true }, + { "mesuaferrea.com", true }, { "mesutates.tk", true }, { "mesvision.com", true }, { "mesvt.com", true }, @@ -80550,7 +92327,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meta-word.com", true }, { "meta.com", true }, { "meta4.be", true }, + { "meta48.live", true }, + { "metaalshopper.nl", true }, { "metablog.xyz", true }, + { "metabound.co.uk", true }, { "metabox.io", true }, { "metacareers.com", true }, { "metachthonia.io", true }, @@ -80559,34 +92339,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metacode.biz", true }, { "metacompliance.com", true }, { "metacortex.cf", true }, + { "metacred.com", true }, + { "metacritic.com", true }, { "metadata.be", true }, { "metadata.io", true }, { "metadedi.net", true }, { "metaether.net", true }, { "metafiz.ml", true }, + { "metaformarketing.com", true }, { "metafurquest.net", true }, { "metagaming.tk", true }, - { "metahumanvpn.network", true }, { "metait.de", true }, + { "metaiverse.info", true }, { "metakari.one", true }, { "metal-madness.tk", true }, { "metal-news.tk", true }, { "metal-rock.tk", true }, + { "metalarea.ru", true }, { "metalargentum.tk", true }, { "metalbus.tk", true }, { "metalcity.tk", true }, + { "metalcon.az", true }, { "metalcorenews.ga", true }, { "metalempire.tk", true }, { "metaleonsociety.io", false }, { "metalequipped.com", true }, { "metalevolution.tk", true }, + { "metalgie.work", true }, + { "metalgo.co", true }, { "metalgoth.tk", true }, { "metalhouse.tk", true }, { "metaljournal.tk", true }, { "metaljunkiez.com", true }, + { "metallbau-gehr.de", true }, { "metallheads.tk", true }, { "metallibrarian.com", true }, { "metallictrading.ga", true }, + { "metallikaraoke.com", true }, { "metalliran.tk", true }, { "metallization.tk", true }, { "metallobaza.ml", true }, @@ -80597,6 +92386,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metalmaniac.tk", true }, { "metalmonocle.com", true }, { "metalnight.tk", true }, + { "metalnivrati-iasenko.com", true }, { "metalpesado.tk", true }, { "metalsoviet.tk", true }, { "metaltracks.tk", true }, @@ -80612,8 +92402,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metanumbers.com", true }, { "metapeen.nl", true }, { "metaphilic.tk", true }, - { "metaprivatewealth.com", true }, + { "metaprivatewealth.com", false }, { "metapsychie.com", true }, + { "metapublic.com", true }, { "metasearch.nl", true }, { "metasolutions.se", true }, { "metasophi.com", true }, @@ -80624,16 +92415,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metasysteminfo.com", true }, { "metaurl.io", true }, { "metavr.ru", true }, + { "metawebit.com", true }, { "metaword.co.jp", true }, { "metaword.com", true }, { "metaword.net", true }, { "metaword.org", true }, + { "metaximas-taverna.gr", true }, { "metayou.gq", true }, + { "metcalfecountyky.gov", true }, { "metebalci.com", true }, - { "meteenonline.nl", true }, { "meteo-parc.com", true }, { "meteoabegondo.tk", true }, { "meteobox.co", true }, + { "meteobox.com", true }, { "meteobox.cz", true }, { "meteobox.de", true }, { "meteobox.es", true }, @@ -80646,24 +92440,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "meteocuenca.tk", true }, { "meteohuertamur.tk", true }, { "meteonederbetuwe.nl", true }, + { "meteopievedicampo.ddns.net", true }, { "meteoradar.ch", true }, - { "meteorapp.space", true }, - { "meteorites-for-sale.com", true }, { "meteosat.tk", true }, - { "meteosmit.it", true }, { "meteowiki.tk", true }, { "meter.md", true }, { "meterhost.com", true }, { "meterinsight.com", true }, + { "metex.exchange", true }, { "metformin365.tk", true }, { "methamphetamine.co.uk", true }, { "method.com", true }, + { "methode.com", true }, { "methodfactory.com", true }, + { "methodist.com.tr", true }, { "methodprinting.com", true }, { "methotrexatee.gq", true }, { "methotrexates.gq", true }, + { "methuen.gov", true }, { "methusalem.tk", true }, { "methylone.com", true }, + { "metin2.community", true }, { "metin2.download", true }, { "metin2.top", true }, { "metin2blog.de", true }, @@ -80675,25 +92472,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metlifestore.com", true }, { "metmetfamily.fr", true }, { "meto.eu.org", false }, - { "metod.photo", true }, + { "metodosilvaniaderejuvenescimento.com", true }, { "metop.de", true }, + { "metprint.hu", true }, + { "metradar.ch", true }, { "metric.ai", false }, { "metricmutt.com", true }, + { "metrictheory.com", true }, { "metrika.ml", true }, + { "metriks.ru", true }, { "metrix-money-ptc.com", true }, { "metrixdm.com", false }, { "metro-detroit.com", true }, { "metro-vet.co.uk", true }, { "metro-web.net", true }, - { "metro2dev.com", true }, { "metroarchive.jp", true }, + { "metrobank.com.ph", true }, { "metrobriefs.com", false }, { "metrobus.co.uk", true }, { "metrocraft2033.tk", true }, { "metrodemaracaibo.tk", true }, + { "metrodemedellin.gov.co", true }, + { "metrodequito.gob.ec", true }, { "metrofree.ga", true }, { "metroline.ml", true }, + { "metrolisboa.pt", true }, { "metrolush.com", true }, + { "metromark.net", true }, { "metron-eging.com", true }, { "metron-networks.com", true }, { "metron-online.com", true }, @@ -80701,7 +92506,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metronidazolee.gq", true }, { "metronik.it", false }, { "metronome.ga", true }, - { "metrophone.vn", false }, + { "metroparks.net", true }, + { "metroplanorlando.gov", true }, { "metroplex.me", true }, { "metropole.com.au", true }, { "metropolis.ga", true }, @@ -80709,33 +92515,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "metropolisdawn.de", true }, { "metropolisdawn.net", true }, { "metropolisil.gov", true }, - { "metropop.ch", false }, - { "metrorealestatepros.com", true }, + { "metroproductiongroup.com", true }, + { "metrorealestatepros.com", false }, { "metrothessalonikis.tk", true }, { "metroval.tk", true }, + { "metroymca.org", true }, { "metsasta.com", true }, + { "metsosivut.fi", true }, + { "metspoedbeschikbaar.nl", true }, { "mettelenejohansson.dk", true }, { "mettin.org", true }, { "metu.social", true }, - { "metube.icu", true }, { "metver.tk", true }, { "metyweb.ga", false }, - { "metz-metropolitain.fr", true }, { "metzgermark.com", true }, { "meuautotrac.com.br", true }, { "meubanco7.com.br", true }, + { "meubebepa.com.br", true }, + { "meublesrosa.be", true }, + { "meuemby.com", true }, { "meugamer.com", true }, + { "meugibi.com", true }, { "meuhfolle.com", true }, + { "meujardimvertical.com.br", true }, { "meulenerkes.tk", true }, { "meulivro.biz", true }, { "meulk.co.uk", true }, { "meulocal.ml", true }, - { "meuluxomultimarcas.com.br", true }, { "meuneneoficial.com.br", true }, { "meupatrocinio.com", true }, { "meurisse.org", true }, { "meusartis.ca", true }, { "meuscabeloscacheados.com.br", true }, + { "meusextosentido.com", true }, + { "meusucesso.com", true }, { "mevanshop.com", false }, { "meveydesign.tk", true }, { "mevissenpsychotrauma.nl", true }, @@ -80744,84 +92557,100 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mew.build", true }, { "mew.vn", true }, { "mews-demo.com", true }, - { "mewsuppasitstudio.com", true }, - { "mewtea.org", true }, + { "mews.li", true }, { "mex-it-up.com", true }, { "mexaliu.ml", true }, { "mexby.com", true }, - { "mexican.dating", true }, { "mexicanjokes.net", true }, { "mexico.rs", true }, { "mexico.sh", true }, + { "mexicobeachfl.gov", true }, { "mexicodental.co", true }, { "mexicojetcharter.com", true }, { "mexicom.org", true }, { "mexicosrit.tk", true }, { "mexior.nl", true }, + { "mexticket.com", true }, { "meyafloors.com", true }, + { "meyateks.com", true }, { "meydan.tv", true }, { "meyer-horn.de", true }, { "meyeraviation.com", true }, { "meypell.com", true }, + { "meyrawinkel.nl", true }, { "meys.io", true }, { "mezcal.amsterdam", true }, { "mezedokamomata.tk", true }, { "meziblog.cz", true }, { "mezinfo.tk", true }, + { "mezio.pt", true }, { "mezquetillas.tk", true }, { "mezzanine.net", true }, + { "mezzoettaro.it", true }, { "mf-fischer.de", true }, { "mf-natuurfotografie.nl", true }, + { "mf.me", true }, + { "mfactory.ca", true }, { "mfamonitor.com", true }, - { "mfanalyzer.com", true }, { "mfatravaux.fr", true }, { "mfavis.com", true }, + { "mfcentral.com", true }, + { "mfdy66.com", true }, { "mfedderke.com", false }, { "mfen.de", true }, { "mfg-fx.com", true }, { "mfgo.link", true }, { "mfgusa.com", true }, { "mfiles.pl", true }, + { "mfinanse.pl", true }, { "mfischer-it.de", false }, { "mfits.co.uk", true }, { "mflodin.se", true }, { "mfmarquesantos.pt", true }, { "mfoda-eg.com", true }, + { "mforum.com.au", true }, { "mfotel.pl", true }, { "mfpccprod.com", true }, { "mfr-lameignanne.fr", true }, { "mfrepair.com", true }, { "mfsquad.com", true }, + { "mft-license.com", true }, { "mft.global", true }, { "mfxbe.de", false }, { "mfxer.com", true }, { "mfxm.fr", true }, - { "mg-productions.net", true }, + { "mfyy123.com", true }, + { "mg-case.com", true }, { "mgae.com", true }, + { "mgaroz.pro", true }, { "mgatreeservices.com", true }, { "mgclercoh.gov", true }, - { "mgcraft.net", true }, + { "mgcs.org", true }, { "mgdigitalmarketing.com.au", true }, + { "mgf.mx", true }, { "mgfashion.ae", true }, - { "mgfashion.store", true }, + { "mgfgroup.ca", true }, + { "mgfgroup.com", true }, + { "mgfgroup.mx", true }, + { "mgfgroup.us", true }, + { "mgfnow.com", true }, { "mgfpatrimoine.com", true }, { "mghiorzi.com.ar", false }, - { "mghturismo.com.ar", true }, { "mghw.ch", true }, { "mgi.gov", true }, + { "mgic.com", true }, { "mgientertainment.com", true }, { "mgis.com", true }, + { "mgkl.ru", true }, { "mgknet.com", true }, + { "mglobalservices.com", true }, { "mgmd.org", true }, { "mgmeet.com", true }, - { "mgmhotelyangon.com", true }, { "mgmpic.com", true }, { "mgmultiservicessrl.it", true }, { "mgo-ostenfelde.tk", true }, { "mgonline.tk", true }, { "mgousse.tk", true }, - { "mgpayserv.com", true }, - { "mgr-dev.com", true }, { "mgr-dev.tech", true }, { "mgrcred.online", true }, { "mgriff.id.au", true }, @@ -80829,32 +92658,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mgrt.net", true }, { "mgsdb.com", true }, { "mgsisk.com", true }, + { "mgsmfg.com", true }, { "mgtbaas.eu", true }, { "mgvideo.com.au", true }, { "mh-cdn.de", true }, + { "mh-hannover.de", false }, + { "mh-removals.co.uk", true }, { "mh.com.fj", true }, { "mh2.at", true }, { "mha.fi", true }, { "mhabdullah.tk", true }, + { "mhadegree.org", true }, { "mhadot.com", true }, { "mhainfantandtoddler.com", true }, { "mhalfter.de", true }, { "mhammerbacher.me", true }, { "mhand.org", true }, { "mhasika.tk", true }, + { "mhastey.com", true }, { "mhatero.com", true }, { "mhatlaw.com", true }, { "mhcdesignstudio.com", true }, - { "mhdaily.net", false }, { "mheistermann.de", true }, { "mhermans.nl", true }, { "mhf.gc.ca", true }, + { "mhgeay.fr", true }, { "mhginsurance.com", true }, - { "mhh.de", true }, + { "mhh.de", false }, + { "mhi.com", true }, { "mhi.web.id", true }, + { "mhiler.com", true }, { "mhilger.de", true }, { "mhjuma.com", true }, - { "mhk.edu.ee", true }, { "mhmfoundationrepair.com", true }, { "mhonline.fr", true }, { "mhtdesign.net", true }, @@ -80862,27 +92697,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mhurologytriad.org", true }, { "mi-amigo.tk", true }, { "mi-beratung.de", true }, - { "mi-so-ji.com", true }, { "mi.sc", true }, { "mi1k.cn", true }, { "mi80.com", true }, - { "mi92.ru", false }, { "mia-manager.dk", true }, - { "mia.ac", true }, { "mia.gent", true }, - { "mia.tw", true }, + { "mia.tw", false }, { "mia3d.fr", true }, { "miaadler.net", true }, + { "miaairportvillas.com", true }, + { "miabaka.moe", true }, { "miability.com", true }, - { "miabitch.net", true }, { "miablow.net", true }, - { "miacordeonstereo.com", true }, { "miacuario.cl", true }, { "miadennees.com", true }, { "miagentemicasa.com", true }, { "miagexport.com", true }, { "miah.top", true }, { "mialma.live", true }, + { "miami.gov", true }, + { "miamibeachcommunitychurch.com", true }, + { "miamicountyohioauditor.gov", true }, + { "miamidadeclerk.gov", true }, { "miamifl.casa", true }, { "miamifl.homes", true }, { "miamimosque.org", true }, @@ -80890,8 +92726,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mianbao.ga", true }, { "mianfei.us", true }, { "miankamran.tk", true }, - { "mianra.ddns.net", true }, - { "miao.ooo", true }, { "miao.team", true }, { "miaoft.com", false }, { "miaovps.com", false }, @@ -80909,11 +92743,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miathepintzu.com", true }, { "miavierra.org", true }, { "miaw.ooo", true }, - { "mibank.xyz", true }, + { "mibaso.com", true }, { "mibeneficio.cl", true }, { "mibh.de", true }, { "miboulot.com", true }, { "mibuiin.com", true }, + { "mica-zeitz.de", true }, { "mica.ml", true }, { "micado-software.com", true }, { "micah.soy", true }, @@ -80921,14 +92756,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "micamisetaestampada.com", true }, { "micanetic.com", true }, { "micareklamajansi.com", true }, - { "micaritafeliz.com", true }, { "micasayestilo.com", true }, { "micase.info", true }, + { "micatalogo.club", true }, { "micay.ca", true }, { "micbase.com", true }, { "miccaldo.tk", true }, + { "miccgolf.com", true }, { "miccomi.com", true }, - { "micelius.com", true }, { "michadenheijer.com", true }, { "michael-glaser.de", true }, { "michael-hess.com", true }, @@ -80939,8 +92774,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michael-schilling.de", false }, { "michael-simon.de", true }, { "michael-steinhauer.eu", true }, - { "michael.band", true }, + { "michael.band", false }, + { "michael.com", true }, { "michael.ie.eu.org", true }, + { "michael.zone", true }, { "michaelabbas.tk", true }, { "michaelamead.com", true }, { "michaelasawyer.com", true }, @@ -80955,12 +92792,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michaeldancot.com", true }, { "michaeldavidsonmusic.com", true }, { "michaeldjoseph.com", true }, - { "michaelduhamel.com", true }, + { "michaeleisen.org", true }, + { "michaelessek.com", true }, + { "michaelfoods.com", true }, { "michaelglaser.de", true }, { "michaelgroves.tk", true }, { "michaelgwynn.tk", true }, { "michaelhastrich.nl", true }, { "michaelhayes.tk", true }, + { "michaelhebblethwaite.com", true }, { "michaelholidaybooks.com", true }, { "michaeliannetta.tk", true }, { "michaeliscorporation.com", true }, @@ -80969,13 +92809,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michaeljames.com.au", true }, { "michaeljdennis.com", false }, { "michaeljohnsrestaurant.com", true }, + { "michaelkennedy.ie", true }, { "michaelkiske.tk", true }, { "michaelkleinert.de", true }, { "michaelklos.nl", true }, { "michaelkorsgill.tk", true }, { "michaelkuehn.tk", true }, - { "michaell.xyz", true }, + { "michaell.io", true }, { "michaelleibundgut.com", true }, + { "michaelliunsky.cn", true }, { "michaelloveys.com", true }, { "michaeln.net", true }, { "michaelolson.blog", true }, @@ -80987,6 +92829,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michaelsbookcorner.com", true }, { "michaelschmidt.ch", true }, { "michaelschubert.com", true }, + { "michaelschule-rheine.de", true }, { "michaelsnoeren.nl", false }, { "michaelstenberg.com", true }, { "michaelstoffer.com", true }, @@ -80997,6 +92840,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michaelvician.me", false }, { "michaelwermeester.com", true }, { "michaelwmckinney.com", true }, + { "michaelworth.au", true }, { "michal-klabnik.com", true }, { "michal-klabnik.cz", true }, { "michal-spacek.com", true }, @@ -81007,8 +92851,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michalis.xyz", true }, { "michalklabnik.com", true }, { "michalklabnik.cz", true }, - { "michalkozak.cz", true }, { "michalkral.tk", true }, + { "michalmlozniak.com", true }, { "michalpodraza.pl", true }, { "michalspacek.com", true }, { "michalspacek.cz", true }, @@ -81016,20 +92860,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michalszotkowski.cz", true }, { "michalwiglasz.cz", true }, { "michaonline.de", true }, + { "micharts.biz", true }, { "michasfahrschule.com", true }, + { "michel-cloud.de", true }, { "michel-kratochvil.tk", true }, { "michel-pilaert.coach", true }, { "michel-wein.de", true }, - { "michel.cc", true }, { "micheladisavino.tk", true }, { "michelangelo1978.com", true }, { "michelangelofoundation.org", true }, { "michelbenita.com", true }, { "michelcoumes.com", true }, { "michele.ga", true }, - { "michele.ml", true }, - { "micheleandkeith.com", true }, + { "michelegreenmd.com", true }, { "michelgolfier.ml", true }, + { "michelinb2b.com", true }, + { "michelinmedia.com", true }, { "michelkok.tk", true }, { "michellavat.com", true }, { "michelledonelan.co.uk", false }, @@ -81037,9 +92883,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michelletmc.com", true }, { "michelletrachtenberg.tk", true }, { "michelskovbo.dk", true }, + { "michelson.eu", true }, { "michelwolf.ch", true }, { "michey.tk", true }, - { "michibeck.eu", true }, { "michielbijland.nl", true }, { "michielskleding.be", true }, { "michielvanfastenhout.nl", true }, @@ -81048,16 +92894,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "michiganacousticneuroma.com", true }, { "michiganearhearing.com", true }, { "michiganhealth.tk", true }, + { "michiganrebates.com", true }, { "michiganstateuniversityonline.com", true }, - { "michiganunionoptout.com", false }, + { "michigantestingairbalancing.com", true }, { "michilaw.com", true }, { "michmexguides.com.mx", true }, { "michu.pl", true }, { "mickael-caudrelier.fr", true }, { "mickael.org", true }, + { "mickaelbonnard.fr", true }, { "mickel.tk", true }, { "mickelvaessen.com", true }, - { "mickgeorge.co.uk", true }, + { "mickeyspizzalincolnpark.com", true }, { "mickybottenberg.com", true }, { "mickyfanclub.tk", true }, { "micled.com", true }, @@ -81066,73 +92914,91 @@ static const nsSTSPreload kSTSPreloadList[] = { { "micluz.shop", true }, { "micoff.tk", true }, { "micolab.com", true }, + { "micon.ro", true }, { "micospa.gq", true }, + { "micourt.gov", true }, { "micr0lab.org", true }, { "micra.org.uk", true }, - { "micredito-ok.com", true }, { "micro-credit.tk", true }, { "microbiologist.tk", true }, + { "microbiologyinfo.com", true }, { "microbiota-insect-vectors.group", true }, { "microbiote-insectes-vecteurs.group", true }, { "microbird.club", true }, - { "microblading.pe", true }, - { "microc45.com", true }, + { "microblink.com", true }, { "microcert.cn", true }, { "microchains.network", true }, { "microco.sm", true }, { "microcomploja.com.br", true }, + { "microcosm.com", true }, { "microdesic.com", true }, + { "microdot.fr", true }, { "microdots.de", true }, { "microdrive.pt", true }, { "microferma.site", true }, - { "microgreensworld.com", true }, + { "microfinance-crimea.ru", false }, + { "microfusa.com", true }, + { "microhydrony.org", true }, { "microjovem.pt", true }, { "microl.ink", true }, + { "microloan.pk", true }, { "microlog-online.de", true }, { "microlog.org", true }, - { "microlz.com", false }, { "micromagic.fi", true }, { "micromaid.cf", true }, - { "micromata.de", true }, - { "micromind.io", true }, + { "micromata.de", false }, + { "micromicro.cc", true }, + { "micronodes.net", true }, { "micronotfound.gq", true }, { "micropigmentacaobh.com.br", true }, { "micropigmentadordesucesso.com", true }, { "micropigpets.com", true }, { "micropress.co.uk", true }, + { "microsoft", true }, { "microsoftedgeinsider.com", true }, { "microtel2notch.tk", true }, { "microtube.tk", true }, { "microvb.com", true }, { "microwesen.de", true }, + { "microworkers.com", true }, { "microzubr.com", true }, { "micruity.com", true }, { "mics-notrack.com", true }, { "micsell.com", true }, { "micsoft.gq", true }, { "miculturaservicios.gob.do", true }, + { "micxel.com.au", true }, { "midaero.co.uk", true }, { "midair.io", true }, + { "midam.sk", true }, { "midamericapiering.com", true }, { "midasauctions.com", true }, { "midasbay-free.ml", true }, { "midasjewellery.com.au", false }, { "midcarolinaregionalairport.com", true }, { "midcarolinaregionalairport.org", true }, + { "middelstaedt.com", true }, { "middleboroughma.gov", true }, + { "middleeasy.com", true }, + { "middlesbroughmoneyman.com", true }, + { "middlesexpolicenc.gov", true }, { "middlesexwoodpigeonclub.co.uk", true }, { "middletonshoppingcentre.co.uk", true }, { "middletowndelcopa.gov", true }, + { "middletownny.gov", true }, { "middletownri.gov", true }, { "mide.gob.do", true }, - { "midenza.com", true }, { "mideo.tk", true }, + { "midesa.eu", true }, + { "midesa.it", true }, { "midgawash.com", true }, { "midi-coquillages.com", true }, + { "midi-olympique.fr", true }, { "midia.tk", true }, { "midiaid.de", true }, { "midial.cz", true }, { "midiet.co.za", true }, + { "midilibre.fr", true }, { "midislandrealty.com", false }, { "midkam.ca", true }, { "midlandcountymi.gov", true }, @@ -81145,25 +93011,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "midnightmechanism.com", true }, { "mido.ga", true }, { "mido4link.tk", true }, + { "midohiowsd.gov", true }, { "midos.house", true }, { "midpss.lt", true }, { "midrange.com", true }, { "midress.club", true }, + { "midrra.com", true }, + { "midspace.co.uk", true }, { "midspss.lt", true }, { "midstatebasement.com", true }, { "midterm.us", true }, + { "midville-ga.gov", true }, + { "midwaycitysanitaryca.gov", true }, { "midwayrecovery.com", true }, + { "midwest-hidta.gov", true }, { "midwest737simulations.com", true }, { "midwestbloggers.org", true }, + { "midwestdfe.com", true }, + { "midwestinjurylawyers.com", true }, + { "midwestragdolls.com", true }, { "midwestrecyclingcorp.com", true }, + { "midwife360.com", true }, + { "midwifeschooling.com", true }, { "midyatotantik.tk", false }, - { "miedepain.asso.fr", true }, + { "miechvmeeting.org", true }, + { "miedepain.asso.fr", false }, { "miedge.biz", true }, { "miedge.net", true }, { "miegl.com", true }, { "miegl.cz", true }, - { "miekesandersuitvaart.nl", true }, { "mieldemexico.us", true }, + { "mielehybla.it", true }, { "mielelpinsapar.com", true }, { "mielke-it.ch", true }, { "miem.us", true }, @@ -81176,32 +93054,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mieterschutzkartei.de", true }, { "mietwohnungen-vermietung.com", true }, { "mieuxgrandir.ch", false }, + { "mifacturabolivia.com", true }, + { "mifflincountypa.gov", true }, { "miffy.me", true }, + { "mifirm.net", false }, { "miftahulteknik.com", true }, { "mig5.net", true }, { "mig81.com", true }, - { "migautovikyp.ru", true }, { "miggy.org", true }, { "mighit.ml", true }, - { "mightful-noobs.de", true }, { "mightycause.com", true }, { "mightyfive.tk", true }, + { "mightygadget.com", true }, + { "mightyjo.org", true }, { "mightytext-ios.tk", true }, { "mightytips.biz", true }, { "mightytips.hu", true }, { "migliorailtuoambiente.it", true }, + { "miglioricasinoonline.info", true }, { "migliorisitiincontri.it", true }, + { "mignet.io", true }, { "mignonne.com", true }, { "mignonneapi.com", true }, + { "migrafill.net", true }, { "migraine-en-werk.nl", true }, { "migrainereliefplan.com", true }, { "migrantskillsregister.org.uk", true }, + { "migrantworker.gov", true }, { "migraplus.ru", true }, + { "migratiolex.com", true }, { "migrations.tk", true }, { "migrinfo.fr", true }, { "miguel-platteel.fr", true }, { "miguel.pw", true }, { "miguelalonso.tk", true }, + { "miguelangeljulvez.com", true }, { "miguelcollections.com", true }, { "miguelcolmenares.com", true }, { "migueldemoura.com", true }, @@ -81214,14 +93101,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "migueloblitas.tk", true }, { "miguelpallardo.tk", true }, { "miguia.tv", true }, - { "mihaco.nl", true }, { "mihaiordean.com", true }, + { "mihaiturcu.ninja", true }, { "mihalgrameno.ml", true }, { "mihalicka.com", true }, { "mihanwebtest.tk", true }, { "miharu.moe", true }, { "mihaylov.tk", true }, { "mihealth.link", false }, + { "mihealthl.ink", false }, { "mihgroup.eu.org", true }, { "mihgroup.net", true }, { "mihir.ch", true }, @@ -81229,15 +93117,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mihnea.net", true }, { "mihu233.com.cn", true }, { "mihva.com", false }, + { "miih-kiosk.com", true }, { "miimhort.com", true }, { "miisy.com", true }, { "miisy.eu", true }, { "miisy.me", true }, { "miit-informain.pt", true }, + { "mija-fotografie.de", true }, { "mijam.xyz", true }, + { "mijlanduitvaartzorg.nl", true }, { "mijn-maagband.tk", true }, - { "mijnadviseur.shop", true }, + { "mijnafspraak.nl", true }, { "mijncloud.space", true }, + { "mijndiad.com", true }, + { "mijndiad.nl", true }, { "mijnejk.nl", true }, { "mijnetz.nl", true }, { "mijngeldcoach.nl", true }, @@ -81245,25 +93138,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mijnkantoor.net", true }, { "mijnkerstkaarten.be", true }, { "mijnkwadraad.nl", true }, - { "mijnlabo.be", true }, { "mijnmedirisk.nl", true }, { "mijnnaamdag.nl", true }, { "mijnonesie.nl", true }, + { "mijnrecepten.com", true }, + { "mijnrecepten.eu", true }, + { "mijnrecepten.nl", true }, { "mijnreisoverzicht.nl", true }, { "mijnsite.ovh", true }, + { "mijnstembureau-aaenhunze.nl", true }, + { "mijnstembureau-almere.nl", true }, + { "mijnstembureau-amersfoort.nl", true }, + { "mijnstembureau-amsterdam.nl", true }, + { "mijnstembureau-beuningen.nl", true }, + { "mijnstembureau-boekel.nl", true }, + { "mijnstembureau-coevorden.nl", true }, + { "mijnstembureau-enschede.nl", true }, + { "mijnstembureau-goirle.nl", true }, + { "mijnstembureau-groningen.nl", true }, + { "mijnstembureau-harderwijk.nl", true }, + { "mijnstembureau-helmond.nl", true }, + { "mijnstembureau-hilvarenbeek.nl", true }, + { "mijnstembureau-hollandskroon.nl", true }, + { "mijnstembureau-kerkrade.nl", true }, + { "mijnstembureau-koggenland.nl", true }, + { "mijnstembureau-leiden.nl", true }, + { "mijnstembureau-leiderdorp.nl", true }, + { "mijnstembureau-losser.nl", true }, + { "mijnstembureau-midden-groningen.nl", true }, + { "mijnstembureau-molenlanden.nl", true }, + { "mijnstembureau-naar1gemeenteopvoorne.nl", true }, + { "mijnstembureau-oisterwijk.nl", true }, + { "mijnstembureau-oosterhout.nl", true }, + { "mijnstembureau-rijssen-holten.nl", true }, + { "mijnstembureau-s-hertogenbosch.nl", true }, + { "mijnstembureau-schagen.nl", true }, + { "mijnstembureau-staphorst.nl", true }, + { "mijnstembureau-steenbergen.nl", true }, + { "mijnstembureau-tynaarlo.nl", true }, + { "mijnstembureau-utrecht.nl", true }, + { "mijnstembureau-waadhoeke.nl", true }, + { "mijnstembureau-waalre.nl", true }, + { "mijnstembureau-westerwolde.nl", true }, + { "mijnstembureau-wierden.nl", true }, + { "mijnstembureau-woensdrecht.nl", true }, + { "mijnstembureau-zundert.nl", true }, + { "mijnstembureau-zwijndrecht.nl", true }, { "mijnstembureau.nl", true }, { "mijntelefoonboek.com", true }, - { "mijntest.herokuapp.com", true }, { "mijntransacties.nl", false }, { "mijnvogaanvraag.nl", true }, { "mijnwefact.nl", true }, { "mika.moe", true }, + { "mikado-rybak.ru", true }, { "mikadoe.nl", true }, - { "mikaelf.com", true }, + { "mikaelf.com", false }, { "mikaeljansson.net", true }, { "mikaelk.tk", true }, { "mikaelkulig.duckdns.org", true }, - { "mikaelvesavuori.se", true }, { "mikaila.tk", true }, { "mikakalathil.ca", true }, { "mikakalevi.com", true }, @@ -81271,6 +93203,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikaknuutila.fi", true }, { "mikaknuutila.photography", true }, { "mikalikes.men", true }, + { "mikanakashima.com", true }, { "mike-bland.com", true }, { "mike-burns.com", true }, { "mike-et-pascale-sanger.com", true }, @@ -81278,29 +93211,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikebelanger.ca", true }, { "mikeblog.site", true }, { "mikeburns.tk", true }, - { "mikecapson.com", true }, + { "mikecapson.com", false }, { "mikecb.org", true }, { "mikechasejr.tk", true }, - { "mikeflux.com", true }, - { "mikegao.net", false }, { "mikegao.org", true }, { "mikegerwitz.com", true }, { "mikeguy.co.uk", true }, { "mikehamburg.com", true }, { "mikeklidjian.com", true }, { "mikekreuzer.com", true }, + { "mikelawson.com", true }, { "mikelpradera.tk", true }, { "mikemcgeephotography.com", true }, { "mikemooresales.com", true }, { "mikeowens.us", true }, { "mikeprocopio.com", true }, { "mikerichards.email", false }, - { "mikerichards.gallery", true }, - { "mikerichards.photography", true }, - { "mikerichards.photos", true }, - { "mikerichards.pictures", true }, - { "mikerichardsphotography.com", true }, + { "mikerichards.gallery", false }, + { "mikerichards.photography", false }, + { "mikerichards.photos", false }, + { "mikerichards.pictures", false }, + { "mikerichardsphotography.com", false }, { "mikeschaffnerphotography.com", true }, + { "mikesplumbingswfl.com", false }, { "mikesystems.tk", true }, { "miketabor.com", true }, { "miketheuer.com", true }, @@ -81317,6 +93250,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikhalt.tk", true }, { "mikhirev.ru", true }, { "mikhlevich.ru", true }, + { "mikhomes.vn", true }, { "miki-boras.de", true }, { "miki.community", true }, { "miki.it", true }, @@ -81332,11 +93266,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikkelvej.dk", true }, { "mikkohuupponen.com", true }, { "mikkonen.bio", true }, - { "mikkosa.fi", false }, - { "miklagard.dk", true }, + { "mikkonen.com", true }, { "miklcct.com", true }, { "miklima.pl", true }, - { "miknight.com", false }, { "mikodojo.tk", true }, { "mikonmaa.fi", true }, { "mikori.sk", true }, @@ -81344,34 +93276,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mikoulloa.com", true }, { "mikper.com", true }, { "mikrokosmos.tk", true }, - { "mikrom.cz", false }, { "mikropixel.de", true }, { "mikrotech.co.za", true }, { "mikrotike.tk", true }, { "mikrozajmy-na-kartu.cf", true }, + { "miku-doujin.com", true }, { "miku.bar", false }, { "miku.cloud", true }, { "miku.party", true }, { "mikumiku.stream", true }, - { "mikupic.com", true }, + { "mikunosworld.com", true }, { "mikusa.xyz", true }, { "mikysgrill.it", true }, { "mil-spec.ch", false }, { "mil.ee", false }, { "mil0.com", true }, { "milaandmikki.co.nz", true }, - { "milabae.com", true }, { "milacronindia.com", true }, { "milaelaine.net", true }, + { "milagrotequila.com", true }, { "milahendri.com", true }, { "milakirschner.de", true }, { "milan-news.ml", true }, { "milaneziadvocacia.com", true }, { "milani.io", true }, { "milania.de", true }, + { "milanm.org", true }, { "milanmi.gov", true }, { "milano-web.it", true }, { "milanoclownfestival.tk", true }, + { "milanodigitalweek.com", true }, { "milanotoday.it", true }, { "milanow67.ml", true }, { "milanpala.cz", false }, @@ -81380,6 +93314,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "milanvreeken.nl", true }, { "milapopovich.com", true }, { "milasescmagazin.tk", true }, + { "milatlumaczenia.pl", true }, { "milavica.tk", true }, { "milavicca.tk", true }, { "milbournequine.co.uk", true }, @@ -81389,22 +93324,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "milcrofton.gov", true }, { "mildridesua.com", true }, { "milehighmaniac.com", true }, - { "milejesurum.com", true }, + { "milehighmedia.com", true }, { "mileme.com", true }, { "milenaria.es", true }, { "mileonapp.com", true }, + { "miles-and-more-kreditkarte.com", false }, { "milesaddict.com", true }, { "milesapart.dating", true }, { "milesconsulting.io", true }, { "milesdewitt.com", true }, + { "milestonehotel.com", true }, { "milestonemachine.com", true }, { "mileyweasel.de", true }, + { "milfanaltube.com", true }, + { "milfbank.com", true }, + { "milfed.com", true }, + { "milfedin.com", true }, + { "milfgalleries.com", true }, + { "milfhunter.com", true }, + { "milflove.live", true }, + { "milfmoms.tv", true }, + { "milfordfiremi.gov", true }, + { "milfordtwpmi.gov", true }, + { "milfporn.tv", true }, { "milfpornograph.com", true }, + { "milfsection.com", true }, { "milhistwiki.tk", true }, { "milhoazul.com.br", true }, { "milieuland.com", true }, { "miliodemendralejo.tk", true }, + { "militaria.hu", true }, { "military-equipment.tk", true }, + { "military-veteran.com", true }, { "militaryaviationsafety.gov", true }, { "militaryconsumer.gov", true }, { "militaryfetish.tk", true }, @@ -81412,8 +93363,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "militarypumps.com", true }, { "militarysrit.tk", true }, { "miliumnet.tk", true }, + { "milivcounty.gov", true }, + { "miljotankar.se", true }, { "milk.games", true }, { "milkaalpesiutazas.hu", true }, + { "milkacat.com", true }, { "milkagyengedseg.hu", true }, { "milkaholic.ml", true }, { "milkameglepetes.hu", true }, @@ -81423,7 +93377,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "milkmoovement.io", true }, { "milkopet.com", true }, { "milktea.info", false }, + { "milkteacant.com", true }, + { "milkwoodrestaurant.com", false }, + { "milkyperu.com", true }, { "milkypond.org", true }, + { "milkywan.fr", true }, { "mill.ml", true }, { "milladeo.tk", true }, { "millalex.com", true }, @@ -81434,24 +93392,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "millefleurs.eu", true }, { "millennium-thisiswhoweare.net", true }, { "millenniumfalcon.org", true }, - { "millenniumstem.org", true }, + { "millenniumhotels.com", true }, { "millenniumweb.com", false }, { "miller-alex.de", true }, { "miller-shop.cf", true }, { "milleralarms.co.uk", true }, + { "millerandfasselaw.com", true }, { "millerandzois.com", true }, { "millercountyga.gov", true }, + { "millercountymo.gov", true }, { "millerfabricationsolutions.com", true }, { "milleron.net", true }, { "milleron.xyz", true }, { "millersminibarns.com", true }, - { "millersprolandscape.com", false }, { "millesime-communication.fr", true }, { "millettable.com", true }, + { "millhill.org.uk", true }, + { "millhousen.tech", true }, { "milliarden-liste.de", true }, { "millibirlik.tk", true }, { "millibitcoin.jp", true }, { "milliegrace.org", true }, + { "milligandrivertraining.co.uk", true }, { "millikart.az", true }, { "millionaireclub.tk", true }, { "millionairemethodsacademy.tk", true }, @@ -81462,14 +93424,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "millionlearn.org", true }, { "millionseha.com", true }, { "millistream.com", true }, - { "millonairesstore.com", true }, + { "millix.com", true }, + { "millnet.cloud", true }, { "millonario.tk", true }, { "millscountyiowa.gov", true }, + { "millscountytx.gov", true }, { "millsidecentre.org", true }, + { "milltime.se", true }, { "millwoodwa.gov", true }, + { "milmesetas.com", true }, { "milmiedos.tk", true }, + { "milmmed.ru", true }, { "milnerga.gov", true }, { "milodistradfallning.com", true }, + { "milomedia.net", true }, + { "milosguide.dk", true }, { "milpitas.gov", true }, { "milr.dk", true }, { "miltau.de", true }, @@ -81479,10 +93448,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miltor.com.ua", true }, { "miltor.ru", true }, { "miluneetsens.fr", true }, + { "milvilla.com", true }, + { "milvus.com.br", true }, { "milwaukee-webdesigner.com", true }, { "milwaukeecreative.com", true }, { "milwaukeeinternational.tk", true }, { "milwaukeetool.eu", true }, + { "mim-standaard.nl", true }, { "mim.am", true }, { "mim.properties", true }, { "mimamau.de", true }, @@ -81491,14 +93463,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mimemoriadepez.com", true }, { "mimeo.digital", true }, { "mimercadillo.tk", true }, - { "mimercaito.com", true }, { "mimgnj.com", true }, - { "mimidots.com", true }, { "mimikov.cz", true }, { "mimithedog.com", true }, { "mimm.gov", true }, - { "mimmog.it", true }, { "mimocad.io", true }, + { "mimoesthetic.com", true }, { "mimonia.cf", true }, { "mimonia.ga", true }, { "mimonia.gq", true }, @@ -81506,19 +93476,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mimovrste.com", true }, { "mimoza.tk", true }, { "mimscellaneous.com", true }, - { "mimsonlineweddingshop.com", true }, { "mimumimu.net", true }, { "mimundodxn.com", true }, { "mimusic.cf", true }, { "min-forsyning.dk", true }, - { "min-sky.no", true }, + { "min.io", true }, { "min.kiwi", false }, - { "minacellini.com", true }, { "minacssas.com", true }, { "minademonic.org", true }, { "minaio.tk", true }, { "minakov.pro", true }, - { "minakova.pro", true }, + { "minakova.pro", false }, { "minamassimo.org", true }, { "minamisouma-furusato.jp", true }, { "minamo.io", true }, @@ -81528,12 +93496,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minapin.com", true }, { "minaprine.com", true }, { "minasfor.com.br", true }, - { "minbrew.com", true }, + { "minatokucarpet.com", true }, + { "minbos.com", true }, + { "mincantos.com.br", true }, { "minced.cf", true }, + { "minclaw.com", true }, { "mincom.ga", true }, - { "mincompute.com", true }, { "mind-books.gq", true }, { "mind-box.ch", false }, + { "mind-drama.com", true }, { "mind-farma.com", true }, { "mind-hochschul-netzwerk.de", true }, { "mind-media.com", true }, @@ -81545,7 +93516,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mindbox.cat", true }, { "mindbuild.com", true }, { "mindcms.nl", true }, - { "mindcoding.ro", true }, { "mindcraft.ga", true }, { "minddistortion.tk", true }, { "minddrive.cf", true }, @@ -81559,30 +93529,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mindhand.com", true }, { "mindjee.tk", true }, { "mindleaking.org", true }, - { "mindlush.com", true }, { "mindmax.fi", true }, { "mindmeister.com", true }, { "mindmusic.online", true }, + { "mindmynature.com", true }, { "mindomo.com", true }, { "mindonmymoney.nl", true }, { "mindox.com.br", true }, + { "mindprod.com", true }, { "mindresti.tk", true }, - { "mindsetatx.com", true }, + { "mindrnd.com", true }, + { "mindscapephotos.de", true }, + { "mindsight.com.br", true }, { "mindspliteffect.tk", true }, + { "mindstream.one", true }, + { "mindtechdigital.com.br", true }, { "mindthe5.com", true }, { "mindthe5.org", true }, + { "mindtherock.com", true }, { "mindvsmind.tk", true }, { "mindwork.space", true }, - { "mindyourwater.com", true }, { "mine-craftlife.com", true }, { "mine-pixl.de", true }, { "mine260309.me", false }, + { "minebbs.com", true }, { "minebier.dk", true }, { "minebitcoin.tk", true }, { "minecity.fun", true }, { "minecraft-forum.eu", true }, { "minecraft-game.ga", true }, - { "minecraft-reviews.com", true }, { "minecraft-server.eu", true }, { "minecraft-servers.biz", true }, { "minecraft.buzz", true }, @@ -81592,6 +93567,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minecraftbestroyale.gq", true }, { "minecraftdolarcube.gq", true }, { "minecrafteasy.gq", true }, + { "minecraften.net", true }, { "minecraftforever.tk", true }, { "minecraftforum.de", true }, { "minecraftforum.ovh", true }, @@ -81608,16 +93584,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minecraftwin.gq", true }, { "minecraftx.ml", true }, { "minefields.tk", true }, + { "minefort.com", true }, { "minehash.tk", true }, { "minehattan.de", true }, - { "minehub.de", true }, { "minelands.ml", true }, { "minelight.ml", true }, + { "minenash.com", true }, { "minepack.net", true }, - { "mineralky.com", true }, { "mineralnibani.bg", true }, { "minered.org", true }, - { "minermonitoring.com", true }, { "minerstat.com", true }, { "minersvillepa.gov", true }, { "minerva2015.it", true }, @@ -81631,38 +93606,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minesweepergame.de", true }, { "minetracker.dk", true }, { "mineturtle.de", true }, + { "minewiki.net", true }, { "minez-nightswatch.com", false }, { "minf3-games.de", true }, { "minfin.gov.ua", true }, + { "mingle2.com", true }, + { "mingming.info", false }, { "mingram.net", true }, { "mingwah.ch", false }, { "mingy.ddns.net", true }, + { "mingyannet.com", true }, { "minh.at", false }, { "minhanossasenhora.com.br", true }, { "minhanwindow.vn", true }, { "minhng99.cloud", true }, { "minhng99.eu", true }, + { "minhtuongcomputer.com", true }, { "minhyukpark.com", true }, { "mini-igra.tk", true }, { "mini-piraten.de", true }, + { "mini-zoo.club", true }, { "mini2.fi", true }, { "minialbums.ga", true }, { "miniatomium.tk", true }, + { "minibabi.site", true }, { "minibackpackgirls.cf", true }, { "minibaggerverleih-aulendorf.de", true }, + { "minibardelivery.com", true }, { "minibikini.cf", true }, { "minibomba.pro", true }, { "minibrewery.cf", true }, { "minibus-service.ru", true }, + { "minibusrent.ro", true }, { "minicampingshalom.nl", true }, { "minican.net", true }, { "miniclip.com", true }, { "minics.tk", true }, - { "minidesign.se", true }, + { "minidisc.wiki", true }, + { "minifree.org", true }, { "minigames.com", true }, { "minigermanauto.com", true }, + { "minigolf-oase.com", true }, { "minigolf-reisinger.com", true }, { "minigolfandgames.co.uk", true }, + { "minikasinosblackandred.es", true }, { "minikidz.es", true }, { "minikin.tk", true }, { "minikneet.com", true }, @@ -81675,9 +93662,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minimaliston.com", true }, { "minimalmx.io", true }, { "minimayhemsoftplay.co.uk", true }, + { "minimegaarcade.com", true }, { "minimonies.tk", true }, { "minimotogp.tk", true }, - { "minimvc.com", true }, + { "minimvc.com", false }, { "minin.tk", true }, { "mining-club.tk", true }, { "mining.diamonds", true }, @@ -81691,6 +93679,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miniso.me", true }, { "minisoft4u.ir", true }, { "ministerioaguadevida.tk", true }, + { "ministeriodeeducacion.gob.do", true }, { "ministeriumfuerinternet.de", true }, { "ministory.tk", true }, { "ministryofinternet.eu", true }, @@ -81703,7 +93692,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miniverse.social", true }, { "minivideoadapterssales.tk", true }, { "miniwallaby.com", true }, - { "miniwaplus.com", true }, { "minix.jp", true }, { "minjusticia.gob.cl", true }, { "mink-coat.tk", true }, @@ -81714,8 +93702,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minload.com", true }, { "minmaxgame.com", true }, { "minna.tk", true }, - { "minndak.net", true }, { "minnesota8.org", true }, + { "minnesotacitymn.gov", true }, { "minnesotahealthcareconsortium.gov", true }, { "minnesotareadingcorps.org", true }, { "minnisites.com", true }, @@ -81727,50 +93715,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "minocyclines.gq", true }, { "minohtaurov.cf", true }, { "minor.news", true }, + { "minorice.net", true }, { "minorisa.tk", true }, { "minoritywhip.gov", true }, { "minotauro.com.ar", true }, + { "minotnd.gov", true }, { "minoxbahia.com.br", true }, { "minpingvin.dk", true }, { "minpolit.com", true }, + { "minquipo.nl", true }, { "minsk-city.tk", true }, { "minsk-cops.tk", true }, { "minsk-music.tk", true }, + { "minsub.jp", true }, { "mint-frauen-bw.de", false }, + { "mintal.is", true }, { "mintclass.com", true }, { "mintdsmile.com.au", true }, { "mintea-noua.ro", true }, + { "mintea.pw", true }, { "mintea.xyz", true }, { "minternals.com", true }, + { "minterslab.com", true }, + { "mintersvault.com", true }, { "mintert.net", true }, { "mintfirsts.co.uk", true }, { "mintfirsts.com", true }, { "mintitafever.tk", true }, { "minto.cc", true }, + { "mintogardens.org.au", true }, { "minton.systems", true }, { "mintosherbs.com", true }, { "mintosoft.net", true }, { "mintse.com", false }, { "minttang.cn", false }, + { "mintymoney.com", true }, + { "mintywhite.com", true }, { "minu.link", true }, { "minube.co.cr", true }, - { "minucaelena.com", true }, { "minul.in", true }, { "minungdomsbolig.dk", true }, { "minutashop.ru", true }, - { "minuteflightdeals.com", true }, { "minutelender.com", true }, + { "minutemanpress.com", true }, { "minutepunchline.com", true }, + { "minuterice.com", true }, { "minutocultural.com.br", true }, + { "minutoseguros.com.br", true }, { "minux.info", true }, + { "minweb.org", true }, + { "minxmine.eu.org", true }, { "mio-ip.ch", true }, { "miodziki.pl", true }, + { "miomiojoyeria.com", true }, + { "miorganics.ro", true }, { "miottawavotes.gov", true }, { "mipapo.de", true }, - { "mipasevip.com", true }, { "mipediatra.tk", true }, { "mipiaci.co.nz", false }, { "mipiaci.com.au", false }, + { "miplanilla.com", true }, { "mipnet.cl", true }, { "mipromo.com", true }, { "miproximopaso.org", true }, @@ -81787,10 +93791,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mir.do", true }, { "mir.pe", true }, { "mir24.tk", true }, + { "mira.fun", true }, + { "mira.systems", true }, { "mira.vip", true }, { "mirabella.tk", true }, { "miraclesformya.org", true }, { "mirador.co.uk", true }, + { "mirador.com", true }, { "miradordelcondado.com", true }, { "mirage-project.tk", true }, { "miragenews.com", true }, @@ -81801,12 +93808,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mirahezebots.org", true }, { "mirai-coupon.com", true }, { "miraidenshi.com", true }, + { "miraizu-recruit.com", true }, + { "mirakl.com", false }, { "miraldi.eu", true }, { "miramanga.org", true }, { "miramar-obgyn.com", true }, { "miramar.ca", true }, - { "miramaraddictionandrehabcenters.com", true }, { "mirandakids.bg", true }, + { "miranza.es", true }, + { "mirasee.com", true }, { "mirasmun.tk", true }, { "miratechgroup.com", true }, { "miraxe.cf", true }, @@ -81824,10 +93834,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "miremedio.cl", true }, { "mirepublic.co.nz", true }, { "mireservaonline.es", true }, - { "mirgadania.ru", false }, { "miriamgamburd.com", true }, { "miriamharel.tk", true }, - { "mirindadomo.ru", false }, { "mirinfonews.tk", true }, { "mirjamderijk.nl", true }, { "mirkino.tk", true }, @@ -81836,25 +93844,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mirknighek.gq", true }, { "mirkofranz.de", true }, { "mirkomainardi.com", true }, + { "mirkout.com", true }, { "mirkvartir.tk", true }, { "mirmax.ch", true }, + { "mirmeco.org", true }, { "mirnesnet.tk", true }, { "mirnews.ml", true }, { "mirobuvi.com.ua", true }, + { "mirogrdnika.info", true }, + { "miroirbythalia.shop", true }, { "mirokon.tk", true }, { "mironet.cz", true }, { "mironi.ml", true }, { "mironized.com", true }, { "mironov.tk", true }, - { "mirotakampus.com", true }, + { "miroslavholec.cz", true }, + { "mirotakampus.com", false }, { "mirprav.tk", true }, + { "mirri.net", true }, { "mirrordream.net", true }, { "mirrormirror.tk", true }, + { "mirrormonster.com", true }, { "mirrorsedgearchive.de", true }, { "mirrorsedgearchive.ga", true }, { "mirrorwood.com", true }, + { "mirs.ky", true }, { "mirshak.com", false }, - { "mirstroy.su", true }, { "mirtazapine.gq", true }, { "mirtentov.ru", true }, { "mirtes.cz", true }, @@ -81868,6 +93883,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mirzetonline.tk", true }, { "mis1042.com", false }, { "mis1042.top", true }, + { "misa.org", true }, { "misaka.me", true }, { "misakacloud.net", true }, { "misakaloli.com", false }, @@ -81875,35 +93891,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "misakiya.co.jp", true }, { "misalacuna.cl", true }, { "misanci.cz", true }, - { "mischamassage.nl", true }, + { "misc.com.my", true }, { "mischolz.de", true }, { "misclick.net", true }, { "misclick.nl", true }, + { "misco.it", true }, { "misconfigured.io", true }, { "miscuadros.tk", true }, { "miscursosdebelleza.com", true }, - { "misentropic.com", true }, - { "misexam.com", true }, { "misfit-media.com", true }, + { "mishamayfairart.com", true }, { "mishaomar.tk", true }, { "mishavayner.com", true }, - { "mishkan-israel.net", true }, { "mishkinn.ru", true }, { "mishkovskyi.net", true }, { "mishpatim.tk", true }, { "mishraurology.com", true }, { "mishraweb.com", true }, - { "misini.fr", true }, + { "misiepluszowe.com", true }, { "misinstrumentos.com", true }, + { "misjoyas.com.es", true }, + { "miskara.com", true }, { "miskatonic.org", true }, { "misoji-resist.com", true }, { "misol.kr", true }, + { "misooda.in", true }, { "mispelis.tk", true }, { "mispromo.com", true }, { "misreflexiones.tk", true }, { "misreports.in", true }, { "miss-inventory.co.uk", true }, - { "miss-platinum.net", true }, { "miss.com.tw", true }, { "missadrastea.org", true }, { "missakari.com", true }, @@ -81914,24 +93931,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "missdoertie.net", true }, { "missdoggystyle.com", true }, { "missdream.org", true }, + { "misseguf.dk", true }, { "missevent.pl", true }, - { "missfit.ru", true }, { "missflora.se", true }, - { "missfuli.com", false }, + { "missguidedus.com", true }, { "missilovely.tk", true }, + { "missingchildreneurope.eu", true }, { "missinglinks.tk", true }, { "mission-gesundheit.online", true }, { "mission-orange.de", true }, - { "missionflare.com", true }, - { "missionpuppy.nl", true }, + { "missionfoods.com", false }, + { "missions.me", true }, { "missionsgemeinde.de", true }, { "missionskreis-kueps.de", true }, - { "mississippigenealogy.com", true }, + { "mississaugaelite.com", true }, + { "misskappababy.com", true }, + { "misskey.art", true }, { "misslollipop.fr", true }, { "missmaid.co.uk", true }, { "missmaid.com", true }, { "missmeydan.com", true }, { "misson.ovh", true }, + { "missoula.gov", true }, + { "missoulacountymt.gov", true }, + { "missoulian.com", true }, { "missouri-sky.tk", true }, { "missouriheatingcoolingadvice.com", true }, { "missoy.me", true }, @@ -81953,19 +93976,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mistacms.com", false }, { "mistades.ga", true }, { "mistajsay.com", true }, + { "mister-auto.co.uk", true }, + { "mister-auto.com", true }, + { "mister-auto.de", true }, + { "mister-auto.es", true }, + { "mister-auto.it", true }, + { "mister-auto.nl", true }, { "mister-matthew.de", true }, + { "misterbandb.com", true }, { "misterboddy.com", true }, { "misterd.ml", true }, + { "misterdomain.eu", true }, { "mistergermany.tk", true }, { "mistergout.com", true }, - { "misterharty.com", true }, { "misterkeltic.com", true }, { "misterl.net", true }, { "misterorion.com", true }, - { "misterseguros.com.br", true }, { "mistertesi.it", true }, { "misteryrip.tk", true }, - { "mistilteinn.is", true }, { "mistinecn.com", false }, { "mistitservices.in", true }, { "mistlake.net", true }, @@ -81973,28 +94001,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mistress-lucia.tk", true }, { "mistressnadine.tk", true }, { "mistressofbeads.tk", true }, - { "mistybox.com", false }, { "mistyoverlookranch.com", true }, - { "misumasu.com", true }, - { "misupport.dk", true }, { "misura.re", true }, { "miswonline.nl", true }, - { "mit-dem-rad-zur-arbeit.de", true }, - { "mit-dem-rad-zur-uni.de", true }, + { "mit-dem-rad-zur-arbeit.de", false }, + { "mit-dem-rad-zur-uni.de", false }, + { "mit-sexchat-geld-verdienen.com", true }, { "mit-uns.org", true }, { "mit.akita.jp", true }, { "mit.dk", true }, + { "mit.edu.it", true }, { "mit.gg", false }, { "mita-beutel.tk", true }, { "mita.me", true }, { "mitarbeiterbefragungen.com", true }, { "mitarbeitermotivation-anleitungen.de", true }, + { "mitarrangement.dk", true }, { "mitchell.id", true }, + { "mitchell.to", true }, + { "mitchellcountync.gov", true }, { "mitchelmore.ca", true }, - { "mitchkalf.nl", true }, + { "mitchkalf.nl", false }, { "mitchkiah.com", true }, { "mitdip-mit-group-ch.azurewebsites.net", true }, { "mite3.nl", true }, + { "mitechtrading.com", true }, + { "mitel.io", true }, { "mitelec.es", true }, { "miteltest.com", true }, { "mitenloytaatoita.fi", true }, @@ -82003,29 +94035,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mitensaadatyota.fi", true }, { "mitev.gq", true }, { "mitevi.com", true }, - { "mitfx.com", true }, { "mitgrussen.de", true }, { "mithgol.tk", true }, { "mithypnoseweiter.de", true }, { "mitiad.gq", true }, + { "mitico.at", true }, { "miticobikes.com", true }, { "mitiendademunecas.com", true }, + { "mitigant.io", true }, { "mitigationcommission.gov", true }, { "mitior.net", true }, { "mitjafelicijan.com", true }, { "mitjavila.com", true }, - { "mitnetz-gas.de", true }, - { "mitnetz-strom.de", true }, + { "mito-meishi.shop", true }, { "mitokashi.ml", true }, + { "mitranlogistik.com", true }, { "mitraseo.tk", true }, { "mitratech.com.br", true }, - { "mitrausahatani.com", true }, + { "mitrausahagoto.com", true }, { "mitrax.com.br", true }, { "mitre10.com.au", false }, { "mitrecaasd.org", true }, { "mitremai.org", true }, - { "mitribe.club", true }, - { "mitropolija-zagrebacka.org", true }, { "mitrostudios.com", true }, { "mitsign.com", true }, { "mitsonnenbrillen.de", true }, @@ -82035,14 +94066,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mitsubishi-motors.com.co", true }, { "mitsubishielectric-rce.eu", true }, { "mitsukisushi.com", true }, + { "mitt.ca", true }, { "mittagonghomestead.com.au", true }, + { "mittarinvaihto.fi", true }, { "mittdolcino.com", true }, { "mittelalter-lexikon.de", true }, { "mittelunsachlich.de", true }, { "mittendorff.tk", true }, { "mittenofficesystems.com", true }, + { "mitterbach.org", true }, { "mittid.dk", true }, - { "mittikimonos.com.br", true }, + { "mittilmeld.dk", true }, { "mittwoch-nacht.net", true }, { "mitulv4u.tk", true }, { "mitzpettel.com", true }, @@ -82066,13 +94100,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mivzakim.tk", true }, { "mivzakim.tv", true }, { "mivzaklive.co.il", false }, + { "miweb.ec", true }, + { "miwebmadrid.es", true }, { "mix-books.ga", true }, { "mix-channel.ml", true }, { "mix-master.fr", true }, { "mix-recruit.jp", true }, { "mix.my", true }, { "mixandplay.tk", true }, - { "mixedbagashley.com", true }, + { "mixedanimals.com", true }, { "mixedrecipe.com", true }, { "mixerfestival.com.br", true }, { "mixes.cloud", true }, @@ -82090,74 +94126,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mixmix.tk", true }, { "mixmovi.com", true }, { "mixnix.tk", true }, + { "mixnmojo.com", true }, + { "mixom.by", true }, + { "mixom.net", true }, { "mixon.tk", true }, { "mixpanel.com", true }, { "mixposure.com", true }, { "mixtafrica.com", true }, - { "mixuz.ru", true }, { "mixx.com.hk", true }, - { "miya.io", true }, { "miyagi-ctr.com", true }, { "miyagi-r.com", true }, { "miyajima-ken.jp", true }, { "miyako-kyoto.jp", true }, { "miyamane-room.com", true }, { "miyanaga.tech", true }, + { "miyasyou.com", true }, { "miyatakaikei.com", true }, + { "miyavru.com", true }, + { "miyazakian.com", true }, + { "miyohiro.net", true }, { "miyoshi-kikaku.co.jp", true }, { "miyoshi-kikaku.com", false }, - { "miyugirls.com", true }, { "mizar.im", false }, { "mizik.cz", true }, { "miziklakay.com", true }, { "mizipack.com", false }, { "mizoey.se", true }, - { "mizque.ch", true }, + { "mizon.com.pe", true }, { "mizrahi-tefahot.co.il", true }, { "mizternational.com", true }, { "mizu.coffee", true }, - { "mizuasobi.work", true }, { "mizucoffee.net", true }, { "mizuhobank.co.id", true }, { "mizuhofutures.com", true }, { "mizuiromoon.com", true }, { "mizukoshika.jp", true }, { "mizumax.me", true }, + { "mj420.com", false }, { "mjacobson.net", true }, { "mjanja.ch", true }, { "mjasm.org", true }, - { "mjbeventspr.com", true }, + { "mjbeventspr.com", false }, + { "mjbtechtips.com", true }, { "mjcstsul2022.tk", true }, + { "mjf.cz", true }, { "mjgroup.io", true }, { "mjhs.org", true }, { "mjhsfoundation.org", true }, { "mjjshow.eu.org", true }, - { "mjmedia.co.za", true }, { "mjniessen.com", true }, { "mjollnir.fr", true }, + { "mjpromotions.nl", true }, { "mjrlegends.com", true }, - { "mjs-domy.pl", true }, { "mjsacco-dwi.com", true }, - { "mjsacco.com", true }, { "mjscustomcreations.com.au", true }, { "mjsports.bet", true }, + { "mjstudios.tech", false }, { "mjstudios.tk", true }, + { "mjsys.ca", true }, { "mjt.me.uk", true }, { "mjuktvatten.nu", true }, { "mjwadvisory.com.au", true }, { "mjzdaman.tk", true }, + { "mk-builder.net", true }, { "mk-translations.ua", true }, { "mk.gov.tr", true }, { "mk89.de", true }, - { "mkacg.com", true }, { "mkaciuba.com", false }, - { "mkakh.com", true }, { "mkakh.xyz", true }, + { "mkala.ru", true }, { "mkalisch.de", true }, - { "mkbassist.nl", true }, { "mkbd.ru", true }, { "mkbeindhoven.nl", true }, { "mkbet.tk", true }, + { "mkbofficeshop.nl", true }, { "mkbouncycastles.co.uk", true }, { "mkbouncyhire.co.uk", true }, { "mkboynton.org", true }, @@ -82179,12 +94221,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mkeysolutions.at", true }, { "mkeysolutions.com", true }, { "mkeysolutions.de", true }, - { "mkfs.fr", true }, { "mkg-laposte.info", true }, + { "mkg-pch.com", true }, { "mkg-wiebelskirchen.de", true }, { "mkhsoft.eu", true }, { "mkie.cf", true }, + { "mkinfo.com.br", true }, { "mkjl.ml", false }, + { "mkjoyeria.cl", false }, { "mkk.de", true }, { "mkkcrafts.com", true }, { "mkkkrc.ru", true }, @@ -82192,17 +94236,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mklenterprisesacademy.com", true }, { "mklenterprisescoaching.com", true }, { "mklpedia.de", true }, - { "mkm.ee", true }, + { "mklwork.lt", true }, + { "mkm.ee", false }, { "mkm.szczecin.pl", true }, { "mkmaster.tk", true }, { "mkmedien.tk", true }, { "mknowles.com.au", true }, { "mkoppmann.at", true }, { "mkpdeepclean.com", true }, + { "mkpeurope.org", true }, { "mkplay.io", true }, { "mkprensa.tk", true }, { "mkrecek.cz", true }, - { "mkringel.de", true }, + { "mkringel.de", false }, { "mksac.co.uk", true }, { "mksdarchitects.com", true }, { "mkse.com", true }, @@ -82210,23 +94256,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mkt7.de", true }, { "mktemp.org", true }, { "mkultraclean.com.au", true }, - { "mkvcinehd.com", true }, { "mkw.st", true }, { "mkws.sh", true }, { "ml.tax", true }, + { "ml2d.com", true }, { "mlada-moda.cz", true }, { "mladamoda.sk", true }, { "mladenovac.tk", true }, - { "mlan-server.de", true }, - { "mlarte.com", true }, - { "mlathrom.com", false }, + { "mladinskislatna.si", true }, + { "mladypodnikatel.cz", true }, + { "mlawfirm.com", true }, { "mlcfinvest.in", true }, + { "mlclaw.com", true }, { "mlcnfriends.com", true }, - { "mlcreaciones.com", true }, { "mlcrosoftonlline.cz", true }, { "mlcrosoftonlline.ml", true }, { "mlfilm.ml", true }, - { "mlgittinsbookkeeping.com.au", true }, { "mlgsmokers.tk", true }, { "mlii.net", true }, { "mlirb.com", true }, @@ -82236,21 +94281,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mlm-hochzeit.de", true }, { "mlmjam.com", true }, { "mlmjunction.tk", true }, + { "mlml.ml", true }, { "mlnews.ml", true }, { "mlo.no", true }, { "mlohr.com", true }, + { "mlohr.net", true }, { "mlonline.com.mx", true }, { "mloska.tk", true }, { "mlp.horse", true }, { "mlpavimentosdehormigonimpreso.com", true }, + { "mlpk.cz", true }, { "mlpvcdn.top", true }, { "mlpvector.club", true }, { "mlsrv.de", true }, { "mlstav.sk", true }, { "mlsvallarta.com", true }, { "mltrade.ml", true }, - { "mlum.net", false }, { "mlundberg.se", true }, + { "mluservices.com", true }, + { "mlv-psychosomatik.de", true }, { "mlv.me", true }, { "mlwr.ee", true }, { "mlytics.com", true }, @@ -82266,7 +94315,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mm9721.com", false }, { "mm9728.co", true }, { "mma-records.de", true }, - { "mmafishing.com", true }, { "mmalisz.com", true }, { "mmallardi.no-ip.biz", true }, { "mmanews24.com", true }, @@ -82279,11 +94327,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mmav.co", true }, { "mmav.live", true }, { "mmbb.org", false }, + { "mmcafe.com.br", true }, { "mmcalc.jp", true }, { "mmcase.ml", true }, - { "mmcwholesale.com", true }, { "mmgal.com", true }, - { "mmgtx.com", true }, { "mmhome.fr", true }, { "mmichaelb.pw", true }, { "mmilog.hu", true }, @@ -82297,9 +94344,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mmmarco.com", true }, { "mmmaximaliselmeny.hu", true }, { "mmmc.hk", true }, - { "mmmm.mn", true }, { "mmmofnigeria.tk", true }, { "mmmonk.net", true }, + { "mmoe.moe", true }, { "mmogah.com", true }, { "mmoneko.com", true }, { "mmonit.com", true }, @@ -82309,9 +94356,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mmpaymentsystem.com", true }, { "mmphub.com", true }, { "mmprojects.nl", true }, + { "mmr.ua", true }, + { "mmrepair.in", true }, { "mms.is", true }, { "mmsmotor.com.hk", true }, - { "mmsteelny.com", true }, { "mmstick.tk", true }, { "mmstudio.tk", true }, { "mmucha.de", true }, @@ -82321,10 +94369,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mmwtrademarks.com.au", true }, { "mmxblog.com", true }, { "mmxx-distribution.com", true }, - { "mmzztt.com", false }, + { "mmzztt.com", true }, { "mn-hootsuite.herokuapp.com", true }, - { "mnatechnologies.com.au", false }, + { "mn.ax", true }, + { "mnatechnologies.com.au", true }, { "mnbg.tk", true }, + { "mncalliedhealth.com", true }, + { "mncbank.co.id", true }, { "mnccc.gov", true }, { "mnciitbhu.me", true }, { "mncloud.de", true }, @@ -82340,27 +94391,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mnguyen.io", true }, { "mnhc.gov", true }, { "mnienamel.com", true }, - { "mninnova.ng", true }, { "mniopenresearch.org", true }, { "mnium.de", true }, { "mnjg123.de", true }, + { "mnkysoft.com", true }, { "mnml.art", true }, { "mnml.blog", true }, { "mnml.top", true }, { "mnmt.no", true }, { "mnnknz.de", true }, + { "mnnon.com", true }, + { "mnogoigrovka.ru", true }, { "mnogoknighek.gq", true }, { "mnogoknighek.ml", true }, { "mnogoknighek.tk", true }, { "mnogosofta.tk", true }, { "mnogoznai.tk", true }, { "mnotrioesdp.ml", true }, + { "mnplay.xyz", true }, { "mnprairie.gov", true }, { "mnrloroli.tk", true }, + { "mnrtechsolutions.com", true }, { "mnrv.trade", true }, { "mns.co.jp", true }, - { "mns.jp", false }, - { "mns.llc", true }, + { "mnsaviation.com", true }, + { "mnscredit.in", true }, { "mnsenate.gov", true }, { "mnsure.org", true }, { "mnsvu.org", true }, @@ -82369,64 +94424,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mnt9.de", true }, { "mnvotes.gov", true }, { "mo-en-karim.tk", true }, - { "mo-journal.com", true }, { "mo-mochizuki.com", true }, { "mo-vvs.dk", true }, { "mo.nl", true }, { "mo2021.de", true }, { "moa.moe", true }, - { "moabit.de", true }, { "moabpapier.de", true }, { "moabygg.se", true }, { "moahmo.com", false }, + { "moaicar.com", true }, { "moas.design", true }, { "moas.photos", true }, + { "mob-tok-shop.hu", true }, { "mob2con.com.br", true }, { "moba-automation.com", true }, { "moba-automation.com.br", true }, { "moba-automation.de", true }, + { "mobal.com", false }, { "mobclan.tk", true }, + { "mobcsp.work", true }, + { "mobcup.org", true }, { "mobeforlife.com", false }, + { "mobex.biz", true }, { "mobi-katalog.tk", true }, - { "mobidesigns.org", true }, + { "mobi-trend.com", true }, { "mobidevtalk.com", true }, + { "mobifrance.com", true }, { "mobigadget.tk", true }, { "mobijo.tk", true }, { "mobikasa.com", true }, + { "mobil-badwimpfen.de", true }, { "mobil-bei-uns.de", true }, { "mobil11.net", true }, { "mobila-chisinau.md", true }, - { "mobilcom-debitel-empfehlen.de", true }, + { "mobilci.net", true }, { "mobildeal.id", true }, + { "mobile-discothek.at", true }, { "mobile-holzofenpizza.de", true }, { "mobile-industrial-robots.com", true }, { "mobile-ivr.tk", true }, + { "mobile-master.org", true }, { "mobile-news.tk", true }, + { "mobile-pedia.com", true }, { "mobile.eti.br", true }, { "mobile.united.com", false }, { "mobile.usaa.com", false }, { "mobile360.ph", true }, { "mobileague.ml", true }, { "mobilebingoclub.co.uk", true }, - { "mobilebokep.com", true }, { "mobilebooster.tk", true }, - { "mobilecasas.com", true }, + { "mobilecoin.com", true }, { "mobilecontractcomparison.com", true }, { "mobilecraftingco.com", true }, - { "mobiledatabank.jp", true }, { "mobilegoldcoastelectrical.ga", true }, + { "mobilehydraulics.com.au", true }, { "mobileit.cz", true }, + { "mobilelaby.com", true }, + { "mobilelegendstool.us", true }, { "mobilelobbyers.ga", true }, - { "mobilelooper.com", true }, { "mobilemedics.com", true }, + { "mobilemondayaustin.com", true }, { "mobilepartner.tk", true }, + { "mobilepassport.us", true }, + { "mobilephoneadvise.com", true }, { "mobiler-handel.de", true }, { "mobileread.com", true }, { "mobileritelushi.com", true }, + { "mobilesafe.shop", true }, { "mobilesector.de", true }, { "mobilesettingers.ga", true }, { "mobilesignalsolutions.co.uk", true }, + { "mobilesms.io", true }, { "mobilesnewsworld.ga", true }, + { "mobilestories.se", true }, { "mobilestuff.tk", true }, { "mobiletechnews.tk", true }, { "mobileteleconferenceers.ga", true }, @@ -82435,9 +94505,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mobiletraff.co", true }, { "mobilewikiserver.com", true }, { "mobilgaraj.com", true }, - { "mobilgelir.com", true }, { "mobilhaber.ga", true }, { "mobilhondatangsel.com", true }, + { "mobilidadeurbana.ind.br", true }, { "mobilificio.roma.it", true }, { "mobilisation-generale.org", false }, { "mobiliteit.gent", true }, @@ -82448,26 +94518,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mobiliteitsbedrijfstadgent.be", true }, { "mobiliteitstadgent.be", true }, { "mobility-events.ch", true }, + { "mobility-services.eu", true }, { "mobilityworks.eu", false }, { "mobilityworld.tk", true }, - { "mobilize-auto-register.herokuapp.com", true }, { "mobilize.us", true }, { "mobilizon.fr", true }, { "mobilizon.org", true }, { "mobilizone.com", true }, { "mobilki.tk", true }, { "mobilni.site", true }, + { "mobilosoft.com", true }, { "mobiltune.tk", true }, { "mobilux.lv", true }, - { "mobilyaka.com", true }, - { "mobimsua.com", true }, { "mobincube.com", true }, { "mobincube.es", true }, { "mobincube.mobi", true }, { "mobinet.tk", true }, { "mobinst.ml", true }, { "mobio.net", true }, + { "mobiotics.com", true }, { "mobiproj.com", true }, + { "mobiride.co", true }, { "mobisaar-cloud.de", true }, { "mobistartv.ml", true }, { "mobitracker.co", true }, @@ -82476,15 +94547,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moblkar.com", true }, { "mobmp4.info", true }, { "mobobe.com", true }, - { "mobogeniemax.com", true }, { "mobolight.ml", true }, { "mobot.sg", true }, { "mobox.health", true }, + { "mobshop.hu", true }, { "mobsitin.tk", true }, { "mobtop.ga", true }, { "mobtop.ml", true }, { "mobycoders.com", true }, { "mobydog.net", true }, + { "mobygeek.com", true }, { "mobylette.tk", true }, { "moca-2081.com", true }, { "moca-2082.com", true }, @@ -82497,17 +94569,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mochoko.com", true }, { "mockerel.com", true }, { "mockers.tk", true }, - { "mocking.top", true }, { "mocknen.net", true }, { "mocksvillenc.org", true }, { "mocomoco.jp", true }, { "mod.af", true }, + { "mod.io", true }, { "moda-donna.cf", true }, { "moda-line.ml", true }, { "moda-querida.de", true }, - { "modacruz.com", true }, - { "modaexecutiva.com.br", true }, + { "modacompleta.com.br", true }, + { "modafilmdmodafinil.com", true }, + { "modafinil.wiki", true }, { "modafinilici.com", true }, + { "modafinilyes.com", true }, { "modafo.com", true }, { "modahaber.com", true }, { "modalogi.com", true }, @@ -82516,21 +94590,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "modamoom.com.br", true }, { "modanacrho.tk", true }, { "modanese.net", true }, + { "modanloftsortigashills.com", true }, + { "modapharma.org", true }, + { "modasexy.it", true }, { "modav.org", true }, { "modax.ua", true }, { "modbom.com.tw", true }, + { "modcombo.com", true }, + { "modcomedia.com", true }, { "modcover.com", true }, { "modd.com.au", true }, { "modded-minecraft-server-list.com", true }, + { "moddedphones.com", true }, { "modderday.com", true }, - { "moddescargas.com", false }, { "modding-forum.com", true }, + { "modding-openmw.com", true }, { "modding-welt.com", true }, { "moddingworld.tk", true }, { "moddiy.com", true }, + { "moddo.com", true }, { "mode-individuell.de", true }, { "mode-musthaves.com", true }, - { "mode-tabita.be", true }, + { "modebest.co.uk", true }, { "modecaso.com", true }, { "modehaus-marionk.de", true }, { "model-school.tk", true }, @@ -82541,27 +94622,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "modeldimension.com", true }, { "modeldoll.tk", true }, { "modelearth.org", true }, - { "modelflight.com", true }, { "modelfotografie.tk", true }, { "modeli.tk", true }, - { "modelisme-rc.net", true }, - { "modelisme-voiture-rc.fr", true }, { "modelist.com.ua", true }, { "modell-lq.net", true }, { "modellaspa.pl", true }, { "modellbahnshop.de", true }, { "modellismo.roma.it", true }, - { "modelsmall.com", true }, + { "models-resource.com", true }, { "modelspoor-projecten.nl", true }, { "modelspoorprojecten.nl", true }, - { "modelstore.it", true }, { "modem.cf", true }, { "modem7.com", true }, { "modemaille.com", false }, { "modemchild.net", true }, + { "modemguides.com", true }, { "modenatoday.it", true }, { "modenodf.ru", true }, { "modenuit.fr", true }, + { "moderaterna.se", true }, { "moderatoren.org", true }, { "modern-family.tv", true }, { "modern-gaming.ga", true }, @@ -82571,18 +94650,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moderndeck.org", true }, { "moderndukes.tk", true }, { "moderneraplumbingandgas.com.au", true }, + { "moderngentlemen.net", true }, { "moderniknihovna.cz", true }, { "modernindia.ml", true }, + { "modernizr.com", false }, { "modernliferoleplay.cf", true }, { "modernmomarchy.com", true }, - { "modernqr.com", true }, { "modernrelations.dk", true }, + { "modernsaas.net", true }, { "modernsavage.coach", true }, - { "modernteacher.co.za", true }, { "moderntech.dk", true }, { "moderntld.net", true }, { "moderntrailers.com.au", true }, { "moderntrainer.co.za", true }, + { "modernwebz.com", true }, { "modernworkplacelearning.co.za", true }, { "modernx.de", true }, { "modesalination.com", true }, @@ -82598,16 +94679,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "modisarkar.tk", true }, { "modistryusercontent.com", true }, { "modlimit.cf", true }, - { "modmountain.com", true }, { "modnitsa.info", true }, { "modpop.se", true }, - { "mods-community.de", true }, + { "mods.fm", true }, { "modscrew.com", true }, { "modsecurity.net", true }, - { "modsrigs.com", true }, { "modszombies.com", true }, { "moduhygiene.com", true }, - { "modul-metal-habitat.fr", true }, { "modul21.eu", true }, { "modul8infinity.co", true }, { "modul8r.com", true }, @@ -82615,29 +94693,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moduleus.com", true }, { "modulex-gmbh.de", true }, { "modulkuhni.by", true }, + { "modulo.ee", true }, { "moduloseltaladro.com", true }, { "modum.by", true }, { "modusawperandi.com", true }, + { "modusgames.com", true }, + { "modusit.co.za", true }, + { "modusmundi.com", true }, + { "modvigilonlinerx.com", true }, { "modxvm.com", true }, { "modzcenter.com", true }, { "modzcenter.es", true }, { "moe-max.jp", true }, { "moe.best", false }, + { "moe.blog", true }, { "moe.ci", true }, + { "moe.gov.eg", true }, { "moe.tools", true }, { "moe4sale.in", true }, - { "moeali.com", true }, { "moeblog.cn", true }, { "moeblog.top", true }, { "moec.top", true }, { "moechel.com", true }, - { "moecraft.net", true }, { "moefactory.com", true }, { "moefi.xyz", true }, { "moegato.com", true }, { "moegi.ml", true }, { "moego.me", true }, { "moego.pet", true }, + { "moehl.eu", true }, { "moehrke.cc", true }, { "moekes.amsterdam", true }, { "moeking.me", true }, @@ -82645,33 +94729,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moellers.systems", true }, { "moeloli.ac.cn", true }, { "moelten.org", true }, + { "moemdom.info", true }, { "moenew.top", true }, - { "moenew.us", true }, + { "moenew.us", false }, { "moenjodaro.tk", true }, { "moensnatuursteen.be", true }, { "moepass.com", true }, + { "moesborg.dk", true }, { "moescat.xyz", false }, - { "moesif.com", true }, { "moeslinger-gehmayr.com", true }, { "moeto-zdrave.com", true }, { "moetrack.com", true }, { "moewe.org", true }, - { "moeyi.xyz", false }, + { "moeyi.xyz", true }, { "moeyy.tech", true }, { "mof.gov.ws", true }, { "mofbinsurance.com", true }, + { "mofo.com", true }, { "mofohome.dyndns.org", true }, + { "mofos.com", true }, + { "mofosnetwork.com", true }, { "mogamugi.com", true }, { "mogica.tk", true }, { "mogilev-forum.tk", true }, + { "moglie.xxx", true }, { "mogomix.cf", true }, { "mogradus.com", true }, - { "moguls.tv", true }, { "mogwailabs.de", true }, + { "mogyuchi.com", true }, { "moha-swiss.com", false }, { "mohaabobclan.tk", true }, { "mohaanation.tk", true }, { "mohabatein1.tk", true }, + { "mohalicity.info", true }, { "mohamedalibenammarmaba.tk", true }, { "mohamedfouad.tk", true }, { "mohamedhamdy.tk", true }, @@ -82697,9 +94787,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moi-sait.tk", true }, { "moikolhoz.ml", true }, { "moikolhoz.tk", true }, + { "moin.solar", true }, + { "moip.com.br", true }, { "moipourtoit.ch", false }, { "moipourtoit.com", false }, { "moipourtoit.org", false }, + { "moirai.bzh", false }, { "moirre.com", true }, { "moisesbarrio.es", true }, { "moisesbarrio.me", true }, @@ -82711,6 +94804,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mojama3dz.com", true }, { "mojartech.ml", true }, { "mojavenissanofbarstowparts.com", true }, + { "mojavibe.com", true }, { "mojdom.ba", true }, { "mojdrvar.tk", true }, { "moje-communication.de", true }, @@ -82726,12 +94820,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mojizuri.jp", true }, { "mojkragujevac.net", true }, { "mojleksikon.com", true }, + { "mojnet.eu", true }, { "mojnet.net", true }, { "mojo.az", true }, { "mojo.so", true }, { "mojoco.co.za", true }, - { "mojodentallaboratory.co.uk", true }, - { "mojome.co.za", true }, + { "mojodentallaboratory.co.uk", false }, { "mojomen.co", true }, { "mojomen.com", true }, { "mojomen.net", true }, @@ -82739,20 +94833,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mojoshowers.ga", true }, { "mojt.net", true }, { "mojtabagol.tk", true }, + { "mojtest.site", true }, { "mojzis.com", true }, { "mojzis.cz", true }, { "mojzisova.com", true }, { "mokadev.com", false }, - { "mokamelhaa.ir", false }, { "mokaszinhaz.tk", true }, { "mokeedev.com", true }, { "mokeedev.review", true }, { "mokhtarmial.com", true }, - { "moki.org.pl", true }, + { "mokrynskyi.com", true }, + { "moksha-movement.com", true }, { "mokujinken.tokyo", true }, { "mokum-organics.com", false }, { "mokutovo.tk", true }, { "molb.org", true }, + { "moldinspectionslosangeles.com", true }, { "moldova-online.ml", true }, { "moldovainformata.ro", true }, { "moldovanka.tk", true }, @@ -82765,18 +94861,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "molenaagtekerke.tk", true }, { "molenaar-ricardo.tk", true }, { "moleskinestudio.com", true }, - { "molidaytravel.com", true }, + { "molexces.com", true }, { "molinillo.tk", true }, + { "moliporex.com", true }, { "moliporex.pt", true }, + { "molise.store", true }, { "molkerei-ammerland.com", true }, - { "mollaretsmeningitis.org", true }, { "molleron.net", true }, { "molletjesveer.tk", true }, { "mollie.com", true }, + { "mollie.nl", true }, { "mollyblooms.tk", true }, { "mollyringworm.tk", true }, { "mollysun.net", true }, - { "mollyview.com", true }, { "molodechno-mk.by", true }, { "molodost.ga", true }, { "molodost.gq", true }, @@ -82785,26 +94882,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "molokov.tk", true }, { "molot-tora.ml", true }, { "molot-tora24.ga", true }, + { "molpay.com", true }, { "molpek.com", true }, - { "molsonmail.com", true }, { "moltapor.tk", true }, { "molti.hu", true }, - { "molunerfinn.com", true }, { "molusk.ml", true }, { "molwick.com", true }, - { "molymet.com", true }, - { "molynor.cl", true }, + { "mom.life", true }, + { "moma.co.uk", true }, { "moment-terroir.ch", true }, { "momentalno.tk", true }, + { "momentmag.com", true }, { "momentum.photos", true }, { "momentumcoach.se", true }, - { "momentumcomfortgear.com", true }, { "momentumdash.com", true }, { "momentummarketers.ga", true }, - { "momentura.com", true }, { "momi-chura.com", true }, + { "momimi.me", true }, { "momit.eu", true }, { "momjoyas.com", true }, + { "mommaplaza.com", true }, + { "mommoneymap.com", true }, { "mommyapproveders.ga", true }, { "mommyapprovedest.ga", true }, { "mommydigest.ga", true }, @@ -82816,22 +94914,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "momo0v0.club", true }, { "momobako.com", true }, { "momochrome.online", true }, + { "momondersteuning.nl", true }, { "momove.nl", true }, { "moms.com", true }, { "momsagainstcooties.com", true }, { "momsays.co.za", true }, + { "momsbangteens.com", true }, + { "momslickteens.com", true }, + { "momspublictube.com", true }, { "momstableonline.com", true }, { "momtazz.net", true }, + { "momtits.com", true }, + { "momtubevideos.com", true }, { "momy-genealogie.info", true }, { "mon-a-lisa.com", true }, { "mon-agenda.org", false }, { "mon-agora.com", true }, + { "mon-assurance-deces.fr", true }, { "mon-butin.fr", true }, { "mon-cartable.fr", true }, { "mon-dolibarr.fr", true }, { "mon-habitation.ca", true }, + { "mon-match.com", true }, { "mon-partage.fr", true }, { "mon-sac-italien.fr", true }, + { "mon-trafic.com", true }, { "mon22.ch", false }, { "mona-dress.com", true }, { "monacannation.gov", true }, @@ -82841,50 +94948,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monacoexpress.tk", true }, { "monad.io", true }, { "monagenceentreprise-caap.fr", true }, - { "monakasatmasr.com", true }, { "monarch.security", true }, { "monarchcleanersnc.com", true }, { "monarchelectric.com", true }, { "monarcjuexpo.ch", true }, + { "monaroindustrial.com.au", true }, + { "monasteriumlab.com", true }, + { "monauralpress.com", false }, + { "monawalespornstar.com", true }, { "monays.ga", true }, + { "monbebeautrement.fr", true }, { "monbedou.net", true }, - { "monbudget.org", false }, { "moncoach.ch", false }, { "monconcoursdgfip.fr", true }, { "monctonhomeinspections.com", true }, { "mondayaftersunday.com", true }, + { "mondaynightbrewing.com", true }, { "monde-ampoule.fr", true }, { "monde-oriental.tk", true }, { "monde.win", true }, { "mondechenoafrance.tk", true }, { "mondedie.fr", true }, + { "mondholz24.de", true }, { "mondo-it.ch", true }, { "mondo.rs", true }, { "mondocellulari.tk", true }, + { "mondoffice.com", true }, { "mondolila.tk", true }, - { "mondonet.org", false }, + { "mondovisione.com", true }, { "mondoviwi.gov", true }, { "mondpo.pro", true }, { "mondsee-psychotherapie.at", true }, { "mondzorgaanzee.nl", true }, { "mondzorgparkzicht.nl", true }, + { "monechafaudage.com", true }, { "moneni.com", true }, { "moneoci.com.br", true }, { "monerogamez.com", true }, + { "monese.com", true }, { "moneshaq.fr", true }, { "moneta-rossii.ru", true }, + { "monetenfuchs.de", true }, { "monetize.ml", true }, { "monetki.net", true }, { "money-book.jp", true }, { "money-earning.tk", true }, { "money-fast.ga", true }, { "money-finder.ml", true }, + { "money-loan-now.com", true }, { "money-okey.tk", true }, { "money-quick.cf", true }, { "money-spell.com", true }, { "money-tapuz.co.il", true }, { "money-transfers.tk", true }, { "money-trust.ru", true }, + { "money.bg", true }, { "money4net.tk", true }, { "moneybill.us", true }, { "moneybird.com", true }, @@ -82896,20 +95014,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moneyclick.tk", true }, { "moneycredit.eu", true }, { "moneydaily.tk", true }, + { "moneydecadadia.com", true }, { "moneyfactory.gov", true }, { "moneyformybeer.com", true }, - { "moneyfortitude.com", true }, { "moneyfuxx.com", true }, { "moneygo.se", true }, { "moneygrup.tk", true }, { "moneymania.tk", true }, + { "moneymart.ca", true }, + { "moneymet.ru", true }, { "moneymint.com", true }, + { "moneymorning.com", true }, { "moneyniti.com", true }, { "moneyonchain.com", true }, { "moneypark.ch", true }, + { "moneypot.com", true }, { "moneyreal.tk", true }, + { "moneyreview.gr", true }, { "moneysavingpro.com", true }, { "moneysmart.gov.au", true }, + { "moneytalks.com", true }, { "moneytamer.com", true }, { "moneytech.tk", true }, { "moneytoday.se", true }, @@ -82918,7 +95042,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mongla168.net", true }, { "mongla88.net", true }, { "mongolbox.tk", true }, - { "mongolie.net", true }, { "mongolito.tk", true }, { "monibu.org", true }, { "monicadurr.com", true }, @@ -82927,17 +95050,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monicapotter.tk", true }, { "monicz.pl", true }, { "monidenum.fr", true }, - { "monific.com", true }, + { "monific.com", false }, { "monika.tk", true }, + { "monikadesign.uk", true }, + { "monin.net", true }, { "moninformaticien.ovh", false }, - { "moninformaticien.shop", false }, { "monique.io", true }, { "moniquedekermadec.com", true }, { "moniquevanhoutum.nl", true }, { "monirtalk.ml", true }, { "monirtalks.ml", true }, { "moniteaucountymo.gov", true }, + { "monitman.com", true }, { "monitman.solutions", true }, + { "monitor-mailtracker.com", true }, { "monitor365.ch", true }, { "monitorbandwidth.net", true }, { "monitorbox.jp", true }, @@ -82969,11 +95095,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monloyer.quebec", true }, { "monmouthcountynj.gov", true }, { "monmouthmaine.gov", true }, + { "monmouthor.gov", true }, { "monnaiecourante.tk", true }, - { "monnyonle.hu", true }, { "mono0x.net", true }, { "monobunt.at", true }, { "monochrometoys.com", true }, + { "monocircus.com", true }, { "monocles.de", true }, { "monocyte.host", true }, { "monodejuegos.shop", true }, @@ -82984,10 +95111,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monolithic.tk", true }, { "monolithindustries.com", true }, { "monolithon.net", true }, + { "monongaliasheriff.gov", true }, + { "monophy.com", true }, { "monopoly.tk", true }, { "monorail.cf", true }, { "monorail.ga", true }, { "monorail.gq", true }, + { "monordibogue.com", true }, { "monorthopedagogue.ca", true }, { "monospazzole.roma.it", true }, { "monothesis.com", true }, @@ -82996,36 +95126,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "monpanier-procter-et-gamble.fr", true }, { "monpc-pro.fr", false }, { "monplay.host", true }, + { "monrasp.ddns.net", true }, { "monroe27.com", true }, + { "monroecountymo.gov", true }, { "monroecountyny-opi.gov", true }, + { "monroecountysheriff-ny.gov", true }, { "monroecountywv.gov", true }, { "monroect.gov", true }, + { "monroeoregon.gov", true }, { "monroetn.gov", true }, + { "monsalvat.no", true }, { "monshoppingcestcalais.fr", true }, { "monsieurbureau.com", true }, { "monsieursavon.ch", false }, - { "monsieurvincent.org", true }, { "monsitemoncommerce.com", true }, { "monsonshoney.com.au", true }, { "monsterandfox.co.uk", true }, { "monsterarmsest.ga", true }, + { "monstercurves.com", true }, + { "monsterdealsfrance.fr", true }, { "monstergovt.com", true }, + { "monsterlinkmarketing.com", true }, { "monstermashentertainments.co.uk", true }, { "monsterminigames.de", true }, { "monsterminus.tk", true }, { "monstermoney.tk", true }, { "monsternet.pl", true }, + { "monsternotebook.com.tr", true }, { "monstersuniversity.ga", true }, + { "monsterx.cn", true }, { "monstl.com", true }, + { "monstresdesfetes.com", true }, { "mont-thabor.fr", true }, { "montack.de", true }, { "montagetravel.com", true }, + { "montagnainitalia.com", true }, { "montagne-experience.fr", true }, + { "montaguehotel.com", true }, + { "montala.com", true }, + { "montalvofarret.xyz", true }, { "montanabiack.de", true }, { "montanacreativitymovement.tk", true }, + { "montanaguard.gov", true }, { "montanaonlinedivorce.com", true }, { "montanasky.tv", true }, { "montanatrouthunters.com", true }, + { "montanawi.gov", true }, { "montanwerk.de", true }, { "montarfotoaki.com", true }, { "montarosa.tk", true }, @@ -83037,10 +95183,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "montehermoso.tk", true }, { "montejomoving.com", true }, { "montemanik.com", false }, + { "montenativo.de", false }, { "montenegro-yacht.com", true }, { "montessori-oberhaching.de", true }, { "monteurzimmerfrei.de", true }, + { "montevue.co.za", true }, + { "montgomeryboroughpa-police.gov", true }, { "montgomerycountyal.gov", true }, + { "montgomerycountyar.gov", true }, + { "montgomerycountyclerkoh.gov", true }, + { "montgomerycountyhealthky.gov", true }, { "montgomerycountyia.gov", true }, { "montgomerycountyil.gov", true }, { "montgomerycountync.gov", true }, @@ -83057,44 +95209,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "montillafarm.com", true }, { "montoneros.tk", true }, { "montop.tk", true }, + { "montourcounty.gov", true }, { "montourcountypa.gov", true }, - { "montpreveyres.ch", false }, { "montrain.com", true }, { "montrain.fr", true }, { "montre-luxe-occasion.com", true }, { "montrealcatadoptions.com", true }, { "montrealwi.gov", true }, { "montredeal.fr", true }, + { "montres-mh-besancon.fr", true }, { "montroseflorida.com", true }, { "montsaintaignan.fr", true }, - { "montserrat.ind.br", true }, { "montuan.com.br", true }, { "montychristie.com", true }, { "montyvlogs.com", true }, - { "monveilleuretmoi.com", true }, + { "monvanityideal.com", true }, + { "monvoyagedentaire.com", true }, { "monweb.tk", true }, { "monzaradio.tk", true }, { "monzatoday.it", true }, { "monzo.me", true }, { "monzo.tk", true }, { "moo.la", true }, - { "mooana.net", true }, + { "moo.pet", false }, { "moocat.me", true }, + { "moodfabrics.com", true }, { "moodfoods.com", true }, { "moodforsex.com", true }, + { "moodgym.com.au", true }, + { "moodgym.de", true }, { "moodifiers.com", false }, { "moodle.gq", true }, { "moodle.servebbs.com", true }, + { "moodsta.com", true }, + { "moodyfss.marketing", true }, { "moodyfssrequest.com", true }, { "moodytattoo.com", true }, - { "moofin.ml", true }, { "mooglms.com", true }, + { "mooivoet.nl", true }, { "moojp.co.jp", true }, { "mooka.tk", true }, + { "moola.market", true }, { "moolah.rocks", true }, { "moom20101234567890.tk", true }, { "moon.fish", true }, - { "moon.lc", false }, { "moonagic.com", true }, { "moonagic.io", true }, { "moonbench.xyz", true }, @@ -83112,9 +95270,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moonhaa.com.br", true }, { "moonkin.eu", true }, { "moonlabs.nl", true }, + { "moonlanders.nl", false }, { "moonlight-pr.com", true }, { "moonlight-show.tk", true }, { "moonlightdesign.org", true }, + { "moonlightlovers.com", true }, + { "moonlightlovers.es", true }, { "moonlightpicnic.tk", true }, { "moonlights.tk", true }, { "moonlighttheatre.tk", true }, @@ -83122,26 +95283,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moonlit.games", true }, { "moonmelo.com", true }, { "moonmoondomain.com", true }, + { "moonpay.com", false }, { "moonpay.io", true }, + { "moonproject.io", true }, { "moonracer.ga", true }, { "moonraptor.co.uk", false }, { "moonraptor.com", false }, { "moonrhythm.info", false }, { "moonrhythm.io", true }, + { "moonsalutations.com", true }, { "moonsama.com", true }, { "moonshadow.tk", true }, { "moonshyne.org", true }, { "moonsmanagement.be", true }, + { "moonspell.com", true }, { "moonssif.com", true }, - { "moontaj.com", true }, { "moonue.com", false }, { "moonvpn.org", true }, { "moonwolfwiccanschool.tk", true }, { "moonzerotwo.tk", true }, { "mooreandsmalley.co.uk", true }, - { "mooregreen.nl", true }, + { "moorelife.cn", true }, + { "mooremi.gov", true }, + { "mooremillerinvestmentgroup.ca", true }, { "mooreminers.com", true }, { "mooremoney.co", true }, + { "mooresvilletribune.com", true }, { "mooretownrancheria-nsn.gov", true }, { "moorewelliver.com", true }, { "moorfunevents.co.uk", true }, @@ -83155,6 +95322,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moorparkoutdoorlighting.com", true }, { "moorstay.com", true }, { "moort.be", true }, + { "moosic.co", true }, { "moosikapp.ml", true }, { "moosikapp.tk", true }, { "moosmann-moehrle.de", true }, @@ -83162,6 +95330,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moot-info.co.za", true }, { "moov.tk", true }, { "moove-it.com", true }, + { "moovemais.com.br", true }, { "mopak.tk", true }, { "mopar1973man.com", true }, { "moparcraft.com", true }, @@ -83174,20 +95343,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moparisthebest.org", true }, { "moparpartsgiant.com", true }, { "moparscape.net", true }, + { "moped-versichern.de", true }, { "mopedpress.com", true }, { "mopedreifen.de", false }, { "mopie.de", true }, + { "moplay.org", true }, { "mopliangxing.com", true }, { "moplx.com", true }, + { "mopoclub.ru", true }, { "moppeleinhorn.de", true }, { "moppelito.tk", true }, { "moppenfactory.tk", true }, - { "moppy.org", true }, - { "mopxing.com", true }, - { "moqo.de", true }, { "moqtmatrak.com", true }, { "moquettes.roma.it", true }, - { "mor-charpentier.com", true }, + { "mor.estate", false }, { "mora.pl", true }, { "moracont.com", true }, { "moradali.tk", true }, @@ -83200,6 +95369,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morata.tk", true }, { "moratilla.ml", true }, { "morawiecki.pl", true }, + { "moraxyc.com", true }, { "morbatex.com", true }, { "morbitiles.org", true }, { "morbius.cz", true }, @@ -83214,17 +95384,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mordovia.gq", true }, { "mordovia.tk", true }, { "mordoviya.tk", true }, - { "mordrum.com", true }, { "more-hikkoshi.com", true }, { "more-terrain.de", true }, - { "more4ham.com", true }, { "moreal.co", true }, { "moreapp.co.uk", true }, + { "morebus.co.uk", true }, { "morechance.de", true }, { "morecigarettes.tk", true }, { "morecreativelife.com", true }, { "morediets.net", true }, { "moreeducation.tk", true }, + { "morehertz.com", true }, + { "morehopefoundations.org.uk", true }, { "morellilaw.com", true }, { "moremindsbetter.com", true }, { "morenadacentral.tk", true }, @@ -83232,7 +95403,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moreniche.com", true }, { "moreno820.com", true }, { "moreno820.com.ar", true }, - { "moreopen.cc", true }, + { "moreoptimal.world", true }, { "morepablo.com", true }, { "moreserviceleads.com", false }, { "moreshop.pl", true }, @@ -83244,28 +95415,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morethandigital.info", true }, { "moretti.camp", true }, { "morevesi.cf", true }, + { "morewithcore.com", true }, { "morgan-insurance.com", true }, - { "morgan.solutions", true }, { "morgancounty-al.gov", true }, { "morgancounty-il.gov", true }, { "morgancountymo.gov", true }, { "morgancountysheriffal.gov", true }, { "morgancountyutah.gov", true }, { "morgandesort.com", true }, + { "morganeb.be", true }, { "morgansleisure.co.uk", true }, + { "morganton.com", true }, { "morganwilder.com", true }, - { "morgen.news", true }, + { "morgengold.de", true }, { "morghochak.com", true }, { "morgner.com", true }, { "mori-cdc.com", true }, { "morindesrochersbeaulieu.ca", true }, { "morinomiyako-a.co.jp", true }, + { "morioh.com", true }, { "morisakimikiya.com", true }, - { "morishoji-english-school.com", true }, + { "morishoji-english-school.com", false }, { "moritoworks.com", true }, { "moritz-baestlein.de", true }, - { "moritz-poldrack.de", true }, - { "moritz.sh", true }, { "moritzkornher.de", true }, { "moritztremmel.de", true }, { "moriz.de", true }, @@ -83282,9 +95454,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morningcurve.com", false }, { "morninggarden.com", true }, { "morningstar.moe", true }, + { "morningstaruniversityonline.com", true }, + { "moro-gastro.de", true }, { "moroccanews.tk", true }, { "moroccomiami.com", true }, { "moroccotodaynews.ga", true }, + { "morocotacoin.news", true }, { "morogoro.tk", true }, { "morohub.com", true }, { "moromsmile.com", true }, @@ -83296,6 +95471,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morozyaka.tk", true }, { "morph3d.tk", true }, { "morphed.io", true }, + { "morpheusdata.com", true }, + { "morphisec-utp.com", true }, + { "morphitattachments.com.au", true }, { "morphysm.co", true }, { "morphysm.com", true }, { "morphysm.de", true }, @@ -83304,37 +95482,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "morrellllc.com", false }, { "morrharet.se", true }, { "morris.computer", true }, - { "morrisbart.com", true }, + { "morrisvillemo.gov", true }, + { "morrisvillenc.gov", true }, { "morrowga.gov", true }, { "morrowind-finland.tk", true }, { "morsang.net", true }, - { "morse-ti.net", true }, { "morselife.org", true }, { "mortaltorment.tk", true }, + { "mortazavifar.com", true }, + { "mortebrume.eu", true }, { "morten-harket.de", true }, { "mortengamstpedersen.tk", true }, { "mortezaafri.tk", true }, { "mortgagecalculator.biz", true }, + { "mortgageexpert.io", true }, { "mortgagetranslations.gov", true }, { "mortis.eu", true }, { "mortonmspd.gov", true }, { "morus.tk", true }, { "morvo.mx", true }, { "mos-camin.ru", true }, - { "mos-upak.ru", true }, { "mosa.guru", true }, { "mosa.tk", true }, { "mosaic-design.ru", true }, { "mosaically.com", true }, - { "mosaicinsurance.com", true }, { "mosaicmarble.com", true }, { "mosaicot.com", true }, { "mosaique-lachenaie.fr", true }, + { "mosautoshina.ru", true }, { "mosboutique.it", true }, { "moscardino.net", true }, { "moscow-moscow.tk", true }, { "moscow-new.cf", true }, { "moscow.tk", true }, + { "moscow001.com", true }, { "moscowlombard.ru", true }, { "moscowlove.tk", true }, { "moscownews.ml", true }, @@ -83342,12 +95523,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moscowsex.tk", true }, { "moscowtimes.tk", true }, { "mosdosug.ml", true }, + { "mosdot.org.il", true }, { "moseic.com", true }, - { "moseleyelectronics.com", true }, { "moselwi.gov", true }, - { "moseracctg.com", true }, { "moserhof.it", true }, - { "mosespiano.com", true }, + { "moservice.id", true }, { "mosfet.cz", true }, { "mosfetkiller.de", true }, { "mosharof-hossain.ml", true }, @@ -83359,6 +95539,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moshop.com.vn", true }, { "moshwire.com", true }, { "mosin.org", true }, + { "mosio.com", true }, { "moskas.tk", true }, { "moskeedieren.nl", true }, { "moskva-city.cf", true }, @@ -83369,31 +95550,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moso.io", true }, { "mosobl.tk", true }, { "mosquito-code.com", true }, + { "mosquito-sklep.pl", true }, { "mosquitojoe.com", true }, - { "mosquitoshop.co.za", true }, { "mossan.net", true }, { "mosscade.com", true }, + { "mosselle.ro", true }, { "mosshi.be", true }, { "mossipanama.com", true }, + { "mossplants.ru", true }, { "mosst.com.tr", true }, { "mossylog.tk", true }, { "most.tk", true }, { "mostafabanaei.cf", true }, + { "mostardela.pt", false }, { "mostazaketchup.com", true }, { "mostbet.com", true }, + { "mostbet2.com", true }, + { "mostbetr.com", true }, { "mostc.is", true }, - { "mosteplitsa.ru", false }, { "mosternaut.com", true }, { "mostfamousbirthdays.com", true }, { "mostickers.shop", true }, - { "mostlecapi.de", true }, { "mostlyharmless.at", true }, { "mostlyoverhead.com", true }, { "mostmost.tk", true }, { "mostqbalwatanalqahirah.com", true }, { "mosttaza.com", true }, + { "mostware.nl", true }, { "mosurist.tk", true }, { "moswand.nl", true }, + { "motability.co.uk", true }, + { "motchirotchi.com", true }, { "motd.ch", true }, { "motekforce.link", true }, { "motekforcelink.com", true }, @@ -83407,6 +95594,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moteksystems.com", true }, { "moteksystems.net", true }, { "motezazer.fr", true }, + { "moth.monster", true }, { "motherboard.services", true }, { "motherbrain.tk", true }, { "motherearth.cf", true }, @@ -83414,12 +95602,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motherguru.ca", false }, { "motherhood.se", true }, { "motherhoodinblack.com", true }, + { "motherlondon.com", true }, { "motherofsorrows.net", true }, { "mothership.de", true }, { "mothersmediaonline.ga", true }, { "motichi.cf", true }, + { "motif.institute", true }, { "motifstudio.com.ua", true }, - { "motion-a.com", true }, + { "motion504.com", true }, + { "motional.com", true }, { "motiondata-vector.at", true }, { "motiondata-vector.com", true }, { "motiondreamatix.de", true }, @@ -83427,6 +95618,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motionless.nl", true }, { "motionory.com", true }, { "motiv-rechts.tk", true }, + { "motiva.health", true }, { "motivation.cc", true }, { "motivational-babes.com", true }, { "motivationalliance.com", true }, @@ -83434,7 +95626,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motivo.nl", false }, { "motiweb.fr", true }, { "motlife.net", false }, - { "motmplus.com", true }, { "moto-texnika.tk", true }, { "motoactionimola.it", true }, { "motoblogism.com", true }, @@ -83446,6 +95637,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motodb.co.uk", true }, { "motodb.net", true }, { "motodb.uk", true }, + { "motodeal.com.ph", true }, { "motof.tk", true }, { "motoforce.lt", true }, { "motofoto.tk", true }, @@ -83458,7 +95650,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motolife.tk", true }, { "motolinesupply.com", true }, { "motomorgen.com", true }, - { "motopoland.com.ua", true }, + { "motonline.com.br", true }, { "motor-agro.com", true }, { "motor-agro.com.ua", true }, { "motor-agro.kz", true }, @@ -83466,27 +95658,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "motor-cycles.tk", true }, { "motor-forum.nl", true }, { "motor1.com", true }, + { "motorbiketenerife.com", true }, { "motorbiketourhanoi.com", true }, - { "motorcyclesafer.com", true }, + { "motorcitycasino.com", true }, + { "motorcyclecentral.net", true }, { "motordearranque.com.br", true }, - { "motorhome.pl", true }, { "motoridiricerca.tk", true }, - { "motorpointarenacardiff.co.uk", true }, + { "motorinews24.com", true }, + { "motorline.ru", true }, + { "motorparts-images.nl", true }, + { "motorparts-online.com", true }, { "motorring.ru", true }, { "motorslopers.tk", true }, { "motorsplus.com", false }, + { "motorsport-passion.com", true }, { "motortecbrasil.com.br", true }, { "motortg.it", true }, { "motortrend.com", true }, { "motorways.tk", true }, { "motoryachtclub-radolfzell.de", true }, { "motorzone.od.ua", true }, - { "motoscooter.eu", true }, + { "motoselfservices.fr", true }, { "motosfreedom.com", true }, { "motospaya.com", true }, - { "motostorie.blog", true }, + { "motostyle.ua", true }, { "mototax.ch", true }, - { "mototeam.com.ua", true }, { "mototeam.tk", true }, { "mototec.it", true }, { "mototuristas.tk", true }, @@ -83504,6 +95700,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mott.pe", true }, { "motte.tattoo", true }, { "motto-iikoto.com", true }, + { "motum.no", true }, + { "motum.se", true }, + { "motumblekinge.se", true }, + { "motumport.se", true }, + { "motumskane.se", true }, { "motun.ga", true }, { "mou-pmr.tk", true }, { "moube.fr", true }, @@ -83512,44 +95713,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mouff.li", true }, { "mouldboard.ga", true }, { "moulin-pomerol.com", true }, + { "moultonpdtx.gov", true }, { "moultriecountyil.gov", true }, { "mound.ga", true }, + { "moundvillewi.gov", true }, { "mounimaharaj.tk", true }, { "mouniresidences.com", true }, { "mountain-retreat-center.com", true }, { "mountain-rock.ru", true }, + { "mountainairandheating.com", true }, + { "mountainbatchers.de", true }, { "mountainbell.net", true }, { "mountainchalet.blue", true }, + { "mountaincitytx.gov", true }, + { "mountaindiscovery.org", true }, { "mountaingrovemo.gov", true }, - { "mountainsmokes.com", true }, + { "mountainroadschool.org", true }, + { "mountainsandmist.com", true }, + { "mountainsmokes.com", false }, + { "mountainspiritinn.com", true }, { "mountainspringsrentals.ca", true }, + { "mountainstage.org", true }, { "mountaintree.net", true }, { "mountainutilities.eu", true }, + { "mountainvistaretirement.com", true }, { "mountairymd.gov", true }, { "mountbatten.cz", true }, { "mountbrowneguestcottage.ga", true }, + { "mountcarrollil.gov", true }, { "mountclemens.gov", true }, + { "mountdora.gov", true }, + { "mountfield.co.nz", true }, { "mountknowledge.nl", true }, { "mountpost.tk", true }, { "mountvernonin.gov", true }, + { "mountvictoryohio.gov", true }, { "mountwashington-ma.gov", true }, - { "mourabaha-dz.com", true }, { "mouracloset.com.br", true }, + { "mourassiloun.com", true }, + { "mouseflow.com", true }, { "mousepotato.uk", true }, { "moushed.tk", true }, { "moussa-ibrahim.ml", true }, { "moutiezhaller.com", true }, { "mouy-avocat.fr", true }, + { "mov", true }, { "mova.club", true }, + { "movabletype.net", true }, { "movacare.de", true }, { "movaci.com", true }, - { "movahoteis.com.br", true }, { "moval.gov", true }, + { "movavi.id", true }, + { "movavi.ru", true }, { "move-out-cleaning.co.uk", true }, { "movefi.com.br", true }, { "moveltix.net", true }, { "movemais.com", true }, { "movember.com", false }, + { "moveme.ca", true }, { "movementhub.org", true }, { "movementsodom.tk", true }, { "moveon4.com", true }, @@ -83559,27 +95780,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moveonlite.com", true }, { "moveonru.com", true }, { "movepin.com", true }, - { "movestorm.com", true }, + { "movetonewcastle.com.au", true }, { "movetotasmania.com.au", true }, { "movewellnesslab.com", true }, { "movewithfiness.com", true }, { "moveyourass.tk", true }, { "movfun.ga", true }, - { "movie-forum.co", true }, + { "movie-download.cz", true }, { "movie-infos.net", true }, { "movie-sounds.org", true }, { "movie1000.com", true }, { "movieboost.nl", true }, + { "moviebox.com", true }, { "movieeveningers.ga", true }, { "movieeveningest.ga", true }, { "moviefreeze.com", true }, { "movieglot.ml", true }, { "movieguys.org", true }, { "moviejack.org", false }, + { "moviemadness.uk", true }, { "movieoldiesest.ga", true }, + { "movieredeem.com", true }, { "movies-diploma.fun", true }, { "movies-fan.tk", true }, { "movies1977.ga", true }, + { "movies4us.me", true }, { "moviesetc.net", true }, { "moviesrules.tk", true }, { "moviestodownload.tk", true }, @@ -83590,72 +95815,98 @@ static const nsSTSPreload kSTSPreloadList[] = { { "moviko.nz", true }, { "movil.uno", true }, { "movilandroide.com", true }, - { "movilcelular.es", true }, { "moviles.com", true }, { "moviltronix.com", true }, { "movimento-terra.it", true }, + { "movimentoterra.roma.it", true }, { "moving-pixtures.de", true }, { "movingjokesers.ga", true }, { "movingjokesest.ga", true }, { "movinglogistics.nl", false }, { "movingoklahoma.org", true }, { "movingschoolsforward.com", true }, + { "movingservice-houston.com", true }, { "movingtohttps.com", true }, { "movio.ga", true }, { "moviro.net", true }, { "movlib.org", true }, { "movnest.com", true }, + { "mow.pw", true }, + { "mowercountymn.gov", true }, { "mowing-the-lawn.com", true }, + { "mowster.com", true }, + { "mowster.net", true }, + { "moxfield.com", true }, { "moxiegirlz.id", true }, { "moy-biznes.tk", true }, { "moy-gorod.od.ua", false }, + { "moy-ogorod.info", true }, + { "moy-urozhay.info", true }, { "moy.cat", true }, { "moybiznes.tk", true }, { "moyer.pub", false }, { "moylen.eu", true }, { "moyminsk.tk", true }, - { "moyoo.net", true }, + { "moyobi.com", false }, + { "moyogorod.info", true }, { "moyu.host", false }, { "moyufangge.com", true }, { "moz.idv.tw", true }, + { "mozambiquetravel.com", true }, { "mozartgroup.hu", true }, { "mozektevidi.net", true }, + { "mozen.io", true }, + { "mozfr.org", true }, { "mozgb.ru", true }, { "mozgovoy.tk", true }, { "mozilla-russia.org", true }, { "mozilla.cz", true }, - { "moztime.com", true }, + { "mozillalinks.org", true }, + { "mozo.com.au", true }, { "mozzak.tk", true }, { "mozzez.de", true }, { "mozzi.online", true }, { "mozzilla.cz", true }, { "mp-bln.de", true }, + { "mp.gov.in", true }, { "mp.org", true }, + { "mp3.tj", true }, + { "mp3bgmringtones.com", true }, + { "mp3cut.net", true }, { "mp3gratuiti.com", false }, { "mp3musicfind.ga", true }, { "mp3noi.com", true }, { "mp3skull.cf", true }, { "mpa-pro.fr", true }, + { "mpadegree.org", true }, { "mpak.tk", true }, + { "mpamag.com", true }, { "mpc-hc.org", true }, + { "mpc-view.net", true }, { "mpcforum.pl", true }, { "mpcmsa.org", true }, { "mpdu.tk", true }, { "mpebrasil.tk", true }, { "mpenten.com", true }, { "mpetroff.net", true }, + { "mpfa.org.hk", true }, + { "mpfront.com", true }, + { "mpg.gg", true }, { "mpg.ovh", true }, { "mpgaming.pro", true }, { "mpgu.tk", true }, { "mphold.ru", true }, + { "mphprogram.com", true }, + { "mphprogramslist.com", true }, + { "mphq.de", true }, { "mphwinkel.nl", true }, + { "mpi-sws.org", true }, + { "mpi.org", true }, { "mpintaamalabanna.it", true }, { "mpk-chayka.org.ua", true }, { "mpkrachtig.nl", true }, { "mplanetphl.fr", false }, { "mplant.io", true }, - { "mpldr.codes", true }, - { "mpldr.de", true }, { "mpodraza.eu", true }, { "mpodraza.pl", true }, { "mpool.eu.org", true }, @@ -83669,6 +95920,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mpsi1.fr", true }, { "mpso.it", true }, { "mpsoundcraft.com", true }, + { "mptdom.com", true }, { "mptenders.gov.in", true }, { "mptool.pt", true }, { "mpu-ibbi.de", true }, @@ -83678,21 +95930,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mqas.net", true }, { "mqbeauty.com.tw", true }, { "mqbx.nl", true }, + { "mr-7.ru", true }, { "mr-a.de", true }, { "mr-anderson.org", false }, { "mr-bills.com", true }, { "mr-brown.tk", true }, { "mr-coffee.net", true }, { "mr-englischkurse.de", true }, - { "mr-komak.ir", true }, { "mr-labo.jp", true }, + { "mr-moulding-knives.com", false }, + { "mr-nachhilfe.de", false }, + { "mr-plomberie.com", false }, { "mr-wolf.nl", false }, + { "mr.bet", true }, + { "mr0.de", true }, { "mr1310.com", true }, + { "mr1xbet.com", true }, { "mr3.io", true }, + { "mr8.de", true }, { "mraag.xyz", true }, { "mrafrohead.com", true }, - { "mragro.gr", true }, - { "mrak.blog", true }, + { "mrak.blog", false }, { "mralonas.cf", true }, { "mralonas.ga", true }, { "mralonas.gq", true }, @@ -83702,19 +95960,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrandmrsparrot.gr", true }, { "mrandyyp.com", true }, { "mranimal.tk", true }, - { "mrautomazioni.it", true }, { "mrazek.biz", true }, + { "mrbeardcbd.es", true }, + { "mrbighungary.hu", true }, { "mrbounce.com", true }, { "mrbouncescrazycastles.co.uk", true }, { "mrbouncycastle.com", true }, + { "mrbusiness360.com", true }, { "mrc-productivity.com", true }, { "mrca-sharp.com", false }, { "mrcelulares.co", true }, { "mrclutch.com", true }, { "mrcog.tk", true }, { "mrcomer.tk", true }, + { "mrcool.com", true }, { "mrcool.store", true }, + { "mrcooldiy.ca", true }, + { "mrcooldiy.com", true }, { "mrcoolevents.com", true }, + { "mrcoolfranchise.com", true }, + { "mrcoolfranchising.com", true }, + { "mrcooluniversal.ca", true }, + { "mrcooluniversal.com", true }, { "mrcyberpixel.tk", true }, { "mrd-rc.com", true }, { "mrd-v.com", true }, @@ -83722,30 +95989,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrdatenschutz.de", true }, { "mrdayman.com", true }, { "mredsanders.net", true }, + { "mrenegades.com", true }, { "mrevolution.eu", true }, + { "mrewards-production.herokuapp.com", true }, + { "mrewards-uat.herokuapp.com", true }, + { "mrfactors.com", true }, { "mrfd.nl", true }, { "mrfindfix.com", true }, { "mrfinka.ml", true }, + { "mrformaltuxedos.com", true }, { "mrfreshtruck.com", true }, { "mrg-srv.ru", true }, { "mrg-team.ru", true }, + { "mrgeek.ru", true }, { "mrgstaticcdn.ru", true }, { "mrgstaticcontent.ru", true }, { "mrguider.org", true }, { "mrgusercontent.ru", true }, { "mrhc.ru", true }, { "mrhookupsd.com", true }, + { "mrhost.biz", true }, + { "mri.community", true }, { "mrichard333.com", true }, { "mricspatial.com", true }, - { "mride.com", true }, { "mrinalpurohit.in", true }, - { "mritem1.com", true }, { "mrizzio.com", true }, { "mrjamstore.it", true }, { "mrjbanksy.com", true }, { "mrjhnsn.com", true }, { "mrjo.sh", true }, - { "mrjooz.com", false }, { "mrjunior.ga", true }, { "mrjunior.ml", true }, { "mrkapowski.com", false }, @@ -83757,6 +96029,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrmanson.tk", true }, { "mrmarcie.com", true }, { "mrmemory.co.uk", true }, + { "mrmeomeo.xyz", true }, { "mrmn.nl", true }, { "mrmoregame.de", true }, { "mrmosier.tk", true }, @@ -83773,101 +96046,125 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mrplates.co.uk", true }, { "mrplates.com.au", true }, { "mrpluss.ml", true }, + { "mrpricegroup.com", true }, { "mrrjva.gov", true }, { "mrs-labo.jp", true }, { "mrs-shop.com", true }, { "mrsbairds.com", false }, { "mrschristine.com", true }, + { "mrsejf.cz", true }, { "mrshahin.cf", true }, { "mrshang.tk", true }, { "mrsheep.win", true }, + { "mrshish.com.au", true }, { "mrsiding.net", true }, { "mrsjinthelibrary.com", true }, { "mrsk.me", true }, - { "mrsmc.xyz", true }, { "mrssclaus.ca", true }, { "mrstat.co.uk", true }, { "mrston.ml", true }, { "mrstuudio.ee", true }, { "mrtg.com", true }, { "mrtieungao.tk", true }, + { "mrtskidkispb.ru", false }, { "mrtunnel.club", true }, + { "mru.org", true }, { "mruczek.trade", true }, { "mruczek.wiki", true }, { "mruganiepodspacja.pl", true }, { "mrupert.com", true }, + { "mrux.io", true }, + { "mrux.pl", true }, { "mrv.li", true }, { "mrvl.net", true }, { "mrvnt.co", true }, { "mrwacky.com", true }, + { "mrwen.net", true }, { "mrwindow.co.uk", true }, { "mrwp.ru", true }, { "mrwrestling.tk", true }, - { "mrx.one", false }, { "mrxn.net", true }, { "mrzauto.com", true }, { "mrzonk.cf", true }, { "ms-australia.de", true }, { "ms-ch.ch", true }, { "ms-fassmoebel.de", true }, - { "ms-rss.com", true }, - { "ms295.com", true }, + { "ms-gesellschaft.at", true }, + { "ms-wissenschaft.de", false }, + { "ms295.com", false }, { "msa-aesch.ch", true }, { "msa.bank", true }, { "msahebhonar.com", true }, { "msaludasuhogar.com", true }, { "msar.eu", true }, + { "msbdocs.com", true }, { "msc-corps.de", true }, { "mscc.mu", true }, { "mscc.org", true }, { "msch.pw", true }, - { "msdnicrosoft.cn", true }, + { "mschuessler.org", true }, + { "msda23.gov", true }, + { "msdnicrosoft.cn", false }, { "msdproduction.cz", true }, { "msdprojectclearmo.gov", true }, { "msebera.cz", true }, + { "msedkiewicz.pl", true }, { "mselectronique.tk", true }, { "mserve.ddns.net", true }, { "mservers.cz", true }, - { "msetalk.fr", true }, { "msfishingcharter.com", true }, { "msgallery.tk", true }, + { "msgauctions.com", true }, { "msgmon.com", true }, + { "msgr.com", true }, + { "msgs.ee", true }, + { "msgtrust.com", true }, + { "msh100.uk", true }, { "msha.gov", true }, + { "mshastanddown.gov", true }, { "mshemailmarketer.com.au", true }, { "mshgame.ga", true }, { "msi-zlin.cz", true }, { "msiegmund.com", true }, { "msieursvp.fr", true }, + { "msig-thai.com", true }, + { "msinc.ru", true }, { "msisupplyinc.com", true }, { "msize48.ch", true }, { "msk-balkon.ru", true }, + { "msktc.org", true }, { "msl.org", true }, { "mslivros.com.br", true }, { "msm-data.com", true }, { "msm.ai", true }, { "msmails.de", true }, + { "msmarketinglab.com", true }, { "msmetana.cz", true }, + { "msn.cn", true }, { "msn.com", true }, { "msnarzedzia.pl", true }, { "msncash.cf", true }, + { "msnedu.org", true }, { "msngr.com", true }, + { "msnhdd.info", true }, { "msnr.net", true }, { "msoc.gent", true }, { "msoffice-inc.net", true }, { "msoida.me", true }, { "msoll.de", true }, { "msoll.eu", true }, + { "msoutlook.info", true }, { "msp.com.au", true }, { "msp66.de", false }, { "mspark.tk", true }, { "mspatexas.com", true }, - { "msphotographics.de", true }, + { "mspcc.org", true }, + { "msphotographics.de", false }, { "mspnocsupport.com", true }, { "msprealestateinc.com", true }, { "mspsocial.net", true }, { "msquadrat.de", false }, { "msquared.id.au", true }, - { "msrohkwrstock.com", true }, { "msroot.de", true }, { "msrumon.com", true }, { "mssa.jp", true }, @@ -83880,25 +96177,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mstdn.fm", true }, { "mstdn.fr", true }, { "mstdn.io", true }, - { "mstdn.onl", false }, + { "mstdn.party", true }, { "mstever.com", true }, { "mstr-f-dstrctn.de", true }, { "mstridde.de", true }, { "mstudio.tk", true }, + { "msu.edu.tr", true }, { "msuess.me", true }, { "msuna.net", true }, { "msv-limpezas.pt", true }, { "mswdtemplate.com", true }, { "msx.org", true }, + { "msyndicate.com", true }, { "msz-fotografie.de", true }, { "mszavodumiru.cz", true }, { "mt-bank.jp", true }, - { "mt-caza.com", true }, { "mt-tech.fi", true }, { "mt-west.org", true }, { "mt.run", false }, { "mt.search.yahoo.com", false }, { "mt1016.com", true }, + { "mt1130.com", true }, { "mt2414.com", true }, { "mt2ofx.tk", true }, { "mt4professional.com", true }, @@ -83911,22 +96210,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mtane0412.com", false }, { "mtangel.gov", true }, { "mtap.in", true }, - { "mtasa.com", true }, { "mtasa.hu", true }, { "mtasts.xyz", true }, + { "mtataes.gov.ma", true }, { "mtauburnassociates.com", true }, { "mtb.wtf", true }, { "mtbfoodie.com", true }, + { "mtboutiques.com", true }, { "mtcoks.gov", true }, { "mtcq.jp", true }, { "mtd.org", true }, { "mtd.ovh", true }, { "mtdnrc.gov", true }, + { "mte-online.com", true }, { "mte.sk", true }, { "mtechprecisioninc.com", true }, { "mtehe-square.com", true }, + { "mtel.gr", true }, { "mteleport.net", true }, { "mtexpert.com.br", true }, + { "mtf.party", true }, { "mtf.rip", true }, { "mtf.wiki", true }, { "mtfgnettoyage.fr", true }, @@ -83942,18 +96245,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mthrbrd.com", true }, { "mthrbrd.net", true }, { "mths.be", false }, + { "mti.ua", true }, { "mticareportal.com", true }, { "mtinz.com", true }, { "mtirc.co", true }, - { "mtiryaki.com", true }, + { "mtjoytwppa.gov", true }, + { "mtkhs.com", true }, { "mtlabs.jp", true }, { "mtlconcerts.com", true }, + { "mtlebanonbaptist.church", true }, { "mtlegnews.gov", true }, { "mtltransport.com", true }, { "mtludlow.co.uk", true }, { "mtmedia.org", true }, { "mtn-media.de", true }, - { "mtnc.nl", true }, + { "mtncoi-coe.com", true }, + { "mtnvalleyhospice.org", true }, + { "mtnwebwiz.com", true }, { "mtoma.tk", true }, { "mtouch.facebook.com", false }, { "mtp-services.fr", true }, @@ -83962,17 +96270,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mtr-croatia.tk", true }, { "mtr.md", true }, { "mtr123.cn", false }, - { "mtran.co", true }, { "mtravelers.net", true }, { "mtredistricting.gov", true }, { "mtrx.tech", true }, { "mts-energia.eu", true }, { "mtsafe.gov", true }, + { "mtsn3padang.sch.id", false }, { "mtsoftware.com.au", true }, + { "mtstandard.com", true }, { "mtthwbrd.com", true }, { "mtv.re", true }, { "mtvernonlisbonpd-ia.gov", true }, { "mtvroadies.tk", true }, + { "mtw.org", true }, { "mtwolfpa.gov", true }, { "mtz-bu.gq", true }, { "mtz-info.gq", true }, @@ -83984,9 +96294,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mu-thunder.online", true }, { "mu-venezuela.tk", true }, { "mu-wi.gov", true }, + { "mu.ax", true }, { "mu.search.yahoo.com", false }, { "mu00.org", true }, { "mu105.cc", true }, + { "mu3e.com", true }, { "mu3on.com", true }, { "muabannhanh.com", false }, { "muac-innolab.eu", true }, @@ -83997,11 +96309,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mubase.dk", true }, { "muble.tk", true }, { "muceniece.tk", true }, + { "muchamiel.nl", true }, { "muchbetterthancash.com", true }, { "muchisimos.com", true }, { "muchohentai.com", true }, { "muchoruidoacademy.com", true }, { "muchotrolley.tk", true }, + { "muckingabout.eu", true }, { "muclan.tk", true }, { "mucmail.de", true }, { "mudanzasjuniorh.com", true }, @@ -84015,6 +96329,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mudcomplex.ga", true }, { "mudcomplexers.ga", true }, { "mudcrab.us", false }, + { "muddy-bugs.co.uk", true }, { "muddy-landrover.tk", true }, { "mudey.pt", true }, { "mudgezero.one", true }, @@ -84022,11 +96337,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mudpiles.cat", true }, { "mudramagik.com", true }, { "mudrc.net", true }, - { "mueblescuerolorca.cl", true }, - { "muel.io", true }, + { "mudrex.com", true }, + { "mudrockrentals.com", true }, { "muelhau.pt", true }, { "muell-weg.de", true }, { "muellapp.com", false }, + { "mueller-starck.de", true }, { "mueller5.eu", true }, { "muellerurology.com", true }, { "muenchberger.com", false }, @@ -84038,14 +96354,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mufid.tk", true }, { "muflon-linux.org", true }, { "muga.space", true }, + { "muganworld.com", true }, { "mugawe.com", true }, { "mugen.technology", true }, { "mugfanatic.com", true }, { "mugrabyhostel.tk", true }, + { "mugsstumpaward.com", true }, { "muguayuan.com", true }, { "muh.io", true }, { "muhabarishaji.com", false }, - { "muhabbet.org", false }, + { "muhabbet.org", true }, { "muhafazakarkiralikvilla.com", true }, { "muhammadlukman.ml", true }, { "muhammadmunif.ml", true }, @@ -84059,32 +96377,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "muhiminulhasan.me", true }, { "muhlenbergtwppa.gov", true }, { "muhrielle.org", true }, + { "muhtesemsozler.com", true }, + { "mui.com", true }, { "mui.fitness", true }, { "mui.kitchen", true }, { "mui.news", true }, { "mui.pet", true }, { "mui.today", true }, { "muii.com.br", true }, - { "muii.in", true }, { "muilties.com", true }, { "muir.eu.org", true }, + { "muir.fun", true }, { "muir.pp.ua", true }, { "muisoft.fi", true }, { "muizenpagina.tk", true }, { "muizenpuntje.tk", true }, + { "muj-sejf.eu", true }, { "mujemail.ml", true }, { "mujerescolombianas.tk", true }, { "mujeresfemeninas.com", true }, { "mujlinux.cz", true }, { "mujoco.org", true }, { "muk-kobetsu.com", true }, - { "mukilteodentalarts.com", true }, - { "mukilteoeuropeanautorepair.com", true }, - { "mukli.hu", true }, { "muku-flooring.com", true }, + { "mukwa.gov", true }, { "mula.tk", true }, - { "mulaccosmetics.com", true }, { "mulaisehat.com", true }, + { "mulberryar.gov", true }, + { "mulberryfirear.gov", true }, + { "mulberrypolicear.gov", true }, + { "mulchexpressusa.com", true }, + { "mulder.social", true }, { "mulderfamilie.tk", true }, { "mulej.net", true }, { "mulheres18.com", true }, @@ -84095,41 +96418,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mullerkappers.nl", true }, { "mullett-townshipmi.gov", true }, { "mullinsfarms.com", true }, - { "mulroymediation.com", true }, + { "muloot.de", true }, { "multi-cryptex.gq", true }, { "multi-fruit.tk", true }, { "multi-pribor.ru", true }, - { "multi-serwis.com.pl", true }, { "multi-soudures.fr", true }, { "multi-tool.ml", true }, { "multi-vpn.biz", true }, { "multiagent.tk", true }, + { "multiasistencia.com", true }, { "multibomasm.com.br", true }, { "multichange.net", true }, { "multiclinicacardio.com.br", true }, + { "multicoin.capital", false }, { "multiconsumos.tk", true }, { "multicore.cl", true }, { "multicorpbra.com", true }, + { "multifamily.loans", true }, { "multifruttisystems.gr", true }, { "multigamecard.com", true }, - { "multigamers-net.tk", true }, { "multigeist.de", true }, + { "multigo.ru", true }, { "multihobby.tk", true }, { "multikalender.de", false }, { "multilevelmarketing.cf", true }, { "multiline.ge", true }, + { "multilingualpress.org", true }, { "multilogik.com", true }, { "multimalin.ovh", true }, { "multimatte.com", true }, { "multimedia-pool.com", true }, - { "multimediapc.de", true }, + { "multimedia.or.jp", true }, { "multimediaworld.tk", true }, { "multimediosmonti.com", true }, { "multinationalforce.com", true }, { "multipassword.com", true }, + { "multipleapi.de", true }, + { "multiplex-rc.de", true }, { "multiplex.tk", true }, { "multiplexcy.com", true }, + { "multiplier-effect.org", true }, { "multiplies.tk", true }, + { "multiply.co.za", true }, { "multipotential-labo.com", true }, { "multipuntos.ml", true }, { "multirep.ch", false }, @@ -84137,6 +96467,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "multischool.tk", true }, { "multisite.ovh", true }, { "multispaninc.com", true }, + { "multisportaustralia.com.au", true }, { "multistas.tk", true }, { "multitec.nl", true }, { "multitek.no", true }, @@ -84145,7 +96476,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "multitheftauto.com", true }, { "multitool.cf", true }, { "multitraf.ga", true }, - { "multiversonoticias.com.br", true }, { "multivideo.tk", true }, { "multivpn.biz", true }, { "multivpn.cn.com", true }, @@ -84154,15 +96484,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "multivpn.com.ua", true }, { "multivpn.fr", true }, { "multivpn.su", true }, - { "multizone.games", true }, { "multnomahvotes.gov", true }, { "multsearch.eu.org", true }, + { "multymaq.com", false }, { "mum.ceo", true }, + { "mum.lu", true }, { "muma.cf", true }, - { "muma.gq", true }, { "muma.ml", true }, - { "mumablue.com", true }, - { "mumakil.fi", false }, { "mumbaionlinegifts.com", true }, { "mumbairoleplay.tk", true }, { "muminkoykiran.com", true }, @@ -84170,13 +96498,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mummyandmephotography.com", true }, { "mumolabs.com", true }, { "mums.cz", true }, + { "mumszab.se", true }, { "mumusofa.com.tw", true }, { "muna.de", true }, { "munakata-cl.jp", true }, { "munch.me", true }, { "munchcorp.com", true }, { "mund-interdisziplinaer.com", true }, - { "mundismart.com", true }, { "mundo-otaku.tk", true }, { "mundoalba.tk", true }, { "mundoarabe.com.br", true }, @@ -84184,24 +96512,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mundocompleto.tk", true }, { "mundocristiano.tk", true }, { "mundodalua.tk", true }, - { "mundodapoesia.com", true }, - { "mundodasfechaduras.com.br", true }, + { "mundodaprogramacao.com.br", true }, { "mundodasmensagens.com", true }, { "mundodastribos.com", true }, + { "mundodewill.com.br", true }, { "mundodocurioso.com.br", true }, { "mundodosagapornis.tk", true }, + { "mundoemalerta.com", true }, { "mundofoto.tk", true }, + { "mundofriki.es", true }, { "mundogamers.top", true }, { "mundoinfrarrojo.com", true }, { "mundojoven.tk", true }, + { "mundokia.com.co", false }, { "mundokinderland.com.br", true }, - { "mundolarraz.es", true }, { "mundolettering.com", true }, { "mundomagicotv.com", true }, { "mundomovie.tk", true }, + { "mundonow.com", true }, { "mundopatchwork.online", true }, { "mundoperfecto.net", true }, { "mundorealtv.tk", true }, + { "mundosat.com", true }, { "mundoscrapbooking.online", true }, { "mundoseth.tk", true }, { "mundosteampunk.club", true }, @@ -84218,40 +96550,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "munialajuela.go.cr", true }, { "munibilling.com", true }, { "munich-eventlocations.de", true }, - { "munkavedelemaruhaz.hu", false }, + { "municipioseducadores.es", true }, + { "munihei.de", true }, + { "munkeeboi.com", true }, { "munki.org", true }, { "munkibuilds.org", true }, { "munnasleepwear.com", true }, - { "munndialarts.com", true }, { "munnezza.tk", true }, + { "munroads.com", true }, { "muntajati-om.com", false }, { "muntproever.nl", true }, { "muntstuk.com", true }, { "munwr.com", false }, { "munzlocal10.org.nz", true }, { "muoivancauhoivisao.com", true }, - { "muon.marketing", true }, + { "muonmarketing.com", true }, { "mup-republicanos.tk", true }, + { "muqqabla.com", true }, { "mur-parfait.com", true }, { "mur-vegetal-interieur.fr", true }, - { "murahjerr.com", true }, + { "muradiyetemizlik.com", true }, { "murakami-sah.com", true }, { "muralart.ga", true }, - { "muralswallpaper.co.uk", true }, - { "muralswallpaper.com", true }, - { "muraltown.com", true }, { "murasaki.co.uk", true }, { "murasame.tech", true }, { "murashun.jp", true }, { "muratatifsayar.com.tr", true }, - { "muratboyla.com", true }, + { "muratbekgi.com", true }, { "muratcileli.tk", true }, { "muratec.tw", true }, { "muratore-roma.it", true }, { "murciacobras.tk", true }, { "murciaprocuradores.tk", true }, { "murdercube.com", true }, - { "murer-specialisten.dk", true }, + { "murfreesboroar.gov", true }, { "murfy.kiwi", true }, { "murfy.nz", true }, { "murgi.de", true }, @@ -84261,13 +96593,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "murmanskforum24x7.tk", true }, { "murmashi.com", true }, { "murmashi.ru", true }, + { "murmures.net", true }, { "murof.com.br", true }, { "murphy-law.net.ru", true }, + { "murphydriverewards.com", true }, { "murphysfire.gov", true }, + { "murphyusa.com", true }, { "murray.xyz", true }, { "murraya.cn", true }, { "murraycountymn.gov", true }, { "murrietadogtrainers.com", true }, + { "murrsuit.eu", true }, + { "murrsuit.net", true }, + { "murrsuit.org", true }, { "mursa.tk", true }, { "mursatov.tk", true }, { "murster.tw", true }, @@ -84275,20 +96613,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "murtazamustafahirani.tk", true }, { "murz.tv", true }, { "murzik.space", true }, - { "musaccostore.com", true }, + { "musaccostore.com", false }, { "musacomo.com", true }, { "musafir-aceh.tk", true }, { "musasionline.com", true }, { "musaslush.com", true }, - { "musavirlik.net", true }, - { "musavirsahan.com", true }, + { "musavat.com", true }, + { "musbizu.com.ng", true }, { "muscatinecountyiowa.gov", true }, + { "muscatinejournal.com", true }, + { "muscle-home.fr", true }, { "muscle-tg.com", true }, + { "muscleandrecovery.com", true }, { "musclecarresearch.com", true }, { "musclecarsillustrated.com", true }, + { "musclecarus.com", true }, { "muscles.cf", true }, { "muscolinomusic.com", true }, { "muscularbabes.net", true }, + { "musculardystrophyuk.org", true }, { "muscuolisq.cf", true }, { "musearchengine.com", true }, { "museclef.com", true }, @@ -84296,23 +96639,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "musedash.moe", true }, { "musehelix.com", true }, { "museloveurania.com", true }, + { "museo.com.au", true }, { "museodefutbol.online", true }, { "museodeinsectos.tk", true }, { "museodelistmo.tk", true }, { "muserver.io", true }, { "muses-success.info", true }, - { "musettishop.com", true }, { "museumnachtgent.be", true }, + { "museumplantinmoretus.be", true }, + { "museumtravelalliance.com", true }, { "museumwaalsdorp.nl", true }, + { "musexpo.net", true }, { "mush-room.co.jp", true }, { "mushel.ddns.net", true }, { "mushikabu.net", true }, + { "mushing.pl", true }, { "mushino.com", true }, { "mushka.ga", true }, { "mushman.tk", true }, { "mushroomcloud.moe", true }, - { "music-bar.gr", true }, - { "music-heart.eu", true }, { "music-is-my-life.de", true }, { "music-privilege.fr", true }, { "music-project.eu", true }, @@ -84320,18 +96665,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "music.amazon.com", true }, { "musica.com", true }, { "musicales.tk", true }, - { "musicalive.nl", true }, { "musicall.com", true }, { "musicalschwarzenburg.ch", true }, { "musicandrelated.tk", true }, { "musicapara.net", true }, + { "musicapopolareitaliana.net", true }, { "musicaporbolivia.tk", true }, { "musicasbr.com.br", true }, - { "musicbow.com", true }, + { "musicbow.com", false }, { "musicbox.party", true }, { "musicchris.de", true }, - { "musiccitycats.com", true }, - { "musiccitymint.com", true }, { "musicfactory.ml", true }, { "musicflac4.tk", true }, { "musicfor.us", true }, @@ -84342,7 +96685,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "musicgivesmelife.com", true }, { "musichiphop.ga", true }, { "musichome.tk", true }, - { "musician.dating", true }, { "musicinsiderdigest.com", true }, { "musickhouseleveling.com", true }, { "musickorea.tk", true }, @@ -84356,31 +96698,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "musicradio.gq", true }, { "musicradio.tk", true }, { "musicrainbow.tk", true }, + { "musicrepublicmagazine.com", true }, { "musicrooz.tk", true }, { "musicschoolonline.com", true }, + { "musicscorner.com", true }, { "musicsense.cf", true }, { "musicsmoke.tk", true }, + { "musicsnippet.com", true }, { "musicsrv.de", true }, { "musicstudio.pro", true }, + { "musictech.com", true }, { "musictools.tk", true }, + { "musictouch.ru", true }, { "musicvideo.club", true }, { "musicvietnam.tk", true }, { "musicwear.cz", false }, - { "musicworkout.de", true }, { "musigama.tk", true }, + { "musik-mentaltraining.ch", true }, { "musik-reitemann.de", true }, { "musik-vereinsbedarf.de", false }, + { "musikarti.com", true }, { "musiker.tk", true }, - { "musikerkontakt.dk", true }, { "musikhaus-korn.de", true }, + { "musikholics.com", true }, { "musikidersi.tk", true }, { "musiktag2020.ch", true }, { "musikverein-elten.de", true }, { "musikverein-schuettorf.de", true }, - { "musikwerk-stuttgart.de", true }, { "musikzentrale.net", false }, + { "musings.cloud", true }, { "musings.tech", true }, - { "musingsatmidnight.com", true }, + { "musingsatmidnight.com", false }, { "musiq-supreme.tk", true }, { "musique2nuit.com", true }, { "musiques-traditionnelles.ga", true }, @@ -84389,11 +96737,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "musition.net", true }, { "musitioncloud.com", true }, { "musitionfirst.com", true }, + { "muskegontwpmi.gov", true }, { "muskegowi.gov", true }, - { "musketfire.com", true }, { "musketiers.tk", true }, - { "musketonhaken.nl", false }, - { "muskokadanceconnection.com", true }, { "muskuratimorning.tk", true }, { "muslim.singles", true }, { "muslimah.boutique", true }, @@ -84407,18 +96753,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "muslitocomics.tk", true }, { "musmann.io", true }, { "musopen.org", true }, + { "musoscorner.com.au", true }, { "muspla.com.br", true }, { "mussalains.com", true }, { "musselsblog.com", true }, + { "mussonsppe.com", true }, { "mussonstrading.com", true }, { "musta.ch", true }, + { "mustangapparel.ca", true }, { "mustard.co.uk", true }, - { "mustardwallet.com", true }, + { "mustard.llc", true }, { "mustasj.no", true }, { "mustat.com", true }, { "muster-folien.de", true }, { "muster-schablonen.de", true }, { "musterihizmet.com", true }, + { "musterionsec.com", true }, { "mustertexte-musterbewerbung.de", true }, { "mustexist.tk", true }, { "musthave.tk", true }, @@ -84431,7 +96781,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "musttest.eu", true }, { "musttest.net", true }, { "musttest.org", true }, + { "musubi-dev.net", true }, { "musulmanesnuevos.tk", true }, + { "mususu.com", true }, + { "musvcs.com", true }, { "mutagen.io", true }, { "mutahar.me", true }, { "mutantmonkey.in", true }, @@ -84442,109 +96795,121 @@ static const nsSTSPreload kSTSPreloadList[] = { { "muthai.in.th", true }, { "mutiararentas.com.my", true }, { "mutsumikai8989.com", true }, + { "mutua.es", true }, { "mutual.ga", true }, { "mutualfunds.cf", true }, { "mutualfunds.ml", true }, + { "mutualidadabogacia.com", true }, { "mutualmoney.ml", true }, { "mutualofomahamedicareplans.com", true }, { "mutuals.cool", true }, - { "mutuelle-catalane.fr", true }, { "mutuelle.fr", true }, - { "mutuocasafacile.it", true }, { "muuglu.es", true }, { "muunnin.net", true }, { "muurari.tk", true }, { "muusika.fun", true }, + { "muusikoiden.net", true }, { "muv.co.uk", true }, { "muvaffakiyet.com", true }, { "muwa-consulting.com", true }, { "muwatenraqamy.org", true }, { "muwi.tk", true }, + { "muxetv.com", true }, + { "muxup.com", true }, { "muy.ooo", true }, { "muydelgada.com", true }, { "muyinternetsante.tk", true }, { "muz-portal.com", true }, { "muz2u.ru", true }, + { "muzamilpc.com", true }, + { "muzcomedia.ru", true }, { "muzenzacrianca.tk", true }, { "muzetxe.com", true }, - { "muzeumkomiksu.eu", true }, + { "muzeumkomiksu.eu", false }, { "muzi-tips.tk", true }, { "muzi.cz", true }, { "muzicamp3.org", true }, + { "muzicar.rs", true }, { "muzicari.tk", true }, { "muziekcentrumdebijloke.gent", true }, { "muziektermen.tk", true }, { "muzikanews.tk", true }, { "muzikantine.nl", true }, { "muzike.tk", true }, + { "muzline.ua", true }, { "muzmo.ga", true }, { "muzotakt.pl", true }, { "muzprosvet.tk", true }, { "muzykanawesele.info", true }, - { "mv-schnuppertage.de", true }, + { "mv-icity.com", true }, { "mv-spital.tk", true }, { "mv-wohnen.de", true }, { "mvandek.nl", true }, { "mvarsamis.com", true }, - { "mvbits.com", true }, + { "mvb-it.nl", true }, + { "mvbits.com", false }, + { "mvbstyling.nl", true }, { "mvbug.com", true }, { "mvccp.co.za", true }, { "mvdmt.gov", true }, + { "mvelopes.com", true }, + { "mventix.com", true }, { "mvib.net", true }, { "mviess.de", true }, { "mvisioncorp.com", true }, { "mvistatic.com", true }, - { "mvmm.fr", true }, + { "mvmcorps.com", true }, + { "mvn.lu", true }, { "mvno.io", true }, { "mvorisek.com", true }, { "mvorisek.cz", true }, { "mvpinfo.ga", true }, { "mvpower.pt", true }, + { "mvpzd.com", true }, { "mvrcheck.com", true }, { "mvrdrivingrecords.com", true }, - { "mvvacation.com", true }, + { "mvsp.ru", true }, + { "mvwdca.gov", true }, { "mvwoensei.com", true }, { "mvwoensei.xyz", true }, { "mvwoensel.com", true }, - { "mvwr.co.uk", true }, { "mvzstartpagina.tk", true }, { "mw.search.yahoo.com", false }, + { "mwai.edu.ph", true }, { "mwamitours.com", true }, { "mware-staging.azurewebsites.net", true }, - { "mwavuli.co.ke", true }, { "mway.io", true }, { "mwba.org", true }, { "mwcwallet.com", true }, { "mwd.world", true }, { "mwe.st", true }, { "mwezi.org", true }, + { "mwhcp.org.au", true }, { "mwicescholarship.com", true }, { "mwinds.tk", true }, - { "mwine.sk", true }, { "mwlcouriers.com", true }, { "mwmopd.gov", true }, { "mwms.nl", true }, - { "mwnonline.net", true }, + { "mwnonline.net", false }, { "mwohlfarth.de", true }, { "mwork.tech", true }, { "mwpromotion.fr", true }, { "mwr.team", true }, { "mwscouts.org", true }, { "mwskwong.com", true }, - { "mwstrategicservices.com", true }, - { "mwteh.ru", true }, { "mwtj.com", true }, { "mwtown.gov", true }, + { "mwu.dk", true }, + { "mwv2wle.club", true }, { "mww.moe", true }, { "mx-moto.fr", false }, { "mx-quad.fr", false }, { "mx-solutions.net", true }, { "mx.org.ua", true }, { "mx.search.yahoo.com", false }, + { "mx310.jp", true }, { "mx5international.com", true }, { "mxawei.cn", true }, - { "mxbids.com", false }, - { "mxcrs.com", true }, { "mxdanggui.org", true }, { "mxdvl.com", false }, { "mxes.net", true }, @@ -84558,22 +96923,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "my-best-wishes.com", true }, { "my-bratsk.tk", true }, { "my-calend.ru", false }, + { "my-carrent.de", true }, { "my-cars.tk", true }, { "my-clubpenguin.tk", true }, { "my-contract.ch", false }, { "my-contract.info", false }, { "my-contract.net", false }, + { "my-coordinates.com", true }, + { "my-darkon.ru", true }, { "my-demo.co", true }, { "my-digital.fr", true }, { "my-dns.co.il", true }, { "my-documentforce.com", true }, + { "my-ebook.es", true }, { "my-education.tk", true }, { "my-finance.tk", true }, { "my-force-user-content.com", true }, - { "my-gode.fr", true }, + { "my-fuhui.com", true }, { "my-gps-tracker.co.uk", true }, { "my-health-homes.com", true }, { "my-host.ovh", true }, + { "my-housemanager.com", true }, + { "my-how-to-draw.com", true }, { "my-hps.de", true }, { "my-ifms.com", true }, { "my-ip.work", true }, @@ -84581,12 +96952,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "my-kirov.tk", true }, { "my-lightning-container.com", true }, { "my-lightning.com", true }, + { "my-meal.nl", true }, + { "my-mediahome.ru", true }, { "my-mobile-apps.com", true }, { "my-montenegro.tk", true }, { "my-new-bikini.de", true }, { "my-nextcloud.at", true }, { "my-optika.ru", true }, { "my-pawnshop.com.ua", false }, + { "my-pharmacie.com", true }, { "my-phone.tk", true }, { "my-profile.org", true }, { "my-road.de", true }, @@ -84609,42 +96983,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "my-town.tk", true }, { "my-tunisia.tk", true }, { "my-visualforce.com", true }, + { "my-vulcanplatinum.xyz", true }, + { "my-vulkanplatinum.xyz", true }, { "my-web.xyz", true }, { "my-webcloud.at", true }, + { "my-woodcraft.com", true }, { "my.cat", true }, + { "my.com.my", true }, { "my.onlime.ch", false }, { "my.urown.cloud", true }, { "my.usa.gov", true }, + { "my1login.com", true }, { "my4g.net", true }, { "my4thtelco.com.sg", true }, { "my4thtelco.sg", true }, + { "my630.org", true }, { "my77.vip", false }, - { "myabcm.com", true }, + { "myabakus.com", true }, + { "myacademiceducation.com", true }, { "myaccount.google.com", true }, { "myaccountview.net", true }, { "myactivity.google.com", true }, { "myadpost.com", true }, + { "myafweb.com", true }, { "myaggic.com", true }, { "myahmed.com", true }, { "myakkatactical.com", true }, - { "myalarm.com.au", true }, - { "myalarm.eu.com", true }, { "myalliance.church", true }, { "myalliancechurch.com", true }, - { "myalpine.shop", true }, + { "myalpine.shop", false }, { "myalsadd.tk", true }, + { "myalumil.com", true }, { "myamend.com", true }, { "myamihealth.com", true }, - { "myammo.ru", true }, { "myandre.tk", true }, { "myandroidfriend.ml", true }, { "myanimelist.net", true }, { "myanimo.ml", true }, { "myanmar-responsiblebusiness.org", true }, + { "myanmar.gov.mm", true }, { "myapexcard.com", true }, + { "myappworx.com", true }, + { "myaquariumclub.com", true }, { "myaquaterra.tk", true }, + { "myareaf2a.com", true }, { "myarentcar.com", true }, { "myarticlelibrary.cf", true }, + { "myarticles.io", true }, { "myartsjournal.com", true }, { "myasb.club", true }, { "myathena.ai", true }, @@ -84652,10 +97037,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mybaby.bg", true }, { "mybags.cf", true }, { "mybakkupakku.com", true }, + { "mybank.com", true }, { "mybaran.tk", true }, { "mybarcelona.tk", true }, { "mybathroom.tk", true }, - { "mybauingenieur24.de", true }, { "mybb.com", true }, { "mybb.de", true }, { "mybbcode.tk", true }, @@ -84665,6 +97050,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mybestbooks.gq", true }, { "mybestteam.tk", true }, { "mybicc.org", true }, + { "mybieo.com", true }, + { "mybigplunge.com", true }, { "mybillie.com", true }, { "mybirds.tk", true }, { "mybisnis.tk", true }, @@ -84672,40 +97059,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myblockchain.cloud", true }, { "mybloggedlife.com", true }, { "myblogwire.org", true }, - { "myblogworld.com.au", true }, { "myblueprints.org", true }, - { "mybokx.co", true }, { "mybon.at", false }, { "mybon.online", true }, { "mybookbee.com", true }, - { "mybookkeeper-perth.com.au", true }, { "myboostport.com", true }, { "myboothang.com", true }, { "myborder.ru", true }, { "mybotti.eu", true }, { "mybottle.ch", true }, { "myboxing.tk", true }, - { "myboxofficetickets.com", true }, { "mybpstar.com", true }, { "mybrand.nl", true }, + { "mybrb.com", true }, { "mybreakwatertower.com", true }, { "mybritney.tk", true }, + { "mybro.tv", true }, { "mybrokenheart.tk", true }, { "mybsms.gr", true }, + { "mybts.fr", true }, { "mybubbleteashop.com", true }, - { "mybuddycare.com", true }, - { "mybuddytheplumber.com", true }, { "mybuddytheplumberparkcity.com", true }, + { "mybudgetapp.com", true }, { "mybuildingcertifier.com.au", true }, { "mybupa.com.au", true }, { "mycaelis.fr", true }, { "mycalifornialemonlaw.com", true }, { "mycam.gq", true }, { "mycamshowhub.to", true }, - { "mycard.moe", true }, + { "mycandylove.com", true }, { "mycardplace.com", true }, + { "mycarecorner.net", true }, + { "mycarecrew.co", true }, { "mycarinsurance123.com", false }, { "mycarwashers.com", true }, + { "mycase.com.ua", true }, { "mycats.tk", true }, { "mycaviste.com", true }, { "mycbils.uk", true }, @@ -84715,15 +97103,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mychamberlain.eu", true }, { "mychawinda.cf", true }, { "mychemromance.tk", true }, + { "mychestzilla.com", false }, { "mychicken.info", true }, { "mychicken.nl", true }, { "mychildatschool.com", true }, - { "mychunky.design", true }, { "mycigna.com.hk", true }, { "mycinema.pro", true }, { "mycircleworks.com", true }, - { "myclasscam.com", false }, - { "myclasscam.org", false }, + { "myclang.com", true }, { "myclgnotes.com", true }, { "myclimate.com", true }, { "myclinicalstudybuddy.com", true }, @@ -84740,6 +97127,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mycofairtrade.com", false }, { "mycoins.gallery", true }, { "mycoldjet.com", true }, + { "mycollegebag.in", true }, + { "mycolo.gq", true }, { "mycolorado.gov", true }, { "mycommerce.tk", true }, { "mycompanion.cz", true }, @@ -84752,12 +97141,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myconf.uk", true }, { "myconferencion.tk", true }, { "myconnection.ie", true }, - { "myconsultation.be", true }, - { "myconsulting.ch", false }, + { "myconradsiegel.com", true }, + { "myconsultingresources.com", true }, { "mycontactacuvue.fr", false }, { "mycontactopticien.fr", false }, { "mycontrolmonitor.com", true }, { "mycoordinates.xyz", true }, + { "mycopa.com", true }, { "mycounterstrike.ru", true }, { "mycr.eu", true }, { "mycreativeartsconsulting.com", true }, @@ -84766,17 +97156,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mycreditjunkie.com", true }, { "mycreditunion.gov", true }, { "mycredy.com", true }, - { "mycrm.coach", true }, - { "mycroft.kr", true }, + { "mycrm.coach", false }, { "mycrowdstack.com", true }, { "mycrypnet.io", true }, - { "mycustomwriting.com", true }, + { "mycts.org", true }, + { "mycues.gov", true }, + { "mycumortgage.com", true }, { "mycutebee.com", true }, + { "mycyberspace.tech", true }, + { "mydabb.com", true }, { "mydais.org", true }, { "mydarkness.cf", true }, { "mydarksite.tk", true }, { "mydarkstar.net", true }, - { "mydatadoneright.eu", true }, + { "mydarwin.co.uk", true }, { "mydataprotected.com", true }, { "mydating.be", true }, { "mydaxio.com", true }, @@ -84784,25 +97177,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mydaywebapp.com", true }, { "mydeardreams.com", true }, { "mydebian.in.ua", true }, + { "mydedicatedservice.ca", true }, + { "mydedicatedservice.com", true }, { "mydentalplan.gr", true }, + { "mydentist.co.uk", true }, { "mydenverhomesource.com", true }, { "mydesignrules.com", true }, { "mydestiny.tk", true }, + { "mydetailbox.com", true }, { "mydevolo.com", true }, { "mydevolo.de", true }, { "mydigicard.biz", true }, - { "mydigicard.host", true }, + { "mydigitalexperience.fr", true }, { "mydigitalnation.com", true }, { "mydirtysexstories.com", true }, { "mydisabilitymatters.com", true }, { "mydisabilitymatters.org.au", true }, { "mydisco.tk", true }, { "mydistance.tk", true }, + { "mydlonline.be", true }, + { "mydmv.pro", true }, { "mydnshost.co.uk", true }, { "mydoc.fr", true }, { "mydocserve.com", true }, { "mydoggyadvisor.com", true }, - { "mydoginsurance.com.au", true }, { "mydogispolite.tk", true }, { "mydogtrainingcollar.com", true }, { "mydolls.ml", true }, @@ -84817,12 +97215,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mydslwebstats.co.uk", true }, { "mydsomanager.com", true }, { "myduffyfamily.com", true }, + { "mydx.ru", true }, { "myeasybooking.de", true }, - { "myeasycopy.com", true }, { "myebony.cam", true }, { "myecms.com", true }, { "myedcreview.cf", true }, - { "myediblefood.com", true }, { "myeditclub.ml", true }, { "myedu.ga", true }, { "myedu.gq", true }, @@ -84831,12 +97228,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myeisenbahn.de", true }, { "myekon.com", true }, { "myelebest.ga", true }, + { "myelitetravelclub.com", true }, { "myelka.tk", true }, + { "myemailadd.net", true }, { "myemailsender.tk", true }, { "myeml.net", true }, { "myempire.com.au", true }, { "myenemy.tk", true }, { "myenglish.tk", true }, + { "myensolofts.com", true }, { "myentspecialist.sg", true }, { "myepass.bg", true }, { "myepass.de", true }, @@ -84846,49 +97246,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myessaydoc.com", true }, { "myessaygeek.com", true }, { "myetherwallet.com", true }, + { "myethvault.com", true }, { "myeventstation.com", true }, { "myevive.com", true }, { "myexams.nl", true }, + { "myexpressinfo.com", true }, { "myf.cloud", true }, { "myface.pt", true }, { "myfae.eu", true }, { "myfamilyancestry.tk", true }, + { "myfamilyfirsthc.com", true }, { "myfancyurl.tk", true }, { "myfantasysportstalk.com", true }, { "myfavmessage.cf", true }, { "myfavorite.com.tw", true }, { "myfdic.gov", true }, - { "myfedloan.org", true }, { "myfi24.ru", true }, { "myfile.gq", true }, + { "myfinance.co.nz", true }, { "myfinverse.com", true }, + { "myfinx.bh", true }, + { "myfinx.io", true }, { "myfirenet.com", false }, { "myfirstchessclub.com", true }, { "myfishpalace.at", true }, { "myfitnesscare.com", true }, + { "myflightrefund.com", true }, { "myfloridacfo.gov", true }, { "myfloridadeferredcomp.com", true }, + { "myfloridahouse.gov", true }, { "myfloridarealty.com", true }, { "myfloridarx.gov", true }, - { "myflytplan.com", true }, { "myformatconverter.com", false }, { "myfortdodge.com", true }, { "myforum.community", true }, - { "myfreemp3.click", true }, + { "myfreemp3.blog", true }, { "myfreespiritpointscard.com", true }, { "myfrenchtattoo.fr", true }, { "myfsb.bank", true }, + { "myfuhui.com", true }, { "myfunworld.de", true }, { "myfursona.com", true }, { "myfutanari.com", true }, { "myfutureself.com.au", true }, { "myfuturewebsite.co.uk", true }, - { "myg21.com", true }, + { "myfxbook.com", true }, + { "myfxcm.com", true }, { "mygadgetguardian.lookout.com", false }, { "mygallery.homelinux.net", true }, { "mygameconsole.tk", true }, { "mygaming.news", true }, { "mygate.at", false }, + { "mygaypornstarlist.com", true }, { "mygaysitges.com", true }, { "mygd.org", true }, { "mygear.live", true }, @@ -84897,17 +97306,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mygedit.net", true }, { "mygedit.org", true }, { "mygeek.tk", true }, + { "mygeek911.com", true }, { "mygeneral.org", true }, { "mygeorgia.org", true }, { "mygeotrip.com", true }, { "mygermanuniversity.com", true }, { "mygest.me", true }, + { "myggkungen.se", true }, { "mygigabitnation.com", true }, { "mygignation.com", true }, { "mygilehery.tk", true }, { "mygimp.tk", true }, { "mygirlfriendshouse.com", true }, - { "mygizmolife.tech", true }, { "myglobalopti.nl", true }, { "mygnmr.com", true }, { "mygobelin.tk", true }, @@ -84918,35 +97328,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mygreatjobs.de", false }, { "mygreatlakes.org", true }, { "mygreatwebsite.co.uk", true }, - { "mygreeley.com", true }, + { "mygreencloset.com", true }, + { "mygreenrecipes.com", true }, { "mygretchen.de", true }, { "mygrodno.tk", true }, + { "mygtcup.co", true }, { "mygymer.ch", true }, + { "myhabitshop.com", true }, { "myhappiness.tk", true }, { "myhealthchecked.com", false }, { "myhealthcheckup.ca", true }, { "myhealthcheckup.com", true }, { "myhealthsquad.ca", true }, { "myhealthyday.com", true }, - { "myheartlaundry.com", true }, - { "myhechar.pro", true }, + { "myhelcim.com", true }, { "myhell-anonim.tk", true }, + { "myhelo.com", true }, + { "myhermes.co.uk", true }, { "myhfstar.com", true }, { "myhkweb.tk", true }, { "myhmz.bid", true }, { "myhollywoodnews.com", true }, { "myhome-24.pl", true }, - { "myhomeworkpapers.com", true }, { "myhoor.ga", true }, { "myhostname.net", true }, + { "myhotel.sk", true }, { "myhotgirls.ml", true }, { "myhouse.rocks", true }, + { "myhousestats.com", true }, + { "myhu.bz", true }, { "myhub.eu.org", true }, { "myhurlburt.marketing", true }, { "myhuthwaite.com", true }, { "myibidder.com", true }, + { "myibp.ph", true }, { "myicare.org", true }, { "myid.be", true }, + { "myigetit.com", true }, { "myimg.cn", true }, { "myimmitracker.com", true }, { "myinfoenter.tk", true }, @@ -84954,21 +97372,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myinsiderplus.com", true }, { "myinstapy.ru", false }, { "myinsurancesource.com", true }, + { "myintegrativehealthcenters.com", true }, { "myinternist.com", true }, { "myintimtoys.com", true }, + { "myinvestinglife.com", true }, { "myinvisibleknapsack.com", true }, + { "myip.com.tw", true }, + { "myip.solutions", true }, { "myireland.io", true }, - { "myirietime.com", true }, + { "myisolved.com", true }, { "myitworks.co.za", true }, { "myjarofhope.com", true }, { "myjbn.org", true }, - { "myjoker123.net", true }, - { "myjordantrip.com", true }, - { "myjourney.id", true }, + { "myjobsearchengine.com", true }, { "myjudo.net", true }, { "myjumparoo.co.uk", true }, { "myjumpsuit.de", true }, - { "myjustice.org", true }, { "myjuvelirika.ru", true }, { "mykarelia.ga", true }, { "mykarelia.tk", true }, @@ -84980,12 +97399,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mykolhoz.tk", true }, { "mykonos-island.tk", true }, { "mykontool.de", true }, + { "mykoreankitchen.com", true }, + { "mykukun.com", true }, { "mykumedir.com", true }, { "mykurgan.tk", true }, { "mykursumlija.tk", true }, + { "mylabaih.com", true }, + { "mylacera.gov", true }, { "mylastchapter.tk", true }, { "mylatestnews.org", true }, { "mylawer.ga", true }, + { "myld.be", true }, { "mylearners.vic.gov.au", true }, { "myled.ml", true }, { "mylegacyvip.com", true }, @@ -84998,7 +97422,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myliftmaster.com", true }, { "myliftmaster.eu", true }, { "mylight.tk", true }, - { "mylighthost.com", true }, { "myline.cf", true }, { "mylisting.club", true }, { "mylittlechat.ru", true }, @@ -85008,7 +97431,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mylittlewallpaper.com", true }, { "mylittlewizard.fr", true }, { "myliveupdates.com", true }, - { "mylms.nl", true }, { "myload.ch", true }, { "myloan.hk", true }, { "myloanmanager.com", true }, @@ -85027,14 +97449,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myltivarka.ml", true }, { "mymagazines.dk", true }, { "mymagic.ml", true }, + { "mymagnifi.org", true }, { "mymailboxpro.cf", true }, { "mymailspace.ml", true }, { "mymaineconnection.gov", true }, { "mymanagement.ml", true }, + { "mymarket.com.hk", true }, { "mymartinbeckeropenhab.de", true }, { "mymartinbeckeropenhab.eu", true }, { "mymartinhalchiado.com", true }, + { "mymartinhalresidences.com", true }, { "mymb.pm", true }, + { "mymcc.gift", true }, + { "mymdtaxes.gov", true }, { "mymed.de", true }, { "mymed.eu", true }, { "mymedia.gotdns.com", true }, @@ -85042,6 +97469,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mymedz.nl", true }, { "mymerlin.co.nz", true }, { "mymerlin.com.au", true }, + { "mymesra.com.my", true }, { "mymixtapez.com", true }, { "mymkphotography.com", true }, { "mymo.in.th", true }, @@ -85049,6 +97477,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mymoneycoin.ml", true }, { "mymonture.com", true }, { "mymoretrip.com", true }, + { "mymortgagegenius.ca", true }, { "mymotor.nl", true }, { "mymovein.com", true }, { "mymsr.de", false }, @@ -85069,23 +97498,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mynametags.mt", true }, { "mynametags.nl", true }, { "mynametags.pt", true }, - { "mynas.ovh", true }, - { "mynaturalhairstyles.com", true }, + { "mynas.ovh", false }, { "mynaturalmood.es", true }, - { "mynaturebox.com", true }, + { "mynaturebox.com", false }, { "mynaughtyalbum.com", true }, { "mynavi-kaigo.jp", true }, - { "myndcoin.com", true }, - { "myndcoins.com", true }, { "myndcommunication.com", true }, { "myndighetermeddnssec.se", true }, { "myndighetermedipv6.se", true }, { "mynerva.io", true }, + { "mynetblog.com", true }, { "mynetflow.com", true }, { "mynetpay.be", true }, { "mynetworkingbuddy.com", true }, - { "mynewsspot.com", true }, + { "mynewhorizons.shop", true }, + { "mynewsfit.com", true }, + { "mynewsinc.org", true }, + { "mynext.events", true }, { "mynextmove.org", true }, + { "mynexus.tech", true }, { "mynexuz.be", true }, { "mynic.my", true }, { "mynimo.com", true }, @@ -85095,19 +97526,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mynn.io", false }, { "mynn.ml", true }, { "mynook.info", true }, + { "mynr.ai", true }, { "mynrg.gr", true }, { "mynutrientcloud.com", true }, + { "myocci.net", true }, { "myoctocat.com", true }, { "myoddlittleworld.com", true }, { "myodysi.com", true }, { "myofficeconnect.co.uk", true }, { "myofficerenovation.com", true }, - { "myonline.hu", true }, + { "myokaloosa.gov", true }, { "myonline.store", true }, { "myonlinemovies.ga", true }, { "myonlinevehicleinsurance.com", true }, { "myopd.in", true }, { "myorder-pg.com", true }, + { "myorders.co", true }, { "myoregon.gov", true }, { "myotopie.de", false }, { "myoueb.fr", true }, @@ -85118,20 +97552,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myownconference.com", true }, { "myownconference.com.ua", true }, { "myownconference.email", true }, - { "myownconference.pl", true }, - { "myownconference.ru", true }, - { "myowndisk.com", true }, { "myowndisk.net", true }, + { "myowntutor.co.uk", true }, { "mypaperdone.com", true }, - { "mypaperpress.com", true }, { "mypaperwriter.com", true }, { "myparadigm.com", true }, { "mypartnernews.com", true }, - { "mypartybynoelia.es", true }, { "mypathologos.gr", true }, { "mypay.fr", true }, { "mypcb.tk", true }, - { "mypdns.org", false }, { "mypeace.tk", true }, { "mypenza.tk", true }, { "mypeople.co.in", true }, @@ -85139,20 +97568,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myperks.in", true }, { "mypersonalpage.tk", true }, { "mypet24.ch", true }, + { "mypetcloud.com", true }, + { "mypetitjob.fr", true }, + { "mypetsvetsltd.co.uk", true }, { "myphamaplus.org", true }, { "mypharmjar.com", true }, - { "myphotographytips.com", true }, { "myphotonics.ml", true }, { "myphotos.ga", true }, { "myphotoshopbrushes.com", true }, + { "myphx311.gov", true }, { "myphysiocoach.ch", true }, { "mypillcard.com", true }, { "mypiloteis.com", true }, + { "mypinellasclerk.gov", true }, { "mypivcard.com", true }, - { "mypizza-bremen.de", true }, { "myplaceonline.com", true }, { "mypnu.net", true }, + { "mypocketai.com", false }, { "mypogljad.tk", true }, + { "mypoodleassassin.com", true }, { "mypornsnap.top", true }, { "myportal.ga", true }, { "myposters.tk", true }, @@ -85163,27 +97597,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myprfsite.com", true }, { "myprintcard.de", true }, { "myproblog.com", true }, + { "myprofitweb.com", true }, { "mypromocode.com", true }, - { "myproof.me", true }, { "mypropertal.com", true }, { "myprotime.eu", true }, { "myproxy.eu.org", false }, { "mypskov.tk", true }, - { "mypsy.online", true }, { "mypsychicreadings.tk", true }, + { "mypt3.com", true }, { "mypvhc.com", true }, { "myqservices.com", true }, { "myraboats.tk", true }, - { "myradnetconnect.com", true }, { "myrandomtips.com", true }, { "myrants.org", true }, { "myrasp.eu", true }, + { "myrays.cloud", true }, { "myraytech.net", false }, { "myreadingmanga.info", true }, { "myrealestateautomation.com", true }, { "myrealestatemate.com.au", true }, { "myred.net", true }, + { "myredfoxlabs.com", true }, + { "myredserver.com", true }, { "myref.net", true }, + { "myreferral.systems", true }, { "myrekber.co.id", true }, { "myremont.tk", true }, { "myremotelogin.ddns.net", true }, @@ -85241,11 +97678,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myreviews.ga", true }, { "myrevolution.in", true }, { "myrewardspoints.com", true }, + { "myria.com", true }, + { "myriad.com", true }, { "myriadlex.com.tw", true }, { "myriadof.com", true }, { "myrig.com", true }, { "myrig.net", true }, - { "myroaccutaneexperience.co.uk", true }, { "myrom.tk", true }, { "myrotvorets.center", true }, { "myrotvorets.news", true }, @@ -85254,24 +97692,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myruststats.com", true }, { "myrvog.net", true }, { "myrvogna.net", true }, + { "myrxplans.com", true }, { "mys.gov.sd", true }, { "mysa.tk", true }, { "mysafetygear.co.za", true }, + { "mysafeway.com", true }, { "mysaldo.info", true }, { "mysam.net", true }, + { "mysantanderpension.co.uk", true }, + { "mysavvastraining.com", true }, + { "mysavvywallet.com", true }, { "mysaymk.tk", true }, { "mysbaccoach.com", true }, { "mysber.ru", true }, { "mysbi.tk", true }, + { "myschool.edu.au", true }, + { "myschoolitaly.com", true }, { "myschoolphoto.org", true }, + { "myschools.nyc", true }, { "mysciencecloset.com", true }, { "myseatime.com", true }, { "mysecretstylist.ga", true }, { "mysecurity.review", true }, { "myseo.ga", true }, { "myservicearl.com", true }, + { "myservices.digital", true }, { "myservik.ml", true }, { "myseu.cn", true }, + { "mysexpedition.com", true }, { "mysexvids.net", true }, { "mysexycard.com", true }, { "mysexydate.de", true }, @@ -85282,12 +97730,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myshowbiz.tk", true }, { "mysidekick.io", true }, { "mysignal.com", true }, - { "mysilkandhoney.com", true }, { "mysill.gr", true }, { "mysilvershield.com", true }, { "mysisterandi.co.za", true }, { "mysites.guru", true }, - { "mysmg.in", true }, + { "mysitex.com", true }, + { "myslc.gov", true }, + { "mysmartloan.ca", true }, + { "mysmartserve.com", true }, { "mysmmstore.com", true }, { "mysmmstore.in", true }, { "mysociallinks.org", true }, @@ -85297,7 +97747,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mysocrat.com", true }, { "mysoundtalks.com", false }, { "mysourceofhealth.com", true }, - { "mysouschef.herokuapp.com", true }, + { "myspeedcash.com", true }, { "myspicer.com", true }, { "mysports.com", true }, { "mysql-real-escape-string.xyz", true }, @@ -85305,25 +97755,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myssl.com", true }, { "mystaffonline.com", true }, { "mystagic.cloud", true }, - { "mysteriousbeans.com", true }, { "mysteriouscode.com", true }, { "mysteriouscode.io", true }, + { "mysteriousmind.com.au", true }, { "mystery-box.cf", true }, + { "mystery-science-theater-3000.de", false }, { "mysteryboxinc.com", true }, - { "mysterydata.com", true }, { "mysteryfun.house", true }, { "mysterymind.ch", false }, { "mysteryshow.site", true }, + { "mystex.me", true }, { "mystgames.tk", true }, { "mystia.org", true }, { "mystic-falls.tk", true }, { "mystic-welten.de", true }, - { "mysticallyminded.com.au", true }, - { "mysticconsult.com", true }, - { "mystickphysick.com", true }, + { "mysticalroseschoolofcaloocan.com", true }, { "mysticmedia.net", true }, { "mysticmine.shop", true }, { "mysticrealm.tk", true }, + { "mystiko.eu", true }, { "mystinkefinger.de", true }, { "mystock911.com", true }, { "mystoeckel.de", true }, @@ -85332,10 +97782,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "mystorydoctor.com", true }, { "mystorymonster.com", true }, { "mystown.org", true }, + { "mystream.com", true }, { "mystreet.ga", true }, + { "mystrength.com", true }, + { "mystrix-esports.eu", true }, { "mystudy.me", true }, { "mystudycart.com", true }, { "mystudymap.tk", true }, + { "mystyk.art", true }, { "mystylion.com", true }, { "mysupplements.ga", true }, { "mysurfhostel.com", true }, @@ -85343,48 +97797,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myswimmingclub.uk", true }, { "myswissmailaddress.com", false }, { "myswitchelectric.com", true }, + { "myswooop.de", true }, + { "mytamarin.com", true }, { "mytana.com", true }, + { "mytanningcompany.com", true }, + { "mytaratata.com", true }, { "mytc.fr", true }, { "myte.ch", true }, { "mytea.life", true }, + { "mytecheg.com", true }, { "mytefl.com", true }, { "mytests.tk", true }, { "mytfg.de", true }, - { "mythemeshop.com", false }, { "mythen-fonds.ch", true }, { "mythenfonds.ch", true }, + { "mytherapist.com", true }, { "mythicdelirium.com", true }, - { "mythiqueamerique.fr", true }, + { "mythiqueamerique.fr", false }, { "mytime.fr", true }, { "mytime.gl", true }, { "mytimer.tk", true }, { "myting.net", true }, { "mytntware.com", true }, - { "mytodo.cloud", true }, - { "mytourstar.com", true }, + { "mytoncityut.gov", true }, { "mytraiteurs.com", true }, { "mytraning.cf", true }, { "mytransmissionexperts.com", true }, { "mytravelblog.de", true }, { "mytravelguide.tk", true }, + { "mytravelresearch.com", true }, { "mytreasury.gov", true }, { "mytrendiya.com", true }, - { "mytribes.ru", true }, { "mytribus.com", true }, { "mytrinity.com.ua", true }, { "mytripcar.co.uk", true }, - { "mytripcar.com", true }, - { "mytripcar.fr", true }, { "mytroc.pro", true }, { "mytruecare.org", true }, { "mytrustadviser.com", true }, { "mytty.net", true }, { "mytuleap.com", true }, { "mytun.com", true }, - { "myturf.com.au", true }, + { "myturf.com.au", false }, { "mytuzla.tk", true }, { "mytwilight.tk", true }, { "myunitard.uk", true }, + { "myunitypoint.org", true }, { "myunraid.ru", true }, { "myupdatestudio.com", true }, { "myupdatesystems.com", true }, @@ -85392,8 +97849,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myusagepayments.com", true }, { "myvaccinefl.gov", true }, { "myvacompany.com", true }, - { "myvagnews.com", true }, { "myvalleymarketing.com", true }, + { "myvcc.ru", true }, { "myvegasadvisor.com", true }, { "myveronanj.com", true }, { "myvet.ie", true }, @@ -85402,6 +97859,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myvologda.tk", true }, { "myvotect.gov", true }, { "myvpl.com", true }, + { "myvulcan-platinum.ru", true }, + { "myvulkanplatinum.xyz", true }, { "mywalletcrypto.cf", true }, { "mywapforum.ga", true }, { "mywari.com", true }, @@ -85417,39 +97876,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "myweddingreceptionideas.com", true }, { "myweightlosstips.tk", true }, { "mywestondental.com", true }, - { "mywetpussycams.com", true }, + { "mywifiext.net", true }, { "mywihomes.com", true }, { "mywikis.net", true }, { "mywindscreen.my", true }, { "mywish.co.il", true }, { "mywiwe.com.au", true }, - { "mywoodbridgedentist.com", true }, + { "myworkboard.com", true }, { "myworkfromhome.ml", true }, - { "myworkinfo.com", false }, + { "myworkplaceperks.ca", true }, + { "myworkplaceperks.com", true }, { "myworldbbs.tk", true }, { "myworth.com.au", true }, - { "mywpdesign.co.nz", true }, - { "mywpdesign.com", true }, { "mywrecklawyer.com", true }, + { "mywulcanplatinum.xyz", true }, + { "mywulkanplatinum.xyz", true }, { "myxnr.com", true }, + { "myxt.net", true }, { "myxxxsite.tk", true }, { "myyoutubepage.tk", true }, - { "myyubikey.net", true }, - { "myyubikey.org", true }, { "myzarabot.tk", true }, { "myzina.cz", false }, + { "myzoetrope.com", true }, { "mz-mz.net", true }, { "mza.com", true }, { "mzademiryolu.com", true }, { "mzcsgo.top", true }, - { "mzh.io", false }, + { "mzflirt.de", true }, { "mzitu.com", true }, - { "mziulu.me", false }, { "mzlive.eu", true }, { "mzlog.win", true }, { "mzmtech.com", true }, { "mzorn.photography", false }, + { "mzplumber.com", true }, + { "mzplumbingca.com", true }, { "mzr.jp", true }, + { "mzrme.top", true }, { "mzstatic.cc", true }, { "mzyxsl.top", true }, { "n-a-railways.com", true }, @@ -85459,30 +97921,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "n-doc.com", true }, { "n-doc.de", true }, { "n-gram.it", true }, - { "n-laboratory.jp", true }, + { "n-laboratory.jp", false }, { "n-linear.org", true }, { "n-m.lu", true }, { "n-man.info", true }, { "n-metz.de", true }, - { "n-pix.com", false }, + { "n-tennis.fr", true }, { "n-un.de", false }, { "n.tt", true }, + { "n0099.net", true }, { "n0paste.tk", false }, - { "n0psled.nl", true }, { "n1.homes", true }, + { "n15.org", true }, { "n16.co", true }, - { "n1card.com.br", true }, { "n1co68.freeboxos.fr", true }, + { "n1mp.org", true }, { "n26.com", true }, { "n29.co", false }, - { "n2canada.ca", true }, { "n2diving.net", true }, { "n2o.io", true }, { "n2ray.xyz", true }, { "n2z.net", true }, { "n36533.com", true }, { "n37.co", true }, - { "n3oxid.fr", true }, { "n3rd.eu", true }, { "n3rd0rama.tk", true }, { "n3t.ch", true }, @@ -85493,10 +97954,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "n6729.co", true }, { "n6729.com", false }, { "n6957.co", true }, - { "n6a.net", false }, { "n7.education", true }, { "n8.gay", true }, - { "n81365.com", true }, { "n82365.com", true }, { "n87pedia.tk", true }, { "n888ok.com", true }, @@ -85521,9 +97980,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "na-n.xyz", true }, { "na-school.nl", true }, { "na.nl", true }, + { "na1.nl", true }, { "naacam.org.za", true }, { "naahgluck.de", true }, - { "naam.me", true }, { "naamlint.nl", true }, { "naano.org", true }, { "naap.tk", true }, @@ -85532,6 +97991,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nab-services.ml", true }, { "nabaleka.com", true }, { "nabboon.com", true }, + { "nabc.com.au", true }, { "nabeer.ga", true }, { "nabeez.cf", true }, { "nabidka.net", true }, @@ -85539,10 +97999,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nabiev.tk", true }, { "nabitrix.tk", true }, { "nabokov.tk", true }, + { "naboplastic.com", true }, { "nabosoft.tk", true }, { "nabytek-valmo.cz", true }, { "nabzgroup.com", true }, { "nac-6.fr", true }, + { "nac.gov.pl", true }, { "nacfit.com", true }, { "nachalniku.cf", true }, { "nachalniku.ga", true }, @@ -85552,14 +98014,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nachalosbog.bg", true }, { "nachalova.tk", true }, { "nachbar.chat", true }, + { "nachdenken-erlaubt.de", true }, { "nachoblanco.tk", true }, { "nachovni.org", true }, - { "nachrichten-heute.net", true }, + { "nachsendeauftrag.net", false }, { "nachsenden.info", true }, { "nachtmuziek.info", true }, { "nacin.com", true }, + { "nacionale.com", true }, { "nacionaltelha.com.br", true }, - { "nacktetatsachen.at", false }, { "nackwallpapers.ml", true }, { "nacnkabiltrim.cf", true }, { "nacocu.cf", true }, @@ -85567,11 +98030,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nacoree.ga", true }, { "nacres.tk", true }, { "nacsonline.tk", true }, + { "nacua.org", true }, { "nacudeck.com", true }, { "nacyklo.cz", true }, { "nad-r.com", true }, - { "nad-tendance.be", true }, { "nada-photo.fr", true }, + { "nada.com", true }, + { "nada.org", true }, + { "nadache.info", true }, { "nadacnifondacr.cz", true }, { "nadaquenosepas.com", true }, { "naddi.org", true }, @@ -85579,6 +98045,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nadelholzkulturen.de", true }, { "nadex.com", true }, { "nadezhda.ml", true }, + { "nadhernybyt.sk", true }, { "nadiafourcade-photographie.fr", true }, { "nadilo.com.br", true }, { "nadine-birkner.de", true }, @@ -85590,22 +98057,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nadjasummer.com", true }, { "nadlan.immo", true }, { "nadlerdentistry.com", true }, + { "nadoba-msk.ru", true }, { "nadomna-rabota.tk", true }, { "nadoske.info", true }, { "nadsandgams.com", true }, { "naduvilathu.tk", true }, { "nadyaolcer.fr", true }, + { "naec.ge", true }, + { "naeemsafdar.net", true }, + { "naehenfuerwahrekleinehelden.de", true }, { "naehkurshamburg.de", true }, + { "naehtalente.de", true }, { "naemnuk.tk", true }, + { "nafco-online.com", true }, + { "nafconnexus.com", true }, + { "nafezly.com", true }, { "nafhomes.com", true }, { "nafhroaviano.com", true }, + { "nafilia.com", true }, { "nafod.net", true }, - { "nafoods.com", true }, + { "nag.org.au", true }, { "naga-semi.com", true }, { "naga-wedding.tk", true }, { "naga.com", true }, { "naga.gq", true }, - { "naga.im", false }, { "naganoziotech.com", true }, { "nagaragem.com.br", true }, { "nagashi.ma", false }, @@ -85621,8 +98096,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nagoonline.com", true }, { "nagoya.tk", true }, { "nagpurinstar.tk", true }, - { "nagpurtoday.in", true }, { "nagrad.tk", true }, + { "nagradne-igre.rs", true }, { "nagya.com", true }, { "nagya.eu", true }, { "nagya.net", true }, @@ -85632,6 +98107,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nagybotond.com", false }, { "nah.nz", true }, { "nah.re", true }, + { "naheulcraft.be", true }, + { "nahfe.xyz", true }, { "nahman.tk", true }, { "nahouw.net", true }, { "nahrag.tk", true }, @@ -85645,56 +98122,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nai-job.jp", true }, { "naia.me", true }, { "naide.ee", true }, - { "naif.cz", true }, - { "naifcare.cz", true }, + { "naidoc.org.au", true }, { "naifix.com", true }, + { "naijabeat.com", true }, + { "naijapower.com", true }, { "naijaretro.com", false }, { "naijaxnet.com.ng", true }, + { "naijmobile.com", true }, { "naika.clinic", true }, + { "nailartstudio.it", true }, { "nailattitude.ch", false }, { "nailchiodo.com", true }, { "nailclub.tk", true }, + { "naildesignsjournal.com", true }, + { "nailmoscow.ru", true }, { "nails-n-more.be", true }, { "nailsart.roma.it", true }, { "nailshop.gq", true }, { "nailsmania.ua", true }, { "nailspafinder.com", true }, { "naim.tk", true }, + { "nairamine.org", true }, { "nairobibusinessreview.com", true }, - { "nairus.com.br", true }, { "nais.org", true }, - { "nais0ne.com", true }, { "najany.de", true }, { "najany.dk", true }, { "najany.nl", true }, { "najany.se", true }, { "najarkadeh.com", true }, + { "najbezpieczniejsze.pl", true }, { "najdou.cz", true }, { "naji-astier.com", true }, - { "najiflix.fr", true }, { "najprzepis.pl", true }, { "najrecept.sk", true }, { "naka.io", true }, { "nakaci.de", true }, { "nakacide.com", true }, + { "nakada-shika.com", true }, { "nakada4610.com", true }, { "nakagawa-d.co.jp", true }, { "nakagawa-s.jp", true }, + { "nakahama-dental.com", true }, + { "nakajima-kawara.com", true }, { "nakalabo.jp", true }, { "nakama.tv", true }, { "nakamastudios.com", true }, + { "nakamochi.io", true }, + { "nakamuramudancas.com.br", true }, { "nakanishi-paint.com", true }, { "nakarkhana.com", true }, { "nakayama.industries", true }, { "nakayamaresearch.com", true }, { "nakazanie.ga", true }, - { "nakazato-shika.com", true }, + { "naked.pics", true }, { "nakedalarmclock.me", true }, + { "nakedbigdickmen.com", true }, { "nakedfacts.co.uk", false }, { "nakedgirls247.xxx", true }, { "nakedinkas.com", true }, + { "nakedmaturepics.com", true }, + { "nakedmoms.pics", true }, + { "nakedpussypics.com", true }, + { "nakedpussyvideos.com", true }, { "nakedtruth.in", true }, + { "nakedwomenpics.com", true }, { "nakenmodell.tk", true }, + { "nakib4tech.com", true }, { "nakim.cf", true }, { "nakin.tk", true }, { "nakka.ch", true }, @@ -85705,49 +98198,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nako.blog", true }, { "nako.kr", true }, { "nako.no", true }, - { "nakthongkham.cloud", true }, - { "nakthongkham.com", true }, + { "nakukata.com", true }, { "nakupi.online", true }, + { "nala.ie", true }, + { "nalanyinyun.top", true }, + { "naldydimpudus.com", true }, { "nale-hosting.tk", true }, - { "nalenders.com", true }, { "nalepky-na-zed.cz", true }, { "nalepte.cz", true }, { "nalexandru.xyz", true }, { "nalios.be", true }, { "nalle.fi", true }, { "nalles.net", true }, - { "nalogomania.ru", true }, { "nalresearch.com", true }, + { "nalsai.de", false }, { "naltrexon.gq", true }, { "nalukfitness.com.br", true }, - { "namaanak.net", true }, + { "nalwin.cc", true }, { "namaanakperempuan.net", true }, + { "namabank.com.vn", true }, { "namacindia.com", true }, { "namalelaki.com", true }, { "namamala.com", true }, { "namaperempuan.com", true }, { "namastehomecooking.com", true }, - { "namastemarketingacademy.com", true }, { "namastenaturo.fr", true }, { "namazon.org", true }, { "namazvakitleri.com.tr", false }, + { "namclear.com.na", true }, { "namdak.com", true }, + { "name.am", true }, { "name.ax", true }, { "namecoin.info", true }, { "namecoin.org", true }, + { "namedb.ru", true }, { "namegen.jp", true }, { "namegrep.com", true }, { "nameid.org", true }, { "namepros.com", true }, { "nameproscdn.com", true }, { "namereel.com", true }, - { "namesbee.com", false }, { "nameserver.tk", true }, { "nameshield.com", true }, { "nameshield.net", true }, { "namesmaker.com", false }, { "namesnack.com", true }, { "namespacesquatting.com", true }, + { "namestudio.com", true }, + { "namestudioapi.com", true }, { "nametalent.com", true }, { "namethatporn.com", true }, { "namethissymbol.com", true }, @@ -85761,7 +98259,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "namikawatetsuji.jp", true }, { "naminam.de", true }, { "namlcftc.gov.ae", true }, + { "nammont.com", true }, { "namoro.com.pt", true }, + { "namozagy.com", true }, { "namrs.net", true }, { "namsbaekur.is", true }, { "namskra.is", true }, @@ -85771,37 +98271,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "namu.moe", true }, { "namu.news", true }, { "namu.wiki", true }, - { "namus.gov", true }, { "nan0.cloud", true }, + { "nanafeed.com", true }, { "nanaimo.ca", true }, { "nanaimoneighbourhoods.ca", true }, { "nanaka.love", true }, - { "nanarose.ch", false }, { "nanatomedia.com", true }, + { "nanaya.net", true }, + { "nanboya.com", true }, { "nancecountyne.gov", true }, { "nanch.com", true }, { "nanco.co.jp", true }, { "nanco.jp", true }, { "nancytelford.com", true }, - { "nancytutors.com", true }, { "nancyzone.tk", true }, + { "nandajorna.nl", true }, { "nandakumar.co.in", true }, { "nandakumar.org", true }, { "nandapanithota.xyz", true }, { "nandedam.com", true }, { "nandedbazar.tk", true }, { "nandemo.tk", true }, - { "nanderson.me", true }, { "nandertga.ddns.net", true }, + { "nandi.tech", true }, { "nandito.tk", true }, { "nanfangstone.com", true }, { "nange.cn", true }, { "nangluongxanhbinhphuoc.com", true }, + { "nangwizard.net", true }, { "nanhuimed.com", true }, - { "nanhuistory.com", true }, { "nanhuitop.com", true }, { "naninossoftware.tk", true }, - { "nanji123.com", true }, + { "nanjie.com.tw", true }, { "nanjiyy.com", true }, { "nankiseamansclub.com", true }, { "nanmu.me", true }, @@ -85822,13 +98323,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nanointeractive.cn", true }, { "nanolet.ga", true }, { "nanollet.org", true }, + { "nanomicron.eu", true }, { "nanomusic.co.kr", true }, { "nanopixel.ch", true }, { "nanoport.jp", true }, { "nanoprogress.pl", true }, { "nanosek.pro", true }, { "nanoshop.ml", true }, + { "nanosmat-conference.com", true }, { "nanospheres.tk", true }, + { "nanostetic.com", true }, { "nanotechnologist.com", true }, { "nanotechnologysolutions.com.au", true }, { "nanotechtorsion.com", true }, @@ -85843,10 +98347,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nanwan.info", true }, { "nanxin.xyz", true }, { "nao.sh", true }, + { "naob.no", true }, + { "naocan.cf", true }, + { "naocan.ml", true }, + { "naosproject.eu", false }, + { "naotron.com", true }, + { "napavalleyregister.com", true }, { "napcae.de", true }, { "napervilleweather.com", true }, { "naphex.rocks", true }, { "napi.edu.ee", true }, + { "napidoktor.hu", true }, + { "napifilm.com", true }, { "napikuponok.hu", true }, { "napilol.ml", true }, { "napisdata.us", true }, @@ -85862,14 +98374,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "naplestotalgarage.com", true }, { "napo.tk", true }, { "napoleonoutlawed.tk", true }, + { "napolict.com", true }, { "napolinissanctparts.com", true }, { "napolitoday.it", true }, { "napominanie.ml", true }, { "napoveda.online", true }, + { "nappkassen.se", true }, + { "nappy.co", true }, { "nappylaundry.ga", true }, { "nappywashing.ga", true }, { "naprapativast.se", true }, { "naprawa-bazy-danych.pl", true }, + { "naprodukcji.xyz", true }, { "napych.com", true }, { "naql.om", true }, { "naquebec.tk", true }, @@ -85883,7 +98399,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "naraku.cc", true }, { "naranonsantabarbara.org", true }, { "narardetval.se", true }, - { "narasi.tv", true }, + { "narasi.tv", false }, + { "narayanahealth.org", true }, { "narazaka.net", true }, { "narcissism.tk", true }, { "narco-center.com", true }, @@ -85893,7 +98410,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nardpedro.tk", true }, { "narec.org", true }, { "narek.tk", true }, - { "narela.com.mx", true }, + { "narela.com.mx", false }, { "narenderchopra.com", true }, { "narevapromotions.com", true }, { "narfation.org", true }, @@ -85906,13 +98423,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "naringslivsala.se", true }, { "nariohtools.com", true }, { "naris-grc.com", true }, + { "narkasa.com", true }, { "narko-stop.org", true }, { "narkocenter116.ru", true }, { "narmafzar.tk", true }, { "narmos.ch", true }, { "naro.se", true }, { "narodnaya-medizina.tk", true }, - { "narodne.site", true }, { "narodniki.com", true }, { "narodnyi-potolok.by", true }, { "narodowyspispowszechny.pl", true }, @@ -85924,6 +98441,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "narrenverein-wolkenschieber.de", true }, { "narrow.one", true }, { "narthollis.net", true }, + { "nartkoc.com", true }, + { "nartlift.com", true }, + { "naruchnie-chasi.com", true }, { "narushil-pdd.cf", true }, { "narushil-pdd.ga", true }, { "narushil-pdd.gq", true }, @@ -85937,24 +98457,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "narutouzumaki.tk", true }, { "nary-software.com", true }, { "narzedziownia.top", true }, - { "nas-redes-sociais.com", true }, { "nas.gov.ua", true }, { "nasaacronyms-beta.com", true }, { "nasaacronyms.com", true }, - { "nasalucx.org", true }, + { "nasacxhacxha.org", true }, { "nasarawanewsonline.com", true }, { "nasavelkaceskoslovenskasvadba.eu", true }, { "nasbi.pl", true }, { "nascentmaker.com", true }, { "naschenweng.info", true }, { "naschenweng.me", true }, - { "nascher.org", false }, { "naschtastisch.de", true }, { "nascloud.be", true }, { "nasdarq.com", true }, - { "nasecasomira.cz", true }, + { "nasecasomira.cz", false }, + { "nasedluhy.cz", true }, { "naseehah.ga", true }, { "nasehyar.ir", true }, + { "naseong.kim", true }, { "nash-dom.tk", true }, { "nash-megagid.tk", true }, { "nash-server.tk", true }, @@ -85969,10 +98489,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nashira.cz", true }, { "nashjurist.tk", true }, { "nashkrai.ga", true }, + { "nashsovetik.info", true }, { "nashuaradiology.com", true }, { "nashuarpc.gov", true }, { "nashvillebasements.com", true }, + { "nashvilledowntown.com", true }, + { "nashvillelidsurgery.com", true }, + { "nashvilleplasticsurgery.com", true }, { "nashvillesheriff.gov", true }, + { "nashwaukmn.gov", true }, { "nashzhou.me", true }, { "nasilbirsite.tk", true }, { "nasimblog.tk", true }, @@ -85986,14 +98511,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nasrabady.tk", true }, { "nasrsolar.com", true }, { "nasrullaganjnews.tk", true }, + { "nassaucountyfl.gov", true }, { "nassautrafficny.gov", true }, { "nassconorfolk.com", true }, { "nasserver-test.de", false }, { "nassi.me", true }, + { "nast.ro", true }, { "nast.tk", true }, { "nastationztv.com", true }, { "nastjenka.tk", true }, { "nastunya.tk", true }, + { "nastyapetrovaflorist.ru", true }, { "nastycomics.eu", true }, { "nastysclaw.com", true }, { "nasvyazi.ga", true }, @@ -86008,7 +98536,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nataliaanderson.com.br", true }, { "nataliapearl.com", true }, { "nataliealba.net", true }, - { "nataliedawnhanson.com", true }, { "nataliehershlag.tk", true }, { "natalsentido.com", true }, { "natanaelys.com", true }, @@ -86024,8 +98551,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "natashavaz.nl", true }, { "natashki.tk", true }, { "natasjaversantvoort.nl", true }, - { "natation-nsh.com", false }, - { "natchmatch.com", true }, + { "natbomusic.com", true }, { "nate.sh", true }, { "nateandxtina.wedding", true }, { "natedoss.com", true }, @@ -86035,19 +98561,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "natenom.com", true }, { "natenom.de", true }, { "natenom.name", true }, + { "natenzia.fr", true }, { "nateoster.com", true }, + { "natera.com", true }, { "nates.tk", true }, { "natesigal.com", true }, { "natevolker.com", true }, + { "natflix.ch", true }, { "natgo.xyz", true }, + { "nathalie-guillaumin.coach", true }, { "nathaliedijkxhoorn.com", true }, { "nathaliedijkxhoorn.nl", true }, { "nathaliesadventure.eu", true }, { "nathalieschaos.tk", true }, - { "nathalyb.com", true }, { "nathan.ovh", true }, { "nathan2055.com", true }, - { "nathanaelytj.xyz", true }, + { "nathanaeldawe.com", true }, { "nathanbarry.com", true }, { "nathancrank.com", true }, { "nathancuendet.ch", true }, @@ -86057,7 +98586,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nathanielparker.info", false }, { "nathanielparker.org", false }, { "nathanielsigal.com", true }, - { "nathankonopinski.com", false }, + { "nathankonopinski.com", true }, { "nathanmfarrugia.com", true }, { "nathanphoenix.com", true }, { "nathansmetana.com", true }, @@ -86065,6 +98594,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nathumarket.com.br", true }, { "nation.net.pk", true }, { "national-anime.com", true }, + { "national-shitposting.agency", true }, { "national.co.ua", true }, { "nationalacademic.nl", true }, { "nationalaustriabank.com", true }, @@ -86072,30 +98602,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nationalbankhelp.gov", true }, { "nationalbanknet.gov", true }, { "nationalcashoffer.com", true }, - { "nationalcrimecheck.com.au", true }, { "nationalcybersecuritysociety.org", true }, { "nationalemployertraining.co.uk", true }, + { "nationalexpress.de", true }, + { "nationaleyecenter.id", true }, { "nationalfleetparts.com", true }, + { "nationalgangcenter.gov", true }, { "nationalgridrenewables.com", true }, { "nationalhomeimprovements.co.uk", true }, { "nationalhomequotes.com", true }, + { "nationaljobservice.com", true }, { "nationalmall.gov", true }, - { "nationalmap.gov", true }, + { "nationalmap.gov", false }, + { "nationalmower.com", true }, { "nationalopera.ml", true }, { "nationalpriorities.org", true }, + { "nationalreentryresourcecenter.org", true }, + { "nationalresourcedirectory.gov", true }, + { "nationalservice.gov", true }, + { "nationaltestingnetwork.com", true }, { "nationaltrails.ru", true }, { "nationandfreedom.tk", true }, { "nationslending.com", true }, { "nationsreportcard.gov", true }, + { "nationwide.com", true }, + { "nationwideadvisory.com", true }, { "nationx.tk", true }, + { "nativalab.com", true }, { "native2ascii.net", true }, { "nativeindonesia.com", true }, { "nativemusicrecords.cf", true }, { "nativeonestop.gov", true }, { "nativeproductions.ml", true }, - { "nativereach.tv", true }, { "natives-team.ch", false }, { "nativetitle.org.au", true }, + { "nativitychurchnj.org", true }, { "nativitynj.org", true }, { "nativs.ch", false }, { "natlec.ch", true }, @@ -86107,77 +98648,106 @@ static const nsSTSPreload kSTSPreloadList[] = { { "natronasheriff.gov", true }, { "natropie.pl", true }, { "nats-flop.tk", true }, + { "natty.sh", true }, + { "natualsmoke.com", true }, { "natuerlichabnehmen.ch", true }, { "natum.mx", true }, { "natunion.ga", true }, { "natur-care.com", true }, { "natur-plus.tk", true }, + { "natur-seele.de", true }, { "natur-udvar.hu", true }, + { "natur-und-kultur.de", true }, { "natur.com", true }, { "natura-sense.com", true }, { "natura2000.tk", true }, { "naturabuy.fr", true }, + { "naturaequidog.com", true }, { "naturalbeautyhacks.com", true }, - { "naturalbijou.com", true }, { "naturalbladdercontrol.tk", true }, { "naturalcosmetics.cf", true }, { "naturaldisasters.tk", true }, - { "naturalezafengshui.com", true }, { "naturalflowerpower.com", true }, + { "naturalhealthscam.com", true }, { "naturalkitchen.co.uk", true }, - { "naturalspacesdomes.com", true }, + { "naturallychildled.com", true }, + { "naturallyuncommon.com", true }, + { "naturalmentesinescuela.com", true }, + { "naturalprobiotica.com", true }, + { "naturalproducts.io", true }, + { "naturalreaders.com", true }, + { "naturalresources.wales", true }, { "naturalstyle.tk", true }, { "naturana.news", true }, + { "naturaprint.fr", true }, { "naturart.pt", true }, { "nature-avenue.com", true }, - { "natureandculture.org", true }, + { "natureandculture.org", false }, + { "naturebar.co", true }, { "natureclaim.com", true }, + { "naturedao.hk", true }, { "natureflo.net", true }, { "natureisland.tk", true }, { "naturel.tk", true }, { "naturelife.bg", true }, { "naturelk.org", true }, + { "naturemeadows.in", true }, { "naturesbest.co.uk", true }, + { "natureshealthandbody.com", true }, { "natureshive.org", true }, + { "naturesupply.eu", true }, + { "naturevalley.com", true }, { "naturheilkunde-sabine-klein.de", true }, { "naturheilpraxis-grauer.de", true }, { "naturheilpraxis-oida.de", true }, { "naturheilpraxis-p-grote.de", true }, + { "naturlife.id", true }, { "naturliga.tk", true }, { "naturopath.tk", true }, { "naturopatiasiddharta.com", true }, { "naturparadies-rheinauen.de", true }, + { "naturschutz-holderbank.ch", true }, { "naturvit.at", true }, { "natusvita.com", true }, { "natusvita.com.br", true }, { "natuurinhuisheerenveen.tk", true }, + { "natuurkundegeflipt.nl", true }, { "natuurlijk.tk", true }, { "natuurlijkehaarkleuring.nl", true }, { "natuurophaarmooist.nl", true }, - { "natuwa.com", true }, + { "natviehealthcare.com", true }, { "natwest.com", true }, + { "natwestbusinesshub.com", true }, + { "natwestgroup.com", true }, + { "natwestinternational.com", true }, + { "naucountry.com", true }, { "naude.co", true }, { "naufalpanjwani.com", true }, { "naughty.audio", true }, - { "naumd.com", true }, + { "naughtydog.com", true }, { "nauris.fi", true }, { "nauseainthemorning.ml", true }, { "nausicaahotel.it", true }, { "naut.ca", true }, { "nautiboat.it", true }, { "nauticlink.com", true }, - { "nauticlux.com", true }, { "nautika.tk", true }, + { "nautiljon.com", true }, + { "nautours.de", true }, { "nautsch.de", true }, { "nauz-art.com", true }, { "nav.no", true }, + { "nava.org", true }, { "navadebejar.tk", true }, + { "navajasdesupervivencia.es", true }, + { "navajocountyaz.gov", true }, { "navalarchitect.tk", true }, { "navalkejigo.tk", true }, { "navaneethnagesh.com", true }, { "navarrete.tk", true }, - { "navdeep.ca", true }, + { "navasoft.com.tr", true }, { "naveengranites.com", true }, + { "navegantesdelcosmos.ec", true }, { "navegarea.tk", true }, { "naveka.ga", true }, { "navenlle.com", true }, @@ -86185,24 +98755,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "navidarian.tk", true }, { "navienna.com", true }, { "navient.com", true }, - { "navigationweb.ml", true }, { "navigo-inc.com", true }, { "navigo.cc", true }, { "navigo.global", true }, { "navinka.com", true }, { "navionhcs.com", true }, + { "navirefi.com", true }, { "naviteq.eu", true }, { "navkor.tk", true }, { "navlnachekg.cz", true }, { "navnet.ml", true }, { "navoiyrapmafia.tk", true }, - { "navot.co.il", true }, - { "navroopsahdev.in", true }, + { "navoto.com", true }, { "navstevnik.sk", true }, { "navycs.com", true }, - { "nawabarzoo.in", true }, { "nawaf-blog.com", true }, - { "nawarasa.com", true }, { "nawdar.tk", true }, { "nawir.de", true }, { "nawroth.info", true }, @@ -86210,14 +98777,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nax.io", false }, { "naxcivan.tk", true }, { "naxe.lv", true }, + { "naxsnaps.co.uk", true }, { "nayanaas.com", true }, + { "nayankasturi.eu.org", true }, { "nayapakistan.tk", true }, + { "nayapay.com", true }, + { "nayatel.com", false }, { "nayefalebrahim.com", true }, { "naymai.com", true }, { "nayna.tk", true }, { "nayr.us", true }, { "naz-sciaves.eu", true }, - { "nazad.com.br", true }, { "nazarenohuelva.tk", true }, { "nazarenoviso.tk", true }, { "nazbol.tk", true }, @@ -86254,7 +98824,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nba2k.net", true }, { "nba2k.tw", true }, { "nba2kcn.com", true }, - { "nba2kcontest.com", true }, { "nba2kmods.com", true }, { "nba2kmt.com", true }, { "nba2kmy.team", true }, @@ -86263,8 +98832,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nba2konlinex.com", true }, { "nba2kqq.com", true }, { "nba2kx.com", true }, + { "nbaac.org", true }, { "nbad.al", true }, { "nbadancers.com", true }, + { "nbadao.com", true }, { "nbade.com", true }, { "nbafile.com", true }, { "nbagirls.com", true }, @@ -86272,6 +98843,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nbaimg.com", true }, { "nbalivecn.com", true }, { "nbalivex.com", true }, + { "nbao.ca", true }, + { "nbaot.org", true }, + { "nbapc.org", true }, { "nbapwned.com", true }, { "nbari.com", true }, { "nbask.com", true }, @@ -86280,49 +98854,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nbavc.com", true }, { "nbavg.com", true }, { "nbayouxi.com", true }, + { "nbc.com.tr", true }, + { "nbc26.com", true }, { "nbclinic.co.uk", true }, + { "nbf.ae", true }, + { "nbfl.gov", true }, { "nbgrp.org", true }, { "nbhwj.com", true }, { "nbib.gov", true }, + { "nbios.net", true }, { "nbis.gov", true }, - { "nbl.org.tw", true }, + { "nbl-forklift.com", true }, { "nbm.gov", true }, { "nbotvinnik.com", true }, + { "nbr.uno", true }, { "nbrain.de", true }, - { "nbrii.com", true }, { "nbriresearch.com", true }, { "nbrown.us", true }, + { "nbtc.com", true }, { "nbwp.uk", true }, + { "nbx.com", true }, { "nc-beautypro.fr", true }, { "nc-formation.fr", true }, { "nc-network.io", true }, + { "nc3rs.org.uk", true }, + { "ncadc.org", true }, + { "ncalculators.com", true }, { "ncamarquee.co.uk", true }, - { "ncands.net", true }, { "ncarmine.com", true }, + { "ncascade.com", true }, { "ncastillo.xyz", true }, { "ncat.tokyo", true }, { "ncauditor.gov", true }, + { "ncbham.be", true }, { "ncbon.gov", true }, { "ncc-efm.com", true }, { "ncc-efm.org", true }, { "ncc-qualityandsafety.org", true }, + { "nccauto.gov.in", true }, + { "ncceh.ca", true }, { "nccemail.net", true }, + { "ncchd.go.jp", true }, + { "nccny.com", true }, { "nccoe.org", true }, - { "ncctouring.com", true }, + { "nccpa.net", true }, { "ncdc.pt", true }, { "ncdwlq.space", true }, { "ncea.net.au", true }, + { "nceahelp.com", true }, { "ncegs.sk", true }, { "ncem.gov", true }, + { "ncfireca.gov", true }, + { "ncgaming.gov", true }, + { "nch.com", true }, { "nchaf-dynamic.gov", true }, { "nchaf-static.gov", true }, { "nchaf.gov", true }, { "nchangfong.com", false }, { "nchomeownerassistance.gov", true }, - { "nchponline.org", true }, { "nchrd.org", true }, + { "nci-eg.com", true }, + { "nci.com.es", true }, { "ncic.gg", true }, + { "ncil4rehab.com", true }, + { "ncjdigital.com", true }, { "ncjrs.gov", true }, + { "nck64.uk", true }, { "nckseyecare.com", true }, { "ncksrv.com", true }, { "ncksrv.email", true }, @@ -86335,12 +98932,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ncli-design.com", true }, { "ncloud.freeddns.org", true }, { "ncloud.nl", true }, + { "ncmc.me", true }, { "ncmedicaidplan.gov", true }, { "ncmedicaidplans.gov", true }, + { "ncncs.com", true }, { "ncommenuptial.tk", true }, + { "ncosc.gov", true }, { "ncpc.gov", true }, { "ncpimd001.spdns.de", true }, { "ncpublichealth.info", true }, + { "ncpw.gov", true }, + { "ncr.pub", true }, + { "ncrjobs.in", true }, + { "ncrpay.com", true }, { "ncrypt.ai", true }, { "ncrypt.at", true }, { "ncs-cleaning.dk", true }, @@ -86348,21 +98952,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ncsbe-apps.gov", true }, { "ncsc.gov.uk", true }, { "ncsccs.com", true }, + { "ncshp.gov", true }, { "ncsparta.gov", true }, + { "ncswa-nm.org", true }, { "ncswboard.gov", true }, { "nctu.moe", true }, { "nctx.co.uk", true }, { "ncua.gov", true }, { "ncuc.gov", true }, { "ndaal.eu", true }, + { "ndaccount.com", true }, { "ndarville.com", true }, - { "ndbt.com", true }, - { "ndcancercoalition.com", true }, - { "ndcancercoalition.org", true }, { "ndcpolipak.com", true }, + { "ndd.govt.nz", true }, + { "ndeb-bned.ca", true }, { "ndev.tk", true }, + { "ndhhs.gov", true }, { "ndhlink.com", true }, - { "ndibba.com", true }, + { "ndigen.com", true }, + { "ndisreview.gov.au", true }, { "ndlegis.gov", true }, { "ndlegistest.gov", true }, { "ndmath.club", true }, @@ -86374,33 +98982,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ndplumbingboard.gov", true }, { "ndq.be", true }, { "ndrew.me", true }, + { "nds-helicopter.de", true }, { "nds-online.ru", true }, { "ndscreening.com", true }, { "ndtblog.com", true }, { "ndum.ch", true }, - { "nduna.dk", true }, { "ndvlaw.com", true }, { "ndvr.com", true }, { "ndx.ee", true }, - { "ndxinfo.eti.br", true }, { "ndy.sex", true }, { "ne-games.com", true }, { "ne-on.org", true }, { "ne.ax", true }, - { "ne.jo", true }, { "nea-security.com", true }, { "nea.gov", true }, { "nealvorusphd.com", true }, { "neanderthalia.tk", true }, { "neapi.com", true }, { "near.sh", true }, - { "near.social", true }, { "nearbi.com.mx", true }, { "nearby.in.th", true }, - { "nearbyprinter.com", true }, { "nearestbusiness.com", true }, { "nearlist.com", true }, + { "nearnorthcustoms.biz", true }, + { "nearnorthcustoms.co", true }, + { "nearnorthcustoms.com", true }, + { "nearnorthcustomsus.com", true }, { "nearnorthmassage.com", true }, + { "nearnorthus.com", true }, { "neartothesky.com", true }, { "neasahourigan.com", false }, { "neat-patch.de", true }, @@ -86410,29 +99019,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neatnestsorganizing.com", true }, { "neatous.cz", true }, { "neatous.net", true }, + { "neatsvor.at", true }, + { "neatsvor.lt", true }, { "neave.tv", true }, + { "neawth.com", true }, { "neaz.tk", true }, { "neb.li", true }, { "neba.io", true }, { "nebeauty.it", true }, { "nebelhauch.de", true }, { "nebelheim.de", true }, + { "nebenan.de", true }, { "nebenbeiblog.ch", true }, { "nebix.tk", true }, { "nebogame.com", true }, { "nebohost.tk", true }, { "neboley.cf", true }, { "nebra.io", true }, - { "nebracy.com", true }, + { "nebraskajudicial.gov", true }, + { "nebraskaresearch2.gov", true }, + { "nebraskawheat.gov", true }, { "nebucadnezzer.tk", true }, { "nebul.at", false }, { "nebulae.co", true }, { "nebulise.com", true }, { "nec-x.com", true }, { "necd.me", true }, + { "necio.ca", true }, { "neckbeard.xyz", true }, { "necord.com", true }, - { "necormansir.com", true }, { "necretro.org", true }, { "necromantia.tk", true }, { "necronaut.tk", true }, @@ -86442,20 +99057,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nectere.ca", true }, { "nectir-staging.com", true }, { "nectir.co", true }, - { "necycvet.ru", true }, + { "necycvet.ru", false }, { "nedapflux.com", true }, { "nedcdata.org", true }, { "nedcv-preview.nl", true }, { "nedcv.nl", true }, { "nedela.tk", true }, + { "nedemek.com.tr", true }, { "nederbetuwe.nl", false }, + { "nederlandmobiel.nl", true }, { "nederlands-vastgoedfonds.nl", true }, + { "nederlandse-modelspoor-database.nl", true }, + { "nederlandwereldwijd.nl", true }, { "nedermisp.nl", true }, { "nedhome.ml", true }, { "nedim-accueil.fr", true }, { "nedimon.gq", true }, { "nedir.help", true }, { "nednex.com", true }, + { "nedraho.cz", true }, { "nedviga.gq", true }, { "nedviga.tk", true }, { "nedvizhimost.tk", true }, @@ -86466,29 +99086,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "needemand.com", true }, { "needfire.ga", true }, { "needflare.com", true }, + { "needhaminsurance.co.uk", true }, { "needing.cf", true }, { "needle-demo.azurewebsites.net", true }, { "needle.net.nz", true }, { "needle.nz", true }, + { "needmytranscript.com", true }, { "needrom.com", true }, { "needsth.top", true }, - { "needsupport.us", true }, { "neeerd.org", true }, { "neel.ch", true }, - { "neemdetijd.nl", false }, { "neemo.nz", true }, { "neenahwi.gov", true }, + { "neenan.com", true }, { "neero.fr", true }, { "nees.ga", true }, + { "neesoft.com", true }, { "neesousunebonneetoile.ca", true }, { "neet-investor.biz", true }, { "neetflix.net", true }, { "neetze-ferienwohnung.de", true }, { "neev.tech", false }, - { "nefald.fr", true }, - { "neferlim.com", true }, - { "nefertitis.cz", true }, + { "nefald.fr", false }, + { "nefertitis.cz", false }, { "neff-pressen.de", true }, + { "nefit-bosch.nl", true }, + { "nefit.nl", true }, { "nefro-cme.de", true }, { "nefthy.de", true }, { "neftis.es", true }, @@ -86501,64 +99124,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "negativeentropy.org", true }, { "negativex.gq", true }, { "negfi.com", true }, + { "neglected.space", true }, + { "neglecteddiseases.gov", true }, { "negocieipanema.com.br", true }, { "negociemos.com.co", true }, { "negocios-imatore.com", true }, { "negociosparaoptimistas.com", true }, { "negociosurbanos.net", true }, { "negoya-shokai.info", true }, + { "negozimoda.it", true }, { "negoziointimo.com", true }, { "negr.gay", true }, { "negr.link", true }, { "negr.tv", true }, { "negrete.tk", true }, { "negril.com", false }, - { "neguzelsozler.com", true }, + { "neh.gov", true }, { "nehalem.gov", true }, { "neheim-huesten.de", true }, + { "nehmer.net", true }, { "nehnutelnosti.io", true }, { "nehoupat.cz", true }, { "nehrp.gov", true }, { "nehta.gov.au", true }, + { "nei.org", true }, { "neide.ga", true }, { "neighbor.co.il", true }, { "neighborhood-threat.tk", true }, - { "neighborhoodelectricwa.com", true }, { "neighborshop.de", true }, + { "neighborsunitedwilmington.org", true }, { "neil-barrett.com", true }, { "neil-barrett.uk", true }, { "neila.tk", true }, { "neildaniels.com", true }, { "neilfarrington.com", true }, { "neilgaimanphilippines.tk", true }, - { "neillans.com", true }, { "neilpatel.com", true }, + { "neilrooney.com", true }, { "neilwynne.com", true }, { "neimadtelliam.fr", true }, { "neio.uk", true }, - { "neither-side-news.com", true }, - { "nej.dk", true }, + { "neishe.net", true }, + { "neiu.edu", true }, + { "nej.dk", false }, { "nejenpneu.cz", true }, { "nejlevnejsi-parapety.cz", true }, { "nejmaklerka.cz", true }, { "nejrecept.cz", true }, { "nejsvetla.cz", true }, + { "nekenieh.net", true }, + { "nekkit.xyz", true }, { "nekljudov.ga", true }, { "neko-city.tk", true }, { "neko-network.tk", true }, { "neko-nyan-nuko.com", true }, { "neko-nyan.org", true }, - { "nekoart.net", true }, { "nekochan.blog", true }, + { "nekodex.net", true }, { "nekohana-inuhana.com", true }, { "nekoku.io", true }, - { "nekolove.jp", true }, { "nekomanten.de", true }, { "nekomata.tk", true }, { "nekomimi.pl", true }, { "nekomimirouter.com", true }, { "nekomimix.net", true }, + { "nekomoe.moe", true }, { "nekondiciya.cf", true }, + { "nekonet.us", true }, { "nekosc.com", true }, { "nekox.ml", true }, { "nekrasowsky.ml", true }, @@ -86567,11 +99199,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nekrylov.org.ru", false }, { "nekrylov.spb.ru", false }, { "nekusoul.de", true }, + { "nelebaehre.de", true }, { "nelefon.com", true }, { "nelegal-edition.ml", true }, { "nelegal-edition.tk", true }, { "nelflex.com.br", true }, { "nelhage.com", true }, + { "nelili.com", true }, + { "nelipak.com", false }, { "neljaenergia.ee", true }, { "nella-project.org", true }, { "nellacms.org", true }, @@ -86579,13 +99214,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nellen.it", true }, { "nellislife.marketing", true }, { "nellydallois.fr", true }, + { "neln.jp", true }, { "neln.net", true }, + { "nelnet.com", true }, + { "nelnet.net", true }, { "nelnetbank.com", true }, { "nelosculpteur.fr", true }, - { "nelson-marine.com", true }, + { "nelson-marine.com", false }, + { "nelsoncountyky.gov", true }, { "nelsonrecruitmentservices.co.uk", true }, { "nelsonrodrigues.tk", true }, + { "nelsontwpoh.gov", true }, + { "nelsonworldwide.com", true }, + { "nelswong.com", true }, { "nelty.be", true }, + { "nely.rocks", true }, + { "nema.gov.au", true }, { "nemagiya.tk", true }, { "nemahacountyne.gov", true }, { "nemberone.com", true }, @@ -86613,17 +99257,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nemunai.re", true }, { "nemyriv.tk", true }, { "nemzetizaszlok.hu", true }, + { "nen-ga.jp", true }, { "nenapu.tk", true }, { "nenco.nl", true }, { "nenderus.su", true }, { "neneko.moe", true }, - { "nengzhen.com.cn", false }, { "nenkin-kikin.jp", true }, { "neno.io", true }, { "neo-novarion.com", true }, + { "neo-wave.ro", true }, { "neo1.com", true }, { "neo2k.dk", false }, { "neo2shyalien.eu", false }, + { "neo4j.com", true }, { "neobits.nl", true }, { "neoblog.tk", true }, { "neobridge.eu", true }, @@ -86633,6 +99279,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neocharge.net", true }, { "neocities.org", true }, { "neoclan.tk", true }, + { "neocrypto.io", true }, { "neocyd.com", true }, { "neodaedalus.com.au", true }, { "neodigital.bg", true }, @@ -86640,30 +99287,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neodruid.tk", true }, { "neoedresources.org", true }, { "neoeliteconsulting.com", true }, + { "neogenomics.com", true }, { "neograftaustintx.com", true }, { "neohu.com", true }, + { "neojo.org", true }, { "neoko.fr", true }, { "neokobe.city", true }, + { "neokonmarketing.de", true }, { "neolaudia.es", true }, + { "neolink.com.br", true }, + { "neolove.ru", true }, { "neom-specificenergy.com", true }, { "neom.directory", true }, - { "neometals.com.au", true }, { "neomodern.de", true }, { "neonataleducationalresources.org", true }, { "neonatalgoldenhours.org", true }, + { "neonbutik.com.tr", true }, { "neoneuland.de", true }, { "neonfestival.net", true }, { "neonigma.tk", true }, { "neonknight.ch", true }, { "neons.org", true }, + { "neontemple.net", true }, { "neoone.art", true }, { "neophilus.net", true }, + { "neopolis.gr", true }, + { "neopoly.com", true }, + { "neopoly.de", true }, { "neoreflex.nz", true }, + { "neorsd.org", true }, { "neos.co.jp", true }, { "neosdesignstudio.co.uk", true }, { "neosecurityteam.tk", true }, { "neoseo.com.ua", true }, - { "neosey.com", false }, + { "neoshomo.gov", true }, + { "neosoft.hu", true }, + { "neosolution.ca", true }, { "neossa.com", true }, { "neostralis.com", true }, { "neostralis.de", true }, @@ -86672,26 +99331,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "neosys.eu", true }, { "neot-shacked.com", true }, { "neotech-solutions.com", true }, - { "neotiv-care.com", true }, { "neotiv.com", true }, { "neotracker.io", false }, { "neovapo.com", true }, + { "neoverify.com", true }, { "neoverso.tk", true }, { "neovote.com", true }, { "neowa.tk", true }, { "neowin.net", true }, - { "neowlan.net", true }, { "neoxcrf.com", true }, { "neoz.com.br", true }, + { "neozeon.io", true }, { "nepal-evolution.org", false }, { "nepal.ga", true }, { "nepalboxoffice.tk", true }, { "nepalese.tk", true }, { "nepali-fonts.tk", true }, { "nepalsnews.tk", true }, - { "nepapropertygroup.com", true }, { "nepartypas.tk", true }, - { "nepdtp.in", true }, { "nepezzano13.com", true }, { "nephelae.eu", true }, { "nephelion.org", true }, @@ -86718,6 +99375,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nerd.gallery", true }, { "nerdalert.dk", true }, { "nerdaristocracy.com", true }, + { "nerdblog.eu", true }, { "nerdbox.cc", true }, { "nerdca.st", true }, { "nerdgebastel.de", true }, @@ -86725,10 +99383,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nerdherd.fun", true }, { "nerdherd.ovh", true }, { "nerdhouse.io", true }, + { "nerdies24.de", false }, { "nerdin.space", true }, { "nerdinator.ddns.net", true }, { "nerdjokes.de", true }, { "nerdmind.de", true }, + { "nerdmovieproductions.it", true }, { "nerdnet.goip.de", true }, { "nerdoftheherd.com", true }, { "nerdoutstudios.tv", true }, @@ -86739,35 +99399,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nerds.company", false }, { "nerdsin.space", true }, { "nerdsonline.tk", true }, - { "nerdsonsite.com", true }, { "nerdsuits.tk", true }, { "nerdsweide.nl", true }, { "nerdwallet.com", true }, { "nerdydev.net", true }, { "nerdyfam.tech", true }, + { "nerdyspace.net", true }, { "nerfcity.tk", true }, { "nerfroute.com", true }, { "nerion.tk", true }, { "neriumrx.com", true }, + { "nerja.es", true }, + { "nerloee.dk", true }, + { "neroli.bg", true }, { "neroninvestment.org", true }, { "neropiceno.tk", true }, { "neroshana.com", true }, { "nerot.eu", true }, + { "neroteknik.com.tr", true }, + { "nerotv.live", true }, { "nerpa-club.ru", true }, { "nerss.ca", true }, { "nertus.ua", true }, { "nerull7.info", true }, { "nerv.com.au", true }, - { "nerv.org.cn", true }, { "nerven.se", true }, { "nervi.ga", true }, { "nesabamedia.com", true }, { "nesbase.com", true }, + { "neseari.com", true }, + { "nesfb.com", true }, { "nesheims.com", true }, { "nesheimswaterrestoration.com", true }, { "neshkorowi.gov", true }, { "neshtata.bg", true }, { "neskins.com", true }, + { "nesoddkatten.no", true }, { "nesolabs.com", true }, { "nesolabs.de", true }, { "nespim.tk", true }, @@ -86775,19 +99442,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nesscitycatholic.org", true }, { "nesstormented.tk", true }, { "nestas.eu", true }, + { "nestbau.com", true }, { "nesterov.pw", true }, { "nestforms.com", true }, + { "nestlanddesign.com", true }, + { "nestlein.de", true }, { "nestone.ru", true }, - { "nestor.nu", true }, { "nestra.tk", true }, { "nestreeo.com", true }, + { "neswblogs.com", true }, { "neswec.org.uk", true }, + { "net-abuse.email", true }, { "net-combo-ja.com", true }, { "net-file.tk", true }, { "net-news.gq", true }, { "net-provider.cloud", true }, { "net-safe.info", true }, { "net-script.tk", true }, + { "net-service.cz", true }, { "net.nl.eu.org", true }, { "net2ftp.com", true }, { "net4you.net", true }, @@ -86809,13 +99481,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netbrief.ml", true }, { "netbulls.io", true }, { "netbuzz.ru", true }, + { "netcake.in", true }, { "netcd.tk", true }, { "netcenteret.tk", true }, { "netchameleon.com", true }, + { "netchost.com", true }, + { "netcitadel.com", true }, + { "netcitycheb.ru", true }, + { "netco-group.de", true }, { "netco-privacy.de", true }, - { "netcom-cs.com", true }, - { "netconnect.at", true }, + { "netco-solution.de", true }, + { "netco-system.de", true }, { "netcoolusers.org", true }, + { "netcorecloud.com", false }, + { "netcoresmartech.com", true }, { "netcorp.net.au", true }, { "netcost-security.fr", false }, { "netcrew.de", true }, @@ -86829,22 +99508,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netdiode.org", true }, { "netdir.tk", true }, { "netdisk.io", true }, + { "netdnstrace1.com", true }, { "netdox.asia", true }, + { "netdox.de", true }, { "netducks.com", true }, { "netducks.space", true }, { "netdude.tk", true }, + { "netechno.com", true }, { "netelite.tk", true }, { "netera.se", true }, { "neteraser.de", true }, - { "netexem.com", true }, { "netexpatcommunity.com", false }, { "neteye.ru", true }, { "netfabb.com", true }, { "netface.com.br", true }, - { "netfeeds.eu", true }, { "netferie.de", true }, { "netferie.dk", true }, { "netferie.no", true }, + { "netfiles.de", true }, { "netfirmtextile.com", true }, { "netflixlife.com", true }, { "netflowanalysissolution.com", true }, @@ -86861,11 +99542,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netfolio.pt", true }, { "netforall.tk", true }, { "netfoundry.io", true }, - { "netframe.net", true }, { "netfreedom.tk", true }, + { "netfront.com.au", true }, { "netfs.pl", true }, { "netfuture.ch", true }, { "netgaming.de", true }, + { "netgenetiqs.de", true }, + { "netgroup.dk", true }, { "netguide.co.nz", true }, { "nethack.ninja", true }, { "nethackwiki.com", true }, @@ -86875,17 +99558,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nethealth.cf", true }, { "nethealth.ga", true }, { "nethealth.tk", true }, + { "netherite.gg", true }, { "netherlandstypography.nl", true }, + { "netherlandsworldwide.nl", true }, { "nethernet.nl.eu.org", false }, - { "nethlon.net", true }, { "nethorizon.cn", true }, + { "nethorizon.pl", true }, { "nethound.ga", true }, + { "nethouse.se", true }, { "nethruster.com", false }, { "nethui.nz", true }, { "nethunter.top", true }, { "netica.fr", false }, + { "netig.net", false }, { "netim.pl", true }, + { "netipbox.com", true }, { "netjobz.tk", true }, + { "netkappa.gr", true }, { "netkigestioncomercial.com", true }, { "netkimonos.com.br", true }, { "netkolik.org", true }, @@ -86901,27 +99590,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netmagicas.com.br", true }, { "netmajstor.eu", true }, { "netmania.tk", true }, - { "netmaster.tk", true }, { "netmedia.tk", true }, { "netmeister.org", true }, { "netmouse.tk", true }, + { "netmt.de", true }, { "netnea.com", true }, - { "netnik.de", false }, - { "netnodes.net", true }, + { "netnl.eu", true }, { "netoborona.tk", true }, { "netobur.net", true }, { "netolink.co.il", true }, { "netolink.com", true }, { "netor.ga", true }, + { "netpatient.dk", true }, { "netpenge.tk", true }, - { "netpraetor.com", true }, { "netpreneur.co.za", true }, + { "netprepare.com", true }, { "netprofile.com.au", false }, { "netrabota.tk", true }, { "netracks.ga", true }, { "netradyne.com", true }, { "netraising.com", true }, { "netrecruituk.co.uk", true }, + { "netreputation.com", true }, + { "netresec.com", true }, { "netreviews.tk", true }, { "netrewrite.com", true }, { "netrider.net.au", true }, @@ -86931,55 +99622,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "netrogue.ninja", true }, { "netronix.be", true }, { "netrunner.xyz", true }, - { "netrustcontractor.com", false }, { "nets.com.sg", true }, { "netschool.tk", true }, { "netsearch.ga", true }, { "netsec.cloud", true }, { "netsecma.com", true }, + { "netshopgarden.com.br", true }, { "netsite.dk", true }, { "netslum.tk", true }, { "netsoftit.com", true }, { "netsoins.org", true }, - { "netsparker.com.tr", true }, + { "netsparker.com.tr", false }, { "netspeedia.net", true }, { "netsphere.cloud", true }, { "netsphere.cz", true }, - { "netstationen.me", true }, { "netstjernen.dk", true }, { "netsyms.com", true }, { "netsys.com.tr", true }, { "netsystems.pro", true }, { "nettamente.com", true }, - { "nettarifler.com", true }, { "nette.org", true }, { "nettegeschenke.de", true }, + { "netter.co.id", true }, { "nettgiro.no", true }, - { "nettia.fi", true }, + { "nettia.fi", false }, { "nettiger.tk", true }, + { "nettikasino.top", true }, { "nettikasino247.com", true }, - { "nettilamppu.fi", true }, { "nettiruletti.ga", true }, { "nettiruletti.tk", true }, { "nettletonms.gov", true }, - { "netto-service.ch", false }, { "nettools.link", true }, + { "nettoptangida.com", true }, + { "nettoyage-apres-deces-crime.fr", true }, { "nettoyage.email", true }, + { "nettruepro.com", true }, + { "nettunoguide.dk", true }, + { "nettx.co.uk", true }, { "nettype.ca", true }, { "netube.org", true }, { "netunia.org", true }, { "netvizura.co.uk", true }, + { "netvlies.nl", true }, { "netvpn.ml", true }, { "netvpn.net", true }, { "netwaf.com", true }, { "netwarc.eu", true }, { "netwarc.nl", true }, + { "netwatch.me", true }, + { "netwave.pl", true }, { "netwerkgeneeskunde.nl", true }, - { "netwerkmanager.nl", false }, + { "netwerkmediawijsheid.nl", true }, { "netwidow.com", true }, + { "netwire-solutions.com", true }, { "netwire.tk", true }, { "netwiseprofits.com", true }, - { "networds.ro", false }, { "networg.cz", true }, { "networg.pl", true }, { "network-au-qa-api.azurewebsites.net", true }, @@ -86993,18 +99690,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "networkdiode.eu", true }, { "networkdiode.net", true }, { "networkdiode.org", true }, - { "networker.dk", true }, { "networking-groups.co.uk", true }, { "networking4all.com", true }, { "networkingnexus.net", true }, { "networkingwithfish.com", true }, { "networkinternetmonitor.com", true }, + { "networklessons.com", true }, { "networkmas.com", true }, { "networkmidlands.co.uk", true }, { "networkmidlands.uk", true }, { "networkmon.net", true }, { "networkperformancemonitoring.net", true }, - { "networkplus.co.uk", true }, { "networkposting.com", true }, { "networksec.info", true }, { "networksecuritysolutions.info", true }, @@ -87016,70 +99712,78 @@ static const nsSTSPreload kSTSPreloadList[] = { { "networktrafficanalyzer.net", true }, { "networktrafficmonitoring.net", true }, { "networkuser.de", true }, + { "networld.to", true }, { "networth.at", true }, { "networthpal.com", true }, { "networx-online.de", true }, + { "netz-noe.at", true }, { "netz0.com", true }, { "netzabfragen.de", true }, + { "netzagentur.at", true }, { "netzen.tk", true }, { "netzer.ml", true }, { "netzfabrik.com", true }, { "netzfrauen.org", true }, { "netzklad.de", true }, { "netzona.org", true }, + { "netzpolitik.org", true }, { "netzspielplatz.de", false }, { "netzsv.website", true }, { "netztest.at", true }, { "netzvieh.de", true }, + { "netzwerk-kvp.de", true }, { "netzwerk-lq.com", true }, { "netzwerk-sozialliberal.de", true }, { "netzwerkwerk.de", true }, { "netzwolf.info", true }, { "neuber-it.de", true }, { "neuber.uno", true }, + { "neubr.de", true }, + { "neuca24.pl", true }, { "neuch.info", false }, { "neue-energien.tk", true }, { "neuelandschaft-welzow.de", true }, { "neuf-chateaux.com", true }, { "neuhaus-city.de", true }, + { "neukoppel.de", true }, { "neuland.technology", true }, { "neumanncontractors.com.au", true }, { "neumanndredging.com.au", true }, { "neumannindustrialcoatings.com.au", true }, { "neumarkcb.com", true }, + { "neumaticar.cl", true }, + { "neumond.de", true }, { "neurabyte.com", true }, { "neuraclix.com", true }, + { "neuralink.com", true }, + { "neuralkids.org", true }, { "neurexcellence.com", true }, { "neurobiology.com", true }, - { "neurochip.com", true }, + { "neurochip.co.uk", true }, { "neurocny.cloud", true }, { "neurococi.eu", true }, + { "neurococi.org", true }, { "neurococi.ro", true }, + { "neuroethics.com", true }, { "neurogroove.info", true }, - { "neurolab.no", false }, - { "neurolicht.de", true }, + { "neurohouse.com.br", true }, + { "neurojournal.ru", true }, { "neurologia.tk", true }, - { "neurologie-leutkirch.de", true }, { "neurologie.tk", true }, { "neurologysantamonica.com", true }, { "neurontinprice.ga", true }, { "neuronus.com.br", true }, + { "neuropatia-periferica.com", false }, { "neuropharmacology.com", true }, { "neurophysiotherapy.ga", true }, - { "neuropsychologisthouston.com", true }, { "neurosurgeryinmexico.com", true }, { "neurotext.net", true }, { "neuroticosanonimos.tk", true }, { "neuroticpoets.com", true }, { "neurotransmitter.net", true }, { "neurozentrum-zentralschweiz.ch", true }, - { "neustate.com", true }, { "neuteleers.tk", true }, - { "neutralox.com", false }, - { "neutrino.eu.org", true }, { "neutron.ch", true }, - { "neuwal.com", true }, - { "neuzamariano.com", true }, { "nev.si", true }, { "neva-star.ml", true }, { "neva.li", true }, @@ -87087,9 +99791,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nevadafiber.com", true }, { "nevadafiber.net", true }, { "nevadamentalhealth.com", true }, - { "nevalogic.com", true }, { "nevam.cf", true }, - { "neve.in.ua", true }, { "never-afk.de", false }, { "never-mind.tk", true }, { "never-more.tk", true }, @@ -87101,27 +99803,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nevergonnatouchit.tk", true }, { "nevergreen.io", true }, { "neverhood-tv.tk", true }, - { "nevermore.fi", true }, + { "neverland.link", true }, { "neverness.tk", true }, + { "nevers.fr", true }, + { "neversayretired.in", true }, { "neverwasinparis.com", true }, - { "nevida.ir", true }, + { "nevi.nl", true }, { "nevim-co-varit.cz", true }, { "nevivur.net", true }, - { "nevkurse.tk", true }, { "nevntech.com", true }, { "nevocloud.com", true }, { "nevolution.me", true }, { "nevoxo.com", false }, { "nevrodiversitet.no", true }, { "nevski.eu", true }, - { "nevskoezoloto.ru", true }, { "nevychova.cz", true }, { "new", true }, + { "new-1xbet.com", true }, { "new-black-order.com", true }, { "new-boiler-prices.co.uk", true }, { "new-jersey-online-casinos.com", true }, { "new-medic.com", true }, { "new-mexico-sexcams.com", true }, + { "new-pornvideos.com", true }, { "new-process.ch", true }, { "new-process.com", true }, { "new-process.de", true }, @@ -87130,27 +99834,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "new-standart.tk", true }, { "new-tuning.tk", true }, { "new-vip.com", true }, + { "new-vip1.com", true }, + { "new-vvip.com", true }, { "new-way.ml", true }, { "new-web-studio.com", true }, { "new-zone.tk", true }, { "new10.com", true }, { "newage.bg", true }, { "newagehoops.com", true }, + { "newalbanyohio.gov", true }, { "newamericanagent.com", true }, { "newamericanfunding.com", true }, - { "newamericanpartner.com", true }, + { "newannual.com", true }, { "newantiagingcreams.com", true }, - { "newapparatus.com", true }, + { "newapparatus.com", false }, { "newarkohio.gov", true }, + { "newarkwi.gov", true }, { "newasa.ga", true }, { "newasianbistro.com", true }, + { "newaygo.gov", true }, { "newaygocountymi.gov", true }, { "newbabylon.tk", true }, { "newbackup.ml", true }, { "newbasemedia.us", true }, - { "newbeginningsresale.com", true }, { "newberlinwi.gov", true }, + { "newberrycounty.gov", true }, { "newberryfl.gov", true }, + { "newbieboss.com", true }, { "newbies.tk", true }, { "newbietech.cn", false }, { "newblogr.com", true }, @@ -87160,6 +99870,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newbraunfels.gov", true }, { "newbrest.tk", true }, { "newbrightonresidents.org.nz", true }, + { "newbronze.com.br", true }, { "newbrunswick.today", true }, { "newbrunswickonlinedivorce.com", true }, { "newbrunswicktoday.com", true }, @@ -87172,18 +99883,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newburyparkexteriorlighting.com", true }, { "newburyparklandscapelighting.com", true }, { "newburyparkoutdoorlighting.com", true }, + { "newburyportma.gov", true }, { "newcab.de", false }, { "newcapitaldev.com", true }, { "newcarlisleohio.gov", true }, { "newcars.tk", true }, + { "newcasablanca.com.br", true }, + { "newcasinos-au.com", true }, + { "newcasinos-ca.com", true }, + { "newcastlemoneyman.com", true }, + { "newcastlemuseum.com.au", true }, { "newcastleok.gov", true }, + { "newcc.gov", true }, { "newchance.store", true }, + { "newchapter.com", true }, { "newcharmed.tk", true }, + { "newchester.gov", true }, { "newchoicesspb.ru", true }, - { "newcinema.ru", true }, { "newcityinfo.ch", false }, { "newcityinfo.info", true }, { "newcitystudio.ch", false }, + { "newcoly.com", true }, { "newcombny.gov", true }, { "newconcept.tk", true }, { "newcontext.com", true }, @@ -87191,7 +99911,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newcreationperso.com.br", true }, { "newcurve.tk", true }, { "newday.host", true }, - { "newdayproperties.com", true }, + { "newdecortrends.com", true }, { "newdenversurvivors.tk", true }, { "newdietandexercises.tk", true }, { "newdimensioninterlock.com", false }, @@ -87202,17 +99922,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newendsoft.com", false }, { "newengineer.com", true }, { "newenglandradioforum.tk", true }, + { "newenglandtek.com", true }, { "newenglandworkinjury.com", true }, { "newfacialbeautycream.com", true }, + { "newfairfieldct.gov", true }, { "newfangledscoop.com", true }, { "newfiepedia.ca", true }, { "newflavor.design", true }, { "newfld.com", true }, { "newflora.ru", true }, - { "newfordmustang.com.au", true }, { "newforex.ml", true }, { "newforms.nl", true }, { "newfoundland-labradorflora.ca", true }, + { "newfoundlandlabrador.com", true }, { "newgarden.tk", true }, { "newgardenfarms.org", true }, { "newglarusvillagewi.gov", true }, @@ -87220,45 +99942,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newgrowbook.com", true }, { "newguidance.ch", false }, { "newhamyoungbloods.co.uk", true }, + { "newhavenshiami.gov", true }, { "newholland.tk", true }, { "newhomedesign.tk", true }, - { "newhope.me", true }, { "newhopeplacement.com", true }, { "newillusion.tk", true }, { "newind.info", true }, { "newinf.at", true }, + { "newipswichnh.gov", true }, { "newjerseyvideography.com", true }, - { "newjianzhi.com", false }, { "newkaliningrad.ru", true }, - { "newknd.com", true }, + { "newlands-fasteners.com.au", true }, { "newlegalsteroid.com", true }, { "newlifefund.org", true }, - { "newlifehempoil.com", true }, { "newlight.net.br", true }, + { "newlondonhospital.org", true }, { "newlovers.ga", true }, { "newlovers.gq", true }, { "newlynamed.com", true }, { "newlytricks.ml", true }, + { "newmadridcountymo.gov", true }, { "newman.ga", true }, { "newmansown.co.uk", true }, { "newmarketbouncycastlehire.co.uk", true }, { "newmatworld.com", true }, { "newmed.com.br", true }, + { "newmedia.gotdns.com", true }, { "newmediaone.net", true }, { "newmeproducts.com", true }, + { "newmex.com.br", true }, { "newmilfordct.gov", true }, + { "newmilfordnj.gov", true }, { "newmusic.org", true }, { "newmusicjackson.org", true }, { "newmuslims.tk", true }, { "newmuz.tk", true }, + { "newnorthfuels.ca", true }, + { "newnorthfuels.com", true }, { "newodesign.com", true }, + { "newoho.com", true }, + { "newoldboughtsold.com", true }, + { "newoldstock.uk", true }, { "newonlineroad.com", true }, { "neworiflame.tk", true }, + { "newpad.de", true }, { "newparadigmventures.net", false }, { "newparrot.tk", true }, { "newphysics.fi", true }, - { "newpoke.net", false }, + { "newplxx.gotdns.com", true }, + { "newplxx.online", true }, + { "newpointeg.com", true }, { "newportbus.co.uk", true }, + { "newporthomehealth.com", true }, + { "newportit.com", true }, + { "newportri.gov", true }, { "newposts.ru", true }, { "newpraguemn.gov", true }, { "newpress24.tk", true }, @@ -87275,6 +100012,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "news-sy.cf", true }, { "news-technology.ml", true }, { "news-zp.tk", true }, + { "news.bg", true }, { "news123.ga", true }, { "news12elite.tk", true }, { "news17.tk", true }, @@ -87283,10 +100021,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "news47ell.com", false }, { "news53today.tk", true }, { "news54.tk", true }, + { "news5cleveland.com", true }, { "news60.tk", true }, { "news89.cf", true }, { "news89.ga", true }, { "news89.gq", true }, + { "newsadvance.com", true }, { "newsall.gr", true }, { "newsarmenia.tk", true }, { "newsaroma.com", true }, @@ -87295,44 +100035,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newsauto.tk", true }, { "newsbali.tk", true }, { "newsbay.gr", true }, + { "newsbes.org", true }, { "newsbomba.ml", true }, { "newsbusiness.cf", true }, - { "newsbytesapp.com", true }, { "newscenter.gr", true }, { "newscheck.tk", true }, { "newschool.ie", true }, + { "newsclue.org", true }, + { "newscreak.com", true }, { "newscultural.tk", true }, + { "newsdesk.social", true }, { "newsdiff.eu", true }, { "newsdiff.nl", true }, { "newsdiffs.eu", true }, + { "newsdiva.org", true }, + { "newseon.org", true }, { "newserfanekeihani.tk", true }, { "newserumforskin.com", true }, + { "newseue.com", true }, + { "newsfiber.org", true }, + { "newsfinale.com", true }, { "newsforum.ml", true }, { "newsforyou.cf", true }, + { "newsgenix.org", true }, { "newsgroups.io", true }, + { "newsguyz.com", true }, { "newshell.it", true }, { "newshome.tk", true }, { "newshorehamri.gov", true }, { "newshour.media", true }, { "newsig.com", true }, { "newsignature.com", true }, + { "newsinfilm.com", true }, { "newsinformer.ga", true }, { "newsinkansas.ml", true }, { "newsinpenn.ml", true }, { "newsinpolitics.ga", true }, { "newsireland.tk", true }, + { "newsiva.org", true }, { "newskinlasercenter.com", true }, - { "newslanes.com", true }, { "newslanka.tk", true }, { "newsletteralerts.com", true }, { "newsletters.gq", true }, + { "newslia.org", true }, { "newsliner.gq", true }, + { "newslookup.com", true }, + { "newsmacro.org", true }, { "newsmotor.info", true }, + { "newsmyth.org", true }, { "newsnfl.tk", true }, - { "newsound.vn", false }, - { "newspaper-myapp.herokuapp.com", true }, { "newspawn.net", true }, + { "newsportbox.ru", true }, + { "newspower.ir", true }, + { "newspriest.com", true }, + { "newsprix.com", true }, { "newspsychology.com", true }, + { "newsquare.biz", true }, + { "newsreach.org", true }, + { "newsteadccc.com.au", true }, { "newstel.tk", true }, { "newsthai.ml", true }, { "newsticker.tk", true }, @@ -87343,29 +100103,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newsupdatesdaily.ga", true }, { "newsuzbekistan.tk", true }, { "newsvideo.tk", true }, + { "newsvirginian.com", true }, { "newsvoice.com", true }, + { "newswav.com", true }, + { "newswired.org", true }, { "newsworld247.tk", true }, { "newsxp.tk", true }, { "newsyclub.tk", true }, { "newtambov.gq", true }, { "newtambov.tk", true }, + { "newtech.ro", true }, { "newtekstil.ga", true }, { "newterritorialclaims.tk", true }, { "newtlgpacks.ml", true }, - { "newtnote.com", true }, { "newton-circus.jp", true }, { "newtoncomputing.com", true }, { "newtoncountymo.gov", true }, { "newtonhaus.com", true }, - { "newtons-erben.space", true }, { "newtrackon.com", true }, { "newtravelplans.com", true }, { "newusatoday.ga", true }, { "newvehicle.com", true }, { "newvisionhealing.com", true }, { "newwaterford-oh.gov", true }, + { "newwavelinen.com", true }, { "newway.ie", true }, { "newwind.tk", true }, + { "newwise.com", true }, + { "newworldnew.com", true }, { "newworldnewlife.tk", true }, { "newxit.tk", true }, { "newyearsdishes.tk", true }, @@ -87377,35 +100142,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "newyorknews.tk", true }, { "newyorkrp.tk", true }, { "newyoushampoo.com", true }, + { "newz.to", true }, { "newzashitnik.tk", true }, { "newzealandadventure.tk", true }, + { "newzen.fr", true }, + { "newzlight.com", true }, + { "newzlyup.com", true }, { "newzvilla.ga", true }, + { "nex.io", true }, { "nex.li", true }, - { "nex.sx", true }, { "nexcoda.io", true }, { "nexd.com", true }, { "nexgeneration-solutions.com", true }, + { "nexgenwebdesign.co.uk", true }, + { "nexgi.com", true }, + { "nexhealth.info", true }, { "nexicafiles.com", true }, + { "nexiodev.com", true }, + { "nexiodevopslocal.com", true }, + { "nexiopay.com", true }, + { "nexiopaydev.com", true }, + { "nexiopaydevopslocal.com", true }, + { "nexiopaysandbox.com", true }, + { "nexiopaystg.com", true }, + { "nexiosandbox.com", true }, + { "nexiostaging.com", true }, { "nexiumgeneric.tk", true }, - { "nexlight.be", true }, + { "nexlight.be", false }, + { "nexo.games", true }, + { "nexon.com.au", true }, { "nexril.net", false }, { "nexs.gg", true }, { "nexscience.tk", true }, + { "next-geek.fr", true }, { "next-idea.co", true }, { "next-log.ru", false }, + { "next-tms.com", true }, { "next-web.ad.jp", false }, - { "next.ddnss.org", true }, { "next.me", true }, { "next24.io", true }, - { "next47.com", true }, { "nextads.ch", true }, - { "nextalefieldrecording.com", true }, { "nextbike.tk", true }, { "nextbranders.com", true }, { "nextcairn.com", true }, { "nextcloud-alpha.ddns.net", true }, { "nextcloud-miyamoto.spdns.org", true }, - { "nextcloud-server.spdns.de", true }, + { "nextcloud-server.spdns.de", false }, { "nextcloud.at", true }, { "nextcloud.co.za", true }, { "nextcloud.com", true }, @@ -87415,39 +100197,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nextcloudcn.com", true }, { "nextclouddarwinkel.nl", true }, { "nextcom.digital", true }, + { "nextdayoff.com", true }, { "nextdayvapes.co.uk", true }, - { "nextend.net", true }, { "nextevolution.co.uk", true }, { "nextfm.tk", true }, { "nextg.gg", true }, { "nextgen-life-insurance.com", true }, { "nextgen-wealth.com", true }, - { "nextgen.com", true }, + { "nextgen.com", false }, { "nextgen.sk", true }, - { "nextgenerationsocialnetwork.com", true }, + { "nextgenerationaccessories.com", true }, + { "nextgenerationaccessories.online", true }, + { "nextgenerationaccessories.ru", true }, + { "nextgenerationaccessories.store", true }, { "nextgenforbbm.com", true }, + { "nextgenmath.com", true }, { "nextgensocialnetwork.com", true }, - { "nextgenthemes.com", true }, + { "nextgenthemes.com", false }, { "nextgreatmess.com", true }, { "nexthop.co.th", false }, { "nextiot.de", true }, { "nextitstep.com", true }, { "nextiva.com", true }, { "nextlegends.gov", true }, + { "nextlevel-forum.de", true }, { "nextlevel-it.co.uk", true }, + { "nextlevelchess.blog", true }, + { "nextlevelforum.de", true }, + { "nextmarkets.com", true }, { "nextmbta.com", true }, { "nextme.se", true }, { "nextnet.cc", true }, + { "nextnowagency.com", false }, { "nextos.com", true }, - { "nextprotocol.tech", true }, - { "nextracker.com", true }, { "nextrader.guru", false }, { "nextrasp.it", true }, { "nextrec.site", true }, - { "nextrend.co", true }, { "nextright.tk", true }, - { "nextsfd.co.uk", true }, { "nextsound.tk", true }, + { "nextsource.com", true }, { "nextstep-labs.gr", true }, { "nextstepstudios.ga", true }, { "nextsulting.com", true }, @@ -87463,15 +100251,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nexusmedianews.com", true }, { "nexussystems.tk", true }, { "nexwebsites.com", true }, + { "nexxss.jp", true }, { "nexxus-sistemas.net.br", true }, { "nexzcore.com", true }, + { "nexzus.com", true }, + { "neyco.fr", true }, { "neyer-lorenz.de", true }, { "neyjens.com", true }, { "nezis.tk", true }, { "nezkakukec.si", true }, { "nezrouge-est-vaudois.ch", true }, - { "nezrouge-geneve.ch", false }, { "nezsultan.tk", true }, + { "nf-tel.com", true }, { "nf4.net", true }, { "nf9q.com", true }, { "nfam.de", true }, @@ -87503,25 +100294,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nflmocks.com", true }, { "nfls.io", true }, { "nflsic.org", true }, + { "nflspinzone.com", true }, { "nfltshirt.com", true }, { "nfluence.org", true }, + { "nfo.so", true }, + { "nfobar.com", true }, { "nforto.com", true }, { "nfpors.gov", true }, + { "nfpsa.lv", true }, { "nframe.io", true }, - { "nfrost.me", true }, + { "nfs.pub", true }, { "nfsec.pl", true }, + { "nft-dagasi.com", true }, { "nft-dev-web.azurewebsites.net", true }, { "nft-qa-web.azurewebsites.net", true }, - { "nft-uat-web.azurewebsites.net", true }, + { "nft.io", true }, + { "nftnow.com", true }, + { "nftshowroom.com", true }, { "ng-musique.com", true }, { "ng.edu.ee", true }, { "ngarate.com", true }, { "ngatikuri.tk", true }, { "ngawa-avocat-paris.fr", true }, + { "ngbilling.com.br", true }, { "ngc.gov", false }, - { "ngclearing.com", true }, + { "ngclearing.com", false }, + { "ngecezt.ddns.net", true }, { "ngefics.tk", true }, { "ngegame.id", true }, + { "ngelag.com", true }, { "ngergs.de", true }, { "ngetik.id", true }, { "nggukbo9lbfadcf5.gq", true }, @@ -87529,13 +100330,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ngi.eu", false }, { "ngiemboon.net", true }, { "nginx.io", true }, - { "nginxconfig.com", true }, { "nginxtest.ml", true }, { "nginxyii.tk", true }, { "ngla.gov", true }, + { "ngmisr.com", true }, { "ngmx.com", true }, + { "ngmx.eu", true }, { "ngmx.net", true }, + { "ngmx.nl", true }, { "ngmx.org", true }, + { "ngmx.social", true }, { "ngndn.jp", true }, { "ngo-online.de", true }, { "ngontinhtruyen.com.vn", true }, @@ -87543,25 +100347,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ngorod.tk", true }, { "ngpest.com", true }, { "ngplus.name", true }, + { "ngribok.ru", true }, + { "ngroupllc.com", true }, { "ngservers.com", false }, + { "ngsmedicare.com", true }, { "nguoimuahangmy.com", true }, { "nguonnha.vn", true }, - { "nguru.net", true }, { "ngutek.com", true }, - { "nguyendanghung.com", true }, + { "nguyencucthanh.com", true }, + { "nguyenduythiem.com", true }, { "nguyenfamily.tk", true }, { "nguyenminhhung.com", true }, { "nguyensuu.tk", true }, - { "nguyenvankhoi.com", true }, { "ngvf.de", true }, { "ngvgamechanger.com", true }, { "ngx.hk", true }, + { "ngx.im", true }, + { "ngxmetrics.com", true }, { "ngxpkg.com", true }, - { "nhakhoahaianh.vn", true }, + { "nh.ee", true }, + { "nhacthanhcavietnam.com", true }, + { "nhadat100.vn", true }, + { "nhadonghanh.com", true }, + { "nhai.gov.in", true }, + { "nhakinh.net", true }, { "nhance.pl", true }, { "nhanlucnhatban.com", true }, { "nhaoi.com", true }, { "nharper.org", true }, + { "nhathaugiare.com", true }, { "nhatrang.tk", true }, { "nhatrangbooks.com", true }, { "nhbp-nsn.gov", true }, @@ -87569,12 +100383,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nhccnews.org", true }, { "nhcps.com", true }, { "nhdsilentheroes.org", true }, + { "nhg.nl", true }, { "nhhoteljobs.nl", true }, - { "nhimf.org", true }, { "nhjvillalmanzo.tk", true }, + { "nhk.jp", true }, { "nhnieuws.nl", true }, { "nhome.ba", true }, - { "nhps.org", true }, + { "nhr.nl", true }, { "nhscript.tk", true }, { "nhsinform.scot", true }, { "nhsolutions.be", false }, @@ -87585,23 +100400,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ni-mate.com", true }, { "ni.sb", true }, { "ni.search.yahoo.com", false }, + { "niaa.gov.au", true }, { "niadd.com", true }, { "niagara.ru", false }, + { "niagaraconstruction.org", true }, { "niagarafalls.ca", true }, { "niagaraschoice.org", true }, { "niallator.com", true }, - { "nianubo.net", true }, { "niawier-wetsens.tk", true }, + { "nibadesign.nl", true }, { "nibblehole.com", true }, { "nibbler.ai", true }, { "nibert.fr", true }, { "nibiru.com.uy", true }, { "nibletllc.com", true }, - { "nibo.blog", true }, { "nibouw.nl", true }, { "nic.ads", true }, { "nic.android", true }, { "nic.app", true }, + { "nic.bnpparibas", true }, + { "nic.bo", true }, { "nic.boo", true }, { "nic.cal", true }, { "nic.channel", true }, @@ -87646,37 +100464,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicanordic.com", true }, { "nicastrosalvatore.tk", true }, { "nicat.cf", true }, - { "nicava.com.mx", true }, { "nice-autosurf.com", true }, { "nice-germany.tk", true }, { "nice-links.tk", true }, + { "nice-pay.com", true }, { "nice-school.com.ua", true }, { "nice.ch", true }, { "nice.com", true }, + { "niceactimize.com", true }, { "niceb5y.net", false }, { "nicecockb.ro", true }, { "niceguyit.biz", true }, + { "nicepussypics.com", true }, + { "nicerings.com", true }, { "nicesco.re", true }, { "nicesleepo.com", true }, { "nicestudio.co.il", true }, { "nicesurf.tk", true }, + { "nicetits.pics", true }, + { "nicevillefl.gov", true }, { "nicgoa.nic.in", true }, - { "nichearticlegalore.com", true }, { "nicheosala.tk", true }, { "nicheosala.xyz", true }, { "nicher.tk", true }, { "nichesite.gq", true }, { "nichetest.tk", true }, - { "nichevideogalore.com", true }, + { "nichevideogalore.com", false }, { "nichi.co", true }, { "nichijou.com", true }, { "nichijou.org", true }, { "nichobi.com", true }, + { "nicholasjohnson.ch", true }, { "nicholaslazzerini.com", true }, { "nicholasnassar.com", true }, { "nicholasperkins.io", true }, { "nicholasquigley.com", true }, - { "nicholasruddick.com", true }, { "nicholaswilliams.net", true }, { "nicholsonkring.tk", true }, { "nicht-blau.de", true }, @@ -87696,13 +100518,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nickfreeman.de", true }, { "nickfrost.rocks", true }, { "nickguyver.com", true }, - { "nickhawn.com", true }, + { "nickhawn.com", false }, { "nickhitch.co.uk", true }, { "nickhowell.co.uk", false }, { "nickkallis.com", true }, { "nicklock.ml", true }, { "nickloose.de", true }, { "nickmandler.tk", true }, + { "nickmazuk.com", true }, { "nickmchardy.com", true }, { "nickmiller.ie", true }, { "nickmorri.com", false }, @@ -87710,35 +100533,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicknames.tk", true }, { "nicknamez.tk", true }, { "nickoticko.tk", true }, - { "nickpavel.com", true }, { "nickplotnek.co.uk", true }, { "nickrickard.co.uk", true }, { "nickrickard.uk", true }, { "nicks-autos.com", true }, { "nickscomputers.nl", true }, { "nickserv.eu", true }, + { "nickserv.social", true }, { "nickserve.com", true }, { "nickserve.eu", true }, { "nickserve.net", true }, { "nickserve.nl", true }, { "nickserve.org", true }, - { "nicksphere.ch", true }, + { "nickserve.social", true }, { "nickstories.de", true }, { "nicktamin.de", true }, { "nickwasused.cf", true }, + { "nickwasused.com", true }, { "nickwasused.de", true }, { "nickwasused.ga", true }, { "nickwasused.gq", true }, { "nickwasused.ml", true }, { "nickwasused.tk", true }, - { "nickwatton.com", true }, { "nickyfoxx.net", true }, { "nickymoore.com", true }, { "nicn.me", true }, { "nico.st", true }, { "nicochinese.com", true }, { "nicoforconi.it", true }, - { "nicofy.com", true }, + { "nicofy.com", false }, { "nicogrosser.de", false }, { "nicoknibbe.nl", true }, { "nicokroon.nl", true }, @@ -87751,24 +100574,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicolas-benoit-immobilier.fr", true }, { "nicolas-bouvier.tk", true }, { "nicolas-dumermuth.com", true }, - { "nicolas-hoffmann.net", false }, + { "nicolas-feuillatte.com", true }, { "nicolas-hoizey.com", true }, - { "nicolas-hoizey.photo", true }, + { "nicolas-hoizey.photo", false }, { "nicolas-simond.ch", true }, { "nicolas-simond.com", true }, { "nicolaschelly.tk", true }, + { "nicolascoolman.com", true }, { "nicolasfrebert.fr", true }, - { "nicolasfriedli.ch", true }, - { "nicolasiung.me", true }, + { "nicolasfriedli.ch", false }, + { "nicolashervaud.com", true }, + { "nicolasiung.me", false }, { "nicolaslogerot.com", true }, { "nicolasprovost.tk", true }, { "nicolaszambetti.ch", true }, { "nicolaw.uk", true }, { "nicole-richie.info", true }, + { "nicolebracy.com", true }, + { "nicoleisaacs.com", true }, + { "nicolelaby.com", true }, { "nicolemathew.com", true }, { "nicoleta-prestescu.tk", true }, { "nicolettajennings.com", true }, - { "nicolettevandervalk.nl", true }, + { "nicolettapallotta.com", true }, + { "nicolettevandervalk.nl", false }, { "niconico.ooo", true }, { "nicoobank.com", true }, { "nicoobook.net", true }, @@ -87778,17 +100607,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nicovip.com", true }, { "nicsezcheckfbi.gov", true }, { "nicsys.de", true }, + { "nictiz.nl", true }, { "nicul.in", true }, + { "nicwortel.nl", true }, { "nidhoeggr.duckdns.org", true }, { "nidialozano.com", true }, { "nidosi.nu", true }, { "nidosinu.com", true }, { "nidsuber.ch", true }, { "niduxcomercial.com", true }, - { "nied-laechelt.de", true }, { "niederalt.com", true }, { "niedermair.bz", true }, { "niederohmig.de", true }, + { "niedersachsen.cloud", true }, { "niedlaechelt.de", true }, { "niels-modeltog.tk", true }, { "nielsbohr.ai", true }, @@ -87796,6 +100627,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nielsensaskiagaantrouwen.be", true }, { "niemaler.de", true }, { "niemandmussirgendwas.de", true }, + { "niemeyer.org.br", true }, { "nien.cf", true }, { "nien.co", true }, { "nien.com", true }, @@ -87809,6 +100641,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nierenpraxis-dr-merkel.de", true }, { "nierenpraxis-merkel.de", true }, { "niers.land", true }, + { "nierstichting.nl", true }, { "nieruchomosci-wroclaw-24.pl", true }, { "nieselregen.com", true }, { "niesstar.com", false }, @@ -87819,21 +100652,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nieuwebroek.com", true }, { "nieuwebroek.nl", true }, { "nieuwpoort.tk", true }, + { "nieuwsbegrip.nl", true }, { "nieuwsberichten.eu", true }, { "nieuwsfiets.nu", true }, + { "nieuwskrant.be", true }, { "nieuwslagmaat.nl", true }, + { "nifc.gov", true }, { "niferry.co.uk", true }, { "niffler.software", true }, + { "nifleim.net", true }, { "niftiestsoftware.com", true }, + { "niftyninjamarketing.com", true }, { "nifume.com", true }, { "niga.tk", true }, { "nigdeescort.tk", true }, + { "nigelpentland.co.uk", true }, { "nigelvm.com", true }, { "nigeriaimagefoundation.org", true }, { "nigeriaportal.tk", true }, - { "nigger.racing", true }, { "nigglipads.com.br", true }, - { "niggo.eu", true }, + { "niggo.eu", false }, { "night-academy.pl", true }, { "night2stay.cn", true }, { "night2stay.de", true }, @@ -87848,54 +100686,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nightclassifieds.com", true }, { "nightdreamer.me", true }, { "nightfirecat.com", true }, - { "nightfish.co", true }, + { "nightfoxtips.com", true }, { "nighthawks.tk", true }, { "nighthawkstrategies.com", true }, + { "nightingalebabyconcierge.com", true }, { "nightkiss66.org", true }, { "nightlife.gent", true }, { "nightlight.gg", true }, - { "nightline.ie", false }, { "nightlive.tk", true }, { "nightmareabyss.top", false }, { "nightmarejoker2.com", true }, { "nightmoose.org", true }, { "nightoutrecords.tk", true }, - { "nightparty.tk", true }, { "nightpass.tk", true }, { "nightscapes.tk", true }, { "nightscapesoutdoorlighting.com", false }, { "nightscout.host", true }, { "nightsi.de", true }, + { "nightskyalerts.com", true }, { "nightsnack.cf", true }, - { "nightstand.io", true }, { "nightstar-online.tk", true }, { "nightstory.tk", true }, - { "nightvisionguys.com", false }, { "nightvisionradio.tk", true }, { "nightwinds.tk", true }, { "nightwishchile.tk", true }, - { "nightwishperu.tk", true }, { "nightwood.cf", true }, { "nigmapictures.tk", true }, { "nigt.cf", true }, { "nih.ao", true }, { "nihaarpstars.com", true }, - { "nihad.dk", true }, { "nihaoonline.tk", true }, - { "niharikatimes.com", true }, { "nihilistan.tk", true }, { "nihilocomunidad.tk", true }, { "nihon-rosoku.com", true }, { "nihseniorhealth.gov", false }, { "nihtek.in", true }, { "nii2.org", true }, + { "niice.co", true }, { "niinaratsula.com", true }, { "niit-mts.com", true }, { "niit.com", true }, { "niitfoundation.org", true }, + { "niitnguru.com", true }, { "niituniversity.in", true }, { "niituva.ga", true }, - { "nij.gov", true }, + { "niiu.digital", true }, + { "niiucapital.com.sg", true }, { "nijiero-ch.com", false }, { "nijikata.com", true }, { "nijimama-life.com", true }, @@ -87903,7 +100739,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nijniy-novgorod.tk", true }, { "nijofotografie.de", true }, { "nijzoon.nl", false }, + { "nik.io", true }, { "nika-travel.ga", true }, + { "nikabazar.ir", true }, { "nikahplus.com", true }, { "nikahsekeri.tk", true }, { "nikami.tk", true }, @@ -87912,6 +100750,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nikavandenbos.nl", true }, { "nikavenus.com", true }, { "nike-studio.com", true }, + { "nikeairjordan.cc", true }, { "nikelunartw.net", true }, { "nikesoccerbodotoutlet.ga", true }, { "nikest.cf", true }, @@ -87926,7 +100765,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nikitenko.tk", true }, { "nikitin.photo", true }, { "nikitina.ml", true }, + { "nikka.systems", true }, { "nikkasystems.com", true }, + { "nikkei225jp.com", true }, { "nikkila.me", true }, { "nikkotaytay.tk", true }, { "nikksno.io", true }, @@ -87936,12 +100777,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "niklasstinkt.com", true }, { "niko-mapping-studio.tk", true }, { "niko-vfx.com", false }, + { "nikolab.com.ua", true }, { "nikolaev.ml", true }, { "nikolahost.tk", true }, + { "nikolahristov.tech", true }, { "nikolai-schmidt.tk", true }, { "nikolaipribylski.tk", true }, { "nikolaj-platoshkin.cf", true }, + { "nikolamilekic.com", true }, { "nikolasbradshaw.com", true }, + { "nikon-photocontest.com", true }, { "nikonlibrary.co.uk", true }, { "nikonnps.co.uk", true }, { "nikonschool.co.uk", true }, @@ -87950,15 +100795,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nikotiinipussit.com", true }, { "nikscloud.eu", true }, { "nikz.in", true }, + { "nil.com", true }, { "nil.gs", false }, { "nil.mx", true }, + { "nilebusinesscity-nc.com", true }, { "niledevelopmentseg.com", true }, { "nilefi.cf", true }, { "niles-simmons.de", true }, { "niles.xyz", true }, { "nilesil.gov", true }, - { "nilgirispice.co.uk", true }, { "nilianwo.com", true }, + { "nilmaraquintela.com.br", true }, { "nilnasc.com", true }, { "nilosoft.com", true }, { "niloxy.com", true }, @@ -87967,38 +100814,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nils.ch", true }, { "nils.moe", true }, { "nilsbrisset.info", true }, + { "nilslandscaping.com.au", true }, { "nilsnet.tk", true }, { "nilsvital.de", true }, { "nim.tw", true }, - { "nimairdrop.com", true }, - { "nimanranch.com", true }, { "nimbl.nz", true }, { "nimble.com.br", true }, + { "nimblefins.co.uk", true }, { "nimbo.com.au", true }, { "nimbo.net", true }, { "nimbus-link.co.uk", true }, { "nimbus-net.tk", true }, { "nimbuslink.co.uk", true }, + { "nimbyte.com", true }, { "nimeia.tk", true }, - { "nimelainsurance.com", true }, { "nimes-gard.fr", true }, { "nimfa.ml", true }, { "nimfomanki.tk", true }, - { "nimidam.com", true }, { "nimiedad.com", true }, { "nimiq.com", true }, - { "nimiqairdrop.com", true }, { "nimit.se", true }, { "nimnadasl.tk", true }, { "nimnordic.com", true }, { "nimus.tk", true }, - { "nin.to", true }, { "nina-laaf.de", true }, { "nina-woerz.tk", true }, { "ninaafenehjelm.com", true }, { "ninadeissler.de", true }, { "ninadevil.org", true }, - { "ninaforever.com", true }, { "ninakoenig.org", true }, { "ninanice.net", true }, { "ninaobermeier.com", true }, @@ -88008,15 +100851,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ninaundandre.de", true }, { "ninavegas.net", true }, { "ninchat.com", true }, - { "nine.land", true }, { "ninebennink.com", false }, { "ninedaysmore.tk", true }, + { "nineenergyservice.com", true }, { "ninepints.co", true }, { "ninespec.com", true }, { "ninetailed.ninja", true }, { "ninetaillabs.com", true }, { "ninetaillabs.xyz", true }, { "nineteensixtyone.co.uk", true }, + { "ninetyninestreet.co.nz", true }, { "ninetyseven.tk", true }, { "ninfora.com", true }, { "ningrui.me", false }, @@ -88027,7 +100871,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ninjacomputing.com", true }, { "ninjahub.net", true }, { "ninjamagic.tk", true }, - { "ninjasproxy.com", true }, + { "ninjasproxy.com", false }, { "ninjasquad.fr", true }, { "ninjaworld.co.uk", true }, { "ninkt.com", true }, @@ -88038,10 +100882,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ninpang.com", true }, { "ninrio.com", true }, { "ninsin-akachan.com", true }, - { "nintendo-europe-media.com", true }, { "nintendocarddelivery.com", true }, { "nintendocollectionsystem.com", true }, - { "nintendohill.com", false }, { "nintendoreporters.com", true }, { "ninth.cat", true }, { "ninth.moe", true }, @@ -88050,18 +100892,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ninthfloor.org", true }, { "ninure.tk", true }, { "ninux.ch", false }, + { "ninverse.com", true }, { "niourk.com", true }, { "nipax.cz", true }, { "nipe-systems.de", true }, { "nipit.biz", true }, + { "nipoafricaeng.co.tz", true }, { "nippel.tk", true }, { "nipplefucking.com", true }, { "nippon-tour.tk", true }, { "nippon.plus", true }, { "nipponkaigi.info", true }, { "nipponkempoph.tk", true }, + { "nipponkousei.com", true }, { "nipponnews.tk", true }, - { "nipponprinting.co.jp", true }, { "nipponsteelwelding-thai.co.th", true }, { "nippynet.tk", true }, { "nirada.info", true }, @@ -88073,11 +100917,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nirjonmela.net", true }, { "nirma.co.in", true }, { "nirmalroy.ml", true }, + { "niro.bio", true }, { "nirudo.me", true }, - { "nirvaan.xyz", true }, { "nirvana-esport.fr", true }, { "nirvananirvana.tk", true }, { "nirvanashop.com", true }, + { "nirvati.org", true }, + { "nirvel-shop.com", true }, { "niscemi.tk", true }, { "nishikino-maki.com", true }, { "nishimebistro.cz", true }, @@ -88087,39 +100933,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nisomnia.com", true }, { "nissanofbismarckparts.com", true }, { "nissanpartsdeal.com", true }, - { "nissayit-seminar2022.com", true }, { "nisselist.tk", true }, { "nisselrooij.nl", true }, + { "nissens.com", true }, { "nist.tech", true }, + { "nit.school", true }, + { "nitaonline.org", false }, { "nitecore.ga", true }, { "nitendaytowing.ga", true }, { "nitifilter.com", true }, { "nitix.games", true }, + { "nitolab.com", true }, { "nitoville.com", true }, { "nitranoviny.sk", true }, { "nitrix.me", true }, + { "nitro.az", true }, { "nitrocloud.ddns.net", true }, { "nitrohorse.com", false }, { "nitrokey.com", true }, { "nitromaster.tk", true }, + { "nitromtb.org", true }, { "nitropanel.com", false }, { "nitropur.com", true }, { "nitropur.de", true }, - { "nitrous-networks.com", false }, { "nitschinger.at", true }, { "nittel-gaertner.at", true }, - { "nitter.hu", true }, - { "nitter.it", true }, + { "nitter.hu", false }, { "nitter.net", true }, - { "nitttrbhopal.org", true }, + { "niu.edu.tw", true }, { "niuco.com.br", true }, - { "niunaimilk.cn", true }, + { "niunaimilk.cn", false }, { "niutennici.tk", true }, + { "nivaad.com", true }, { "nivarussia.ml", true }, + { "niveau-klatsch.com", true }, + { "niveau-texter.de", true }, { "nivel03.com", true }, { "nivoit.cf", true }, - { "niwoo.es", true }, - { "niwtech.com", true }, { "nix-sender.com", true }, { "nix-sender.ru", false }, { "nix.org.ua", false }, @@ -88129,6 +100979,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nixie.fashion", true }, { "nixonlibrary.gov", true }, { "nixops.me", true }, + { "nixor.ee", true }, + { "nixorigin.one", true }, + { "nixpare.com", true }, { "nixplus.tk", true }, { "nixrepair.nl", true }, { "nixsub.tk", true }, @@ -88142,80 +100995,98 @@ static const nsSTSPreload kSTSPreloadList[] = { { "niyen.eu", true }, { "niyen.net", true }, { "niyen.org", true }, + { "niyen.social", true }, { "nizarvoiceover.tk", true }, { "nizhaoheng.com", true }, { "nizozemsku.nl", true }, + { "nizwassolutions.com", true }, { "nja.id.au", true }, { "njast.net", true }, { "njbr.ml", true }, { "njbr.tk", true }, { "njcareers.org", true }, + { "njccpo.gov", true }, + { "njdcj.gov", true }, + { "njdge.gov", true }, { "njeda.gov", true }, { "njedge.net", true }, + { "njgames.org", true }, { "njhq.org", true }, { "njilc.com", true }, + { "njintl.com", true }, { "njleg.gov", true }, + { "njliner.me", true }, { "njliner.net", true }, { "njngroup.org", true }, { "njpc.org", true }, { "njpjanssen.nl", true }, { "njpranksters.tk", true }, + { "njsbf.org", true }, + { "njsda.gov", true }, { "njshield.gov", true }, + { "njsp.gov", true }, { "njtransfer.org", true }, { "njuftp.com", true }, + { "njvcco.gov", true }, { "nk-vision.com", true }, { "nk1.de", true }, { "nkapliev.org", true }, + { "nkbi.ru", true }, { "nkbwnx.com", true }, { "nkg-mosbach.de", true }, { "nkg.com.au", true }, - { "nkinka.de", true }, + { "nkghas.com", true }, { "nkjwmn.com", true }, { "nkjwrs.com", true }, + { "nkkr.hu", true }, { "nklwhx.com", true }, - { "nko-rr.ru", true }, { "nko.org", true }, { "nkontur.com", true }, { "nkorolev.tk", true }, { "nkp-media.de", true }, + { "nkrupp.net", true }, { "nksmart.ru", true }, { "nkvd-farm.ru", true }, { "nkx4sjyrk4tcv0sluhwajyc-n6icja9gchqxmhp.com", false }, + { "nkyrtl.org", true }, { "nl-comunistas.tk", true }, { "nl-ix.net", true }, { "nl.search.yahoo.com", false }, { "nl3ehv.nl", true }, - { "nlagstage.in", true }, + { "nla.no", true }, { "nlap.ca", false }, { "nlc-business.com", true }, { "nlcpakistan.org", true }, { "nlgr.de", true }, - { "nlib.ee", true }, { "nllboard.co.uk", true }, - { "nlleisure.co.uk", true }, { "nlm.gov", true }, { "nlorganizing.com", true }, - { "nlpdiscovery.ro", true }, { "nlponline.com.ua", true }, + { "nlrb.gov", true }, { "nlyfeue.gq", true }, - { "nlyvey.com", true }, { "nm.cx", true }, { "nm.sl", true }, + { "nma.is", true }, { "nmaedu.org", true }, { "nmb.gov", true }, + { "nmbhgc.org", true }, + { "nmcdm.org.in", true }, { "nmcep.net", true }, { "nmd.so", true }, { "nmegent.be", true }, { "nmeoverbetuwe.nl", true }, { "nmfinanciallaw.com", true }, + { "nmhp.com", true }, { "nmijudiciary.gov", true }, { "nmmlp.org", true }, - { "nmn.hu", false }, { "nmontag.com", true }, { "nms-thoracic-surgery.com", true }, + { "nmugroup.com", true }, { "nmx.de", true }, { "nmx.moe", true }, + { "nn-com.co.jp", true }, { "nn-vol.ga", true }, + { "nn0.net", true }, { "nn01.cc", true }, { "nn01.com", true }, { "nn04.org", true }, @@ -88228,21 +101099,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nn9721.com", false }, { "nn9728.co", true }, { "nna774.net", true }, + { "nnc.cat", true }, + { "nnc.im", true }, { "nndfn.com", true }, + { "nnet.ca", true }, { "nnews.tk", true }, { "nnkkserver02.ddns.net", true }, { "nnlm.gov", true }, + { "nnnn.loan", true }, + { "nnnnn.click", true }, { "nnnovel.com", true }, + { "nnrevolt.com", true }, + { "nnss.gov", true }, { "no-andishan.ir", true }, { "no-data.tk", true }, { "no-eye-deer.tk", true }, { "no-gods-no-masters.com", true }, + { "no-grey-area.com", true }, { "no-ice.be", true }, { "no-ice.nl", true }, { "no-ip.cz", true }, { "no-more-gray-hair.ga", true }, { "no-more-gray-hair.gq", true }, { "no-more-gray-hair.ml", true }, + { "no-n.at", true }, + { "no-nat.de", true }, { "no-real.tk", true }, { "no-terrorism.tk", true }, { "no-war-on-iraq.tk", true }, @@ -88251,16 +101132,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "no112.org", true }, { "no1universities.tk", true }, { "no2bacoorcityhood.tk", true }, - { "no74u.net", true }, { "noaccess.tk", true }, { "noacore.ch", true }, { "noadi-pixels.tk", true }, { "noagendahr.org", true }, + { "noah-shop.com", true }, { "noah-witt.com", true }, { "noahjacobson.com", true }, { "noahmodas.com.br", true }, + { "noahs.com", true }, { "noahsaso.com", true }, - { "noahwitt.me", true }, + { "noamweb.com", true }, { "noangel.tk", true }, { "noart.tk", true }, { "noatec.eu", true }, @@ -88272,13 +101154,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nobellc.com", true }, { "nober.tk", true }, { "nobilefoods.com", true }, - { "nobitex.net", true }, { "nobitschek.de", true }, { "noble-diagnostic.com", true }, { "noblechemical.com", true }, { "nobleco.gov", true }, { "noblecountyprosecutoroh.gov", true }, { "nobledust.com", true }, + { "noblehearinginstitute.com", true }, { "nobleparkapartments.com.au", true }, { "nobleproducts.biz", true }, { "noblesmart.com", true }, @@ -88291,9 +101173,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noboxo.ch", true }, { "nobreaks.ca", true }, { "nobs.no", true }, - { "nobschannel.tk", true }, { "nobsmc.com", true }, + { "nobunplease.com", true }, + { "nobutwhy.com", true }, { "nobz.com.br", false }, + { "noc.best", true }, { "noc.wang", true }, { "nocapplugins.xyz", true }, { "nocillaconchorizo.tk", true }, @@ -88306,6 +101190,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nocoffee.tech", true }, { "nocoffeetech.de", true }, { "nocommentsallowed.com", true }, + { "nocr.net", true }, { "nocreyentes.org", true }, { "nocrm.io", true }, { "noctinus.tk", true }, @@ -88314,16 +101199,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nocturnus.tk", true }, { "noctys.com", true }, { "nocyclopedia.tk", true }, + { "nod.lv", true }, { "nodde.cf", true }, { "nodecdn.net", true }, + { "nodecore.mine.nu", true }, { "nodecraft.com", true }, - { "nodeedge.com", true }, + { "nodeers.com", true }, { "nodefoo.com", true }, { "nodejs.org", true }, { "nodelab-it.de", true }, { "nodelia.com", true }, - { "nodepositbonus.cc", true }, - { "nodesonic.com", true }, + { "nodepoet.com", true }, + { "noderunners.network", true }, { "nodespin.com", true }, { "nodestination.tk", true }, { "nodi.at", false }, @@ -88333,34 +101220,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nodkimrecord.com", true }, { "nodl.cloud", true }, { "nodmarcrecord.com", true }, - { "nodownload.games", true }, - { "noebarlet.me", true }, { "noedidacticos.com", true }, { "noefio-software.com", true }, { "noel.wf", true }, { "noel.yt", true }, { "noelblog.ga", true }, - { "noelclaremont.com", true }, - { "noellabo.jp", true }, { "noellimpag.me", false }, - { "noematic.space", true }, { "noemax.com", true }, + { "noenglish.com", true }, { "noeontheend.com", true }, { "noexcusesc.gov", true }, { "noexec.org", true }, { "nofilter.gq", true }, { "nofrillsdns.com", true }, { "noga4you.de", true }, + { "nogema.net", true }, { "nogerondier.eu", true }, { "nogetime.com", true }, { "nogfw.org", true }, { "nogfw.pro", true }, { "nogfwsite.com", true }, { "nogger.nl", true }, + { "nogluten.com", true }, + { "nogmat.org", true }, { "nogradhont.hu", true }, + { "nogre.com", true }, + { "nogyogyaszat.eu", true }, { "nohats.ca", true }, { "nohkan.fr", false }, { "nohm.eu", true }, + { "nohomeinsurance.com", true }, { "nohttps.org", true }, { "nohungerfoodbank.org", true }, { "nohup.se", true }, @@ -88370,108 +101259,114 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noiglosujemy.com.pl", true }, { "noiglosujemy.pl", true }, { "noincludesubdomains.preloaded.test", false }, - { "noinghene.com", true }, { "noirland.co.nz", true }, + { "noirmale.com", true }, { "noirpvp.com", true }, - { "noiseandheat.com", true }, { "noiseboyz.com", true }, { "noisebridge.social", true }, { "noisky.cn", true }, { "noisyfox.cn", true }, { "noisyfox.io", true }, { "noisyspa.io", true }, - { "noites.pt", true }, + { "noithatbachtin.com", true }, { "noithatphangia.net", true }, + { "noithatthienvan.com", true }, { "noj.ac", false }, { "nojihata.com", true }, { "nojok.es", true }, { "nojum.tk", true }, + { "nokarateinthepit.com", true }, { "nokchon.tk", true }, { "nokia.la", true }, { "noknow.ovh", true }, { "nokobike.com", true }, { "nokono.com", true }, + { "nokoshop.fr", true }, { "noktadedektor.com", true }, - { "noktaradyo.com", true }, + { "noktron.de", true }, { "nokumbaya.com", true }, { "nokya.tk", true }, { "nokzedoc.tv", true }, - { "nolanpoe.me", true }, { "nolanpowellisaho.com", true }, { "nolanvilletx.gov", true }, + { "nolate.de", true }, { "nolatepayments.com", true }, { "nolaviz.org", true }, { "noleggio-bagni-chimici.it", true }, { "noleggiobagnichimici.perugia.it", true }, { "noleggioimbarcazioni.it", true }, { "noleggiolimousine.roma.it", true }, + { "noleggiovetture.it", true }, + { "nolimit.bike", true }, { "nolinobaby.pl", true }, { "nolt.io", true }, { "nolte-tver.ru", true }, { "nolutut.ga", true }, - { "nolz.cloud", true }, + { "nomada.gt", true }, { "nomadaregalos.com", true }, - { "nomadese.com", true }, + { "nomadcasino.com", true }, { "nomadichome.com", true }, { "nomadichome.org", true }, { "nomadichomes.com", true }, { "nomadichomes.org", true }, { "nomadiclifes.com", true }, { "nomadicrootsco.com", true }, + { "nomadix.com", true }, { "nomadlist.com", true }, + { "nomadphile.com", true }, { "nomadproject.io", false }, + { "nomadtech.servehttp.com", true }, { "nomadworld.net", true }, { "nomasfraudecolorado.gov", true }, { "nomaspicaduras.com", true }, { "nomaster.cc", true }, - { "nome-rodekors.no", true }, { "nomee6.xyz", true }, { "nomenclator.org", true }, + { "nomerel.com", true }, + { "nomerodekors-esport.no", true }, { "nomesbiblicos.com", true }, { "nomial.co.uk", true }, { "nomifensine.com", true }, { "nomik.xyz", true }, - { "nomoondev.azurewebsites.net", true }, + { "nomo.com", true }, { "nomore112.org", true }, { "nomsing.tk", true }, { "nomtechbytes.com", true }, { "nomwoning.nl", true }, { "nomzamo.spdns.org", true }, - { "noname-ev.de", true }, + { "noname-ev.de", false }, { "nonametheme.com", true }, { "nonchaiya.com", true }, { "noncombatant.org", true }, { "nonemail.ch", true }, { "nonemu.ninja", true }, - { "nonglamfarm.vn", true }, { "nonnaloreta.it", true }, - { "nono.fi", true }, + { "nono.fi", false }, { "nono303.net", true }, { "nonobstant.cafe", true }, + { "nonpareilonline.com", true }, { "nonprofit.info", true }, { "nonsa.pl", true }, + { "nonslipdeckingco.uk", true }, { "nonstopjob.ga", true }, - { "nontonanimeid.one", true }, { "nontonfilem.ml", true }, { "nonuplebroken.com", true }, + { "nonverbalcommunicationcertificate.com", true }, { "nonx.pro", true }, { "nonxsistent.tk", true }, - { "nony.no", true }, { "nonzero.io", true }, { "noob-box.net", true }, { "noob-rp.ru", true }, { "nooben.com", true }, { "noobit.org", true }, + { "noobnoggin.com", true }, { "noobow.me", true }, + { "noobs-in-action.com", true }, { "noobsrus.co.uk", true }, { "noobsunited.de", false }, { "noobswhatelse.net", true }, { "noobunbox.net", true }, - { "noodles.wtf", true }, - { "noodletwister.com", true }, { "noodletwister.net", true }, - { "noodletwister.org", true }, - { "noodplan.co.za", true }, { "noodweer.be", true }, { "nool.ee", true }, { "noom.com", true }, @@ -88485,28 +101380,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noordbikers.tk", true }, { "noorden.com", true }, { "noordsee.de", true }, + { "noordwijk.nl", true }, { "nooresunnat.tk", true }, { "noorsolidarity.com", false }, { "noortronic.com", true }, { "noorzaitribe.ga", true }, + { "noosebrigade.com", true }, { "noosxe.com", true }, { "nootropic.com", true }, { "nootropicpedia.com", true }, { "nootropil.cf", true }, { "noovell.com", true }, - { "nooverviewavailable.com", true }, - { "noozy.org", true }, { "nopagefound.com", true }, { "nopaincenter.ro", false }, { "nopajam.tk", true }, { "nopaste.eu", true }, { "nopaynocure.com", true }, { "nophelet.com", true }, + { "nopiamanual.net", true }, { "nopm.xyz", true }, { "nopropaganda.tk", true }, { "nopuedesdejarlopasar.es", true }, { "nora-devot.com", true }, { "nora.dog", true }, + { "noraahost.com", true }, { "noracora.com", true }, { "norad.sytes.net", true }, { "noradevot.com", true }, @@ -88518,50 +101415,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "norbert-wollheim-platz.tk", true }, { "norbertorabinovichblog.com", false }, { "norbit.de", true }, + { "norcalworkcomp.com", true }, + { "norcconcrete.com", true }, { "norcopa.gov", true }, { "nord-sud.be", true }, { "nordaccount.com", true }, { "nordbusinessaccount.com", true }, { "nordcheckout.com", true }, { "nordcity.ga", true }, + { "nordelig.com", true }, { "norden.eu.org", true }, + { "norden.social", true }, { "nordesttrasporti.it", true }, { "nordfinck.de", true }, + { "nordformstore.dk", true }, { "nordgravite.fr", true }, { "nordhealth.com", true }, - { "nordicbroker.fi", true }, { "nordicirc.com", true }, { "nordico.club", true }, { "nordicportalen.tk", true }, { "nordicsemi.com", true }, { "nordicsolutionsgroup.com", true }, { "nordicsrit.tk", true }, + { "nordicway.dk", true }, { "nordinfo.fi", true }, + { "nordiskhiss.se", true }, + { "nordiskhissvarmland.se", true }, { "nordlandverliebt.de", true }, { "nordlayer.com", true }, { "nordlichter-brv.de", true }, { "nordlocker.com", true }, + { "nordmark-pharma.de", true }, { "nordmoregatebilklubb.com", true }, { "nordpass.asia", true }, { "nordpass.com", true }, { "nordsec.com", true }, { "nordseeblicke.de", true }, - { "nordstromheating.com", true }, - { "nordtec.se", true }, { "nordvestkysten.de", true }, { "nordvestkysten.dk", true }, { "nordvpn.com", true }, - { "nordvpnteams.com", true }, { "nordwal.de", true }, { "nordwaldzendo.de", true }, + { "norebase.com", true }, { "noref.tk", true }, { "noregrets.tk", true }, { "noreply.mx", true }, + { "norestfortheweekend.com", true }, + { "norfipc.com", true }, { "norfolkgardencare.co.uk", true }, + { "norgesenergi.no", true }, { "norichanmama.com", true }, { "noriel.ro", true }, { "norikazumatsuno.tk", true }, - { "noris.de", false }, + { "noripon.blog", true }, { "noriskit.nl", true }, { "noritakechina.com", true }, { "norlink.ca", true }, @@ -88569,6 +101475,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "normahairstudio.it", true }, { "normalady.com", true }, { "normalil.gov", true }, + { "normalinlinden.de", true }, { "normalized.ga", true }, { "normalizuj.me", true }, { "normalporter.tk", true }, @@ -88576,19 +101483,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "norman-legal.com", true }, { "norman-preusser-gmbh.de", true }, { "normanbauer.com", true }, - { "normandcyr.com", true }, { "normandgascon.com", true }, { "normandy.tk", true }, - { "normankranich.de", true }, - { "normanschwaneberg.de", true }, + { "normanhurstldc.nsw.edu.au", true }, { "normco.re", false }, { "normity.nl", true }, { "norml.fr", true }, { "noroutine.com", true }, { "noroutine.me", true }, - { "norouzi-jeep.ir", true }, + { "norridgewock.gov", true }, { "norrisautomotiveinc.com", true }, { "norrishome.tk", true }, + { "norristn.gov", true }, { "norrkemi.se", true }, { "norrlandsbilverkstad.se", true }, { "norrliden.de", true }, @@ -88597,17 +101503,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "norskpensjon.no", true }, { "nortecompartidoexperience.es", true }, { "nortecultural.tk", true }, + { "nortek.com", true }, { "northafrican.tk", true }, + { "northamericantrack.com", true }, { "northampton-vets.co.uk", true }, - { "northatlantalaw.us", true }, { "northatlantalawgroup.com", true }, { "northatlantalawgroup.net", true }, { "northaugustasc.gov", true }, + { "northbannockfire.gov", true }, { "northbayvillage-fl.gov", true }, - { "northbendface.com", true }, { "northbengaltourism.com", true }, { "northboot.xyz", false }, + { "northbranch-md.com", true }, + { "northbranfordct.gov", true }, + { "northbranfordpdct.gov", true }, { "northbrisbaneapartments.com.au", true }, + { "northcapitalb.com", true }, { "northcarolinahealth.tk", true }, { "northcharlestonsc.gov", true }, { "northcoastlabs.com", true }, @@ -88618,6 +101529,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "northdallasendo.com", true }, { "northdevonbouncycastles.co.uk", true }, { "northeastcdc.org", true }, + { "northeastcontractorsltd.co.uk", true }, { "northeasternchimney.com", true }, { "northeasternsportfishing.com", true }, { "northebridge.com", false }, @@ -88625,50 +101537,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "northernflame.tk", true }, { "northerngate.net", true }, { "northernhamsterclub.com", true }, + { "northernlight.com", true }, + { "northernlitescourier.ca", true }, { "northernpowertrain.com", true }, - { "northernselfstorage.co.za", true }, { "northfayettepa.gov", true }, { "northfayettepapolice.gov", true }, { "northfieldmn.gov", true }, + { "northfieldnh.gov", true }, { "northfinance.dk", true }, { "northflightaeromed.org", true }, { "northhampton-nh-pd.gov", true }, { "northhudsonwi.gov", true }, - { "northkenthypnotherapy.com", true }, + { "northinfocus.org", true }, + { "northiowatractorride.com", true }, + { "northkingstownri.gov", true }, { "northkoreainsider.tk", true }, { "northliner.tk", true }, { "northlinkferries.com", true }, { "northlinkferries.net", true }, + { "northmiamibeachfl.gov", true }, { "northmountliquor.ca", true }, { "northoaksmn.gov", true }, { "northokanaganbookkeeping.com", true }, { "northplainfield-nj.gov", true }, + { "northplainfieldnj.gov", true }, + { "northplattene.gov", true }, { "northpointoutdoors.com", true }, { "northpole.dance", true }, { "northportfl.gov", true }, { "northportpdfl.gov", true }, { "northpost.is", true }, + { "northprairiepdwi.gov", true }, + { "northprairiewi.gov", true }, { "northpublicidade.com.br", true }, { "northrose.net", true }, - { "northsegment.com", true }, { "northshoremums.com.au", true }, - { "northstate.net", true }, + { "northshorevisitor.com", true }, + { "northstarcommunitytrust.org", true }, + { "northstarcommunitytrust.org.uk", true }, + { "northstaredit.org.uk", true }, + { "northstarmodular.com", true }, + { "northstartrust.co.uk", true }, + { "northstartrust.com", true }, + { "northstartrust.org", true }, + { "northstartrust.org.uk", true }, + { "northsummitfireut.gov", true }, { "northtek.tk", true }, { "northteksystems.com", true }, { "northtexaspiano.org", true }, { "northtexasvasectomy.com", true }, { "northtints.store", true }, { "northtopsailbeachnc.gov", true }, + { "northumberlandcountypa.gov", true }, { "northumbria.ac.uk", true }, { "northwest-events.co.uk", true }, { "northwestimaging.com", true }, + { "northwilkesboronc.gov", true }, { "northwoodoh.gov", true }, - { "northwoodsfish.com", true }, { "northwoodstudios.org", true }, { "northzone.ml", true }, + { "norvelltwp-mi.gov", true }, { "norwalkct.gov", true }, + { "norwalkps.org", false }, { "norway.ml", true }, { "norwayinternetstuffs4u.tk", true }, + { "norwegian.events", true }, { "norwellma.gov", true }, { "norwichzen.org.uk", true }, { "norwoodma150.gov", true }, @@ -88680,7 +101613,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nosbenevolesontdutalent.com", true }, { "noschairsfauteuils.fr", true }, { "noscript.net", true }, - { "noscura.nl", true }, { "noseastumismo.com", true }, { "nosecare.com", true }, { "nosecrets.ch", true }, @@ -88692,30 +101624,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noskov.org", true }, { "nosleepforrobots.com", true }, { "noslite.nl", true }, + { "nosmoke.cc", true }, { "nosmoking.tk", true }, - { "nosoxo.com", false }, + { "nosoxo.com", true }, { "nosproduitsdequalite.fr", true }, + { "nossaseguros.ao", true }, { "nossasenhoradodesterro.com.br", true }, { "nossasenhoradopranto.pt", true }, { "nossorepresentante.com.br", true }, { "nostalgicinfinity.tk", true }, { "nostalgie.tk", true }, + { "nostalgift.ir", true }, { "nostalgiktv.ml", true }, { "nostalgimidi.se", true }, { "nostalgische-attracties.nl", true }, { "nostaljicicekcilik.com", true }, + { "nostar.fr", true }, { "nostoautomaatti.fi", true }, { "nostosh.eu.org", true }, { "nostradansacornella.tk", true }, { "nostraforma.com", false }, - { "nosuch.blog", true }, + { "nostring.io", true }, + { "nostrum.ee", true }, + { "nostrupload.com", true }, { "nosuch.site", true }, { "nosuch.website", true }, { "nosurfinbrighton.tk", true }, { "noswap.com", true }, { "nosyu.pe.kr", false }, { "not-a.link", true }, - { "not-null.co.uk", true }, { "not4me.ga", true }, { "not4me.tk", true }, { "nota-web.com", true }, @@ -88725,6 +101662,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notabug.eu", true }, { "notabug.org", true }, { "notacooldomain.com", true }, + { "notactivelylooking.com", true }, { "notadd.store", true }, { "notallmine.net", false }, { "notalone.gov", true }, @@ -88741,11 +101679,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notarkrauss.de", true }, { "notary-tx.com", true }, { "notary24.ru", true }, - { "notaryassistant.com", true }, { "notashamedministry.org", true }, { "notbolaget.se", true }, - { "notboring.co.uk", true }, { "notbot.es", true }, + { "notby.net", true }, { "notcompletelycorrect.com", true }, { "notcurses.com", true }, { "notdankmemer.lol", true }, @@ -88753,8 +101690,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "note1024.tk", true }, { "note7forever.com", true }, { "notebin.xyz", true }, + { "notebleue.com", true }, { "noteboat.net", true }, { "notebooksbilliger.de", true }, + { "notebooksteurer.shop", true }, { "notebrook.com", true }, { "notecoffee.tw", true }, { "noted.de", true }, @@ -88765,15 +101704,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notesforpebble.com", true }, { "noteskeeper.ru", true }, { "notfunny.tk", true }, + { "notgerman.com", true }, + { "nothappy.uk", true }, { "nothinbutnets.com", true }, { "nothinfancy.ca", true }, { "nothing.net.nz", true }, { "nothing.org.uk", true }, + { "nothingbundtcakes.com", true }, { "noti.tg", true }, { "noticiaelmundo.com", true }, + { "noticias7.org", true }, { "noticiasdeautos.site", true }, { "noticiasdetv.com", true }, { "noticiasdocambio.com.br", true }, + { "noticiashoy.online", true }, + { "noticiassonaqui.com", true }, { "noticiasymas.cl", true }, { "noticieropopular.tk", true }, { "noticies.tk", true }, @@ -88786,13 +101731,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notif-moncompte-laposte.info", true }, { "notific.at", true }, { "notificami.com", true }, + { "notify.gov", true }, { "notifyed.com", true }, - { "notilus.fr", true }, + { "notifymy.team", true }, { "notime.tk", true }, - { "notimundodbs.info", true }, { "notinglife.com", true }, { "notionbackups.com", true }, + { "notipress.mx", true }, + { "notisec.hu", true }, { "notisecit.hu", true }, + { "notisphererecalls.com", true }, { "notiziarioweb.tk", true }, { "notizie.ai", true }, { "notjustvacs.com", true }, @@ -88808,8 +101756,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notonprem.com", true }, { "notora.tech", true }, { "notoriousdev.com", true }, - { "notos.co", true }, - { "notre-planete.info", false }, + { "notrated.net", true }, + { "notre-planete.info", true }, { "notrefuse.tk", true }, { "notrero13.com", true }, { "notresiteduvercors.tk", true }, @@ -88817,25 +101765,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "notsafefor.work", true }, { "notsoape.com", true }, { "nottawatwpisabellami.gov", true }, + { "nottinghammoneyman.com", true }, + { "nottwo.ru", true }, + { "notube.cc", true }, + { "notube.io", true }, { "notube.net", true }, + { "notube.site", true }, { "notyour.chat", true }, - { "notyouraverageamerican.com", false }, { "nou9ta.tk", true }, { "noudjalink.nl", true }, { "nougat-anduze.fr", true }, { "noumeet.com", true }, + { "nouragha.com", true }, { "nourishandnestle.com", true }, { "nourishbyfrida.com", true }, { "noussommesluniversite.org", true }, - { "noustique.com", true }, { "nousyukum.com", true }, + { "nouveau.nl", true }, { "nouveauhosting.com.au", true }, { "nouvelle.net.au", true }, { "nova-dess.ch", false }, { "nova-eq.com", true }, { "nova-host.ml", true }, { "nova-kultura.org", true }, - { "nova-wd.org.uk", true }, { "nova.live", true }, { "novabench.com", false }, { "novacal.ga", true }, @@ -88843,22 +101795,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "novacoast.com", true }, { "novadir.com", true }, { "novafreixo.pt", true }, + { "novageracao2021.pt", true }, { "novaintegra.co", true }, { "novaintegra.com", true }, { "novak.cf", true }, + { "novakola.bg", true }, { "novalevante.info", true }, - { "novalite.rs", true }, - { "novanetnettoyage.fr", false }, + { "novalite.rs", false }, + { "novalnet.de", true }, { "novanetwork.ml", true }, { "novanice.net", true }, { "novantaphotonics.com", true }, + { "novaquark.com", true }, { "novaratoday.it", true }, { "novarock.tk", true }, { "novasdecadamanha.com.br", true }, + { "novashare.io", true }, { "novasprint.tk", true }, - { "novatelecom.cl", true }, + { "novastore.com.br", true }, + { "novastores.co", true }, + { "novatech.net", true }, + { "novatelecom.cl", false }, { "novavax.com", false }, { "novaway.ca", true }, + { "novaya.media", true }, + { "novaya.no", true }, + { "novayagazeta-ug.ru", true }, + { "novayagazeta.ee", true }, + { "novayagazeta.eu", true }, { "novayagazeta.ru", true }, { "novayazemlya.tk", true }, { "nove.city", true }, @@ -88869,35 +101833,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "novecity.it", true }, { "novecity.org", true }, { "novecitymail.com", true }, + { "novecore.pro", true }, { "novel-tools.in", true }, { "novel543.com", true }, { "novelas.net.br", true }, { "novelinglife.net", false }, { "novelly.in", true }, + { "novelmic.com", true }, { "noveltydoorers.ga", true }, { "noveltydoorest.ga", true }, { "novelvyretraite.fr", true }, { "novema.jp", true }, - { "novenascatolicas.com.br", true }, { "novenopiso.tk", true }, { "novezamky.tk", true }, { "novgorod24.tk", true }, { "novgorodinfo.tk", true }, { "novi-marof.hr", true }, - { "novi.com", true }, { "novias.co.jp", true }, - { "novicecamp.com", true }, { "noviceman.tk", true }, { "novichek-plus.ml", true }, { "novichok.ml", true }, { "novickoe.ml", true }, { "novilaw.com", true }, { "novilidery.com", true }, + { "novilist.hr", true }, { "novinkihd.tk", true }, + { "noviny.sk", true }, + { "novinykraje.cz", true }, { "novip.tk", true }, { "novlets.com", true }, { "novobi.com", true }, { "novobudowa.pl", true }, + { "novocarrobr.com.br", true }, { "novodiegomaia.com.br", true }, { "novogimn.tk", true }, { "novogradnje.si", true }, @@ -88908,8 +101875,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "novonegoc.io", true }, { "novoodesabibl.tk", true }, { "novopromo.ru", true }, - { "novoregalos.com", true }, - { "novoresume.com", false }, + { "novoresume.com", true }, { "novorossiysk.tk", true }, { "novorussiya.tk", true }, { "novosad-kom.tk", true }, @@ -88925,21 +101891,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "novostiz.tk", true }, { "novostroyki.ml", true }, { "novotoznanie.com", true }, - { "novparket.ru", true }, + { "novparket.ru", false }, + { "novrazbb.com", true }, { "novsti.cf", true }, { "novu.com", true }, - { "novumsafe.com", true }, + { "novumclinic.pl", true }, + { "novumnet.com.br", true }, { "novurania.com", true }, + { "novy.software", true }, { "novy.vip", true }, + { "novychas.online", true }, { "novye-kuhni.ml", true }, { "novysvit.com.ua", true }, { "novyzelandnamiru.cz", true }, - { "now.gg", true }, { "now.sh", true }, { "now101atm.tk", true }, { "nowaesthetic.com", true }, { "nowaovivo.com.br", true }, - { "nowar72.info", true }, { "nowarning.cc", true }, { "nowbb.tk", true }, { "nowcomplete.com.br", true }, @@ -88954,10 +101922,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nowloading.co", true }, { "nowloading.tk", true }, { "nowoczesnysalon.ga", true }, + { "nowoe.ru", true }, { "nowremindme.com", true }, { "nowtime.cc", true }, { "nowtips.gq", true }, { "nowtricity.com", true }, + { "nowzad.com", true }, { "nowzarimd.com", true }, { "noxi.ga", true }, { "noxomusic.com", true }, @@ -88965,20 +101935,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "noxx.solutions", true }, { "noxx.uk", true }, { "noy.asia", true }, - { "noy.cat", false }, - { "noydeen.com", true }, + { "noy.cat", true }, { "noyoga.at", true }, { "noyweb.tools", true }, { "nozaka-k.com", true }, { "nozel.cf", true }, { "nozel.ga", true }, { "nozel.gq", true }, + { "nozesurvival.pl", true }, { "nozom.tk", true }, { "np-edv.at", true }, { "np.search.yahoo.com", false }, { "np39.de", true }, - { "npaccel.com", true }, { "npaf.org", true }, + { "npaihb.org", true }, + { "npass.us", true }, { "npath.de", true }, { "npbeta.com", true }, { "npc-ts.org", true }, @@ -88986,65 +101957,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "npcradio.tk", true }, { "npgcdn.net", true }, { "nphrm.com", true }, - { "npiconsultoria.com.br", false }, + { "npjobsite.com", true }, + { "nplc.cc", true }, + { "nplindia.org", true }, { "npm.li", true }, { "npmcdn.com", true }, + { "npontu.com", true }, + { "npowerbusinesssolutions.com", true }, { "nppaper.be", true }, + { "nprb.org", true }, { "npregion.org", true }, { "npsas.org", true }, + { "nptelegraph.com", true }, { "nptn.tk", true }, { "npu.best", true }, + { "npws.net", true }, { "nqesh.blog", true }, { "nqesh.net", true }, { "nqesh.org", true }, { "nqesh.ph", true }, { "nqeshreviewer.com", true }, { "nqhomeinsurance.gov.au", true }, - { "nr1hosting.com", true }, + { "nqwebdesign.com", true }, { "nrac.or.jp", true }, { "nrail.eu", true }, { "nrbbs.net", true }, { "nrbpublishing.com", true }, { "nrc-gateway.gov", true }, + { "nrc.gov", true }, + { "nrchealth.com", true }, + { "nrd.gov", true }, { "nrdstd.io", true }, + { "nreihofer.de", true }, { "nrev.ch", true }, - { "nrg.edu.ee", true }, - { "nrgedge.net", true }, - { "nriol.net", true }, { "nrj-plomberie.com", true }, { "nrkn.fr", true }, { "nrldc.in", false }, { "nrm.co.nz", true }, - { "nrmc.pt", true }, - { "nrnjn.xyz", false }, + { "nrpyrenees.fr", true }, { "nrsmart.com", true }, { "nrsweb.org", true }, { "nrthcdn.me", true }, { "nrvc.net", true }, { "nrvn.cc", true }, { "nrvnastudios.com", true }, + { "nrw-stiftung-magazin.de", true }, { "ns-frontier.com", true }, { "ns230kvopenhouse.com", true }, { "ns2servers.pw", true }, { "nsa.ovh", true }, + { "nsacom.com", true }, { "nsadns.uk", true }, { "nsamail.uk", true }, { "nsapwn.com", true }, { "nsb.lk", true }, { "nsbfalconacademy.org", true }, + { "nsbih.ba", true }, { "nsboston.org", true }, { "nsboutique.com", true }, { "nsbufl.gov", true }, { "nscai.gov", true }, { "nscorporation.co.jp", true }, { "nsdcprayerforce.com", true }, + { "nsec.dk", true }, + { "nseindia.com", true }, + { "nsep.gov", true }, { "nsepapa.com", true }, + { "nserrao.com", true }, { "nsfw-story.com", true }, - { "nshepp-dct-development.azurewebsites.net", false }, + { "nsfw.dk", true }, { "nshipster.cn", true }, { "nshipster.co.kr", true }, { "nshipster.com", true }, { "nshipster.es", true }, + { "nshispeed.nl", true }, { "nsics.co.jp", true }, { "nsikakimoh.com", true }, { "nsine.be", true }, @@ -89055,10 +102041,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nsm.ee", true }, { "nsmail.cn", true }, { "nsmail.com", true }, + { "nsn.nl", true }, { "nsnsp.org", true }, { "nso.ie", true }, { "nso.li", true }, - { "nsofficeinteriors.com", true }, { "nsoft.nu", true }, { "nsoiran.tk", true }, { "nsopr.gov", true }, @@ -89067,7 +102053,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nsp.com.ua", true }, { "nsp.ua", true }, { "nspeaks.com", false }, - { "nspireoutreach.org", false }, + { "nspireoutreach.org", true }, { "nspoh.nl", true }, { "nsradiology.net", true }, { "nssfchile.tk", true }, @@ -89075,15 +102061,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nst-maroc.com", true }, { "nstatic.xyz", true }, { "nstd.net", true }, - { "nstinvoiceqa.com", true }, + { "nsteck.com", true }, { "nstnet.org", true }, { "nsu.pw", true }, { "nsure.us", true }, + { "nsv.ee", true }, { "nsworks.com", false }, { "nszero.tk", true }, { "ntags.org", true }, { "ntcoss.org.au", true }, { "ntcp.ph", true }, + { "ntcrmezon.ru", true }, + { "ntdf.co.uk", true }, { "nte.email", true }, { "ntecha.com", true }, { "ntechp.com", true }, @@ -89092,9 +102081,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nth.sh", false }, { "nti.de", true }, { "ntia.gov", true }, + { "ntindependent.com.au", true }, + { "ntinet.com", true }, { "ntinformatique.ca", true }, { "ntisummit.com", true }, + { "ntk-institute.org", true }, { "ntlabs.org", true }, + { "ntnlst.com", true }, { "ntokens.com", true }, { "ntokens.com.br", true }, { "ntotten.com", true }, @@ -89102,21 +102095,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ntppool.net", true }, { "ntppool.org", true }, { "ntr.ac.cn", true }, + { "ntreizel.com", true }, + { "nts.com", true }, + { "ntsb.gov", true }, + { "ntsipl.com", true }, + { "ntsmcqs.com", false }, { "ntsp.team", true }, + { "ntt-buses.com", true }, + { "ntu.edu.sg", true }, + { "ntuchinesesociety.com", false }, { "ntut.edu.tw", true }, + { "ntvtelugu.com", true }, { "ntx360grad-fallakte.de", true }, { "ntz.im", true }, - { "ntzwrk.org", true }, { "nu-pogodi.net", true }, { "nu.com.mx", true }, { "nu.fi", true }, - { "nu3vex.com", true }, { "nuacht.ie", true }, + { "nuage-libre.fr", true }, { "nuage365.de", false }, - { "nualgiponds.com", true }, { "nuanda.es", true }, { "nuansagoal.co", true }, { "nubank.com.br", true }, + { "nube.com.br", true }, { "nube.ninja", true }, { "nubehogar.nsupdate.info", true }, { "nubian.cf", true }, @@ -89124,40 +102125,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nubilum.noip.me", true }, { "nubium.net", true }, { "nubla.fr", true }, + { "nubla.io", true }, { "nubnology.com", true }, + { "nubraza.com", true }, { "nubu.at", true }, { "nubunk.com.ng", false }, + { "nucciocondorelli.it", true }, { "nuckollscountyne.gov", true }, { "nuclea.site", true }, { "nuclearcake.de", true }, - { "nuclearcat.com", true }, { "nuclearforum.tk", true }, { "nuclearhell.tk", true }, + { "nuclearmed.org", true }, { "nuclearnation.tk", true }, { "nuclearsky.tk", true }, { "nucleios.com", true }, + { "nucleo.jor.br", true }, { "nucleomarketing.com.br", true }, { "nucleosynth.space", true }, { "nucleuscore.org", true }, { "nucleuspanel.com", true }, { "nudaveritas.tk", true }, { "nudeandfresh.tk", true }, + { "nudegirlphotos.com", true }, + { "nudegirls.tv", true }, { "nudel.ninja", true }, { "nudes.ovh", true }, + { "nudesexporn.com", true }, + { "nudetits.net", true }, + { "nudetube.com", true }, { "nudevotion.com", true }, - { "nudge.ai", false }, { "nudgesecurity.io", true }, { "nudo.tk", true }, + { "nudoleaks.com", true }, { "nuecescountytx.gov", true }, { "nuel.cl", true }, { "nuernberg-finanzen.de", true }, - { "nuespacios.com", true }, + { "nuespacios.com", false }, + { "nuestraboda.ec", true }, { "nuestrasdanzashn.tk", true }, { "nuevacombarbala.tk", true }, { "nuevaimagenpublicidad.es", true }, { "nuevapublicidad.tk", true }, - { "nuevaya.com.ni", true }, - { "nuexfitness.com", true }, + { "nuevaya.com.ni", false }, { "nuffield.nl", true }, { "nugdev.co", false }, { "nuggit.ga", true }, @@ -89166,21 +102176,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nugush.tk", true }, { "nuhbeg.com", true }, { "nuhil.tk", true }, + { "nuhs.edu.sg", true }, { "nuipogoda.ru", true }, { "nuitec.com.br", true }, { "nuits-franciliennes.fr", true }, { "nuke-masters.tk", true }, + { "nukegeyobo.jp", true }, { "nukeiso.ml", true }, { "nukeportal.ml", true }, { "nukeportal.tk", true }, { "nukeshop.tk", true }, { "nukleoti.de", true }, - { "nukleovisual.com", true }, { "nukute.com", false }, + { "nul20.nl", true }, { "null-d.com", true }, { "null-life.com", false }, { "nullbit.tk", true }, - { "nullbox.co", true }, + { "nullbyte.es", true }, { "nulldev.org", true }, { "nulle-part.org", true }, { "nulledme.ga", true }, @@ -89188,33 +102200,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nullificatr.tk", true }, { "nullnix.gr", true }, { "nullonerror.org", true }, + { "nullop.tech", true }, + { "nullptr.zone", true }, { "nullroute.com", true }, + { "nullroute.wtf", true }, { "nullscripts.tk", true }, { "nullsechs.tk", true }, { "nullshare.tk", true }, { "nulltime.net", true }, + { "nullvoid.me", true }, { "nullxsec.net", true }, { "nully.xyz", true }, + { "nulo.ar", true }, { "nulo.in", true }, + { "nuls.io", true }, + { "nulsc.biz", true }, { "numancia.tk", true }, { "numarasorgulama.tel", true }, - { "numbed.xyz", true }, { "number.me", true }, { "numbercult.net", true }, { "numbermunchers.net", true }, - { "numberonebc.com", true }, { "numberzero.org", true }, + { "numbots.com", true }, { "numeezy.com", true }, + { "numerama.com", true }, { "numericall.gq", true }, { "numerik-games.ch", false }, + { "numeriquoi.com", true }, { "numeritelefonici.it", true }, + { "numerix.com", true }, { "numerli.com", true }, { "numero1.ch", false }, { "numero1.tk", true }, { "numerobis.tk", true }, + { "numerologist.com", true }, + { "numerosrojos.es", true }, + { "numerossanos.com.ar", true }, { "numerouno.ml", true }, - { "numinous-travel.com", true }, + { "numismatix.de", true }, { "numismed-seniorcare.de", true }, + { "numismeo.com", true }, { "numista.com", true }, { "nummer378.de", true }, { "numo.co", true }, @@ -89224,6 +102249,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nunesgh.org", true }, { "nunnenmacher.net", false }, { "nunnun.jp", true }, + { "nuno-sarmento.com", true }, { "nunoarruda.com", true }, { "nunoefabia.tk", true }, { "nunogand.com", true }, @@ -89232,25 +102258,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nunoprospero.com", true }, { "nunsarean.tk", true }, { "nuntiicaelo.in.ua", true }, - { "nuoha.com", true }, + { "nunu.cf", true }, + { "nunu.ml", true }, { "nuooly.com", true }, { "nuos.org", true }, { "nuovaelle.it", true }, { "nuovaguardia.tk", true }, - { "nuove.net", true }, { "nuovicasino.it", true }, { "nupaybusiness.com.br", true }, { "nuquery.com", true }, - { "nuquery.org", true }, { "nur-test.de", true }, { "nur.berlin", true }, + { "nuraling.com", true }, { "nuranagi.rocks", true }, { "nureg.club", true }, { "nureg.net", true }, - { "nureg.xyz", true }, { "nuria-fergo.tk", true }, { "nuriaamat.com", true }, { "nuriacamaras.com", true }, + { "nurkamol.com", true }, { "nurlyn.com", false }, { "nurmio.fi", true }, { "nurnabi.ml", true }, @@ -89259,59 +102285,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nursejj.com", true }, { "nursemom.ca", true }, { "nurserystory.co.uk", true }, - { "nurses.dating", true }, + { "nurseslabs.com", true }, + { "nursing-school-degrees.com", true }, { "nursing-school2.tk", true }, { "nursingconsultant.ca", true }, + { "nursinglicensure.org", true }, { "nursingschool.network", true }, { "nursunity.ml", true }, - { "nus.edu.ws", true }, { "nusaceningan.io", true }, { "nusantaraku.tk", true }, { "nusatrip-api.com", true }, { "nussadoclub.org", true }, { "nussschale.eu", true }, + { "nustay.com", true }, { "nut-dev.com", true }, { "nut.services", true }, { "nut.spb.ru", true }, { "nutbot.co.uk", true }, - { "nutcracker.toys", true }, { "nutikell.com", true }, { "nutleyarchives.org", true }, { "nutleyeducationalfoundation.org", true }, { "nutleyef.org", true }, { "nutra-creations.com", true }, + { "nutra.tk", true }, { "nutrafitsuplementos.com.br", true }, { "nutralivbio.com", true }, { "nutrashop.fr", true }, { "nutriciametabolics-shop.de", true }, { "nutricionistatulioalmeida.com", true }, + { "nutriciously.com", true }, { "nutriclub.co.id", true }, - { "nutrienti.eu", true }, + { "nutrifruiti.ca", true }, { "nutrifyyourself.com", true }, { "nutrijets.com", true }, { "nutriment.co.uk", true }, { "nutripedia.gr", true }, + { "nutripure.fr", true }, { "nutrisidangym.com", true }, { "nutrislice.com", true }, { "nutristories.gr", true }, { "nutrition.gov", false }, { "nutritiondynamixrd.com", true }, + { "nutritioned.org", true }, { "nutritionfitness.fr", true }, { "nutritious.cf", true }, { "nutrizionista.roma.it", true }, + { "nutroeffect.com", true }, { "nutsandboltsfoundation.org", true }, { "nutsforfruits.com.au", true }, - { "nuttydelite.com", true }, { "nutwgent.tk", true }, { "nuus.hu", true }, { "nuva.hu", true }, { "nuvabridge.com", true }, { "nuvasystem.com", true }, { "nuvechtdal.nl", true }, + { "nuvemshop.com.br", true }, { "nuvini.com", true }, { "nuvoagency.com", true }, { "nuvolosicuro.io", true }, { "nuvotheagency.com", true }, + { "nuwave.com", true }, { "nux.jp", true }, { "nuxer.fr", true }, { "nuzhenkredit.ga", true }, @@ -89332,36 +102365,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nvestproperties.co.za", true }, { "nvests.co.za", true }, { "nvestsec.co.za", true }, - { "nvestsecurities.co.za", true }, { "nvfh.co.za", true }, + { "nvfoundation.com", true }, { "nvh.group", true }, { "nviewscareer.com", true }, { "nvigate.gov", true }, + { "nvio.mx", true }, + { "nvkc.nl", false }, { "nvl-game.tokyo", true }, { "nvleg.gov", true }, { "nvlifeinsurance.info", true }, { "nvlop.xyz", false }, { "nvme.xyz", true }, { "nvmo.org", true }, + { "nvnv.cf", true }, { "nvoip.com.br", true }, { "nvq.nl", true }, { "nvr.bz", true }, + { "nvrddma.gov", true }, { "nvrk.edu.ee", true }, { "nvsp.in", true }, { "nvtc.gov", true }, { "nvtpower.com", true }, { "nvtz.nl", true }, { "nvz-kennisnet.nl", true }, + { "nw-glass.com", true }, { "nw-risk.com", true }, - { "nwautorebuild.com", true }, + { "nwaafund.org", true }, { "nwbc.gov", false }, { "nwea.nl", true }, - { "nwerc.party", true }, { "nwfdaz.gov", true }, + { "nwfem.com", true }, { "nwh.nz", true }, + { "nwimports.com", true }, { "nwitt.us", true }, - { "nwk1.com", true }, - { "nwmd.nl", true }, { "nwoordinances.tk", true }, { "nwopage.tk", true }, { "nwperformanceandoffroad.com", true }, @@ -89370,15 +102407,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nwradio.tk", true }, { "nwshell.com", true }, { "nwspecialists.com", true }, - { "nwtoys.com", true }, + { "nwtl.com", true }, { "nwtparks.ca", true }, { "nwtrb.gov", true }, { "nwuss.okinawa", true }, { "nwwnetwork.net", true }, { "nx42.pw", true }, { "nxcloud.ml", true }, - { "nxcloud.tk", true }, + { "nxdomain.info", true }, { "nxedge.com", true }, + { "nxf.li", true }, { "nxinfo.ch", false }, { "nxit.ca", true }, { "nxlogis.kr", true }, @@ -89386,6 +102424,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nxplinc.com", true }, { "nxstudios.tk", true }, { "nxth.io", true }, + { "nxtport.eu", true }, + { "nxxcloud.nl", true }, + { "nxznews.com", true }, { "nya-cloud.com", true }, { "nya.as", true }, { "nya.autos", true }, @@ -89393,9 +102434,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nya.one", true }, { "nya.pictures", true }, { "nya.show", true }, + { "nya.work", true }, + { "nyaan.net", true }, + { "nyaan.org", true }, { "nyac.at", true }, + { "nyadisk.net", true }, { "nyadora.moe", true }, { "nyahururu.tk", true }, + { "nyahururumarketplace.com", true }, { "nyaken.tk", true }, { "nyan.it", false }, { "nyan.kim", true }, @@ -89406,7 +102452,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nyanor.cloud", true }, { "nyansparkle.com", true }, { "nyantec.com", true }, + { "nyap.org", true }, + { "nyaspeed.com", true }, { "nyatane.com", true }, + { "nyauth.com", true }, { "nyawau.ch", true }, { "nyawork.com", true }, { "nybcreative.com", true }, @@ -89421,8 +102470,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nycu.moe", true }, { "nydig.com", false }, { "nydnxs.com", false }, + { "nyeclipse.com", true }, { "nyecountynv.gov", true }, - { "nyerjachioval.hu", true }, + { "nyerjakekszekkel.hu", true }, { "nyerjazoreoval.hu", true }, { "nyerjenaheraval.hu", true }, { "nyfurnitureoutlets.com", true }, @@ -89433,14 +102483,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nyheter-sverige.ga", true }, { "nyiaarhus.dk", true }, { "nyiarlumar.tk", true }, - { "nyiooc.org", true }, + { "nyiooc.org", false }, { "nyirc.gov", true }, + { "nykoping.se", true }, { "nyla.life", false }, { "nylasercenter.com.pl", true }, { "nylevemusic.com", true }, + { "nylipa.gov", true }, + { "nyliveauctions.com", true }, { "nyloc.de", true }, - { "nylonfeetporn.com", false }, { "nym.at", true }, + { "nynadynasir.co.id", false }, + { "nynadynasir.my.id", true }, + { "nyoka-flutter.com", true }, + { "nyoka-nodejs.com", true }, + { "nyoka-react.com", true }, { "nyoka.io", true }, { "nyoka.ru", true }, { "nyoliveoil.com", true }, @@ -89451,24 +102508,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nysis.fr", true }, { "nysis.net", true }, { "nysis.org", true }, - { "nysteak5.com", true }, { "nystrom.tk", true }, { "nystrs.gov", true }, { "nystudio107.com", true }, { "nytrafficticket.com", true }, { "nytvattat.tk", true }, + { "nyupoco.com", true }, + { "nyuware.pw", true }, { "nyxum.com", true }, { "nyyu.tk", true }, { "nyzed.com", true }, { "nz.search.yahoo.com", false }, + { "nzb.su", true }, + { "nzbfinder.ws", true }, { "nzbr.de", true }, + { "nzbstars.com", true }, + { "nzcasinohex.com", true }, { "nzcorp.dk", true }, { "nzdata.org", true }, { "nzelaweb.com", true }, { "nzguns.co.nz", true }, + { "nzhistory.govt.nz", true }, { "nzia.tk", true }, + { "nzmaths.co.nz", true }, + { "nzmca.org.nz", true }, + { "nzmomentum.co.nz", true }, + { "nzno.org.nz", true }, { "nzpost.ga", true }, { "nzroom.cf", true }, + { "nzsafety.co.nz", true }, + { "nzsafetyblackwoods.co.nz", true }, { "nzstudy.ac.nz", true }, { "nzt.capital", true }, { "nzt.co", true }, @@ -89502,17 +102571,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "nzws.me", false }, { "o-bereg.ru", true }, { "o-dvor.tk", true }, + { "o-n-s.co.jp", true }, { "o-results.ch", true }, + { "o-ta-su-ke.net", true }, { "o00.eu", true }, { "o00228.com", true }, { "o0c.cc", true }, + { "o11y.top", true }, { "o15y.com", true }, { "o2.tn", true }, { "o2design.tk", true }, + { "o2fitnes.ru", true }, + { "o2solutions.ae", true }, { "o2ss.com", true }, - { "o3-staging.herokuapp.com", true }, - { "o3.wf", true }, { "o36533.com", true }, + { "o365info.com", true }, { "o3ptitschats.fr", true }, { "o3swap.com", true }, { "o3wallet.com", true }, @@ -89523,61 +102596,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "o6729.com", false }, { "o6957.co", true }, { "o6asan.com", true }, + { "o6i.de", true }, { "o7.nz", true }, - { "o81365.com", true }, { "o82365.com", true }, { "o9297.co", true }, { "o9397.com", true }, { "o9728.co", true }, { "o98.net", true }, + { "o9solutions.com", true }, + { "oaaa.org", true }, { "oabtherapy.com", true }, { "oadeo.com", true }, + { "oagf.gov.ng", true }, { "oahpmdata.net", true }, { "oakbarnvets.com", true }, { "oakbarnwellness.com", true }, + { "oakbottle.com", true }, { "oakcreekwi.gov", true }, + { "oakdale.org", true }, + { "oakdalemn.gov", true }, { "oaken.duckdns.org", true }, { "oakesfam.net", true }, { "oakface.com.au", true }, { "oakharbor.gov", true }, + { "oakhillfl.gov", true }, { "oakhillseniors.com", true }, { "oakislandnc.gov", true }, + { "oaklandenrolls.org", true }, { "oakparkelectrical.com", true }, { "oakparkexteriorlighting.com", true }, { "oakparklandscapelighting.com", true }, { "oakparklighting.com", true }, - { "oakparkmedicalcentre.ga", true }, { "oakparkoutdoorlighting.com", true }, { "oakrealty.ca", true }, { "oakridgeclinic.ca", true }, { "oakshield.nl", true }, { "oakslim.com", true }, { "oaktravel.nl", true }, - { "oaktree-realtors.com", true }, + { "oaktree-realtors.com", false }, + { "oaktreecapital.com", true }, { "oaktreelodge.org.uk", true }, { "oakwood-park.tk", true }, { "oandareview.co", true }, + { "oanow.com", true }, { "oase-fuer-wohlbefinden.ch", true }, { "oasegroen.nl", true }, + { "oasen.nl", true }, { "oasiristorantebagno.it", true }, + { "oasis-info.co.uk", true }, + { "oasis.in", true }, { "oasisbodycare.jp", true }, { "oasisgenetics.com", true }, { "oasiskitchens.com", true }, { "oasislab.id", true }, - { "oatlandsdentalweybridge.com", true }, { "oatmealdome.me", true }, { "oatycloud.spdns.de", true }, - { "oauth.how", true }, { "oauthaccountmanager.googleapis.com", true }, { "oauthdb.com", true }, { "ob-salon.ru", true }, + { "obagg.com", true }, { "obala.ga", false }, { "obalawebsolutions.ml", true }, { "obalky-obaly.sk", true }, { "obamalibrary.gov", true }, { "obamawhitehouse.gov", true }, - { "obamed.com", true }, + { "obandln.de", true }, { "obarax.com", true }, + { "obasigeorge.com", true }, { "obatjantungrematik.tk", true }, { "obbr.tk", true }, { "obcevents.co.uk", true }, @@ -89587,12 +102672,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "obd2scanner.club", true }, { "obdadvisor.com", true }, { "obdinvest.ru", true }, - { "obdlink.com", true }, { "obdolbacca.ru", true }, { "obec-krakovany.cz", true }, { "obecvinodol.tk", true }, { "obed-doma.tk", true }, - { "obejo.tk", true }, { "obejor.com.ng", true }, { "obelisco.tk", true }, { "obelix05.duckdns.org", true }, @@ -89606,10 +102689,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "obermeiers.eu", true }, { "oberoi.de", true }, { "obery.com", true }, + { "obesidadenmallorca.com", true }, { "obesidadlavega.com", true }, { "obet901vip.com", true }, - { "obfuscate.xyz", true }, - { "obfuscated.xyz", true }, + { "obezma.com", true }, { "obg-global.com", true }, { "obg.ceo", true }, { "obgalslancaster.com", true }, @@ -89618,31 +102701,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "obgynmiamifl.com", true }, { "obgynqueensnyc.com", true }, { "obi-betriebsrat.tk", true }, + { "obi-investissements.fr", true }, { "obido.pl", true }, { "obihoernchen.de", true }, { "obioncountytn.gov", true }, { "obioncountytn911.gov", true }, { "obj.moe", true }, - { "objavka.com", false }, { "object.earth", true }, { "objectcache.pro", true }, - { "objectcomp.com", true }, - { "objectcomp.de", true }, - { "objectcomp.eu", true }, - { "objectcomp.net", true }, - { "objectcomp.org", true }, { "objectif-securite.ch", true }, { "objectif-terre.ch", false }, { "objectif-vancouver-2010.fr", true }, { "objectifs-fitness.com", true }, + { "objectivefoodie.com", true }, + { "objectivity.co.uk", true }, { "objectorientedsolutions.com", true }, { "objekt-textil.ch", false }, { "objetodestaque.com.br", true }, - { "objexunlimited.com", true }, + { "obl.ong", true }, { "oblak.host", true }, - { "oblik.pp.ua", true }, { "oblik.press", true }, - { "oblikdom.ru", false }, + { "oblikdom.pro", false }, { "oblinvest.org", true }, { "oblitsov.ru", true }, { "oblivious.ml", true }, @@ -89660,7 +102739,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oboivam.ru", true }, { "obomne.tk", true }, { "obozrevatel.tk", true }, - { "obra.com.br", true }, + { "obpr.gov.au", true }, + { "obra.com.br", false }, { "obrabotka-zakazow.tk", true }, { "obraideal.com", true }, { "obrasereformasbh.com.br", true }, @@ -89671,14 +102751,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "obscur.tk", true }, { "obscur.us", true }, { "obscureware.xyz", true }, - { "observass.com", true }, + { "observability.top", true }, + { "observatoire-des-partenariats.fr", true }, { "observer.com", true }, - { "observer.name", true }, { "obsessedwithknives.ru", true }, - { "obsessharness.com", true }, { "obsessivecompulsiveexplained.com", true }, + { "obsessivefacts.com", true }, + { "obsica.com", true }, { "obsidianirc.net", true }, { "obsproject.com", true }, + { "obss.com.tr", true }, + { "obss.tech", true }, { "obstgarten.berlin", true }, { "obsuzhday.com", true }, { "obtima.org", true }, @@ -89690,23 +102773,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "obuysya.tk", true }, { "obxlistings.com", true }, { "obyna3.pl", true }, + { "obyrai.org.ua", true }, { "obyvateleceska.cz", true }, { "obzor-znakomstv.tk", true }, { "obzory-evgeny.tk", true }, { "oc-minecraft.com", true }, { "oc-sa.ch", false }, + { "ocabj.net", true }, { "ocacnews.net", true }, + { "ocalafl.gov", true }, { "ocalaflwomenshealth.com", true }, { "ocalapd.gov", true }, { "ocalculator.com", true }, - { "ocapic.com", true }, + { "ocalhukuk.com", true }, + { "ocapiarquitetura.com.br", true }, + { "ocarm.org", true }, { "ocarupo.com", false }, { "ocasio.es", true }, { "ocassessor.gov", true }, - { "ocbdshop.com", true }, + { "ocauditor.gov", true }, + { "ocb.gov", true }, + { "ocbc.com", true }, + { "occ.eu", true }, { "occ.gov", true }, - { "occasion-impro.com", true }, - { "occenterprises.org", true }, + { "occam-consulting.de", true }, + { "occasion.nc", true }, { "occhelps.gov", true }, { "occrp.org", true }, { "occu.lt", true }, @@ -89718,32 +102809,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "occultisme.tk", true }, { "occultumproductions.tk", true }, { "occupational-therapy-colleges.com", true }, + { "occupationaltherapylicense.org", true }, { "occupations.org.ru", true }, { "occupy4elephants.tk", true }, { "occupybakersfield.tk", true }, { "occupymedia.org", true }, { "occupynightlife.com", true }, + { "occuspace.io", true }, { "ocd2016.com", true }, { "ocdadmin.com", true }, { "ocdhub.co.za", true }, { "ocealy.com", true }, { "ocean-of-love.ml", true }, + { "ocean-sun.com", true }, { "oceanaway.tk", true }, { "oceanborn.ml", true }, { "oceanborn.tk", true }, { "oceanbreezehomes.com", true }, + { "oceancity.vin", true }, + { "oceancountynj.gov", true }, { "oceancrew.org", true }, { "oceandns.eu", true }, { "oceandns.net", true }, - { "oceandns.nl", true }, { "oceane.training", true }, + { "oceanearth.us", true }, + { "oceanfirst.com", true }, { "oceaniahome.tk", true }, { "oceaniaservergroup.com", true }, + { "oceanic.global", true }, { "oceanings.com", true }, { "oceanlogisticgroup.com", true }, { "oceanlord.me", true }, { "oceanofapk.com", true }, - { "oceanofpdf.com", true }, { "oceanohost.com", true }, { "oceanpark.vn", true }, { "oceanshaman.cf", true }, @@ -89755,11 +102852,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oceanspringsarchives.net", false }, { "oceansurplus.tk", true }, { "oceanviewde.gov", true }, + { "oceanvisuals.com", true }, { "ocenilla.ml", true }, { "ocenilla.tk", true }, + { "ocenka-msfo.ru", true }, { "ocenka-nedv.ml", true }, { "ocenka.tk", true }, - { "ocenovani-inspekce.cz", true }, + { "ocennaswgoogle.pl", true }, { "ocf.io", true }, { "ocfelections.gov", true }, { "ocg-card.com", true }, @@ -89768,33 +102867,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ochatoosenbei.tk", true }, { "ochemindessens.com", true }, { "ochki-linzi.tk", true }, - { "ochoymedio.net", true }, + { "ochobeatsmedia.net", true }, + { "ochotnicky.com", true }, { "ochrepoint.com.au", true }, { "ochsenfeld-design.de", true }, { "ochsenfeld-fotografie.de", true }, { "ochsenfeld.co", true }, { "ochsundjunior.ch", true }, { "ochsundjunior.swiss", true }, + { "ochutnejitalii.cz", true }, { "ociaw.com", true }, { "ocimumcdn.net", true }, - { "ockara.com", true }, { "ockendenhemming.co.uk", true }, { "oclausen.com", true }, { "ocloudhost.com", true }, { "oclube.online", true }, + { "ocmlng.com", true }, { "ocmw.gent", true }, { "ocmwgent.be", true }, { "ocni-ambulance-most.cz", true }, { "ocnjapartment.com", true }, + { "ocnjdaily.com", true }, { "ocodo.ru", true }, { "ocolere.ch", true }, - { "ocongo.com", true }, { "oconlakewi.gov", true }, { "ocontocountywi.gov", true }, { "ocotg.com", true }, { "ocponj.gov", true }, { "ocprintgraphics.gov", true }, - { "ocs-finance.net", true }, + { "ocqueoctwpmi.gov", true }, { "ocsamochodu.pl", true }, { "ocsan.gov", true }, { "ocsbl.at", true }, @@ -89820,12 +102921,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ocsbl.tech", true }, { "ocsbl.uk", true }, { "ocsc.pro", true }, + { "ocsnet.com", true }, { "octagon.institute", true }, + { "octal.es", false }, { "octane.co", true }, { "octane.net.au", true }, { "octanio.com", true }, { "octarine.cc", true }, { "octarineparrot.com", true }, + { "octav-avocats.fr", true }, { "octav.name", true }, { "octavia.net", true }, { "octaviorojas.tk", true }, @@ -89834,6 +102938,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "octobered.com", false }, { "octocaptcha.com", true }, { "octod.tk", true }, + { "octodex.ru", true }, + { "octoeverywhere.com", true }, { "octofox.de", true }, { "octohedralpvp.tk", true }, { "octolopagon.games", true }, @@ -89841,29 +102947,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "octopoos.org", true }, { "octopub.tk", true }, { "octopus-apps.be", true }, - { "octopus-code.org", true }, { "octothorpe.club", true }, { "octothorpe.ninja", true }, { "octovpn.com", true }, { "ocufekojip.ga", true }, - { "oculo.by", true }, + { "ocularsolution.com", true }, { "oculta.ml", true }, { "oculus.com", true }, + { "ocunclaimed.gov", true }, { "ocuuc.org", true }, { "ocvote.gov", true }, { "ocwr.gov", true }, { "ocydias.tk", true }, - { "odabilocal.com", true }, - { "odacyeux.fr", true }, { "odatakao.com", true }, + { "oday.org", true }, { "odbierzspozywke.pl", true }, { "odbtomsk.ru", true }, + { "odd17.org", true }, { "oddfellowwellness.com", true }, { "oddformrecords.tk", true }, { "oddity.tk", true }, { "oddlama.org", true }, { "oddlemon.xyz", true }, - { "oddlycandle.com", true }, { "oddmouse.com", false }, { "oddmuse.org", true }, { "oddnumber.ca", true }, @@ -89873,17 +102978,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oddscasino.top", true }, { "oddsmoneyers.ga", true }, { "oddsnet.com", true }, + { "oddsseeker.com", true }, { "oddtime.net", true }, { "oddtoes.com", true }, { "ode.red", true }, { "odedigitale.marketing", true }, { "odegua.com", true }, { "odejdamoda.tk", true }, + { "odeliabridal.com", true }, { "odensc.com", true }, { "odensc.me", true }, { "odenvilleal.gov", true }, { "odeonentertainment.co.uk", true }, + { "odesigning.com", true }, { "odessalove.tk", true }, + { "odete.com.br", true }, { "odezdaotto.tk", true }, { "odhosc.ca", true }, { "odiall.co", true }, @@ -89898,16 +103007,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "odinseye.net", true }, { "odinson.tk", true }, { "odiris.lk", true }, + { "odisealinux.com", false }, { "odishainfo.tk", true }, + { "odishassc.in", true }, + { "odishasuntimes.com", true }, + { "odishatv.in", true }, { "odisseo.io", true }, { "odlicomul.ga", true }, { "odnostranichnik.tk", true }, { "odo-pro.ru", true }, - { "odolbeau.fr", true }, + { "odo.online", true }, { "odonata-editions.fr", true }, { "odonti.com", true }, + { "odontoguia.co", true }, { "odontologiawilliampizarro.com", true }, { "odoo.co.th", true }, + { "odoranswers.com", true }, { "odoru.ga", true }, { "odorucinema.ga", true }, { "odosblog.de", true }, @@ -89923,10 +103038,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "odyssey44.com", true }, { "odysseyofthemind.eu", true }, { "odysseytraining.com.au", true }, - { "odziezrobocza.pl", true }, { "odzyskaniedomeny.pl", true }, { "odzyskiwanie-danych-z-dysku.pl", true }, + { "odzyskiwanie.biz", true }, { "odzywianie.info.pl", true }, + { "oe-it.ru", true }, + { "oe.ink", true }, { "oe0fcdncxjpdd05b.myfritz.net", true }, { "oea.gov", true }, { "oec-music.com", false }, @@ -89934,7 +103051,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oedeemboek.nl", true }, { "oegd.at", true }, { "oeh.ac.at", true }, - { "oeilpouroeilcreations.fr", true }, + { "oeilpouroeilcreations.fr", false }, { "oeko-bundesfreiwilligendienst-sh.de", true }, { "oeko-bundesfreiwilligendienst.de", true }, { "oeko-jahr-jubilaeum.de", true }, @@ -89943,54 +103060,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oelbilder-oelmalerei.de", true }, { "oelsner.net", true }, { "oemdealsers.ga", true }, + { "oemparcacim.com", true }, { "oemspace.net", true }, { "oemwolf.com", true }, - { "oenings.eu", true }, + { "oen.tw", true }, { "oeno.link", true }, { "oenolab-vidalies.com", true }, - { "oepsbanaan.nl", true }, { "oermen.com", true }, { "oertle.tk", true }, { "oessi.eu", true }, { "oesterbaron.nl", true }, + { "oettig.de", true }, { "oetzies-quiz.com", true }, - { "oevkg.at", true }, { "of-sound-mind.com", true }, - { "of2106.dnsalias.org", false }, + { "of2106.dnsalias.org", true }, { "of2m.fr", true }, + { "ofa.org", true }, { "ofaas.jp", true }, { "ofallonil.gov", true }, { "ofaqim.city", true }, { "ofasoft.com", true }, + { "ofb.uz", true }, { "ofcampuslausanne.ch", false }, { "ofelia.tk", true }, { "ofertasadsl.com", true }, { "ofertastop.es", true }, - { "ofertaviva.com.br", true }, { "ofertino.es", true }, { "ofertolino.fr", true }, + { "off-festival.pl", true }, + { "off-gridodyssey.com", true }, { "off-rabota.tk", true }, { "off.net.mk", true }, - { "offandonagain.org", true }, { "offbeat-music.com", true }, + { "offbeatbeats.com", true }, { "offbeatbits.com", true }, { "offbyinfinity.com", true }, { "offcasesstore.com", true }, { "offenekommune.de", true }, { "offenes-deutschland.de", true }, { "offensity.com", true }, + { "offensivesentinel.com", true }, { "offentligsektormedmoln.se", true }, + { "offeo.com", true }, { "offer-today.ml", true }, { "offerhome.com", true }, { "offermagnet.co", false }, { "offermann-koeln.de", true }, { "offers-daraghmehstores.com", true }, - { "offerte-gas.it", true }, - { "offerte-luce.it", true }, + { "offers.jp", true }, + { "offgamers.com", true }, { "offgames.io", true }, { "offgrid.lt", true }, { "offgrid.lv", true }, { "offgridauto.com", true }, + { "office", true }, { "office-addins.com", true }, { "office-aslabo.com", true }, { "office-basilique.notaires.fr", true }, @@ -90002,6 +103125,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "office-op.tk", true }, { "office-ruru.com", true }, { "office.urown.cloud", true }, + { "office2s.com", true }, { "office365-apps.com", true }, { "office365.us", true }, { "officecode.co.uk", true }, @@ -90012,38 +103136,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "officeface.cf", true }, { "officeforstudents.org.uk", true }, { "officefundays.co.uk", true }, + { "officeguide.cz", true }, { "officeinteriors.co.nz", true }, + { "officemove.ca", true }, { "officemovepro.com", true }, + { "officemoves.ca", true }, + { "officepie.pro", true }, { "officerjones.tk", true }, { "officert.ga", true }, { "officevibe.com", true }, { "official-sensitive.org", true }, - { "officialdbay.com", true }, - { "officialdistrict5.com", true }, - { "officialdose.com", true }, + { "official.my", true }, + { "officialazhanorthcoast.com", true }, { "officialdubaidev.com", true }, - { "officialgaiasabbour.com", true }, { "officialhazalturesan.tk", true }, - { "officialilmonte.com", true }, - { "officialmountainview.com", true }, + { "officialmc2.com", true }, { "officialniledevelopments.com", true }, { "officialpyramids.com", true }, - { "officialreedygroup.com", true }, - { "officialrivan.com", true }, { "officialsunset.com", true }, { "officina.roma.it", true }, { "officina.tk", true }, { "officium.tech", true }, - { "offlimo.com", true }, + { "offis.de", false }, { "offlineauthentication.com", true }, { "offpages.cf", true }, { "offpages.gq", true }, { "offpages.ml", true }, { "offpageseopro.tk", true }, + { "offrank.xyz", true }, { "offroadhoverboard.net", true }, - { "offsetservices.co.uk", true }, { "offshoot.rentals", false }, - { "offshoreclamp.com", true }, + { "offshoredaddy.com", true }, { "offshoremoney.tk", true }, { "offshoretravelsest.ga", true }, { "offshorewfs.com", true }, @@ -90051,18 +103174,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "offspringmexico.tk", true }, { "offspringzero.tk", true }, { "offtherails.ie", true }, - { "offtherayles.com", true }, + { "offtheshelf.com", true }, { "offtopica.uk", false }, + { "offworld.com", true }, { "ofggolf.com", true }, { "oficinadanet.com.br", true }, { "oficoex.es", true }, { "oficomercr.com", false }, { "ofileo.fr", true }, + { "ofina.on.ca", true }, { "ofis.tk", true }, { "ofisescort.ga", true }, { "ofisescort.tk", true }, { "ofkodasplace.nl", true }, - { "oflance.com", true }, { "oflow.me", false }, { "ofo.moe", true }, { "ofo2.com", false }, @@ -90070,35 +103194,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oformi.net", true }, { "oformit-zajm-kruglosutochno.ga", true }, { "oformlaj.ga", true }, + { "ofpad.com", true }, { "ofrion.lu", true }, + { "ofs-28.com", true }, { "ofsetas.lt", true }, { "oftamedic.com", false }, { "oftn.org", true }, { "ofuquemalitaestoy.tk", true }, + { "og-chemistry.ru", true }, { "oga.fit", false }, { "ogamerezine.tk", true }, { "ogarkovo.ml", true }, - { "ogatsu-cho.com", true }, + { "ogcloud.io", true }, { "ogdensburgnj.gov", true }, { "oge.ch", false }, { "oge.gov", true }, { "ogfarms.in", true }, { "oggw.us", true }, { "oggyp.com", true }, + { "ogilvy.com", true }, { "ogis.gov", true }, { "ogkw.de", true }, + { "oglebay.com", true }, { "oglecountyil.gov", true }, { "oglen.ca", true }, + { "oglesbyil.gov", true }, { "oglix.com.br", true }, { "ogmworld.tk", true }, - { "ognedoor.ru", true }, + { "ognedoor.ru", false }, { "ognemet.net", true }, { "ognyan.tk", true }, { "ogo-knigi.ml", true }, { "ogogo-knigi.ml", true }, { "ogolnotematyczny.pl", true }, + { "ogon.ru", true }, { "ogorod-money.tk", true }, + { "ogorodnik.guru", true }, + { "ogorodoved.info", true }, { "ogot.org", true }, + { "ogoulems.com", true }, { "ogrenciyurtlari.tk", true }, { "ogretmenimsanat.com", false }, { "ogui.de", true }, @@ -90109,17 +103243,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ogznet.com", true }, { "oh-my-lash.nl", true }, { "oh14.de", false }, + { "ohai.is", true }, { "ohai.su", true }, + { "ohako-inc.jp", true }, + { "oharas.fr", true }, { "oharrasplumbing.com", true }, - { "ohartl.de", false }, + { "ohartl.de", true }, { "ohayosoro.me", true }, { "ohbabybean.com", true }, + { "ohcanvas.com", true }, { "ohchouette.com", true }, + { "ohcomassagechairs.com", true }, { "oheila.com", true }, { "ohentpay.com", true }, + { "ohglowup.nl", true }, { "ohhappy.win", true }, - { "ohhere.xyz", true }, - { "ohifonly.com", true }, + { "ohifonly.com", false }, { "ohioag.gov", true }, { "ohioago.gov", true }, { "ohiobrewweek.com", true }, @@ -90139,9 +103278,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ohmayonnaise.com", true }, { "ohmy.ca", true }, { "ohmydish.nl", true }, + { "ohmygeekettes.fr", true }, + { "ohmymalware.com", true }, { "ohmyunix.com", true }, { "ohne-name.de", true }, - { "ohnonotme.com", true }, + { "ohnonotme.com", false }, { "ohol.se", true }, { "ohoreviews.com", true }, { "ohrange-music.tk", true }, @@ -90156,7 +103297,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ohype.gq", true }, { "oi-wiki.org", true }, { "oiahe.org.uk", true }, - { "oic-ci.gc.ca", true }, + { "oiaposta.com", true }, { "oidrava.tk", true }, { "oikontroloi.tk", true }, { "oikosweb.com", true }, @@ -90170,6 +103311,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oinimod.com", true }, { "oinky.ddns.net", true }, { "oirealtor.com", true }, + { "oirnoir.gay", true }, + { "oirnoir.gq", true }, + { "oirnoir.ml", true }, + { "ois.dk", true }, { "oisabre.com", true }, { "oisd.nl", true }, { "oiseaux-mania.com", true }, @@ -90179,7 +103324,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oiwe.info", true }, { "ojapanesetea.ca", true }, { "ojdip.net", true }, - { "ojk.ee", true }, + { "ojee.nic.in", true }, + { "ojjdp.gov", true }, + { "ojk.ee", false }, { "ojp.gov", true }, { "ok-travel.tk", true }, { "ok.ru", true }, @@ -90192,17 +103339,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "okaidi.ro", true }, { "okaidi.si", true }, { "okakuro.org", true }, + { "okami-no-tochi.com", true }, { "okanaybek.tk", true }, { "okash.it", true }, { "okashi.me", true }, { "okay.cf", true }, { "okay.coffee", true }, + { "okayama-sengoku-project.jp", true }, { "okayloser.com", true }, { "okazoo.eu", true }, { "okburrito.com", true }, { "okcasino.ga", true }, { "okchousebuyer.com", true }, - { "okeeferanch.ca", true }, + { "okeechobeecountyfl.gov", true }, { "okemahok.gov", true }, { "okeydeyim.com", true }, { "okhanvatansever.tk", true }, @@ -90212,6 +103361,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "okinawa-mag.net", true }, { "okinawa-seaside.com", true }, { "okinawan-lyrics.com", true }, + { "okinext.com", true }, + { "okiram.net", true }, + { "okis.win", true }, { "okkhor52.com", true }, { "okkultemysterier.tk", true }, { "okkur.community", true }, @@ -90221,6 +103373,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "okkur.org", true }, { "okkur.team", true }, { "okkurlabs.com", true }, + { "oklahomaced3.gov", true }, { "oklahomafibroids.com", true }, { "oklahomamoversassociation.org", true }, { "oklahomanotepro.com", true }, @@ -90231,46 +103384,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "okmulgeecounty.gov", true }, { "okmx.cloud", true }, { "okmx.de", true }, - { "okna-tm.kz", true }, + { "okna-tm.kz", false }, { "okna-vek.com.ua", true }, { "okna.ua", true }, + { "oknakz-astana.kz", true }, { "oknarating.ru", true }, { "oknavdom.tk", true }, { "oknopvh.ml", true }, { "okobojitech.com", true }, + { "okokorecepten.nl", true }, { "okonto.com", true }, { "okoris.net", true }, + { "okosg.kr", true }, { "okotelecom.ml", true }, - { "okotoksbeach.ca", true }, { "okpo.tk", true }, { "okqubit.net", true }, { "okr.pub", true }, { "okremarketing.com", true }, + { "okrodrigo.com", true }, { "oksafe-t.org", true }, { "oksanakazakova.tk", true }, + { "oksichemk.com", true }, { "okskoleni.cz", true }, - { "oksmclub.ga", true }, + { "oksystem.cz", true }, { "oktava.tk", true }, { "oktave.co", true }, + { "oktaybozaci.com", true }, { "oktayincesuturizm.com", true }, { "oktime.cz", true }, { "oktober.tk", true }, { "oktoplus.com.br", true }, { "oktos.tk", true }, { "oktour.ca", true }, + { "oktransportation.gov", true }, { "okubo-shika.jp", true }, { "okuguchihifuka-clinic.com", true }, { "okukan.com.au", true }, { "okulistiyoruz.tk", true }, { "okurapictures.com", true }, { "okusiassociates.com", true }, + { "okv.de", true }, { "okviz.com", true }, - { "okweb.mx", true }, + { "okwine.ua", true }, { "okwu.cz", true }, - { "olacatlitter.com", false }, + { "ola.finance", true }, + { "olacatlitter.com", true }, + { "olafbrzeski.com", true }, { "olafnorge.de", true }, { "olafvantol.nl", true }, { "olafwalther.de", true }, + { "olamagri.com", true }, + { "olamgroup.com", true }, { "olamiccutlery.com", true }, { "olamisys.com", true }, { "olamisys.email", true }, @@ -90281,8 +103445,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "olastrafford.org", true }, { "olatiferreira.com", true }, { "olax.tk", true }, + { "olb.de", true }, { "olbat.net", true }, { "olcayanar.com", true }, + { "olcayirmak.com.tr", true }, { "olcbrookhaven.org", true }, { "old-computer-club.ml", true }, { "old-times.ga", true }, @@ -90300,25 +103466,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oldcitysmokehouse.com", true }, { "oldcold.co", true }, { "olddisk.ml", true }, + { "olddominionspeedway.com", true }, + { "olddragon.com.br", true }, { "oldenzaal.tk", true }, { "older-racer.com", true }, { "oldertarl.ddns.net", true }, + { "olderwomanpics.com", true }, { "oldfarming.tk", true }, { "oldfieldmusic.tk", true }, { "oldfriends.tk", true }, { "oldhouse.tk", true }, + { "oldhousetonewhome.net", true }, { "oldiesmusicguide.tk", true }, { "oldiesradio.tk", true }, { "oldinnpub.tk", true }, { "oldita.ru", true }, + { "oldjungle.com", false }, { "oldliverpoolrailways.tk", true }, - { "oldno07.com", true }, { "oldnorthbanter.com", true }, { "oldonyosafaris.com", true }, { "oldpc.com.ua", true }, { "oldriver.tk", true }, { "oldroadswhippets.tk", true }, { "oldrun.is", true }, + { "oldrup.art", true }, { "oldrup.dk", true }, { "oldrup.net", true }, { "oldscans.tk", true }, @@ -90326,6 +103497,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oldschool.wiki", true }, { "oldshara.tk", true }, { "oldskoolreviews.tk", true }, + { "oldspice.com", true }, { "oldsql.tk", true }, { "oldsticker.com", true }, { "oldstmary.com", true }, @@ -90337,42 +103509,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oldtimerreifen-moeller.de", true }, { "oldtimers.tk", true }, { "oldtimesecurity.tk", true }, + { "oldtowntownship-il.gov", true }, { "oldtoystuff.com", true }, { "oldvaliken.tk", true }, + { "oldvps.com", true }, { "oleam.org", true }, { "olecoin.io", true }, - { "olegchursin.com", true }, + { "oleg.loan", true }, + { "olegchursin.com", false }, { "olegon.ru", true }, - { "olegs.be", true }, { "oleksandr-petrusenko.com", true }, - { "oleksii.name", true }, + { "oleksii.name", false }, + { "olemon.eu.org", true }, { "olenergie.com", true }, { "olenergie.fr", true }, { "olenergies.com", true }, { "olenergies.eu", true }, { "olenergies.fr", true }, + { "olennolla.fi", true }, { "olennolla.net", true }, { "oleodecopayba.com.br", true }, { "olepiraatti.fi", true }, { "olerogas.xyz", true }, { "oles-hundehaus.de", true }, { "olesaradio.tk", true }, + { "olevoitalia.com", true }, { "olffi.com", true }, { "olfnewcastle.com", true }, { "olfsecane.org", true }, { "olgallery.tk", true }, + { "olgamalytcheva.com", true }, + { "olgapankova.art", true }, { "olgaserebrennikova.tk", true }, { "olgcc.net", true }, - { "olgiati.org", false }, { "olgui.net", false }, { "olgun.eu", true }, { "olhcparish.net", true }, - { "olibomb.cc", true }, + { "olibarcenas.es", false }, { "olidetrim.com", true }, { "oliebollenbakservice.nl", true }, - { "olifant.fr", true }, + { "olifant.fr", false }, { "oligenesi.it", true }, { "olightstore.ro", true }, + { "olihar.com", true }, { "olimpicmoradebre.tk", true }, { "olimpikfit.com", true }, { "olimpoao.tk", true }, @@ -90380,7 +103559,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oliode.tk", true }, { "olisius.com", true }, { "olitham.com", true }, + { "olive.my", true }, { "olivea.cz", true }, + { "oliveandcompany.com", true }, + { "olivedon.com", true }, { "oliveiraerios.adv.br", true }, { "olivejs.com", true }, { "oliveoil.bot", true }, @@ -90390,28 +103572,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oliveoiltest.com", true }, { "oliveoiltimes.com", true }, { "oliver-wenz.de", true }, - { "oliver-wenzel.com", true }, - { "oliverah.com", true }, { "oliverclark.tk", true }, { "oliverclausen.com", true }, { "oliverdunk.com", false }, + { "olivereats.ca", true }, { "oliverfaircliff.com", true }, { "oliverflecke.me", true }, + { "oliverhough.io", true }, { "oliverjoss.com", true }, { "oliverlanguages.com", true }, { "olivernaraki.com", true }, { "oliverniebuhr.de", true }, { "oliverschmid.space", true }, { "oliverspringer.eu", true }, - { "oliverst.com", true }, + { "oliverswindles.com", true }, { "oliverwenz.de", true }, { "olivetbgc.org", true }, - { "olivetchurch.org.uk", true }, + { "olivetchurch.org.uk", false }, { "olivetownship-mi.gov", true }, { "olivia.cf", true }, { "olivialufkin.tk", true }, { "olivier-giroud.tk", true }, { "olivier-rochet.com", true }, + { "olivier-verbois.fr", true }, { "olivierberardphotographe.com", false }, { "oliviercreation.tk", true }, { "olivierdurand.tk", true }, @@ -90419,8 +103602,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oliviervaillancourt.com", true }, { "olivinehoney.com.au", true }, { "olivlabs.com", true }, - { "olizeite.ch", false }, { "olk9mo.com", true }, + { "olkywade.com", true }, { "oll.dj", true }, { "ollerom.com", true }, { "ollerom.nl", true }, @@ -90439,12 +103622,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "olmc-nutley.org", true }, { "olmcjc.com", true }, { "olmcnewark.com", true }, + { "olmecaaltos.com", true }, { "olmik.net", true }, - { "olmmcc.tk", true }, { "olmsted.io", true }, { "olmstedcounty.gov", true }, + { "olmstedtownshipohio.gov", true }, { "oloadvid.tk", true }, { "olofa.org", true }, + { "olofly.com", true }, { "olofsson.cc", true }, { "ololmke.org", true }, { "olomercy.com", true }, @@ -90453,13 +103638,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "olqoa.org", true }, { "olschurch.com", true }, { "olsen-town.tk", true }, - { "olsh-hilltown.com", true }, + { "olsenban.de", true }, { "olshop.ai", true }, - { "olson25.org", true }, + { "olson25.org", false }, { "olsonproperties.com", true }, { "oluchiedmundmusic.com", true }, { "oludeniz.tk", true }, { "olustvere.edu.ee", true }, + { "olwm.com", true }, { "olxa.tk", true }, { "olxdir.tk", true }, { "olydent.com", true }, @@ -90482,43 +103668,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "om.yoga", true }, { "omaedu.ro", true }, { "omag.gov", true }, + { "omaha.com", true }, + { "omaha.gov", true }, { "omahachapterone.org", true }, + { "omahagutterandsiding.com", true }, { "omaharoofpros.com", true }, { "omahcoin.com", true }, + { "omal.info", true }, + { "omanair.com", true }, { "omandatapark.com", true }, { "omangrid.com", true }, { "omanhr.cf", true }, - { "omanmegadeals.com", true }, + { "omanpost.om", true }, { "omarans.com", true }, - { "omarbaba.shop", true }, { "omarhussien.tk", true }, { "omarov.tk", true }, { "omarpalos.com", true }, { "omarsamarah.tk", true }, { "omarsuniagamusic.ga", true }, + { "omart.org", true }, { "omarzunic.com", true }, - { "omasporno.com", true }, + { "omastore.om", true }, + { "omatoimi.fi", true }, { "omatulevaisuus.fi", true }, + { "omaweetraad.nl", true }, { "omaxe.tk", true }, { "omayn.com", true }, { "omb.gov", true }, { "ombrazur.fr", true }, { "ombregialle.it", true }, - { "omdesign.cz", false }, - { "omdnotarissen.nl", true }, + { "ombrenails.co.uk", true }, { "omedita.lt", true }, { "omega-intranet.com", true }, { "omegachess.tk", true }, + { "omegacode.pl", true }, { "omegahosting.net", true }, - { "omegalan.tk", true }, { "omegamc.ua", true }, { "omegarazer.ca", true }, { "omegatechware.com", true }, { "omegathermoproducts.nl", true }, + { "omegleporn.to", true }, { "omegletalk.com", true }, { "omelectricnyc.com", true }, + { "omelorer.com", true }, { "omenprinting.com.au", true }, { "omeopatiadinamica.it", true }, + { "omerdanismaz.com", true }, { "omerdemirel.com.tr", true }, { "omersalaj.com", true }, { "omert.tk", true }, @@ -90528,12 +103723,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "omestudios.tk", true }, { "ometepeislandinfo.com", true }, { "omexcables.com", true }, - { "omezahblog.com", true }, { "omf.link", true }, { "omfmf.tk", true }, { "omgbouncycastlehire.co.uk", true }, + { "omgit.works", true }, { "omgpu.com", true }, - { "omgqueensland.com.au", true }, { "omgvaneyckwashere.be", true }, { "omgvaneyckwashere.com", true }, { "omgvaneyckwashere.eu", true }, @@ -90545,17 +103739,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "omid16b.com", true }, { "omidfan.ir", false }, { "omilia.com", true }, - { "omintmais.azurewebsites.net", true }, + { "omintmais.azurewebsites.net", false }, { "omipicon.io", true }, + { "omira.pt", true }, { "omise.co", true }, { "omitech.co.uk", true }, + { "ommam.com.br", true }, { "ommcitalflex.com", true }, + { "omnama.it", true }, { "omnel.ml", true }, + { "omngc.gov", true }, + { "omniaaerospace.com", true }, { "omniaclubs.com", true }, { "omniaintranet.com", true }, { "omniaintranet.de", true }, { "omniaintranet.dk", true }, { "omniaintranet.se", true }, + { "omniarch.se", false }, { "omniasl.com", false }, { "omniatv.com", true }, { "omniballot.us", true }, @@ -90563,10 +103763,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "omnicourt.jp", true }, { "omnidiecasting.com", true }, { "omnidigital.ae", true }, + { "omnidigital.us", true }, { "omniflora.shop", true }, { "omnifotoside.tk", true }, { "omnifurgone.it", true }, - { "omnigon.network", true }, + { "omniga.de", false }, + { "omnilert.net", true }, { "omniscimus.net", false }, { "omnisiens.se", true }, { "omnisky.dk", true }, @@ -90574,60 +103776,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "omniteck.com", true }, { "omnitrack.org", true }, { "omnitrattore.it", true }, - { "omniverse.ru", true }, + { "omnits.pro", true }, { "omny.info", true }, { "omorashi.org", true }, { "omoteura.com", true }, - { "ompokeronline.com", true }, { "omranic.com", true }, { "omro-wi.gov", true }, - { "omronacademy.com", true }, + { "omroepvenray.nl", true }, + { "omronwellness.com", true }, { "omsdieppe.fr", true }, { "omshivalab.com", true }, { "omsknews.tk", true }, { "omskrock.com", true }, { "omskweb.tk", true }, + { "omstars.com", true }, { "omtcloud.jp", true }, + { "omundojornalismo.pt", true }, { "omva.de", true }, { "omveda.org", true }, + { "omxz8.com", true }, { "on-air.today", true }, { "on-networkers.cf", true }, { "on-networkers.gq", true }, { "on-networkers.ml", true }, { "on-networkers.tk", true }, { "on-running.com", true }, + { "on-state.com.ua", true }, + { "on-tandemdrive.com", true }, { "on-tandemdrive.nl", true }, { "on-targettrainingcourses.com", true }, { "on-tech.co.uk", true }, { "on-the-wave.com", true }, { "on-tv.tk", true }, + { "on-wert.de", true }, { "on2it.net", true }, - { "on2it.nl", true }, + { "on3.com", true }, + { "on3static.com", true }, { "on5.co.id", true }, { "on9.link", true }, { "ona.io", true }, { "onaboat.se", true }, + { "onaforums.com", true }, { "onahonavi.com", true }, - { "onair.ovh", true }, + { "onai.es", true }, { "onarto.com", true }, - { "onbase.com", true }, + { "onavstack.net", true }, { "onbettertech.com", true }, - { "once.eu.org", true }, + { "onbley.com.br", true }, + { "oncaagt.com", true }, + { "oncc.org", true }, { "oncecocuklar.org.tr", true }, { "oncemorearoundeternity.com", true }, + { "oncentive.io", true }, { "onceuagain.tk", true }, + { "onceuponabow.org", true }, { "onceuponachicken.com", true }, { "onceuponarainbow.co.uk", true }, { "oncf.asso.fr", true }, { "onchclub.tk", true }, + { "onclouds.tech", true }, { "oncologynote.com", false }, { "oncore-eurofins.com", true }, { "oncotarget.ru", true }, { "ond-inc.com", true }, { "ond-inc.jp", true }, + { "ondafc.es", true }, { "ondajoven.tk", true }, { "ondasalfa.com.br", true }, - { "ondato.com", true }, { "ondav.com", true }, { "ondcp.gov", true }, { "onde.xyz", true }, @@ -90636,11 +103851,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onderka.com", true }, { "onderwijscentrum.gent", true }, { "onderwijscentrumgent.be", true }, + { "onderzoeksraad.nl", true }, { "ondevamosjantar.com", true }, { "ondiet.biz", true }, { "ondoorgrond.tk", true }, + { "ondra05.cz", true }, { "ondrej.org", true }, - { "ondrejbudin.cz", false }, { "ondrejhoralek.cz", true }, { "ondrejsramek.cz", true }, { "ondrejvasicek.cz", true }, @@ -90648,9 +103864,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "one-cozmic.com", true }, { "one-dot.de", true }, { "one-host.ga", true }, - { "one-million-places.com", true }, { "one-news.net", false }, { "one-page.org", true }, + { "one-piece-fans.com", true }, { "one-pixel.tk", true }, { "one-resource.com", true }, { "one-s.co.jp", true }, @@ -90658,19 +103874,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "one2team.com", true }, { "one3oneapartments.com", true }, { "one6688.com", true }, + { "oneaftac.gov", true }, + { "oneandfree.org.au", true }, + { "oneapi.io", true }, { "oneartyminute.com", true }, { "oneazcu.com", false }, { "onebanc.ai", true }, { "onebelo.tk", true }, { "onebigcow.com", true }, { "onebiz.tk", true }, + { "oneblinc.com", true }, + { "oneblock.fr", true }, { "onebookstore.ml", true }, { "onebreadcrumb.com", true }, { "onebreadcrumb.com.au", true }, + { "onecarsource.com", true }, { "onecharge.biz", true }, + { "onechicagocenter.com", true }, { "onechoice.co.nz", true }, { "onechronos.com", true }, - { "onecinema.ru", true }, + { "oneclick.accountant", true }, { "oneclick2books.cf", true }, { "oneclickbooks.gq", true }, { "oneclickbooks.ml", true }, @@ -90681,58 +103904,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oneclub.ua", true }, { "onedaygrandcanyonrafting.com", true }, { "onedeal.com.ua", true }, + { "onedetermination.com", false }, + { "onedevonshireplace.co.uk", true }, + { "onediversified.com", true }, { "onedoc.ch", true }, { "onedot.nl", true }, { "onedrive.com", false }, - { "onedrive.live.com", false }, { "onee3.org", true }, { "oneearthsacredarts.com", true }, { "oneem.tk", true }, + { "oneest.com", true }, + { "onefamily.com", true }, { "onefestivalplaza.com.au", true }, + { "onefestivaltower.au", true }, + { "onefestivaltower.com", true }, + { "onefestivaltower.com.au", true }, { "onefile.tk", true }, - { "onefinitee.com", true }, { "onefinitee.in", true }, + { "onefocusapp.com", true }, { "onefour.ga", true }, + { "onegeeks.org", true }, { "onegroup.ua", true }, + { "onehealthbehaviors.org", true }, { "oneheartbali.church", false }, - { "onehost.kz", true }, + { "onehorizon.it", true }, + { "onehost.blue", true }, + { "onehost.kz", false }, { "oneidacityny.gov", true }, { "oneidacountywi.gov", true }, { "oneidentity.me", true }, { "oneigroup.net", true }, { "oneindex.tk", true }, + { "oneiroi.co.uk", true }, { "oneirosociety.tk", true }, - { "onejoon.de", true }, + { "onekey.so", true }, + { "onekeycn.com", true }, { "oneless.tk", true }, { "onelifenutrition.co.uk", true }, { "onelinkbpo.com", true }, { "onemeter.com", true }, + { "onemindmedicinals.com", true }, { "oneminute.io", false }, { "oneminutetomindfulness.com", true }, + { "onemix.me", true }, { "onemodel.com.au", true }, { "onemodel.us", true }, { "onemonthcamera.tk", true }, { "onemoonmedia.de", true }, - { "onemorecenter.com", true }, { "onenetcdn.com", true }, - { "oneofthetwo.com", true }, + { "onenetwork.io", true }, { "oneone.moe", true }, { "oneonemedia.tk", true }, { "oneononeonone.de", true }, { "oneononeonone.tv", true }, + { "onepeloton.ca", true }, + { "onepeloton.co.uk", false }, + { "onepeloton.com", true }, { "onepersona.io", true }, { "oneplaykh.com", true }, { "onepointsafeband.ca", true }, { "onepointsafeband.com", true }, { "onepointzero.com", true }, + { "onepotliving.com", true }, { "oneprediction.com", true }, + { "onerep.com", true }, + { "onerivermedia.com", true }, { "onerror.ml", true }, { "ones.buzz", true }, { "onescience.tk", true }, { "oneshotmediakc.com", true }, { "oneso.win", true }, { "onespan.com", false }, - { "onesports.cz", true }, + { "onespiritinc.com", true }, + { "onesportslive.com", true }, { "onestarclassics.com", true }, { "onestasolar.com", true }, { "onestepbooks.gq", true }, @@ -90742,52 +103986,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onestopmedicalsupplies.com", true }, { "onestopshop.ml", true }, { "onestpasdesanges.fr", true }, + { "onet.co.jp", true }, { "onetakeonehit.tk", true }, { "onetap.com", true }, { "onetcenter.org", true }, { "onetcodeconnector.org", true }, { "onetech.it", true }, { "onetestatatime.com", true }, - { "onetime.info", true }, { "onetly.com", true }, { "onetonline.org", true }, + { "onetouchreveal.com", true }, { "onetouchrevealplus.com", true }, { "onetouchtour.com", true }, + { "onetouchtv.me", true }, { "onetown.gq", true }, { "onetranslations.com.br", true }, { "onetrust.com", true }, + { "onets.es", true }, { "onetwentyseven001.com", true }, { "onetwo-vermietung.de", true }, - { "onetwolighting.com", false }, { "onetwosweetatelier.com", true }, { "oneupchocolatebars.com", true }, { "oneurl.co", true }, { "oneway.ga", true }, - { "onewaymail.com", true }, { "oneweb.hu", true }, { "onewebdesign.nl", false }, { "onewebdev.info", true }, { "onewyo.gov", true }, + { "onex.bet", true }, { "onezero24.net", true }, { "onfaloc.tk", true }, { "onfilm.tk", true }, - { "onfireonboarding.nl", true }, + { "onfleet.com", true }, { "onformative.net", true }, { "ongea.io", true }, + { "ongelukvandaag.nl", true }, { "ongiaenegogoa.com", true }, { "onglobetrotter.com", true }, + { "ongoal.gr", true }, + { "onguardonline.gov", true }, { "onhistory.co.uk", true }, { "onhub1.com", true }, { "oni.nl", true }, + { "onibolt.com", true }, { "onice.ch", true }, { "onicore.cf", true }, { "onidesign.tk", true }, { "onilacare.com", true }, + { "onimaodonto.com.br", true }, { "oninpresento.ga", true }, { "onionbot.ga", true }, { "onionbot.me", true }, { "onionflix.net", true }, - { "onionscan.org", true }, + { "onionplay-network.stream", true }, + { "onionplay.co", true }, + { "onionplay.org", true }, { "onionshare.org", true }, { "onionsocial.com", true }, { "onionyst.com", true }, @@ -90797,20 +104050,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oniuq.com", true }, { "onix.eu.com", true }, { "onixcco.com.br", true }, - { "onkentessegertdij.hu", true }, - { "onkfaktor.de", false }, + { "onkfaktor.de", true }, { "onkologiya.ga", true }, - { "onlanka.com", true }, + { "onkyousa.com", true }, { "onld.de", true }, { "onlfait.ch", false }, + { "onlifehealth.com", true }, + { "online-audio-converter.com", true }, { "online-bookmakers.ru", true }, { "online-bouwmaterialen.nl", true }, { "online-calculator.com", true }, { "online-calculator.xyz", true }, { "online-car-show.com", true }, { "online-carhire.tk", true }, + { "online-casino.eu", true }, { "online-clothing-store.tk", true }, + { "online-concepts.net", true }, + { "online-concepts.nl", true }, { "online-consulting-corp.com", true }, + { "online-content.ru", true }, { "online-diary.tk", true }, { "online-divorce.co.za", true }, { "online-eikaiwa-guide.com", true }, @@ -90822,9 +104080,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "online-lernprogramme.de", true }, { "online-mobile-phone-shop.tk", true }, { "online-news-usa.tk", true }, + { "online-one-piece.com", true }, { "online-pochta.ml", true }, { "online-pr.at", true }, - { "online-scene.com", true }, + { "online-series.ru", true }, { "online-shop-equipment.tk", true }, { "online-sql-editor.com", true }, { "online-stopwatch.com", true }, @@ -90835,51 +104094,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "online-textil.cz", true }, { "online-textil.sk", true }, { "online-umwandeln.de", true }, - { "online-vertretungsstunden.de", true }, + { "online-video-cutter.com", true }, + { "online-voice-recorder.com", true }, { "online-wedding.site", true }, { "online-wholesalers.com", true }, - { "online-zaban.herokuapp.com", true }, + { "online-xxxmovies.com", true }, + { "online.forum", true }, { "online.marketing", true }, { "online.net.gr", true }, { "online.swedbank.se", true }, { "online24.pt", true }, { "online365.ga", true }, + { "onlineairlinesbooking.com", true }, + { "onlinebewerbungsserver.de", true }, { "onlinebiller.com", true }, + { "onlinebillingform.com", true }, { "onlinebookmarks.tk", true }, { "onlinebrides.tk", true }, { "onlinebs.tk", true }, { "onlinebupropion.gq", true }, { "onlinebusiness.law", true }, + { "onlinecannabiseducation.com", true }, { "onlinecarstyling.nl", true }, { "onlinecasinoerdk.com", true }, + { "onlinecasinohex.ca", true }, + { "onlinecasinohex.nl", true }, { "onlinecasinoknowhow.com", true }, - { "onlinecasinoreviewz.com", true }, + { "onlinecasinokoning.com", true }, { "onlinecasinos.vlaanderen", true }, { "onlinecasinoselite.org", true }, { "onlinecasinosportugal.pt", true }, { "onlinecasinotrend.nl", true }, { "onlinechallenge.nl", true }, { "onlinecollegeessay.com", true }, + { "onlinecomponents.com", true }, { "onlinecosmeticsstore.tk", true }, + { "onlinecounselingprograms.com", true }, { "onlinecrafts.tk", true }, { "onlinedapoxetina.gq", true }, - { "onlinedemo.hu", true }, { "onlinedivorce.com", true }, { "onlinedoctors24.com", true }, + { "onlinefabricstore.com", true }, { "onlinefashion.it", true }, { "onlinefloridadivorce.com", true }, - { "onlineformatter.net", true }, { "onlinefurniture.us", true }, { "onlinegallery.cf", true }, { "onlinegames4free.tk", true }, { "onlinegamesforgirls.tk", true }, + { "onlinegeeks.ru", true }, { "onlinehartha.com", true }, { "onlinehashfollow.com", true }, + { "onlinehsa.com", true }, + { "onlinehypermarket.ru", true }, { "onlineinfographic.com", true }, { "onlineinsurancetips.ga", true }, { "onlinejobs.ga", true }, { "onlinekansspel.cf", true }, { "onlinekansspel.tk", true }, + { "onlinekasino.de", true }, { "onlinekmc.com", true }, { "onlineknighki.ga", true }, { "onlinekocunuz.com", true }, @@ -90892,35 +104164,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onlinemarketfinds.cf", true }, { "onlinemarketingmuscle.com", true }, { "onlinemarketingtraining.co.uk", true }, + { "onlinemashini.bg", true }, + { "onlinembapage.com", true }, + { "onlinemediamasters.com", true }, + { "onlinemedicalassistantprograms.net", true }, + { "onlinemphdegree.net", true }, + { "onlinemswprograms.com", true }, { "onlinenewspaperclassifieds.com", true }, + { "onlineorto.com", true }, { "onlinepay.tk", true }, { "onlinepaydayloans365.tk", true }, { "onlineplay.ml", true }, + { "onlinepokies.me", true }, { "onlineporno.cc", true }, { "onlineprogrammingbooks.com", true }, + { "onlinepsychologydegrees.com", true }, { "onlineradio.com.pl", true }, - { "onlineradio.id", true }, { "onlineradio.pp.ua", true }, { "onlineradiobr.com", true }, { "onlineradious.com", true }, - { "onlinerolgordijnen.nl", true }, { "onlineschipaanpak.nl", true }, { "onlinesearningstips.ga", true }, + { "onlinesellingexperiment.com", true }, + { "onlineseminar.com", true }, + { "onlineseminar.es", true }, + { "onlineseminar.nl", true }, + { "onlineservisprogrami.com", true }, + { "onlineshop-helgoland.de", true }, { "onlineshopsatkhira.tk", true }, - { "onlinesmsbox.com", true }, + { "onlinesitereviews.com", true }, { "onlinesorusor.cf", true }, + { "onlinespielcasino.de", true }, { "onlinesports.cf", true }, { "onlinesports.tk", true }, { "onlinestoresite.com.au", true }, { "onlinesudoku.tk", true }, + { "onlinesurveys.ac.uk", true }, { "onlinesystem.jp", true }, { "onlinetadacip.gq", true }, { "onlinetextil.cz", true }, { "onlineth.com", true }, - { "onlinetrainer.co.za", true }, { "onlinetravelmoney.co.uk", true }, - { "onlineunitedcountry.com", true }, { "onlinevardenafil.gq", true }, + { "onlineveilingmeester.nl", true }, + { "onlineverdict.com", true }, { "onlineverdienen.tk", true }, { "onlinevergidanismani.com", true }, { "onlineviewers.tk", true }, @@ -90935,23 +104222,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onlineyearbook.tk", true }, { "onlineyos.ru", true }, { "onlinezaim.ml", true }, - { "onlinezonneschermen.nl", true }, + { "onlstreet.com", true }, { "only.bible", true }, { "only.lc", true }, - { "only.sh", true }, + { "only3x.com", true }, { "only4free.tk", true }, + { "onlybestporn.com", true }, { "onlybooks.gq", true }, { "onlycrumbsremain.com", true }, { "onlyesb.net", true }, { "onlyfans.com", true }, { "onlyfitgear.com", true }, - { "onlyhunters.org", true }, { "onlyincentivesest.ga", true }, + { "onlyjedis.com", true }, { "onlyjesus.net", true }, { "onlylithiumhere.gq", true }, { "onlylovastatin.gq", true }, { "onlymammoths.com", true }, - { "onlysim.nl", true }, + { "onlymyenglish.com", true }, + { "onlysergio.com", true }, { "onlysmoker.com", true }, { "onlystars.news", true }, { "onlystay.ga", true }, @@ -90959,20 +104248,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onlyveg.tk", true }, { "onlyvintagewatches.com", true }, { "onmaps.de", true }, - { "onmarketbookbuilds.com", true }, { "onmaru.com", true }, - { "onmed.com", true }, { "onmyside.com", true }, { "onnatuurlijk.tk", true }, { "onnee.ch", true }, + { "ono.ac.il", true }, { "onodera.com.br", true }, { "onoelixir.gr", true }, + { "onohawaiianbbq.com", true }, { "onondaga.gov", true }, { "ononoki.org", true }, { "onoranze-funebri.biz", true }, - { "onoranzefunebri.roma.it", false }, { "onore.org", true }, - { "onourwifi.com", true }, + { "onoticiado.com.br", true }, + { "onourwifi.com", false }, + { "onoweb.be", true }, { "onpatient.com", true }, { "onpaws.com", true }, { "onpay.io", true }, @@ -90982,29 +104272,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onpopup.ga", true }, { "onporn.fun", true }, { "onrealt.ru", false }, + { "onrr.gov", true }, { "onsemediagroup.ml", true }, { "onsenlaichelesdoigts.be", true }, { "onsetupdates.com", true }, { "onsinscrit.com", true }, { "onsite4u.de", true }, - { "onsitedoc.com", true }, { "onsitemower.com", true }, { "onsitespeedometer.com", true }, { "onslaughtstreetboarding.tk", true }, + { "onslowsheriffnc.gov", true }, + { "onsoppad.nl", true }, { "onspring.com", true }, { "onstat.tk", true }, - { "onstud.com", true }, { "onsudoku.com", true }, { "onsweb.nl", true }, { "ontargetsystem.ru", true }, { "ontariocat.com", true }, { "ontariocountyny.gov", true }, { "ontariodog.com", true }, - { "ontariodogs.com", true }, { "ontariohearing.com", true }, { "ontarioplace.com", true }, { "ontariostorage.com", true }, { "ontdekhetzelf.nu", true }, + { "ontestpad.com", true }, { "onthe.network", true }, { "ontheballbuilding.com.au", true }, { "onthecheap.store", false }, @@ -91017,10 +104308,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ontopoflove.nl", true }, { "ontourmarketing.at", true }, { "ontrio.cz", true }, + { "ontrip.dk", true }, + { "ontrip.kr", true }, { "ontsnappingskamer.nl", true }, { "ontwerpdenkers.nl", false }, + { "onul.works", true }, { "onurdemirezen.com", true }, { "onurer.net", true }, + { "onurerhan.com", true }, { "onvey.io", true }, { "onvi.nl", true }, { "onvori.com", true }, @@ -91028,6 +104323,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "onvousment.fr", true }, { "onwie.com", true }, { "onwie.fr", true }, + { "onx.dk", true }, { "onysix.de", true }, { "onysix.net", true }, { "onyx-groups.com", true }, @@ -91053,7 +104349,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oogent.be", true }, { "ooharttemplates.com", true }, { "oohlala.studio", true }, - { "ookjesprookje.nl", true }, + { "ookjesprookje.nl", false }, { "oomepu.com", true }, { "oomnitza.com", true }, { "oomph-delikatessen.tk", true }, @@ -91063,18 +104359,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ooo.xxx", true }, { "oooh.events", true }, { "ooonja.de", true }, + { "oooo.loan", true }, { "ooooo.cz", true }, + { "ooove.ru", true }, { "oopsis.com", true }, + { "oopure.com", true }, { "oorbellen.nl", true }, { "oortcast.com", true }, { "oositk.tk", true }, { "oosm.org", true }, { "oosolutions.nl", true }, { "oostendevooranker.be", false }, - { "oostenrijkautohuur.nl", true }, + { "oot.rs", true }, + { "op.ninja", true }, { "op11.co.uk", false }, { "op3racional.eu", true }, - { "op3y.com", true }, + { "opacity.au", true }, { "opaco.tk", true }, { "opadaily.com", true }, { "opale-concept.com", true }, @@ -91082,50 +104382,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "opalhunter.at", true }, { "opalternative.tk", true }, { "oparamo.tk", true }, + { "oparceirao.com.br", false }, { "oparideal.com.br", true }, { "oparl.org", true }, { "opatowice.tk", true }, { "opatut.de", false }, + { "opb.de", true }, { "opbedbugcanines.com", true }, { "opcenter.de", true }, { "opcionpublicitaria.com", true }, { "opcod3.io", true }, - { "opdbq.com", true }, + { "opcoes.net.br", true }, + { "opdera.org", true }, { "ope.ee", true }, { "opel-focken.de", true }, { "opelim.net", true }, { "open-banking-access.uk", true }, { "open-bs.com", true }, { "open-bs.ru", true }, - { "open-co.com", true }, + { "open-ctp.com", true }, + { "open-ctp.net", true }, + { "open-ctp.org", true }, { "open-data-apps.org", true }, { "open-desk.org", true }, { "open-domotics.info", true }, + { "open-fixture-library.org", true }, { "open-future.be", true }, { "open-future.info", true }, { "open-gaming.net", true }, + { "open-greenenergy.com", true }, { "open-infrastructure.net", true }, { "open-letters.de", true }, { "open-mesh.org", true }, { "open-novel.work", true }, + { "open-procurement.com", true }, { "open-sauce-recipes.co.uk", true }, { "open-source.gr", true }, { "open-to-repair.fr", false }, { "open-trip.id", true }, - { "open.film", false }, + { "open-work.space", true }, + { "open-xchange.com", true }, + { "open.film", true }, { "open.my.id", true }, { "open.ru", true }, { "openacte.ch", false }, + { "openagenda.com", true }, + { "openai.com", true }, { "openai.community", true }, - { "openalgeria.org", true }, + { "openai.sb", true }, + { "openalt.org", true }, + { "openaq-staging.org", true }, { "openarch.nl", true }, { "openarchivaris.nl", true }, { "openawallet.org", true }, - { "openbayes.com", true }, { "openbayes.network", true }, { "openbayesstatus.com", true }, { "openbeecloud.com", true }, + { "openbet.it", true }, { "openbible.com.au", true }, + { "openbiblebookstore.com.au", true }, + { "openbleam.com", true }, { "openblox.org", true }, { "openbook.net", true }, { "openbriefing.org", true }, @@ -91133,13 +104449,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openbsdhosting.com", true }, { "openbusiness.tk", true }, { "opencache.uk", true }, + { "opencagedata.com", true }, { "opencartbot.com", true }, + { "opencartspecialist.com", true }, { "openchronicles.net", true }, { "opencircuit.nl", true }, { "opencity.spb.ru", true }, { "openclima.com", true }, { "openclub24.ru", true }, - { "opencom.hu", true }, { "openconf.uk", true }, { "openconnect.com.au", true }, { "opencpes.com", false }, @@ -91148,36 +104465,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "opencpes.net", true }, { "opencpes.org", true }, { "opencrm.co.uk", true }, + { "openctp.com", true }, + { "openctp.net", true }, + { "openctp.org", true }, { "opendata.cz", true }, { "opendataincubator.eu", true }, - { "opendecide.com", true }, + { "opendesk.cc", false }, { "opendolls.com", true }, + { "opendsp.ru", true }, + { "openendpoint.tools", true }, { "openevic.info", true }, + { "openexec.com", true }, + { "openexec.net", true }, + { "openfin.co", true }, { "openfir.st", false }, { "openfitapi-falke.azurewebsites.net", true }, - { "openforvintage.com", true }, + { "openfpcdn.io", true }, { "openfuture.digital", true }, + { "opengameart.org", true }, { "opengovpartnership.de", true }, + { "openhandhelds.org", true }, { "openhistory.de", true }, { "openid.net.br", true }, + { "openinsieme.com", true }, + { "openintel.com.br", true }, + { "openintl.com", true }, { "openjur.de", true }, { "openkat.nl", true }, { "openkim.org", true }, { "openkvk.nl", true }, { "openlitecache.com", true }, { "openmail.ml", true }, - { "openmarkets.com.au", true }, - { "openmarkets.group", true }, + { "openmandriva.org", true }, + { "openmarkets.com.au", false }, + { "openmarkets.group", false }, { "openmind.ga", true }, { "openmindsec.com", true }, { "openmindsec.de", true }, + { "openmined.org", true }, { "openmirrors.cf", true }, { "openmirrors.ml", true }, { "openmtbmap.org", true }, { "opennet.fund", true }, { "opennippon.com", true }, { "opennippon.ru", true }, + { "openpictures.ch", true }, { "openpolicing.org", true }, + { "openpowerfoundation.org", true }, { "openproject.com", true }, { "openproton.cf", true }, { "openprovider.nl", false }, @@ -91191,6 +104525,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openre.site", true }, { "openrealestate.co", true }, { "openreel.com", false }, + { "openremote.io", true }, { "openresearch.amsterdam", true }, { "openreview.net", true }, { "openroademail.com", true }, @@ -91199,8 +104534,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openscience.ml", true }, { "openscreen.lu", true }, { "opensecurity.in", true }, + { "opensecurity.pl", true }, { "opensim.tk", true }, { "openslava.tk", true }, + { "opensocial.at", true }, + { "opensocietyuniversitynetwork.org", true }, { "opensource-cms.nl", true }, { "opensource-training.de", true }, { "opensource.fund", true }, @@ -91208,8 +104546,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "opensourcesoftware.rocks", true }, { "opensourcesurvey.org", true }, { "opensourcex.tk", true }, - { "openspa.webhop.info", true }, { "openspot.tk", true }, + { "opensquares.org", true }, + { "opensrc.one", true }, { "openssl.org", true }, { "openstandia.jp", true }, { "openstem.com.au", true }, @@ -91218,7 +104557,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "opentable.com", true }, { "opentable.com.au", true }, { "opentrack.info", true }, - { "opentrader.com.au", true }, + { "opentrader.com.au", false }, { "opentrash.org", true }, { "openverse.com", false }, { "openvision.tk", true }, @@ -91226,48 +104565,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "openwaveguide.de", true }, { "openwifi.gr", true }, { "openwrt-dist.tk", true }, + { "openxcom.org", true }, { "opera.im", true }, + { "opera.news", true }, { "operacdn.com", true }, { "operacionlimpieza.com", true }, { "operad.fr", true }, { "operadotejo.org", true }, + { "operahedeland.dk", true }, + { "operalogg.com", true }, { "operanavigation.ro", true }, { "operatic.gq", true }, - { "operationforever.com", true }, + { "operationhomefront.org", true }, { "operationkiwi.work", true }, { "operationlifeline.ca", true }, { "operationlifeline.org", true }, { "operationturkey.tk", true }, + { "operationwarm.org", true }, { "operator.tk", true }, + { "operatoresanitario.it", true }, { "operaunica.tk", true }, { "operd.gob.do", true }, { "opexterminating.com", true }, { "opfin.com", true }, { "opgani7.info", true }, - { "ophelia.ink", true }, + { "ophelia.ink", false }, { "ophidian.tk", true }, { "ophthalmologynotes.tk", true }, { "opiates.ca", true }, - { "opiates.net", false }, { "opic.gov", true }, { "opid.my.id", true }, - { "opikini.com", true }, + { "opieoils.co.uk", true }, { "opil.no", true }, { "opin.me", true }, + { "opinie.pl", true }, { "opinio.fr", true }, { "opinionipannolini.it", true }, + { "opinioniprodotto.it", true }, { "opinionitech.com", true }, { "opinionmodel.it", true }, + { "opiniterupdate.com", true }, { "opioidaffectedyouth.org", true }, { "opioidremseducation.com", true }, { "opioids.co.uk", true }, { "opioids.com", true }, { "opioids.gov", true }, + { "opioids.uk", true }, + { "opioids.wiki", true }, { "opioneers.ga", true }, { "opioneers.tk", true }, { "opiskelijaradio.com", true }, { "opiskelijaradio.fi", true }, { "opisrael.tk", true }, + { "opito.com", true }, { "opium.io", false }, { "opix.fr", true }, { "opl.bz", true }, @@ -91275,9 +104625,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oplata-mvd.ga", true }, { "oplata-vklike.tk", true }, { "oplata.uz", true }, - { "oplatki-charistia.pl", true }, { "oplop.appspot.com", true }, { "opm.gov", true }, + { "opmaakonderscheidingen.nl", true }, + { "opnay.com", true }, { "opnx.dk", true }, { "opop.cz", true }, { "opopulechki.tk", true }, @@ -91288,14 +104639,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oposicionescorreos.es", true }, { "oposicionesprofesores.tk", true }, { "opp.moe", true }, + { "oppa888.com", true }, + { "oppa888.net", true }, { "oppabet.com", true }, { "oppada.com", true }, - { "oppaiti.me", true }, { "oppejoud.ee", true }, - { "oppekepe.org", true }, - { "opportunis.me", true }, + { "oppekepe.org", false }, + { "opploans.com", true }, { "opportunity.de", true }, - { "opportunityfund.eu", true }, + { "opportunity.ng", true }, + { "opportunityfund.eu", false }, { "opportunityliu.top", true }, { "opportunitylouisiana.gov", true }, { "opposer.me", true }, @@ -91307,51 +104660,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oppwa.com", true }, { "opq.pw", true }, { "opraab.ga", true }, + { "opravdovekoucovani.cz", true }, { "oprbox.com", true }, { "oprekin.com", true }, { "opreturn.org", true }, { "opritten-en-terrassen.be", true }, { "opritverklikker.nl", true }, + { "opromox.com", true }, { "oprueba.com", true }, { "opryshok.com", true }, { "ops-com.com", true }, { "ops.ai", true }, { "ops.com.pl", true }, + { "opsbase.com", true }, { "opsecx.com", true }, { "opskins.tk", true }, { "opskiwi.work", true }, { "opsmate.com", false }, { "opsnotepad.com", true }, + { "opso.gov", true }, { "opspedia.id", true }, { "opstory.com", true }, { "opstrengning.tk", true }, { "opsystems.bg", true }, + { "optalysys.com", true }, + { "opteamax.de", true }, + { "opteamax.eu", true }, { "optenhoefel.de", true }, { "optgo.com.ua", true }, - { "opti-net.at", true }, { "opti-net.solutions", true }, + { "optic-street.ru", true }, { "optical-faking.tk", true }, { "opticalprescriptionlab.com", true }, { "opticaltest.com", true }, { "opticamasvision.com", true }, { "opticasocialvision.com", true }, + { "opticianedu.org", true }, { "opticiansri.org", true }, { "opticoolheadgear.com", true }, { "opticsexplorer.com", true }, { "opticstore.com.ua", true }, + { "optiekdemeester.be", true }, { "optiekzien.nl", false }, + { "optifleet-evol.net", true }, + { "optifury.com", true }, + { "optigazelle.com", true }, { "optigear.nl", true }, { "optik-sehstern.de", true }, { "optik-tamara.de", true }, { "optik-trosdorff.de", true }, { "optiker-gilde.de", true }, { "optikflow.com", true }, + { "optikoscolombia.com", true }, { "optilan.tk", true }, + { "optimakers.pl", true }, { "optimale.co.uk", true }, { "optimall.tk", true }, { "optimalrehab.se", true }, { "optimaner.pl", true }, - { "optimausa.com", true }, { "optimed.tk", true }, { "optimised.cloud", true }, { "optimised.io", true }, @@ -91359,20 +104725,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "optimisedlabs.info", true }, { "optimisedlabs.net", true }, { "optimisedlabs.uk", true }, - { "optimism.ru", true }, { "optimist.bg", true }, + { "optimization-online.org", true }, { "optimizationanalyticsest.ga", true }, - { "optimize-jpeg.com", true }, { "optimize-jpg.com", true }, + { "optimizedbyalex.com", true }, { "optimizedlabs.co.uk", true }, { "optimizedlabs.info", true }, { "optimizedlabs.net", true }, { "optimizedlabs.uk", true }, { "optimom.ca", true }, { "optimon.io", true }, - { "optimumcircle.com", true }, + { "optimumfmw.com", true }, + { "optimummanagement.net", true }, + { "optimummarinemanagement.net", true }, { "optimummenhealth.com", true }, { "optimumpacific.net", true }, + { "optimumship.net", true }, + { "optimumvikingsatcom.com", true }, { "optimumwebdesigns.com", true }, { "optimus.io", true }, { "optimuscrime.net", true }, @@ -91380,26 +104750,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "optiondisplay.com", true }, { "options-today.com", true }, { "optionsfund.cn", true }, + { "optionskredit.ag", true }, + { "optionskredit.biz", true }, + { "optionskredit.com", true }, + { "optionskredit.eu", true }, + { "optionskredit.info", true }, + { "optionskredit.net", true }, + { "optionskredit.org", true }, { "optionsloop.com", true }, { "optique-morice.com", true }, { "optiqueh.ca", true }, { "optiqueh.com", true }, - { "optischmopti.de", true }, { "optisell.ga", true }, + { "optiwebopz.com", true }, { "optmos.at", true }, { "optogenics.com", true }, - { "optomaeurope.com", true }, + { "optomaeurope.com", false }, { "optome.com", true }, { "optoms.tk", true }, { "optoutday.de", true }, { "optoutpod.com", true }, - { "optpra.ru", true }, { "optru.eu.org", true }, { "opture.ch", true }, - { "optyug.ru", true }, + { "optykgill.pl", true }, + { "optymyze.com", true }, { "opus-codium.fr", true }, { "opus-labs.fr", true }, { "opus-nail.com", true }, + { "opusclassical.net", false }, { "opusdei.org", true }, { "opuspremiumfilms.com", true }, { "opussystems.com.au", true }, @@ -91410,21 +104788,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "opwekking.tk", true }, { "opzich.nl", true }, { "oqevapimivud.tk", true }, + { "oqkd.eu", true }, { "oqpo.ru", true }, { "oqrqtn7ynmgc7qrgwd-ubhdvfiymfbjrh5ethdti8.com", false }, - { "oquee.space", true }, { "oqwebdesign.com", true }, { "orablanket.co.nz", true }, { "oracaodocredo.com.br", true }, { "oracle-support.nl", true }, { "oracleclown.com", true }, { "oracolo.tk", true }, + { "oraculos.pt", true }, + { "oraculosiono.net", true }, { "oraklinika.tk", true }, + { "oralb.com", true }, { "oraldigital.com.br", true }, { "oralemiraza.com", true }, { "oralight.ml", true }, { "orang-utans.com", true }, + { "orangatame.com", true }, + { "orange.md", true }, { "orangeacademy.cz", true }, + { "orangeappalam.com", true }, { "orangecityfl.gov", true }, { "orangefinanse.com.pl", true }, { "orangehome.ga", true }, @@ -91439,8 +104823,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orangesquash.org.uk", false }, { "orangesquirrelevents.co.uk", true }, { "orangetexas.gov", true }, + { "orangetown.com", true }, { "orangtua.tk", true }, - { "orangutan.org", true }, { "oranjee.net", false }, { "oranjerie.tk", true }, { "orano.vn", true }, @@ -91449,13 +104833,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oraz.tk", true }, { "orazen.it", true }, { "orbassano5aele2021.tk", true }, - { "orbeimaginario.com", true }, { "orbesurgeons.com.au", true }, { "orbik.com", true }, + { "orbit.aero", true }, { "orbit.church", true }, + { "orbita.zp.ua", true }, { "orbitabaja.com", true }, { "orbitaclub.cf", true }, { "orbital3.com", true }, + { "orbitalcommerce.com.br", false }, { "orbitcleaning.com.au", true }, { "orbitdefence.co.uk", true }, { "orbitfoods.ca", true }, @@ -91463,9 +104849,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orbitgoods.ca", true }, { "orbitpro.co", true }, { "orbits.ga", true }, + { "orbitum.fr", true }, { "orbitum.space", true }, { "orbu.net", true }, - { "orby.ro", true }, + { "orbussoftware.com", true }, { "orca.pet", false }, { "orcada.co", true }, { "orcahq.com", true }, @@ -91479,8 +104866,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orchidee-mariage.com", true }, { "orchidee-massage.tk", true }, { "orchideemilano.it", true }, - { "orchideenettoyage.com", true }, - { "orchidhouse.sk", false }, + { "orchidhousehotels.com", true }, + { "orchidinsurance.com", true }, { "orchidlive.com", true }, { "orchidplantscare.com", true }, { "orchids.ua", true }, @@ -91488,20 +104875,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orcomsilver.tk", true }, { "orcsnet.com", true }, { "orcz.cz", true }, + { "ord-airportparking.com", true }, { "ordastoikennel.tk", true }, { "ordbokpro.se", true }, { "ordenmutantes.tk", true }, { "order-a-laura.de", true }, { "order-ftw.de", true }, - { "order-of-hope.com", true }, { "order-tools.io", true }, { "order.catering", true }, { "order.online", true }, { "ordercipro.gq", true }, { "orderdiflucan.ga", true }, - { "orderessay.net", true }, + { "ordereze.com", true }, { "ordermore.cloud", true }, { "ordermygear.com", true }, + { "ordernerd.com", true }, { "orderomnicef.gq", true }, { "orderpizza.tk", true }, { "orderseason.digital", true }, @@ -91511,24 +104899,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ordigame.com", true }, { "ordilo.org", true }, { "ordina.tk", true }, - { "ordio.co.nz", true }, + { "ordinals.com", true }, { "ordner.tk", true }, - { "ordoh.com", true }, { "ordoro.com", true }, { "ordr.net", true }, { "ordr.no", true }, + { "ordremk.fr", true }, { "orduhaberleri.tk", true }, + { "ore.cool", true }, { "oreber.com", true }, + { "oref-idf.com", false }, + { "oref-idf.net", false }, + { "oref-idf.org", false }, { "orefice.roma.it", true }, { "oregon2020census.gov", true }, + { "oregonatv.gov", true }, { "oregonenergysaver.com", true }, { "oregonmenshealth.com", true }, - { "oreka.online", true }, + { "oregonpasturenetwork.org", true }, + { "oregonstudentaid.gov", true }, + { "orehoreh.ru", false }, { "orel-city.ml", true }, { "orel-sait.tk", true }, { "orel.ga", true }, + { "orel.se", true }, { "orelblog.tk", true }, + { "orelferm.ru", true }, { "orelnet.tk", true }, + { "orem.gov", true }, { "orenburg-life.tk", true }, { "orendamebliv.com.ua", true }, { "orendatattoo.bg", true }, @@ -91536,6 +104934,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orensport.tk", true }, { "oreo.rocks", true }, { "oreomuhely.hu", true }, + { "oresama.studio", true }, { "oreshinya.xyz", true }, { "oreskylaw.com", true }, { "orestadit.dk", true }, @@ -91547,21 +104946,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orfelios.com", true }, { "orfeo-engineering.ch", true }, { "orfininumeister.it", true }, + { "orfordvillewi.gov", true }, { "org-css.tk", true }, { "organaqsis.com", true }, { "organdonor.gov", true }, - { "organica.co.za", true }, { "organicae.com", true }, { "organicappraisalers.ga", true }, + { "organicaromas.com", true }, { "organicindiausa.com", true }, { "organicossuliani.com.br", true }, { "organicpoint.in", true }, { "organicrootsfestival.tk", true }, + { "organicsearcher.com", true }, { "organicseo4u.com", true }, { "organictanningest.ga", true }, { "organisatieteam.nl", true }, + { "organisation-evenement-vaud.ch", true }, { "organisation-mariage.net", true }, { "organizacasa.com.br", true }, + { "organizalpha.com", true }, { "organizasyon.tk", true }, { "organization-of-holidays.tk", true }, { "organizedrhyme.tk", true }, @@ -91585,7 +104988,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orientelectronic.net", true }, { "orientir.tk", true }, { "orientravelmacas.com", true }, - { "oriflakesku.com", true }, { "oriflamesamara.tk", true }, { "oriflameszepsegkozpont.hu", true }, { "orifonline.ro", false }, @@ -91594,6 +104996,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "origamiking.wiki", true }, { "origemtemperos.com.br", true }, { "origenarts.com", true }, + { "origent.com", true }, { "originahl-scripts.com", true }, { "original-christstollen.com", true }, { "original-christstollen.de", true }, @@ -91601,8 +105004,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "originalblackfilms.ga", true }, { "originalescaro.tk", true }, { "originalmusicstream.tk", true }, - { "originalniknihy.cz", true }, + { "originalniknihy.cz", false }, { "originalpharmacygrup.ml", true }, + { "originalreading.com", true }, { "originalseconds.com", false }, { "originaltee.uk", true }, { "origingames.tk", true }, @@ -91611,23 +105015,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "origintlsfull.com", true }, { "origintlsstrict.com", true }, { "origintunes.tk", true }, - { "orikadabra.nl", true }, { "orikos.tk", true }, { "orikum.org", false }, { "orilliacdc.com", true }, { "orilon.fr", true }, { "orimex-mebel.ru", true }, { "orimono.ga", true }, - { "oriolcarbonell.tk", true }, + { "oriocdn.com", true }, { "orion-rentals.tk", true }, - { "orion-universe.com", true }, { "orioncokolada.cz", false }, { "orioneclipse.com", true }, + { "orionelement.com", true }, + { "orionenerji.com", true }, { "orionfcu.com", true }, { "orionfinancialservices.com", true }, { "oriongames.eu", true }, { "orionlab.com.br", true }, { "orionleasing.com", true }, + { "orionrisk.com", true }, { "oris.edu.ee", true }, { "oriveda.ch", true }, { "oriveda.co.uk", true }, @@ -91635,9 +105040,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oriveda.nl", true }, { "oriya-hrs.com", true }, { "orizarja.tk", true }, - { "orjanichairspa.com", true }, { "orkaev.cf", true }, { "orkestar-krizevci.hr", true }, + { "orkincanada.ca", true }, { "orkiv.com", false }, { "orkkikerho.tk", true }, { "orland.tk", true }, @@ -91646,13 +105051,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orlando-marijuana-doctor.com", true }, { "orlandobalbas.com", true }, { "orlandojetcharter.com", true }, + { "orlandomagicdaily.com", true }, { "orlandooutdoor.com", true }, + { "orlandopmf.com", true }, + { "orlandopooltech.com", true }, { "orlandoprojects.com", true }, { "orlandorentavilla.com", true }, + { "orleansiowa.gov", true }, { "orleika.io", true }, { "orleika.ml", true }, - { "orlinum.fr", true }, { "ormanetrading.com", true }, + { "ormuratore.com", true }, + { "ornc.org", true }, { "ornikar.com", true }, { "ornithopter.tk", true }, { "ornitina.com", true }, @@ -91663,17 +105073,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oro.roma.it", true }, { "orocojuco.com", true }, { "oroconews.com.br", true }, - { "orodelsalento.com", false }, + { "orodelsalento.com", true }, { "orologeria.roma.it", true }, + { "oronomn.gov", true }, + { "oroshikikin.jp", true }, { "orovillelaw.com", true }, { "orpf.ir", true }, { "orphee-beaute.com", false }, + { "orphelinsdeduplessis.com", true }, { "orpheus.network", true }, - { "orquestaataulfoargenta.com", true }, { "orquestas.tk", true }, { "orrs.de", true }, { "orsal.fr", true }, + { "ortahisarsigorta.com", true }, { "ortanatech.com", true }, + { "ortecapps-dev.com", true }, + { "ortecbdp.com", true }, + { "ortecdna.com", true }, + { "ortechealthtest.com", true }, { "ortegaportfolio.com", true }, { "ortemis.host", true }, { "orteo.co", true }, @@ -91684,32 +105101,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "orthodealsers.ga", true }, { "orthodontiste-geneve-docteur-rioux.com", false }, { "orthodoxy.lt", false }, - { "orthogennix.com", true }, { "orthograph.ch", true }, + { "orthomolecularproducts.com", true }, { "orthopedic-shoes.tk", true }, { "orthopedicsalon.tk", true }, - { "orthotes.com", true }, + { "orthoprax.net", true }, { "orthotrafficest.ga", true }, + { "ortiatuttogas.it", true }, { "ortigueira.ga", true }, { "ortizmario.com", true }, { "ortocraft.tk", true }, { "ortoemangiato.it", true }, + { "ortografiacerta.com.br", true }, { "ortoinnovapanama.com", true }, { "ortop.ua", true }, { "ortopedia.tk", true }, { "ortopertutti.it", true }, + { "ortto.com", false }, { "oruggt.is", true }, { "orum.in", true }, + { "orviboperu.com.pe", true }, { "orwell.tk", true }, { "oryva.com", true }, + { "oryxlabs.com", true }, { "oryxserver.ch", true }, + { "orzado.com", true }, + { "orzado.com.ua", true }, { "orzechot.pl", true }, + { "os-s.de", true }, { "os-s.net", true }, { "os-t.de", true }, - { "os.ax", true }, { "os24.cz", true }, + { "os33.net", true }, { "os76.xyz", true }, - { "osa.org.za", true }, + { "osaamiskartoitus.fi", true }, { "osac.gov", true }, { "osacrypt.studio", true }, { "osagecounty-ok.gov", true }, @@ -91718,6 +105143,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osaka-hero-project.com", false }, { "osakaevoce.com.br", true }, { "osakagasaustralia.com.au", true }, + { "osakayuku.com", true }, { "osakerekisteri.fi", true }, { "osaketori.fi", true }, { "osaki.fr", true }, @@ -91730,18 +105156,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osateam.tk", true }, { "osau.com", true }, { "osawatomieks.org", true }, - { "osawatomielibrary.org", true }, + { "osb-alliance.de", true }, { "osbeck.com", true }, { "osborn.io", true }, { "osborne.tk", true }, { "osbornecounty.gov", true }, - { "osborneinn.com", true }, - { "osborneprice.com", true }, + { "osborneinn.com", false }, { "osbornepro.com", true }, { "osburn.com", true }, + { "osbygymnasium.se", true }, { "osc.gov", true }, { "oscar.ms", true }, + { "oscarapp.net", true }, { "oscarmartinez.tk", true }, + { "oscarr.nl", true }, { "oscars-web.tk", true }, { "oscarsalas.tk", true }, { "oscarspatiobar.com", true }, @@ -91756,11 +105184,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oscreen.ru", true }, { "osdeployments.com", true }, { "osdls.gov", true }, - { "ose-group.com", false }, { "oseido.tk", true }, { "osepideasthatwork.org", true }, { "osereso.tn", true }, - { "oses.mobi", true }, + { "oses.mobi", false }, { "osetia.tk", true }, { "osetinskie-pirogi.ga", true }, { "osetiya.gq", true }, @@ -91768,11 +105195,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osez-l-odyssee.fr", true }, { "osgroup.tk", true }, { "oshayr.com", true }, + { "oshea.cc", true }, { "oshens.com", true }, - { "oshkibeginnings.org", true }, { "osholife.tk", true }, { "oshrc.gov", true }, - { "osielnava.com", true }, + { "osiedlemalownicze.wroc.pl", true }, { "osimmo.fr", true }, { "osindesejados.com.br", true }, { "osipenko.ua", true }, @@ -91780,51 +105207,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osirisrising.tk", true }, { "osirisrp.online", true }, { "osirium.com", true }, + { "osk-group.ru", true }, { "oskety.com", true }, { "oskrba.net", true }, { "oskrba.online", true }, { "oskuro.net", true }, - { "osla.org", true }, { "oslinux.net", true }, { "oslo-kammerorkester.no", true }, { "osm.is", true }, { "osm.org", true }, - { "osm.ovh", true }, { "osmaniyehaber.tk", true }, { "osmanlitakilari.tk", true }, { "osmanlitorunu.com", true }, { "osmarks.net", true }, { "osmarks.tk", true }, { "osmdroid.net", true }, - { "osmiorniczkowo.pl", true }, { "osmosebox.com", true }, { "osmosis-inversa.online", true }, - { "osmosis.org", true }, + { "osmre.gov", true }, { "osmt.cc", true }, { "osnova.cz", true }, { "osobniterapeutka.cz", true }, { "osobnyak.tk", true }, + { "osohq.com", true }, { "osolutionscorp.com", true }, { "osom.finance", true }, { "osomagicmountain.com", true }, { "osomjournal.org", true }, + { "osoo.kg", true }, { "osorezone.com", true }, { "osorio.io", false }, { "ospis.pl", true }, { "osrdmo.gov", true }, { "osrs.wiki", true }, + { "osrsmap.net", true }, { "osrsplugins.xyz", true }, { "ossdiabolo.tk", true }, + { "osservatorionessuno.it", true }, + { "osservatorionessuno.org", true }, { "ossigeno.tk", true }, { "ossipee-nh.gov", true }, { "ossrox.org", true }, { "osssr.com", true }, { "osszekotatermeszettel.hu", true }, + { "ostalb.social", true }, { "ostan-collections.net", true }, { "ostan-nku.tk", true }, { "ostankino.tk", true }, + { "ostec.com.br", true }, { "ostechnix.com", true }, - { "osteendiner.com", true }, { "ostek.tk", true }, { "ostendorf.com", true }, { "ostendus.club", true }, @@ -91834,16 +105265,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "osteopathe-voisine.com", true }, { "osteopathie-guggenberger.de", true }, { "osteopatiaymasaje.com", true }, - { "osteriabellavista.ch", true }, + { "osteriabellavista.ch", false }, { "osteriadelponte.tk", true }, { "osterkraenzchen.de", true }, { "ostermcbride.com", true }, { "ostern-osterfest.tk", true }, { "ostgotakonst.se", true }, - { "ostgotamusiken.se", true }, { "osti.gov", true }, { "ostimwebtasarim.name.tr", true }, - { "ostimwebyazilim.com", true }, + { "ostimyedekparca.com.tr", true }, { "osto.us", true }, { "ostp.gov", true }, { "ostr.io", true }, @@ -91851,30 +105281,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ostra.me", true }, { "ostrakon.cz", true }, { "ostrausercontent.com", true }, + { "ostravskypediatrickyden.cz", true }, { "ostrov8.com", true }, { "ostrovseocitra.cf", true }, { "ostrovseocitra.ga", true }, { "ostrovseocitra.gq", true }, { "ostrovseocitra.ml", true }, + { "ostseebad-sellin.de", true }, + { "ostuninotizie.it", true }, { "ostylelimo.com", true }, { "osuarez3.com", true }, + { "osun.eu", true }, { "osuszanie-krakow.pl", true }, + { "osuszanie-prinz.com.pl", true }, { "osuszanie-radom.pl", true }, { "osuszanie-warszawa.pl", true }, { "osvaldocontreras.tk", true }, { "osveld.com", true }, + { "osvhub.com", true }, { "oswaldlabs.com", true }, { "oswalds.co.uk", true }, { "oswaldsmillaudio.com", true }, - { "oswbouncycastles.co.uk", true }, { "oswegoil.gov", true }, { "oswegony.gov", true }, { "osworx.net", true }, - { "oszri.hu", true }, { "ot-vinta.tk", true }, { "otakaroltd.co.nz", true }, { "otako.pl", false }, + { "otaku.fm", true }, { "otakubox.de", true }, + { "otakucloud.net", false }, { "otakuie.tk", true }, { "otakurepublic.com", true }, { "otakurumi.de", true }, @@ -91888,11 +105324,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "otdelochnik.tk", true }, { "otdih-krim.tk", true }, { "otdyh-v-abhazii.tk", true }, - { "otellio.it", true }, { "oteri.de", true }, { "otg-drives.tk", true }, { "otgadaika.tk", true }, + { "oth666.com", false }, { "other98.com", false }, + { "othercdn.com", true }, { "otherkinforum.com", true }, { "otherlandlabs.com", false }, { "otherwise.tk", true }, @@ -91900,31 +105337,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oticasvisao.net.br", true }, { "otimismoemrede.tk", true }, { "otinane.eu", true }, + { "otipax.ru", true }, { "otiumtech.com", true }, { "otixz.com", true }, { "otkm-stuttgart.tk", true }, { "otmns.net", true }, - { "otmorozki.tk", true }, + { "otng.us", true }, { "otoblok.com", true }, - { "otocekicitekirdag.com", true }, { "otogeworks.com", true }, - { "otokirala.com", true }, { "otokiralama.name.tr", true }, + { "otokocikinciel.com", true }, { "otoma.tk", true }, { "otomania.tk", true }, + { "otomauto.com", true }, { "otomekaito.xyz", true }, { "otomny.fr", true }, { "otomobilforumu.com", true }, - { "otooil.com", true }, - { "otopan.com", true }, + { "otomobilhaber.com", true }, + { "otonity.com", true }, { "otoplastik.ml", true }, { "otoplenie-ufa.ml", true }, { "otorino.tk", true }, { "otorium.gq", true }, { "otorrino.pt", false }, + { "otosemi.com", false }, { "otoy.com", true }, { "otpbd.xyz", true }, { "otpdvi.gov", true }, + { "otpgoldenfish.ro", true }, + { "otpportalok.hu", true }, { "otprema.hr", true }, { "otpsmart.com.ua", true }, { "otptikforum.cf", true }, @@ -91934,14 +105375,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "otrubah.com", true }, { "ots.gov", true }, { "otsfreestyle.jp", true }, + { "otsfurniture.ca", true }, { "otsu.beer", true }, + { "ott-tv.org", true }, + { "ottawatribe.gov", true }, { "ottens.tk", true }, + { "otterly.me", true }, { "otterpops.tk", true }, + { "ottertailcounty.gov", true }, { "ottertailcountymn.gov", true }, { "otterupdate.com", true }, { "ottervillemo.gov", true }, + { "otthonelektronika.hu", true }, + { "otticait.com", true }, { "ottmarliebert.tk", true }, + { "ottogroup.com", true }, + { "ottokrake.ba", true }, { "ottomanbedsuk.tk", true }, + { "ottomotores.com.mx", true }, { "ottoproject.io", false }, { "ottorinoferilli.com", true }, { "ottoversand.at", true }, @@ -91959,12 +105410,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ouestfrance-auto.pro", true }, { "ouezzan.tk", true }, { "ouglor.com", true }, + { "oui-mais-toscope.info", true }, + { "ouibyyoplait.com", true }, { "ouin.land", true }, { "oujj.link", true }, + { "oukasou.moe", true }, + { "oukasou.xyz", true }, { "ouldlamara.tk", true }, { "oulunjujutsu.com", true }, { "oumactive.com", true }, { "ouminews.net", true }, + { "oumlaut.net", true }, { "oumorienteering.com", true }, { "oumpower.com", true }, { "oumrace.com", true }, @@ -91981,15 +105437,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ourchoice2016.com", true }, { "ourcloud.at", true }, { "ourcodinglives.com", true }, - { "ourcomeback.gov.au", true }, { "ourcreolesoul.com", true }, { "ourcrowd.com", true }, { "ourcybercommunity.com", true }, { "ourdocuments.gov", true }, { "ourevents.net", true }, + { "ourfamilyworld.com", true }, { "ourgame.ie", true }, { "ourgems.com.au", true }, { "ourharvest.com", true }, + { "ourhr.club", true }, { "ourindiana.gov", true }, { "ourladymountcarmel.net", true }, { "ourladymtcarmel.org", false }, @@ -91998,35 +105455,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ourladyqop.org", true }, { "ourladyqueenofmartyrs.org", true }, { "ourlink.tk", true }, - { "ourls.win", false }, { "ourmarket.live", true }, { "ournewsindia.ga", true }, { "ourocg.cn", true }, { "ouronyx.com", false }, + { "ouropal.com", true }, { "ourpharmacynetwork.com", true }, { "ourplanetary.com", true }, { "ours-tudio.com", true }, + { "ours.money", true }, + { "oursaintfrancis.org", true }, { "oursibparksplan.com", true }, { "oursportscentral.com", true }, { "ourstory.rip", true }, { "oursurplus.com", true }, - { "ourtribe.space", true }, + { "oursweb.com", true }, + { "oursweb.net", true }, + { "oursweb.org", true }, + { "ourtableforseven.com", true }, + { "ourteamforabetterworld.de", true }, { "ouruglyfood.com", true }, { "ourwits.com", true }, { "ourworldindata.org", true }, { "ourworldspeaks.com", true }, - { "oust.ch", true }, + { "oust.ch", false }, + { "oustaou-connect.com", true }, { "out-of-england.cf", true }, { "out-of-england.ga", true }, { "out-of-england.gq", true }, { "out-of-england.ml", true }, { "outagamie.gov", true }, + { "outandaboutpv.com", true }, + { "outbankapp.com", true }, { "outbound.tk", true }, { "outbreak.games", true }, { "outcasts-guild.eu", true }, { "outdoorfurniture.ie", true }, { "outdoorgearlab.com", true }, - { "outdoorhaber.com", false }, { "outdoorimagingportal.com", true }, { "outdoorlearningmap.com", true }, { "outdoorlightingagoura.com", true }, @@ -92043,7 +105508,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "outdoorlightingsimivalley.com", true }, { "outdoorlightingthousandoaks.com", true }, { "outdoorlightingwestlakevillage.com", true }, - { "outdoormanufaktur.com", false }, + { "outdoormanufaktur.com", true }, + { "outdoorphoto.co.za", true }, { "outerface.net", true }, { "outerheaven.pro", true }, { "outerlimitsdigital.com", true }, @@ -92053,31 +105519,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "outetc.com", true }, { "outfaced-dancestudio.de", true }, { "outfit-weimar.eu", true }, - { "outfunnel.com", true }, { "outgress.com", true }, { "outgrow.co", true }, { "outhwaite.com", true }, { "outincanberra.com.au", true }, { "outinnationalsecurity.org", true }, + { "outka.xyz", true }, { "outlaw-star.tk", true }, - { "outletapex.com", true }, + { "outletcity.bg", true }, + { "outletstoresmalls.com", true }, { "outline.ski", true }, { "outline.vn", true }, { "outlook.com", true }, { "outlook.pl", true }, + { "outlookbythebay.com", true }, { "outlookonthedesktop.com", true }, + { "outlooktransfer.com", true }, { "outloudradio.uk", true }, + { "outnetic.com", true }, { "outnow.ch", true }, - { "outofservice.tk", true }, { "outoftheboxfitness.com", true }, + { "outofthefog.net", true }, + { "outofyourcomfortzone.net", true }, { "outplnr.fr", true }, { "output.com", true }, { "outrider.ai", true }, { "outshinesolutions.nl", true }, { "outsideconnections.com", true }, { "outsiders.paris", false }, - { "outsidetheboxcreation.com", true }, - { "outsidology.com", true }, + { "outsidershairboutique.com", true }, { "outsize.tk", true }, { "outsourcify.net", true }, { "outsourcingdenomina.co", true }, @@ -92085,22 +105555,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "outstack.vote", true }, { "outstanding.tk", true }, { "outstandingpromotion.com", true }, + { "outtask.ai", false }, { "outwoodz.co.uk", true }, + { "outworking.com", true }, { "ouvindo.com.br", true }, { "ouwerling.tk", true }, - { "ouxiang.me", false }, { "ov-chipkaart.nl", true }, { "ovabastecedoraindustrial.com", true }, { "ovago.com", true }, { "ovalle.tk", true }, { "ovallevirtual.tk", true }, - { "ovbr.ru", true }, - { "ovejaninja.com", true }, + { "ovalterfurtado.com.br", true }, + { "ovationhand.com", true }, + { "ovc.gov", true }, + { "ovcttac.gov", true }, + { "ovegi.co.id", true }, { "ovelhaostra.com", true }, { "oven.media", true }, { "ovenapp.io", true }, { "ovenrepairaustin.com", true }, { "overa.net", true }, + { "overallmotivation.com", true }, { "overallscanners.tk", true }, { "overboosted.de", true }, { "overca.sh", true }, @@ -92115,22 +105590,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "overener.cn", true }, { "overener.co", true }, { "overener.com", true }, - { "overener.net", true }, - { "overener.org", true }, { "overener.tech", true }, { "overener.us", true }, + { "overflow.io", true }, { "overframe.gg", true }, { "overgear.tk", true }, { "overground.tk", true }, + { "overhead.com.pe", true }, { "overheek.tk", true }, { "overlevers.tk", true }, + { "overlevingsmessen.nl", true }, { "overlook.tk", true }, + { "overlooklakeaustin.com", true }, { "overlord.network", true }, { "overmorgen.nl", true }, { "overnetfaq.tk", true }, { "overnetworld.tk", true }, { "overnightglasses.com", true }, { "overpb.gq", true }, + { "overprint-samara.ru", true }, { "overps.cf", true }, { "overrated.ga", true }, { "overratedtech.com", true }, @@ -92141,6 +105619,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "overseasstudenthealth.com", true }, { "overside.ml", true }, { "oversight.garden", true }, + { "oversight.gov", true }, { "oversight.nz", true }, { "oversightboard.com", true }, { "overspace.cloud", true }, @@ -92148,16 +105627,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "overstockpromote.com", true }, { "overthecloud.it", true }, { "overthegate.tk", true }, + { "overtoncountytn.gov", true }, { "overtunes.tk", true }, { "overture.london", true }, { "overwall.org", true }, { "overwatchss.club", true }, { "overzicht.pro", true }, { "overzicht.ws", true }, - { "oveweddings.com", true }, { "ovez.ga", true }, { "ovhcdn.pw", true }, - { "ovianca.com", true }, { "ovidro.pt", false }, { "ovirt.org", true }, { "oviser.ml", true }, @@ -92165,28 +105643,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ovnrain.com", true }, { "ovochi.tk", true }, { "ovodakadarkut.tk", true }, + { "ovomope.cn", true }, { "ovpn.com", true }, { "ovpn.to", true }, + { "ovstravel.com", true }, { "ovuk.ru", true }, { "ovvy.net", false }, + { "owagik.com", true }, + { "owasp.ru", true }, { "owatonna.gov", true }, { "owatonnagrows.gov", true }, { "owdeutschland.org", true }, + { "owdex.com", true }, + { "owenet.net", true }, { "owensboroky.gov", true }, { "owenschumacher.tk", true }, { "owensmith.website", true }, + { "owensvilleoh.gov", true }, { "owfactory.com", true }, { "owid.cloud", true }, { "owise.tk", true }, { "owl-media.pl", true }, { "owl-media.ru", true }, { "owl-media.us", true }, - { "owl-square.com", true }, { "owl-stat.ch", false }, { "owl.net", true }, { "owlandbee.co.uk", true }, { "owlandbee.eu", true }, { "owlandbee.uk", true }, + { "owlando.com", true }, { "owlandrabbitgallery.com", true }, { "owlazy.com", true }, { "owlbee.be", true }, @@ -92197,12 +105682,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "owlbee.it", true }, { "owlbee.nl", true }, { "owldevelopers.tk", true }, + { "owlexa.com", true }, { "owlhollowbakery.com", true }, + { "owln.ai", false }, { "owlnull.me", true }, { "owlscrap.ru", true }, + { "owlsec.io", true }, { "owlvilleers.ga", true }, - { "owmobility.com", true }, - { "own3d.ch", true }, { "ownagepranks.com", true }, { "ownc.at", true }, { "owncloud.ch", true }, @@ -92211,9 +105697,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ownergroup.net", true }, { "ownersre.com", true }, { "owningless.fr", true }, - { "ownmay.com", false }, { "ownparking.com", true }, { "ownspec.com", true }, + { "ownsport.fr", true }, { "owntips.ml", true }, { "owntournament.org", true }, { "ownwolke.de", true }, @@ -92222,6 +105708,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "owo.jp", true }, { "owrt-risk.dedyn.io", true }, { "owyheecounty.gov", true }, + { "owysgarden.com.au", true }, { "ox.restaurant", true }, { "oxalato.com", true }, { "oxaliz.gq", true }, @@ -92230,30 +105717,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oxbridge.eu", true }, { "oxelie.com", false }, { "oxen.io", true }, + { "oxfordandcambridgetutors.com", true }, { "oxfordbio.com", true }, { "oxfordbus.co.uk", true }, + { "oxforddigital.com.au", true }, { "oxfordenglish.com.ua", true }, + { "oxforderc.com", true }, + { "oxfordkneeinfo.com", true }, { "oxfordmd.gov", true }, { "oxfordtutors.com", true }, { "oxfordurgentclinic.com", true }, { "oxia.me", true }, { "oxialive.fr", true }, { "oxiame.eu", true }, - { "oxidescooters.co.uk", true }, + { "oxide.social", true }, + { "oxidecomputer.net", true }, + { "oxidecomputer.social", true }, { "oxidized.org", true }, { "oxigenoinformatica.tk", true }, { "oximedia.ga", true }, { "oximoron.tk", true }, - { "oxinails.salon", true }, { "oxinarf.pt", true }, { "oxizonia.com", true }, - { "oxlab.com.ar", false }, + { "oxlab.com.ar", true }, { "oxo.cloud", false }, + { "oxona.eu", true }, { "oxoo.ooo", true }, { "oxos.com", true }, { "oxots.com", true }, { "oxotscovid.com", true }, - { "oxsec.co.uk", true }, { "oxt.co", true }, { "oxwebdevelopment.com.au", true }, { "oxxoshop.com", false }, @@ -92261,56 +105753,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "oxygames.tk", true }, { "oxygenated.cf", true }, { "oxygenforchennai.com", true }, - { "oxygenserv.com", true }, { "oxygin.net", false }, + { "oxylabs-china.net", true }, { "oxylabs.cn", true }, { "oxylabs.io", true }, + { "oxylog.fr", true }, { "oxymail.ru", true }, { "oxymoron.tk", true }, { "oxynux.xyz", true }, + { "oxytocin.org", true }, + { "oxytocin.wiki", true }, { "oxyx.tk", true }, { "oxz.me", true }, { "oxzeth3sboard.com", true }, - { "oyakmadenmetalurji.com.tr", true }, + { "oya.ai", true }, { "oyal.co.uk", true }, { "oyama-conf.com", true }, { "oyama-karate.tk", true }, - { "oyantec.com", true }, - { "oyap.ca", true }, + { "oyaphwcdsb.com", true }, { "oyapkprdsb.ca", true }, { "oyaptcdsb.com", true }, { "oyaquelegal.com.br", true }, { "oyensglobal.com", true }, { "oyesunn.com", false }, { "oyk13tyuj8ljpete31edj2tes-9if7bi.com", false }, - { "oymy.com", true }, { "oyosoft.fr", true }, { "oyosoft.net", true }, { "oyr79.tk", true }, + { "oysterboxhotel.com", true }, { "oysterworldwide.com", true }, + { "oystr.xyz", true }, { "oyun.news", true }, + { "oyundijital.com", true }, { "oyungg.net", false }, { "oyunmadeni.tk", true }, { "oyunnetwork.com", true }, { "oyunnext.com", true }, { "oyunoynuyalim.tk", true }, + { "oyunshell.com", true }, + { "oyversus.com", true }, { "oz-artfocus.com", true }, { "oz-style.com", true }, + { "ozacek.fun", true }, + { "ozark-serial.net", true }, { "ozarkinspected.com", true }, { "ozaukeecounty.gov", true }, { "ozaymotor.com", true }, { "ozbolt.eu", true }, + { "ozcare.org.au", true }, { "ozcreatives.tech", true }, + { "ozdemirgrubu.com", true }, + { "ozdevelopment.com", true }, { "ozel-ders.tk", true }, { "ozelgitardersi.tk", true }, - { "ozelguvenlik.com.tr", true }, { "ozellaruck.tk", true }, + { "ozemsec.com.br", true }, + { "ozero-kardyvach.ru", true }, { "ozgurbozkurt.com", true }, + { "ozgurgokmen.net", true }, { "ozgurkazancci.com", true }, + { "ozhegov.site", false }, { "ozli.ga", true }, { "ozmo.ml", true }, { "ozna.tk", true }, { "oznamovacipovinnost.cz", true }, + { "ozoksteel.com", true }, { "ozone-medical.fr", true }, { "ozonitron.com", true }, { "ozonitron.de", true }, @@ -92321,28 +105828,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ozonytron.eu", true }, { "ozoz.cc", true }, { "oztorah.com", true }, - { "ozudogru.com", true }, { "ozvoip.net", true }, { "ozvolvo.org", true }, + { "ozzie.fr", true }, { "ozzyfant.de", true }, { "p-art.design", true }, { "p-fent.ch", true }, { "p-home.tk", true }, + { "p-insurgence.com", true }, { "p-k-b.com", true }, { "p-konto.tk", true }, { "p-ku.com", true }, - { "p-mint.jp", true }, { "p-p.site", true }, + { "p-pac.com", false }, { "p-pc.de", true }, - { "p-soc.com.br", true }, - { "p-store.net", true }, { "p-t.io", true }, { "p.ac", true }, { "p.lu", true }, { "p.sb", true }, { "p02.de", true }, { "p0l.de", true }, - { "p10.ru", true }, + { "p1-acc.nl", true }, + { "p1-apps.nl", true }, + { "p1-test.nl", true }, + { "p10.ru", false }, { "p1984.nl", false }, { "p1cn.com", true }, { "p1group.com", true }, @@ -92350,7 +105859,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "p22.co", true }, { "p2enews.com", true }, { "p2p-tv.tk", true }, - { "p2phearthealth.com", true }, { "p2pool.observer", true }, { "p2r.ru", true }, { "p3.marketing", true }, @@ -92361,40 +105869,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "p333hhh.com", false }, { "p333j.net", false }, { "p36533.com", true }, + { "p3medicalinc.com", true }, { "p3ter.fr", true }, { "p4.pm", true }, + { "p4c-admin.azurewebsites.net", true }, { "p4p.click", true }, { "p4plus2.com", true }, { "p4t.co", true }, { "p5197.co", true }, - { "p5on.net", true }, { "p5r.uk", true }, { "p6729.co", true }, { "p6957.co", true }, { "p7jl.com", true }, { "p7m.de", true }, { "p7m.eu", true }, - { "p81365.com", true }, { "p82365.com", true }, { "p8r.de", true }, { "p91aa.com", true }, { "p9297.co", true }, { "p9721.com", false }, { "p9728.co", true }, + { "p99perf.com", true }, + { "p99performance.com", true }, { "p9cq.com", true }, { "p9d1.com", true }, + { "pa-w.de", true }, { "pa.search.yahoo.com", false }, { "pa1ch.fr", true }, { "paack.co", true }, { "paack.com", true }, { "paal.network", true }, - { "paarberatung-duesseldorf.de", true }, + { "paanews.com", true }, { "paarberatung-hn.de", true }, + { "paardekoopergroup.com", true }, + { "paardenfotografie-nederland.nl", true }, { "paardenhulp.nl", true }, { "paardensportbak.nl", true }, { "paarissohail.tk", true }, + { "paaseiland.org", true }, { "paaspasst.de", true }, { "paass.net", false }, + { "paaster.io", false }, { "paazmaya.fi", true }, { "pabio.com", true }, { "pablikado.cz", true }, @@ -92423,8 +105938,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pabloarteaga.xyz", true }, { "pablocamino.tk", true }, { "pablocelorio.com", true }, - { "pablofain.com", true }, + { "pablofain.com", false }, { "pablofonta.es", true }, + { "pablolopezlujan.es", true }, { "pablomachado.tk", true }, { "pablomolina.tk", true }, { "pablomoreno.tk", true }, @@ -92439,12 +105955,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pacco.tk", true }, { "paccolat.name", true }, { "pace.car", false }, - { "pace99.biz", true }, + { "pace.cool", true }, + { "pacecare.com", true }, { "pacecounsel.com", true }, { "paceda.nl", true }, - { "paceinvestmentclub.com", true }, { "pacelink.de", true }, + { "pacem.global", true }, { "pacemakers.ml", true }, + { "pacemigration.com.au", true }, { "pacenterforhearingandbalance.com", true }, { "pachaiyappas.org", true }, { "pachalingo.tk", true }, @@ -92454,13 +105972,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pachuta.pl", true }, { "pacificaent.net", true }, { "pacificarperu.com", true }, - { "pacificautobody.net", true }, + { "pacificbags.com.au", true }, { "pacificbeachpub.com", true }, + { "pacificblue.kiwi", true }, + { "pacificblue.software", true }, { "pacificcashforcars.com.au", true }, { "pacificcoast.com", true }, { "pacificcycling.ga", true }, { "pacificgynsurgicalgroup.com", true }, { "pacifichospitalists.com", true }, + { "pacificislander.org", true }, + { "pacifico.com.pe", true }, { "pacificocooler.com", true }, { "pacificpalisadeselectric.com", true }, { "pacificpalisadeselectrical.com", true }, @@ -92468,37 +105990,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pacificpalisadeslighting.com", true }, { "pacificprivatebank.com", true }, { "pacificpuke.com", true }, + { "pacificstates.net", true }, { "pacifictechnologie.com", true }, { "pacifictilkin-occasions.be", true }, { "pacifique-web.nc", true }, { "pacifistka.tk", true }, - { "pacisof.com", true }, { "pack-haus.de", true }, + { "pack.com.ua", true }, { "pack.rocks", true }, + { "pack1537.org", true }, { "pack183.com", true }, { "pack50cubs.org", true }, { "packaging-design.net", true }, + { "packaginghouse.co.nz", true }, { "packagingproject.management", true }, { "packagist.jp", true }, { "packagist.org", false }, { "packair.com", true }, { "packandseal.in", true }, - { "packaware.com", true }, { "packedagain.com", true }, { "packer.io", false }, { "packetapp.ru", true }, { "packetcrash.net", true }, - { "packetdigital.com", true }, + { "packetfabric.com", true }, { "packetlinux.com", true }, { "packetmail.net", true }, + { "packetnomad.net", true }, { "packetoverflow.com", true }, - { "packhelp.uk", true }, + { "packlane.com", true }, { "packliberte.org", true }, { "packservice.es", true }, { "packtracking.org", true }, + { "packwire.com", true }, { "paclease.com.my", true }, { "pacman.ltd", true }, - { "pacmanfrogsaspets.com", true }, { "pacobarbera.tk", true }, { "pacoda.de", false }, { "pacogarcia.tk", true }, @@ -92517,10 +106042,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paczkazywnosciowa.pl", true }, { "pad.wf", true }, { "padam-group.com", true }, + { "padangkita.com", false }, { "padberx-marketing-consultants.de", true }, { "padderne.tk", true }, { "paddestoelen-encyclopedie.tk", true }, - { "paddleshifterz.com", true }, { "paddy.rocks", true }, { "padichota.tk", true }, { "padisahbilisim.tk", true }, @@ -92533,35 +106058,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paducaheic.com", true }, { "padzilla.com", true }, { "pae.com", true }, - { "paediatricdata.eu", true }, + { "paediatricdata.eu", false }, { "paedlink.ca", true }, { "paesa.es", true }, - { "paeseendo.com.br", true }, { "paesi.info", true }, - { "paf-events.ch", false }, { "paff.xyz", true }, { "paga.red", true }, + { "pagalnew.com", true }, { "pagalofacil.com", true }, { "pagalworld-news.ml", true }, { "pagalworld.com", true }, - { "pagalworld.link", true }, { "pagalworld.mobi", true }, { "pagalworld.name", true }, - { "pagalworld.net", true }, - { "pagalworld.org", true }, + { "pagalworld.nl", true }, { "pagalworld.tv", true }, { "pagalworld.us", true }, - { "pagalworld.wiki", true }, { "pagancollective.cf", true }, { "paganismguide.com", true }, { "paganistisch-forum.tk", true }, { "pagatuarriendo.cl", true }, { "pagbitcoin.com", true }, { "page", true }, - { "page-audit.com", true }, - { "page-audit.ru", true }, { "page-engine.tk", true }, { "page-speed.ru", true }, + { "page.lgbt", true }, { "page12.tk", true }, { "pageboard.fr", true }, { "pageboard.io", true }, @@ -92579,30 +106099,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pages-tocaven.com", true }, { "pagesdemo.xyz", true }, { "pagespeaker.com", true }, + { "pagespeedwizard.com", true }, { "pagestash.net", true }, { "pageuppeople.com", true }, + { "pagevitals.com", true }, { "pagewizz.com", true }, { "pagexl.com", true }, { "pagiamtzis.com", true }, { "pagina394.com.br", true }, { "paginamaravillosa.tk", true }, - { "paginas-web.net", true }, { "paging.blog", false }, + { "pagladirector.com", true }, { "pagliucadb.ddns.net", true }, + { "pagodart.com.br", true }, { "pagueveloz.com.br", true }, { "paguponku.com", true }, { "pagure.io", true }, { "pagure.org", true }, + { "pahadee.coffee", true }, + { "pahe.win", true }, { "pahealthbilling.com", true }, { "pahira.gq", true }, + { "paho.org", true }, { "pahom.gq", true }, { "pahrumpnv.gov", true }, + { "pahui.cf", true }, + { "pahui.ml", true }, + { "pahuudenanatomia.fi", true }, { "paide.edu.ee", true }, + { "paidnaija.com", true }, { "paidsurveys.tk", true }, { "paidtocode.com", true }, { "paidtodesign.com", true }, { "paidtodev.com", true }, - { "paidtomoney.com", true }, { "paiementdp.com", true }, { "paiementpasseport-mali.com", true }, { "paige.ai", true }, @@ -92613,10 +106142,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "painclinic.tk", true }, { "paincore.tk", true }, { "paindata.dk", true }, + { "paine.tv", true }, { "painefamily.co.uk", true }, { "painesvillemunicipalcourt-ohio.gov", true }, { "painfreenyc.com", true }, { "painful.fun", true }, + { "paininthearsenal.com", true }, + { "painkillercart.com", true }, { "painmanagementnyc.com", true }, { "painosso.org", true }, { "paint-it.pink", true }, @@ -92627,27 +106159,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paintbrush.ga", true }, { "paintcolorsbysue.com", true }, { "painted-designs.tk", true }, - { "paintersgc.com.au", true }, + { "painteddesertfrenchies.com", true }, { "paintingindurban.co.za", true }, { "paintingrepair.ga", true }, { "paintlabcustom.com.br", true }, + { "paintpaina.com", true }, { "paintprotectionfilm.store", true }, + { "paintscratch.com", true }, { "paio2-rec.com", true }, { "paipuman.jp", true }, { "paireepinart.com", true }, { "pairsclassifiedads.tk", true }, { "paisa-dev.azurewebsites.net", true }, { "paisleyandsparrow.com", true }, + { "paistation.ch", true }, { "paivafernandes.com.br", true }, { "pajadam.me", true }, { "pajamka.com.ua", true }, { "pajbot.de", true }, + { "pajobsite.com", true }, { "pajuvuo.fi", true }, + { "pak-kazan.ru", true }, { "pakaranggrek.com", true }, - { "pakarrumah.com", true }, - { "pakcha.com.ar", true }, { "paket.monster", true }, { "paketbox-systems.at", true }, + { "paketconline.com", true }, { "paketo.cz", true }, { "paketo.sk", true }, { "paketverfolgung.info", true }, @@ -92655,17 +106191,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paketwisataliburan.com", true }, { "pakeystonesaves.gov", true }, { "pakeystonescholars.gov", true }, + { "pakfactory.com", true }, { "pakforces.tk", true }, { "pakho.xyz", true }, { "pakingas.lt", true }, { "pakistan24.tk", true }, { "pakistanblogger.tk", true }, { "pakistanheadline.tk", true }, - { "pakistani.dating", true }, + { "pakistanichatzone.com", true }, { "pakistanientertainers.ga", true }, { "pakistanmusic.tk", true }, { "pakistanpost.ga", true }, - { "pakitakso.ee", true }, { "pakitow.fr", true }, { "pakjefooi.be", true }, { "pakjefooi.com", true }, @@ -92678,15 +106214,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pakmarkas.lt", true }, { "pakmedia.tk", true }, { "paknetworking.org", true }, - { "pakonshorelng.com", true }, { "pakostane-apartments.tk", true }, { "pakpak.tk", true }, + { "pakpedia.pk", true }, { "pakremit.com", true }, { "paksui-ne.tk", true }, - { "paktolos.net", false }, { "palabr.as", true }, { "palaceitalia.tk", true }, - { "palach.tk", true }, { "paladin.wtf", true }, { "paladini.tk", true }, { "palakkad.tk", true }, @@ -92695,10 +106229,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "palantir.com", true }, { "palariviera.com", true }, { "palatin.at", true }, + { "palatineil.gov", true }, { "palationtrade.com", true }, { "palatte.ml", true }, + { "palau-pizza.fr", true }, { "palaubluetours.com", true }, - { "palava.tv", true }, { "palavalbasket.it", true }, { "palavatv.com", true }, { "palawan.jp", false }, @@ -92725,12 +106260,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "palessit.com", true }, { "palestra.roma.it", true }, { "paletdecor.com.ua", true }, + { "palette26.com", true }, { "paletten.tk", true }, { "palfut.com", true }, { "paliucuiciucci.tk", true }, { "palladium46.com", true }, { "palladiumprivate.com", true }, - { "palladiumtechs.com", true }, { "palletflow.com", true }, { "palletsprojects.com", false }, { "pallhed.se", true }, @@ -92738,22 +106273,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "palliativ-del.de", true }, { "palmaprop.com", true }, { "palmarinaestrada.com.br", true }, + { "palmatin.com", true }, + { "palmbayfl.gov", true }, + { "palmbeachbusinessbroker.com", true }, { "palmbeachcounty-fl.gov", true }, { "palmbeachcuisine.com", true }, { "palmbeachelections.gov", true }, { "palmbeachvotes.gov", true }, - { "palmbeachwebsitehosting.com", true }, { "palmcoast.gov", true }, { "palmcoastbusinessnetwork.com", true }, { "palmdesert.gov", true }, { "palmedconsultants.com", true }, { "palmedconsultants.org", true }, { "palmen-apotheke.de", true }, + { "palmettogba.com", true }, { "palmfan.com", true }, { "palmiye.tk", true }, + { "palmlivingae.com", true }, { "palmofinfinity.tk", true }, - { "palmoilpledge.id", true }, - { "palms.fitness", true }, + { "palmyramo.gov", true }, { "palner.eu", true }, { "paloma.tk", true }, { "palomalopez.tk", true }, @@ -92762,26 +106300,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "palonhs.tk", true }, { "palotahaz.hu", true }, { "palpitediario.com.br", true }, + { "paltin-petruvoda.ro", true }, { "paltopro.com", true }, - { "palucamoveis.com.br", true }, + { "pamajans.com", false }, { "pamaniqu.nl", true }, - { "pamashield.com", true }, { "pamc.tk", true }, { "pamelaemarionimoveis.com.br", true }, { "pamiers-citoyenne.fr", true }, { "pamlightdesign.com", true }, { "pamm.tk", true }, { "pamontecarloclub.tk", true }, - { "pamperssamples.ca", true }, + { "pamorana.net", true }, { "pamsorel.co.za", true }, + { "pamukhaliyikama.net", true }, { "pamvo.com", true }, { "pan-lleveme.com", true }, + { "pan-portugal.com", true }, { "pan.digital", true }, + { "pana4ucloud.ddns.net", true }, { "panaceainfosec.com", true }, { "panamacity.gov", true }, { "panamacitypolice.gov", true }, - { "panamarealestatebrokers.com", true }, - { "panamasportsfactory.com", true }, { "panamatravel.tk", true }, { "panamatrippin.com", true }, { "panamawebfactory.com", true }, @@ -92812,37 +106351,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "panascais.us", true }, { "panascais.zone", true }, { "panasproducciones.com", true }, - { "panavision.com", true }, { "panaxis.biz", true }, { "panaxis.ch", true }, { "panaxis.li", true }, + { "pancake-world.com", true }, + { "pancake.gg", true }, + { "pancani.it", true }, + { "panchajanyafashions.com", true }, { "panda-community.com", true }, { "panda-craft.tk", true }, { "panda-lang.net", true }, { "panda-life.tk", true }, { "panda.tf", true }, { "pandacbd.com", true }, + { "pandadoc.com", true }, { "pandahut.net", true }, { "pandakid.tk", true }, { "pandaltd.nl", false }, + { "pandamo.pl", true }, + { "pandamoto.fr", true }, { "pandapsy.com", true }, - { "pandascrow.io", true }, + { "pandasilk.com", true }, + { "pandavpn.pro", true }, + { "pandavpnpro.com", true }, { "pandelys.tk", true }, { "pandemicflu.gov", true }, + { "pandemicoversight.gov", true }, + { "pandillatel.ml", true }, { "pandit.tech", true }, { "pandithaya.tk", true }, { "pandjes.com", true }, { "pandkonijn.nl", true }, + { "pandn-bulgaria.com", true }, { "pando-market.com", true }, { "pandora-prestige.ru", true }, { "pandora-system.ru", true }, { "pandora.com.tr", true }, { "pandoramutiara.id", true }, { "pandorarox.com", true }, + { "pandorrah.nl", true }, { "pandorum.cf", true }, { "panduan-hamil.tk", true }, { "pandymic.com", true }, + { "pandys.org", true }, { "panel-stroy.cf", true }, + { "panelbear.com", true }, { "paneldewelopera.pl", true }, { "paneldoorsolutions.com", true }, { "paneldoorsolutions.de", true }, @@ -92853,25 +106406,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "panezai.tk", true }, { "pang.ga", true }, { "pangea-it.com", true }, + { "pangea.cloud", true }, { "pangeaservices.com", true }, { "panghu.me", true }, + { "panglobal.org", true }, + { "pangolin.exchange", false }, { "pangoly.com", true }, - { "panhardclub.nl", true }, + { "panhandleprairiewings.com", true }, + { "panhardclub.nl", false }, { "panheelstraat.tk", true }, { "panic-away.tk", true }, { "panic.tk", true }, { "panicroomgames.ch", true }, { "panictours.tk", true }, { "panier-legumes.bio", true }, + { "panierscadeauxinternationaux.com", true }, { "paniigielka.pl", true }, + { "paniniamerica.net", true }, { "panino.gr", true }, { "paninohome.com", true }, { "paniodpolskiego.eu", true }, { "paniyanovska.ua", true }, - { "panj.ws", true }, { "panjiva.com", true }, { "pankoff.net", true }, + { "pankvyh.xyz", true }, { "panlex.org", true }, + { "panmill.xyz", true }, { "panmuseum.gr", true }, { "panna-blues.tk", true }, { "pannellisolari.roma.it", true }, @@ -92879,41 +106439,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pano-guru.com", true }, { "pano.ie", true }, { "panoramacambios.com", true }, + { "panoramahillhotel.com", true }, { "panoramaphoto.cf", true }, { "panoramaresidence-moesern.at", true }, { "panoramica.tk", true }, { "panoramique.tk", true }, { "panoramiquesorganya.tk", true }, { "panoramixbycallens.eu", true }, + { "panoramo.mx", true }, + { "panoraven.com", true }, + { "panorays.com", true }, { "panoti.com", false }, - { "panpa.ca", true }, { "panpsychism.com", true }, { "panpsychist.com", true }, + { "pansec.de", true }, { "panser.dk", true }, { "pansermuseet.com", true }, { "pansermuseet.dk", true }, { "pansermuseum.dk", true }, { "pansino.net", true }, { "pansion-differently.tk", true }, + { "panskeet.xyz", true }, + { "pansys.de", true }, + { "panszelescik.pl", true }, + { "pantagraph.com", true }, { "pantai.com.my", true }, - { "pantaleon.com", true }, { "pantallanotebook.cl", true }, { "pantallasyescenarios.com", false }, + { "pantas.com", true }, + { "pantavv.xyz", true }, { "pantera.tk", true }, { "panthenolplus.co.uk", true }, { "panthenolplus.com", true }, + { "pantheoncommunity.org", true }, { "pantheoncrafters.com", true }, { "pantherage.co.uk", true }, + { "panthercitysand.com", true }, + { "pantherscore.com", true }, { "panthi.lk", true }, - { "pantiesless.com", true }, { "pantingly.tk", true }, - { "pantographe.info", false }, + { "pantonshire.com", true }, { "pantou.org", false }, + { "pantryjars.com", true }, { "pants-off.xyz", false }, { "pantsu.club", true }, { "pantsuservice.tk", true }, { "pantuflas.tk", true }, { "pantypit.com", true }, + { "panwchi.com", true }, + { "panyajt.in.th", true }, { "panzdravi.cz", true }, { "panzer72.ru", true }, { "panzers.tk", true }, @@ -92922,11 +106496,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pao.moe", true }, { "paocaibang.net", true }, { "paocloud.co.th", true }, - { "paofu.cat", false }, { "paolodemichele.it", false }, { "paolomargari.tk", true }, + { "paolomoriggia.com", true }, { "paolotagliaferri.com", true }, { "paotang.in.th", true }, + { "paoyou.ml", true }, { "pap-pap.ga", true }, { "pap.la", false }, { "papa---mama.tk", true }, @@ -92935,45 +106510,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "papabrand.tk", true }, { "papadoccaffe.pt", true }, { "papadopoulos.me", true }, + { "papago-taiwan.com", true }, + { "papaimama.ru", true }, { "papakarlohas.ru", true }, + { "papakarlotools.ru", true }, { "papakatsu-life.com", true }, - { "papakonstantinou.tk", true }, { "papapa-members.club", true }, { "paparazzie.de", true }, { "paparazzo.net", true }, + { "paparoach-fans.ru", true }, + { "papascoffee.org", true }, { "papastratosmazi.gr", true }, { "papatest24.de", true }, { "papaya.me.uk", true }, + { "papayapay.com", true }, { "papayapythons.com", true }, { "papelariaestacaodopapel.com.br", true }, { "papelcraft.co.uk", true }, - { "papendal.com", true }, - { "papendal.nl", true }, - { "paper-republic.org", true }, + { "papeleo.digital", true }, + { "papelisimo.es", true }, + { "paper-cutter.com", true }, { "paper.sc", true }, { "paper.wf", true }, + { "paperandpage.com", true }, + { "papercanyon.com", true }, { "paperhoney.by", true }, - { "papermasters.com", true }, - { "papermotion.fr", true }, + { "paperless.spdns.eu", true }, { "papermuseum.jp", true }, - { "paperopedia.com", true }, { "paperplatefun.com", true }, - { "paperplus.com.au", true }, + { "paperplus.com.au", false }, { "paperpress.gq", true }, { "papersmart.net", true }, + { "papersowl.com", true }, { "papertracker.net", true }, { "paperwallets.io", true }, { "paperwork.co.za", true }, { "paperwritinghelp.net", true }, { "paperwritten.com", true }, { "papgift.com", true }, - { "papiermakerijdehoop.nl", true }, - { "papiermeteenverhaal.nl", true }, { "papierniak.net", true }, - { "papierniczy.eu", false }, + { "papillegustative.com", true }, { "papillon-events.be", true }, + { "papinido4ki.ru", true }, { "papkinadochka.ru", true }, - { "papodegalo.com.br", true }, { "papotage.net", true }, { "papouille.ml", true }, { "pappacoda.it", true }, @@ -92981,17 +106560,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pappu.tk", true }, { "paprikas.fr", true }, { "papuzkija.pl", true }, + { "paqtam.com", true }, { "par-allel.ru", true }, { "parabellum-barakaldo.tk", true }, { "parabolaeditorial.com.br", true }, + { "parabooking.com", true }, { "paraborsa.net", true }, { "paracels.tk", true }, + { "parachute.gov", true }, { "parachute.live", true }, - { "parachute70.com", false }, { "parachutes.tk", true }, { "parachuteteam.co.uk", true }, { "paracomer.es", true }, - { "paradependentesquimicos.com.br", false }, + { "parade-nootdorp.nl", true }, { "paradex.io", true }, { "paradies-baar.ch", true }, { "paradiesgirls.ch", true }, @@ -93001,9 +106582,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paradiscapacitados.site", true }, { "paradise-engineer.com", true }, { "paradise-engineering.com", true }, + { "paradise-springs.com", false }, { "paradise-travel.net", true }, + { "paradise-villa.ca", true }, { "paradise-world.ml", true }, - { "paradisecreekbrewery.com", true }, { "paradiselost.com", false }, { "paradisend.tk", true }, { "paradiseprivatehospital.com", true }, @@ -93011,35 +106593,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paradisetownshipmi.gov", true }, { "paradisim.tk", true }, { "paradisu.fr", true }, - { "paradoxdesigns.org", true }, + { "paradopolis.com", true }, { "paradoxium.ml", true }, { "paraelganzo.tk", true }, { "parafarmacia.it", true }, - { "paragallosfino.online", true }, + { "paragliding-lessons.com", true }, { "paragon-consult.com", true }, - { "paragonie.com", false }, { "paragonremodeling.com", false }, { "paragonsigns.tk", true }, { "paragontasarim.com", true }, { "paragreen.net", true }, { "paraguay.tk", true }, { "parakazanmafikirleri.com", true }, + { "paralegaledu.org", true }, { "paralellesjuridiques.com", true }, { "parallel-creative.co.uk", true }, { "parallel-worlds.tk", true }, { "parallelpython.com", true }, + { "paralleum.cz", true }, { "paraluman.be", true }, { "paralysis.ga", true }, { "paramapa.com.py", true }, - { "paramaquetas.com", true }, { "paramarq.com", true }, { "paramascotas.vip", true }, + { "paramloda.online", true }, { "paramo-pineiro.tk", true }, + { "paramountbank.com", true }, + { "paramountdigitalcopy.com", true }, { "paramusborough.gov", true }, { "paranoid.is", true }, + { "paranoidandroid.co", true }, { "paranoidandroid.tk", true }, { "paranoidpengu.in", true }, { "paranoidpenguin.net", true }, + { "paranoidpenguins.com", true }, { "paranormales.tk", true }, { "paranoxer.hu", true }, { "paranoxido.tk", true }, @@ -93050,6 +106637,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parareflex.fr", true }, { "paras.tk", true }, { "parasatria.tk", true }, + { "paraserviceco.com", true }, + { "parasgroupindia.com", true }, { "parasitologyclub.org", true }, { "parasomnia.tk", true }, { "parastaran.tk", true }, @@ -93059,26 +106648,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parattusdecora.com.br", true }, { "paratxt.org", true }, { "paraverse.tk", true }, - { "parayel.com", true }, { "parazyd.cf", true }, { "parcbotanique.com", true }, { "parcelauditpartners.com", true }, + { "parceltrackr.com", true }, { "parcelup.com", true }, { "parcely.online", true }, { "parchcraftaustralia.com", true }, { "parckwart.de", true }, - { "parcon.it", true }, { "parcoursup-nouvelle-caledonie.fr", true }, { "parcoursup.fr", true }, { "pardal.tk", true }, { "pardanaud.com", true }, { "pardnoy.com", true }, { "paredesdecoura.pt", false }, + { "paregion13.gov", true }, { "parejaideal.es", true }, + { "parelectric.com", true }, { "parelweb.nl", true }, + { "paremedical.au", true }, { "paremvasi.net", true }, { "parentelement.com", true }, - { "parentheseardenne.be", false }, { "parenthood.guide", true }, { "parentingalpha.com", false }, { "parentingplaydough.tk", true }, @@ -93088,14 +106678,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parentsandzebrasunited.com", true }, { "parentsguidetotheworld.com", true }, { "parentsintouch.co.uk", true }, + { "parentsmaster.com", true }, { "parenttheirpassion.com", true }, + { "pareshukuk.com", true }, { "paretoit.com", true }, { "paretorule.cf", true }, { "parfum-best.ml", true }, { "parfumer.tk", true }, + { "parfumi-eu.com", true }, { "parfumi.tk", true }, + { "parfums4u.cz", true }, { "parfumtester-100.ml", true }, { "parhelionaerospace.com", true }, + { "pari-match-betting.com", true }, + { "pari-match.in", true }, { "pari-vinci.org", true }, { "pari.cz", true }, { "paribus.io", true }, @@ -93103,10 +106699,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parideal.com", true }, { "parideal.de", true }, { "paridokhtmoshkzad.com", true }, + { "paridurable.com", true }, { "parikmaxeru.tk", true }, + { "parimatch-best.com", true }, + { "parimatch-betting.com", true }, + { "parimatch-chance.com", true }, + { "parimatch-email.com", true }, + { "parimatch-live.com", true }, + { "parimatch-play.com", true }, + { "parimatch-plus.com", true }, + { "parimatch-sport.com", true }, + { "parimatch-sports.com", true }, + { "parimatch-world.com", true }, + { "parimatch.co.tz", true }, + { "parimatch.com", true }, + { "parimatch.in", true }, + { "parimatch.kz", true }, + { "parimatch.net", true }, + { "parimatch.tj", true }, + { "parimatch8.com", true }, + { "parimatchgo.com", true }, + { "parimatchlive.com", true }, + { "parimatchsports.com", true }, + { "parimatchtop.com", true }, { "parina.vn", true }, + { "parinc.com", true }, { "pario.li", true }, + { "paripesa.com", true }, + { "paripesa.ng", true }, { "paris-elysees.com", false }, + { "paris-luttes.info", true }, + { "paris.edu", true }, { "parisa-panahi.com", true }, { "parisackerman.com", true }, { "parisbesttravel.com", true }, @@ -93118,21 +106741,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parisfranceparking.de", true }, { "parisfranceparking.fr", true }, { "parisfranceparking.nl", true }, + { "parishoftheholycross.org", true }, { "parishome.jp", true }, { "parismalleg.com", true }, - { "parisnormandyimmobilier.com", true }, { "parisprovincedemenagements.fr", true }, - { "paritexpressions.com", true }, + { "parissportifs.com", true }, + { "pariu.online", false }, { "parizhanka.tk", true }, { "park-trek.com", true }, + { "parkable.com", true }, { "parkairecrossing.com", true }, { "parkbee.com.br", true }, + { "parkcheap.nl", true }, { "parkcitycu.org", true }, { "parkcounty-wy.gov", true }, { "parkcountyco.gov", true }, { "parkcountysheriff-wy.gov", true }, { "parked-domain.net", true }, + { "parkeer.nl", true }, + { "parkeerserviceboxtel.nl", true }, { "parkefficient.de", true }, + { "parker-pllc.com", true }, + { "parkerco.gov", true }, { "parkercs.cf", true }, { "parkercs.ga", true }, { "parkercs.gq", true }, @@ -93144,35 +106774,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parkerforum.tk", true }, { "parkerplumbingcompany.com.au", true }, { "parkers.cf", true }, + { "parkers.co.uk", true }, { "parkers.ga", true }, { "parkers.gq", true }, { "parkers.ml", true }, { "parkers.tk", true }, + { "parkersweeper.com", true }, { "parket.gq", true }, - { "parketsn.ru", true }, - { "parkettdielen.net", true }, - { "parking4less.com", false }, + { "parketsn.ru", false }, + { "parkinggaragecleaningchicago.com", true }, + { "parkinggaragepressurewashingchicago.com", true }, { "parkinginparis.fr", true }, + { "parkingland.com", true }, { "parkingmasters.be", true }, { "parkingparisnord.fr", true }, { "parkinsons.tk", true }, - { "parklandtopdressing.com.au", true }, + { "parkmycloud.com", true }, { "parkofnations.com", true }, - { "parkpoint-capitalhills.com", true }, + { "parkos.com", true }, + { "parkos.de", true }, + { "parkos.it", true }, + { "parkos.nl", true }, + { "parkplus.in.ua", true }, { "parkr.io", true }, + { "parkrangeredu.org", true }, { "parkrunstats.servehttp.com", true }, { "parkscandles.com", true }, + { "parkseed.com", true }, + { "parksi.top", true }, + { "parkstonegp.com", true }, { "parksubaruoemparts.com", true }, { "parktownpatrols.co.za", true }, + { "parktraum.com", true }, { "parkvetgroup.com", true }, + { "parkviewcity.com.pk", true }, { "parkviewmotorcompany.com", true }, { "parkwayminyan.org", true }, + { "parkweiher.koeln", true }, + { "parkwhiz.com", true }, { "parlakjurnal.com", true }, { "parlament.cf", true }, { "parlamento.gub.uy", true }, { "parlamentum.com.br", true }, { "parleamonluc.fr", true }, - { "parlerdeathcountdown.com", true }, { "parleu2016.nl", true }, { "parleur.net", true }, { "parmartecultura.it", true }, @@ -93180,19 +106824,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "parmels.com.br", true }, { "parmoli.tk", true }, { "parnassys.net", true }, + { "parniplus.com", true }, { "parnizaziteksasko.cz", true }, - { "parodesigns.com", true }, { "paroisses-theix-surzur.com", true }, + { "parokia.hu", true }, + { "parolededieu.org", true }, { "paroli.pl", true }, { "parolu.io", true }, + { "paronubi.com", true }, + { "parool.nl", true }, { "parovozov.ga", true }, { "paroxetine.gq", true }, { "parperfeito.pt", true }, + { "parpharm.com", true }, { "parque-batlle.tk", true }, { "parquebatlle.tk", true }, + { "parquestejo.pt", true }, { "parquettista.milano.it", true }, { "parquettista.roma.it", true }, + { "parquettisti.roma.it", true }, { "parratennis.com.au", true }, + { "parrocchiadianguillaraveneta.it", true }, { "parrocchiadimeana.tk", true }, { "parrocchiamontevecchia.it", true }, { "parroquiacorazondemaria.tk", true }, @@ -93202,43 +106854,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pars.work", true }, { "parsahosseinpour.com", true }, { "parsdev.com", false }, + { "parsec.app", true }, { "parsemail.org", true }, { "parser.nu", true }, + { "parsi.com", true }, + { "parsify.eu", true }, { "parsonsfamilyhomes.com", true }, - { "parspanel.com", true }, + { "parsonspdks.gov", true }, { "parsuv.ir", true }, { "part-of-that-world.com", true }, { "part.la", true }, - { "partage-noir.fr", true }, { "partage.ovh", true }, { "parteaga.com", true }, { "parteaga.net", true }, { "partechshaker.com", true }, { "partecipa.tn.it", true }, + { "partedmagic.com", true }, { "partenopei.net", true }, { "parthkolekar.me", true }, + { "parthuisot.fr", true }, { "particle-vision.ch", true }, { "particles.cf", true }, + { "particleslam.com", true }, { "partido-libertario.tk", true }, { "partidolibertario.tk", true }, + { "partiellkorrekt.de", true }, { "partigetir.com", true }, + { "partigoldendoodle.com", true }, { "partii.tk", true }, { "partijtjevoordevrijheid.nl", false }, - { "partin.nl", true }, + { "partijvoordedieren.nl", true }, + { "partin.nl", false }, { "partiono.com", true }, + { "partir-en-livre.fr", true }, { "partisaani.com", true }, { "partisan-berlin.tk", true }, - { "partitioningjohannesburg.co.za", true }, { "partituras.tk", true }, + { "partner-compensation.com", true }, { "partner-finden.tk", true }, - { "partner.sh", true }, - { "partner.su", true }, { "partnerbeam.com", true }, { "partnerchik.tk", true }, { "partnerforex.tk", true }, { "partnermobil.de", true }, { "partnerobzor.tk", true }, + { "partnerportal.io", true }, + { "partners1xbet.com", true }, + { "partners1xbit.com", true }, + { "partners1xslot.com", true }, + { "partners1xslots.com", true }, { "partners4results.net", true }, + { "partnersbiz.com", true }, { "partnersofprc.com", true }, { "partnertaxhub.com", true }, { "partnerwerk.de", false }, @@ -93247,28 +106912,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "partofthequeue.gq", true }, { "partofthequeue.ml", true }, { "parts4phone.com", false }, + { "partsandmotorcycles.com", true }, + { "partsandscore.com", true }, { "partsavto.tk", true }, { "partsbox.com", true }, { "partsbox.io", true }, { "partscov.ga", true }, { "partscov.gq", true }, + { "partsdost.com", true }, { "partsestore.com", true }, + { "partsgeek.com", true }, { "partsguysusa.com", true }, { "partsinstock.com", true }, + { "partsworld.bg", true }, { "partusedtyres.net", true }, { "party-kneipe-bar.com", true }, { "party-time-inflatables-durham.co.uk", true }, { "partyaccommodationsers.ga", true }, { "partyaccommodationsest.ga", true }, { "partyausstatter24.de", true }, - { "partybounceplay.co.uk", true }, { "partyclub.tk", true }, { "partycoin.ga", true }, - { "partydj.be", true }, { "partyevents.tk", true }, + { "partygangsta.de", true }, { "partyhireliverpool.co.uk", true }, { "partykanal.cz", true }, - { "partymagasin.se", true }, + { "partymat.de", true }, + { "partymusikband.de", true }, { "partypearl.de", true }, { "partypeeps.tk", true }, { "partyphoto.tk", true }, @@ -93277,60 +106947,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "partyshop.ge", true }, { "partytime-uk.co.uk", true }, { "partytimeltd.ie", true }, + { "partywithunicorns.com", true }, { "partyyy.io", true }, { "partyzone.ie", true }, { "paru-design.com", true }, { "parvaneh.fr", true }, { "parys.org", true }, + { "pasabahcemagazalari.com", true }, { "pasadena.gov", true }, { "pasadenapooch.org", true }, { "pasalt.com", true }, { "pasarella.eu", true }, { "pasaruang.id", true }, - { "pasatiempos.tk", true }, { "pascal-bourhis.com", true }, { "pascal-koelsch.de", true }, { "pascal-ua.tk", true }, - { "pascal-vogel.com", true }, { "pascal-wittmann.de", true }, - { "pascal90.de", true }, { "pascalchristen.ch", true }, { "pascalgames.tk", true }, { "pascalhargarter.de", true }, { "pascaline-jouis.fr", true }, { "pascalleguern.com", true }, - { "pascalmathis.com", true }, - { "pascalmathis.me", true }, - { "pascalmathis.net", true }, { "paschmid.ch", true }, { "pascoaselecta.com", true }, { "pascocountyfl.gov", true }, + { "pascoflcorrections.gov", true }, { "pascopresents.com", true }, + { "pascosheriff.com", true }, { "pascovotes.gov", true }, { "pascualberniz.tk", true }, { "pascualinmuebles.com", true }, { "pasearch.nl", true }, { "paseelite.co", true }, + { "paseka-putilinyh.ru", true }, { "paseodelariviera.com", true }, { "pashminacachemire.com", true }, { "pasito.se", true }, { "paslc.gov", true }, + { "paslerfilm.de", true }, { "pasnederland.tk", true }, { "pasnine.my.id", true }, - { "pasnyburiat.pl", true }, { "pasportaservo.org", true }, - { "pasquarellointeriors.com", true }, { "pasquinelli-truebag.ch", true }, - { "pass.org.my", true }, { "passa.org", true }, { "passabook.com", true }, { "passau-webdesign.com", true }, { "passbolt.com", true }, + { "passbypointer.com", true }, { "passedport.eu", true }, { "passedport.net", true }, { "passedport.org", true }, { "passegginieculle.it", true }, - { "passeiosepescarias.com.br", true }, { "passendonderwijs.nl", false }, { "passengertravelportal.com", true }, { "passer.ga", true }, @@ -93338,34 +107005,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "passfilesafe.com", true }, { "passfindr.com", true }, { "passfoto-deinfoto.ch", true }, + { "passgator.com", true }, { "passieposse.nl", true }, + { "passinggrade.co.id", true }, { "passion-billard.fr", true }, - { "passionate.org.nz", true }, + { "passion-net.fr", true }, { "passionatefoodie.co.uk", true }, { "passionatehorsemanship.com", true }, { "passionatelife.com.au", true }, - { "passionbyd.com", false }, { "passiondesigns.web.id", true }, { "passionebenessere.com", true }, { "passionegriglia.com", true }, + { "passionforbusiness.com", true }, { "passionpictures.eu", true }, { "passions-art.com", true }, - { "passionsorigen.cat", true }, + { "passiton.com", true }, { "passive-work.gq", true }, + { "passivebook.com", true }, { "passiveseinkommen.tk", true }, { "passivhaus.tk", true }, { "passky.org", true }, { "passover-fun.com", true }, { "passphrase.today", true }, - { "passport-photo.online", true }, { "passport.yandex.by", true }, { "passport.yandex.com", true }, { "passport.yandex.com.tr", true }, { "passport.yandex.kz", true }, { "passport.yandex.ru", true }, { "passport.yandex.ua", true }, + { "passportapproved.com", true }, + { "passportcorporate.com", true }, { "passports.govt.nz", true }, { "passporttrails.com", true }, + { "passportunlimited.com", true }, { "passrhce.com", true }, { "passrhcsa.com", true }, { "passthepopcorn.me", true }, @@ -93373,15 +107045,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "passumpsicbank.com", true }, { "passvanille-reservation.fr", true }, { "passvau.lt", true }, + { "passware.com", true }, { "passwd.one", true }, { "passwd.org", true }, { "passwizard.com", true }, { "password-checker.de", true }, + { "password.codes", true }, { "password.consulting", true }, { "passwordgenerator.ml", true }, - { "passwordkeeperbooks.com", true }, { "passwordlist.io", false }, { "passwords.google.com", true }, + { "passwordsapp.org", true }, { "passwordscon.com", true }, { "passwordscon.org", true }, { "passwordsecurity.info", true }, @@ -93398,14 +107072,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paste.rodeo", true }, { "paste.to", true }, { "pastebin.bet", true }, - { "pastebin.co.za", true }, { "pastebin.run", true }, - { "pastebin.tw", true }, { "pasteblin.com", true }, { "pasteht.ml", true }, + { "pasteleriaparaperrosygatos.mx", true }, { "pastelpixels.studio", true }, { "pasternok.org", true }, { "pasteros.io", true }, + { "pastes.io", true }, + { "pastetot.com", true }, { "pasteworks.com", true }, { "pasticceria.milano.it", true }, { "pasticcerialorenzetti.com", true }, @@ -93424,10 +107099,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pastormaremanoabruzes.com.br", true }, { "pastorsline.com", true }, { "pastorsuico.com.br", true }, + { "pastquestionpdf.com.ng", true }, + { "pastry.network", true }, { "pastrybakerymachinery.com", true }, { "pasugo.tk", true }, + { "pasyta.gr", true }, { "paszkowski.tk", true }, { "pasztor.at", true }, + { "pat3dx.shop", true }, + { "patagonie.fr", true }, { "patagosfm.tk", true }, { "patalie.cz", false }, { "patalie.sk", false }, @@ -93438,6 +107118,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patapwn.com", true }, { "patatbesteld.nl", true }, { "patbatesremodeling.com", false }, + { "patchassociates.com", true }, { "patchduty.com", true }, { "patchli.fr", true }, { "patchofabsence.com", true }, @@ -93446,6 +107127,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patdorf.com", true }, { "patechmasters.com", true }, { "patel.sh", true }, + { "patent-motorowodny.pl", true }, + { "patent-sternika.pl", true }, { "patentados.com", true }, { "patentfamily.de", true }, { "patentmanufaktur.video", true }, @@ -93453,24 +107136,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patentpanelest.ga", true }, { "patentu.ga", true }, { "paterno-gaming.com", true }, + { "patersonpdnj.gov", true }, { "patguzmanconstruction.com", true }, { "pathagoras.com", true }, - { "pathfinder.kiwi", true }, + { "pathfinderbank.com", true }, { "pathfindergeo.com", true }, { "pathogen.nl", true }, { "pathologie-dna.nl", true }, { "pathsaversers.ga", true }, { "pathsaversest.ga", true }, { "pathsha.re", true }, - { "pathsremembered.org", true }, + { "pathwaylibrary.org", true }, { "pathwayscenterforgrief.org", true }, { "pathwayscenterforgriefandloss.org", true }, { "pathwaysthroughgrief.org", true }, { "pathwaytofaith.com", true }, { "patience.nl", true }, + { "patient.info", true }, { "patientenverfuegung.digital", true }, { "patientup.com", true }, - { "patientwisdom.com", true }, + { "patientys.com", true }, { "patiga.ga", true }, { "patikabiztositas.hu", true }, { "patikakristaly.hu", true }, @@ -93480,49 +107165,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patioroof.cf", true }, { "patiosheders.ga", true }, { "patioshedest.ga", true }, - { "patisserie918.herokuapp.com", true }, + { "patkiout.gr", true }, { "patlis.com", true }, { "patmanx.tk", true }, + { "patmos.tech", true }, { "patorganiser.co.uk", true }, { "patorganiser.com", true }, { "patorganiser.com.au", true }, + { "patpat.com", true }, { "patralos.at", false }, - { "patreondot.com", true }, { "patri.fr", true }, { "patric-lenhart.de", true }, { "patrice-carriere.tk", true }, - { "patricefyffe.gq", true }, { "patriceonline.tk", true }, { "patricia-lackovic.from.hr", true }, { "patriciadelamora.tk", true }, { "patriciakraken.at", true }, { "patriciaramos.pt", true }, { "patriciaroy.co", true }, - { "patrick-braun.tk", true }, - { "patrick-omland.de", true }, { "patrick-omland.eu", true }, - { "patrick-othmer.de", true }, { "patrick-robrecht.de", true }, + { "patrick.dark.name", true }, { "patrick.my-gateway.de", true }, { "patrick21.ch", true }, { "patrickaudley.ca", true }, { "patrickaudley.com", true }, - { "patrickbrosi.de", true }, { "patrickbusch.net", true }, { "patrickcontainerrotator.ga", true }, { "patrickdankers.nl", true }, { "patrickhoefler.net", true }, - { "patricklustigmediation.com", true }, - { "patrickod.com", true }, { "patrickpeeters.com", true }, - { "patricksymmes.com", true }, { "patrikjohan.cf", true }, { "patrikjohan.ga", true }, { "patrikjohan.gq", true }, { "patrikjohan.tk", true }, { "patriksima.cz", true }, - { "patriksimek.cz", true }, { "patrikzk.eu", true }, + { "patrina-bukoting.my.id", false }, { "patriotbearingsupply.com", true }, { "patriotcs.tk", true }, { "patriotsaustralia.com", true }, @@ -93530,21 +107209,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "patris-querre.com", true }, { "patrisnews.com", true }, { "patrocinio.com.br", true }, + { "patrogers.org", true }, + { "patrovic.com", true }, { "patrycjamichera.com", true }, { "patryk.cf", true }, { "patrz.eu", true }, - { "patsyforyou.ch", false }, + { "patservicecenter.com", true }, { "patsytoforyou.ch", false }, { "pattanath.com", true }, { "pattayafruitgarden.tk", true }, { "pattayawebservices.com", true }, - { "patterson.agency", true }, + { "patterico.com", true }, + { "pattern.com", true }, { "pattoes.ga", true }, { "pattonfanatic.com", true }, { "pattuka.com", true }, { "pattyboobs.net", true }, { "pattyliao.com", true }, - { "patystation.com", true }, { "pauct.com", true }, { "paudley.ca", true }, { "paudley.com", true }, @@ -93565,23 +107246,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paulbramhall.uk", true }, { "paulbrown.ddns.net", true }, { "paulc-themovie.com", true }, + { "paulcamper.com", true }, { "paulcamper.de", true }, { "paulchua.tk", true }, { "paulcloud.fr", true }, { "paulcoldren.org", true }, - { "paulcooper.me.uk", true }, { "pauld.codes", true }, - { "pauld.digital", true }, { "pauldeconinck.tk", true }, - { "paulevers.nl", true }, + { "paulfc.com", true }, { "paulgerberrealtors.com", true }, { "paulgo.io", true }, + { "paulhacker.com", true }, { "paulharrisoncars.com", true }, { "paulibean.tk", true }, { "paulinaschubert.net", true }, { "paulinewesterman.nl", true }, { "paulini.ga", true }, + { "pauliuspiecius.com", true }, { "pauljackson.ga", true }, + { "pauljamesblinds.co.uk", true }, { "pauljmartinez.com", true }, { "pauljonathan.dk", true }, { "pauljrowland.co.uk", true }, @@ -93589,10 +107272,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paullockaby.com", true }, { "paulmarc.org", true }, { "paulmarvin.tk", true }, + { "paulmilligan.co.uk", true }, + { "pauloalcalde.co", true }, + { "pauloalcalde.com", true }, { "pauloalcobianeves.pt", true }, { "paulober.eu", true }, + { "pauloboer.nl", true }, { "paulocolacino.tk", true }, { "paulogarcia.tk", true }, + { "pauloneto.eu", true }, + { "paulopaiva.com.br", true }, { "paulopeters.com.br", true }, { "paulorochago.com.br", true }, { "paulov.com", true }, @@ -93600,6 +107289,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paulov.ru", true }, { "paulrainesjr.com", true }, { "paulrobertlloyd.com", true }, + { "paulromer.net", true }, { "paulrotter.de", true }, { "paulrowland.co.uk", true }, { "paulrudge.codes", true }, @@ -93610,7 +107300,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paulsitarz.com", true }, { "paulsnar.lv", true }, { "paulswartz.net", true }, - { "paultibbetts.uk", false }, + { "paultonspark.co.uk", true }, { "paulus-foto.pl", true }, { "paulus.cloud", true }, { "paulw.io", true }, @@ -93622,6 +107312,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pauly-stahlhandel.com", true }, { "pauly-stahlhandel.de", true }, { "paulzen.me", true }, + { "pausado.com", true }, + { "pausewhenagitated.com", true }, { "pautadiaria.com", true }, { "pavajebucovina.ro", true }, { "pavamtio.cz", true }, @@ -93638,14 +107330,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paveljanda.com", true }, { "pavelrebrov.com", true }, { "pavelstriz.cz", true }, - { "paveltoman.cz", true }, { "paven.io", false }, { "pavernosmatao.tk", true }, + { "paviliontwpmi.gov", true }, { "pavingtiles.tk", true }, + { "pavitrajyotish.com", false }, + { "pavlecic.de", true }, { "pavlic.se", true }, { "pavlov-ledec.cz", true }, { "pavlova.es", true }, { "paw.cloud", true }, + { "paw.net.pl", true }, { "paw.pt", true }, { "pawafuru.com", false }, { "pawapuro.ga", true }, @@ -93658,45 +107353,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pawelurbanek.com", true }, { "pawelurbanski.com", true }, { "pawgearlab.com", true }, + { "pawn.inc", true }, { "pawneecountyne.gov", true }, { "pawnsoft.tk", true }, + { "pawoon.com", true }, + { "pawp.com", true }, { "pawpatrol.tk", true }, { "pawpawtownshipmi.gov", true }, { "pawserv.pw", true }, + { "pawsitiv.space", true }, { "pawson.tk", true }, { "pawspetwear.com.au", true }, { "pawsr.us", true }, { "pawsru.org", true }, { "pawtraitcaptures.com.au", true }, - { "paxchecker.com", true }, { "paxerahealth.com", true }, { "paxwinkel.nl", true }, { "pay-online.in", true }, { "pay.gov", false }, + { "pay.im", true }, { "pay.mg", false }, { "pay.sb", true }, { "pay.ubuntu.com", true }, + { "pay2keep.com", true }, { "pay8522.com", true }, { "paya.cat", true }, { "payat.io", true }, { "paybackfx.com", true }, { "payblog.org", true }, { "payboy.biz", true }, + { "payboy.click", true }, { "payboy.rocks", true }, { "paybro.eu", true }, - { "paycaptain.com", true }, { "paycardtech.com", true }, { "paycentre.com", true }, - { "payclock.com", true }, - { "paycom.com", true }, - { "paycomdfw.com", true }, - { "paycomonline.com", true }, + { "paycore.com", true }, { "paycore.io", true }, + { "payctest.com", true }, { "paydarplasticsurgery.com", true }, + { "paydayloanskentucky.org", true }, { "paydepot.com", true }, { "paydigital.pt", true }, + { "paydoor9.com", true }, + { "payeasy.tech", true }, { "payexpresse.com", true }, + { "payfare.com", true }, { "payfazz.com", true }, + { "payfit.com", true }, { "payforpeople.nl", true }, { "paygvpn.com", true }, { "payjunction.com", true }, @@ -93706,29 +107409,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paylessclinicest.ga", true }, { "paylessmealsers.ga", true }, { "paylessmealsest.ga", true }, + { "paylesstyres.com.au", true }, { "paylike.io", true }, { "paylike.se", true }, + { "payload.ca", true }, { "paylocal.net", false }, { "payme.io", true }, { "payme.uz", true }, { "payment-express.net", true }, - { "payment.ac.cn", true }, { "paymentaccuracy.gov", true }, { "paymentjs.com", true }, { "payments.google.com", true }, { "paymeservice.com", true }, - { "paymill.de", true }, - { "paymon.tj", true }, { "paymongo.com", true }, { "paymongo.help", true }, + { "paymore.org", true }, { "paymyphysician.com", true }, + { "paynexpay.com", true }, + { "paynuity.com", true }, + { "payonline-api.xyz", true }, + { "payop.com", true }, + { "paypac.com.au", true }, { "paypal.com", true }, { "paypal.gift", true }, { "paypaq.com", true }, { "paypcns.co.uk", true }, { "paypod.org", true }, { "paypro.nl", false }, + { "payproglobal.com", true }, { "payps.ru", true }, + { "payraise.us", true }, + { "payriff.com", true }, { "payroll.ch", false }, { "payroll.myftp.org", true }, { "payrollhr.be", true }, @@ -93739,35 +107450,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "paysensei.com", true }, { "paysera.com", true }, { "paysera.ee", true }, + { "paysera.lt", true }, { "payservices.com", true }, { "paysitesreviews.net", true }, { "payskins.xyz", true }, { "payslipview.com", true }, { "paysoft.com", true }, { "paysomeonetodomyonlineclasses.com", true }, + { "payspace.com", true }, { "paystack.com", true }, { "paystarkagency.com", true }, - { "paytime.com.au", true }, + { "paysys.jp", true }, { "paytm.in", true }, + { "paytowriteessays.net", true }, + { "payufin.in", true }, { "payupay.ru", true }, + { "payvalida.com", true }, { "paywait.com", true }, + { "payward.com", true }, + { "payyattention.com", true }, { "payzang.com", true }, { "pazarlab.com", true }, + { "pazescomoingles.com.br", true }, { "pazyarmonia.tk", true }, { "pb-design.ch", true }, { "pb-eatz.com", true }, { "pb.ax", false }, { "pba.org.uk", true }, { "pback.se", true }, + { "pband.ch", true }, + { "pbbm.com.ph", true }, + { "pbc.gov", true }, { "pbcables.tk", true }, + { "pbcialis.com", true }, { "pbcknd.ml", true }, { "pbcpao.gov", true }, + { "pbdigital.org", false }, { "pbern.xyz", true }, { "pbest.tk", true }, + { "pbgfl.gov", true }, + { "pbhs.co.uk", true }, + { "pbla.biz", true }, { "pbmdiscounter.nl", true }, { "pbo.vic.gov.au", true }, { "pborn.eu", true }, { "pbourhis.me", true }, + { "pbpe.tv", true }, { "pbqs.site", true }, { "pbr.so", true }, { "pbraunschdash.com", true }, @@ -93775,11 +107503,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pbrumby.com", true }, { "pbsrmoto.com.au", true }, { "pbwebdev.com", true }, - { "pbytes.com", true }, { "pbz.im", true }, { "pc-center.tk", true }, { "pc-mac.de", true }, { "pc-master.pl", true }, + { "pc-pharma.com", true }, { "pc-porady.pl", true }, { "pc-remont.tk", true }, { "pc-servis-brno.com", true }, @@ -93790,8 +107518,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pc-tech.ga", true }, { "pc-tweak.de", true }, { "pc-warriors.com", true }, + { "pc.domains", true }, { "pc28yc.com", true }, { "pc94666.com", true }, + { "pcah.gov", true }, { "pcast.gov", true }, { "pcbarchitect.com", true }, { "pcbfl.gov", true }, @@ -93800,27 +107530,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pcbny.com", true }, { "pcbooks.in", true }, { "pcbricole.fr", true }, + { "pcbtrade.com", true }, { "pcbuildinggr.com", true }, { "pccartel.com", true }, { "pccc.co.za", true }, - { "pcccthicongcungcap.com", true }, - { "pccds-ln.org", true }, + { "pccdal.gov", true }, { "pccegoa.org", true }, - { "pcchin.com", true }, { "pccomc.tk", true }, - { "pcdbank.com", true }, - { "pcdekegel.nl", true }, + { "pcdekegel.nl", false }, { "pcdocjim.com", true }, { "pcdomain.com", true }, { "pcdroid.ga", true }, { "pcdroid.tk", true }, - { "pcegy.com", true }, { "pcel.com", true }, { "pcexpress.tk", true }, { "pcf-frankfurt.de", true }, { "pcf.com", true }, { "pcf92.fr", true }, + { "pcfdut.gov", true }, { "pcfiles.ga", true }, + { "pcfunder.co.uk", true }, + { "pcgamemc.com", true }, { "pcgamingfreaks.at", true }, { "pchan.is", true }, { "pchancs.com", true }, @@ -93833,13 +107563,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pcissc.org", true }, { "pckartel.biz", true }, { "pckurzypd.sk", true }, + { "pclicensekeys.com", true }, { "pcloud.com", true }, + { "pclyst.com", true }, { "pcmania.tk", true }, { "pcmaw.com", true }, + { "pcminsk.by", true }, { "pcmkrembangan.or.id", true }, { "pcmobile.tech", true }, { "pcmr.info", true }, { "pcmr.rocks", true }, + { "pcmscientific.com", true }, + { "pcnaid.com", true }, + { "pcnetinc.com", true }, { "pcnewsoft.tk", true }, { "pcnotdienst-oldenburg-rastede.de", true }, { "pcpao.gov", true }, @@ -93851,18 +107587,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pcpuhastaja.tk", true }, { "pcrab.ml", true }, { "pcrecovery.ga", true }, + { "pcrobot.cz", true }, { "pcrypt.org", true }, { "pcsafe.cf", true }, { "pcsbrasil.ml", true }, { "pcscotus.gov", true }, { "pcsetting.com", true }, - { "pcsolottodraw.com", true }, + { "pcsoft.fr", true }, + { "pcsoftwarescrack.co", true }, { "pcsolutionsofwillis.ga", true }, { "pcsolutionsofwillis.gq", true }, { "pcsremodel.com", true }, { "pcstoronto.ca", true }, { "pcsuniverse.ga", true }, { "pcsx2.net", true }, + { "pcsystem.co.uk", true }, { "pctelecom.cf", true }, { "pctelecom.ga", true }, { "pctelecom.gq", true }, @@ -93880,13 +107619,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pcvirusclear.com", true }, { "pcw.gov.ph", true }, { "pcwdevtwebsite.azurewebsites.net", true }, + { "pcwiz2u.com", true }, + { "pcworld.pl", true }, { "pcxserver.com", true }, { "pd1rnt.nl", true }, { "pd2bans.org", true }, + { "pdamerica.org", true }, + { "pdavislawgroup.com", true }, + { "pdax.ph", true }, + { "pdbj.org", true }, + { "pderas.com", true }, { "pdf-archive.com", false }, + { "pdf-tool.fr", true }, + { "pdf.io", true }, { "pdfbear.com", true }, { "pdfbook-dl.ml", true }, { "pdfbooksonline.gq", true }, + { "pdfchef.com", true }, { "pdfconvert.me", true }, { "pdfflier.cf", true }, { "pdfget.com", true }, @@ -93900,10 +107649,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pdfprostore.cf", true }, { "pdfquran.tk", true }, { "pdfresizer.com", true }, - { "pdfsearch.org", false }, { "pdfsearches.com", true }, { "pdfsheeters.ga", true }, { "pdfsheetest.ga", true }, + { "pdihc.com", true }, { "pdkrawczyk.com", true }, { "pdmonroewi.gov", true }, { "pdox.net", true }, @@ -93912,7 +107661,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pdsk.ch", true }, { "pdsports.network", true }, { "pdtech.ltd", true }, - { "pdthings.net", true }, { "pdtppfl.gov", true }, { "pdvault.co", true }, { "pe-bank.jp", true }, @@ -93920,6 +107668,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peabodytile.com", true }, { "peace-is-possible.net", true }, { "peaceandjava.com", true }, + { "peaceandwool.com", false }, { "peacedivorce.com", true }, { "peaceexpoers.ga", true }, { "peaceexpoest.ga", true }, @@ -93928,33 +107677,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peacekeeper.tk", true }, { "peacepiperanch.com", true }, { "peacetourco.cf", true }, + { "peacewiththewild.co.uk", true }, { "peachbuildingproducts.com", true }, { "peachesandchampagne.com", true }, + { "peachstateaesthetics.com", true }, { "peacock.onl", true }, + { "peacockn.com", true }, { "peak-careers.com", true }, { "peakd.com", true }, - { "peakersoperations.com", true }, { "peakhillre.ga", true }, { "peakhomeloan.com", true }, - { "peakmktg.co", true }, + { "peakperformance.hr", true }, + { "peaksalesrecruiting.com", true }, { "peakseoservices.co.uk", true }, { "peaksloth.com", true }, + { "peaksports.com", true }, + { "peaksupport.io", true }, { "peakvets.co.uk", true }, - { "peanutbase.org", true }, + { "peaky-blinders.xyz", true }, + { "peamotocenter.com.br", true }, + { "peanutbutter.com", true }, { "peanutpay.de", true }, { "peanutproductionsnyc.com", true }, { "pearbloom.com", true }, { "pearcom.co.uk", true }, - { "pearlbridal.com.au", true }, { "pearlcohen.com", true }, + { "pearle.nl", true }, { "pearlharbordrydockeisopenhouse.org", true }, { "pearljamargentina.tk", true }, + { "pearloc.com", true }, { "pearlsonly.ca", true }, { "pearlsonly.com", true }, { "pearlsonly.com.au", true }, { "pearlsonly.de", true }, { "pearlteethers.ga", true }, { "pearlteethest.ga", true }, + { "pearson424.org", true }, { "pearsonbsl.com", true }, { "pearstudios.cf", true }, { "pearvn.tk", true }, @@ -93964,48 +107722,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peawee.co.uk", true }, { "peawo.com", true }, { "pebblenest.uk", true }, + { "pebblepad.com.au", true }, { "pebblepointapartmentsstl.com", true }, { "pebkac.gr", false }, { "peblet.be", true }, { "pebook.tk", true }, + { "pec-email.com", true }, + { "pec.net", true }, { "pecadis.de", true }, + { "pecan.ai", true }, { "pecetowicz.pl", true }, { "pecheneg.tk", true }, { "pechibani.by", false }, { "pechka.tk", true }, { "pechnik-negara.ru", false }, { "pechonova.com", true }, - { "peckandweis.com", true }, { "pecker-johnson.com", true }, + { "peckway.co.uk", true }, + { "pecmd.net", true }, + { "pecs.com", true }, + { "pecsusa.com", true }, { "pect.com.pk", true }, { "ped-bike.de", true }, { "peda.net", true }, { "pedago.it", true }, - { "pedagogiaaopedaletra.com", true }, { "pedagoplume.fr", true }, { "pedaleuse.be", true }, { "pedalia.cc", true }, { "pedalirovanie.tk", true }, { "pedalr.eu", true }, - { "pedalsbarcelona.com", true }, { "peddy.dyndns.org", true }, { "peddyland.tk", true }, { "pediatersucha.sk", true }, { "pediatricdentistrycenter.com", true }, { "pediatricdentistsdaculaga.com", true }, { "pediatricdentistslilburnga.com", true }, + { "pediatricorthopedic.com", true }, { "pedicure-stadspolders.nl", true }, { "pedicurean.nl", true }, { "pedicureduiven.nl", true }, - { "pedigreetechnologies.com", true }, + { "pedicurepraktijkvelserbroek.nl", true }, + { "pedigreetechnologies.com", false }, { "pedikura-vitu.cz", true }, { "pedimanie.cz", true }, { "pedimoda.com.br", true }, { "pedo.house", true }, { "pedodontie.ro", true }, + { "pedohunters.de", true }, { "pedradatattoo.com", true }, { "pedrazanoticias.tk", true }, - { "pedro-fonseca.com", true }, { "pedro.com.es", true }, { "pedrobotias.tk", true }, { "pedrolamas.com", true }, @@ -94018,16 +107783,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pedrosaurus.com", true }, { "pedrosillo-delosaires.tk", true }, { "pedrotimoteo.com", true }, + { "peduse.com", true }, { "pedziran.com", true }, - { "peeekaaabooo.com", true }, { "peekier.com", true }, { "peelawayyourpain.com", true }, - { "peelmachineryrepair.com", true }, + { "peels.fr", true }, { "peen.ch", true }, { "peenee.in.th", true }, { "peenor.xyz", true }, { "peep.gq", true }, { "peer.travel", true }, + { "peerberry.com", true }, { "peercraft.at", true }, { "peercraft.be", true }, { "peercraft.biz", true }, @@ -94049,15 +107815,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peercraft.pt", true }, { "peercraft.se", true }, { "peercraft.us", true }, - { "peerigon.com", false }, + { "peerjs.com", true }, { "peername.com", true }, - { "peernode.net", true }, { "peerpressurecreative.com", true }, - { "peers.cloud", true }, + { "peers-liste.de", true }, { "peers.gq", true }, { "peers.tk", true }, { "peersquaders.ga", true }, { "peersquadest.ga", true }, + { "peerview.com", true }, + { "peerviewpress.com", true }, + { "peervoice.com", true }, { "peerweb.com", true }, { "peerwebdc.tk", true }, { "peetah.com", false }, @@ -94065,11 +107833,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peew.de", true }, { "peewee-design.tk", true }, { "pefile.tk", true }, - { "pefricea.com", true }, + { "pefisa.com.br", true }, { "pegas-studio.net", true }, { "pegasnet.tk", true }, + { "pegdown.org", true }, { "pegrum.rocks", true }, { "pegundugun.tk", true }, + { "peifeng.li", true }, { "peifi.de", false }, { "peinture-77.fr", true }, { "peippo.at", true }, @@ -94081,37 +107851,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peklostroj.sk", true }, { "peko.com.mk", true }, { "peko.pro", true }, + { "pekoe.se", true }, { "pelachim.com.br", true }, { "pelagicus.co.uk", true }, + { "pelajaran.co.id", true }, { "pelanucto.cz", true }, - { "pelevin.gq", true }, + { "pelata.net", true }, + { "pelatihanwirausaha.com", true }, + { "peleti.at", true }, { "pelgrimhof.be", true }, { "pelhamalrecreation.gov", true }, { "pelhamlibraryal.gov", true }, { "pelhrimov-strmechy.tk", true }, { "pelican.ie", true }, + { "pelicandebrief.com", true }, + { "pelicanottertailmn.gov", true }, { "pelicans.tk", true }, { "peliculaonline.tk", true }, - { "peliculas-viejas.com", true }, { "peliculaslatino.tk", true }, { "pelikan.xyz", true }, + { "pelikone.fi", true }, + { "pelinca.nl", true }, + { "pelis-online.net", true }, { "pellegrino.ar", true }, { "pellet.pordenone.it", true }, + { "pellet.roma.it", true }, { "pelletgrillreviews.com", true }, { "pelletizermill.com", true }, { "pelletsprice.com", true }, { "pelmeni.cf", true }, { "pelmeniuralskie.tk", true }, { "pelo.tk", true }, - { "pelopogrund.com", false }, { "pelopoplot.com", false }, { "pelosanimais.org", true }, { "pelotonimports.com", true }, { "peluche.tk", true }, - { "peluqueriaalcobendas.com", true }, { "peluqueriaalcobendas.es", true }, { "peluqueriacanina.tk", true }, - { "pelviclinic.pt", true }, { "pem-jp.co.uk", true }, { "pemagrid.org", true }, { "pemasalem.com", true }, @@ -94122,114 +107898,132 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pembrokenc.gov", true }, { "pemdas.xyz", true }, { "pemedia.de", true }, + { "pemerintahkota.com", true }, { "pemez.com", true }, { "pems.gov.au", true }, + { "pen-sec.de", true }, { "pen15art.tk", true }, { "pena-party.tk", true }, { "pena600.tk", true }, + { "penair.com.au", true }, { "penatizavarise.com", true }, { "penaugustin.com", true }, + { "penbrookpa.gov", true }, { "pencepay.com", true }, { "pencil2d.org", true }, { "pencilboutique.com", true }, { "pencillab.cn", true }, { "penconsultants.com", true }, + { "pendidikan.co.id", true }, + { "pendletoncountyky.gov", true }, { "pendletoncountywv.gov", true }, { "pendriveapps.com", true }, { "pendrivelinux.com", true }, { "penedo.tk", true }, + { "penelopia.pl", true }, + { "penes.cf", true }, { "penetrationstest.se", true }, { "penfold.fr", true }, { "pengajar.co.id", true }, + { "pengembangan-web-mp-pd.com", true }, { "pengepung.com", true }, - { "pengewangan.com", true }, { "pengi.me", true }, { "pengisatelier.net", true }, { "pengui.uk", true }, + { "penguin-stats.cn", true }, + { "penguin-stats.io", true }, + { "penguin.co.uk", true }, { "penguinclientsystem.com", true }, + { "penguindominatrix.com", true }, { "penguindrum.moe", true }, { "penguinos.tk", true }, { "penguinprotocols.com", true }, + { "penguinrandomhousegrupoeditorial.com", true }, + { "penguins.ca", true }, { "penguinshome.tk", true }, { "penguinvillage.info", true }, { "pengumuman.id", false }, { "penholder.ga", true }, { "peni.tk", true }, { "peniarth.cymru", true }, + { "peninsula360.com", true }, { "peninsulaadvancedurology.com", true }, { "penispumpen.se", true }, { "pennan.tk", true }, { "pennergold.net", true }, { "pennhillspa.gov", true }, - { "pennington.io", true }, { "pennsauken.gov", true }, { "pennyapp.io", false }, { "pennybot.tk", true }, + { "pennylane.com", true }, { "pennymail.ga", true }, { "pennywise.tk", true }, { "peno1.tk", true }, - { "penon.tk", true }, { "penopoly.cf", true }, { "penopoly.ga", true }, { "penopoly.gq", true }, { "penopoly.ml", true }, { "penopoly.tk", true }, { "penosa.ga", true }, - { "penpalezine.com", true }, + { "penpalezine.com", false }, { "penrite.pl", true }, { "penrithapartments.com.au", true }, + { "penrose.edu", true }, { "pens-money.cf", true }, { "pens-money.ga", true }, { "pens-money.gq", true }, - { "pens.com", true }, { "pensacolafl.gov", true }, { "pensacolawinterfest.org", true }, { "pensador.com", true }, { "pensador.info", true }, - { "pensan.ge", true }, { "pensatore.tk", true }, { "pensia.tk", true }, { "pensieridigitali.tk", true }, + { "pensierolaterale.tech", true }, { "pensioenfonds-ey.nl", true }, { "pension-am-alten-waschhaus.de", true }, { "pension-chevaux.com", true }, { "pension-ua.tk", true }, { "pension-veldzigt.nl", true }, { "pension.ga", true }, + { "pensionchien.com", true }, { "pensionecani.roma.it", true }, { "pensioner-1000.tk", true }, { "pensionesdominicanas.com", true }, { "pensionstal.tk", true }, { "pensiontrackerers.ga", true }, { "pensiun.ga", true }, + { "pensiune-doina.ro", true }, { "pensiunea-maria.tk", true }, { "pensiunea-paco.ro", true }, { "pensiunealido.ro", true }, { "penslabyrinth.com", true }, - { "penstash.net", true }, - { "pentacodes.com", true }, + { "pentacodes.com", false }, { "pentagon-area.tk", true }, { "pentagonix.com.br", true }, { "pentagram.cf", true }, { "pentagram.me", true }, + { "pentagrid.ch", true }, { "pentamexicali.tk", true }, + { "pentamultiservice.it", true }, { "pentandra.com", true }, - { "pentaqu.in", true }, { "pentaquin.com", true }, { "pentaquin.net", true }, { "pentatonik.tk", true }, + { "pentechmc.blog", true }, { "pentekdograma.com", true }, { "pentest.blog", true }, { "pentesterlab.com", true }, { "pentestit.com", true }, - { "penthack.com", false }, + { "pentestpartners.com", true }, { "penthy.eu", true }, { "pentofun.ch", true }, { "pentoo.ch", true }, { "pentools.org", true }, { "pentopolimer.com", true }, - { "pentruprieteni.com", true }, + { "pentwatertownshipmi.gov", true }, { "penuelaspr.gov", true }, + { "penultimategaming.com", true }, { "penya.ga", true }, { "penyavictorhernani.tk", true }, { "penz.media", true }, @@ -94237,18 +108031,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "penza-today.tk", true }, { "penzaonline.cf", true }, { "penzionvzahrade.cz", true }, + { "people.deloitte", true }, { "people2hire.co.uk", true }, { "peopleandchange.nl", true }, { "peoplecanfly.com", true }, + { "peoplecert.org", true }, { "peoplefinders.ml", true }, { "peoplelikemeapp.com", true }, - { "peoplenotpoliticians.co.uk", true }, { "peopleofcolorcareers.com", true }, { "peopleplanetconnect.org", true }, { "peoplesbankal.com", false }, { "peoplescu.com", true }, { "peoplesdecade.org", true }, { "peoplesguardian.org", true }, + { "peopleskills4u.net", true }, { "peoplesliberationfront.tk", true }, { "peoplesoft-support.nl", true }, { "peoplesplatform.cf", true }, @@ -94257,21 +108053,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peoplesrights.org", true }, { "peoriacounty.gov", true }, { "peoriaelections.gov", true }, + { "peoriail.gov", true }, + { "peoriaparks-il.gov", true }, { "pepe.cz", true }, { "pepechkov.com", true }, + { "pepechkova.com", true }, { "pepeelektro.sk", true }, + { "pepegol.it", true }, { "pepegym.cz", true }, { "pepemodelismo.com.br", true }, { "peperiot.com", true }, { "peperoni.tk", true }, { "peperstraat.online", true }, - { "pepfar.gov", false }, + { "pepfar.gov", true }, + { "pepitadinamitastudios.com", true }, + { "pepix.pl", true }, { "peplex.ddns.net", true }, { "peplex.nl", true }, - { "pepme.net", false }, { "peppelmedi.fi", true }, { "pepperandpartner.com", true }, { "peppercornmotel.com.au", true }, + { "peppermillinteriors.com", true }, { "peppertalks.com", true }, { "peppyflora.com", true }, { "pepsi.investments", true }, @@ -94288,18 +108090,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "per-olsson.se", true }, { "peraavcilar.com", true }, { "peracup.com.tr", true }, - { "perakampus.com", true }, { "perala.me", true }, + { "perali.com", false }, { "peraparker.cz", true }, { "perberestja.gq", true }, { "perception-point.io", true }, - { "perceptionsaestheticspa.com", true }, - { "perceptivemeded.com", true }, { "perceptyx.com", true }, + { "perchance.org", true }, { "percherosdepared.es", true }, { "percherosdepared.online", true }, { "percolate.com", true }, - { "percraft.com", true }, { "percussiontonal-forum.de", true }, { "percy.io", true }, { "percydutton.co.uk", true }, @@ -94313,21 +108113,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peredovaya.tk", true }, { "peredoz.tk", true }, { "pereezd.ml", true }, + { "peregrinefund.org", true }, + { "peregrinus.es", true }, + { "perekodu.ee", true }, { "peremena.ml", true }, { "perenne.ee", true }, + { "perennialte.ch", true }, + { "perennialwomens.com", true }, + { "perera.net", true }, { "peresypchanka.tk", true }, { "pereuda.com", true }, { "perevedi.org", true }, { "perevedut.cf", true }, + { "perevod-tekst-pesni.ru", true }, { "perewall.tk", true }, { "perez-marrero.com", true }, - { "perezdecastro.org", true }, - { "perezplumbinginc.com", true }, + { "perezdecastro.org", false }, + { "perf-b2b.com", true }, { "perf1.com", true }, { "perfare.net", true }, + { "perfect-blog.com", true }, { "perfect-carstyle.de", true }, { "perfect-dream.tk", true }, { "perfect-privacy.com", true }, + { "perfect-seo.ru", true }, { "perfect-tour.ro", true }, { "perfect8.com.tw", true }, { "perfectbalance.tech", true }, @@ -94344,43 +108153,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perfectme.tk", true }, { "perfectosidiotaspunk.tk", true }, { "perfectplrarticles.ga", true }, + { "perfectpussypics.com", true }, { "perfectscook.com", true }, { "perfectsize.pl", true }, - { "perfectsmilesdentistry.net", true }, { "perfectsnap.co.uk", true }, { "perfectsoft.tk", true }, + { "perfecttits.net", true }, { "perfectweb.today", true }, { "perfectworldbot.tk", true }, - { "perfei.com", false }, { "perfekt-style.com", true }, { "perfektesgewicht.com", true }, { "perferxprecision.com", true }, { "perfmatters.io", true }, { "perfmed.ro", true }, + { "perforlabs.com", true }, + { "performance-advertising.de", true }, { "performance.gov", true }, { "performancehealth.com", false }, { "performancematters.ie", true }, { "performancerunningsolutions.com", true }, { "performances-supervision.fr", true }, + { "performancetillagebolt.com", true }, { "performancetransmission.net", true }, + { "performansguru.com", true }, { "performetric.net", true }, { "performing-art-schools.com", true }, { "performingdreams.tk", true }, { "performiptv.com", true }, { "performiptv.net", true }, + { "performive.com", true }, { "perftrack.net", true }, { "perfumerie.tk", true }, { "perfumes.com.br", true }, + { "perfumesloewe.com", true }, { "perfumesweb.com.br", true }, { "perfumki.tk", true }, - { "perfwp.com", true }, - { "pergam.by", true }, + { "pergam.by", false }, { "pergam.kz", true }, { "pergamentka-apartments.cz", true }, - { "pergamo.eu", true }, { "pericsope.gq", true }, { "peridotcapitalpartners.com", true }, + { "perigon.ch", true }, { "perini.com.au", true }, + { "perinton.gov", true }, { "periodex.co", true }, { "periodicojerez.info", true }, { "periodicomirador.com", true }, @@ -94393,8 +108208,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perishablepress.com", true }, { "peritos-informaticos.com", true }, { "perkilo.eu", true }, + { "perksplus.com", true }, { "perlbanjo.com", true }, { "perlego.com", true }, + { "perlesdelumiere.com", true }, { "perlina.co.il", true }, { "perm-avia.ru", true }, { "perm-jur.ch", false }, @@ -94402,9 +108219,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perm-l2.tk", true }, { "perm4.com", true }, { "permaculture.cf", true }, + { "permadi.id", true }, + { "permaditya.my.id", true }, { "permajackofstlouis.com", true }, { "permajackstlouis.com", true }, { "permak.tk", true }, + { "permalife.shop", false }, { "permanence-juridique.com", false }, { "permanencejuridique-ge.ch", false }, { "permanencejuridique.com", false }, @@ -94423,6 +108243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "permis.online", true }, { "permiscoderoute.fr", true }, { "permisecole.com", true }, + { "permista.nl", true }, { "permistheorique.be", true }, { "permistheoriqueenligne.be", true }, { "permitting.gov", true }, @@ -94434,25 +108255,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perpetual.ga", true }, { "perpetualemotion.com", true }, { "perpetuum.tk", true }, - { "perrau.lt", true }, + { "perrau.lt", false }, { "perreiraproperties.com", true }, { "perretes.com.es", true }, - { "perrigo.it", true }, { "perritas.tk", true }, { "perritos.tk", true }, { "perron.ml", true }, { "perroon.eu", true }, - { "perroquet-passion.ch", false }, { "perrosenlapradera.com", true }, { "perrybook.tk", true }, { "perrycountyal.gov", true }, { "perrycountyil.gov", true }, + { "perrycountymo.gov", true }, { "perrycountytn.gov", true }, { "perryvilleky.gov", true }, + { "perryvillemo.gov", true }, { "pers-hr.tk", true }, { "perscore.tk", true }, { "perseo.tk", true }, { "persephone.gr", true }, + { "persey-ssm.com.ua", true }, { "persey.tk", true }, { "persian-clan.tk", true }, { "persiandating.tk", true }, @@ -94460,44 +108282,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "persiart.shop", true }, { "persiennexperten.se", true }, { "persiennkompaniet.se", true }, + { "persistence.one", true }, { "persistshields.org", true }, { "persjrp.ca", true }, { "perso.pl", true }, { "persoform.ch", true }, + { "personabrindesbr.com.br", true }, + { "personacommunications.com.au", true }, { "personadecoded.com", true }, { "personal-genome.com", true }, + { "personal-scrum.de", true }, + { "personal-scrum.eu", true }, { "personalaccidentsers.ga", true }, { "personalaccidentsest.ga", true }, + { "personalfunctionaldata.net", true }, + { "personalgifts.biz", true }, { "personalhydroponics.com", true }, { "personalidadmagnetica.com", true }, + { "personaliseyourwine.com.au", true }, { "personalisiertegeschenke.tk", true }, { "personalisiertesgeschenk.tk", true }, { "personalityjunkie.com", true }, - { "personalizarmandops5.com", true }, { "personaljokes.cf", true }, { "personaljokes.ml", true }, { "personaljokesers.ga", true }, { "personaljokesest.ga", true }, { "personaljourneys.co.nz", true }, { "personalnames.net.ru", true }, + { "personalpages.us", true }, { "personalrecreationaltourguides.com", true }, { "personaltrainer-senti.de", true }, + { "personaltraineredu.org", true }, { "personalwebsite.services", true }, { "personcar.com.br", true }, { "persondatakonsulenterne.dk", true }, + { "personetics.com", true }, { "personlookup.com.au", true }, { "personnedisparue.fr", true }, + { "persoonlijkeblog.nl", true }, + { "perspective-daily.de", true }, { "perspective.com.tr", false }, + { "perspectives-de-voyage.com", true }, { "perspectivum.com", false }, - { "perspektive-brunsbuettel.de", true }, - { "perspektive-kruemmel.de", true }, { "perspektivwechsel-coaching.de", false }, { "perspio.io", true }, + { "persson.im", true }, { "persson.me", true }, + { "perssonsgarn.se", true }, + { "persuader-reports.gov", true }, + { "persuasionmatters.com", true }, + { "perswayze.com", true }, { "perthhillsarmadale.com.au", true }, + { "perthpregnancycentre.com.au", true }, { "perthtrains.net", true }, { "perthunicyclists.tk", true }, - { "perthvintagelimousines.com.au", true }, { "perthweekend.com.au", true }, { "pertwarp.tk", true }, { "perubusca.nl", true }, @@ -94509,7 +108347,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "perunsoft.rs", true }, { "perupoemas.tk", true }, { "peruprogramadores.tk", true }, + { "perusal.eu", true }, + { "perusal.social", true }, { "perusteet.tk", true }, + { "peruutetutlennot.fi", true }, { "peruvianhairextension.tk", true }, { "peruvianhumanhair.tk", true }, { "peruvianphotography.com", true }, @@ -94522,12 +108363,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pervesk.lt", true }, { "pervoklass.cf", true }, { "pervomaysk-city.ml", true }, + { "perwinaguirre.com", true }, { "perzeidi.hr", true }, { "pesandansampai.tk", true }, { "pesar.tk", true }, + { "pesc.ru", true }, { "pescadorcomunicacao.com", true }, + { "pescamagnetica.pt", true }, { "pescanetworks.tk", true }, + { "pescans.com", true }, { "pescco.com.br", true }, + { "peshakoo.com", true }, + { "pesinatsizsenetle.com", true }, { "pesitalia.tk", true }, { "pesnik.tk", true }, { "pesnitut.ga", true }, @@ -94537,6 +108384,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pestalertsers.ga", true }, { "pestalertsest.ga", true }, { "pestcontrol.co.uk", true }, + { "pestdefense.com", true }, + { "pesterchum.online", true }, { "pesterchum.xyz", true }, { "pesthotelers.ga", true }, { "pestici.de", true }, @@ -94555,6 +108404,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peta.tk", true }, { "petabits.de", true }, { "petabundant.ga", true }, + { "petadopcje.pl", true }, { "petal-ms.gov", true }, { "petalkr.com", true }, { "petalsoft.tk", true }, @@ -94562,7 +108412,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petaouchnok.ch", true }, { "petar.fyi", true }, { "petaxolotl.com", true }, - { "petbirds.gr", true }, { "petblaster.ga", true }, { "petblender.ga", true }, { "petbooking.it", true }, @@ -94583,11 +108432,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petdir.ga", true }, { "petdish.ga", true }, { "petdollar.ga", true }, + { "peteacheredu.org", true }, { "petech.ro", true }, { "petelew.is", true }, { "petemerges.com", true }, { "petemerges.xyz", true }, - { "peter-hennes.de", true }, { "peter-hurtenbach.de", false }, { "peter-r.co.uk", true }, { "peter-zhu.ca", true }, @@ -94606,8 +108455,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peterfiorella.com", true }, { "peterfolta.net", true }, { "petergudo.tk", true }, + { "peterhall.au", true }, { "peterheery.me", false }, - { "peterhennes.de", true }, { "peterherman.tk", true }, { "peterhome.cn", true }, { "peterhome.tk", true }, @@ -94618,23 +108467,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "peterkotula.tk", true }, { "peterkrivanek.com", true }, { "peterkshultz.com", false }, + { "peterkuma.net", true }, { "peterlajos.com", true }, { "peterlew.is", true }, - { "peterlmai.com", true }, + { "peterlmai.com", false }, { "petermaar.com", true }, { "petermamo.com", true }, { "petermuenster.tk", true }, { "peteroerlemans.be", true }, + { "peterpauer.com", true }, + { "peterpiperpizza.com", true }, { "peters.consulting", true }, { "petersburgmi.gov", true }, { "peterseninc.com", true }, - { "peterslavik.com", false }, { "petersonbrosrealty.com", true }, { "petersport.ee", true }, + { "petersson-gartengestaltung.de", true }, { "petersweb.me.uk", true }, { "petertrevor.com", true }, { "petervaldesii.com", false }, { "petervantriet.nl", true }, + { "peteschmidt.com.au", true }, { "petevagabond.com", true }, { "petfa.ga", true }, { "petfame.ga", true }, @@ -94650,19 +108503,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pethard.ga", true }, { "petherwick.co.uk", true }, { "petherwick.com", true }, - { "petherwicks.co.uk", true }, - { "petherwicks.com", true }, { "peticion.tk", true }, { "petimagine.ga", true }, { "petit-archer.com", true }, - { "petitcyclone.fr", true }, + { "petit-bebe.fr", true }, + { "petitbleu.fr", true }, { "petite-annonce.tk", true }, { "petite-maison.ch", false }, { "petiteframes.com", true }, + { "petitenympha.com", true }, + { "petitions.by", true }, + { "petitions.pro", true }, { "petitmaison.net", true }, { "petitnuagephotographie.be", true }, { "petitsfrenchies.com", true }, { "petitsfreresdespauvres.fr", true }, + { "petitsouffle.fr", true }, { "petitu.mx", true }, { "petjoy.co.za", true }, { "petkiss.ga", true }, @@ -94685,16 +108541,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petops.de", true }, { "petos.tk", true }, { "petover.ga", true }, + { "petpedia.co", true }, { "petpipe.ga", true }, { "petpower.eu", true }, { "petpuppy.tk", true }, { "petr.as", true }, + { "petr.se", true }, { "petr22shcool.tk", true }, { "petra-toroid.ro", true }, { "petrachuk.ru", true }, { "petrally.ga", true }, { "petrarca.tk", true }, - { "petrasestakova.cz", true }, { "petrates.ga", true }, { "petredhot.ga", true }, { "petrequest.ga", true }, @@ -94702,33 +108559,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petrochemprojects.ga", true }, { "petrofac.com", true }, { "petrol-power.tk", true }, - { "petrole.tk", true }, { "petroleum-schools.com", true }, + { "petroleumservicecompany.com", true }, { "petroll.ga", true }, - { "petrologisticsllc.com", true }, { "petroscand.eu", true }, + { "petrostar.com", true }, { "petrostathis.com", false }, { "petrotranz.com", true }, { "petrotrustlibya.com", true }, - { "petrov.engineer", true }, + { "petrov.engineer", false }, { "petrovich.pro", false }, { "petrovitch.tk", true }, { "petrozavodsk.ga", true }, + { "petrpikora.com", true }, { "petruv-grunt.cz", true }, { "petruzz.net", true }, - { "pets-health.com", true }, { "pets4adoption.tk", true }, { "pets4life.com.au", true }, + { "petsafe.net", true }, { "petscams.com", true }, { "petschnighof.at", true }, { "petsdeners.ga", true }, { "petsdenest.ga", true }, + { "petsidi.com", true }, + { "petsmundoanimal.com", true }, { "petsnapshot.ga", true }, { "petsnews.ga", true }, - { "petsnowshoecats.com", true }, { "petsnvets.org", true }, { "petspark.tk", true }, { "petsplash.ga", true }, + { "petsru.net", true }, { "petstick.ga", true }, { "petstok.com.br", true }, { "petstreaming.ga", true }, @@ -94744,6 +108604,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "petvisual.ga", true }, { "petwall.info", true }, { "petwatchersnj.com", false }, + { "petyolo.org", true }, + { "petzplus.net", true }, { "peuf.shop", true }, { "peukert.cc", true }, { "pevat-ua.tk", true }, @@ -94754,44 +108616,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pewglobal.org", true }, { "pewresearch.org", true }, { "pex.digital", false }, - { "peyad.com", true }, + { "pexlab.net", true }, { "peyote.com", true }, { "peyote.org", true }, + { "peyote.wiki", true }, { "peyukoshop.com", true }, { "pf.dk", true }, { "pfa.or.jp", true }, { "pfabel.com", true }, { "pfadfinder-grossauheim.de", true }, + { "pfalz-mail.de", true }, + { "pfandbriefbank.net", true }, + { "pfandbriefe.de", true }, + { "pfandbriefsparen.de", true }, + { "pfannkuchenbratze.de", true }, { "pfarchimedes-pensioen123.nl", true }, { "pfarreiengemeinschaft-neuerburg.de", true }, { "pfarrhaus-mon.ch", true }, + { "pfashionmart.com", true }, { "pfcafeen.dk", true }, + { "pfcardprogram.com", true }, { "pfcchavdar.tk", true }, { "pfcharland.com", true }, + { "pfcnews.com", true }, + { "pfctr.com", true }, { "pfd-nz.com", true }, - { "pfdevroye.com", true }, - { "pfefferkuchen-shop.de", true }, - { "pfefferkuchenprinzessin-dresden.de", true }, + { "pfefferle.online", true }, { "pfeiffer.tech", true }, { "pfeifferszilard.hu", true }, { "pferdesportclub-chiemgau.de", true }, { "pfeuffer-elektro.de", true }, + { "pff.com.au", true }, { "pfft.net", true }, - { "pfingstsportfest.de", true }, + { "pfgl.co.uk", true }, + { "pfingstsportfest.de", false }, { "pfish.zone", true }, { "pfk.org.pl", true }, { "pflan.dk", true }, { "pflanzen-shop.ch", true }, + { "pflanzkompass.at", true }, { "pflege.ch", true }, { "pfmeasure.com", true }, + { "pfnpc.org", true }, { "pfolta.net", true }, { "pfonboarding.org", true }, { "pfonks.com", true }, + { "pfp.com.au", true }, { "pfp.works", true }, { "pfr.email", true }, - { "pfr.moe", true }, + { "pfr.wtf", true }, { "pfrost.me", true }, { "pfsandbox.com", true }, + { "pfsquad.blog", false }, { "pfsquad.nu", true }, { "pfssales.com", true }, { "pfudor.tk", true }, @@ -94803,19 +108679,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pg-sec.com", true }, { "pg-sec.cz", true }, { "pg-sec.eu", true }, + { "pg-slot.me", true }, { "pgazette.tk", true }, + { "pggm.nl", true }, { "pgh-art.com", true }, + { "pgica.org", true }, { "pgklaw.com.au", true }, { "pglaum.tk", true }, { "pgllandscaping.com", true }, { "pgln.tk", true }, { "pgmann.com", true }, + { "pgmjr.com", true }, { "pgmsource.com", true }, { "pgmsp.net", true }, { "pgmtechnologies.com", true }, + { "pgnd.net", true }, + { "pgnetwork.io", true }, { "pgnetwork.net", true }, + { "pgnetwork.org", true }, { "pgp.fail", true }, { "pgp.lol", true }, + { "pgp.net", true }, { "pgp.network", true }, { "pgp.org.au", true }, { "pgpaintanddesign.com", true }, @@ -94826,15 +108710,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pgsec.eu", true }, { "pgsek.cz", true }, { "pgsindustries.com.au", false }, + { "pgslot.id", true }, + { "pgsls.com", true }, + { "pgsupplier.com", true }, { "pgwap.com", true }, { "pgwellnesscoach.it", true }, { "ph-brand.jp", true }, { "ph-consult.sk", true }, + { "ph-ooe.at", true }, { "ph.search.yahoo.com", false }, + { "ph1worlddevelopers.com", true }, { "ph3r3tz.net", true }, - { "ph4nt0m.ddns.net", true }, + { "ph4nt0m.ddns.net", false }, + { "ph89.de", true }, + { "pha.one", true }, { "pha.pub", true }, - { "phangelagroup.co.za", true }, + { "phablecare.com", true }, + { "phaedranyx.co.uk", true }, + { "phagyo.com", true }, { "phannuoc.net", true }, { "phantasia.tk", true }, { "phantasie.cc", true }, @@ -94848,25 +108741,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phantomlord.tk", true }, { "phantomphans.tk", true }, { "phantomware.tk", true }, - { "phaochongtran.com", true }, - { "pharma24.de", true }, + { "pharandespaces.com", true }, + { "pharma-insights.nl", true }, { "pharmaabsoluta.com.br", true }, { "pharmaboard.de", true }, { "pharmaboard.org", true }, { "pharmaceuticalcannabis.org", true }, + { "pharmacie-matignon.com", true }, { "pharmaciechatelle.be", true }, - { "pharmacieplusfm.ch", false }, { "pharmacy.org.pk", true }, { "pharmalab.eu", true }, { "pharmalab.fr", true }, { "pharmapolitics.com", true }, - { "pharmaquality.com", true }, { "pharmasana.co.uk", true }, { "pharmasana.de", true }, { "pharmasana.ru", true }, { "pharmasyncers.ga", true }, { "pharmasyncest.ga", true }, - { "pharmate.org", true }, { "pharmgkb.org", false }, { "pharmica.co.uk", true }, { "pharmica.uk", true }, @@ -94876,8 +108767,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pharynx.nl", true }, { "phasersec.com", true }, { "phasme-2016.com", true }, + { "phastidio.net", true }, + { "phatblackbooty.com", true }, { "phattea.tk", true }, - { "phaux.uno", true }, { "phbits.com", true }, { "phc-sa.com", true }, { "phc4submit.org", true }, @@ -94887,7 +108779,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phcorner.net", true }, { "phd", true }, { "phdelivery.com", true }, + { "phdgames.com", true }, { "phdhub.it", true }, + { "phdsolutions.org", true }, { "phdwuda.com", true }, { "pheasantrunpress.com", true }, { "phellow.de", true }, @@ -94897,42 +108791,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phenergan.ga", true }, { "phenergan.ml", true }, { "phenixairsoft.com", true }, - { "phenixlab.fr", true }, + { "phenixlab.fr", false }, { "phenomnaltwincities.com", true }, + { "phenonline.com", true }, { "phenriques.com", true }, + { "phenweb.co.uk", true }, { "pheramoan.com", true }, - { "pheramoans.com", true }, { "phero.com", false }, { "pheroforce.com", true }, { "pherologie.com", true }, { "pheromeons.com", true }, { "pheromoans.com", true }, { "pheromoens.com", true }, - { "pheromonetalk.com", true }, + { "pheromonetalk.com", false }, { "pheromonez.com", true }, { "pheronome.com", true }, { "pheronomes.com", true }, { "pheros.com", true }, - { "pherotalk.com", true }, { "pheroz.com", true }, { "phesita.gq", true }, { "phew.co.nz", true }, - { "phg-eg.com", true }, - { "phget.com", true }, + { "phfrost.nl", true }, { "phialo.de", true }, { "phibureza.com", true }, - { "phigrupopolideportivo.es", true }, + { "phigrupopolideportivo.es", false }, { "phihq.com", false }, { "phil-dirt.com", true }, { "phil-phillies.com", true }, - { "phil.red", true }, + { "phil.to", true }, { "phil.tw", true }, { "philanima.com", true }, { "philarmonic-abaza.tk", true }, + { "philasd.org", true }, + { "philcare.com.ph", true }, { "phildevient.tk", true }, { "phildonaldson.com", true }, { "phileas-psychiatrie.be", true }, { "philia-sa.com", false }, + { "philiacare.com.au", true }, { "philipbuckmaster.co.uk", true }, { "philipdb.com", true }, { "philipdb.nl", true }, @@ -94943,6 +108839,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "philipkobelt.ch", true }, { "philiplowran.tk", true }, { "philipmordue.co.uk", true }, + { "philipmorrisdirect.co.uk", true }, + { "philipoff.com", true }, { "philipp-trulson.de", false }, { "philipp.vip", true }, { "philippa.cool", true }, @@ -94951,16 +108849,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "philippe-mignotte.fr", true }, { "philippebonnard.fr", true }, { "philippegoffin.be", true }, - { "philippehannes.fr", true }, { "philippekhau.tk", true }, { "philippemunn.photo", true }, - { "philipperoose.be", false }, { "philippheenen.de", false }, - { "philippinedroneassociation.org", true }, { "philippinegreenparty.tk", true }, { "philippinenewsvanguard.tk", true }, { "philippkaindl.de", true }, { "philippkeschl.at", true }, + { "philippwinterberg.com", true }, { "philipslater.cf", true }, { "philipslater.ga", true }, { "philipslater.gq", true }, @@ -94975,13 +108871,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "philis-oenologie.fr", true }, { "phillipgoldfarb.com", true }, { "phillippe-lemarc.ch", true }, - { "phillippi.me", true }, - { "phillipskaiser.com", true }, { "phillipspediatricsoxford.com", true }, { "phillprice.com", false }, + { "phillyhometech.com", true }, { "phillyinjurylawyer.com", true }, - { "philna.sh", true }, - { "philo.shop", true }, { "philographie.com", true }, { "philology.tk", true }, { "philomathiclife.com", true }, @@ -94997,41 +108890,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phils1990.com", true }, { "philsturgeon.uk", true }, { "philux.ch", false }, + { "philward.io", true }, { "philwilson-green.cf", true }, { "philwilson-green.ga", true }, { "philwilson-green.gq", true }, { "philwilson-green.ml", true }, + { "phimmoingay.org", true }, { "phimtor.com", true }, { "phinikarides.net", true }, - { "phinphanatic.com", true }, { "phiomegachi.tk", true }, { "phishing-studie.org", true }, + { "phishing.army", true }, { "phishingusertraining.com", true }, { "phive.eu", true }, + { "phive.social", true }, { "phixer.com", true }, { "phligence.com", true }, { "phobos.tk", true }, - { "phoenixbelgianvegg.com", true }, + { "phoebestrong.org", true }, + { "phoenix-correspondence-commission.gov", true }, { "phoenixboard.tk", true }, { "phoenixcourt.gov", true }, { "phoenixdepositionservices.com", true }, { "phoenixfrequency.ga", true }, + { "phoenixlpgpasig.com", true }, + { "phoenixmanga.com", true }, { "phoenixmunicipalcourt.gov", true }, { "phoenixnest.ltd", true }, { "phoenixpower.tk", true }, { "phoenixsalon.eu", true }, { "phoenixurbanspaces.com", true }, + { "phoenixville.online", true }, + { "phoenixwebsitedesign.com", true }, { "phographer.com", true }, - { "pholder.com", true }, - { "phone-hospital.eu", true }, + { "pholio.com", true }, { "phone-service-center.de", true }, { "phone-spy.ml", true }, { "phone42.com", true }, - { "phone888.cn", true }, { "phonearena.com", true }, + { "phonedoc.it", true }, { "phonefilter.co.uk", true }, { "phonefleet.fr", true }, { "phonegnome.com", true }, + { "phoneia.com", true }, { "phoneincentivesers.ga", true }, { "phoneincentivesest.ga", true }, { "phoneinformation.cf", true }, @@ -95040,7 +108941,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phoneinformation.ml", true }, { "phoneinformation.tk", true }, { "phonelookupname.ml", true }, - { "phonemore.com", true }, { "phonenumber-info.co.uk", true }, { "phonenumberfind.cf", true }, { "phonenumberfind.ga", true }, @@ -95050,25 +108950,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phonesbooksest.ga", true }, { "phonesexchat.com", true }, { "phonesexnumbers.com", true }, + { "phoneswiz.com", true }, { "phonet.tk", true }, { "phonetika.org", true }, { "phonetrace.tk", true }, { "phonetrack.tk", true }, + { "phonevibrator.com", true }, + { "phonex.bg", true }, + { "phonex.com.mx", true }, { "phoneyourselfers.ga", true }, { "phoneyourselfest.ga", true }, { "phonix-company.fr", true }, { "phonosynthese.tk", true }, { "phonosynthesis.tk", true }, + { "phorcys.net", true }, { "phormance.com", true }, + { "phormulagroup.com", true }, { "phosagro.biz", false }, { "phosagro.com", false }, { "phosagro.ru", false }, { "phosforum.ga", true }, { "phosphene.io", true }, + { "photiplans.fr", true }, { "photistic.org", true }, { "photo-blowup.com", false }, { "photo-booth.ro", true }, - { "photo-castings.com", true }, { "photo-design.ml", true }, { "photo-host.tk", true }, { "photo-journ.com", false }, @@ -95077,42 +108983,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "photo-on-event.de", true }, { "photo-paysage.com", true }, { "photo-travel.tk", true }, - { "photoaid.com", true }, - { "photoancestry.com", true }, + { "photo602.com", true }, { "photoartelle.com", true }, { "photobank.ml", true }, + { "photobc.photos", true }, + { "photobcdev.photos", true }, { "photoblock.tk", true }, { "photobooth-romania.ro", true }, { "photobooth.id", true }, { "photobosco.tk", true }, + { "photobrunobernard.com", true }, { "photobyzachary.tk", true }, { "photochka.tk", true }, { "photoclothing.tk", true }, - { "photocode.co.rs", true }, { "photoconferenceers.ga", true }, { "photoconferenceest.ga", true }, { "photodeal.fr", true }, { "photodyna.tk", true }, { "photofinale.com", true }, { "photogelique.be", true }, - { "photogest.com", true }, + { "photograf.io", true }, { "photograni.ru", true }, + { "photographe-perigueux.com", true }, { "photographe-reims.com", false }, { "photographeremploymenters.ga", true }, { "photographeremploymentest.ga", true }, { "photographerforwedding.tk", true }, { "photographersdaydream.com", true }, - { "photographershub.ng", true }, { "photography-workshops.net", true }, { "photographyandvideo.tk", true }, { "photographyforchange.com", true }, { "photographyforchange.org", true }, { "photolakeview.com", true }, { "photolessya.by", true }, - { "photomaniastore.com", true }, { "photomath.com", true }, { "photomizer.com", false }, { "photomodelcasting.com", true }, + { "photomosaicwall.ca", true }, + { "photonclub.ir", true }, { "photoncourier.com", true }, { "photopalace.tk", true }, { "photophobia.tk", true }, @@ -95120,31 +109028,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "photoprofi.tk", true }, { "photops.fr", true }, { "photoreal.tk", true }, + { "photorelive.com", true }, { "photosafari.com.my", true }, { "photosafaribg.com", true }, - { "photosaloncontest.com", false }, { "photosavi.com", true }, { "photosbyzachary.tk", true }, { "photoscheduleers.ga", true }, { "photoscheduleest.ga", true }, + { "photoscotland.net", true }, { "photosgaia.ch", true }, { "photoshop-tipps-und-tricks.de", true }, { "photosight.ru", true }, { "photosight.tk", true }, { "photosoftware.nl", true }, + { "photosynthesis.bg", true }, { "phototechnique.tk", true }, { "phototravel.uk", true }, { "phototrio.com", true }, { "photoutils.com", true }, + { "photovoltaik-reinigung.biz", true }, { "photowall.tk", true }, - { "photowhimsybymegan.com", true }, { "photowire.uk", true }, { "photune.net", true }, { "phoxden.net", true }, { "phoxworld.com", true }, - { "php-tuning.de", true }, { "php.watch", true }, { "phparcade.com", true }, + { "phparena.net", true }, { "phpartners.org", true }, { "phpbb-tutorials.cf", true }, { "phpbbchinese.com", false }, @@ -95163,28 +109073,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phpstan.com", true }, { "phpstan.org", true }, { "phpunit.de", true }, + { "phpwebs.com", true }, + { "phqsoft.com", true }, { "phr34kz.pw", false }, { "phra.gs", true }, { "phreakaus.tk", true }, { "phreaker.ml", true }, { "phreaknet.org", true }, + { "phreesia.com", true }, + { "phrenology.com", true }, { "phrive.space", true }, + { "phrlegal.com", true }, { "phruse.com", true }, { "phryanjr.com", false }, { "phryneas.de", true }, { "phsa.au", true }, { "phsa.co.nz", true }, { "phsa.com.au", true }, + { "phsa.net.au", true }, { "phsa.nz", true }, { "phsarapp.com", true }, + { "phship.cn", true }, { "phtalent.tk", true }, + { "phtbth-upload.com", true }, { "phuket-idc.com", true }, { "phuket-idc.de", true }, { "phuket-nash.cf", true }, { "phuket-nash.ga", true }, - { "phuket-rawai.school", true }, { "phuket-tour.ga", true }, { "phuketbeach.tk", true }, + { "phuketdir.com", true }, { "phuketroman.tk", true }, { "phuketstyle.tk", true }, { "phukettour.ga", true }, @@ -95192,7 +109110,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phukienchanh.com", true }, { "phulyshop.com", false }, { "phumin.in.th", true }, - { "phungwit.ac.th", true }, + { "phungwit.ac.th", false }, { "phuoctran.com", true }, { "phuoctran.com.vn", true }, { "phuoctran.me", true }, @@ -95202,16 +109120,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "phurl.de", true }, { "phv-bw.de", true }, { "phw.org.uk", true }, - { "phxbailbonds.com", true }, + { "phwoarbeauty.com", true }, + { "phx2-az.tk", true }, { "phxserver.net", false }, + { "phyi.loan", true }, { "phyley.com", true }, { "phyllischerry.com", true }, - { "phys.ir", true }, { "physia.gr", true }, { "physicalism.com", true }, { "physicalist.com", true }, + { "physicalmedicineandrehab.com", true }, + { "physicaltherapistassistantedu.org", true }, + { "physicianassistantedu.org", true }, { "physicianbookest.ga", true }, { "physiciansopticalservice.com", true }, + { "physicpezeshki.com", true }, { "physics-schools.com", true }, { "physicsforums.com", true }, { "physik.hu", true }, @@ -95222,36 +109145,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "physiobrite.tk", true }, { "physioteam-franz.de", true }, { "physiotheler.ch", true }, + { "physiotherapie-buk.de", true }, { "physiotherapie-concept.de", true }, - { "physiotherapie-kobiella.de", true }, { "physiotherapie-seiwald.de", true }, { "physiotherapist-physicaltherapist.com", true }, { "physiovesenaz.ch", false }, { "physis.earth", true }, - { "phytoreponse.fr", true }, - { "phytosunaroms.com", true }, { "phyxion.net", true }, + { "phyzx.com.au", true }, { "pi-dash.com", true }, { "pi-net.dedyn.io", true }, { "pi-supply.com", true }, { "pi1.io", true }, { "pia-bardo.tk", true }, { "piadouwes.tk", true }, + { "piai.cf", true }, + { "piai.ga", true }, + { "piai.gq", true }, + { "piai.ml", true }, + { "piai.tk", true }, + { "piaiai.com", true }, { "piajuly.net", true }, { "pialove.net", true }, { "pianetaottica.eu", true }, { "pianetaottica.info", true }, { "pianetaottica.it", true }, { "pianetatatuaggi.it", true }, + { "piano.io", true }, + { "pianoadventures.com", true }, { "pianodisco.tk", true }, { "pianoforpreschoolers.cf", true }, { "pianoforpreschoolers.ga", true }, { "pianoforpreschoolers.gq", true }, { "pianoguy.tk", true }, { "pianojockl.org", true }, - { "pianos.de", false }, + { "pianoo.nl", true }, + { "pianopronto.com", true }, { "pianoschmitz.de", true }, - { "pianostemmer.eu", true }, + { "pianotaku.com", true }, { "pianotuning.cn", false }, { "pianyigou.com", true }, { "piaohong.tk", true }, @@ -95266,28 +109197,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "piavonpadberg.com", true }, { "piboston.org", true }, { "piboubes.me", true }, + { "pic-sl.com", true }, { "pic.gov", true }, - { "pic.pm", false }, { "pic.sr", true }, { "pic2map.com", true }, { "pic2pat.com", true }, { "pic2pat.nl", true }, + { "picalendar.com", true }, { "picante.today", true }, { "picapollochino.tk", true }, + { "picasoft.net", true }, { "picatavocat.fr", true }, - { "picatom.com", false }, + { "picatom.com", true }, { "piccirello.com", true }, { "piccoliamicisport.it", true }, { "piccolino.tk", true }, { "piccolinokids.gr", true }, - { "piccolo-parties.co.uk", true }, + { "piccolitrasporti.it", true }, { "picdefacer.com", true }, { "pichainlabs.com", true }, + { "picharapoker.com", true }, { "pichlerei.at", true }, { "pick.aw", true }, { "pick150.hu", true }, { "picka.gift", true }, - { "pickabrain.fr", true }, + { "pickastock.info", true }, { "pickaw.click", true }, { "pickaw.com", true }, { "pickaw.link", true }, @@ -95298,47 +109232,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "picketfence.tk", true }, { "pickhdtvers.ga", true }, { "pickhdtvest.ga", true }, - { "pickherznyeremeny.hu", true }, - { "picklinik.id", true }, + { "picklinik.id", false }, { "pickmysoap.gr", true }, { "picknetworkiscoming.sg", true }, { "picknyeroizek.hu", true }, { "picksin.club", true }, + { "picksshop.com", true }, { "pickswapers.ga", true }, { "pickswapest.ga", true }, + { "picksygirl.com", true }, { "pickupalliance.com", true }, { "pickupenc.ru", true }, { "piclect.com", true }, { "picme.tk", true }, + { "picmms.com", true }, { "picobellos.tk", true }, + { "picofme.io", true }, { "picom365.com", true }, { "picone.com.au", true }, { "piconepress.com", true }, { "picordi.fr", true }, + { "picoulumber.com", true }, + { "picpay.com", true }, { "picr.ws", true }, + { "picrew.me", true }, + { "pics.io", true }, { "picsalesers.ga", true }, { "picsastock.com", true }, { "picshare.nz", true }, + { "picsnmore.de", true }, { "picstar.tk", true }, { "picsto.re", false }, - { "picstreak.com", true }, { "pictopat.com", true }, { "pictopat.nl", true }, + { "pictoplasma.com", true }, { "pictoriastudios.com", true }, { "pictorista.com", true }, { "pictr.nl", true }, - { "picture.team", true }, - { "pictureguy.de", true }, + { "picturedent.org", true }, + { "picturesitaly.com", true }, { "picturesque-games.tk", true }, { "picturevictoria.vic.gov.au", true }, { "picturingjordan.com", true }, - { "picturoftheday.tk", true }, { "pidelo-peru.com", true }, - { "pidginhost.com", true }, + { "pidginpoetry.com", true }, { "pidjipi.com", true }, + { "pidu.jp", true }, { "pie-express.xxx", true }, { "pieceofcake.solutions", true }, - { "pieceofme.be", false }, { "piecestech.com", true }, { "piechart.ga", true }, { "piedrahita.tk", true }, @@ -95363,14 +109304,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pier1url.com", true }, { "pier28.com", true }, { "pier2pier.org", true }, + { "piercecountyne.gov", true }, { "piercingnagykereskedes.hu", true }, { "piercingpiac.hu", true }, { "piercraft.com", true }, { "pierianservices.com", true }, + { "pieropuschiavo.it", true }, { "pierre-denoblens.net", true }, { "pierre-schmitz.com", true }, { "pierreau.fr", true }, - { "pierrebruynooghe.fr", false }, { "pierrefv.com", false }, { "pierrejeansuau.fr", true }, { "pierreterrien.fr", true }, @@ -95378,7 +109320,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "piersmana.com", true }, { "pierson.tk", true }, { "pierstone.com", true }, - { "pierwsza-wyprawka.pl", true }, { "piesel-piepser.de", true }, { "pietbrakman.tk", true }, { "pietechsf.com", false }, @@ -95391,76 +109332,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pietron.name", true }, { "pietrosoft.tk", true }, { "pietrzyk.it", true }, - { "pietz.uk", true }, { "pieux-expert.com", true }, { "piezus.ru", true }, + { "pif.email", true }, { "pif.gov", true }, - { "piffer.ind.br", true }, { "pig-breeding.tk", true }, - { "pig.name", true }, + { "pig333.com", true }, { "pigb.net", true }, - { "pigeonhole.fun", true }, + { "pigdetector.com", true }, { "pigeonracinginformation.com", true }, { "pigeons-rings.com", true }, - { "pigfox.com", false }, + { "pigfox.com", true }, + { "piggingcleaning.com", true }, { "pigop.com", true }, + { "pigsforsale.co.za", true }, { "pigslv.com", true }, { "pigzilla.co", true }, + { "pihaar.de", true }, + { "pii-protect.com", true }, { "pii.bz", true }, + { "piifunder.co.uk", true }, + { "piifunder.uk", true }, + { "piifunding.com", true }, + { "piizapp.com", true }, { "pijamasbichopreguica.com.br", true }, { "pijuice.com", true }, { "pijusmagnificus.com", true }, + { "pikafan.de", true }, { "pikafederation.ca", true }, + { "pikaramagazine.com", true }, { "pikboxstore.com", false }, + { "pikecoga.gov", true }, { "pikecountyil.gov", true }, { "pikecountyohcommissioners.gov", true }, { "pikeitservices.com.au", true }, - { "piken.eu", true }, + { "pikeky.gov", true }, { "piketonohio.gov", true }, { "pikimusic.moe", true }, - { "pikio.pl", true }, { "pikker.ee", true }, { "pikkuegypti.tk", true }, + { "pikminwiki.com", true }, { "pikmy.com", true }, { "piknichok.ml", true }, { "piksli.si", true }, { "pilani.ch", false }, + { "pilar.moe", true }, { "pilarguineagil.com", true }, + { "pilasebastovce.sk", true }, { "pilatesavenue.co.uk", true }, - { "pilatesbyval.com", true }, { "pilatescenteraz.com", true }, { "pilatespt.nl", true }, { "pilatesstation.co.th", true }, + { "pilatus-aircraft.com", true }, + { "pilbaraports.com.au", true }, { "pildat.org", true }, + { "pilgermaske.org", true }, { "pili-serv.ovh", true }, { "piliszek.net", true }, - { "pill.id", true }, + { "pillar.fi", true }, { "pillar.ninja", true }, { "pillar.us", true }, + { "pillbanana.com", true }, { "pillitteriobgyn.com", true }, { "pillow.sk", true }, { "pillowcast.net", true }, { "pillowexpertsers.ga", true }, { "pillowexpertsest.ga", true }, { "pillowfort.pub", true }, - { "pilomateriali.online", true }, { "pilot-colleges.com", true }, - { "pilot.co", false }, + { "pilot-gps.africa", true }, + { "pilot-gps.com", false }, + { "pilot.co", true }, { "pilot.com", true }, - { "pilotandy.com", true }, { "pilotbook.org", true }, { "pilotcareercenter.com", true }, { "pilotgrowth.com", true }, + { "pilotinterviews.com", true }, { "pilotknobmo.gov", true }, { "pilotpov.com", true }, { "pilotproject.tk", true }, { "pilotshop.com", true }, { "pilsen.fun", true }, + { "pilseta24.lv", true }, + { "pilsook.com", true }, { "pilvi.pw", true }, { "pilvi.space", true }, { "pilvin.pl", true }, { "pimastoneaz.com", true }, - { "pimento.systems", true }, + { "pimentinhasexshop.com.br", true }, { "pimhaarsma.nl", true }, { "pimhaarsmamedia.nl", true }, { "pimichi.com", true }, @@ -95472,6 +109431,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pimpmypaper.com", true }, { "pimpmyperf.fr", false }, { "pimpninjas.org", true }, + { "pimppublishing.com", true }, { "pimpstack.com", true }, { "pims-hub.org.uk", true }, { "pimylifeup.com", true }, @@ -95484,9 +109444,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinarecordsmusic.tk", true }, { "pinaro.de", true }, { "pinarshivmarket.com", true }, - { "pinaryucel.com", true }, { "pinatubo.tk", true }, { "pinball.tk", true }, + { "pinballdirect.us", true }, + { "pinballhouse.us", true }, + { "pinboxx.com", true }, + { "pinceau-peinture.com", true }, { "pinceaux.org", true }, { "pincha.com.tw", false }, { "pinched.ga", true }, @@ -95494,52 +109457,70 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinchuk.tk", true }, { "pincodeit.com", true }, { "pincong.rocks", true }, + { "pincsolutions.com", true }, { "pindakaas.ga", true }, { "pindakaas.tk", true }, { "pindanutjes.be", false }, { "pindostan.tk", true }, + { "pineapple-style.com", true }, { "pinebaylibrary.org", true }, + { "pinebeachnj.gov", true }, { "pinebeecreative.com", false }, { "pinebrook.tk", true }, { "pinecitymn.gov", true }, + { "pinecone.io", false }, { "pinedadegiguela.tk", true }, + { "pinedahair.com", true }, + { "pinegraph.com", true }, + { "pinegrovetownshipmi.gov", true }, { "pinellaslaser.com", true }, { "pinellastaxcollector.gov", true }, { "pinemountainnursery.com.au", true }, { "pinemountbaptistchurch.org", true }, { "pineradelolmo.com", true }, - { "pineriver.dk", true }, { "pinerivermi.gov", true }, + { "pinesol.com", true }, { "pinetopazrealestate.com", true }, - { "pinflix.com", true }, + { "pinetreeadvisors.us", true }, { "pinflux2.com", true }, { "ping-books.cf", true }, - { "pingandsue.us", true }, { "pingce.com", true }, + { "pingnp.me", false }, + { "pingodoce.pt", true }, { "pingpongparkinson.at", true }, + { "pingpongsourcing.com", false }, { "pingrc.net", true }, { "pinguinita.tk", true }, { "pinguinreal.sk", true }, { "pingvinofnet.ml", true }, { "pinhadigital.com", true }, + { "pinheirobittencourt.com.br", true }, { "pinigseu.xyz", true }, { "pinimg.com", true }, + { "pininfarina.it", true }, { "pink-check.school", true }, { "pink-panther.tk", true }, + { "pink.nl", true }, { "pinkapple.com", true }, { "pinkband.tk", true }, { "pinkbike.com", true }, { "pinkbikecycle.com", true }, { "pinkcasino.co.uk", true }, { "pinkerton.io", true }, + { "pinkfoxwebdesign.com", true }, { "pinkhatbeard.com", true }, { "pinkitalia.tk", true }, { "pinklecfest.org", true }, { "pinklittlenotebook.com", true }, { "pinkmango.travel", false }, { "pinkoi.com", true }, + { "pinkoz.xyz", true }, { "pinkpearl.tk", true }, { "pinkplay.com.br", true }, + { "pinkpop.nl", true }, + { "pinkprobeauty.com", true }, + { "pinkpussy.tv", true }, + { "pinkpussypics.com", true }, { "pinksec.com.au", true }, { "pinkster.tk", true }, { "pinkvelvet.tk", true }, @@ -95547,20 +109528,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinnacle-tex.com", true }, { "pinnacleallergy.net", true }, { "pinnaclebank.com", true }, - { "pinnaclecare.com", true }, + { "pinnaclecare.com", false }, + { "pinnacleholdings.com", true }, { "pinnaclelife.co.nz", false }, { "pinnaclelife.nz", true }, + { "pinnacletrailers.com", true }, + { "pinnakl.com", true }, { "pinnoto.eu.org", true }, { "pinnoto.org", true }, { "pinoservers.tk", true }, { "pinot.it", true }, + { "pinoydeal.ph", true }, { "pinoyreal.com", true }, - { "pinoyreal.team", false }, { "pinoyseoservices.com", true }, { "pinoysurvey.com", true }, { "pinoytambayan.ga", true }, { "pinoytambayan.tk", true }, - { "pinoytech.ph", true }, { "pinoytimes.tk", true }, { "pinpaituiguang.com.cn", true }, { "pinpayments.com", true }, @@ -95569,18 +109552,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinsamiprofessional.com", true }, { "pinse.club", true }, { "pinse.la", true }, - { "pinse.pw", true }, { "pinsi.pt", true }, + { "pinsource.kz", true }, + { "pinspiration.com", true }, { "pinta.tk", true }, { "pinterest.at", true }, { "pinterest.ca", true }, { "pinterest.ch", true }, { "pinterest.cl", true }, + { "pinterest.co", true }, { "pinterest.co.kr", true }, { "pinterest.co.uk", true }, { "pinterest.com", true }, { "pinterest.com.au", true }, + { "pinterest.com.mx", true }, + { "pinterest.com.pe", true }, + { "pinterest.com.py", true }, + { "pinterest.com.uy", true }, { "pinterest.de", true }, + { "pinterest.dk", true }, + { "pinterest.ec", true }, { "pinterest.engineering", true }, { "pinterest.es", true }, { "pinterest.fr", true }, @@ -95588,51 +109579,70 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pinterest.info", true }, { "pinterest.it", true }, { "pinterest.jp", true }, + { "pinterest.nl", true }, { "pinterest.nz", true }, { "pinterest.ph", true }, { "pinterest.pt", true }, { "pinterest.ru", true }, + { "pinterest.se", true }, + { "pinterestcareers.com", true }, { "pinterjann.is", true }, + { "pinterst.com", true }, + { "pintiaktivasyon.com", true }, { "pintiaux.com", true }, - { "pintoresiluro.com", true }, - { "pintoselectricfencing.co.za", true }, - { "pintosplumbing.co.za", true }, + { "pintosbeeremovals.co.za", true }, + { "pintrest.com", true }, { "pinupbets.gq", true }, { "pinupsex.com", true }, + { "pinxporn.net", true }, + { "pinyonpass.com", true }, + { "pinyonpass.net", true }, + { "pinyonpass.org", true }, { "pioneer-car.eu", true }, { "pioneer-rus.ru", true }, - { "pioneerbible.org", true }, - { "pioneersenior.com", true }, + { "pioneer.eu", true }, + { "pioneerdr.com", true }, { "pionierboat.cf", true }, { "pionierboat.ga", true }, { "pionierboat.tk", true }, { "pionieren.tk", true }, { "pionplex.de", true }, + { "piovan.com", true }, { "pipa-shop.nl", true }, - { "pipabella.com", true }, { "pipeclub.tk", true }, + { "piped.video", true }, + { "pipelineengineeringsoftware.com", true }, { "pipenav.gq", true }, { "pipenny.net", true }, { "piperswe.me", true }, { "pipestonecounty.gov", true }, + { "pipetehran.ir", true }, + { "pipetobacco.uk", true }, { "pipfrosch.com", false }, + { "pipglobal.com", true }, { "pippenainteasy.com", true }, { "piprivillage.ml", true }, { "piprotec.com", true }, { "pipscprd.ca", true }, { "piquaoh.gov", true }, { "piqueteway.tk", true }, - { "piraeuspress.gr", true }, { "piraino.fr", true }, - { "piramalcriticalcare.us", true }, { "piramalglassusa.com", true }, + { "piramide.nl", true }, { "piranhaattack.tk", true }, { "piranja-cola.de", true }, { "piranjasoul.de", true }, { "pirapiserver.ddns.net", true }, + { "pirate-proxy.biz", true }, + { "pirate-proxy.click", true }, { "pirate-proxy.club", true }, + { "pirate-proxy.ink", true }, + { "pirate-proxy.one", true }, { "pirate-proxy.onl", true }, + { "pirate-proxy.pro", true }, { "pirate-proxy.pw", true }, + { "pirate-punk.net", true }, + { "pirate.chat", true }, { "pirate.gq", false }, { "piraten-basel.ch", true }, { "piraten-kleinbasel.ch", true }, @@ -95640,16 +109650,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "piratenlogin.de", false }, { "pirateparty.org.uk", true }, { "piratepay.io", false }, - { "pirateproxy.buzz", true }, - { "pirateproxy.cc", true }, - { "pirateproxy.cloud", true }, - { "pirateproxy.earth", true }, + { "piratepcs.org", true }, { "pirateproxy.how", true }, - { "pirateproxy.ltda", true }, - { "pirateproxy.name", true }, - { "pirateproxy.onl", true }, - { "pirateproxy.tube", true }, - { "pirateproxy.uno", true }, { "pirates-comic.com", true }, { "piratesbrewcoffee.net", true }, { "piratesforums.co", true }, @@ -95667,24 +109669,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pirogi.ga", true }, { "piroleikki.co.jp", true }, { "pirscapital.com", true }, - { "piruchita.com", true }, { "pirxpilot.me", true }, { "pisaggni.ch", true }, { "pisanpeikot.tk", true }, + { "pisaparaasescolas.pt", true }, { "pisarzowa.tk", true }, { "pisatoday.it", true }, + { "piscapisca.pt", true }, + { "piscesdwarf.com", true }, { "piscestrade.com", true }, { "piscine.roma.it", true }, - { "piseach.be", true }, { "pisearch.cc", true }, { "pisearch.cn", true }, { "pisemnet.tk", true }, { "pisf.in", true }, { "pishgamiran.tk", true }, + { "pisitsolutions.com", true }, + { "pisk.loan", true }, { "piskenfuerwehr.de", true }, + { "pisosvitrificados.cl", true }, { "pisquettes.fr", true }, { "pissblau.com", true }, { "pissflaps.co.uk", true }, + { "pista73.com", true }, { "pistonkandidatu.tk", true }, { "pistonpowered.com", true }, { "pisupp.ly", true }, @@ -95692,18 +109699,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pit-book.com", true }, { "pit-stop-sto.tk", true }, { "pitaiatrade.com", true }, + { "pitajrobota.com", true }, + { "pitakashop.hu", true }, { "pitbooks.ga", true }, { "pitbullclub.tk", true }, { "pitbullsecuritysolutions.ca", true }, + { "pitc.nl", true }, { "pitch.com", true }, { "pitchforkunion.tk", true }, { "pitchup.com", true }, { "pitchupp.com", false }, { "pitctestdomain.gov", true }, + { "piteadetox.com", true }, + { "piter-auto-painter.ru", true }, { "piter-print.tk", true }, { "piter178.tk", true }, { "piterfish.ru", true }, - { "pitergolds.ru", true }, { "pitfire.io", true }, { "pitius.tk", true }, { "pitman.tk", true }, @@ -95711,69 +109722,86 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pitot-rs.org", true }, { "pitou-minou.ca", true }, { "pitrick.tk", true }, + { "pitrivertribe.gov", true }, { "pitshift.click", true }, - { "pitshift.co", true }, { "pitshift.com", true }, { "pitsstop.nu", true }, { "pitsundaorgan.tk", true }, + { "pittandmoore.co.nz", true }, { "pittmancentertn.gov", true }, + { "pittohio.com", true }, + { "pittsburghfibroids.com", true }, + { "pittsburghhiresveterans.org", true }, { "pittsburgtx.gov", true }, { "pittsvillemd.gov", true }, { "pitu.gov", true }, { "piu.moe", true }, - { "piucellulare.it", true }, { "piuincontri.com", true }, { "piuplayer.com", true }, { "piurvolium.tk", true }, { "pius.com.br", true }, + { "piute.gov", true }, + { "piutesd.gov", true }, { "pivbar.tk", true }, + { "pivio.nl", true }, { "pivnica.cf", true }, { "pivnica.ga", true }, { "pivnica.gq", true }, { "pivnica.tk", true }, - { "pivniraj.com", true }, { "pivotalshift.co.uk", true }, { "pivotaltracker.com", true }, { "pivotanimation.org", true }, { "pivotanimation.tk", true }, + { "pivotbio.com", true }, { "pivovarcunak.cz", true }, + { "pivpn.io", true }, { "pivx2bitcoin.com", true }, { "pivxblockchain.com", true }, { "pivxblockchaindownload.com", true }, - { "piw.pw", true }, + { "piw.pw", false }, { "piwko.co", true }, + { "pix-geeks.com", true }, { "pix5.de", true }, - { "pixael.com", true }, { "pixalatio.tk", true }, + { "pixbaton.jp", true }, { "pixca.mx", true }, { "pixe2019.org", true }, { "pixel-history.tk", true }, + { "pixel-ninjas.de", true }, { "pixel-perfection.com", true }, { "pixel-puls.de", true }, { "pixel.facebook.com", false }, { "pixel.google.com", true }, - { "pixelabs.fr", true }, + { "pixel4k.com", true }, + { "pixelabs.fr", false }, + { "pixelats.cat", true }, + { "pixelbrew.coffee", true }, { "pixelcatproductions.net", true }, { "pixelchannel.ga", true }, { "pixelcomunicacion.com", true }, { "pixelcrayons.com", true }, - { "pixelecommerce.com", true }, { "pixelfiends.tk", true }, { "pixelglance.com", true }, { "pixelgliders.de", true }, { "pixelglue.com.au", true }, + { "pixelheart.eu", true }, { "pixelheaven.tk", true }, { "pixelhero.co.uk", false }, { "pixelion.tk", true }, + { "pixelmarketing.hu", false }, { "pixelmattic.com", true }, { "pixelmedianetwork.com", true }, { "pixelmonworld.fr", true }, + { "pixelonl.com", true }, + { "pixelpaper.org", true }, + { "pixelpeeper.com", true }, { "pixelplex.io", true }, { "pixelrain.info", true }, { "pixelsbanking.com", true }, { "pixelshealth.com", true }, { "pixelsketch.co.uk", true }, { "pixelsquared.us", true }, + { "pixelstouch.org", true }, { "pixelstrade.com", true }, { "pixeltranslating.com", true }, { "pixelturkey.art", true }, @@ -95784,13 +109812,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pixelution.at", true }, { "pixelw.design", true }, { "pixelwijk.de", true }, + { "pixelwraps.com", true }, { "pixelz.cc", true }, { "pixend.de", true }, { "pixeon.com", true }, - { "pixie.ga", true }, { "pixiin.com", true }, + { "pixinfo.com", true }, { "pixiv.cat", true }, { "pixiv.moe", true }, + { "pixiv.re", true }, { "pixlfox.com", true }, { "pixloc.fr", true }, { "pixnel.com.br", true }, @@ -95799,6 +109829,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pixouno.com", true }, { "pixshop.fr", true }, { "pixstash.net", true }, + { "pixsystem.com", true }, { "pixxxels.cc", true }, { "pixyship.com", true }, { "pixzilla.de", true }, @@ -95809,20 +109840,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pizza-calzone.com", true }, { "pizza-curator.com", true }, { "pizza-house.tk", true }, - { "pizza-soprano.pl", true }, { "pizza2020andcatering.com", true }, { "pizzabesteld.nl", true }, { "pizzabottle.com", true }, + { "pizzachefs.co.za", true }, { "pizzacontenta.tk", true }, { "pizzacosi.nl", true }, { "pizzafest.ddns.net", true }, { "pizzagaming.tk", true }, { "pizzagigant.hu", true }, { "pizzahut.co.in", true }, + { "pizzahut.co.nz", true }, + { "pizzahut.com.tw", true }, { "pizzamc.eu", true }, { "pizzaplus.tk", true }, { "pizzariapartiupizza.com.br", true }, { "pizzariaroma.cf", true }, + { "pizzarts.fr", true }, { "pizzaslut.xyz", true }, { "pizzeriaamadeus.hr", true }, { "pizzeriasmallorca.com", true }, @@ -95831,8 +109865,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pj21j.com", false }, { "pj21m.com", false }, { "pj4488.cc", true }, - { "pj83.duckdns.org", true }, { "pjax.xyz", true }, + { "pjc.is", true }, { "pjentertainments.co.uk", true }, { "pjleisure.co.uk", true }, { "pjo.no", true }, @@ -95840,12 +109874,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pjp.com.mt", true }, { "pjshop.cf", true }, { "pjsk.cc", true }, + { "pjsk.eu.org", true }, { "pjuu.com", false }, { "pk-master.tk", true }, { "pk-soft.tk", true }, - { "pk.edu.ee", true }, { "pk.search.yahoo.com", false }, { "pk8k.com", true }, + { "pkautodesign.com", false }, { "pkb.shop", true }, { "pkbjateng.com", true }, { "pkeus.de", true }, @@ -95855,18 +109890,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pkirwan.com", true }, { "pko.ch", false }, { "pkov.cz", true }, - { "pkphotobooths.co.uk", true }, { "pkq5.com", true }, { "pkrank.com", true }, { "pkservice.tk", true }, { "pkshs.my", true }, { "pkspskov.tk", true }, + { "pkvgamesqq.asia", true }, { "pkwebsolutions.cf", true }, { "pl-cours.ch", false }, { "pl-trans.tk", true }, { "pl.search.yahoo.com", false }, { "pl2.es", true }, - { "plabble.org", true }, { "placasonline.com.br", true }, { "placeandsee.com", true }, { "placedaffiliate.com", true }, @@ -95875,8 +109909,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "placeforgames.tk", true }, { "placehold.co", true }, { "placeitsf.com", true }, + { "placements.io", true }, { "placementspot.ca", true }, { "placenet.fr", true }, + { "placeofindia.com", true }, { "placepugs.com", true }, { "placeralplato.com", true }, { "placercountyelections.gov", true }, @@ -95885,19 +109921,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plagiarismcheck.org", true }, { "plagu.ee", true }, { "plagued.tk", true }, - { "plainbulktshirts.co.za", true }, + { "plaid.com", true }, { "plainfieldil.gov", true }, { "plainfieldpolicenj.gov", true }, + { "plainfieldvt.gov", true }, + { "plaingreenloans.com", true }, { "plainjs.com", true }, { "plainlanguage.gov", true }, { "plainoltrailers.com", true }, { "plainsgeorgia.gov", true }, + { "plainsoftware.org", true }, { "plaintech.net.au", true }, + { "plaintext.pizza", true }, { "plaintextpledge.com", true }, { "plaintextpledge.email", true }, { "plaintextpledge.eu", true }, { "plaintextpledge.net", true }, { "plaintextpledge.org", true }, + { "plaintownshipstarkoh.gov", true }, { "plaintray.com", true }, { "plaisirdumouvement.com", true }, { "plaisiretsens.com", true }, @@ -95908,17 +109949,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plaloo.tk", true }, { "plan-immobilier.fr", true }, { "plan-it-events.de", true }, - { "plan-und-los.de", true }, { "planafy.com", true }, + { "planbase.com", true }, { "planchasvertical.es", true }, { "plancke.io", true }, { "plandecorones.net", true }, { "plandegralba.net", true }, + { "plandomemanorny.gov", true }, { "plandy.me", true }, { "planecon.nz", true }, { "planeexplanation.com", true }, + { "planen-bauen.eu", true }, { "planer.me", true }, - { "planet-cloud.fun", true }, { "planet-laas.de", true }, { "planet-work.com", true }, { "planet.ink", true }, @@ -95927,6 +109969,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "planeta-remontika.ga", true }, { "planetadeti.org", true }, { "planetadjs.com", true }, + { "planetairsports.com", true }, { "planetalife.com", true }, { "planetamarrom.tk", true }, { "planetamend.com", true }, @@ -95942,41 +109985,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "planetasilius.tk", true }, { "planetasuboficial.com.br", true }, { "planetau2.com", true }, - { "planetbrain.tk", true }, + { "planetboredom.net", true }, { "planetbreath.ch", false }, { "planetcbd.net", true }, { "planetchiropracticga.com", true }, - { "planete-cocoon.com", true }, { "planete-lira.fr", true }, { "planete-secu.com", true }, { "planeteroliste.com", true }, { "planeteroliste.fr", true }, { "planetfertilityest.ga", true }, { "planetgrehen.tk", true }, - { "planeticke.com", true }, + { "planethowl.com", true }, { "planetknauer.net", true }, { "planetmath.org", true }, { "planetmetroidprime.tk", true }, { "planetmobile.tk", true }, { "planetmugen.tk", true }, - { "planetofsound.tk", true }, { "planetonline.tk", true }, + { "planetpayment.com", true }, { "planetpowershell.com", true }, { "planetradio.tk", true }, + { "planetreinvention.com", true }, { "planetromeo.com", true }, { "planetromeofoundation.org", true }, { "planetscale.com", true }, - { "planetsoftware.com.au", true }, { "planetstimes.com", true }, { "planettimer.com", true }, + { "planetun.mobi", true }, { "planetweb.tk", true }, - { "planhub.com", true }, + { "planful.com", true }, { "planify.io", false }, { "planisanin.tk", true }, { "planiserin.tk", true }, { "planisware.academy", true }, { "planisware.cn", true }, - { "planisware.com", true }, { "planisware.io", true }, { "planisware.live", true }, { "planiswareusa.com", true }, @@ -95986,19 +110028,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "planitz.org", true }, { "planium.io", true }, { "planled.ga", true }, - { "planlos.net", true }, + { "planlos.net", false }, { "planmemberpartners.com", true }, { "planned-cities.com", true }, { "plannedgrocery.com", true }, { "plannedlink.com", true }, + { "planning.center", true }, { "planning.ga", true }, { "planning.nl", true }, + { "planningcenter.com", true }, { "planningsagenda.nl", true }, { "plano.gq", true }, { "planodesaude.net.br", true }, - { "planolowcarb.com", true }, - { "planosvivointernet.com.br", true }, - { "planosylicencias.de", true }, { "planresto.com", true }, { "planrow.com", true }, { "plansaude.med.br", true }, @@ -96010,27 +110051,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plantastique.ch", false }, { "plantdaddie.com", true }, { "planteforum.no", true }, + { "plantenvinder.nl", true }, + { "plantepakken.dk", true }, { "plantes.ch", true }, { "plantezcheznous.com", true }, { "planther.nl", true }, + { "plantidentification.co", true }, + { "plantinum-cbd.com", true }, { "plantmojomagic.com", true }, { "plantprosperous.com", true }, - { "plantron.gr", true }, { "plantroon.com", true }, { "plantrustler.com", true }, { "plantsupplement.co.uk", true }, { "planujemywesele.pl", true }, + { "planungsdetail.de", true }, { "planungsregion-abw.de", true }, { "planview.com", true }, { "plaque-funeraire.fr", true }, { "plaque-immatriculation-auto.com", true }, - { "plaqueomatic.fr", true }, + { "plaqueimmat.fr", true }, { "plaredo.tk", true }, { "plaros.ml", true }, { "plasapulsa.tk", true }, { "plasesolev.tk", true }, + { "plasfab.com.au", true }, { "plaskiewicz.pl", true }, + { "plasma.nl.eu.org", true }, { "plasmainc.xyz", true }, + { "plasmatrap.com", false }, { "plasofficial.it", true }, { "plassmann.ws", true }, { "plast.bg", true }, @@ -96039,7 +110087,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plastex.tk", true }, { "plastic2print.com", true }, { "plasticdonut.tk", true }, - { "plasticobiodegradable.com", true }, + { "plasticflash.com", true }, { "plasticosbiobasados.com", true }, { "plasticpassion.tk", true }, { "plasticscm.com", true }, @@ -96051,27 +110099,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plasticsurgeryservices.com", true }, { "plasticsurgerystore.com", true }, { "plasticwindows.tk", true }, - { "plastiflex.it", true }, { "plastiform.nl", true }, + { "plastireal.com.br", false }, { "plastischechirurgie-linz.at", true }, { "plastokna.tk", true }, + { "plastoplex.com", true }, { "plastovelehatko.cz", true }, { "plataformaslms.com", true }, { "platanakia.tk", true }, + { "plate.de", true }, { "plateforme-exposant.com", true }, + { "plateformecapitalisation.org", true }, { "plateriaaida.tk", true }, { "platform-med.org", true }, { "platform2020prague.com", true }, { "platforma2020praha.cz", true }, { "platformadmin.com", true }, + { "plathome.co.jp", true }, { "platiniumvapes.com", true }, - { "platinmods.my.id", true }, + { "platinnetz.de", true }, { "platinum-hit.com", true }, + { "platinum1.ru", true }, { "platinumalertsers.ga", true }, { "platinumalertsest.ga", true }, { "platinumcalendarest.ga", true }, { "platinumcat.info", true }, { "platinumgatesecurity.co.uk", true }, + { "platinumjubilee.gov.au", true }, + { "platinumkids.com.br", true }, + { "platinumpoolsaz.com", true }, { "platinumsystems.biz", true }, { "platinumtalkers.ga", true }, { "platinumtalkest.ga", true }, @@ -96086,14 +110142,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "platter.gq", true }, { "platter.tk", true }, { "platterlauncher.com", true }, - { "plattmakers.de", true }, + { "plattmakers.de", false }, { "platueguide.tk", true }, { "platypiduses.com", true }, { "plaul.de", true }, + { "plausibility.cloud", true }, { "plaut.sk", true }, { "plavdoma.com.ua", true }, { "plavormind.tk", true }, { "play", true }, + { "play-asia.com", true }, + { "play-best-games.com", true }, { "play-casino-japan.com", true }, { "play-charades.com", true }, { "play-lu.com", true }, @@ -96113,6 +110172,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "play3niu68.com", true }, { "play3niu8.com", true }, { "play3niu88.com", true }, + { "play595.com", true }, { "playabalares.ga", true }, { "playandwin.co.uk", true }, { "playanka.com", true }, @@ -96129,36 +110189,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "playdlawosp.pl", true }, { "playdrop.ml", true }, { "playelephant.com", true }, - { "player.me", true }, + { "player701.net", true }, { "player701.ru", true }, { "playerdb.co", true }, + { "playerup.com", true }, { "playface.ml", true }, + { "playform.cloud", true }, + { "playfrank.com", true }, + { "playfull.games", true }, { "playgame.tk", true }, { "playgamenow.tk", true }, + { "playgameoflife.com", true }, + { "playgroundhaarlem.nl", true }, { "playhappywheelsunblocked.com", true }, { "playinfinity.com", true }, { "playinfinityvr.com", true }, + { "playingfor90.com", true }, { "playit.rs", true }, { "playkids.com", true }, - { "playlisten.radio.br", true }, + { "playlistresearch.com", true }, { "playmat.com", true }, - { "playmei.com", true }, - { "playmytime.com", true }, - { "playnation.io", true }, + { "playmei.com", false }, + { "playmob.com", true }, { "playnow.com", true }, { "playnuganug.com", true }, { "playocean.net", true }, { "playorigin.com", true }, - { "playoverwatch.com", true }, { "playpirates.com", true }, { "playpower.tk", true }, + { "playreal.cc", true }, { "playreal.city", true }, { "playreal.com.tw", true }, { "playsnake.org", true }, { "playsoftware.tk", true }, { "playsprout.industries", true }, { "playstation-network.ga", true }, + { "playstation-news.de", true }, + { "playstationplus.es", true }, { "playstationtrophies.org", true }, + { "playtheme.ru", true }, { "playtictactoe.org", true }, { "playtoearn.net", true }, { "playtop.tk", true }, @@ -96170,8 +110239,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "playupnow.com", true }, { "playviolinmusic.com", true }, { "playwhyyza.com", true }, - { "playwithme.fr", true }, - { "playxpgames.com", true }, + { "playwright.co", true }, { "playxylo.com", true }, { "playyou.be", true }, { "playzone.tk", true }, @@ -96183,7 +110251,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plcgurus.net", true }, { "plchardware.com", true }, { "pldx.org", true }, - { "ple-conseil.fr", true }, { "pleasantfree.com", true }, { "pleasantonca.gov", true }, { "pleasantonmobilenotary.com", true }, @@ -96197,6 +110264,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pleasureplanetbrothel.com.au", true }, { "pleb.cc", true }, { "plebeian.com.tw", true }, + { "pleeease.io", true }, { "plegro.com", true }, { "pleiadiantalk.tk", true }, { "pleiar.no", true }, @@ -96204,15 +110272,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pleijsier.tk", true }, { "pleindedemsvaart.tk", true }, { "pleine-conscience.ch", false }, - { "plekker.be", true }, + { "pleiospilos.com", true }, { "plenigo.com", true }, { "plenkanaotrez.ml", true }, { "plentybetter.com", true }, { "plentybetter.org", true }, { "pleo.io", true }, + { "pleskssd1.nl", true }, { "plesse.pl", true }, { "pletenkin-nn.ru", true }, { "plex-server.cz", true }, + { "plex.tv", true }, { "plexa.de", true }, { "plexbpvr.ddns.net", true }, { "plexhome13.ddns.net", true }, @@ -96224,8 +110294,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plexmark.net", true }, { "plexmark.tk", true }, { "plexnet.cz", true }, + { "plexopedia.com", true }, { "plexpy13.ddns.net", true }, { "plextv.de", true }, + { "plexusmd.com", false }, { "plexusworldwide.com", true }, { "plexverzoek.nl", true }, { "pley.today", true }, @@ -96233,30 +110305,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plgr.tech", true }, { "plicca.com", false }, { "plichso.de", true }, + { "plicker.net", true }, { "plikersi.tk", true }, { "plikiai.tk", true }, + { "plintusof.by", true }, { "pliosoft.com", true }, + { "pliroforikikoufopoulou.gr", true }, { "plissee-experte.de", true }, - { "plistbooking.com", true }, { "plitu.de", true }, - { "plixar.com", true }, { "plixer.com", true }, { "plixer.net", true }, { "plkeenecc.com", true }, { "pllivres.cf", true }, { "plob.org", true }, - { "plochka.bg", true }, { "plodwithme.com", true }, { "ploi.io", true }, - { "plokigames.com", true }, { "plokko.com", true }, { "plomberie-rivesud.ca", true }, { "plomin.tk", true }, { "plongee-phuket.fr", true }, { "ploof-cleaning.gr", true }, + { "plooij.it", true }, { "ploptec.tk", true }, { "plotbubble.com", true }, { "plothost.com", true }, + { "plotly.com", true }, + { "plov.loan", true }, { "plowerolin.tk", true }, { "ploxel.co.uk", true }, { "ploxel.com", true }, @@ -96264,61 +110338,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plrarena.com", true }, { "plsboop.me", true }, { "plu.st", true }, - { "pluga.co", false }, { "plugcubed.net", false }, { "plugin-planet.com", true }, - { "pluginfactory.io", true }, { "pluginhayati.tk", true }, { "pluginrealty.net", true }, + { "pluginthemehub.com", true }, + { "plugshare.com", true }, { "pluimveeplanner.nl", true }, { "plum.fr", true }, { "plumair-ve.com", true }, - { "plumber-in-sandton.co.za", true }, - { "plumbercincoranch.com", true }, { "plumberdurbannorth.co.za", true }, { "plumberkingsburgh.co.za", true }, { "plumberlewisvilletexas.com", true }, { "plumberqueensburgh.co.za", true }, { "plumberumhlangarocks.co.za", true }, - { "plumbingandheatingspecialistnw.com", true }, + { "plumbingbear.com", true }, { "plumbingfourways.co.za", true }, - { "plumbingkingsllc.com", true }, + { "plumbingkingsllc.com", false }, { "plumbingmidrand.co.za", true }, { "plumbingshop.tk", true }, { "plumbware.co.uk", true }, + { "plumefox.com", true }, + { "plumlakewi.gov", true }, { "plumlocosoft.com", true }, - { "plumnet.ch", true }, + { "plumnet.ch", false }, + { "plumperthumbs.com", true }, { "plumpie.net", false }, { "plumplat.com", true }, + { "plumsail.com", true }, { "plumz.me", true }, { "plur.com.au", true }, { "plural.cafe", true }, { "pluralistic.net", true }, { "pluralpedia.org", true }, { "pluricosmetica.com", true }, - { "plurr.me", false }, - { "plus-5.com", true }, - { "plus-aliance.ru", true }, + { "plurilock.com", true }, { "plus-project.co.uk", true }, { "plus.google.com", true }, { "plus.sandbox.google.com", true }, + { "plus.st", true }, { "plus15.ml", true }, { "plus15.tk", true }, { "plus1s.site", true }, + { "plusbeauty.tw", true }, { "plusbot.tk", true }, + { "plusfitness.com.au", true }, + { "plusgrandevilledefrance.com", true }, { "plushev.tk", true }, { "pluslink.co.jp", true }, - { "plusmobile.fr", true }, + { "plusnet.de", false }, + { "plusport-api.com", true }, + { "plusport.com", true }, { "plusreed.com", true }, - { "plussizereviews.com", true }, - { "pluste.com", true }, + { "plustech.co.id", true }, { "plustokyoinc.jp", true }, { "plustwik.com", true }, { "pluta.net", true }, { "plutiedev.com", true }, - { "pluto.life", true }, + { "pluto5000.com", true }, { "plutopia.ch", true }, + { "pluvo.site", true }, + { "pluxml.org", true }, { "plyind.com", true }, + { "plymouthboroughpa.gov", true }, { "plymouthbouncycastles.co.uk", true }, { "plymouthbus.co.uk", true }, { "plymouthcountyiowa.gov", true }, @@ -96330,65 +110412,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "plzen-sadrokarton.cz", true }, { "plzen.fun", true }, { "plzh4x.me", true }, - { "plzz.de", true }, + { "plztoy.com", true }, + { "pm-22711.space", true }, + { "pm-game-777.com", true }, { "pm-onboarding-external-dev.azurewebsites.net", true }, { "pm-partners-management-dev.azurewebsites.net", true }, + { "pm-schilderwerk.nl", true }, + { "pm-site.xyz", true }, + { "pm-tm.info", true }, { "pm.gov.au", true }, { "pm.link", true }, + { "pm.ua", true }, + { "pm.uz", true }, { "pm13.cz", true }, { "pm13.org", true }, { "pm25.im", true }, { "pma-iss.com", true }, + { "pma-tools.de", true }, { "pmail.tw", true }, { "pmalaty.com", true }, { "pmarbeid.nl", true }, { "pmarques.info", true }, { "pmartin.tech", true }, { "pmbc.org", true }, + { "pmbet.vip", true }, { "pmbrachyeducation.ca", true }, - { "pmbsteelbuildings.com", true }, + { "pmc-maisons-bois.fr", true }, + { "pmc.gov.au", true }, { "pmcancercampus.ca", true }, { "pmcancerclasses.ca", true }, { "pmcancerrehab.ca", true }, { "pmcaregiver.ca", true }, { "pmcc.net", true }, { "pmccrystal.com", true }, + { "pmconsulting.es", true }, { "pmcorganometallix.com", true }, { "pmcouvrie.com", true }, { "pmctire.com", false }, { "pmcvinyladditives.com", true }, { "pmdealerest.ga", true }, - { "pme-shop.com", true }, { "pmessage.ch", true }, { "pmf.gov", true }, - { "pmfirst.com", true }, { "pmg-offshore-company.com", true }, - { "pmg-purchase.com", true }, - { "pmg-purchase.net", true }, + { "pmg.ua", true }, + { "pmglobal.ro", true }, { "pmi-install.com", true }, { "pmi.edu", true }, { "pmi.gov", true }, { "pmiandulive.com", true }, - { "pmiikomfakdish.or.id", true }, - { "pminvestinginfo.com", true }, + { "pmibags.com", true }, { "pmk.ddns.net", false }, { "pmklaassen.com", true }, + { "pml4t.net", true }, { "pmnaish.co.uk", true }, { "pmnd.rs", true }, + { "pmoe-software.com", true }, { "pmoreau.org", true }, { "pmoscr.com", true }, + { "pmota.org", true }, { "pmp-art.com", true }, { "pmp6.fr", true }, { "pmpm.tk", true }, - { "pmrockstars.com", true }, + { "pmpress.org", true }, { "pms.myiphost.com", true }, - { "pmsacorp.com", true }, + { "pmscomputers.com", true }, { "pmsf.eu", true }, { "pmsfdev.com", true }, { "pmsfoundation.ml", true }, { "pmsoft.nl", false }, { "pmt-documenten.nl", true }, - { "pmtcookware.com", true }, + { "pmvmaconnerie.fr", true }, { "pn.com.au", true }, { "pn.id.lv", true }, { "pnakosoft.com", true }, @@ -96397,23 +110490,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pneu01.fr", true }, { "pneu74.fr", true }, { "pneuhaus-lemp.ch", true }, - { "pneumatikos.me", true }, + { "pneumania.fr", true }, { "pnfiles.tk", true }, { "png.am", true }, - { "png.builders", true }, + { "pnggrid.com", true }, { "pnimmobilier.ch", false }, + { "pnlarticles.com", true }, { "pnnl.gov", true }, { "pnoec.org.do", true }, - { "pnona.cz", true }, + { "pnr.aero", true }, { "pnr.sh", true }, { "pnsc.is", true }, { "pnut.io", false }, + { "pnvufs.com", true }, { "pnwchirocoverage.com", true }, + { "po-italy.ru", true }, { "po-krasivi.bg", true }, { "po-sha-go-vo.ru", true }, { "po.cash", true }, + { "po.ne", true }, { "po.net", true }, { "po0k.ie", true }, + { "pobierz.pl", true }, { "poc060.com", true }, { "poc080.com", true }, { "poc090.com", true }, @@ -96476,7 +110574,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poc68.com", true }, { "poc69.com", true }, { "poc699.com", true }, - { "poc7.com", true }, { "poc71.com", true }, { "poc718.com", true }, { "poc72.com", true }, @@ -96513,7 +110610,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poc899.com", true }, { "poc916.com", true }, { "poc918.com", true }, - { "poc965.com", true }, { "poc98.com", true }, { "poc99.com", true }, { "poc992.com", true }, @@ -96525,20 +110621,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pocahontascountyiowa.gov", true }, { "pocahontascountywv.com", true }, { "pocakking.tk", true }, + { "pocatello.gov", true }, { "pocatellonissanparts.com", true }, { "pochemuchka-books.com", true }, + { "pochikikaku.com", true }, + { "pochkiguru.ru", true }, { "pochoden-praha.cz", true }, { "pocitacezababku.cz", true }, { "pock-programming.net", true }, + { "pocket-lint.com", true }, { "pocketbookdot.tk", true }, { "pocketcraft.io", true }, { "pocketdeer.cc", true }, { "pocketfruity.com", true }, { "pocketgamingdirectory.com", true }, - { "pocketinsure.com", true }, { "pocketmags.com", true }, - { "pocketpasta.com", false }, + { "pocketpasta.com", true }, { "pockettraveling.tk", true }, + { "poco.se", true }, { "pocobelli.ch", false }, { "pococo.tk", true }, { "pocze.ch", true }, @@ -96557,6 +110657,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "podcast.style", true }, { "podcaster.org.il", true }, { "podcastmusic.com", true }, + { "podcastpulse.net", true }, + { "podcreative.ca", true }, { "podcrto.si", true }, { "podcrypters.ga", true }, { "podcryptest.ga", true }, @@ -96571,8 +110673,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "podivilov.cz", true }, { "podivilov.net", true }, { "podivilov.ru", true }, - { "podo-podo.com", true }, + { "podnikatel.cz", true }, { "podologie-diever.nl", true }, + { "podologie-tangstedt.de", true }, + { "podologyclinic.gr", true }, { "podolskaya.tk", true }, { "podparkers.ga", true }, { "podparkest.ga", true }, @@ -96580,14 +110684,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "podqueue.fm", true }, { "podroof.com", false }, { "podroof.com.au", false }, + { "podrozwmilczeniu.pl", true }, { "podshrink.de", true }, - { "podsvojostreho.net", true }, { "podvenec.tk", true }, { "podycust.co.uk", true }, + { "podyumguzellik.com", true }, { "poed.com.au", true }, { "poed.net.au", true }, - { "poehl-passeiertal.it", true }, + { "poeditor.com", true }, { "poehlerflorian.de", true }, + { "poeleapellets.org", true }, { "poemasonline.tk", true }, { "poemerx.com", true }, { "poemerx.net", true }, @@ -96606,22 +110712,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poetka.tk", true }, { "poetry.ge", true }, { "poetryinmusic.tk", true }, + { "poetsgate.com", true }, { "poetsjeboot.nl", true }, { "poezja.art", true }, { "poezja.com.pl", true }, { "poezjagala.pl", true }, - { "poffenhouse.ddns.net", false }, { "pogera.com", false }, { "pogljad-brest.tk", true }, { "pogodavolgograd.tk", true }, { "pogodok.tk", true }, { "pogomate.com", true }, - { "pogoswine.com", true }, { "pogotowie-komputerowe.tk", true }, { "pogotowiekomputeroweolsztyn.pl", true }, + { "pogrebeniq-sofia.com", true }, { "pogrebisky.net", true }, { "pohatta.com", true }, - { "pohica.com", true }, { "pohlmann.io", true }, { "pohoron.ru", true }, { "poi-radary.eu", true }, @@ -96637,13 +110742,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pointbarre.tk", true }, { "pointcab.vn", true }, { "pointclickcare.com", true }, + { "pointel.it", true }, { "pointermate.com", true }, { "pointforwardinc.net", true }, + { "pointfoundation.org", true }, { "pointhost.de", true }, { "pointiswunderland.de", true }, { "pointmaquininha.com", false }, + { "pointnull.com", true }, { "pointpalace.tk", true }, { "pointpleasantbeachnj.gov", true }, + { "pointpur.ch", true }, { "points-pote.com", true }, { "points4unitedway.com", true }, { "pointum.com", true }, @@ -96654,7 +110763,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pointzipest.ga", true }, { "poiru.net", true }, { "poisk-books.ml", true }, - { "poisk.kharkov.ua", true }, { "poiskdru.ga", true }, { "poiskkladov.tk", true }, { "poiskkristinity.ml", true }, @@ -96663,7 +110771,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poisonget-rid-ofac.tk", true }, { "poitiers-ttacc-86.eu.org", true }, { "pojer.me", true }, + { "pojoksosmed.com", true }, + { "pokagontownshipmi.gov", true }, { "pokalsocial.de", true }, + { "pokazywarka.com", true }, { "poke.blue", true }, { "pokedex.mobi", true }, { "pokedexer.com", true }, @@ -96678,7 +110789,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pokemondb.net", true }, { "pokemonforums.tk", true }, { "pokemongoclub.tk", true }, - { "pokemongosearch.com", true }, { "pokemonguide.tk", true }, { "pokemonlab.com", true }, { "pokemonsimulator.com", true }, @@ -96696,11 +110806,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pokeridioters.ga", true }, { "pokeridiotest.ga", true }, { "pokerigrach.com", true }, - { "pokerking.club", true }, { "pokernyheder.io", true }, { "pokerreligioners.ga", true }, { "pokerreligionest.ga", true }, { "pokerslab.com", true }, + { "pokerstarslearn.com", true }, { "pokerventure.ga", true }, { "pokerventureers.ga", true }, { "pokerventureest.ga", true }, @@ -96711,8 +110821,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poki.by", true }, { "poki.ch", true }, { "poki.cn", true }, + { "poki.co.id", true }, { "poki.co.il", true }, { "poki.com", true }, + { "poki.com.br", true }, { "poki.cz", true }, { "poki.de", true }, { "poki.dk", true }, @@ -96727,11 +110839,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poki.ro", true }, { "poki.se", true }, { "pokkareindeermeat.com", true }, + { "pokkt.com", true }, { "pokl.cz", true }, { "pokoiki.pl", true }, + { "pokon548.ink", true }, { "pokpok.tk", true }, { "pokrowcecardo.pl", true }, { "pokupkionline.tk", true }, + { "pokysoia.gov", true }, + { "pol-members.com", true }, { "polaire.org", true }, { "polak-import.tk", true }, { "polan.tk", true }, @@ -96742,9 +110858,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polarbear.army", true }, { "polarhome.tk", true }, { "polarisapp.xyz", true }, + { "polarisengineering.com", true }, + { "polarispool.com", false }, { "polaroidmag.com", true }, { "polaschin.ch", true }, { "polatas.com.tr", true }, + { "polatsemih.com", true }, { "polbox.fr", true }, { "poldrack.me", true }, { "pole.net.nz", true }, @@ -96756,11 +110875,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polerka.tk", true }, { "polestar.com.tw", true }, { "poletaem.tk", true }, + { "poleznie-soveti.info", true }, { "polezno-v-internete.ml", true }, { "police-schools.com", true }, + { "police4tn.gov", true }, + { "policeauctionsusa.com", true }, { "policemanapp.com", true }, { "policereferencecheck.com", true }, { "policesromandesrecrutement.ch", true }, + { "policyadvice.net", true }, + { "policyhub.gov.au", true }, { "policymakr.com", true }, { "policymine.com", true }, { "policyreporter.com", true }, @@ -96771,9 +110895,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polifisio.com.br", true }, { "poliground.com", true }, { "polimer39.ml", true }, - { "polimur.com", true }, { "polina-gagarina.gq", true }, - { "polinet.de", true }, { "polioptics.com", true }, { "polis.or.at", true }, { "polis.to", false }, @@ -96784,12 +110906,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polish-dictionary.com", true }, { "polish-flag.com", true }, { "polish-translations.com", true }, + { "polish-translator.com", true }, { "polish-translator.net", true }, { "polish-translators.net", true }, { "polish.directory", true }, { "polishdating.cf", true }, { "polishfabrics.com", true }, - { "polishforums.com", false }, + { "polishforums.com", true }, { "polishhockey.tk", true }, { "polishmarriage.org", true }, { "polishmodels.net", true }, @@ -96819,11 +110942,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "politicsnews.ga", true }, { "politicsnews.ml", true }, { "politicsnews.tk", true }, + { "politicsnigeria.com", true }, { "politiegent.be", true }, { "politifi.io", true }, { "politik-bei-uns.de", true }, + { "politik-kommunikation.de", true }, { "politisor.com", true }, - { "politisplasticsurgery.com", true }, { "politnews5.tk", true }, { "politoboz.com", true }, { "politsei.ee", false }, @@ -96833,7 +110957,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polkcountywi.gov", true }, { "polkelections.gov", true }, { "polkhealthforanewyou.net", false }, + { "polki.com", true }, { "polknc.gov", true }, + { "polkswcdiowa.gov", true }, + { "pollen.co", true }, { "pollendine.co.uk", true }, { "pollet-ghijs.be", true }, { "pollet-ghys.be", true }, @@ -96841,40 +110968,51 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pollev-embeds.com", true }, { "pollev.com", true }, { "polleverywhere.com", true }, - { "polliconstruction.com", true }, { "polliga.tk", true }, { "pollingplace.uk", true }, + { "pollnowhere.com", true }, + { "pollock.gallery", true }, { "pollock.tk", true }, { "pollpodium.nl", true }, - { "polly-tix.uk", true }, { "polly.spdns.org", true }, + { "pollypaps.ru", true }, + { "pollyundpaule.de", true }, { "polmods.com", true }, + { "polnischestoffe.eu", true }, { "polog.tk", true }, + { "poloil.gov", true }, { "polomack.eu", true }, { "poloniainfo.com", true }, { "polonialidzbark.tk", true }, + { "polorize.com", true }, + { "polourize.com", true }, { "polski-dentysta-birmingham.uk", true }, { "polskiemalzenstwo.org", true }, { "polskienewsy.tk", true }, { "polsonlawfirm.com", true }, + { "polspam.pl", true }, + { "poltavawave.com.ua", true }, { "poltax.com.pl", true }, { "poltreppen.de", true }, { "poltsamaa.edu.ee", true }, { "poltsamaalasteaed.edu.ee", true }, { "poly-daitron.jp", true }, { "poly-fast.com", false }, - { "polybius.io", true }, + { "poly.se", true }, + { "polyarny.com", true }, { "polycoise.com", true }, { "polycraftual.co.uk", true }, + { "polyfill.io", true }, { "polygamer.net", false }, + { "polyglot.com.gr", true }, { "polygondemos.com", true }, { "polygonthemes.com", true }, { "polygraphi.ae", true }, { "polymake.org", true }, { "polymathian.com", true }, { "polymax.co.uk", true }, - { "polymerclay.de", true }, { "polymtl.ca", false }, + { "polyna.eu", true }, { "polynesia.tech", true }, { "polynomapp.com", true }, { "polypane.rocks", true }, @@ -96884,17 +111022,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "polytarian.com", true }, { "polytechecosystem.vc", true }, { "polytekniskforening.dk", true }, + { "polzaune.de", true }, { "pomadgw.xyz", true }, { "pomba.pl", true }, { "pombalhome.duckdns.org", true }, + { "pombas.net", true }, { "pomdoc.com", true }, { "pomelo-paradigm.com", true }, { "pomerol-au-coeur.com", true }, { "pomfeed.fr", true }, { "pomilo.fr", true }, - { "pommedepain.fr", true }, { "pommetelecom.fr", true }, - { "pomocallegro.info", true }, { "pomockypredeti.sk", true }, { "pomocniczy.eu.org", true }, { "pomogi-mne.tk", true }, @@ -96906,32 +111044,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pomozmruczkom.pl", true }, { "pompefunebrilariviera.it", false }, { "pompeii.tickets", true }, - { "pompoco.info", true }, { "pomsinoz.com", true }, { "pomtom.co.nz", true }, + { "ponabana.com", true }, { "ponca-nsn.gov", true }, { "poncho-bedrucken.de", false }, + { "pondacademy.com", true }, + { "pondband.net", true }, { "pondof.fish", true }, { "pondsama.com", true }, - { "poneypourtous.com", false }, + { "poneiras.com", true }, { "ponga.se", true }, { "pongplace.com", true }, { "ponio.org", true }, { "ponio.xyz", true }, { "ponnau.com", true }, - { "ponnohaat.com", true }, { "ponpokorin.tk", true }, { "ponpon.tk", true }, { "ponselsoak.com", true }, + { "ponsoftware.com", true }, + { "ponsoftware.net", true }, { "ponsot.cloud", true }, { "ponte-camp.de", true }, - { "pontecalidade.es", true }, + { "ponteggi.it", true }, { "ponteggi.roma.it", true }, { "pontificia.tk", true }, { "pontiwerx.com.au", true }, { "pontodogame.com.br", true }, { "pontosdevista.pt", true }, { "pontosnews.gr", true }, + { "pontotoccountyms.gov", true }, + { "pontupagina.com", true }, { "ponxel.com", true }, { "pony-cl.co.jp", true }, { "pony.tf", true }, @@ -96942,24 +111085,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ponyfoo.com", true }, { "ponyhof-muensterland.de", true }, { "ponytail.fr", true }, + { "ponytailsdesigns.com", true }, { "poobert.tk", true }, { "poochpark.tk", true }, { "poodleassassin.com", true }, { "poodlefan.net", true }, - { "poojanews.com", true }, + { "pooi.me", true }, + { "poojanews.com", false }, + { "pookhaarden.nl", true }, { "pookl.com", true }, { "pool-selber-bauen.de", true }, { "pooletranslation.com.au", true }, { "poolheatingsolutionswa.com.au", true }, - { "poolinstallers.co.za", true }, { "poolmans.se", false }, - { "poolpowershop.de", true }, + { "pools.shop", true }, { "poolsafely.gov", true }, { "poolsafety.gov", true }, { "poolsonline.tk", true }, { "poolspa.es", true }, - { "pooltest.co.uk", true }, { "pooltools.net", true }, + { "poon.io", true }, + { "poopa.loan", true }, { "poopjournal.rocks", true }, { "poopr.ru", true }, { "poorclarepa.org", true }, @@ -96968,6 +111114,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poorvika.com", true }, { "pop-culture.tk", true }, { "pop.dk", true }, + { "pop.xxx", true }, { "pop3.jp", false }, { "pop3.support", true }, { "popadvertisementers.ga", true }, @@ -96975,13 +111122,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "popcarte.com", true }, { "popcat.ru", true }, { "popcorncult.ru", true }, - { "popcornpalacefundraising.com", true }, { "popcowboyest.ga", true }, { "popcultureshack.com", true }, { "popdog.click", true }, { "popecountyar.gov", true }, { "popecountymn.gov", true }, { "popeducation.ga", true }, + { "popeye.com", true }, { "popfitclothing.com", true }, { "popflow.cf", true }, { "popflow.gq", true }, @@ -97004,8 +111151,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poplavok77.tk", true }, { "poplite.xyz", true }, { "popmagz.com", true }, + { "popmatters.com", true }, + { "popmenu.com", true }, { "popmundoforum.tk", true }, { "popokin.tk", true }, + { "popolini.ch", true }, + { "popolini.com", true }, { "popotesetcocottes.fr", true }, { "popova.tk", true }, { "popoway.cloud", true }, @@ -97014,15 +111165,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "poppersareus.com", true }, { "poppersy.ml", true }, { "poppersy.tk", true }, + { "popphoto.nl", true }, { "poppingdance.tk", true }, - { "poppinsholidays.com", true }, { "poppinspayroll.com", true }, + { "popporn.com", true }, { "poppsylvie.com", true }, { "poppylala.com", true }, + { "popravilam.by", true }, + { "popravilam.com", true }, { "poprostuakwarystyka.pl", true }, + { "popsync.io", true }, { "poptattoo.tk", true }, { "poptavka.net", true }, { "popular-male-kitten-names.tk", true }, + { "popularbusinessplatform.com", true }, { "popularcar.com", true }, { "popularculturegaming.tk", true }, { "populardiets.tk", true }, @@ -97057,7 +111213,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "porady.zgora.pl", true }, { "poradywnetrzarskie.pl", true }, { "porazarul.by", true }, - { "porcelanosamallorca.com", true }, + { "porcepastora.com.ve", true }, { "porchdaydreamer.com", true }, { "porcore.com", true }, { "porelcorazon.com", true }, @@ -97069,6 +111225,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "porka.gq", true }, { "porkbun.com", true }, { "porkmart.ga", true }, + { "porknlaser.com", true }, { "porkpiesonline.co.nz", true }, { "porlote.com", true }, { "porm.club", true }, @@ -97082,6 +111239,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pornbay.org", true }, { "pornblog.org", true }, { "pornbs.com", true }, + { "porncomix69.com", true }, + { "porncomp.com", true }, { "porncompanions.com", true }, { "porndoe.com", true }, { "porndoepedia.com", true }, @@ -97092,8 +111251,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pornfreehub.com", true }, { "pornfreesites.com", true }, { "pornfriends.tk", true }, - { "pornguide.blog", true }, - { "pornhd.com", true }, + { "porngals4.com", true }, + { "porngameshub.com", true }, { "pornhib.xyz", true }, { "pornhub.com", true }, { "pornhubpremium.com", true }, @@ -97110,14 +111269,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "porno-geschichten.com", true }, { "porno-gif.ru", true }, { "porno-stars-video.ru", true }, - { "pornoacademie.com", true }, + { "pornobilder.pics", true }, { "pornoclips.net", true }, { "pornodvdkopen.nl", true }, - { "pornofilme.top", true }, { "pornogo.sex", false }, { "pornogo.tube", true }, { "pornohypnosis.tk", true }, - { "pornojimo.com", true }, { "pornokran.com", true }, { "pornomens.be", true }, { "pornomovies.mobi", true }, @@ -97125,27 +111282,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pornopark.nl", true }, { "pornopica.com", true }, { "pornopica.com.br", true }, + { "pornoplus.fr", true }, { "pornorapido.net", true }, - { "pornotexte.com", true }, { "pornovk.xxx", true }, + { "pornpics.com", true }, + { "pornpics.de", true }, { "pornport.org", true }, - { "pornrox.com", true }, - { "pornstarchicks.com", true }, + { "pornsticky.com", true }, { "pornstop.net", true }, { "pornsuper.net", true }, { "pornteddy.com", true }, { "porntop100.com", true }, { "porntube-vidios.ml", true }, + { "porntvclip.com", true }, { "pornultra.net", true }, + { "pornvideos-tour.com", true }, + { "pornvideos-tube.com", true }, + { "pornvideos.tv", true }, { "pornvidsfree.com", true }, { "pornxxnxx.com", true }, { "pornxxxvideos.xyz", true }, { "porny.xyz", true }, { "porodin.ml", true }, - { "porondam.lk", true }, { "pororoca.xyz", true }, + { "porplemontage.com", true }, { "porroserver.tk", true }, { "pors-sw.cz", true }, + { "porsche356registry.org", true }, { "porschen.fr", true }, { "porsolt.com", true }, { "port.gdynia.pl", false }, @@ -97158,9 +111321,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "portable-games.tk", true }, { "portablespeakers.tk", true }, { "portablespeakersfinder.com", true }, + { "portadam.com", true }, { "portafoliodenegocios.com.mx", true }, { "portagecounty-oh.gov", true }, + { "portagedessiouxmo.gov", true }, { "portagein.gov", true }, + { "portail-familles.net", true }, { "portail-partenariats.fr", true }, { "portail-rh.fr", true }, { "portal-books.ga", true }, @@ -97168,54 +111334,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "portal-news.tk", true }, { "portal-ru.tk", true }, { "portal-uang.com", true }, + { "portal.fo", true }, { "portal.tirol.gv.at", false }, { "portaladictos.tk", true }, + { "portalampgroep.nl", true }, { "portalcarriers.com", true }, { "portalchega.pt", true }, { "portaldamizade.com", true }, + { "portaldepalhoca.com.br", true }, { "portaldocredito.pt", true }, + { "portaldogremista.com.br", true }, { "portaleldense.tk", true }, { "portalexpressservices.com", true }, { "portalm.tk", true }, { "portalmundo.xyz", true }, { "portalpandalandia.tk", true }, - { "portalplatform.net", false }, - { "portalsmdc.com", true }, + { "portalpower.com.br", true }, + { "portalultautv.net", true }, { "portalutil.com.br", true }, { "portalz.xyz", true }, { "portamiinpista.it", false }, { "portanatura.it", true }, { "portatilea.com", true }, { "portativ-mobi.tk", true }, + { "portcanaveral.gov", true }, { "portchesterny.gov", true }, + { "portcityengines.com", true }, + { "portcomputingsolutions.com.au", true }, { "porte.roma.it", true }, { "portedwardswi.gov", true }, + { "porterbuddy.com", true }, + { "portercountyin.gov", true }, { "porterpeds.com", true }, - { "porterranchelectrical.com", true }, { "portes-imaginaire.org", true }, { "portesmagistral.com", true }, { "portfolio-anish.tk", true }, { "portfoliorlr.es", true }, - { "portfreezone.com", true }, { "porthos.com.ar", true }, { "porthys.pt", true }, { "portiapp.mx", true }, { "portiaweb.org.uk", true }, { "portierato.it", true }, + { "portingkit.com", true }, + { "portis.io", true }, + { "portiva.com", true }, + { "portmeirion.co.uk", true }, { "portoccd.org", false }, { "portofala.pt", true }, { "portofedmonds.gov", true }, { "portofephrata.gov", true }, { "portofnenana.gov", true }, + { "portofsubs.com", true }, { "portokalliali.tk", true }, { "portonfus.com", true }, { "portorchardwa.gov", true }, + { "portoseguro.med.br", true }, { "portosonline.pl", true }, { "portovelhoshopping.com.br", true }, + { "portraitcameos.com", true }, { "portsaidyman.tk", true }, { "portsdebalears.gob.es", true }, - { "portsmouthbouncycastles.co.uk", true }, - { "portsmoutheic.com", true }, + { "portservice.se", true }, { "portsmouthnhpd.gov", true }, { "portsmouthohpd.gov", true }, { "portsmouthri.gov", true }, @@ -97223,6 +111402,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "portsona.com", true }, { "portugal-a-programar.org", true }, { "portugal-a-programar.pt", true }, + { "portugal-car-hire.net", true }, { "portugalbycar.com", true }, { "portugalivre.tk", true }, { "portugalsko.net", true }, @@ -97236,10 +111416,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "porwal.pl", true }, { "porybox.com", true }, { "porzellantreff.de", true }, + { "posa.moe", true }, + { "posadalasalbarcas.es", true }, { "posaunenchor-senden.de", true }, - { "posbank.co.uk", true }, { "posbich.net", true }, - { "posbis.de", true }, { "poseidon-giesing.de", true }, { "poseidonwaterproofing.info", true }, { "poseidonwaterproofing.net", true }, @@ -97255,24 +111435,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "posicionament.tk", true }, { "posied.ga", true }, { "posijson.stream", true }, + { "positanoboat.com", true }, { "positionus.io", true }, { "positivastudios.tk", true }, { "positive-thinking-for-you.com", true }, { "positive.com.cy", true }, { "positive.photography", true }, - { "positivegeek.com", true }, + { "positivecoach.org", true }, { "positivenames.net", true }, { "positiveone.tk", true }, { "positiveoutlook.cn", true }, { "positiverbeitrag.net", true }, { "positiverbeitrag.org", true }, - { "positiveschool.tk", true }, { "positivethinkingmind.com", true }, - { "positivityeffect.com", true }, + { "positivityoflife.com", true }, { "positivos.tk", true }, { "positronicmoron.tk", true }, + { "poslednigenerace.cz", true }, { "posoco.in", true }, - { "posowetuite.ru", true }, { "pospisilik.eu", true }, { "pospisilikovi.cz", true }, { "post-anon.tk", true }, @@ -97282,17 +111462,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "post-office.tk", true }, { "post-victoria.com", true }, { "post.com.ar", true }, + { "post.how", true }, + { "post.icu", true }, { "post.io", true }, - { "post.monster", true }, + { "post.kim", true }, + { "post.lol", true }, { "post.tf", true }, { "post4me.at", true }, - { "postacarreta.com", true }, { "postacyprus.com", true }, { "postal.dk", true }, { "postal3.es", true }, + { "postaltreasures.com", true }, { "postandfly.com", true }, { "postat.com", true }, { "postback.io", false }, + { "postbanken.no", true }, { "postblue.info", true }, { "postbox.life", true }, { "postcardpayment.com", true }, @@ -97308,37 +111492,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "postechbamboo.tk", true }, { "posteo.de", true }, { "posteo.net", true }, - { "posterlounge.at", true }, - { "posterlounge.be", true }, - { "posterlounge.ch", true }, - { "posterlounge.co.uk", true }, - { "posterlounge.com", true }, - { "posterlounge.de", true }, - { "posterlounge.dk", true }, - { "posterlounge.es", true }, - { "posterlounge.fi", true }, - { "posterlounge.fr", true }, - { "posterlounge.ie", true }, - { "posterlounge.it", true }, - { "posterlounge.nl", true }, - { "posterlounge.no", true }, - { "posterlounge.pl", true }, - { "posterlounge.pt", true }, - { "posterlounge.se", true }, { "postermywall.com", true }, { "postern.net", true }, { "postern.nl", true }, { "postern.org", true }, { "postern.uk", true }, { "posters.win", true }, + { "postfactum.info", true }, { "postfalls-naturopathic.com", true }, { "postfalls.gov", true }, + { "postfallspolice.gov", true }, { "postfinance.ch", true }, + { "postgraph.xyz", true }, { "postimages.org", true }, { "postimg.cc", true }, + { "postlakeswi.gov", true }, { "postlifepreps.com", true }, { "postlogistic.tk", true }, + { "postman.co", true }, { "postman.ga", true }, + { "postmaniac.com", true }, { "postmarka.tk", true }, { "postmaster.boats", true }, { "postmatescode.com", true }, @@ -97347,10 +111520,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "postmoderns.info", true }, { "postmusicologia.tk", true }, { "postn.eu", true }, + { "postnet.club", true }, { "postnext.com", true }, { "postolia.cf", true }, { "postoyanstvo.cf", true }, { "postpot.co.kr", true }, + { "postscnn.com", true }, + { "poststar.com", true }, { "postsubmeta.net", true }, { "posttigo.com", true }, { "posturografia.info", true }, @@ -97369,12 +111545,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "posukovskaschola.cz", true }, { "posutochno.ml", true }, { "posutochno.tk", true }, - { "posvq.de", true }, + { "pot-au-feu.info", true }, + { "potadvisor.com", true }, { "potatiz.com", true }, { "potato.im", true }, { "potatochip.tk", true }, { "potatodiet.ca", true }, - { "potatoinspirations.com", true }, { "potatolighting.com", true }, { "potatopro.com", true }, { "potatosouprecipe.ml", true }, @@ -97384,16 +111560,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "potature.org", true }, { "potature.rimini.it", true }, { "potature.roma.it", true }, - { "potcha.net", true }, + { "potbelly.com", true }, { "potemkin.tk", true }, + { "potencial-school.ru", true }, { "potentialcalm.co.uk", true }, { "poterepersonale.it", true }, - { "poterscy.pl", true }, { "pothe.com", true }, { "pothe.de", true }, - { "pother.ca", true }, { "pothuarivu.tk", true }, - { "potion.ai", true }, + { "potion.ai", false }, { "potionlabs.de", true }, { "potlytics.com", true }, { "potolok-brest.tk", true }, @@ -97412,13 +111587,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pottawatomiecountyok.gov", true }, { "pottcountyks.gov", true }, { "potteranderson.com", true }, - { "potterish.com", false }, + { "pottercountytexasvotes.gov", true }, + { "potterish.com", true }, { "potterperfect.tk", true }, { "pottershouse.tk", true }, { "potterybroker.ga", true }, + { "pottkinder.de", true }, { "pottshome.co.uk", true }, { "pottsvillepa.gov", true }, - { "potty.party", true }, { "potvorka.tk", true }, { "potwin.tk", true }, { "potworowski.de", true }, @@ -97426,11 +111602,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pouchulu.tk", true }, { "poudlard.fr", true }, { "pouets.ovh", true }, - { "poulade-design.com", true }, + { "poultryfeedformulation.com", true }, { "poun.tk", true }, { "poundgatepark.co.uk", true }, + { "poupaeganha.pt", true }, { "poupardinheiro.com.br", true }, { "poupee.me", true }, + { "pourali.com", true }, { "poured-floors.tk", true }, { "pourout.org", false }, { "pourtoi.se", true }, @@ -97441,10 +111619,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "povareshka.tk", true }, { "povmacrostabiliteit.nl", true }, { "povomo.online", true }, + { "povzetki-knjig.si", true }, { "pow.jp", true }, { "powch-dev.com", true }, { "powch-dev2.com", true }, - { "powch.com", true }, { "powdercoatatl.com", true }, { "powdercoatingatl.com", true }, { "powderedcloud.cf", true }, @@ -97452,15 +111630,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powderkeg.com", true }, { "powderspraymachine.com", true }, { "powelljones.co.uk", true }, + { "power-bi-connector.be", true }, + { "power-bi-connector.eu", true }, + { "power-bi-connector.nl", true }, { "power-coonies.de", true }, { "power-flowengineer.com", true }, { "power-magnetic.ml", true }, { "power-of-interest.com", true }, + { "power-plugins.com", true }, + { "power-recovery.com", true }, { "power-tools24.com", true }, + { "power100.co.uk", true }, { "power2prevent.gov", true }, - { "poweramazon.tk", true }, { "poweranalitica.com", true }, - { "powerapp.nl", true }, { "powerb.ch", true }, { "powerbalance.tk", true }, { "powerball.cf", true }, @@ -97470,36 +111652,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powercloud.technology", true }, { "powercod.tk", true }, { "powercomputers.nl", true }, + { "powercounty.gov", true }, + { "powercv.ro", true }, { "poweredbyiris.nl", true }, { "powerentertainment.tv", true }, { "powerfiler.com", true }, { "powerforpeople.tk", true }, { "powerfortunes.com", true }, + { "powerfulcom.net", true }, { "powergridess.com", false }, { "powergroup.tk", true }, + { "powerhouse.pro", true }, { "powerhousegym.co", true }, { "powerinboxperformance.com", true }, { "powerlifting.tk", true }, + { "powerling.com", true }, + { "powerlp.com", true }, { "powermeter.at", true }, - { "powernw.com", true }, { "powerofsocialtech.com", true }, - { "powerpadel.com", true }, { "powerpc.pt", true }, - { "powerplanter.com", true }, + { "powerpilot.co.za", true }, + { "powerplan.com", true }, { "powerplantmall.com", true }, { "powerplatform.istanbul", true }, { "powerplay.com", true }, + { "powerplay.xyz", true }, { "powerplayer.tk", true }, - { "powerpointschool.com", true }, { "powersaleskc.com", true }, { "powerscif.com", true }, { "powerscourt.tk", true }, + { "powerseo.co.uk", true }, { "powerserg.ca", true }, { "powerserg.io", true }, { "powerserg.net", true }, { "powerserg.shop", true }, { "powerserg.us", true }, - { "powersergca.com", true }, { "powersergcloud.com", true }, { "powersergconnect.com", true }, { "powersergconsulting.com", true }, @@ -97513,7 +111700,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powersergmysteryshopping.com", true }, { "powersergopioidoverdoseinterventiontrust.com", true }, { "powersergpiv.com", true }, - { "powersergpki.com", true }, + { "powersergsecure.com", true }, { "powersergsis.com", true }, { "powersergsystems.com", true }, { "powersergsystems.net", true }, @@ -97529,11 +111716,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powershelleando.com.ar", true }, { "powershellmagic.com", true }, { "powersolusa.com", true }, - { "powerspeaking.com", true }, { "powersport.lt", true }, { "powersubmitter.tk", true }, { "powersurgedatasystems.com", true }, + { "powerswitch.org.nz", true }, { "powertecno.ml", true }, + { "powertofly.com", true }, { "powertoolsrater.net", true }, { "powertop.com", true }, { "powertrike.tk", true }, @@ -97542,6 +111730,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "powerwarranties.com", true }, { "powerwellness-korecki.de", true }, { "powerwheels.tk", true }, + { "powerwithpeople.com", true }, { "powerzonewrestling.tk", true }, { "poylabo.com", true }, { "poynter.net", true }, @@ -97556,11 +111745,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pozitiv.gq", true }, { "pozitone.com", true }, { "poziworld.com", true }, - { "poznaj-siebie.pl", true }, - { "poznajrynek.pl", true }, - { "poznannoe-nepoznannoe.ru", true }, { "poznavatelno.ml", true }, + { "pozycznamiot.pl", true }, { "pozzitiv.ro", true }, + { "pp.es", true }, { "pp3345.net", true }, { "pp5197.co", true }, { "pp6729.co", true }, @@ -97573,34 +111761,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ppam.de", true }, { "ppapogey.com", true }, { "ppapogey.ru", true }, + { "ppaya.com", true }, { "ppbi.com", true }, - { "ppcrestaurants.com", true }, + { "ppcgeeks.com", true }, + { "ppcsesco.com", true }, + { "ppf.co.uk", true }, { "ppg.report", true }, { "ppgod.us", true }, + { "ppi.id", true }, { "ppipe.net", true }, { "ppirs.gov", true }, { "ppissis.com.cy", true }, + { "ppktgti.top", true }, + { "ppld.org", true }, + { "pplog.info", true }, { "pplsoft.nl", true }, { "pplsvc.com", true }, - { "ppmathis.ch", true }, - { "ppmathis.com", true }, + { "ppmlocal.com", true }, { "ppmoon.com", true }, { "ppms.gov", true }, { "ppoou.co.uk", true }, { "ppoozl.com", true }, { "pppo.gov", true }, + { "ppppp.click", true }, + { "ppsltd.ca", true }, { "ppssh.org", true }, { "pptavmdata.org", true }, - { "ppusl.ro", true }, + { "ppter8.com", true }, { "ppweb.pro", true }, - { "ppy.la", true }, { "ppy.sh", true }, { "pqd.ru", true }, + { "pqforce.com", true }, { "pqgruber.com", true }, { "pqscript.com", true }, { "pr-news.spb.ru", true }, { "pr-project.tk", true }, - { "pr-release.top", true }, { "pr.search.yahoo.com", false }, { "pr.tn", true }, { "pr1sm.com", true }, @@ -97612,11 +111807,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prabhasakshi.com", true }, { "prabirghosh.tk", true }, { "prac.to", true }, - { "pracevjihlave.cz", true }, { "prachiiimohite.tk", true }, + { "pracovita.pl", true }, { "pracownia-kasi.pl", true }, { "pracowniamebli.mazury.pl", true }, - { "practicalbytes.de", true }, { "practicalhomes.com.au", true }, { "practicepanther.com", true }, { "practisforms.com", true }, @@ -97626,14 +111820,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "practodev.com", true }, { "pracusalev.tk", true }, { "pradeek.tk", true }, + { "pradeepagrawal.com", true }, { "pradersystems.ch", true }, { "pradmin.ru", true }, { "prado.it", true }, { "pradohalcones.com", true }, + { "pradyumnashome.com", true }, { "praemoveo.net", true }, { "praeparation-keppner.de", true }, { "praerien-racing.com", true }, { "praetzlich-hamburg.de", true }, + { "praew.com", true }, + { "pragata.id", true }, { "pragatiparasguesthouse.co.in", true }, { "prageeth-niranjan.tk", true }, { "pragma-messenger.ch", true }, @@ -97648,8 +111846,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "praha-9.eu", true }, { "praha-kominictvi.cz", true }, { "praha.tk", true }, + { "praia.studio", true }, { "praiagrande.tk", true }, + { "prairienursery.com", true }, { "prairievilletwp-mi.gov", true }, + { "praisehim.club", true }, { "praiss.net", true }, { "prajwal-koirala.com", true }, { "prakhar.uk", true }, @@ -97658,16 +111859,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "praksite.fr", true }, { "praktijkbeoordelen.nl", true }, { "praktijkdevecht.nl", true }, - { "praktijkinfano.be", true }, { "praktijkpassepartout.nl", true }, { "praktijktian.be", true }, { "praktiker.hu", true }, { "praktikum.tk", true }, { "praladofuturo.blog", true }, { "praleria.com", true }, + { "pramuwaskito.org", true }, + { "prana-coachings.ch", true }, { "prana-me.com", true }, { "pranabesh.com", true }, { "pranafilms.tk", true }, + { "pranavida.cl", false }, { "prancor.ru", true }, { "pranita-schals.de", true }, { "pranita.cz", true }, @@ -97675,6 +111878,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prankawards.ga", true }, { "pranksearch.ml", true }, { "prankstercompany.com", true }, + { "pranktimes.com", true }, { "prashantcafe.tk", true }, { "prasinoscomputers.ml", true }, { "prasos.fi", true }, @@ -97682,23 +111886,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prateep.io", true }, { "pratelloshop.tk", true }, { "pratemarkets.com", true }, + { "praterraines.co.uk", true }, + { "prathambooks.org", true }, { "praticienmedecinechinoise.be", true }, { "pratiquefitness.com.br", true }, { "prato-allo-stelvio.org", true }, { "pratopronto.org", true }, { "pratorotoli.it", true }, { "pratosirunin.ga", true }, + { "prauxilium.com", true }, { "pravac.de", true }, { "pravagolosa.cf", true }, { "pravagolosa.ga", true }, { "pravagolosa.gq", true }, + { "pravda-tv.com", true }, { "praveenawstest1.tk", true }, { "praveenravichandran.xyz", true }, + { "pravex.com.ua", true }, { "pravlife.ru", true }, { "pravnisistem.rs", true }, { "pravo-brest-belarus.tk", true }, { "pravo911.tk", true }, - { "pravokonsul.com.ua", true }, { "pravoslavie.tk", true }, { "pravoslavnayarus.tk", true }, { "pravosudie.tk", true }, @@ -97707,13 +111915,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "praxis-dingeldey.de", true }, { "praxis-dr-bandulik.de", true }, { "praxis-familienglueck.de", true }, - { "praxis-kobiella.de", true }, + { "praxis-fickenscher.de", true }, + { "praxis-kjpt.de", true }, { "praxis-liebner.de", true }, { "praxis-oranienburg.de", true }, - { "praxis-sorg-sam.ch", true }, + { "praxis-rufer.ch", true }, + { "praxis-sorg-sam.ch", false }, { "praxis-waedicity.ch", true }, + { "praxisamziegetsberg.de", true }, { "praxisbiel.de", true }, { "praxisfilms.org", true }, + { "praxisgroup.services", true }, { "praxistipp24.com", true }, { "prayag.tk", true }, { "prayerrequest.com", true }, @@ -97725,9 +111937,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prc.gov", true }, { "prcarrier.tk", true }, { "prcsurvey.com", true }, + { "prd-use-device-api.azurewebsites.net", true }, { "prdashboard.tk", true }, + { "prdctz.tips", true }, { "pre-commit.ci", true }, + { "pre-commit.com", true }, { "pre-renewal.com", true }, + { "preapps.com", true }, { "precambridge.tk", true }, { "precedecaritas.com.br", true }, { "precedencemedia.com", true }, @@ -97735,17 +111951,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "precept.uk.com", true }, { "preci0.com", true }, { "preciadictos.tk", true }, + { "precincttv.com", true }, { "preciofishbone.com", true }, { "preciofishbone.de", true }, { "preciofishbone.dk", true }, { "preciofishbone.se", true }, { "preciofishbone.vn", true }, + { "preciomedicamentos.es", true }, { "preciosmejores.com", true }, { "preciousdad.com", true }, { "preciouspebble.co.uk", true }, { "preciscx.com", true }, - { "preciseassemblies.com", true }, - { "precision-tops.com", true }, + { "precisebusiness.com", true }, + { "precisefuture.com", true }, { "precision.st", true }, { "precisionclan.com", true }, { "precisioncoolingco.com", true }, @@ -97758,34 +111976,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "precisionmachineservice.com", true }, { "precisionpdr.tech", true }, { "precisionsportsonline.com", true }, - { "precisionstocks.com", true }, + { "precisionstocks.com", false }, { "precisiontechcorp.com", true }, { "precisionvaccinations.com", true }, { "precutppf.store", true }, - { "predalco.be", true }, + { "predator-league.com", true }, { "predatoria.tk", true }, { "predatorworld.tk", true }, { "predckazanie.ru", true }, { "predication.ch", true }, + { "predictz.com", true }, { "predilife.com", true }, { "predkosci.pl", true }, { "predmetnyj-fotograf.by", true }, { "prednisolone1.gq", true }, + { "prednisoneorder.com", true }, { "predoiu.ro", true }, { "predskazanie.cf", true }, { "predskazanie.ml", true }, { "predskazanie.tk", true }, { "predstavitelstvo-v-sude.tk", true }, { "preejaculation.ga", true }, + { "preescolarsteps.com", true }, { "prefabricadosdelcaribe.com", true }, { "prefabrik-ev.com", true }, + { "prefect.cloud", true }, + { "prefect.io", false }, + { "prefereal.com", true }, + { "prefereal.net", true }, + { "prefereal.org", true }, { "preference.ga", true }, + { "preferred411.com", true }, { "preferredathlete.com", true }, { "preferredreverse.com", true }, + { "preferredservice.ca", true }, { "prefix.eu", true }, + { "preflighthomeinspections.com", true }, { "prefontaine.name", true }, { "pregen.tk", true }, { "pregnancytips.tk", true }, + { "pregnantorcrazy.com", true }, { "preguntasdeciudadania.com", true }, { "preguntasmasfrecuentes.com", true }, { "pregunteleakaren.gov", true }, @@ -97794,12 +112024,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "preis-alarm.org", true }, { "preisser-it.de", true }, { "preisser.it", true }, - { "preissler.co.uk", false }, { "prek.se", true }, - { "prekladyher.eu", true }, { "prekladysanca.cz", true }, { "prelesti.tk", true }, - { "prelist.org", true }, { "preloaded-hsts.badssl.com", true }, { "prelogica.com.br", true }, { "preludes.org", true }, @@ -97812,49 +112039,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prelved.pl", true }, { "prelved.se", true }, { "prematureacceleration.club", true }, + { "premazon.com", true }, { "preme.name", true }, { "premiachef.com", true }, + { "premier-dream.co", true }, + { "premier-hub.com", true }, { "premier-podiatry.com", true }, { "premieraviation.com", true }, { "premierbouncycastles.co.uk", true }, - { "premierchef.co.th", true }, - { "premiercreditmasters.com", true }, { "premierdisco.co.uk", true }, + { "premiereco.com.sg", true }, { "premieresloges.ca", false }, { "premierevents.ie", true }, + { "premierflmagazine.com", true }, { "premierheart.com", true }, { "premierleague.gq", true }, - { "premiermortgageservices.com", true }, - { "premierokchomebuyers.com", true }, + { "premiermaldives.com", true }, + { "premierpedsny.com", true }, + { "premierpoolsandspas.com", true }, { "premierpups.com", true }, { "premierseeds.co.nz", false }, { "premiership-predictors.co.uk", true }, { "premiersimgl.com", true }, { "premioambiente.it", true }, { "premiovapozicovna.sk", true }, - { "premiovicentejorgesilva.pt", true }, + { "premiovicentejorgesilva.pt", false }, { "premised.land", true }, { "premium-computer.fr", true }, { "premium-job.ru", true }, - { "premium-shop.nl", true }, { "premiumcbd.cz", true }, { "premiumcredit.am", true }, + { "premiumcs.ru", true }, { "premiumdesign.hr", true }, - { "premiumimmoneuf.com", true }, + { "premiumkeystore.com", true }, { "premiumlegalsupport.ga", true }, { "premiumpaymentmanager.com", true }, { "premiumpeaches.com", true }, { "premiumpictureframing.com", true }, { "premiumplusiptv.com", true }, + { "premiumshop24.de", true }, { "premiumsmile.ru", true }, { "premiumturkey.ml", true }, + { "premiumusedautoparts.com", true }, { "premiumweb.co.id", true }, { "premiumwebdesign.it", true }, { "premkumar.net", true }, { "premsarswat.me", true }, + { "premstarinc.com", true }, { "premtech.nl", true }, + { "prenatal.com", true }, + { "prenatal.es", true }, + { "prendashop.es", true }, { "prensaalterna.com", true }, { "prensahispana.ga", true }, + { "prensarural.org", true }, { "prepa-benjam.fr", true }, { "prepa-code.com", true }, { "prepagosyescortforyou.com", true }, @@ -97868,20 +112106,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "preparetheword.com", true }, { "prepedia.org", true }, { "prepfba.com", true }, - { "preppertactics.com", true }, + { "prepr.io", true }, + { "prepress.ru", true }, { "preprodfan.gov", true }, { "prepscouts.tk", true }, { "prepsiedy.cf", true }, - { "presail.com", true }, + { "prepz.es", false }, { "presbee.com", true }, { "presbvm.org", true }, { "presbyterian-colleges.com", true }, { "preschoole.gq", true }, + { "preschoolteacher.org", true }, { "presdesdunes.com", true }, + { "presence-group.com", true }, { "presence-relation.fr", false }, { "presenciainternet.com", true }, { "present-m.com", true }, - { "presentacionesweb.com", true }, { "presentaline.ch", true }, { "presentationmedia.com", true }, { "presentationsteknik.org", true }, @@ -97892,6 +112132,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "preserveourhillcountry.org", true }, { "preserverollinspass.org", true }, { "preserving.tk", true }, + { "presgrp.com", true }, + { "presgrp.net", true }, { "president.bg", true }, { "president.ee", false }, { "presidentdirectory.ga", true }, @@ -97907,21 +112149,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "press-edge.tk", true }, { "press-presse.ca", true }, { "press-wall24.ru", true }, + { "press.lv", true }, { "pressakey.com", true }, { "pressakey.de", true }, - { "pressbr.com.br", true }, { "presscenter.jp", true }, { "presscommunity.tk", true }, { "presscuozzo.com", true }, { "presseagrume.net", true }, + { "pressed.com", true }, { "pressemeddelelse.dk", true }, + { "pressento.com", true }, { "pressertech.com", true }, - { "presses.ch", false }, { "pressfreedomtracker.us", true }, + { "pressidium.com", true }, { "pressimize.com", true }, + { "presslabs.com", true }, { "pressnet.tk", true }, { "pressnetwork.tk", true }, { "pressnewscafe.gq", true }, + { "pressofatlanticcity.com", true }, { "pressography.org", true }, { "pressreleasecentral.tk", true }, { "pressreleasepedia.tk", true }, @@ -97931,6 +112177,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pressup.it", true }, { "pressureradio.com", true }, { "pressurewashers.ml", true }, + { "pressurewashersandiego.com", true }, + { "pressurewashingchicago.com", true }, + { "presta-div-airs.fr", true }, + { "prestaandsons.com.au", true }, { "prestaclip.com", true }, { "prestaservicesgroup.com", true }, { "prestatest.tk", true }, @@ -97938,31 +112188,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prestatynflowershow.co.uk", true }, { "prestige-car-location.ch", false }, { "prestigebouncycastles.co.uk", true }, + { "prestigecarkeys.com", true }, { "prestigeeventshire.co.uk", true }, + { "prestigehealth.services", true }, { "prestigehealthservices.au", true }, { "prestigehealthservices.com.au", true }, - { "prestigemad.com", true }, - { "prestigemix.com", true }, - { "prestigeproviders.com", true }, { "prestigerepairs.com.au", true }, { "prestigesigns.net", true }, { "prestigesoundandlight.co.uk", true }, + { "prestigestaffingsolutions.org.au", true }, { "prestigeworldwidepr.com", true }, - { "prestigiouskitchen.com", true }, + { "prestigia.com", true }, { "prestonadamscountywi.gov", true }, { "prestonapp.com", true }, { "prestonbrant.com", true }, + { "prestopermits.com", true }, { "prestopizzas63.fr", true }, { "prestudenta.sk", true }, { "prestupniki.tk", true }, { "pretabelamodas.com.br", true }, { "pretalx.com", true }, - { "prethost.com", true }, { "pretix.eu", true }, + { "pretome.info", true }, { "pretor-sa.com", true }, + { "pretrialservices.gov", true }, { "prettier.fun", true }, { "pretty-liars.tk", true }, - { "pretty.hu", true }, + { "pretty-smile.com.tw", true }, + { "prettybrowndancers.com", true }, { "prettycities.ga", true }, { "prettycloud.net", true }, { "prettycloud.org", true }, @@ -97970,50 +112223,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prettygirlcheats.com", true }, { "prettykeira.tk", true }, { "prettynode.com", false }, + { "prettyporn.com", true }, + { "prettysimplemom.com", true }, + { "prettyskin.com.tw", true }, { "prettytunesapp.com", true }, { "pretzelhands.com", false }, { "pretzelx.com", true }, { "preums.co", true }, + { "preussner-grafik-design.de", true }, { "prevalent.net", true }, - { "prevenir.ch", false }, - { "preventacapo.es", true }, { "preventfalls.com", true }, { "preventshare.com", true }, { "preview-it-now.com", true }, { "preview.ninja", true }, + { "previewfreemovies.com", true }, { "previewninja.com", true }, { "previewtoday.it", true }, { "previh.eu", true }, { "previous.one", true }, { "previousmagazine.com", true }, { "previsiemens.com.br", false }, - { "previsora.gov.co", false }, { "previstart.com", true }, { "previstart.fr", true }, { "prevodkazet.cz", true }, { "prexxorvita.com", true }, + { "prezentmarzen.com", true }, { "preziti.eu", true }, { "prfanfiction.tk", true }, + { "prg.rs", true }, { "prgrmmr.nl", true }, { "pri.email", true }, + { "priano.com", false }, + { "price-spider.com", true }, { "price-tracker.duckdns.org", true }, + { "priceactionhelp.com", true }, + { "priceblink.com", true }, + { "pricefx.com", true }, + { "pricefx.eu", true }, { "pricegg.com", true }, { "pricegg.ru", true }, { "priceholic.com", true }, { "priceless-jewelry.com", true }, { "pricelesspics.tk", true }, - { "pricelikeit.com", true }, { "pricelistforbxmodules.ga", true }, { "pricelooper.com", false }, - { "priceremoval.net", true }, + { "priceofbusiness.com", true }, + { "pricepropharmacy.com", true }, { "pricesdoors.com", true }, + { "pricesmax.com.mx", true }, { "pricesniffer.co", true }, { "pricetoday.com.pk", true }, - { "pricetum.com", true }, { "pricevillepdal.gov", true }, { "pricevortex.com", true }, + { "pricing-fox.cz", true }, + { "pricing-fox.sk", true }, { "pride-enterprises.org", true }, - { "pridecorpuschristi.com", true }, + { "pridecounseling.com", true }, + { "pridecraft.gay", true }, { "prideindomination.com", true }, { "pridnestrovye.gq", true }, { "pridurok.tk", true }, @@ -98022,55 +112288,81 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prifo.se", true }, { "prij.fr", true }, { "prijsvergelijken.ml", true }, - { "prijzen-vergelijken.nu", true }, + { "prikaznoparty.com", true }, { "prikeshsavla.com", true }, { "prikolkz.tk", true }, + { "prillwitzgroup.com", true }, { "prima-assol.com", true }, + { "prima-badezimmermoebel.de", true }, + { "prima-digitalkameras.de", true }, + { "prima-fernseher.de", true }, { "prima-informatique.com", true }, - { "primaconsulting.net", true }, + { "prima-mikrofone.de", true }, + { "prima-monitore.de", true }, + { "prima-pcs.de", true }, + { "prima-smartphones.de", true }, + { "prima-tablets.de", true }, + { "prima-webcams.de", true }, { "primadirectory.tk", true }, - { "primaflor.de", true }, { "primaflorafloristaccrington.co.uk", true }, { "primalinea.pro", true }, { "primalshop.dk", true }, { "primalsurvivor.net", true }, { "primananda.com", true }, { "primanota.ch", false }, - { "primark.guru", true }, + { "primapak.bg", true }, + { "primariu.com", true }, + { "primary.health", true }, + { "primarycareconnect.com.au", true }, { "primarysector.space", true }, + { "primasmartwatches.de", true }, { "primates.com", true }, + { "primaudialrecords.com", true }, { "primaveradesign.com.br", true }, { "primbit.ru", true }, { "prime-host.ml", true }, { "prime42.net", true }, - { "primeauconsultinggroup.com", true }, + { "primecapsslim.com.br", true }, + { "primecreative.com.br", true }, { "primecursos.com.br", true }, + { "primed.io", true }, + { "primedesigns.com.au", true }, { "primeequityproperties.com", true }, + { "primeexecutiveoffices.com", true }, + { "primefinance.co.nz", true }, { "primefinancial.com.au", true }, + { "primegeradores.com.br", true }, { "primegiftindia.com", true }, - { "primehomebuildersinc.com", true }, { "primekinoshita.com", true }, + { "primelendingdallasfw.com", true }, { "primelogistics.cf", false }, - { "primemotive.com", true }, + { "primemotive.com", false }, { "primemotive.com.au", true }, { "primeone.global", true }, { "primeops.co", true }, { "primeprime.cf", true }, + { "primeratx.gov", true }, { "primerdeal.com", true }, { "primersbc.com.br", true }, { "primesense.com.br", true }, { "primesensecosmeticos.com.br", true }, { "primetechpa.com", true }, - { "primetimepokerparties.com", true }, + { "primetics.co.uk", false }, + { "primetouchimprovements.com", true }, { "primeview.com", true }, { "primglaz.ru", true }, + { "primisbank.com", true }, { "primitiv.tk", true }, - { "primitivehuman.com", true }, + { "primitivesbykathy.com", true }, + { "primo.be", true }, { "primordialsnooze.com", true }, { "primorus.lt", true }, { "primos-tech.com", true }, + { "primowatercorp.com", true }, + { "primrose-2.com", true }, + { "primrosehillvets.ie", true }, { "primrosenyagwaya.online", true }, - { "primuspartners.in", true }, + { "primsports.ru", true }, { "primyris.fr", true }, { "princebazawule.com", true }, { "princedavidlodge.org.uk", true }, @@ -98079,18 +112371,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "princemathew.tk", true }, { "princemolak.ga", true }, { "princes-st.org.nz", true }, - { "princess-vip-escort.com", true }, { "princess.software", true }, { "princessbackpack.de", true }, - { "princesscarly.com", false }, { "princessefoulard.com", true }, { "princesspawg.tk", true }, + { "princessyachts.com", true }, + { "princetonmn.gov", true }, { "princetonnassaupediatrics.com", true }, { "princetonradiationoncology.com", true }, { "princevikal.cf", true }, + { "princewen.cn", true }, { "princewen.com", true }, + { "princewen.org", true }, { "princez.uk", true }, { "princezna.club", true }, + { "principal.com.my", true }, + { "principalam.com", true }, + { "principalcomputers.com.au", true }, + { "principalhotelcolumbia.com", true }, { "principalsexam.com", true }, { "principalship.net", true }, { "principalstest.ph", false }, @@ -98101,36 +112399,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "principia-online.de", true }, { "princovi.cz", true }, { "prinesec.com", true }, + { "prineville.gov", true }, { "prinice.org", true }, { "print-street.tk", true }, { "print.dk", true }, + { "printa.nu", true }, + { "printable-map-az.com", true }, + { "printablemapaz.com", true }, + { "printablemapforyou.com", true }, + { "printablerebateform.net", true }, + { "printableschedule.net", true }, + { "printandgo.fr", true }, { "printbase.cz", true }, { "printbigjournal.tk", true }, - { "printedmailbags.co.uk", true }, + { "printdrivers.org", true }, { "printeknologies.com", true }, - { "printerdrivers.com", true }, { "printerem.hu", true }, + { "printerinks.com", true }, { "printerinks.ie", true }, { "printerinktoutlet.nl", true }, - { "printerleasing.be", true }, - { "printersguide.net", true }, + { "printersdrivers.net", true }, + { "printersupportfaq.com", true }, { "printertonerkopen.nl", true }, { "printexpress.cloud", true }, { "printfn.com", false }, { "printful.com", true }, + { "printkinng.com.tw", true }, { "printler.com", true }, + { "printme.com", true }, { "printmet.com", true }, { "printmet.ru", true }, { "printmijn3dmodel.be", true }, { "printmydesigns.ml", true }, + { "printplanlive.com", true }, { "printpoint.tk", true }, { "printrr.ca", true }, - { "printshopbd.com", true }, + { "printscan.com", true }, + { "printtolife.com.au", true }, { "printus.pro", true }, { "printwasteminimizer.com", true }, { "prinz.gg", true }, { "prinzoka.com.br", true }, - { "prior-it.be", true }, + { "prio.pt", true }, + { "prior-it.be", false }, { "prior.cloud", true }, { "priorite-education.com", true }, { "priorityeducation4u.tk", true }, @@ -98141,7 +112452,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "priorityelectric-lakesherwood.com", true }, { "priorityelectric-moorpark.com", true }, { "priorityelectric-newburypark.com", true }, - { "priorityelectric-oakpark.com", true }, { "priorityelectric-simivalley.com", true }, { "priorityelectric.biz", true }, { "priorityelectric.info", true }, @@ -98152,12 +112462,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prioritynissannewportnewsparts.com", true }, { "priorlakemn.gov", true }, { "priorshalldental.com", true }, - { "prisel.fr", true }, + { "prisma.io", false }, { "prisma.tk", true }, { "prismacloud.com", true }, - { "prismacloud.green", true }, { "prismacloud.xyz", true }, - { "prismalite.com.br", true }, { "prismaot.tk", true }, { "prismapixel.studio", true }, { "prismosystems.com", true }, @@ -98166,9 +112474,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pristinepotty.com", true }, { "prisync.com", true }, { "pritchi.tk", true }, + { "pritti-wummen.de", true }, + { "priv.au", true }, { "priv.gc.ca", true }, { "priv.im", true }, - { "priv.moe", true }, { "privace.ch", true }, { "privaci.ai", true }, { "privacy-web.tk", true }, @@ -98177,17 +112486,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privacy-works.tk", true }, { "privacy.ac.cn", true }, { "privacy.ax", true }, - { "privacy.com", true }, { "privacy.com.de", true }, - { "privacy.forsale", true }, + { "privacy.repair", true }, { "privacybydesign.foundation", true }, { "privacycentermqt.com", true }, { "privacychick.com", true }, { "privacychick.io", true }, { "privacycloud.nl", true }, { "privacydesign.ch", true }, + { "privacydev.net", true }, { "privacyend.com", true }, + { "privacyfenceanddeckllc.com", true }, { "privacyget.tk", true }, + { "privacyguides.org", true }, { "privacyinternational.org", true }, { "privacymanatee.com", true }, { "privacynow.eu", true }, @@ -98209,9 +112520,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "private-diary-taka.com", true }, { "private-krankenversicherung.tk", true }, { "private-relay.email", true }, + { "private.coffee", true }, { "privateadvisorgroup.com", true }, { "privatebanks.uk", true }, { "privatebin.info", true }, + { "privateboat.amsterdam", true }, { "privatecapsecurity.org", true }, { "privatedata.tk", true }, { "privatedomaincontrol.com", true }, @@ -98219,7 +112532,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privategiant.com", true }, { "privatehd.to", true }, { "privateideas.de", true }, - { "privateimarketing.com", true }, + { "privateinvestigatoredu.org", true }, { "privatejetschina.com", true }, { "privatejetsdallas.com", true }, { "privatejetsteterboro.com", true }, @@ -98228,15 +112541,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privatemillionaire.com", true }, { "privatenebula.eu", true }, { "privatepilot.lu", false }, - { "privatepokertour.com", true }, { "privaterelay.com", false }, { "privateschoolreview.com", true }, { "privateservice.cz", true }, { "privatetrainingonline.se", true }, + { "privateuploader.com", true }, { "privatevpn.com", true }, + { "privateweb.top", true }, { "privatfrei.de", true }, { "privatmeet.com", true }, - { "privatpatient-krankenhaus.de", true }, { "privatstunden.express", true }, { "privc.io", true }, { "privcloud.cc", true }, @@ -98246,27 +112559,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "privelust.nl", true }, { "priverify.com", true }, { "privilegevisa.fr", true }, + { "privo.com", true }, { "privorot.cf", true }, { "privu.me", true }, { "privw.com", true }, { "privy-staging.com", true }, { "privy.com", true }, + { "privylabs.com", true }, + { "prix-carburants-info.fr", true }, + { "prix-carburants.gouv.fr", true }, + { "prixcode.com", true }, + { "prixmetaux.fr", true }, + { "prixpictet.com", true }, + { "priyan.nl", true }, { "priyan.tk", true }, + { "priz-kod.ru", true }, + { "prizcode.ru", true }, + { "prizecode.ru", true }, { "prizehometickets.com.au", true }, { "prizelink.com.au", true }, + { "prizkod.ru", true }, { "prizrak-v-dospehah.ga", true }, { "prizwiz.com", true }, { "prizzlys.com", true }, { "prjktruby.com", false }, - { "prknje.co", true }, { "prlved.co.uk", true }, - { "prm-taiwan.com", true }, { "prmihoc.com", true }, { "prnav.com", true }, { "pro-alter.ch", true }, + { "pro-babochek.ru", true }, { "pro-ben.sk", true }, { "pro-bike.ro", true }, - { "pro-box.be", false }, + { "pro-box.be", true }, + { "pro-c.me", true }, { "pro-co.at", true }, { "pro-esb.net", true }, { "pro-furgoleros.tk", true }, @@ -98283,49 +112608,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pro-lq.it", true }, { "pro-lq.net", true }, { "pro-lq.ro", true }, + { "pro-marienburg.de", true }, { "pro-mile.pl", true }, { "pro-moed.nl", true }, + { "pro-ogorod.info", true }, { "pro-server.tk", true }, { "pro-taucher.com", true }, { "pro-taucher.de", true }, { "pro-web-design.tk", true }, { "pro-wiert.pl", true }, + { "pro.co.id", true }, { "pro.co.il", true }, - { "pro3ozonio.com.br", true }, + { "pro100systems.com.ua", true }, { "pro4x4.com.ua", false }, { "proacksecurity.com", true }, + { "proacousticsusa.com", true }, { "proact-it.co.uk", true }, { "proactive.run", true }, { "proactivenews.ml", true }, - { "proactivestructuresolutions.com", true }, { "proadvanced.com", true }, - { "proagile.se", true }, + { "proadvisorcoach.com", true }, { "proalist.com", true }, { "proalter.ch", true }, + { "proamis-moodle.fi", true }, { "proantab.ru", true }, - { "proarcondicionadolondrina.com.br", true }, + { "proarbor.com", false }, { "proastec.com.br", true }, { "proaudiogc.com", true }, + { "probably.group", true }, + { "probablyrational.com", true }, { "probase.ph", true }, { "probateandplanning.com", true }, { "probationforms.com", true }, { "probationnotes.com", true }, - { "probazen.com", true }, + { "probationofficeredu.org", true }, { "probely.com", true }, + { "probiancanarias.com", true }, { "probiller.com", true }, { "probinarin.ga", true }, - { "probiv.biz", true }, { "problem-solver.ml", true }, { "problempaws.ie", true }, + { "problemshared.net", true }, { "problemstate.com", true }, { "problemstate.de", true }, { "problemstate.net", true }, { "problemstate.org", true }, + { "probleu.com", true }, { "probonus.tk", true }, { "probooks.gq", true }, + { "probrewer.com", true }, { "procalc.be", true }, + { "procarmanuals.com", true }, { "procarservices.com", true }, { "procarswoking.com", true }, + { "procasinoplayer.xyz", true }, { "procave.de", true }, { "proceed.tk", true }, { "procens.us", false }, @@ -98333,31 +112669,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "procesadorafenix.com.mx", true }, { "processesinmotion.com", true }, { "processout.com", true }, + { "processtec.com.br", true }, + { "prochainephase.com", true }, + { "prochaj.ru", true }, { "procharter.com", true }, - { "prochaskamediation.com", true }, { "procinorte.net", true }, { "procitec.cz", true }, { "proclaiminteractive.com", true }, { "proclock.com", true }, - { "proclubs.news", true }, { "procode.ch", true }, { "procode.gq", true }, - { "proconjcb.com", true }, - { "proconnectengenharia.com.br", true }, - { "procore.com", true }, + { "procomservices.com", true }, + { "procor.com", true }, + { "procore.com", false }, { "procore.space", true }, + { "procountor.fi", true }, + { "procountor.se", true }, + { "procountorsolo.com", true }, + { "procrackbox.com", true }, { "procrastinatingengineer.uk", true }, { "procrastinationland.com", true }, + { "procreditbank.com.al", true }, { "procsec.top", true }, + { "proctoloji.com", true }, { "proctor.ml", true }, { "proctorauth.com", true }, { "proctorial.cf", true }, { "proctorio.com", true }, { "proctorio.net", true }, - { "proculsk.tk", true }, + { "procurement.moscow", true }, { "procurs.us", true }, + { "procursus.social", true }, { "procurx.pt", true }, { "prod-simplesend-api.azurewebsites.net", true }, + { "prod-vigl-www-master.azurewebsites.net", true }, + { "prodabo.com", true }, { "prodaft.com", true }, { "prodampro.ru", true }, { "prodatalabs.com", true }, @@ -98384,58 +112730,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "productfurniture.ga", true }, { "production.vn", true }, { "productionscime.com", true }, + { "productionsinc.com", true }, { "productiv.com", true }, - { "productive-garden.com", true }, + { "productive.io", true }, { "productivemachine.net", true }, + { "productiveplastics.com", true }, { "productosdeteruel.es", false }, { "productosquimicosrd.com", true }, { "productpeo.pl", true }, { "products-for-health.tk", true }, { "products4more.at", true }, { "productsafety.gov.au", true }, - { "productsblockbuster.com", true }, { "productsbrandleader.com", true }, { "productscastle.com", true }, - { "productsmansion.com", true }, - { "productsonsale.com.au", true }, - { "productum.eu", true }, { "productupdates.org", true }, { "produform.it", true }, + { "produits-dantan.com", true }, { "produkt.cf", true }, { "produkttest-online.com", true }, - { "produktum.eu", true }, { "produra.nl", true }, { "prodwa.re", true }, { "prodware.fr", true }, { "prodware.nl", true }, + { "proecommerce.com", true }, { "proeflokaalbakker.nl", true }, { "proefteksten.nl", false }, { "proekt.tk", true }, { "proemployeeprotection.com", true }, { "proemployeeprotection.net", true }, { "proesb.net", true }, + { "proeski.com", false }, { "prof", true }, { "prof-toplivo.ru", true }, { "prof-waldowski.de", true }, + { "prof.lv", true }, { "profarea.ru", true }, { "profbioresearch.ga", true }, { "profboecker.eu", true }, { "profchristophergoh.com.sg", true }, { "profection.biz", true }, + { "profeinnova.online", true }, { "profession.email", true }, { "professionalbeautyshop.it", true }, { "professionalblog.tk", true }, { "professionalbussines.tk", true }, { "professionaleducation.tk", true }, + { "professionalfinance.uk", true }, { "professionallawyer.tk", true }, { "professionalportfolio.ga", true }, { "professionalrakeback.com", true }, + { "professionalstandards.org.uk", true }, { "professions.org.ru", true }, { "professor-d.ga", true }, - { "professors.ee", true }, + { "professorart.ru", true }, { "professorwidget.tk", true }, + { "profi.de", true }, + { "profian.com", true }, + { "proficio.at", true }, { "proficio.cz", true }, - { "proficiodigital.com", true }, + { "proficio.de", true }, + { "proficio.io", true }, + { "proficiodigital.pl", true }, { "proficiodigital.sk", true }, { "profidea.cz", true }, { "profielektrik.tk", true }, @@ -98443,9 +112798,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "profil-doors.spb.ru", true }, { "profile.ooo", true }, { "profile.tf", true }, + { "profilepk.com", true }, { "profiles.google.com", true }, + { "profilesw.com", true }, + { "profiletree.com", true }, { "profilewatcher.ga", true }, + { "profilib.com", true }, + { "profilib.net", true }, { "profilib.top", true }, + { "profilmedecin.fr", true }, { "profilmonline.cn", true }, { "profilmonline.com", true }, { "profilmonline.jp", true }, @@ -98457,17 +112818,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "profissionalstool.ga", true }, { "profit24.ml", true }, { "profitable-textilien.ch", true }, + { "profitableventure.com", true }, { "profitablewebprojects.com", true }, { "profitdouble.tk", true }, + { "profitero.com", true }, + { "profitimages.com", true }, { "profitmiracle.tk", true }, - { "profitopia.de", true }, - { "profkom.tk", true }, + { "profitov.net", true }, { "profloorstl.com", true }, - { "proflowa.com.au", true }, { "profmatheus.com", true }, { "profmetod.com", true }, + { "profondeville-sharks.be", true }, + { "profor.cz", true }, { "proformer.io", true }, { "proformi.com", true }, + { "profound-world.com", true }, { "profritual.ru", true }, { "profsaranya.com", true }, { "profservice.it", true }, @@ -98482,47 +112847,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prog.olsztyn.pl", true }, { "prog24.net", true }, { "progamehackers.tk", true }, + { "progamersquad.com", true }, { "progarm.org", true }, { "progaudio.be", true }, + { "progea.com", true }, { "progenda.be", true }, { "progeon.nl", true }, { "proger.ga", true }, { "proger.ml", true }, { "progeste.pt", true }, - { "progettoforme.eu", true }, + { "progettodighe.it", true }, { "progettograjau.com", true }, + { "progettonazionale.it", true }, { "progezi.com", true }, { "progg.no", true }, { "proggersession.com", true }, { "proggersession.de", true }, - { "progiscad.com", false }, { "proglib.io", true }, + { "prognoshealth.com", false }, { "prognozis.cf", true }, { "progolfjourney.com", true }, { "progolfnow.com", true }, { "progon.cf", true }, + { "progonsoftware.com", true }, { "prograce.info", true }, + { "program-ace.com", true }, { "program-and.work", true }, - { "programadaaninha.com.br", true }, { "programador-web-freelance.es", true }, - { "programadorwp.com", true }, { "programando.tk", true }, { "programarya.com", true }, { "programaticon.tk", true }, { "programer21.com", true }, - { "programlama.tk", true }, + { "programmads.com", true }, { "programmaticmagic.com", true }, { "programmatv.tk", true }, { "programme-launch28-code854-com.ml", true }, - { "programme-neuf-toulouse.com", true }, + { "programmed.com.au", true }, { "programmervibe.com", true }, { "programmes-neufs-corse.fr", true }, { "programming-solutions.tk", true }, + { "programminghomeworkhelp.com", true }, { "programnews.tk", true }, { "programsareproofs.com", true }, - { "programtracker.net", true }, + { "programsupport300procent.com", true }, { "prograph.tk", true }, { "prograppa.tk", true }, + { "progres.construction", true }, { "progresion.co", true }, { "progresivoptic.ro", true }, { "progress-linux.org", true }, @@ -98537,20 +112907,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "progressportaal.nl", true }, { "progressverkiezingen.nl", true }, { "progresswww.nl", true }, - { "progresszivnyomda.hu", true }, - { "progrillcleaning.com", true }, + { "progroep.nl", true }, { "progtime.net", true }, + { "prohashing.com", true }, { "prohelpers.tk", true }, { "prohibition.tk", true }, { "prohost24.tk", true }, { "prohrcloud.com", true }, + { "proi.net", true }, { "proibidoler.com", true }, { "proiceresurfacer.com", true }, + { "proinfluent.com", true }, { "proinn.com.br", true }, - { "proitsecurity.cl", false }, { "proj.org.cn", true }, { "proj3ct.me", true }, { "proj6.site", true }, + { "project-alice.io", true }, { "project-forum.tk", true }, { "project-ice.org", true }, { "project-merlin.co.uk", true }, @@ -98558,11 +112930,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "project-rune.tech", true }, { "project-stats.com", true }, { "project-tamriel.com", true }, - { "project-tenerife.tk", true }, + { "project-trans.org", true }, { "project86fashion.com", true }, { "projectalias.com", true }, { "projectarmy.net", false }, - { "projectbenson.com", false }, { "projectborealisgitlab.site", true }, { "projectbotticelli.com", true }, { "projectbuild.tk", true }, @@ -98577,9 +112948,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "projecthosting.nl", true }, { "projectimagine.com", true }, { "projectinferno.tk", true }, - { "projectinnovation.org", true }, { "projection.gq", true }, - { "projectionpictures.com", false }, { "projectl1b1t1na.tk", true }, { "projectlarix.com", true }, { "projectleague.lol", true }, @@ -98591,15 +112960,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "projectmanager.host", true }, { "projectmap.solutions", true }, { "projectmidnight.tk", true }, - { "projectnom.com", true }, { "projectobs.com", true }, { "projectplacebo.ca", true }, + { "projects.nl.eu.org", true }, { "projectsafechildhood.gov", true }, { "projectskynet.org", true }, { "projectsmart.co.uk", true }, { "projectstem.org", true }, { "projecttalent.be", true }, { "projectte.ch", true }, + { "projecttopics.org", true }, { "projectunity.io", true }, { "projectvault.ovh", true }, { "projectveritasaction.com", false }, @@ -98625,26 +112995,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "projetootaku.net", true }, { "projetsvl.com", true }, { "prokaza.tk", true }, + { "prokey-marburg.de", true }, { "proklimat.pro", true }, + { "prokop.ovh", true }, + { "prokop.uk", true }, { "prolens-lankaran.tk", true }, - { "prolinos.de", true }, + { "proletaren.se", true }, + { "prolikewoah.com", true }, + { "prolobziki.ru", true }, { "prolocofrascarolo.tk", true }, + { "prolocovalsambro.com", false }, { "prologic.bg", true }, + { "prologicabg.com", true }, + { "proloyalweb.com", true }, { "promajna.tk", true }, + { "promarketingplus.com", true }, { "promax.nl", true }, { "promea.net", true }, - { "promedlatam-qas.com", true }, + { "promecin.com", true }, { "promedlatam.com", true }, { "promedyczny.pl", true }, { "promenics.com", true }, + { "promentesalzburg.at", true }, + { "promet.si", true }, { "prometey.tk", true }, { "prometheanfire.net", true }, { "prometheanfire.org", true }, { "promethen.com", true }, { "prometheus.cf", true }, - { "promexbol.com.bo", true }, { "promiflash.de", true }, - { "promifotos.com", true }, { "promisedland.tk", true }, { "promisesaplus.com", true }, { "promislovik.tk", true }, @@ -98660,62 +113039,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "promocao.email", true }, { "promocion2007.tk", true }, { "promocjedladzieci.pl", true }, + { "promocodes777.com", true }, { "promocodius.com", true }, + { "promocoespg.pt", true }, { "promodance.cz", true }, - { "promodesigns.co.za", true }, { "promodoble.com", true }, - { "promods.cn", true }, { "promods.download", true }, { "promods.net", true }, { "promods.store", true }, - { "promods.web.tr", true }, + { "promofirstmedia.co.id", true }, { "promohulp.nl", true }, { "promohunt.ru", false }, { "promokodi.tk", true }, + { "promolife.be", true }, { "promolover.com", true }, + { "promomart.eu", true }, + { "promopirates.com", true }, { "promopony.com", true }, { "promorder.ru", true }, - { "promoscuola.net", true }, { "promosjungle.com", true }, { "promosolucoes.tk", true }, { "promotech.pro", true }, - { "promoteiq.com", true }, + { "promoteiq.com", false }, { "promoterms.com.au", true }, { "promoteroute.com", true }, - { "promotioncentre.co.uk", true }, { "promotiongeeks.com", false }, { "promotionnissanauto.com", true }, { "promotionvillanakarin.com", true }, { "promotor.ro", true }, { "promovendum.nl", true }, + { "prompt-service.ro", true }, { "promuovi.tv", true }, - { "promusicante.ch", true }, + { "promwad.com", false }, { "pron4ik.gq", true }, + { "pronandi.tk", true }, + { "pronatec.pro.br", true }, + { "pronikoho.cz", true }, + { "pronoundb.org", true }, { "pronto-intervento-fognature.it", true }, { "pronto-intervento.net", true }, { "prontointerventofognature.roma.it", true }, { "prontointerventoimmediato.it", true }, { "prontossl.com", true }, + { "pronty.it", true }, + { "prooffice.de", true }, { "proofofwork.art", true }, { "proofpoint.com", true }, + { "proofpointessentials.com", true }, { "proofwiki.org", true }, { "proos.nl", true }, - { "propacquisitions.com", true }, + { "propaganda.love", false }, { "propagandablog.de", false }, { "propagationtools.com", true }, { "propanesale.cf", true }, + { "propbot.com", true }, { "propecia.ml", true }, { "propeld.com.au", true }, + { "properchels.com", true }, { "propermatches.com", true }, - { "propershave.com", true }, + { "propersky.com", true }, { "propertech.com.br", true }, { "properticons.com", true }, { "properties.org.il", true }, { "propertiesmiami.com", true }, - { "property-catalogue.eu", true }, { "property-tax.cf", true }, { "property-tax.ga", true }, { "property-tax.gq", true }, + { "propertyaapki.com", true }, { "propertyauctionaction.co.uk", true }, { "propertycareincorporated.com", true }, { "propertycrawl.com", true }, @@ -98724,24 +113114,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "propertyfindercdn.com", true }, { "propertyflare.com", true }, { "propertygroup.pl", true }, - { "propertyinside.id", false }, + { "propertyinside.id", true }, { "propertyinvestmentmadesimple.com", true }, - { "propertylisthub.com", true }, { "propertylondon.co.uk", true }, + { "propertyme.com.au", true }, { "propertymingo.com", true }, { "propertyofariana.pw", true }, { "propertyofthepeople.org", true }, { "propertyone.mk", true }, - { "propertyprofilereport.com", true }, + { "propertyrate.com", true }, { "propertyroad.co.uk", true }, { "propertysales-almeria.com", true }, { "propertyselling.ga", true }, + { "propertysex.com", true }, { "propertyupdate.com.au", true }, { "propertyworkshop.com", true }, + { "propfirmdiscount.com", true }, { "prophitt.me", true }, { "propipesystem.com", true }, { "propiteer.com", true }, { "propiteercapitalplc.com", true }, + { "propmark.com.br", true }, { "propolisturkiye.tk", true }, { "proporcer.tk", true }, { "proposalonline.com", true }, @@ -98752,22 +113145,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proprietairesmaisons.fr", true }, { "propseller.com", true }, { "propshub.com", true }, - { "propulse.xyz", true }, { "proquotient.com", true }, + { "proregiotram.de", true }, + { "proressource.ca", false }, + { "proressources.ca", true }, { "proris.com", false }, - { "prosafilosofica.com.br", false }, + { "prosafilosofica.com.br", true }, { "proschlaf.at", true }, + { "proscore-vr2005-1plc.de", true }, + { "proscore-vr2006-1plc.de", true }, { "proscost.com", true }, - { "proservices-informatique.fr", true }, + { "proserialkey.com", true }, { "proservices.vip", true }, { "prosharp.com.au", true }, + { "proshoereview.com", true }, { "proshop.pl", true }, + { "prosimvstupte.cz", true }, { "proslimdiets.com", true }, { "prosocialmachines.com", true }, { "prosoft.com.es", true }, - { "prosoft.es", true }, - { "prosoft.pe", true }, - { "prosolucionmexico.com", true }, + { "prosolutionsair.com", true }, { "prosony.es", true }, { "prospa.digital", true }, { "prospectky.gov", true }, @@ -98778,10 +113175,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prosperafrica.gov", true }, { "prosperbot.com", true }, { "prosperfit.com", true }, - { "prosperfit.org", false }, + { "prosperi.academy", false }, { "prosperityprojectaz.org", true }, + { "prosperoarts.com.au", true }, { "prosperontheweb.com", true }, - { "prosperops.com", true }, { "prosperstack.com", true }, { "prosperus.ru", true }, { "prospo.co", true }, @@ -98811,9 +113208,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prostoporno.vip", true }, { "prostoporno.zone", true }, { "prostor.cf", true }, + { "prostore.vn", true }, { "prostoskidki.ml", true }, { "prostozaim.ml", true }, { "prostye-recepty.com", true }, + { "prosurf.com.hr", true }, { "prosurveillancegear.com", true }, { "prosvet.tk", true }, { "prosveta1901.tk", true }, @@ -98825,10 +113224,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proteccaocivil.com", true }, { "proteccaocivil.net", true }, { "proteccaocivil.org", true }, - { "protech.ge", true }, + { "protecciondelconsumidor.gov", true }, + { "proteces.ru", true }, + { "protecht.com.au", true }, + { "protechtgroup.com", true }, { "proteco.sk", true }, + { "protectapack.com.au", true }, { "protectasecurity.pe", true }, - { "protectedpayments.net", true }, + { "protected-forms.com", true }, { "protectedreport.com", true }, { "protectem.de", true }, { "protecti.com", true }, @@ -98838,22 +113241,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "protectionformula.com.ua", true }, { "protectwrap.ml", true }, { "protege.moi", true }, - { "protegetudescanso.com", true }, { "proteh.com.ua", true }, - { "protein-riegel-test.de", true }, { "proteinreport.org", true }, { "protek.tk", true }, + { "proteka.com.tr", true }, + { "protekpainters.com", true }, + { "protempore.fr", true }, + { "protenus.com", true }, { "proteogenix-products.com", true }, { "proteogenix.science", true }, - { "protestantsegemeentekaag.nl", true }, { "protesthongkong.com", true }, { "proteus-eretes.nl", true }, { "protez.ga", true }, { "protez.ml", true }, { "protez.tk", true }, + { "prothots.com", true }, { "protic.online", true }, { "protic.pt", true }, { "protiksana.gr", true }, + { "protipster.com", true }, + { "protium.co.in", true }, { "proto.io", true }, { "protobetatest.com", true }, { "protocol.ai", true }, @@ -98865,51 +113272,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "protonbg.bg", true }, { "protonmail.ch", true }, { "protonmail.com", true }, + { "protonpartnersglobal.com", true }, { "protonpix.com", true }, { "protonvpn.com", true }, { "prototayl.gq", true }, + { "prototech.store", true }, { "prototype.bg", true }, { "prototypefund.de", true }, { "prototyping-computer.ml", true }, + { "prototypofablab.it", true }, { "protoxin.net", false }, { "protrainerbrasil.com.br", true }, { "protrolley.cf", true }, + { "protteapapelaria.com.br", true }, + { "protvplus.ro", true }, { "proudplus.com", true }, { "proust.ch", false }, { "proust.media", false }, { "proustmedia.de", false }, - { "provarko.com", true }, + { "prouveonline.pt", true }, { "prove-uru.co.uk", true }, + { "prove.com", true }, { "prove.no", true }, { "proveits.me", false }, + { "provenbyyullia.com", true }, { "provence-appartements.com", false }, { "provencemckinney.com", true }, { "provent.io", true }, { "provera10mg.tk", true }, + { "proverb.today", true }, { "proverennie-kursi.gq", true }, { "proverennie-kursi.ml", true }, { "proverennie-kursi.tk", true }, { "provereno-rabotaet.gq", true }, { "provereno-rabotaet.tk", true }, { "proverochka.tk", true }, + { "provide-vr2002-1plc.de", true }, + { "provide-vr2003-1plc.com", true }, + { "provide-vr2003-1plc.de", true }, + { "provide-vr2004-1plc.de", true }, + { "provide-vr2005-1plc.de", true }, + { "provide-vr2006-1plc.de", true }, { "provide-your-image.de", true }, - { "providence.org", true }, { "providencecmc.com", true }, + { "provident1031.com", true }, + { "providenthousing.com", true }, { "providential.be", true }, { "providerlijst.ml", true }, - { "providerlijst.nl", true }, { "providmedical.com.ua", true }, + { "provigis.com", true }, { "provinciaotlavoro.it", true }, + { "provinstyper.com", true }, { "provinzblogger.de", true }, { "provision-isr.nl", true }, + { "provisionevents.co.uk", true }, { "provisionircd.tk", true }, { "provitec.com", true }, { "provlas.se", true }, + { "provo.gov", true }, + { "provocador.es", true }, { "proweb-design.no", true }, + { "prowi.se", true }, { "prowindow.sk", true }, + { "prowise.com", true }, + { "prowise.me", true }, { "prowpcare.com", true }, { "prowrestlingevents.tk", true }, { "prox.ru", true }, + { "proxaccess.com", true }, { "proximasrl.eu", true }, { "proximity.ga", true }, { "proximityradio.fr", true }, @@ -98917,33 +113347,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "proximoconcurso.com.br", true }, { "proxirealtime.com", true }, { "proxmox-airsonic.tk", true }, + { "proxy-bay.biz", true }, + { "proxy-bay.cam", true }, { "proxy-bay.cc", true }, - { "proxy-bay.com", true }, + { "proxy-bay.click", true }, + { "proxy-bay.ink", true }, { "proxy-bay.me", true }, - { "proxy-bay.net", true }, { "proxy-bay.one", true }, { "proxy-bay.onl", true }, { "proxy-bay.top", true }, - { "proxybay.bz", true }, - { "proxybay.earth", true }, - { "proxybay.how", true }, { "proxybay.ink", true }, - { "proxybay.ltda", true }, - { "proxybay.onl", true }, { "proxybay.red", true }, - { "proxybay.uno", true }, { "proxyhub.eu.org", true }, + { "proxyline.net", true }, { "proxytool.cf", true }, { "proyectafengshui.com", true }, - { "proyectoarq.cl", true }, + { "proyectofreestyle.com", true }, + { "proyectomca.es", true }, + { "proyectosaludecuador.org", true }, { "proyectosinelec.com", true }, { "proyectostep.tk", true }, { "prozac20mg.cf", true }, { "prozapchast24.ru", true }, + { "prozhedownload.com", true }, + { "prozoneplan.com", true }, { "prozorlivec.tk", true }, + { "prpbenevolent.org", true }, + { "prpbt.io", true }, { "prpferrara.it", true }, + { "prpr.bid", true }, { "prpr.cat", true }, - { "prpr.cloud", true }, + { "prpr.icu", true }, + { "prpr.live", true }, + { "prpr.rip", true }, + { "prpr.win", true }, + { "prsbtdc.org", true }, { "prsg.tk", true }, { "prsnlafk.com", true }, { "prstatic.com", true }, @@ -98954,13 +113392,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pru.com.hk", true }, { "pru.hk", true }, { "pruchovi.tk", true }, + { "prudenceandthecrow.com", true }, + { "prudential.com.sg", true }, { "pruebapg.cl", true }, + { "pruem.software", true }, + { "pruijn-overheidsadvies.nl", true }, { "pruma.com.br", true }, + { "pruna.org", true }, { "prushka.gq", true }, { "prushka.ml", true }, { "prushka.tk", true }, { "pruve.it", true }, - { "prvcy.one", true }, { "prvnirodinna.cz", true }, { "prwid.com", true }, { "prwid.gov", true }, @@ -98972,25 +113414,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "prynhawn.org", true }, { "prytkov.com", true }, { "przemas.pl", true }, + { "przemek-kuczynski.com", true }, { "przemyslprzyszlosci.gov.pl", true }, { "przepisykolejowe.tk", true }, + { "przeprowadzki-warszawskie.pl", true }, { "przerabianiezdjec.pl", true }, + { "przybys.eu", true }, { "przyciemnianieszyb.waw.pl", true }, { "ps-clinic.jp", true }, { "ps-playback.com", true }, { "ps-provider.co.jp", true }, + { "ps-rosatom.ru", true }, { "ps-sale.ru", true }, { "ps-w.ru", true }, { "ps.energy", true }, + { "ps131q.com", true }, + { "ps194.net", true }, + { "ps194.org", true }, + { "ps2.io", true }, { "ps2911.com", true }, { "ps2online.tk", true }, { "ps3419.org", true }, { "ps4all.nl", true }, - { "ps5.nl", true }, { "ps5ssd.com", true }, { "ps8318.com", true }, { "psa-travel-care.com", true }, + { "psa.at", true }, + { "psa.gov", true }, { "psacertified.org", true }, + { "psaho.ru", true }, { "psalivenews.ml", true }, { "psalmer.tk", true }, { "psasines.pt", true }, @@ -99001,20 +113453,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psb.cloud", true }, { "psb1.org", true }, { "psb1911.com", true }, + { "psb4ukr.net", true }, { "psb4ukr.org", true }, { "psbarrett.com", true }, { "psblog.fr", true }, { "psc.gov.ws", true }, + { "pschierl.com", true }, { "pscp.tv", true }, { "pscr.gov", true }, + { "pscu.com", true }, + { "psd-vfx.com", true }, { "psdfindia.in", true }, + { "psdmarket.net", true }, { "psdpt-tpfd.gc.ca", true }, { "psdreams.com", true }, { "psdsfn.com", true }, { "psdsuc.com", true }, { "pseac.org", true }, { "pseek.com", true }, - { "pself.net", true }, + { "psemc.com", true }, { "pservicer.com.mx", true }, { "pseta.ru", true }, { "psevdonim.ga", true }, @@ -99035,10 +113492,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psicologiaparatodos.com.mx", true }, { "psicologo-especialista-barcelona.com", true }, { "psicologo-infantil-barcelona.com", true }, - { "psicologomogidascruzes.com.br", true }, { "psicomagia.com.br", true }, { "psicometricas.mx", true }, - { "psicorevista.com", true }, { "psihocentrala.com", true }, { "psihologonline.tk", true }, { "psihology.gq", true }, @@ -99046,6 +113501,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psihoterapevt1.by", true }, { "psihotest.tk", true }, { "psii.global", true }, + { "psiint.ca", true }, { "psikokoro.com", true }, { "psinergia.com", true }, { "psinergy.info", true }, @@ -99053,6 +113509,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psinergytech.com", true }, { "psinetika.tk", true }, { "psionline.com", false }, + { "psionlinestore.com", true }, { "psiplex.cf", true }, { "psiplex.ga", true }, { "psiplex.gq", true }, @@ -99061,39 +113518,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psitarz.com", true }, { "psixotest.tk", true }, { "psixotesty.tk", true }, + { "pskhu-wedding.ru", true }, { "pskl.us", true }, { "pskov-daily.tk", true }, { "pskov.gq", true }, { "pskov.ml", true }, { "pslf.gov", true }, + { "pslgroup.com", true }, { "psm.org.ph", true }, { "psmpl.com", true }, - { "psn.games", true }, { "psncarddelivery.com", false }, { "psncardplus.be", true }, { "psncardplus.com", true }, { "psncardplus.dk", true }, { "psncardplus.nl", true }, { "psncardplus.se", true }, - { "psngr1.com", true }, + { "psncoach.com", true }, + { "psncuc.gov", true }, + { "pso2.icu", true }, { "psochecker.com", true }, { "pson.ninja", true }, { "psono.pw", true }, + { "psoo.top", true }, { "psoppc.com", true }, { "psoppc.info", true }, { "psoppc.net", true }, - { "psoppc.org", true }, { "psoriasischecker.com", true }, { "pspapershow.ga", true }, { "pspenvases.es", true }, { "psphp.tk", true }, { "psplus.ml", true }, { "psplus.tk", true }, + { "psprices.com", true }, + { "psps.cat", true }, + { "psq.com.au", true }, { "psreturn.com.au", true }, { "pssgcsim.org", true }, { "pssjd.org", true }, { "pssschristchurch.tk", true }, + { "pst.edu.au", true }, { "pst.moe", true }, + { "pstake.finance", true }, { "pste.pw", true }, { "pstrozniak.com", true }, { "pstrykmyk.eu", true }, @@ -99109,18 +113574,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psy-web.fr", true }, { "psyart.tk", true }, { "psycenter.tk", true }, + { "psych2go.net", true }, + { "psychboss.com", true }, { "psychcare.cz", true }, { "psychedelia.com", true }, { "psychedelics.org", true }, - { "psychiatrie-leutkirch.de", true }, { "psychiatrie-ricany.cz", true }, { "psychiatriepapezova.net", true }, + { "psychiatry-clinic.com.tw", true }, { "psychic-healer-mariya-i-petrova-boyankinska-b-borovan-bg.com", true }, - { "psychic-parapsychologist.com", true }, { "psychicfairnetwork.cf", true }, { "psychicfairnetwork.gq", true }, { "psychicfairnetwork.ml", true }, { "psychiq.com", true }, + { "psychische-systeme.de", true }, + { "psychistory.ru", true }, { "psycho-familles.com", true }, { "psycho-lobby.fr", true }, { "psycho-news.tk", true }, @@ -99132,10 +113600,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psychologic.tk", true }, { "psychologie-hofner.at", true }, { "psychologischepraktijkphilips.nl", true }, + { "psychologist-license.com", true }, { "psychologist.ga", true }, + { "psychologlodz.info", true }, { "psychologue-a-paris.com", true }, { "psychologue-grenoble.org", true }, { "psychology-ifk.com", true }, + { "psychologydegreeguide.org", true }, { "psychologytests.tk", true }, { "psychometric.careers", true }, { "psychometrictest.ca", true }, @@ -99144,11 +113615,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psychometrictests.in", true }, { "psychometrictests.uk", true }, { "psychometrischetests.de", true }, + { "psychometrist.ir", true }, { "psychomotricien-la-rochelle.com", true }, { "psychonaut.tk", true }, { "psychonews.tk", true }, { "psychopathtest.com", true }, - { "psychopersonnalite.com", true }, { "psychosis.tk", true }, { "psychotechnique.africa", true }, { "psychotechnique.be", true }, @@ -99157,26 +113628,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "psychotechnique.lu", true }, { "psychotechniquetest.fr", true }, { "psychotel.tk", true }, - { "psychoterapia-skuteczna.pl", true }, - { "psychoterapia.best", true }, + { "psychoterapia-skuteczna.pl", false }, { "psychotest.gq", true }, { "psychotestprep.com", true }, + { "psychotherapie-ahlmeyer.de", true }, { "psychotherapie-kp.de", false }, { "psychotherapie-leipzig.eu", true }, + { "psychotherapie-lichterfelde.berlin", true }, { "psychotherapie1220wien.at", false }, { "psychotherapy-vienna.com", true }, { "psychotiq.tk", true }, + { "psychotropical.com", true }, + { "psychpsyo.com", true }, { "psycolleges.com", true }, + { "psydprograms.org", true }, { "psygame.cf", true }, { "psyh.tk", true }, + { "psyhoslovar.ru", true }, { "psyk-patienten.tk", true }, { "psykologtidningen.cf", true }, { "psykologtidningen.ga", true }, { "psykologtidningen.gq", true }, { "psykometrisk.se", true }, { "psykosyntes.tk", true }, - { "psylab.re", false }, - { "psylab.vip", false }, { "psyllabus.ru", true }, { "psylliums.com", true }, { "psynapse.net.au", true }, @@ -99185,6 +113659,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pt-d.ru", true }, { "pt-server.de", true }, { "pt.im", true }, + { "pt1xbet.com", true }, { "pt4.tech", true }, { "pta-security.nl", true }, { "pta.world", true }, @@ -99193,11 +113668,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ptasiepodroze.eu", true }, { "ptbi.org.pl", true }, { "ptboys.tk", true }, + { "ptbx.co", true }, { "ptcbooks.gq", true }, { "ptcdogpark.com", true }, { "ptcit.com", true }, + { "ptcorporategifts.com.sg", true }, { "ptczone.tk", true }, { "pteceng.com", true }, + { "ptepanacea.com", true }, { "pterodactyl.org.cn", true }, { "pterodactylus.cz", true }, { "ptfiber.com", true }, @@ -99206,20 +113684,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ptgoldensun.com", true }, { "ptheophanidis.com", true }, { "pthsec.com", true }, + { "pticoaching.nl", true }, { "ptit-trocoeur.fr", true }, - { "ptk-svarka.ru", false }, + { "ptjobsite.com", true }, { "ptlibrary.ml", true }, { "ptltrade.com", true }, { "ptm.ro", true }, { "ptmarquees.ie", true }, { "ptmco.org", true }, + { "ptmd.nl", true }, + { "pto.moe", true }, + { "ptotoday.com", true }, + { "ptpasi.ddns.net", true }, { "ptrbrs.nl", true }, + { "ptrdata.com", true }, + { "ptrl.ws", true }, { "ptron.org", true }, { "ptrt.xyz", true }, + { "ptrujillo.com", true }, { "ptsadvokat.cf", true }, { "ptserver.org", true }, + { "ptservidor.pt", true }, + { "ptsf.pt", true }, { "ptshft.co", true }, { "ptsjapan.co.jp", true }, + { "ptssystems.co.in", true }, + { "ptt.casa", true }, { "ptt.gov", true }, { "ptt2.su", true }, { "pttimewithtim.com", true }, @@ -99227,11 +113717,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ptupapers.tk", true }, { "pturl.tk", true }, { "pty.gg", true }, + { "ptzoptics.com", true }, { "puac.de", true }, + { "pub-med.ru", true }, { "pub-online.ro", true }, { "pubclub.com", true }, { "pubertytalk.com", true }, { "pubi.me", true }, + { "pubkgroup.com", true }, + { "pubkit.io", true }, { "publanda.nl", true }, { "publi-all.be", true }, { "public-files.com", true }, @@ -99239,43 +113733,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "public-measures.com", true }, { "public-projects.com", true }, { "public-projects.de", true }, - { "public-sex-porn.com", true }, { "public-vocals.de", true }, - { "public-welfare.com", true }, + { "public.cat", true }, + { "publicagent.com", true }, { "publiccarauctionscalifornia.com", true }, + { "publiccdn.com", true }, + { "publicdatacloud.com", true }, + { "publicdatafiles.com", true }, { "publicdelivery.org", true }, { "publicdomainartwork.com", false }, { "publichealth.cf", true }, { "publichealth.gq", true }, + { "publichealthcareeredu.org", true }, + { "publichealthdegrees.org", true }, + { "publichealthonline.org", true }, { "publicholidays.im", true }, { "publicintegrity.org", true }, { "publicintelligence.net", true }, { "publicishealth.es", true }, { "publicitar.tk", true }, + { "publicmarket.com", true }, + { "publicnode.com", true }, { "publicnoticesbaycountyfl.gov", true }, + { "publicpartnerships.com", true }, + { "publicpickups.com", true }, { "publicrea.com", true }, { "publicschoolreview.com", true }, { "publicserviceloanforgiveness.gov", true }, { "publicspeakingcamps.com", true }, { "publicsuffix.org", true }, + { "publictechsupport.org", true }, { "publicvoid.ga", true }, + { "publicwhip.org.uk", true }, { "publik.ml", true }, + { "publikum.net", true }, { "publimepa.it", false }, { "publiq.space", true }, + { "publis.me", true }, { "publish.ga", true }, { "publishedpaper.ga", true }, { "publisherservices.co", true }, - { "publishingmodel.com", true }, + { "publishmystory.co", true }, { "publishpressnews.tk", true }, { "publivate.ca", true }, { "publiweb.tk", true }, { "publixphere.net", true }, { "pubmed2xl.com", true }, { "pubquiz-online.nl", true }, - { "pubreview.com.au", true }, { "pubsavoy.tk", true }, { "puccakir.tk", true }, { "puckcreations.com", true }, + { "puckprose.com", true }, + { "pucksandpitchforks.com", true }, { "pucogid.ga", true }, { "puddin.ml", true }, { "pudding.tk", true }, @@ -99285,14 +113794,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "puebladesoto.tk", true }, { "pueblanmilksnake.com", true }, { "pueblocantabro.tk", true }, + { "pueblocc.edu", true }, { "pueblosamerica.com", true }, - { "puenschge.pp.ua", true }, + { "puella.xyz", true }, { "puenteviejo.tk", true }, { "puer.eu.org", true }, + { "puer8.cn", true }, { "puertodramaturgia.tk", true }, + { "puertoplazalasterrenas.com", true }, { "puestifiestas.mx", true }, - { "puestosdeferia.mx", true }, - { "puettba.ch", true }, + { "puettba.ch", false }, { "puetter.eu", true }, { "puffer.blog", true }, { "puffy.tube", true }, @@ -99301,11 +113812,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "puggan.se", true }, { "pugilares.com.pl", true }, { "pugovka72.ru", true }, + { "pugstime.com", true }, { "puhe.se", true }, { "puhudefu.de", true }, { "puissancemac.ch", false }, { "puiterwijk.org", true }, { "pujasharma.associates", true }, + { "pujcky.cz", true }, { "pujd3.gq", true }, { "puka.edu.ee", true }, { "pukfalkenberg.dk", true }, @@ -99315,84 +113828,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pulinkai.eu.org", true }, { "pulinkai.xyz", true }, { "pulito.it", true }, + { "pulitoken.net", true }, { "pulizia.roma.it", true }, { "puliziacantine.it", true }, { "pulizie.roma.it", true }, { "pulizieuffici.milano.it", true }, { "pulizievap.it", true }, + { "pulkovo-cargo.ru", true }, { "pulledporkheaven.com", true }, { "pulley.co.jp", true }, { "pullman.milano.it", true }, { "pullman.roma.it", true }, { "pullnopunchesradio.tk", true }, { "pulower.tk", true }, + { "pulpitsupplypreachers.com", true }, { "pulpproject.org", true }, { "pulsadanvoucher.tk", true }, { "pulsagolden.tk", true }, + { "pulsaojk.com", true }, { "pulsedive.com", true }, + { "pulsenetwork.com", true }, { "pulser.stream", true }, { "pulseroot.ga", true }, + { "pulsestaffingllc.com", true }, { "pulsewavedx.com", true }, - { "pulsnitzer-lebkuchen-shop.de", true }, { "pulsnitzer-lebkuchen.de", true }, - { "pulsnitzer-lebkuchen.shop", true }, - { "pulsnitzer-pfefferkuchen-shop.de", true }, - { "pulsnitzer-pfefferkuchen.shop", true }, { "pulsr.ml", true }, + { "pulsus.mobi", true }, + { "pulvislab.it", true }, { "pumarin.tk", true }, { "pumin.ml", true }, { "pump19.eu", true }, { "pumpen-blum.de", true }, - { "pumpkin-business.com", true }, - { "pumpn.net", true }, { "pumuntincu.eu.org", true }, { "punaise-de-lit-paris.com", true }, { "punat.tk", true }, + { "puncakpass.net", true }, { "punchadragon.com", true }, + { "punchequipment.com", true }, { "punchlinetheatre.co.uk", true }, { "punchlinetheatre.com", true }, { "punchunique.com", true }, { "punctually.gq", true }, { "puncturesafetorquay.com", true }, + { "pundak.games", true }, { "pundix.com", true }, { "puneindia.tk", true }, { "punematka.com", true }, { "pungatv.ml", true }, { "punikonta.de", true }, { "punishment.institute", true }, - { "punitsheth.com", true }, - { "punjabdirectory.in", true }, + { "punjabdirectory.in", false }, + { "punjabsind.in", true }, { "punk-jazz.tk", true }, { "punkapoule.fr", true }, { "punkart.tk", true }, { "punkas.tk", true }, { "punkcolombia.tk", true }, + { "punkgrossos.com", true }, { "punknews.org", true }, { "punknmetal.tk", true }, + { "punksway.top", true }, { "punkt05.de", true }, + { "punshjp.com", true }, { "puntacanalink.com", true }, { "puntacananetwork.com", true }, + { "puntacanapizza.com", true }, { "puntacanavapor.com", true }, + { "puntagordaboatparade.com", true }, { "puntaires.com", true }, { "puntaprop.com", true }, { "puntcunts.com", true }, - { "punte-juwelier.nl", true }, + { "puntoaparte.pe", true }, { "puntocroce.tk", true }, { "puntoestadodemexico.com", true }, { "puntogommevenegono.it", true }, { "puntonium.hu", true }, + { "puntopropiedad.com", true }, { "puntoremov.ga", true }, - { "puntoseguro.com", true }, { "puntualseo.com", true }, - { "puolustus.org", true }, { "pupboss.com", true }, { "pupok.cf", true }, { "pupok.gq", true }, { "puppo.space", true }, { "puppy.actor", true }, + { "puppyfinder.com", true }, + { "puppyfish.com", true }, { "puppykennel.tk", true }, { "puppylove.hu", true }, - { "pupukpatenorganik.com", true }, { "puq.moe", true }, { "pur-institut.fr", true }, { "pura-ponia.cf", true }, @@ -99406,20 +113929,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "purchaserprotect.co.uk", true }, { "purchasescooters.ga", true }, { "purchasetncrash.gov", true }, + { "purchasingpower.com", true }, { "pure-gmbh.com", true }, { "pure-paste.tk", true }, - { "pure-power.tk", true }, { "pure2life.nl", true }, { "pureart.co.jp", true }, { "pureart.jp", true }, + { "pureatmospherellc.com", true }, { "purecodedigital.com", true }, { "puredayshop.com.tw", true }, { "puredisinfecting.com", true }, { "puredisinfection.com", true }, { "puredns.org", true }, + { "purefarminggame.com", true }, { "purefoot.jp", true }, - { "purefreefrom.co.uk", false }, + { "pureleverage.com", true }, { "purelife.photography", true }, + { "pureliferx.com", true }, + { "purelovecoaching.fi", true }, + { "purely.domains", true }, + { "purelymail.com", true }, { "purelypestcontrol.com", true }, { "puremosquito.com", true }, { "purenhd.com", true }, @@ -99434,14 +113963,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "purewaterguide.net", true }, { "purikore.com", true }, { "puritanas.tk", true }, + { "puritas.lk", true }, + { "purits.de", true }, { "purityclothing.co.uk", true }, + { "purneauniversity.org", true }, { "purovive.tk", true }, { "puroyorganico.co", true }, { "puroyorganico.com.co", true }, + { "purpl.ink", true }, + { "purple-dpss.co.uk", true }, { "purple.tech", true }, { "purplebricks.co.uk", true }, - { "purplebricks.com", true }, - { "purplebricks.com.au", true }, + { "purplehost.com.br", true }, { "purplehotel.cf", true }, { "purplemath.com", true }, { "purplemet.com", true }, @@ -99465,10 +113998,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "purrfectmembersclub.com", true }, { "purrfectswingers.com", true }, { "purroy.tk", true }, + { "purrpley.com", true }, + { "purrpley.io", true }, + { "purrpley.me", true }, + { "purrrpley.com", true }, + { "purrrpley.dev", true }, + { "purrrpley.io", true }, + { "purrrpley.me", true }, + { "purrrrpley.com", true }, + { "purrrrpley.io", true }, + { "purrrrpley.me", true }, { "purse-les.com", true }, + { "purstonlamb.com", true }, { "pursuable.cf", true }, { "pursuehappiness.tk", true }, { "pursuingoutdoors.com", true }, + { "pursuit-relax.com", true }, { "purtahan.tk", true }, { "purupuru-shibuya.school", true }, { "purupuru.school", true }, @@ -99478,8 +114023,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pusehusetkattehotell.no", true }, { "pusehusetmalvik.no", true }, { "puset.tk", true }, + { "push-free.com", true }, { "pusha.tk", true }, - { "pushers.com.mx", true }, + { "pushmetrics.io", true }, { "pushoflove.com", true }, { "pushok.tk", true }, { "pushpanel.io", true }, @@ -99488,11 +114034,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pusichatka.ddns.net", true }, { "pusra.ga", true }, { "pussplay.com", true }, - { "pussy-hosting.berlin", true }, { "pussycat.ml", true }, { "pussylickingnow.com", true }, + { "pussyspace.com", true }, { "pustak.tk", true }, { "pustakvishwa.tk", true }, + { "pusztul.at", true }, { "put-spaseniya.ml", true }, { "put.moe", true }, { "put.re", true }, @@ -99511,13 +114058,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "putlire.ga", true }, { "putman-it.nl", true }, { "putnam-fl.gov", true }, + { "putnam-ga.gov", true }, { "putnamcollision.com", true }, + { "putnamcountywv.gov", true }, { "putnamil.gov", true }, { "putnamvalley.gov", true }, + { "putney.io", true }, { "putnik.tk", true }, - { "putokaz.eu", true }, + { "putokaz.eu", false }, + { "putomani.rs", true }, { "putre.io", true }, { "putrock.be", true }, + { "putstrategii.ru", false }, { "putty.org", true }, { "puttymonos.club", true }, { "puttymonos.work", true }, @@ -99538,17 +114090,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "puzzlepoint.ch", true }, { "puzzles-to-print.com", true }, { "puzzleswaps.com", true }, - { "puzzleszeptunki.pl", true }, { "puzzyfun.net", true }, - { "pv-golf.com", true }, { "pv-paderborn-now.de", true }, { "pvalaw.com", true }, { "pvamg.org", true }, { "pvao.gov.ph", false }, + { "pvawa.com.au", true }, { "pvcplafon.com", true }, - { "pvcvoordeel.nl", false }, { "pvda.nl", true }, { "pvdplanet.tk", true }, + { "pvebuilds.xyz", true }, + { "pvgvethospital.co.uk", true }, { "pvh-membrany.ru", true }, { "pvhe.pl", true }, { "pvideo.cz", true }, @@ -99561,40 +114113,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pvpheroes.gg", true }, { "pvpheroes.no", true }, { "pvplist.ml", true }, - { "pvplounge.com", true }, { "pvportal.me", true }, + { "pvpready.gov", true }, { "pvpserverler.pro", true }, { "pvpzone.fr", false }, { "pvtschlag.com", false }, { "pvtx.gov", true }, { "pvv-vermietung.de", true }, { "pvz.tools", true }, + { "pw.org", true }, { "pwaiwm.site", true }, { "pwanotes.ga", true }, { "pwaresume.com", true }, { "pwbaccountants.com", true }, - { "pwclean.com.br", true }, { "pwcva.gov", true }, { "pwd.az", true }, - { "pwd.hu", false }, { "pwd.vc", true }, + { "pwddelhi.gov.in", true }, { "pwdsafe.com", false }, { "pwe.vision", true }, { "pwg-see.de", true }, { "pwgenerator.net", true }, { "pwn.fi", true }, { "pwnedpass.tk", true }, + { "pwneytelecom.com", true }, { "pwnies.dk", true }, - { "pwolk.com", true }, - { "pwoss.org", true }, { "pwoss.xyz", true }, + { "pws.my", true }, { "pwsplash.com", true }, + { "pwss.gov.au", true }, { "pwud.ga", true }, + { "pxagency.fr", true }, + { "pxc-coding.com", true }, { "pxetech.com", true }, { "pxgamer.xyz", true }, { "pxl-mailtracker.com", true }, { "pxl.cl", true }, - { "pxld.sh", true }, + { "pxld.sh", false }, + { "pxnetwork.fr", true }, { "pxq1.com", true }, { "pxstart.cz", true }, { "pxtwitter.com", true }, @@ -99604,10 +114160,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "py.pl", true }, { "py.search.yahoo.com", false }, { "pya.org.tr", true }, + { "pybilgi.com", true }, { "pybtex.org", false }, { "pyca.tk", true }, { "pycckue.tk", true }, { "pychef.com", true }, + { "pycoders.com", true }, { "pycrc.org", true }, { "pycrypto.org", true }, { "pycycle.info", true }, @@ -99620,9 +114178,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pyhello.world", true }, { "pyjiaoyi.cc", true }, { "pyjy.org", false }, - { "pylad.se", true }, { "pylon.bot", true }, - { "pymebi.cl", true }, { "pymescentro.net", true }, { "pymestari.com", true }, { "pymtreceipt.com", true }, @@ -99633,16 +114189,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pypi.org", true }, { "pypi.python.org", true }, { "pyra-explorer.tk", true }, - { "pyramid-it.co.uk", true }, - { "pyramids-megacity.com", true }, { "pyramidsmalleg.com", true }, { "pyramydair.com", true }, { "pyrenees.io", true }, { "pyrios.pro", true }, { "pyro.works", true }, { "pyroballpcbs.com", true }, - { "pyrohandel.de", true }, { "pyromaniac.tk", true }, + { "pyrosoftinc.com", true }, { "pyrotechnologie.de", true }, { "pyspace.org", true }, { "pythia.nz", true }, @@ -99652,6 +114206,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pythondiscord.com", true }, { "pythonhosted.org", true }, { "pythonmorsels.com", true }, + { "pytodon.com", true }, { "pytradebot.com.br", true }, { "pywikibot.org", true }, { "pyxisfreelance.au", true }, @@ -99659,13 +114214,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "pyxisfreelance.com.au", true }, { "pyxo.net", false }, { "pyxyp.com", true }, + { "pzmetallbau.de", true }, { "pzpittsburgh.com", true }, { "pzsearch.nl", true }, { "pzu-masa.pl", true }, + { "pzz.by", true }, { "q-and-a.tk", true }, { "q-inn.com", true }, { "q-inn.nl", true }, - { "q-m.design", true }, { "q-m.space", true }, { "q-technologies.com.au", true }, { "q.to", true }, @@ -99682,7 +114238,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "q6729.co", true }, { "q6729.com", true }, { "q6957.co", true }, - { "q81365.com", true }, + { "q78kg.eu.org", true }, { "q82365.com", true }, { "q8igh228tq.tk", true }, { "q9297.co", true }, @@ -99691,13 +114247,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "q9721.com", true }, { "q9728.co", true }, { "qa-brandywineglobal.com", true }, - { "qa-team.xyz", true }, { "qa.fedoraproject.org", true }, { "qa.stg.fedoraproject.org", true }, { "qaabildigital.com", true }, { "qabalah.ga", true }, { "qabalah.jp", true }, { "qabel.de", true }, + { "qabete.com", true }, { "qac.gov", true }, { "qaconstrucciones.com", true }, { "qadigitals.com", true }, @@ -99712,89 +114268,109 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qani.me", true }, { "qapital.com", false }, { "qaq.cloud", true }, + { "qaq.gay", true }, { "qaq.jp", true }, - { "qaq.sh", true }, { "qarto.com", true }, - { "qasa2ed.online", true }, { "qask.ml", true }, - { "qatarmegadeals.com", true }, { "qatartimes.tk", true }, - { "qatouch.com", true }, + { "qatesol.org.au", true }, + { "qawasmigroup.com", true }, { "qaz.cloud", true }, { "qazcloud.com", false }, { "qazweek.kz", false }, { "qbasic.tk", true }, { "qbasicsite.tk", true }, - { "qbd.eu", true }, - { "qbit.website", true }, - { "qbookstaxpros.com", true }, { "qbrix.dk", true }, - { "qbtechs.com", true }, + { "qbstores.com", true }, { "qbug.cf", true }, { "qc.immo", true }, { "qc.search.yahoo.com", false }, { "qcbrna.qa", true }, + { "qcc.gov.ae", true }, { "qccareerschool.com", false }, { "qcdesignschool.com", false }, + { "qcdjco.com", true }, { "qcdoll.com", true }, { "qcert.org", true }, { "qclean.com.au", true }, - { "qclt.com", true }, { "qcmakeupacademy.com", false }, { "qcmlw.com", true }, + { "qconline.com", true }, { "qconnan-photos.fr", true }, { "qcrx.cn", false }, { "qcstudentcenter.com", false }, { "qcstyleacademy.com", false }, + { "qctimes.com", true }, { "qctravelschool.com", false }, { "qcuarto.com.py", true }, + { "qcwz.com", true }, { "qd6kz.net", true }, { "qdabogados.com", true }, { "qdep.net", true }, + { "qdm.tw", true }, + { "qdmnotizie.it", true }, { "qdon.space", true }, { "qdqlh.cn", true }, + { "qdrama.top", true }, { "qdrat.ml", true }, { "qdrcst.com", true }, - { "qdsgroup.com", true }, { "qdstationary.co.uk", true }, { "qdstationery.co.uk", true }, + { "qduff.com", true }, { "qe-lab.at", true }, { "qed.ai", true }, + { "qeddi.com.au", true }, { "qeepintelligence.tk", true }, + { "qeepitsafe.nl", true }, + { "qeering.link", true }, { "qei.org.au", true }, { "qelectrotech.org", true }, + { "qeros.io", true }, { "qeshmminer.com", true }, { "qetesh.de", true }, { "qetic.co.jp", true }, { "qewc.com", true }, { "qfes.qld.gov.au", true }, { "qfinds.io", true }, + { "qfixhub.com", true }, + { "qfjvv7f.xyz", true }, + { "qform.ru", true }, + { "qfurs.ru", true }, { "qga.com.au", true }, { "qgblog.org", false }, { "qgushi.com", true }, { "qhost.cf", true }, { "qhse-professionals.nl", true }, - { "qhzwz.com", true }, + { "qiai.cf", true }, + { "qiai.ga", true }, + { "qiai.gq", true }, + { "qiai.ml", true }, + { "qiancao.cf", true }, + { "qiancao.ml", true }, { "qianglie.com", true }, + { "qianmo.com", true }, + { "qiannews.net", false }, { "qianqiao.me", true }, { "qiantuwenlu.com", true }, { "qiaohong.org", true }, { "qiaowai.com", true }, { "qiber.org", true }, + { "qicoder.com", true }, { "qicsystems.com", true }, { "qifu.me", true }, { "qifu.org.cn", true }, - { "qigehl.com", true }, { "qihalu.com", true }, { "qihl.gg", true }, { "qike.tk", true }, { "qikify.com", true }, + { "qikio.com.au", true }, + { "qimingbu.com", true }, { "qimingceming.com", true }, { "qin.moe", true }, - { "qinandwang.life", true }, { "qingan.ca", true }, { "qingkong.net", false }, { "qinglingyu.cn", true }, + { "qinglingyu.com", true }, { "qingly.me", true }, { "qingniantuzhai.com", true }, { "qingpat.com", true }, @@ -99802,42 +114378,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qingyule.com", true }, { "qinlili.bid", true }, { "qionouu.cn", true }, - { "qipllc.com", true }, { "qiqitv.info", true }, - { "qirinus.com", true }, { "qis.fr", true }, { "qiscience.tk", true }, + { "qisda.com", true }, + { "qitabbs.com", false }, { "qitano.com", true }, { "qitarabutrans.com", true }, - { "qitzune.com", true }, - { "qiu006.com", true }, + { "qiu.moe", false }, { "qivonline.pt", true }, { "qiwi.be", true }, { "qiwi.cash", true }, + { "qix.ca", true }, + { "qixbit.com", true }, { "qixi.biz", true }, { "qiyan.email", false }, { "qkek.tk", true }, { "qkka.org", true }, { "qklshequ.com", true }, - { "qkmortgage.com", true }, { "ql.tc", true }, { "qlares.nl", true }, { "qlarititech.io", true }, + { "qlc.co.th", true }, { "qlcvea.com", true }, { "qlcvea.it", true }, - { "qldcarwreckers.com.au", true }, { "qldconservation.org.au", true }, { "qldformulaford.org", true }, { "qldnetwork.com.au", true }, { "qliving.com", true }, - { "qlix.pl", true }, + { "qlock.mywire.org", true }, { "qlrace.com", false }, { "qm-marzahnnordwest.de", true }, + { "qm8828.net", true }, + { "qm8838.net", true }, + { "qm8888.net", true }, + { "qmang.com", true }, { "qmarket.tk", true }, { "qmdcoin.com", true }, { "qmee.com", true }, { "qmeriaux.fr", true }, - { "qmp-media.nl", true }, + { "qmp-media.nl", false }, + { "qnap.co.jp", true }, + { "qnap.com", true }, + { "qnap.com.br", true }, + { "qnap.com.cn", true }, + { "qnap.com.hk", true }, + { "qnap.com.tw", true }, + { "qnap.de", true }, + { "qnap.hk", true }, + { "qnap.tw", true }, { "qnected.nl", true }, { "qnixon.com", true }, { "qnotafm.com.co", true }, @@ -99858,9 +114447,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qparents.qld.edu.au", true }, { "qpaypro.com", true }, { "qpcna.org", true }, + { "qpi.net.au", true }, + { "qpipi.com", true }, { "qponverzum.hu", true }, { "qpsinc.com", true }, - { "qq201314.com", true }, { "qq5197.co", true }, { "qq52o.me", true }, { "qq6177.net", true }, @@ -99875,19 +114465,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qqmingzi.cc", false }, { "qqq6.com", false }, { "qqq67.com", true }, - { "qqqq.plus", true }, { "qqrss.com", true }, - { "qqsvip.one", true }, - { "qqsvip.online", true }, - { "qqsvip9.top", true }, { "qr.ae", true }, { "qr.cl", true }, { "qr.gp", true }, { "qr.sb", true }, { "qr0.ch", true }, { "qr1.at", true }, + { "qraa.qld.gov.au", true }, { "qrara.net", true }, { "qrbird.com", true }, + { "qrcoba.org", true }, + { "qrcode.es", true }, { "qrcontagion.com", true }, { "qrd.by", true }, { "qredo.com", false }, @@ -99897,20 +114486,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qrlab.eu", true }, { "qrlab.info", true }, { "qrlab.net", true }, - { "qrlfinancial.com", false }, + { "qrlfinancial.com", true }, + { "qrmenux.com", true }, { "qrpatrol.com", true }, + { "qrplanet.com", true }, { "qrpth.eu", true }, + { "qrsa.com.au", true }, { "qruiser.com", true }, + { "qryptopia.com", true }, { "qrz.one", true }, { "qscloud.de", true }, { "qseek.cf", true }, + { "qsh5.cn", false }, { "qslstudio.tk", true }, { "qsoblog.gq", true }, + { "qssupplies.co.uk", true }, { "qstivi.de", true }, { "qt.ax", true }, { "qt.to", true }, { "qtacairsoft.com", true }, - { "qtl.me", false }, { "qtmd.org", true }, { "qtmsheep.com", true }, { "qtn.net", true }, @@ -99935,70 +114529,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qttransformation.com", true }, { "qtv.ge", true }, { "qtvr.com", true }, - { "qtxh.net", true }, + { "qu.ax", true }, { "qu4rtz.moe", true }, + { "quackapp.com", true }, { "quackquack.in", true }, { "quad9.com", true }, { "quad9.net", true }, { "quadcityjuggalos.tk", true }, + { "quadernoapp.com", true }, { "quadomania.tk", true }, { "quadrantrd.com", true }, { "quadratimkreis.tk", true }, { "quadreon.com", true }, { "quadron.hu", true }, { "quaedam.org", true }, - { "quaestor.com", true }, { "quafe.tech", true }, { "quakeroaksfarm.org", true }, { "quaketips.ga", true }, { "quakeworld.tk", true }, { "qualbe.com", true }, { "qualebroker.com", true }, - { "qualiacomputers.com", false }, - { "qualitation.co.uk", true }, + { "qualescegliere.it", true }, + { "qualiacomputers.com", true }, + { "qualidesign.com.br", false }, + { "qualifiedscholars.com", true }, + { "qualifio.com", true }, + { "qualita.es", true }, + { "qualitahub.com", true }, { "qualite-ecole-et-formation.ch", false }, { "qualith.tk", true }, - { "quality-automation.de", true }, + { "quality-automation.de", false }, { "quality-life.gr", true }, { "qualitycarbonfiber.com", true }, + { "qualitycesspool.com", true }, { "qualitycommerical.com", true }, { "qualityconcreteleveling.com", true }, { "qualityconcreterepair.com", true }, { "qualitydns.net", true }, - { "qualityfactory.com", true }, { "qualityfireproofing.com", true }, { "qualitygame.tk", true }, - { "qualityhomesystems.com", true }, { "qualitymark.com.br", true }, { "qualitymudjacking.com", true }, + { "qualityofcourse.com", false }, { "qualityoflife.ga", true }, { "qualityoflife.tk", true }, { "qualityoutletx.ga", true }, { "qualityoutletx.tk", true }, { "qualitypiering.com", true }, - { "qualityplusconsulting.com", true }, + { "qualityplusconsulting.com", false }, { "qualitypolyjacking.com", true }, { "qualitypropertycare.co.uk", true }, + { "qualityroofingservices.ca", false }, + { "qualitysistemas.com.br", true }, + { "qualitytimemovers.com", true }, { "qualitytitlepaducah.com", true }, - { "qualitytools.com", true }, { "qualitywaterproofingco.com", true }, { "qualityworks.tk", true }, { "qualpay.com", true }, { "qualtrics.com", true }, { "qualyven.com", true }, { "quandoandare.it", true }, - { "quangngaimedia.com", true }, { "quanquan.cyou", true }, { "quanquan.space", true }, + { "quantability.net", true }, { "quantaloupe.tech", true }, { "quantalytics.com", true }, { "quantatec.com.br", true }, { "quantdigit.com", true }, { "quantemplate.in", true }, + { "quanterix.com", true }, + { "quanterra.ch", false }, + { "quantfury.com", true }, + { "quanti.au", true }, { "quanticlab.com", true }, { "quantifiedcommerce.com", true }, { "quantikstudio.tk", true }, { "quantiphi.com", true }, + { "quantiply.tech", true }, { "quantolytic.de", true }, { "quantomaisconsorcios.com.br", true }, { "quantora.nl", true }, @@ -100010,16 +114617,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quantum-evolution.jp", true }, { "quantum-lviv.pp.ua", true }, { "quantum-mechanics.com", true }, + { "quantum.gdn", true }, + { "quantum.gl", true }, { "quantum.gov", true }, + { "quantum.st", true }, { "quantum2.xyz", true }, { "quantum5.ca", true }, - { "quantumca.com.cn", true }, + { "quantumca.com.cn", false }, { "quantumcrypto.nl", true }, { "quantumfinance.com.au", true }, - { "quantumfurball.net", true }, + { "quantumgoldanddiamonds.com", true }, { "quantumlink.tk", true }, + { "quantumortho.com.sg", true }, { "quantumpair.net", true }, { "quantumweb.ml", true }, + { "quantuscreative.com", true }, { "quantweb.tk", true }, { "quanwuji.com", true }, { "quarantine-system.com", false }, @@ -100030,14 +114642,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quarrymill.com", true }, { "quarterfull.com", true }, { "quarterhorses.es", true }, - { "quarticon.com", true }, { "quartix.com", true }, + { "quartix.fr", true }, { "quartogame.tk", true }, - { "quartz.im", true }, { "quartzclinical.com", true }, { "quarus.net", true }, { "quasarelectronics.co.uk", true }, { "quasetio.ml", true }, + { "quashed.co.nz", true }, { "quasiproxy.com", true }, { "quasseldroid.info", true }, { "quassowski.de", true }, @@ -100047,18 +114659,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quatuor-courtage.fr", true }, { "quaxio.com", true }, { "quay.net", true }, + { "quayconsultingllc.com", true }, { "quaydental.ie", false }, { "quba.fr", true }, { "qubes-os.org", true }, { "qubhockey.tk", true }, { "qubicgames.com", true }, - { "qubitechbd.com", true }, { "qubitsandbytes.co.uk", true }, - { "qubyte.codes", true }, + { "qubyte.codes", false }, + { "quebec.ca", true }, { "quebeccat.com", true }, { "quebeccats.com", true }, { "quebecdogs.com", true }, - { "quecocinepeter.com", true }, + { "quebecsolidaire.net", true }, { "quedos.com.au", true }, { "queenbeeink.fi", true }, { "queencomplex.net", true }, @@ -100073,20 +114686,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "queensbotanical.org", true }, { "queensfactory.it", true }, { "queenshaflo.com", true }, + { "queenspark.com", true }, { "queensrdapartments.com.au", true }, { "queenstyles.tk", true }, + { "queentitine.com", true }, { "queenworld.tk", true }, { "queer-augsburg.de", true }, { "queer.farm", true }, { "queer.party", true }, + { "queer.pl", true }, { "queerativity.art", true }, { "queercinema.ch", true }, + { "queerdelta.de", true }, { "queerfest.tk", true }, { "queersin.space", true }, + { "queerspirit.net", true }, { "queirozmiotto.adv.br", true }, { "queirozmiotto.com.br", true }, { "quel-dj.com", true }, - { "quelchemin.com", true }, + { "quelbusinesschoisir.com", true }, { "quellarotondasembrafi.ga", true }, { "quelle-catalog.tk", true }, { "quelle.at", true }, @@ -100095,28 +114713,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quelleez.com", true }, { "quelleformation.net", true }, { "quellenwiese.ski", false }, - { "quemadoresdegrasa.org", true }, { "quemmeliga.com", true }, { "quemquaeritis.tk", true }, - { "quemvende.pt", true }, + { "quemveioprimeiro.com.br", true }, { "quena-artesania.tk", true }, + { "quenchwater.com", true }, { "quenecesitopara.com", true }, { "quenotejodan.cl", true }, { "quentar.tk", true }, - { "quentin-richard.fr", true }, { "quentin-sauvetre.fr", true }, { "quentinaurat.com", true }, - { "quentinb.duckdns.org", true }, { "quentinchevre.ch", true }, + { "quentingemine.be", true }, { "quepourlesjuristes.fr", true }, { "quera.ir", true }, { "querelle.tk", true }, { "querenciavirtual.com.br", true }, { "quermes.net", true }, { "quernon.fr", false }, + { "querocalcular.com.br", true }, { "query-massage.com", false }, + { "query.gov.ps", true }, { "quesartencomprar.com", true }, { "quesecelebra.info", true }, + { "quessinternational.com", true }, { "quest-on-demand.com", true }, { "quest3.co", true }, { "quest3.co.uk", true }, @@ -100142,6 +114762,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "questofaidance.tk", true }, { "questoj.cn", true }, { "questsocial.it", true }, + { "questsys.com", true }, { "questthree.com", true }, { "quetiapine.life", true }, { "quetico.tk", true }, @@ -100154,6 +114775,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quic.cf", true }, { "quic.fr", true }, { "quic.stream", true }, + { "quicareer.com", true }, { "quichante.com", true }, { "quiche-quic.cf", true }, { "quichost.com", true }, @@ -100169,12 +114791,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quickjobsfinder.com", true }, { "quicklinks.tk", true }, { "quicklinkz.tk", true }, + { "quicknode.com", true }, { "quicko.com", true }, { "quickq.nu", true }, { "quickquote.pt", true }, { "quickrate.de", true }, + { "quickrdp.com", true }, + { "quickref.me", true }, + { "quicksell.co", true }, { "quicksell.store", true }, { "quickshops.ga", true }, + { "quickstart.co.za", true }, { "quicksupplies.us", true }, { "quicksupply.com", true }, { "quicktapstudios.com", true }, @@ -100185,9 +114812,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quickway.cn.com", true }, { "quickyshare.com", true }, { "quicomo.it", true }, + { "quidax.com", true }, { "quieoltre.it", true }, { "quiero.news", true }, - { "quieroaprender.tk", true }, { "quieroserbombero.org", true }, { "quieroserdoula.com", true }, { "quieroserdoula.es", true }, @@ -100203,36 +114830,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quietplace.tk", true }, { "quietstudyactivities.tk", true }, { "quietus.gq", true }, + { "quigley.id.au", true }, { "quik.legal", true }, { "quikchange.net", true }, { "quiksite.com", true }, { "quillandinkroleplay.com", true }, { "quillandpage.com", true }, + { "quillandquire.com", true }, { "quilmo.com", true }, - { "quiltednorthern.com", false }, + { "quiltednorthern.com", true }, + { "quiltmc.org", true }, { "quimatic.com.br", true }, { "quimba.tk", true }, { "quimica.science", true }, - { "quimsertek.com", false }, - { "quin.md", true }, + { "quin.md", false }, { "quinder.tk", true }, { "quinmedia.tk", true }, + { "quinn.com", false }, { "quinnbet.com", true }, { "quinnlabs.com", false }, { "quinnlawcenters.com", true }, { "quinnstech.ga", true }, - { "quinoa24.com", true }, { "quinpro.nl", true }, { "quintacbls.cl", true }, + { "quintadasmoitas.com", true }, { "quintadesanamaro.com", true }, { "quintanadelmonte.tk", true }, { "quintanilla.tk", true }, { "quintenbraakman.com", true }, { "quintenbraakman.nl", true }, + { "quinteroorthodontics.com", true }, { "quintessa.org", true }, { "quintobarrio.tk", true }, { "quintonic.fr", false }, + { "quiq-api.com", true }, { "quiq-cdn.com", true }, + { "quiq-frp.com", true }, + { "quiq-in.com", true }, { "quiq-uri.com", true }, { "quiq-url.com", true }, { "quiq.com", true }, @@ -100247,11 +114881,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quirkytravelguy.com", true }, { "quisildenafil.gq", true }, { "quitri.tk", true }, + { "quivedo.com", true }, { "quiwy.ninja", true }, { "quixxisecurity.com", true }, { "quiz.biz", true }, - { "quiz4math.gr", true }, - { "quizandmoney.com", true }, { "quizapps.se", true }, { "quizhub.ml", true }, { "quizinn.live", true }, @@ -100259,7 +114892,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "quizlets.tk", true }, { "quizmaker.ml", true }, { "quizogames.com", true }, - { "quizwhip.co.uk", true }, { "quizz.biz", true }, { "quizzard.ga", true }, { "quizzard.tk", true }, @@ -100274,31 +114906,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qunzi.la", true }, { "quocdesign.ch", false }, { "quocloud.com", true }, + { "quodplacet.com", true }, { "quoi.xyz", true }, { "quoininc.com", true }, { "quokka.codes", true }, { "quora.com", true }, { "quorrax.com", true }, { "quotable.ga", true }, - { "quotaverified.com", true }, { "quoteidiot.com", true }, { "quoteoftheday300.ga", true }, + { "quotescover.com", true }, + { "quoteshindi.net", true }, { "quotesnsayings.net", true }, { "quotesofgta.tk", true }, { "quotev.com", true }, { "quotidiani.net", true }, + { "quotidianodiragusa.it", true }, { "quovadisaustria.com", true }, + { "quoviz.com", true }, { "qupom.com.br", true }, { "quppa.net", true }, { "quprop.com", true }, { "quran-archive.org", true }, { "qurani.tk", true }, + { "quranicremedies.com", true }, { "quranliveonline.com", true }, { "quranpdf.cf", true }, { "quranvoice.tk", true }, - { "qureshicreatives.com", true }, { "qurium.org", true }, { "qurplus.nl", true }, + { "qusi.cf", true }, + { "qusi.ml", true }, { "qussaikhuli.tk", true }, { "quuck.eu", true }, { "quuck.nl", true }, @@ -100310,17 +114948,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qvision.ml", true }, { "qvq.cloud", true }, { "qvq.one", true }, - { "qw-dev.net", true }, { "qwant.com", true }, { "qwantjunior.com", true }, + { "qwanturank.news", true }, + { "qwarkhealth.com", true }, + { "qwasar.io", true }, { "qwaser.fr", true }, { "qwdqwd.de", true }, - { "qwe7002.com", true }, { "qwertee.com", true }, { "qwerty.work", true }, { "qwertyatom100.me", true }, { "qwik.space", true }, { "qwikdash.com", true }, + { "qwiknulledscripts.xyz", true }, { "qwords.com", true }, { "qwq.icu", false }, { "qwq.moe", true }, @@ -100332,27 +114972,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "qwus.tk", true }, { "qx.fi", true }, { "qx.se", true }, + { "qxazusa.xyz", false }, { "qxin.info", true }, - { "qxpress.com.py", true }, - { "qxq.moe", false }, + { "qxq.moe", true }, { "qxzg.org", true }, { "qxzg.xyz", true }, { "qxzgssr.xyz", true }, - { "qy.is", true }, - { "qybot.cn", true }, + { "qy.is", false }, { "qzhou.ddns.net", true }, { "qzin.jp", true }, { "qzlyrics.com", true }, + { "qzr.fi", true }, { "r-ay.cn", true }, { "r-baruth.de", true }, { "r-core.org", true }, + { "r-e-a.net", true }, { "r-gmp.com", true }, { "r-ix.de", true }, + { "r-re.ru", true }, + { "r-rehab.online", true }, + { "r-rehab.org", true }, { "r-rwebdesign.com", true }, { "r-t-b.fr", true }, { "r-t-n.tk", true }, { "r.nf", true }, + { "r.pl", true }, { "r.sb", true }, + { "r00tsandwings.com", true }, { "r00tsolutions.ca", true }, { "r0t.co", true }, { "r0uzic.net", true }, @@ -100364,6 +115010,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "r1ch.net", true }, { "r1h3.nl", true }, { "r1ss.com", true }, + { "r2cdn.com", true }, { "r2d2pc.com", true }, { "r2wind.cn", true }, { "r2wind.com", true }, @@ -100371,6 +115018,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "r36533.com", true }, { "r3bl.blog", true }, { "r3dh4ck.ml", true }, + { "r3gi.cz", true }, { "r3s1stanc3.me", true }, { "r40.us", true }, { "r4g3baby.com", true }, @@ -100380,27 +115028,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "r6957.co", true }, { "r7.com.au", true }, { "r72w.com", true }, - { "r79.ch", true }, { "r7h.at", true }, - { "r81365.com", true }, { "r82365.com", true }, + { "r8corporate.com", true }, { "r9297.co", true }, { "r9397.com", false }, { "r9721.com", false }, { "r9728.co", true }, { "ra-joergensen.de", true }, - { "ra-jurochnik.de", false }, - { "ra-schaal.de", true }, { "ra-studio.ml", true }, { "ra.vc", true }, { "ra3y.xyz", true }, { "raabk.com", true }, { "raadgiverborsen.com", true }, - { "raadvanstate.nl", true }, { "raafwelfaretrustfund.gov.au", true }, { "raailto.com", true }, { "raamattuopisto.fi", true }, { "raar.tk", true }, + { "raassembly.com", true }, { "raaynk.com", true }, { "rabalefood.com", true }, { "raballder.tk", true }, @@ -100412,17 +115057,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rabb-it-days.tokyo", true }, { "rabbisacks.org", true }, { "rabbit.finance", true }, + { "rabbit.org", true }, { "rabbitcallcenter.com", true }, + { "rabbitcare.ae", true }, { "rabbitcare.com", true }, + { "rabbitcare.id", true }, + { "rabbitcare.my", true }, + { "rabbitcare.ph", true }, + { "rabbitcare.qa", true }, + { "rabbitcare.tl", true }, + { "rabbitcare.vn", true }, + { "rabbitdns.org", true }, { "rabbitfinance.com", true }, + { "rabbithash.com", true }, { "rabbitinternet.com", true }, + { "rabbitsearch.org", true }, + { "rabbitserverlist.com", true }, { "rabbitsstore.com", true }, { "rabby.tk", true }, { "rabenkralle.tk", true }, { "raberget.org", true }, { "rabinson2005.tk", true }, { "rabota-online.tk", true }, - { "rabota-x.ru", true }, { "rabotabiz.tk", true }, { "rabotaemdoma.tk", true }, { "rabotanet.tk", true }, @@ -100433,6 +115089,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "racaliz.tk", true }, { "racamera.com", true }, { "racasdecachorro.org", true }, + { "racco.com.br", true }, { "raccoltadifferenziata.it", true }, { "raccoltarifiuti.com", true }, { "raccoltarifiuti.milano.it", true }, @@ -100442,45 +115099,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "racemanager.io", true }, { "racesimscoring.com", true }, { "racetraq.net", true }, + { "rachaelsmaids.com", true }, { "rachaeltaylor.tk", true }, { "rachel-kim.com", true }, + { "rachelandadamarethebest.com", true }, { "rachelchen.me", true }, { "racheldiensthuette.de", true }, { "rachelmoorelaw.com", true }, { "rachelsbouncycastles.co.uk", true }, { "racheltinniswood.ie", true }, { "rachelward.co.uk", true }, + { "rachelwatkins.co.nz", true }, { "rachnacollege.tk", true }, { "racinecounty.gov", true }, { "racing-planet.cz", true }, { "racingfanclub.tk", true }, { "racingteameelde.tk", true }, { "racius.com", true }, - { "rackblue.com", true }, - { "racknride.com", true }, { "rackoon.de", true }, { "raclet.co.uk", true }, { "raconconsulting.co.uk", true }, { "raconteurs.gent", true }, + { "racquetdepot.co.uk", true }, { "racsoft.cl", true }, + { "ractf.co.uk", true }, { "racunalo.com", true }, { "racunovodstvo-prina.si", true }, { "rad-route.de", true }, + { "rad.plus", true }, { "rad2share.com", true }, { "rada-group.eu", true }, + { "radaar.io", true }, { "radar.sx", true }, { "radaravia.ru", true }, { "radarband.tk", true }, { "radarbanyumas.co.id", true }, + { "radarbogor.id", true }, { "radarcoupon.ch", true }, { "radarcoupon.it", true }, { "radarcupao.pt", true }, { "radarcupom.com.br", true }, { "radarcupon.com.ar", true }, + { "radarcupon.com.co", true }, { "radarcupon.com.mx", true }, { "radarcupon.es", true }, - { "radartatska.se", true }, + { "radarcupon.ro", true }, + { "radarfirst.com", true }, + { "radarstationery.com", false }, + { "radartatska.se", false }, { "radartek.com", true }, + { "radbag.de", true }, + { "radbag.nl", true }, { "radbee.com", true }, { "radchakan.com", true }, { "radcliffky.gov", true }, @@ -100490,14 +115159,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radechefonne.it", true }, { "radegundisfest.de", true }, { "radekmazar.eu", true }, + { "radektworek.pl", true }, { "rader.ninja", true }, { "radeticlaw.com", true }, { "radgi.com", true }, { "radharanikijay.tk", true }, { "radiadores.tk", true }, { "radiadoresalternativos.cl", true }, + { "radiadoressoares.com.br", true }, { "radialplus.tk", true }, { "radianceswimwear.com", true }, + { "radiantawards.com", true }, { "radiantenergy.tk", true }, { "radiantwonder.com", true }, { "radiation-oncologist.gr", true }, @@ -100510,6 +115182,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radicallycanadian.com", true }, { "radicaloptimism.org", true }, { "radicalsub.com.br", true }, + { "radicaltransformationproject.com", true }, { "radicalwebdesign.co.uk", true }, { "radio-amezi.tk", true }, { "radio-angelos.tk", true }, @@ -100527,11 +115200,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radio-news.tk", true }, { "radio-of-magic.com", true }, { "radio-one.ml", true }, + { "radio-online.com", true }, { "radio-online.tk", true }, { "radio-pulsar.com", true }, { "radio-pulsar.eu", true }, { "radio-utopie.de", true }, { "radio-valois-multien.fr", true }, + { "radio.de", true }, + { "radio.es", true }, + { "radio.fr", true }, { "radio1.ie", true }, { "radio404.tk", true }, { "radio4friends.tk", true }, @@ -100544,14 +115221,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radioafibra.com.br", true }, { "radioaltamar.tk", true }, { "radioalternativa.tk", true }, - { "radioanaconda.tk", true }, { "radioar.tk", true }, { "radioarzua.tk", true }, { "radioazioni.tk", true }, { "radiobandung.tk", true }, { "radioborges.tk", true }, { "radiobucarica.cf", true }, - { "radiobunker.ru", true }, { "radiocappissima.tk", true }, { "radiocartel.tk", true }, { "radiocc.ddns.net", true }, @@ -100581,6 +115256,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radioenam.tk", true }, { "radioenergia.tk", true }, { "radioesferico.tk", true }, + { "radioevolucion.es", true }, { "radioexito.tk", true }, { "radiofmimagen.net", true }, { "radiofred.tk", true }, @@ -100595,10 +115271,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radiohlam.cf", true }, { "radiohlam.ga", true }, { "radiohouse.tk", true }, - { "radiohub.mx", true }, - { "radiohub.ru", true }, { "radioibiapina.tk", true }, + { "radioilusion.es", true }, { "radioilusiones.tk", true }, + { "radioiman.net", true }, { "radiojackienorth.tk", true }, { "radiojeneverstoker.tk", true }, { "radioknop.nl", true }, @@ -100611,6 +115287,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radiolibertad.tk", true }, { "radioliberty.ga", true }, { "radiolla.com", true }, + { "radiolodz.pl", true }, { "radiom.fr", true }, { "radiomacuto.gq", true }, { "radiomagicafm.tk", true }, @@ -100621,21 +115298,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radiomedia.tk", true }, { "radiomercure.net", true }, { "radiometal.tk", true }, + { "radiometeor.com", true }, { "radiomikelerentxun.tk", true }, + { "radiomix.cz", true }, { "radiomixer.net", true }, { "radiomodem.dk", true }, { "radiomontebianco.it", true }, { "radiomoodmix.tk", true }, { "radionalita.tk", true }, { "radionetcolombia.tk", true }, + { "radionikkei.com", true }, { "radionojavan.ir", true }, { "radionoticias.tk", true }, { "radionrg.tk", true }, { "radiooffice.tk", true }, + { "radioombo.xyz", true }, + { "radioonline.com", true }, { "radioparquesur.tk", true }, + { "radiopatapoe.nl", true }, { "radioperfect.tk", true }, { "radiopharereims.tk", true }, { "radiopicaflor.tk", true }, + { "radioplayer.ie", true }, { "radiopleer.net", true }, { "radiopolarniki.spb.ru", true }, { "radiopranfm.cf", true }, @@ -100653,11 +115337,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radiosanducito.tk", true }, { "radiosatbolivia.com", true }, { "radioscope.tk", true }, - { "radiosdeguate.com", true }, + { "radiosdeguate.com", false }, { "radioseda.ca", true }, { "radiosilver.tk", true }, { "radiosimba.ug", true }, - { "radiosity.club", true }, { "radiosterrekijker.tk", true }, { "radiosuperplus.tk", true }, { "radioszczecin.pl", true }, @@ -100688,6 +115371,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radiumcode.com", true }, { "radiumone.io", true }, { "radiusmethod.com", true }, + { "radiusone.com", true }, { "radixsalon.tk", true }, { "radixweb.com", true }, { "radlina.com", true }, @@ -100695,14 +115379,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radnickapartija.tk", true }, { "radnicki-nis.tk", true }, { "radnoc.com", true }, + { "radogear.com", true }, { "radoman.ga", true }, { "radon.tk", true }, + { "radon.vip", true }, { "radopsec.com", true }, { "radopsec.net", true }, { "radopsec.org", true }, { "radost-crikvenica.hr", true }, { "radost.digital", true }, + { "radpath.at", true }, { "radreisetraumtreibstoff.de", true }, + { "radsafety.inf.ua", true }, { "radstake.de", true }, { "raduga-tv.tk", true }, { "raduga4.ml", true }, @@ -100710,10 +115398,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "radwebhosting.com", true }, { "radyabkhodro.net", true }, { "radyn.com", true }, - { "radyodinle.mobi", true }, + { "radyogemisi.com", true }, { "radzikow.ski", true }, { "raeder-test.azurewebsites.net", true }, - { "raestingar.is", true }, + { "raedium.aero", true }, { "raeu.me", true }, { "raeven.nl", false }, { "raevinnd.com", true }, @@ -100723,16 +115411,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rafaelortiz.es", true }, { "rafaelsobis.tk", true }, { "rafaeltuber.cf", true }, + { "rafalkukla.com", true }, { "rafaprialv.com", true }, { "rafaroca.net", true }, { "rafas.com.tr", true }, { "rafclan.tk", true }, { "raffaellaosti.com", true }, + { "raffall.com", true }, + { "rafinad.io", true }, { "rafo.tk", true }, { "rafsis.com", false }, { "raft.pub", true }, { "rafting-japan.com", true }, - { "rafunnews.com", true }, + { "ragadoor.com", true }, { "ragasto.nl", true }, { "rage-overload.ch", true }, { "rage4.com", true }, @@ -100740,39 +115431,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raginggaming.ga", true }, { "ragingrune.tk", true }, { "ragingserenity.com", true }, - { "raglits.co.uk", false }, { "ragnamania.tk", true }, { "ragnamart.tk", true }, { "ragnaroktop.com.br", true }, + { "ragsnprints.com", true }, { "ragstores.com", true }, + { "ragt.ag", true }, + { "ragu.co.uk", true }, { "ragusina.hr", true }, { "rahasyavedicastrology.com", true }, { "rahayi.tk", true }, { "raheel.cf", true }, { "raheel.tk", true }, + { "raheem.marketing", true }, { "rahenytennis.tk", true }, + { "rahil-p.com", true }, { "rahilworld.tk", true }, { "rahimareports.ml", true }, { "rahmans.tk", true }, { "rahul.moe", true }, - { "rahulpnath.com", true }, - { "rahvusraamatukogu.ee", true }, + { "rahulsadarangani.com", true }, + { "rai88asia.com", true }, { "raiceshebreas.org", true }, { "raid-runners.fr", true }, + { "raiden.network", true }, { "raidensnakesden.co.uk", true }, { "raidensnakesden.com", true }, { "raidensnakesden.net", true }, + { "raidentawork.lt", true }, { "raiderhacks.com", true }, - { "raidkeeper.com", true }, { "raidstone.net", true }, { "raidstone.rocks", true }, { "raiffeisen-kosovo.com", true }, + { "raiffeisen.al", true }, + { "raiffeisenbank.ba", true }, { "raiffeisenleasing-kosovo.com", true }, { "raiilto.com", true }, { "raikko.tk", true }, { "rail-o-rama.nl", true }, { "rail24.nl", true }, { "rail360.nl", true }, + { "railalabwork.lt", true }, { "railbird.nl", true }, { "railbus.fan", true }, { "railcarrxqa.com", true }, @@ -100784,8 +115483,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raillto.com", true }, { "railorama.nl", true }, { "railpassie.nl", true }, + { "railroadhistory.net", true }, { "railsideworks.com", true }, - { "railsmaintenance.com", true }, + { "railsperformance.com.br", true }, { "railto.cm", true }, { "railto.co", true }, { "railto.com", true }, @@ -100796,32 +115496,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "railvideo.co.uk", true }, { "railvideo.net", true }, { "railvideo.nl", true }, + { "railway.moe", true }, + { "railwayease.com", true }, { "rain.bz", true }, + { "rainative.com", true }, { "rainbeaus.cf", true }, { "rainbeaus.ga", true }, { "rainbeaus.gq", true }, { "rainbeaus.ml", true }, { "rainbow-christian.tk", true }, { "rainbow-web.com", true }, - { "rainbowbay.org", true }, { "rainbowbrains.com", true }, { "rainbowcomputer.tk", true }, { "rainbowflowers.co.uk", false }, { "rainbowinflatables.co.uk", true }, + { "rainbowlaserspewpew.xyz", true }, { "rainbowloompattern.com", true }, { "rainbowloompatterns.com", true }, { "rainbowmath.tk", true }, - { "rainbowrosescholarship.org", true }, { "rainbowsmoothies.win", true }, + { "rainbowstars.ru", true }, { "rainbowstore.com.au", true }, { "rainbowstore.com.ua", true }, + { "rainbowsushi.dk", true }, { "rainbowswingers.net", true }, - { "raincity.cc", true }, + { "rainbowtransport.com", true }, { "raincoat.systems", true }, { "rainel.at", true }, - { "rainer-knappe.de", true }, + { "rainerstoll.at", true }, { "rainevixen.com", true }, + { "rainfall.ro", true }, { "rainforest.engineering", true }, + { "rainforestfoundation.org", true }, { "rainierpros.com", true }, { "rainiv.com", true }, { "rainmanzone.com", true }, @@ -100831,9 +115537,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raintreatment.ga", true }, { "rainturtle.com", true }, { "rainuk.com", true }, - { "rainvape.com", true }, { "rainville.me", true }, - { "rainway.com", true }, { "rainway.io", true }, { "raipet.no-ip.biz", true }, { "raise-educationandwellbeing.co.uk", true }, @@ -100841,46 +115545,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raisects.co.uk", true }, { "raisetheyouth.co.uk", true }, { "raiseyourflag.com", true }, - { "raisingzona.com", true }, + { "raisingresilientreaders.com", true }, { "raisioammattilaisille.fi", true }, { "raissarobles.com", true }, { "raistrick.art", true }, { "raistrick.it", true }, { "raitza.de", true }, + { "raj.nic.in", true }, + { "raja.fr", true }, { "rajaealhoceima.tk", true }, { "rajafashion.tk", true }, + { "rajapack.be", true }, + { "rajapack.co.uk", true }, + { "rajapack.de", true }, + { "rajapack.es", true }, + { "rajapack.it", true }, + { "rajapack.nl", true }, { "rajasatour.id", true }, { "rajeen.tk", true }, { "rajeshkochhar.com", true }, { "rajeshkumar.tk", true }, { "rajivdeepinsights.com", true }, { "rajkapoordas.com", true }, + { "rajkotupdates.news", true }, { "rajofestival.tk", true }, { "rajomon.com", true }, { "rajrajasthani.tk", true }, { "rajsolankimusic.ga", true }, + { "rajtechnologies.com", true }, { "rajudhoni.ga", true }, { "rak-business-service.com", true }, + { "rakennuspeli.com", true }, { "rakeshkaryana.com", true }, { "raketa.travel", true }, { "raketaholst.com.ua", true }, - { "raketaro.de", true }, { "raketenwolke.de", true }, + { "rakett.org", false }, { "rakibzashup.ml", true }, { "rakibzashup.tk", true }, { "raklouisville.com", true }, { "rakom.tk", true }, { "rakovec.hr", true }, + { "raksa.media", true }, { "raksha-bandhanwish.ga", true }, { "rakshitrekhi.tk", true }, { "raku.bzh", true }, { "raku.land", true }, - { "rakugaki.cn", true }, + { "rakugaki.cn", false }, { "rakugokai.net", true }, + { "ralaoui.com", true }, + { "ralaoui.me", true }, + { "raleighadultmedicine.com", true }, + { "raleighboneandjoint.com", true }, { "raleighcapitolent.com", true }, + { "raleighmedicalgroup.com", true }, + { "raleighpsych.com", true }, { "raleighsinuscenter.com", true }, { "ralfs-zusizone.de", true }, - { "ralix.net", true }, { "rally-base.com", true }, { "rally-base.cz", true }, { "rally-base.eu", true }, @@ -100890,14 +115611,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rallybase.eu", true }, { "rallycycling.com", false }, { "rallyedu.com", true }, + { "rallyekrumlov.cz", true }, { "rallyfotosaswin.tk", true }, - { "rallypodium.be", true }, { "rallyservice.pl", true }, { "rallytrophy.tk", true }, + { "ralphandretta.com", true }, + { "ralphandretta.net", true }, + { "ralphandretta.org", true }, { "ralphbisschops.com", true }, { "raltha.com", true }, { "ralvke.rocks", true }, - { "ram-it.nl", true }, { "ram-tenancy.cf", true }, { "ram-tenancy.ga", true }, { "ram-tenancy.ml", true }, @@ -100906,26 +115629,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ramatola.uk", false }, { "ramblingrf.tech", true }, { "rambo.codes", true }, + { "rambus.com", true }, { "ramchand.tk", true }, { "ramel.tk", true }, { "ramen-dealer.de", true }, { "ramenramenramen.net", true }, - { "rametrix.com", true }, + { "ramfaseo.ca", true }, + { "ramfy.ru", true }, { "ramiabusalah.tk", true }, { "ramieres.cf", true }, { "ramirito.tk", true }, { "ramitan.com", true }, { "ramkot.tk", true }, { "ramle.be", true }, - { "ramleather.vn", true }, { "rammstein-portugal.com", true }, { "rammsteinaustralia.tk", true }, { "rammsteinzone.tk", true }, - { "ramonadeluxe.net", true }, - { "ramonguilherme.com.br", true }, + { "ramonguilherme.com.br", false }, + { "ramonnomarpornstar.com", true }, { "ramos.tur.br", true }, { "ramosmartinneble.es", true }, - { "ramov.org", true }, { "ramowitha.com", true }, { "ramp.com", true }, { "rampeboreal.ca", true }, @@ -100934,27 +115657,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ramplaysugente.tk", true }, { "ramrecha.com", false }, { "ramsaver.com.br", true }, + { "ramsay.xyz", true }, + { "ramsayshorsetransport.com", true }, + { "ramsayshorsetransport.com.au", true }, { "ramsdensforcash.co.uk", true }, { "ramsdensplc.com", true }, { "ramseycountymn.gov", true }, - { "ramseycs.net", true }, + { "ramseycs.net", false }, { "ramsor-gaming.de", true }, { "ramt.tk", true }, { "ramtechmodular.com", true }, + { "ramusa.org", true }, + { "ramwindows.com", true }, { "ramydent.no", true }, { "ramynetwork.tk", true }, + { "ramzinex.com", true }, { "ran-drunken.tk", true }, - { "ran-sama.ddns.net", true }, + { "ran-ran.top", true }, { "rana.realestate", true }, { "rana.shop", true }, - { "ranalawassociates.com", true }, { "ranasinha.com", true }, + { "rancakmedia.com", true }, { "rancheriastereo.tk", true }, - { "rancourtstfrancois.com", true }, + { "ranchesterwy.gov", true }, { "rancowar.com", true }, - { "randallbollig.com", true }, { "randallcounty.gov", true }, + { "randallcraig.com", true }, { "randallso.gov", true }, + { "randburgplumber-247.co.za", true }, { "randburgplumbing.co.za", true }, { "randc.org", true }, { "randolf.ca", true }, @@ -100962,10 +115692,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "randolphcountyil.gov", true }, { "random-project.com", true }, { "random-samplings.org", true }, - { "random-stat.work", true }, { "random.org", true }, + { "randomactsofkindness.org", true }, { "randomadversary.com", true }, { "randomarticle.ml", true }, + { "randombig.cat", true }, { "randombit.eu", false }, { "randombooks.gq", true }, { "randombrainwave.cf", true }, @@ -100974,7 +115705,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "randombrainwave.ml", true }, { "randomcode.org", true }, { "randomdomain.io", true }, + { "randomforestweb.com", true }, { "randomforum.tk", true }, + { "randomideas.me", true }, + { "randomizer.space", true }, { "randomkindness.tk", true }, { "randomkoalafacts.com", true }, { "randompasswordgenerator.fun", true }, @@ -100986,9 +115720,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "randomstuffproductions.tk", true }, { "randomtest.cf", true }, { "randomthings.cf", true }, + { "randomuuid.org", true }, { "randomweb.tk", true }, { "randorn.com", true }, - { "randstalker.ovh", true }, + { "randox.com", true }, + { "randoxhealth.com", true }, { "randy.su", true }, { "randyandpixel.com", true }, { "randymajors.org", true }, @@ -100999,19 +115735,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rang-mediengestaltung.de", true }, { "rangde.org", true }, { "range.co", true }, + { "rangeforce.com", true }, + { "rangeforce.eu", true }, { "rangercollege.edu", true }, { "rangerfiles.tk", true }, { "rangersloyalsite.tk", true }, { "rangersofbelgium.be", true }, { "rangeweb.ga", true }, - { "rangsmo.se", true }, + { "ranginkamonkadeh.ir", true }, + { "rangsmo.se", false }, { "rangzol.now.sh", true }, - { "ranjanbiswas.co.in", true }, - { "ranjanbiswas.com", true }, + { "raniermn.gov", true }, { "ranjanbiswas.in", true }, { "ranjanbiswas.net", true }, { "ranjeetmehta.tk", true }, - { "rank-net.de", true }, { "rankeco.com", true }, { "ranker.work", true }, { "rankia.ga", true }, @@ -101022,7 +115759,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rankingofe.com.pl", true }, { "rankingubezpieczeniowy.pl", true }, { "rankingubezpieczennazycie.pl", true }, - { "rankpower.com", true }, + { "rankmetrix.xyz", true }, { "ranksite.cf", true }, { "ranksite.ga", true }, { "ranksite.gq", true }, @@ -101033,7 +115770,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rannamoisaaiasalong.ee", true }, { "rannseier.org", true }, { "ranos.org", true }, + { "ransomspares.co.uk", true }, { "ranson.com.au", true }, + { "ransonwv.gov", true }, { "rantalaholcomb.tk", true }, { "rantamplan.tk", true }, { "rantanda.com", true }, @@ -101045,8 +115784,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raochana.com", true }, { "raoliveoil.ga", true }, { "raomed.com.ar", true }, + { "raovat.net", true }, { "raovatsaigon.tk", true }, { "rap4ever.org", true }, + { "rapala.com", true }, { "rapanui.tk", true }, { "rapay.net", true }, { "rapbull.net", true }, @@ -101059,42 +115800,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raphaelmoura.ddns.net", true }, { "raphaelschneider.de", true }, { "raphrfg.com", true }, + { "rapid-care.com", true }, { "rapidapp.io", true }, { "rapidcenter.tk", true }, + { "rapidcityjournal.com", true }, + { "rapidessay.com", true }, { "rapidgator.net", true }, { "rapidguide.tk", true }, { "rapidlegal.com", true }, { "rapidminer.com", false }, { "rapidoo.com.br", true }, + { "rapidrise.digital", true }, { "rapidscale.net", true }, - { "rapidsec.net", true }, + { "rapidseo.net", true }, { "rapidshit.net", true }, + { "rapidspike.com", true }, { "rapidssl.com.ru", true }, + { "rapidsslonline.com", true }, { "rapidstone.com", true }, { "rapidxray.biz", true }, + { "rapnet.com", true }, + { "raposafixe.pt", true }, { "rapoteka.tk", true }, { "rappet.de", true }, { "rappisexshop.com", true }, { "rapport.link", true }, - { "rapportdecoracoes.com.br", true }, { "raps.org", true }, + { "rapsconfab.com", true }, { "raptechpk.com", true }, { "raptorsrapture.com", true }, { "rapu.nz", true }, { "rapwoyska.tk", true }, + { "rapyd.net", true }, + { "raqebpress.com", true }, { "raqoo.jp", true }, { "raquelmolinacases.tk", true }, { "rar.moe", true }, + { "raranga.net.nz", true }, + { "rarbg2020.org", true }, { "rarbgmirror.com", true }, + { "rarbgmirrored.org", true }, + { "rarbgproxied.org", true }, { "rarbgproxy.com", true }, + { "rarbgunblock.com", true }, + { "rarbgunblocked.org", true }, + { "rare-x.org", true }, { "rarece.cf", true }, + { "rarediseaseday.org", true }, { "rarefish.tk", true }, { "raregems.io", true }, + { "rarehi.com", true }, { "rarename.tk", true }, + { "rarity.tools", true }, + { "raritysniper.com", true }, { "rarlab.com", true }, + { "rarlabs.com", true }, + { "raroh73.xyz", true }, + { "rarous.net", true }, + { "rarsoft.com", true }, { "raryosu.info", true }, + { "rasa.com", true }, { "rasadnikcvecaperic.rs", false }, { "rasagiline.com", true }, + { "rasaja.com", true }, { "rasberry.cf", true }, { "rascals-castles.co.uk", true }, { "rascals.ga", true }, @@ -101111,13 +115879,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raskruti.ml", true }, { "raskrutka.cf", true }, { "rasmushaslund.com", true }, + { "rasnyder.com", true }, { "rasp-consulting.de", true }, { "raspberryultradrops.com", true }, { "raspclock.com", true }, - { "raspii.tech", true }, { "raspitec.ddns.net", true }, { "rassadacvetov.com", false }, { "rasset.ie", true }, + { "rassistem.rs", true }, { "rassro.sk", true }, { "rastabooks.ga", true }, { "rasteniem.ru", true }, @@ -101126,9 +115895,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rat.pw", true }, { "rataassociates.com", true }, { "ratajczak.one", true }, - { "ratansonline.com", true }, { "ratasdesign.com", true }, - { "ratcliff.io", true }, + { "ratatosk.net", true }, { "ratd.net", true }, { "rate.is", true }, { "ratebridge.com", true }, @@ -101137,30 +115905,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ratelsec.com", true }, { "ratemyfishtank.com", true }, { "ratepayeralliance.org", true }, - { "ratethechief.com", true }, - { "ratgeber-guide.de", true }, + { "rates.ca", true }, + { "ratespy.com", true }, { "rathbonesonline.com", true }, + { "rathdrum.gov", true }, + { "rathdrumpolice.gov", true }, + { "ratherrarerecords.com", true }, { "rathgeb.org", true }, { "rathmann-couture.de", true }, { "rathorian.fr", true }, - { "ratingscoop.com", true }, + { "rathsallaghhouseonline.com", true }, + { "ratingostar.com", true }, + { "ratingraph.xyz", true }, { "ratinq.co", true }, { "ratiocinat.ga", true }, + { "ratiocontent.de", false }, { "rationalcreation.com", true }, { "rationalism.com", true }, { "rationalops.com", true }, { "ratirl.be", true }, { "ratman.xyz", true }, { "ratsmicedormice.com", true }, + { "rattanhousecarpentry.com", true }, { "rattattees.com", true }, { "rattenkot.io", true }, { "ratujemyzwierzaki.net", true }, { "ratujmydzikiekoty.org", true }, - { "ratujmydzikiekoty.pl", true }, + { "ratunek.com.pl", true }, { "ratusha.ml", true }, + { "rauchfrei-info.de", true }, { "raulmalea.ro", true }, { "raulrivero.es", true }, { "raulval.com", true }, + { "raumausstatter-fangmann.de", true }, { "rauros.net", true }, { "rauschenbach.de", true }, { "rautarutto.tk", true }, @@ -101169,10 +115946,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ravagers.tk", true }, { "ravages.tk", true }, { "ravalement-facade.net", true }, - { "ravasco-football-team.herokuapp.com", true }, - { "ravchat.com", true }, + { "ravallirepublic.com", true }, { "raveboy.dyndns.org", true }, { "ravefm.tk", true }, + { "ravelin.click", true }, { "ravelin.com", true }, { "raven.dog", true }, { "raven.express", true }, @@ -101183,11 +115960,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ravengergaming.net", true }, { "ravenhillavenue.com", true }, { "ravennatoday.it", true }, - { "ravenousravendesign.com", true }, { "ravenrealms.tk", true }, + { "ravenrepublic.net", true }, { "ravenrockrp.com", true }, { "ravenstonejeweler.com", true }, + { "raventechnology.es", true }, { "ravenx.me", true }, + { "ravescout.club", false }, { "raveseguros.com", true }, { "ravesteijn.nl", true }, { "ravhaaglanden.org", true }, @@ -101195,9 +115974,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ravijuhend.ee", true }, { "ravik.tk", true }, { "ravimiamet.ee", false }, + { "ravimiregister.ee", true }, { "ravinala-airports.aero", true }, + { "ravindran.me", true }, { "raviparekh.co.uk", true }, { "ravis.org", true }, + { "ravkavonline.co.il", true }, { "ravkr.duckdns.org", true }, { "ravnareka.tk", true }, { "ravne.land", true }, @@ -101206,6 +115988,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raw.nl", true }, { "rawa-ruska-union-nationale.fr", true }, { "rawb0ts.io", true }, + { "rawballs.nl", true }, { "rawbeautysource.com", true }, { "rawdamental.com", true }, { "rawdutch.nl", true }, @@ -101213,33 +115996,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rawforce.tk", true }, { "rawhoney.me", true }, { "rawinfosec.com", true }, + { "rawley.co.uk", true }, { "rawlinswy.gov", true }, { "rawlord.ga", true }, { "rawmarkable.co.uk", true }, + { "rawmathub.gr", true }, + { "rawmonolife.ru", true }, { "rawpearls.com", true }, - { "rawr.com", true }, { "rawr.sexy", true }, { "raxion.cf", true }, { "raxion.tk", true }, { "ray-works.de", true }, { "raya.io", false }, { "rayadventure.com", true }, - { "rayanou.com", true }, { "raycarruthersphotography.co.uk", true }, { "raycon.io", true }, { "raydius.de", true }, - { "raydolap.web.tr", false }, - { "raydolapfiyat.com", false }, { "rayfalling.com", true }, + { "rayhillforsupremecourt.com", true }, { "rayiris.com", true }, + { "rayj.me", true }, { "raykitchenware.com", true }, { "raylo.com", true }, { "raym.ml", true }, - { "raymcbride.com", true }, { "raymd.de", true }, { "raymondelooff.nl", true }, { "raymondha.ca", true }, { "raymondha.com", true }, + { "raymondvineyards.com", true }, { "raymundo.doctor", true }, { "raynbo.ai", true }, { "raynis.net", true }, @@ -101251,14 +116035,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "raysmtp.ga", true }, { "raysolutions.tk", true }, { "raystark.com", true }, + { "raystedman.org", true }, { "raytonne.cn", true }, { "raytonne.com", true }, + { "rayusradiology.com", true }, { "raywardapparel.com", true }, { "raywisdom.tk", true }, + { "raywjohnson.com", true }, + { "raywjohnson.info", true }, + { "raywjohnson.me", true }, + { "raywjohnson.net", true }, { "rayworks.de", true }, - { "razajewellers.com", true }, - { "razajewellers.pk", true }, { "razakhanimazhab.tk", true }, + { "razalabs.com", true }, { "razalabs.gr", true }, { "razberry.kr", true }, { "razborpoletov.cf", true }, @@ -101272,19 +116061,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "razeencheng.com", true }, { "razgon.ga", true }, { "razgon.tk", true }, + { "razhayezendegi.ir", true }, { "raziculacrimi.ro", true }, { "razoesparaacreditar.com", true }, { "razrabo.tk", true }, { "razrsec.uk", true }, + { "razvan.digital", true }, { "razvanburz.ro", true }, { "razvanvatamanu.ro", true }, { "razvlekuha.cf", true }, { "razvlekuhablog.tk", true }, { "rb-china.net", true }, - { "rb0.de", true }, + { "rb.cz", true }, { "rballday-entertainment.nl", true }, + { "rbbuae.com", true }, { "rbcafe.com", true }, - { "rbcservicehub-uat.azurewebsites.net", true }, + { "rbclub.cz", true }, + { "rbcosmetici.it", true }, { "rbd.events", true }, { "rbensch.com", false }, { "rbet.tk", true }, @@ -101297,22 +116090,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rbltracker.com", true }, { "rbmafrica.co.za", true }, { "rbmland.com", true }, - { "rbn.is", true }, { "rbnet.xyz", true }, + { "rbocache.com", true }, { "rbs.co.uk", true }, { "rbs.com", true }, { "rbscrochet.com", true }, { "rbsexshop.com.br", true }, + { "rbsinternational.com", true }, { "rbt.rs", true }, { "rbt.sx", true }, { "rbtvshitstorm.de", true }, { "rbuddenhagen.com", true }, { "rbunews.tk", true }, { "rburchell.com", false }, + { "rburz.com", true }, { "rbx.com", true }, { "rbx.gg", true }, { "rc-offi.net", true }, + { "rc-refer.nhs.uk", true }, { "rc-shop.ch", true }, + { "rc.cruises", true }, + { "rc1.eu", true }, { "rc21x.com", true }, { "rc2edit.nl", true }, { "rc3n.com", true }, @@ -101321,12 +116119,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rca2015.ru", true }, { "rcbanger.tk", true }, { "rccars.info", true }, + { "rccgstrongtowerng.org", true }, { "rccom.ru", true }, - { "rccsc.org", true }, { "rcd.cz", false }, { "rcdeescolasantcugat.com", true }, + { "rcdevs.com", true }, { "rcdocuments.com", true }, { "rcdrone.tk", true }, + { "rcelectronica.com", true }, { "rcfl.gov", true }, { "rcforex.com", true }, { "rcgoncalves.pt", true }, @@ -101344,15 +116144,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rcotec.be", true }, { "rcpdesign.cl", true }, { "rcphiphop.tk", true }, + { "rcprogranada.com", true }, { "rcraigmurphy.net", true }, { "rcru.org", true }, { "rcsacessoria.online", true }, { "rcsda.net", true }, - { "rcsolutions.nl", true }, + { "rcslt.org", true }, + { "rcsolutions.nl", false }, { "rct-chair.com", true }, { "rct.sk", false }, { "rct.uk", true }, { "rctalk.com", true }, + { "rcteam.fr", true }, { "rctiads.com", true }, { "rctrk.net", true }, { "rctruck.nl", false }, @@ -101360,7 +116163,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rcxzsc.com", true }, { "rd0xb.com", true }, { "rdactive.de", true }, - { "rdactive.net", true }, { "rdcdesign.com", true }, { "rddjapan.info", true }, { "rded.nl", true }, @@ -101373,39 +116175,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rdh.asia", true }, { "rdienclosures.com", true }, { "rdimedical.com", true }, - { "rdjb2b.com", true }, { "rdkf.de", true }, { "rdl.at", true }, + { "rdm.lu", true }, { "rdmc.biz", true }, { "rdmc.center", true }, { "rdmc.contact", true }, + { "rdmc.education", true }, { "rdmc.fr", true }, { "rdmc.host", true }, { "rdmc.info", true }, { "rdmc.io", true }, { "rdmc.link", true }, + { "rdmc.live", true }, { "rdmc.network", true }, { "rdmc.ovh", true }, { "rdmc.report", true }, - { "rdmc.sh", true }, { "rdmc.site", true }, { "rdmc.support", true }, { "rdmc.systems", true }, - { "rdmrotterdam.nl", true }, + { "rdmc.tel", true }, + { "rdmc.tn", true }, + { "rdmc.vision", true }, + { "rdmc.wiki", true }, + { "rdmrotterdam.nl", false }, { "rdmshit.net", true }, - { "rdmtaxservice.com", true }, - { "rdns.cc", true }, + { "rdmtaxservice.com", false }, + { "rdn-team.com", true }, { "rdns.gq", true }, { "rdo.gg", true }, - { "rdsm.be", true }, + { "rdrama.net", true }, + { "rdsm.be", false }, { "rdtech.de", true }, { "rdto.io", true }, { "rdv-cni.fr", true }, { "rdv-coquin-rapide.fr", true }, - { "rdv-prefecture.com", true }, { "rdvobras.pt", false }, { "rdwh.tech", false }, - { "rdxbioscience.com", true }, + { "rdwz.one", true }, { "rdzenie.pl", true }, { "re-align.life", true }, { "re-arranged.tk", true }, @@ -101416,21 +116223,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "re.yt.nom.br", true }, { "reach-on.de", true }, { "reach.gov", true }, + { "reach.gov.sg", true }, { "reachdigital.com.au", true }, { "reachhead.com", true }, { "reachley.net", true }, { "reachout-ghana.com", true }, + { "reachout2.nl", true }, + { "reachpersonalgrowth.com", true }, { "reachrss.com", true }, + { "reachum.com", true }, + { "reachwithed.com", true }, { "reaconverter.com", true }, { "react-db.com", true }, { "reacteev.com", true }, + { "reactheme.com", true }, { "reactionindex.com", true }, + { "reactive-load.com", true }, { "reactive-press.com", true }, { "reactivedrop.com", true }, { "reactivemarkets.com", true }, - { "reactoo.com", true }, { "reactor-family.tk", true }, { "reactpwa.com", true }, + { "read-blackclovermanga.com", true }, + { "read-myheromanga.com", true }, { "read.family", true }, { "readabilitychecker.com", true }, { "readable.pw", true }, @@ -101443,40 +116258,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "readifycloud.com", true }, { "reading-assist.com", true }, { "readingea.com", true }, + { "readingoutpost.com", true }, { "readingrats.de", true }, { "readlater.de", true }, { "readless.cf", true }, + { "readmybeacon.com", true }, { "readmynews.cf", true }, - { "readnow.in", true }, { "readouble.com", false }, { "readpages.gq", true }, + { "readsportsonly.com", true }, { "readtome.co.in", true }, { "readup.tk", true }, { "ready2learn.eu", true }, { "ready4bf.tk", true }, { "ready5g.net", true }, { "readyblinds.com.au", true }, + { "readybyjosh.com", true }, + { "readycentbid.com", true }, + { "readycentral.com", true }, { "readychurchsites.com", true }, + { "readyclassroomcentral.com", true }, { "readycolorado.gov", true }, { "readydedis.com", true }, + { "readyeutaw.gov", true }, { "readyfiction.com", true }, + { "readyit.pl", true }, { "readync.gov", true }, - { "readyrosie.com", true }, { "readyrowan.com", true }, { "readyrowan.org", true }, { "readyscif.com", true }, { "readysell.net", true }, { "readysetscif.com", true }, { "readystep.ga", true }, - { "readytobattle.net", false }, + { "readytocleanga.com", true }, { "readytongue.com", false }, { "readywithresourcestn.gov", true }, { "reaff.com", true }, { "reaganlibrary.gov", true }, { "reakcjonista.tk", true }, { "reaksi.id", true }, - { "real-compare.com", false }, - { "real-digital.co.uk", true }, { "real-it.nl", true }, { "real-linux.tk", true }, { "real-neo.me", true }, @@ -101487,9 +116307,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "real-srebrenica-genocide.ml", true }, { "real-thailand.tk", true }, { "real-work.tk", true }, - { "real360show.com", true }, { "realacademy.net", true }, - { "realact-sawater.com", true }, + { "realanteile.at", false }, { "realbiographies.cf", true }, { "realbiz.ml", true }, { "realcanada.com.gt", true }, @@ -101518,39 +116337,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "realestate-lidl.se", true }, { "realestate-lidl.sk", true }, { "realestateagent-directory.com", true }, + { "realestatebees.com", true }, { "realestateblogs.tk", true }, { "realestateboston.tk", true }, - { "realestatecentralcoast.info", true }, { "realestateexecutives.tk", true }, { "realestategreenville.tk", true }, { "realestatekanada.tk", true }, { "realestatemaryland.tk", true }, { "realestateofnewmexico.com", true }, { "realestateonehowell.com", true }, - { "realestateresource.tv", true }, + { "realestates.istanbul", true }, { "realestatesales.gov", true }, + { "realestatestagingassociation.com", true }, { "realestatetennessee.net", true }, { "realestatewebnews.tk", true }, { "realfamilyincest.com", true }, { "realfreedom.city", false }, + { "realgarant-shop.de", false }, { "realgiulianova.it", true }, { "realgogo.com", true }, + { "realgoods.com", true }, { "realhelpcompany.ga", true }, { "realhorsegirls.net", true }, { "realhost.name", true }, { "realhypnosistraining.com.au", true }, { "realidad.tk", true }, + { "realimagess.com", true }, { "realincest.tv", true }, { "realinsurance.com.au", true }, { "reality.news", true }, { "reality0ne.com", false }, { "realitycrazy.com", true }, + { "realitydudesnetwork.com", true }, + { "realityjunkies.com", true }, { "realitykings.com", true }, { "realityrecoverycollective.tk", true }, + { "realitystudio.org", true }, { "realitytoday.cf", true }, { "realives.com", true }, { "realkeywords.ga", true }, - { "reallifeforums.com", true }, + { "reall.uk", true }, + { "reallife-it.de", true }, + { "reallifeforums.com", false }, + { "reallight.ge", true }, { "reallinux.tk", true }, { "reallivingcc.com", true }, { "reallovetab.ga", true }, @@ -101558,22 +116387,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reallyangryaboutchipshops.com", true }, { "reallybadidea.tk", true }, { "reallycooljobs.ga", true }, - { "reallygoodwebsites.co.uk", true }, { "reallytrusted.com", true }, { "reallywild.tk", true }, { "realm-of-shade.com", true }, { "realm.is", true }, + { "realmadrid-bet1x2.com", true }, { "realmadridoffice.tk", true }, - { "realme.govt.nz", true }, + { "realmaturetube.com", true }, { "realmixwell.tk", true }, + { "realmjoin.com", true }, { "realmofaesir.com", true }, { "realmoney.games", true }, { "realnature.com.br", true }, { "realneo.me", true }, { "realnet.tk", true }, { "realno-money.tk", true }, + { "realonline.com.au", true }, { "realoteam.ddns.net", true }, - { "realproestate.com", true }, { "realpropertyprofile.gov", true }, { "realpython.com", true }, { "realqunb.com", true }, @@ -101581,20 +116411,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "realrealstore.com", true }, { "realtechreviews.com", true }, { "realtimenetworks.com", true }, + { "realtimeregister.com", true }, { "realtoraidan.com", true }, { "realty-pochta.tk", true }, + { "realtyfeature.com", true }, { "realtygroup-virginia.com", true }, { "realtyhouseturkey.com", true }, + { "realtyofnaples.com", true }, { "realum.com", true }, { "realum.de", true }, { "realum.eu", true }, { "realum.net", true }, { "realvapamarde.cf", true }, { "realvisioninternet.com", true }, + { "realvnc.com", true }, { "realvnc.help", true }, { "realwaycome.com", true }, { "realwebsite.ga", true }, - { "realwildart.com", true }, { "realwinner.es", true }, { "realworldholidays.co.uk", true }, { "realyux.com", true }, @@ -101605,17 +116438,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reapandsowmarketing.com", true }, { "rearmatch.cf", true }, { "rearmatch.ga", true }, - { "reath.xyz", true }, { "reavaninc.com", true }, { "reaven.nl", false }, { "rebajasoferta.com", true }, { "rebalancenyc.com", true }, + { "rebaltica.lv", true }, { "rebane2001.com", true }, + { "rebargroup.org", true }, { "rebase.com.tr", true }, { "rebatekey.com", true }, + { "rebecamode.ch", true }, { "rebeccawendlandt.com", true }, { "rebeccawilson.co.uk", true }, { "rebel-owl.com", true }, + { "rebel.com.br", true }, { "rebelbranding.nl", true }, { "rebelchick.tk", true }, { "rebelcorp.cloud", true }, @@ -101624,38 +116460,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rebeldeway-ks.tk", true }, { "rebelko.de", true }, { "rebellecare.com", true }, + { "rebellyon.info", true }, { "rebelonline.nl", true }, + { "rebelsi.pl", true }, { "rebelstudio.ml", true }, + { "rebelviral.com", true }, { "rebelz.se", true }, { "rebirthlongboard.co.th", true }, { "rebizzield.com", true }, { "rebonus.com", true }, { "rebootwithnature.in", false }, - { "reboundtravel.com", true }, { "reboxetine.com", true }, { "reboxonline.com", true }, + { "rebrandly.com", true }, { "rebschool.ml", true }, + { "rebtoor.com", false }, + { "rebuga.com", true }, + { "rebuild96.ru", true }, { "rebull.fr", true }, + { "rebure.com", true }, { "rebus.support", true }, + { "rebusfarm.net", true }, { "reby.cf", true }, { "reby.tk", true }, { "rec.moe", true }, { "rec5.nl", true }, { "recallinsider.com", true }, { "recalls.gov", true }, + { "recambiospuntored.com", true }, { "recantoshop.com.br", true }, { "recaptcha-demo.appspot.com", true }, + { "recaptime.eu.org", true }, + { "rece-precz-od-tybetu.net", true }, { "receitas.tk", true }, { "receitasdacassia.tk", true }, + { "receitasdepesos.com.br", true }, + { "receitasfavoritas.com", true }, { "receptenwebsite.com", true }, - { "receptenwebsite.nl", true }, { "reception247.com", false }, - { "receptionpoint.com", true }, { "receptionsbook.com", true }, { "recessmonkeyz.tk", true }, { "recetasboricuas.com", true }, + { "recetasdelospaises.com", true }, { "recetasdemape.com", true }, + { "recetasget.com", true }, { "recetips.com", true }, + { "recettecookeo.net", true }, + { "recettes-de-tiramisu.fr", true }, { "recettes-series.com", true }, { "rechenknaecht.de", true }, { "rechenwerk.net", true }, @@ -101664,27 +116515,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recht.us", true }, { "rechten-konsens-brechen.tk", true }, { "rechtenliteratuurleiden.nl", false }, - { "rechtsanwaeltin-vollmer.de", false }, + { "rechtsanwalt-loesener.de", true }, + { "rechtsanwaltdrach.de", true }, + { "rechtsanwaltskammer-hamm.de", true }, { "rechtschreibpruefung24.de", true }, { "rechtsschutz-onlineshops.de", true }, { "recidivism.com", true }, { "recifaliste.fr", true }, { "recipea.com", true }, - { "recipeforvegans.com", true }, - { "recipegym.com", true }, + { "recipegym.com", false }, { "recipekensaku.com", true }, + { "recipesdelite.com", true }, { "recipeslist.tk", true }, { "recipesmadeeasy.co.uk", true }, { "recipex.ru", true }, { "recipeyak.com", true }, { "recipito.tk", true }, - { "reciplast.cl", true }, - { "recitoners.net", true }, - { "reck.dk", true }, + { "reciple.kz", true }, + { "reckers-griesbach.com", true }, { "recklessly.ga", true }, + { "reckner.com", true }, { "reckoning.gq", true }, { "reckontalk.com", true }, + { "reckord-bau.de", true }, + { "reckord.org", true }, { "reclaimmysparkle.com", true }, + { "reclaimyourface.eu", true }, { "reclamewereldsmp.eu", true }, { "reclusiam.net", true }, { "recmon.hu", true }, @@ -101700,11 +116556,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recommends.ml", true }, { "recompiled.org", false }, { "recon-networks.com", true }, + { "recon.net.br", true }, { "reconocimientoincan.org.mx", true }, { "recordagrave.org", true }, { "recordati.com.tr", true }, { "recordmeeting.jp", true }, { "recordmeeting.net", true }, + { "recordproduction.com", true }, { "recordsmanagement.gov", true }, { "recordstudio.tk", true }, { "recouvrement-jmconseil.com", true }, @@ -101718,10 +116576,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recovre.com.au", true }, { "recrea.pl", true }, { "recreatiewoningverzekeringen.nl", true }, + { "recroommasters.com", true }, { "recruit.net", true }, + { "recruitcrm.io", false }, { "recruiterbox.com", true }, - { "recruitmade.jp", true }, + { "recruiting.ai", true }, { "recruitnow.nl", true }, + { "recruitpedia.co.uk", true }, + { "recruitpediacorp.com", true }, { "recruitsecuritytraining.co.uk", true }, { "recruitsecuritytraining.com", true }, { "recruitskill.cf", true }, @@ -101732,9 +116594,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rectale.xyz", true }, { "rectecforum.com", true }, { "rectoraudiparts.com", true }, + { "rectoverso61.fr", true }, + { "rectus.co.jp", true }, { "recuperation-points.fr", true }, { "recuperatucuentaya.com", true }, - { "recuperatufigura.com", true }, { "recupero.it", true }, { "recuperodatiraidfastec.it", true }, { "recurly.com", true }, @@ -101744,12 +116607,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "recursosimbiopos.com", true }, { "recursosmi.com.br", true }, { "recursosrev.tk", true }, + { "recycle-plant.com", false }, { "recycle.cf", true }, + { "recyclebc.ca", true }, { "recyclebin.email", true }, { "recycledinorsett.co.uk", true }, { "recycledinorsett.com", true }, + { "recyclenow.com", true }, { "recycling.tk", true }, - { "recyclingsystems.de", true }, + { "recyclingisland.com", true }, + { "recyklace-prochazka.cz", true }, { "recyklacekovu.cz", true }, { "red-button.hu", true }, { "red-dragon.tk", true }, @@ -101765,32 +116632,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "red031000.com", true }, { "red1it.net", true }, { "red2fred2.com", true }, - { "redable.hosting", true }, { "redable.nl", true }, { "redacted.finance", true }, - { "redactedmedia.org", true }, + { "redactibio.com", true }, { "redactieco.nl", true }, - { "redaitpro.com", true }, { "redarx.com", true }, { "redballoonsecurity.com", true }, - { "redburn.com", true }, + { "redbaronpoolsupplies.com.au", true }, + { "redbeardplumbing.net", true }, { "redcabbage.tk", true }, { "redcanary.co", true }, { "redcandycane.tk", true }, { "redcapital.cl", true }, { "redcardinal.tk", true }, + { "redcarnationhotels.com", true }, { "redcarpetmonday.com", true }, { "redcatrampageforum.com", true }, { "redcedar.gov", true }, { "redchat.cz", true }, - { "redchip.com.au", true }, + { "redcity.apartments", true }, + { "redcode-web.design", true }, { "redcoded.com", true }, { "redcone.net", true }, + { "redcontralarepresion.org", true }, { "redcorus.com", true }, { "redcreek.tk", true }, { "redcross.com.ph", true }, { "redcupit.com", true }, { "redd.it", true }, + { "reddark.io", true }, + { "reddcoin.com", true }, { "reddcrypt.com", true }, { "reddepsicologosdecr.com", true }, { "reddevilarmada.com", true }, @@ -101810,22 +116681,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reddingo.nz", true }, { "reddingrancheria-nsn.gov", true }, { "reddingsbrigade-zwolle.nl", true }, - { "reddiseals.com", false }, { "reddit.com", true }, { "reddit2kindle.com", true }, - { "reddraggone9.com", true }, + { "redditinc.com", true }, + { "reddraggone9.com", false }, { "reddyai.com", true }, { "rede-reim.de", true }, { "rede-t.com", true }, { "redearsliderturtles.com", true }, { "redecsirt.pt", true }, { "rededca.com", true }, + { "rededecuidadores.pt", true }, { "redeemingbeautyminerals.com", true }, { "redefertig.de", true }, { "redefineyounow.com", true }, + { "redefiningstrength.com", true }, + { "redehiperfarma.com.br", true }, { "redelectrical.co.uk", false }, { "redemption.gq", true }, - { "redeortoestetica.com.br", true }, { "redes-neuronales.tk", true }, { "redeshoprural.com.br", true }, { "redeyeguatemala.tk", true }, @@ -101834,20 +116707,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redflare.com.au", true }, { "redfog.com", true }, { "redfox-infosec.de", false }, + { "redfox-media.com", true }, + { "redfox-media.eu", true }, + { "redfox-media.net", true }, + { "redfox-media.org", true }, { "redfoxmarketiing.com", true }, { "redgatesoftware.co.uk", true }, { "redgeek.cf", true }, { "redgeek.ga", true }, { "redgeek.gq", true }, { "redgeek.ml", true }, - { "redgoose.ca", true }, + { "redgranitefdwi.gov", true }, { "redgravity.net", true }, { "redhackerteam.tk", true }, { "redhandedsecurity.com.au", true }, - { "redhawkwa.com", true }, + { "redhead.id.au", true }, { "redheadfuck.com", true }, { "redheeler.com.br", true }, { "redhillboardriders.tk", true }, + { "redhookchallenge.org", true }, { "redhookny.gov", true }, { "redhotmonks.com", true }, { "redhotmonks.nl", true }, @@ -101863,27 +116741,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redireci.one", true }, { "redirecionarnoticias.ml", true }, { "redirect.fedoraproject.org", true }, + { "redirect.pizza", true }, { "redirect.stg.fedoraproject.org", true }, { "redirection-plf.online", true }, + { "rediscoveredfamilies.com", true }, { "redisgreen.com", true }, { "rediske.me", true }, { "redite.co", true }, { "redivis.com", true }, { "redjuice.co.uk", true }, + { "redkite.se", true }, { "redknothomes.com", true }, { "redlatam.org", true }, { "redletter.link", true }, - { "redlinelap.com", true }, { "redlink.de", true }, { "redlink.tk", true }, { "redlinker.ml", true }, { "redlionclub.ga", true }, { "redloeki.tk", true }, - { "redmangallpsychologists.com.au", true }, + { "redmadrobot.ru", true }, + { "redmarker.ai", true }, { "redmejoracontinua.com", true }, - { "redmind.se", false }, { "redmondoregon.gov", true }, - { "redmondtea.com", true }, { "redmore.me", true }, { "redneck-radio.tk", true }, { "redneragenturen.org", true }, @@ -101891,6 +116770,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rednsx.org", false }, { "rednumberone.com", true }, { "redoikos.org", true }, + { "redot.com", true }, { "redpanda.gay", true }, { "redparrotstudios.tk", true }, { "redpen.gr", true }, @@ -101898,6 +116778,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redperegrine.com", false }, { "redphi.dedyn.io", true }, { "redphoenix.tk", true }, + { "redpitaya.com", true }, { "redprice.by", true }, { "redq.now.sh", true }, { "redrafting.ga", true }, @@ -101907,27 +116788,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redrealm.tk", true }, { "redrivernm.gov", true }, { "reds-dev.ga", true }, - { "redseo.pl", true }, { "redsequence.com", true }, + { "redshank-largeformat.co.uk", true }, + { "redshell.pw", true }, { "redshiftcybersecurity.co.za", true }, + { "redshirtsalwaysdie.com", true }, { "redshoeswalking.net", true }, { "redshop.uk", true }, { "redsicom.com", true }, { "redsiege.com", true }, + { "redsift.cloud", true }, + { "redsift.com", true }, + { "redsift.io", true }, { "redsis.com", true }, { "redskullstuff.gq", true }, { "redsolutor.gq", true }, { "redsquarelasvegas.com", true }, { "redstack.tk", true }, + { "redstarline.be", true }, { "redstarpictures.tk", true }, { "redstarsurf.com", true }, + { "redstarwholesale.co.za", true }, { "redstonehomekits.com", true }, { "redstoner.com", true }, { "redstonium.net", true }, + { "redstor.com", true }, { "redtails.tk", true }, { "redteam-pentesting.de", true }, + { "redteam.coach", true }, { "redteams.fr", true }, - { "redtela.com.br", true }, { "redtomato.ga", true }, { "redtorchginger.ie", true }, { "redtrig.ca", true }, @@ -101936,11 +116825,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redtubs.tk", true }, { "redtune.jp", true }, { "reducealcoholism.com", true }, + { "reducedlens.org", true }, { "reducer.co.uk", true }, { "reducto.tk", true }, { "reduktorntc-k.com.ua", true }, { "redunion.tk", true }, - { "reduxlineberryfactorycart.com", true }, + { "redvent-decor.ru", true }, { "redvent.ru", true }, { "redwater.co.uk", true }, { "redwaymu.cf", true }, @@ -101948,21 +116838,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "redwhey.com", true }, { "redwiki.tk", true }, { "redwillowcountyne.gov", true }, + { "redwood.pw", true }, + { "redwoodtoxicology.com", true }, { "redzonedaily.com", true }, + { "reebelo.co.nz", true }, + { "reebelo.com.au", true }, { "reececustom.com", true }, { "reed-sensor.com", true }, + { "reedgroup.com", true }, { "reedsvillewi.gov", true }, { "reedy.tk", true }, + { "reee.direct", true }, { "reeftrip.com", true }, + { "reehomes.com", true }, + { "reel360.com", true }, { "reeladventurefishing.com", true }, + { "reelchicago.com", true }, { "reelgame.ml", true }, { "reelnews.ga", true }, + { "reels.in.th", true }, + { "reelssaver.com", true }, { "reemployks.gov", true }, { "reenergo.ru", true }, { "reening.net", true }, + { "reenio.com", true }, + { "reenio.cz", true }, + { "reenio.sk", true }, { "reentry.gov", true }, + { "reentrycenterofocala.com", true }, { "rees-carter.net", true }, - { "reesmemphis.com", true }, + { "reesi.site", true }, { "reesmichael1.com", true }, { "reeson.at", true }, { "reeson.de", true }, @@ -101971,46 +116876,99 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reevaappliances.co.uk", true }, { "reeves-family.com", true }, { "reevoo.com", true }, - { "reexporta.com", true }, { "reezocar.be", true }, { "reezocar.com", true }, - { "ref1oct.nl", true }, { "refalm.com", true }, + { "refb.org", true }, + { "refbanners.com", true }, + { "refbanners.website", true }, { "refer.codes", true }, + { "refer.nhs.uk", true }, { "referat.club", true }, { "referati.tk", true }, { "referdell.com", true }, + { "reference-emploi.com", true }, + { "reference.be", true }, { "referencement-local.info", true }, + { "referenceur.be", true }, + { "referendumcouncil.org.au", true }, + { "referko.in", true }, + { "referrer.website", true }, { "refertimacuan.com", true }, - { "reficio.co", true }, + { "reffect.io", true }, { "refillrx.com", true }, { "refillthecity.eu", true }, { "refinansiering.no", false }, { "refinedinspectionservices.com", true }, { "refinedlightingaz.com", true }, { "refinedroomsllc.com", true }, + { "refinery.services", true }, { "refinery29.com", true }, { "refjob.jp", true }, + { "reflab.dk", true }, + { "reflectionsbarlingsbeach.com.au", true }, + { "reflectionsonthebay.org.au", true }, { "reflecton.io", true }, + { "reflectoring.io", true }, { "refletindosaude.com.br", true }, + { "reflets-de-france.fr", true }, { "reflets.info", true }, { "reflexions.co", true }, { "reflexionspain.tk", true }, { "reflexive-engineering.com", true }, - { "reflexive.xyz", true }, + { "refline.ch", true }, { "refluxogastroesofagico.ga", true }, { "refood-cascaiscpr.eu", true }, - { "refood.com", true }, { "reform.ee", true }, - { "reformasiluro.com", true }, + { "reformando-t.es", true }, + { "reformasflores.com", true }, { "reformation.financial", true }, { "reformatreality.com", true }, { "reformayobra.com", true }, { "refpa.top", true }, + { "refpa1342653.top", true }, + { "refpa170071.top", true }, + { "refpa4216323.top", true }, + { "refpa4496162.top", true }, + { "refpa4903566.top", true }, + { "refpa5446390.top", true }, + { "refpa59720.top", true }, + { "refpa6781648.top", true }, + { "refpaasxufov.top", true }, + { "refpabei.top", true }, + { "refpabuyoj.top", true }, + { "refpadewok.com", true }, + { "refpaewsbc.top", true }, + { "refpaffkansb.top", true }, + { "refpaicctvtm.top", true }, + { "refpaiglbwkv.top", true }, + { "refpaikgai.top", true }, + { "refpajqhsd.top", true }, + { "refpakrtsb.top", true }, + { "refpakwpsrbm.top", true }, + { "refpalqtdn.top", true }, + { "refpamjeql.top", true }, + { "refpanjoke.com", true }, + { "refpaopsxi.top", true }, + { "refpaqutiu.top", true }, + { "refparrknf.top", true }, + { "refpasra.host", true }, + { "refpasrasw.world", true }, + { "refpaswoon.top", true }, + { "refpatqltx.top", true }, + { "refpavikwm.top", true }, + { "refpavnpad.top", true }, + { "refpaydc.top", true }, + { "refpayio.top", true }, + { "refpazkjixes.top", true }, + { "reframeituk.org.uk", true }, { "refresh-dc.org", true }, { "refreshcartridges.co.uk", true }, { "refreshingserum.com", true }, { "refreshliving.us", true }, + { "refreshmentshop.co.uk", true }, + { "refreshwomensretreat.com", true }, + { "refrigeracion2hermanos.com.mx", false }, { "refrigeratorrepair-austin.com", true }, { "refu.net", false }, { "refuelcollective.com", false }, @@ -102024,8 +116982,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "refusedcarfinance.com", true }, { "reg.place", true }, { "rega-sport.it", true }, + { "regain.com", true }, + { "regain.us", true }, + { "regal.radio", true }, { "regalador.com", true }, { "regalcapitalwi.com", true }, + { "regalfille.com", true }, { "regalosymuestrasgratis.com", true }, { "regalpaintingfdl.com", true }, { "regalradio.net", true }, @@ -102033,6 +116995,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "regamega.ru", true }, { "reganclassics.co.uk", true }, { "reganclassics.com", true }, + { "regancyroofing.solutions", true }, + { "regancyroofing.uk", true }, { "reganparty.com", true }, { "regardezleprogramme.fr", true }, { "regasportshop.it", true }, @@ -102044,7 +117008,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "regdomain.tk", true }, { "regele.tk", true }, { "regenboghorn.com", false }, - { "regency.com.pa", true }, { "regencytablesandsinks.com", true }, { "regencywalkinclinic.com", true }, { "regendevices.eu", true }, @@ -102058,15 +117021,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "regentcruises.com", true }, { "regentinvest.com", true }, { "regentmovies.tk", true }, + { "regentsgarden.com.au", true }, + { "regenwaterput.com", true }, { "regex101.com", true }, - { "regg.ae", true }, + { "reggaesumfest.com", true }, { "reggaexplosion.tk", true }, { "reggea.tk", true }, { "reggiotoday.it", true }, { "regiamo.ch", true }, + { "regiaodeaveiro.pt", true }, { "regie-sc.ch", true }, { "regime-anticellulite.com", true }, - { "regime-maigrir-vite.com", true }, { "regimebonheur.com", true }, { "reginaascanio.es", true }, { "reginaclinic.jp", true }, @@ -102074,77 +117039,88 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reginfo.gov", true }, { "regio-salland.nl", true }, { "regiobeveland.nl", true }, + { "regiojet.com", true }, + { "regiojet.cz", true }, { "region-vologda.tk", true }, { "region22.tk", true }, { "region6armymars.org", true }, { "regionaalenergieloket.nl", true }, { "regional-rabatt.de", true }, + { "regionalanalysislab.org", true }, { "regionalgrowth.com", true }, { "regionethost.tk", true }, { "regionmedia.cf", true }, + { "regionstea.net", true }, { "regioplanverbindt.nl", true }, { "regiosalland.nl", true }, { "regiovertrieb.de", false }, - { "regis.tech", false }, + { "regis.tech", true }, { "regisearch.co.uk", true }, + { "registech.com", true }, + { "register.com.np", true }, { "register.to", false }, - { "registerex.me", true }, { "registerforevent.co.uk", true }, { "registerforhappywellth.com", true }, - { "registernie.com", true }, + { "registertovoteflorida.gov", true }, { "registr.io", true }, + { "registrarius.org", true }, { "registrarplus.net", true }, { "registrarplus.nl", true }, { "registrierung.tk", true }, { "registry.google", true }, { "registry.quebec", true }, + { "registryfinder.com", true }, { "registryplus.net", true }, { "registryplus.nl", true }, + { "regmik.ua", true }, { "regmyr.se", true }, { "regnix.net", true }, { "regnr.info", true }, { "regolithmedia.com", true }, { "regon.hu", true }, { "regospel.tk", true }, + { "regpacks.com", true }, { "regraph.de", true }, { "regression.tk", true }, { "regsec.com", true }, { "regtech.tk", true }, - { "regtify.co.uk", true }, { "regtify.com", true }, - { "regtify.com.cy", true }, - { "regtify.eu", true }, { "regtify.org", true }, + { "regtransfers.co.uk", true }, { "reguladordevoltagem.com.br", true }, + { "regularizaboti.com.br", true }, { "regularizaeudora.com.br", true }, + { "regularlabs.com", true }, { "regulations.gov", true }, { "regulative.gq", true }, - { "regulusaviation.com", true }, - { "reha-honpo.jp", true }, { "rehab.cf", true }, { "rehab.cn.ua", true }, { "rehabphilippines.com", true }, { "rehabthailand.com", true }, { "rehabthailand.org", true }, { "rehasport-informationen.de", true }, - { "rehasport-marketing.de", true }, + { "rehasportwelt.de", true }, { "rehau-ua.com", true }, { "reher.pro", true }, { "rehobothma.gov", true }, - { "rei.codes", false }, + { "rehomeconnect.com", true }, + { "rehzzo.cloud", true }, { "rei.ki", true }, { "reichardt-home.goip.de", true }, { "reichel-steinmetz.de", true }, { "reichelt-cloud.de", true }, + { "reichelt.com", true }, + { "reichelt.de", true }, + { "reichelt.nl", true }, { "reichl-online.net", true }, { "reiciunas.lt", true }, { "reidasbombas.com", true }, { "reidasmalas.com.br", true }, { "reidasofficial.lt", true }, + { "reidjaeger.com", true }, { "reidope.com.br", true }, { "reidostorrents.com", true }, { "reidrice.com", true }, - { "reifeladies.org", true }, { "reifeswinger.com", true }, { "reifr.net", true }, { "reignsphere.net", true }, @@ -102158,22 +117134,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reimaginebelonging.org", false }, { "reimann.me", true }, { "reimers.de", true }, - { "reimu.asia", true }, + { "reimsmediaslibres.info", true }, { "rein.kr", true }, { "reinaertvandecruys.com", true }, { "reinaertvandecruys.me", true }, - { "reinaertvdc.com", true }, { "reinaldudrasfamily.ee", true }, { "reinascba.com.ar", true }, - { "reindeere.ca", true }, - { "reindersfoodfashion.nl", false }, + { "reindeere.ca", false }, + { "reindersfoodfashion.nl", true }, { "reinencaressa.be", true }, { "reiner-h.de", true }, { "reinfer.io", true }, { "reingroup.ru", true }, + { "reinhardtsgermanautorepair.com", true }, { "reinhardtsgrimma.de", true }, { "reinhart-auto.cz", true }, - { "reinheft.de", true }, + { "reinheft.de", false }, { "reinierjonker.nl", true }, { "reinisch.io", true }, { "reinodemurcia.tk", true }, @@ -102182,17 +117158,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reinout.nu", true }, { "reinouthoornweg.nl", true }, { "reintjens.de", true }, - { "reinventersontravail.com", false }, + { "reinventersontravail.com", true }, { "reinventetoi.com", false }, + { "reinvention-institute.com", true }, { "reirei.cc", true }, + { "reisbergadr.com", true }, + { "reisdemuthwiltgen.com", true }, { "reisen.ga", true }, - { "reisenbauer.at", false }, - { "reiseversicherung-werner-hahn.de", true }, + { "reisenbauer.at", true }, + { "reisenbauer.ee", false }, { "reiseziel-hiddensee.de", false }, { "reiseziele.tk", true }, - { "reishihealthcare.com", true }, - { "reishoku.net", false }, - { "reishunger.de", true }, + { "reishikitchen.co.uk", true }, + { "reishikitchen.com", true }, + { "reishiplantkitchen.co.uk", true }, + { "reishiplantkitchen.com", true }, { "reispower.nl", true }, { "reisslittle.com", true }, { "reissnehme.com", true }, @@ -102201,6 +117181,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reitoracle.com", true }, { "reitstall-goettingen.de", true }, { "reittherapie-tschoepke.de", true }, + { "reivernet.com", false }, + { "reja.au", true }, { "rejahrehim.com", true }, { "rejail.ru", true }, { "rejected-by-society.tk", true }, @@ -102225,16 +117207,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rekkur.technology", true }, { "rekkursolutions.com", true }, { "rekkurtechnology.com", true }, + { "reklama-crimea.com", true }, { "reklamapoumu.ru", true }, { "reklamim.tk", true }, { "reklamirui.tk", true }, { "reklamjog.hu", true }, - { "reklammaster.ru", true }, { "reklamy-led.tk", true }, { "rekmedia.tk", true }, + { "rekono.si", false }, + { "rekorhaliyikama.com", true }, { "reksadanapanin.co.id", true }, { "rekurasi.com", true }, + { "rekursion.at", true }, { "rel-me.cc", true }, + { "relatedgroup.com", true }, { "relates.link", true }, { "relatethesport.com", false }, { "relatic.net", true }, @@ -102243,99 +117229,119 @@ static const nsSTSPreload kSTSPreloadList[] = { { "relations-business.com", true }, { "relationsatwork.net", true }, { "relationshipsandprivatestuff.com", true }, + { "relationshiptalk.net", true }, { "relationsproblem.nu", true }, { "relatory.nl", true }, { "relatosypoesias.tk", true }, - { "relax.hn", true }, + { "relawan24jam-magetan.pp.ua", true }, { "relaxcenternederland.nl", true }, { "relaxdata.eu", true }, { "relaxhavefun.com", true }, { "relaxpointhyncice.cz", true }, { "relaxti.me", true }, + { "relaxxed.nl", true }, { "relaxxxed.com", true }, { "relaybox.io", true }, - { "relaypay.io", true }, + { "relayto.com", true }, { "release-monitoring.org", true }, { "release.monster", false }, + { "releasedate.me", true }, { "releasepoint.com", true }, { "releases.live", true }, { "releasetimes.io", true }, - { "relentlessroofing.com", true }, { "relevaillesquebec.com", true }, { "relevanttomyinterests.com", true }, + { "releve-analyser.com", true }, { "reley.me", true }, + { "reliabilityweb.com", true }, + { "reliablecanadianpharmacy.com", true }, { "reliabledegree.com", true }, - { "reliablefloorcare.com", true }, { "reliablemaids.co.uk", true }, { "reliablemojo.com", true }, + { "reliablepi.com", true }, { "reliableremovals-blackpool.co.uk", true }, { "reliablewire.com", true }, + { "reliahost.nl", true }, { "relialink.co.uk", true }, + { "reliant.com", true }, { "reliant3sixty.com", true }, { "reliantpropertygrpri.com", true }, { "relic.gq", true }, { "relieftn.com", true }, + { "reliefweb.int", true }, { "religious-life.com", true }, + { "religiousfreedomunderfire.com", true }, { "religiya.tk", true }, { "relikt.tk", true }, + { "relines.ru", true }, { "relisten.nl", true }, { "reloading.ml", true }, { "relocatefeds.gov", true }, - { "relocatetocornwall.co.uk", true }, { "relojeriajoyeria.com", true }, + { "relojes-especiales.com", true }, { "relojes-online.com", true }, { "relookdecoration.fr", true }, - { "relsak.cz", true }, + { "relsak.cz", false }, { "reltio.com", true }, { "relution.io", true }, { "relvan.com", true }, { "relvan.tech", true }, + { "relyon-plasma.com", true }, { "relyonnutec.com", true }, { "rem-coatings.de", true }, { "rem-cond.ru", true }, { "rem0te.net", true }, - { "remaimodern.org", true }, { "remain.london", true }, { "remake-projects.tk", true }, { "remambo.jp", true }, + { "remarkmart.com", true }, { "remateszarate.cl", false }, { "remax-direct.co.il", true }, { "remax.at", true }, { "remaxelite.co.il", true }, { "remaxtop.co.il", true }, - { "remcond.ru", true }, { "remeb.de", true }, { "remedi.tokyo", true }, { "remediohalkiparaladiabetes.org", true }, { "remedionaturales.com", true }, { "remedioparaherpes.com", true }, + { "remedios.com.br", true }, + { "remedioscaseros.guru", true }, { "remejeanne.com", true }, + { "remembear.com", true }, + { "remember.de", true }, { "rememberingjordan.org", true }, { "remembermidi.sytes.net", true }, { "rememberthemilk.com", false }, + { "remembervets.com", true }, { "remennik.tk", true }, { "remesal.es", true }, { "remessaonline.com.br", true }, { "remetall.cz", true }, - { "remhomut.ru", true }, + { "remezcla.com", true }, { "remi-decker.tk", true }, { "remi-saurel.com", true }, { "remi-theriault.com", true }, { "remiafon.com", true }, + { "remicade.com", true }, { "remifajardo.cf", true }, - { "remigius-michael.de", true }, { "remilner.co.uk", true }, { "reminda.com", true }, { "reminded.tk", true }, - { "remini.cz", true }, - { "reminisceaudio.com", true }, + { "remington-europe.com", true }, { "remirampin.com", true }, { "remissan.com", true }, { "remissionclinic.com", true }, - { "remitatm.com", false }, + { "remitano.com", true }, + { "remix64.com", true }, { "remiz.org", true }, - { "remkond.ru", true }, { "remmik.com", true }, + { "remminhdang.com", true }, + { "remo.health", true }, + { "remodded.cf", true }, + { "remodded.gq", true }, + { "remodded.ml", true }, + { "remodded.tk", true }, { "remodelhealth.com", true }, { "remodelwithlegacy.com", true }, { "remonline.ru", true }, @@ -102345,7 +117351,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "remont-naushnikov.tk", true }, { "remont-rollet-izgotovlenie.cf", true }, { "remont-rukami.tk", true }, - { "remontada.net", false }, { "remontdot.tk", true }, { "remontfirm.tk", true }, { "remonti.info", true }, @@ -102356,13 +117361,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "remontpc.cf", true }, { "remontpc.tk", true }, { "remontportal.tk", true }, + { "remontstrong.ru", true }, + { "remonttikauppa.com", true }, + { "remontuks.ru", true }, { "remora.tk", true }, - { "remorques-du-nord.fr", true }, { "remorse.ga", true }, { "remote-health.net", true }, + { "remotebudget.com", true }, { "remotedesktop.corp.google.com", true }, { "remoteham.com", true }, { "remoteoffice.ga", true }, + { "remoteok.com", true }, { "remoteroom.jp", true }, { "remoteshack.cf", true }, { "remoteshack.ml", true }, @@ -102370,14 +117379,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "remoteworkertech.asia", true }, { "remoteworkingpal.com", true }, { "remotewx.com", true }, - { "remotley.com", true }, + { "remotish.com", true }, { "removalcellulite.com", true }, - { "removallaser.com", true }, - { "removeandreplace.com", true }, { "removebg.in", true }, { "removedrepo.com", true }, - { "remptmotors.com", true }, + { "removerz.ca", true }, + { "remptmotors.com", false }, { "remrol.ru", false }, + { "remsenny.gov", true }, + { "remservices.ky", true }, { "remsoft.com.br", true }, { "remwhile.com", true }, { "remyb.me", true }, @@ -102387,40 +117397,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rena.cloud", true }, { "renaatsioncke.com", true }, { "renaissance.shop", true }, + { "renanoliveira.design", true }, + { "renascercorretora.com.br", true }, + { "renate-lietz.de", true }, { "renatemamber.nl", true }, { "renateonline.tk", true }, - { "renatopazmino.com", false }, { "renaudmuller.fr", true }, { "renaultclubticino.ch", false }, + { "rencbrain.com", true }, + { "rencontredemerde.fr", true }, { "rendall.tv", true }, { "render.com", true }, { "renderatelier.com", true }, { "renderferma-cash.tk", true }, { "renderloop.com", true }, + { "renderstack.io", true }, { "renderworld.tk", true }, { "renderzone.tk", true }, { "rendez-vous.gq", true }, + { "rendezvous-cafe.co.uk", true }, { "rendre-service.ch", false }, + { "rendutowers.org.au", true }, { "rene-eizenhoefer.de", true }, { "rene-schwarz.com", false }, { "rene-stolp.de", true }, { "renearends.nl", true }, + { "renecoignard.co", true }, + { "renecoignard.com", true }, + { "renecoignard.fr", true }, + { "renecoignard.me", true }, + { "renecoignard.net", true }, + { "renecoignard.org", true }, + { "renecoignard.ru", true }, + { "renegadeexploration.com", true }, { "renehsz.com", true }, { "renem.net", false }, { "renemayrhofer.com", false }, + { "reneopharma.com", true }, { "reneploetz.de", true }, { "reneschmidt.de", true }, { "reneschroeter.de", true }, - { "renesteiper.com", false }, { "renet.com.br", true }, { "renet.tk", true }, - { "renewablefreedom.org", true }, { "renewablekids.tk", true }, { "renewablemaine.org", true }, { "renewcleaningservices.net", true }, - { "renewedfreedomcenter.com", false }, + { "renewedhr.com", true }, { "renewgsa.com", true }, - { "renewmedispa.com", true }, + { "renewmedispa.com", false }, { "renewpfc.com", true }, { "renezuo.com", true }, { "renicimery.com.br", true }, @@ -102446,11 +117470,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rennes-yoga.com", true }, { "rennes-zumba.com", true }, { "rennfire.org", true }, + { "rennie.com", true }, + { "renoboston.com", true }, { "renoproject.org", true }, { "renorun.ca", true }, { "renorun.com", true }, { "renos.tk", true }, + { "renovalar.com.br", true }, { "renovandoingresos.com", true }, + { "renovation-abm.fr", true }, { "renovationsf.cf", true }, { "renovationsf.ga", true }, { "renovera.be", true }, @@ -102462,22 +117490,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rent-a-coder.de", true }, { "rent-car.ga", true }, { "rent-to-own-home.ga", true }, + { "rent.ie", true }, + { "rent.men", true }, { "rentacar.name.tr", true }, { "rentacaramerica.com", true }, + { "rentacarankara.com.tr", true }, + { "rentacarizmir.com.tr", true }, + { "rentacarmedo.me", true }, + { "rentaciudadana.co", true }, + { "rentadrunk.org", true }, { "rentalboatsafety.com", true }, + { "rentalharmony.co.za", true }, { "rentamosandamios.com.mx", true }, { "rentandamiosycasetas.com", true }, - { "rentandgo.it", true }, - { "rentaplant.hr", true }, + { "rentandgoandalo.it", true }, + { "rentandgofalcade.it", true }, + { "rentandgosestriere.it", true }, + { "rentandgovalmalenco.it", true }, + { "rentasportexclusive.it", true }, { "rentasweb.gob.ar", true }, + { "rentberry.com", true }, { "rentbrowser.com", true }, + { "rentcafe.co.uk", true }, + { "rentex.com", true }, + { "rentfaster.ca", true }, { "renthelper.us", true }, { "rentinsingapore.com.sg", true }, + { "rently.nl", true }, { "rentm.media", true }, { "rentmama.cf", true }, { "rentmama.ga", true }, { "rentmama.gq", true }, { "rentmama.ml", true }, + { "rentmasseur.com", true }, + { "rentmen.eu", true }, { "rentnow.my", true }, { "rentourhomeinprovence.com", true }, { "rentsbg.com", true }, @@ -102486,28 +117532,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "renusoni.ga", true }, { "renusson.com", true }, { "renut.com.np", true }, + { "renverse.co", true }, { "renvillecountymn.gov", true }, { "renvisegrad.hu", true }, { "renwerks.com", true }, { "renxinge.cn", false }, { "renyiyou.com", true }, + { "renyu.ai", true }, { "reo.gov", false }, { "reorz.com", false }, { "reox.at", true }, { "repaircafe-hanau.de", true }, { "repairdriveshafts.tk", true }, - { "repairgeniuses.com", true }, { "repairingmobile.tk", true }, { "repairit.support", true }, { "repairland.gr", true }, + { "repairlinkshop.com", true }, { "repairtly.com", false }, { "repalriley38.com", true }, { "repaper.org", true }, { "reparacionesdecalefones.com", true }, + { "reparacioneslocativas.com.co", true }, { "reparacionmovilescartagena.com", true }, { "reparacionmovilesmurcia.com", true }, + { "repararimac.eu", true }, + { "repararipad.eu", true }, + { "reparariphone.biz", true }, + { "repararmac.eu", true }, + { "repararsamsung.eu", true }, + { "repararxiaomi.eu", true }, { "reparatiecrm.nl", true }, - { "reparatii-injectoare-buzau.com", true }, { "reparation-traceur.com", true }, { "reparaturcafe-pfullendorf.de", true }, { "reparizy.com", true }, @@ -102515,50 +117569,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "repat.de", true }, { "repauto.com.ua", true }, { "repaxan.com", true }, + { "repeat.gg", true }, { "repettoshoes.tk", true }, { "repgad.com", true }, { "repin.in.ua", true }, - { "replaceits.me", true }, + { "repinger.my.id", true }, + { "repl.ga", true }, { "replacementrate.ga", true }, { "replay.ga", true }, - { "replica.plus", true }, + { "replaynexus.com", true }, { "replicacoin.ga", true }, { "replicagold.ml", true }, - { "replicaswiss.nl", true }, { "replici.net", true }, { "replikatelefon.tk", true }, { "repliksword.com", true }, - { "replyua.net", true }, { "repo.ml", true }, { "repology.org", true }, { "report-incident.de", true }, { "report-uri.com", true }, - { "reportasee.com", true }, + { "report.cf", true }, + { "reportallusa.com", true }, { "reportband.gov", true }, { "reporte.tk", true }, { "reportercareer.ga", true }, + { "reporterre.net", true }, + { "reporters.ng", true }, { "reporting.gov", true }, { "reportkey.ru", true }, { "reportoid.tk", true }, { "reposaarenkuva.fi", true }, { "reposeed.dev", true }, { "reposeed.org", true }, + { "represent.us", true }, { "reproaccess.gov", true }, { "reproductive-revolution.com", true }, { "reproductiveaccess.gov", true }, + { "reproductivehealthservices.gov", true }, { "reproductiverevolution.com", true }, { "reproductiverights.gov", true }, + { "reprogramador.com", true }, + { "reprogramador.es", true }, { "reprogramming-predators.com", true }, { "reprogrammingpredators.com", true }, { "reprolegaldefensefund.org", true }, { "reprolegalhelpline.org", true }, { "reprorights.gov", true }, { "repsltd.co.uk", true }, + { "repstalent.com", true }, { "reptieleninfo.tk", true }, + { "reptilepoint.com", true }, { "reptrax.com", true }, - { "reptv.online", true }, { "republic.gg", true }, { "republic.gr", true }, + { "republica.gt", true }, { "republicafederal.tk", true }, { "republicanleader.gov", true }, { "republicanwhip.gov", true }, @@ -102567,48 +117630,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "republicmo.gov", true }, { "republictelecom.net", true }, { "republik-sombora.tk", true }, + { "republikalajm.com", true }, + { "republikapost.com", true }, { "republique.org", true }, { "repuestosmedellin.com", true }, { "repugnant-conclusion.com", true }, { "repugnantconclusion.com", true }, { "reputatiedesigners.nl", true }, - { "reputationweaver.com", true }, + { "reqionstockholm.se", true }, { "request.cf", true }, + { "requestatest.com", true }, { "requesthymn.com", true }, + { "requestr.co.uk", true }, + { "requeteguapas.com", true }, { "requeue.ga", true }, { "requin.tk", true }, { "requirements.ga", true }, + { "rercel.com", true }, { "reregu.cf", true }, { "reroboto.com", true }, { "reroboto.eu", true }, { "reroboto.net", true }, { "reroboto.org", true }, + { "reroboto.social", true }, { "reroll.tv", true }, + { "rerumu.co.uk", true }, { "rerumu.com", true }, - { "resama.eu", true }, + { "resalerental.com", true }, { "resanebartar.tk", true }, { "resbi.tk", true }, { "resc.la", true }, { "rescatec.com", true }, + { "resch-verlag.com", true }, { "resch.pro", true }, { "rescms-secure.com", true }, + { "rescuenode.com", true }, { "rescuer.gq", true }, { "rescuer.tk", true }, { "research-panel.jp", true }, { "research.facebook.com", false }, - { "research.md", true }, - { "researchgate.net", true }, + { "researchresults.com", true }, { "researchstory.com", true }, + { "researchtriangle.org", true }, { "researchwriting.co.uk", true }, + { "reseau-image.com", true }, { "reseau-protestant.ch", false }, + { "reseau-tee.net", true }, + { "reseau-web.com", true }, { "reseau.je", true }, { "reseau007.tk", true }, { "resellerprogram.ga", true }, { "resellrefreshrepeat.com", true }, - { "resepimok.com", false }, - { "resepsimbok.com", true }, - { "reservabiosferavalledelcabriel.com", true }, { "reservadecitasonline.com", true }, + { "reservar-un-hotel.com", true }, { "reservetonshift.com", true }, { "reservilaisliitto.fi", true }, { "resfriatech.com.br", true }, @@ -102621,9 +117695,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "residencelichtenberg.com", true }, { "residencemagazine.se", true }, { "residencescauri.it", true }, + { "residency-bond.eu", true }, { "resident-evil.tk", true }, + { "residentiallocksmithdallas.com", true }, { "residentialmortgageholdings.com", true }, + { "residentialpressurewashingchicago.com", true }, + { "residentinfo.net", true }, + { "residualpayments.com", true }, { "resigno.tk", true }, + { "resilience.sh", true }, + { "resiliencebox.com", true }, { "resilientlouisianacommission.gov", true }, { "resilienzatropical.it", true }, { "resimdo.de", true }, @@ -102631,8 +117712,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "resine.roma.it", true }, { "resinflooringcompany.com", true }, { "resisfestival.com", true }, + { "resist.bot", true }, { "resist.ca", true }, - { "resistancebooks.com", true }, + { "resistancebooks.com", false }, { "resistav.com", true }, { "resize2fs.de", false }, { "resju21.ch", true }, @@ -102640,7 +117722,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "resmim.net", true }, { "resolute.com", true }, { "resolutesystems.com", true }, - { "resolutewealthmanagement.com", true }, + { "resolutewealthmanagement.com", false }, { "resolutionnews.cf", true }, { "resolutionnews.ga", true }, { "resolve-portal.it", true }, @@ -102656,6 +117738,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "resort-nuvola.be", true }, { "resort.ga", true }, { "resortafroditatucepi.com", true }, + { "resortrealty.com", true }, { "resorts.ru", true }, { "resortsupportfiji.com", true }, { "resoundpro.ca", true }, @@ -102663,6 +117746,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "resourceguruapp.com", true }, { "resources.flowfinity.com", true }, { "resourcesmanagementcorp.com", true }, + { "resourcespace.com", true }, { "respawn-group.com", true }, { "respawwn.com", true }, { "respectmyprivacy.eu", true }, @@ -102670,11 +117754,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "respectmyprivacy.nl", true }, { "respectonsleau.fr", true }, { "respecttheflame.com", true }, + { "respinar.com", true }, { "respiradores.tk", true }, { "respiranto.de", true }, + { "respiratorytherapistlicense.com", true }, { "respire-yoga.fr", true }, { "respokare.com", true }, { "respon.jp", true }, + { "respondeck.de", true }, { "responer.com", true }, { "respons.je", true }, { "respons.me", true }, @@ -102688,19 +117775,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "responsecode.info", true }, { "responsecode.mobi", true }, { "responsecode.nl", true }, - { "responsepartner.com", true }, { "responsible-disclosure.nl", true }, + { "responsible.ca", true }, { "responsibledisclosure.nl", true }, { "responsivepaper.com", true }, { "respostas.com.br", true }, - { "ressignificando.com", true }, { "ressl.ch", true }, - { "resslovaci.net", true }, + { "ressourceportal.dk", true }, { "ressourcesindivior.com", true }, { "ressourcesleopharma.fr", true }, { "ressupply.com", true }, { "rest-in-moscow.tk", true }, { "resta.ga", true }, + { "restad.org", true }, { "restart-brno.cz", true }, { "restartperm.ml", true }, { "restauraceumichala.cz", true }, @@ -102711,17 +117798,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "restaurant-oregano.de", true }, { "restaurant-rosengarten.at", true }, { "restaurant-spartacus.tk", true }, + { "restaurantcleaningchicago.com", true }, { "restaurantdetgulepakhus.tk", true }, { "restaurantedonono.com.br", true }, { "restaurantepepeyestrella.es", false }, { "restaurantesimonetti.com.br", true }, { "restauranthugo.nl", true }, + { "restaurants.sg", true }, { "restauranttester.at", true }, - { "restaurantyokohama.nl", true }, { "restauratorin-maubach-dresden.de", true }, { "restauriedili.roma.it", true }, { "restauto.com.ua", true }, { "restbygait.com", true }, + { "restchart.com", true }, { "rester-a-domicile.ch", true }, { "rester-autonome-chez-soi.ch", true }, { "restic.net", true }, @@ -102730,24 +117819,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "restlesseshop.com", true }, { "restlesslegs.tk", true }, { "resto-renaissance.be", true }, + { "restoclub.ru", true }, { "restomojo.tk", true }, { "restoran-radovce.me", true }, { "restoran.cf", true }, { "restorationphotos.tk", true }, { "restorethegulf.gov", true }, + { "restoringhopeberks.org", true }, { "restoruns.com", true }, { "restrealitaet.de", true }, { "restream.fi", true }, { "resultsatretail.com", true }, - { "resultscommercial.com", true }, + { "resultscx.com", true }, { "resultsdate.news", true }, - { "resultsrealised.biz", true }, - { "resultsrealised.com", true }, - { "resultsrealised.net", true }, - { "resultsrealised.org", true }, { "resulttado.com", true }, + { "resume4dummies.com", true }, + { "resumecompanion.com", true }, + { "resumegenius.com", true }, + { "resumegets.com", true }, + { "resumehelp.com", true }, + { "resumehelp.io", true }, { "resumelibros.tk", true }, + { "resumenlatinoamericano.org", true }, + { "resumeprime.com", true }, + { "resumeprofessionalwriters.com", true }, + { "resumerabbit.com", true }, { "resumeshoppe.com", true }, + { "resumevalley.com", true }, { "resumeworded.com", true }, { "resumic.com", true }, { "resumic.dev", true }, @@ -102761,15 +117859,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "retailcleaners.ga", true }, { "retailcybersolutions.com", true }, { "retailing.cf", true }, + { "retailmarket.net", true }, + { "retailnext.net", true }, { "retaque.tk", true }, { "retarara.tk", true }, { "retardedstudios.tk", true }, - { "retcor.net", true }, - { "retecentre.com", true }, { "retefrati.it", false }, { "reteteaz.net", true }, { "retetenoi.net", true }, - { "retetop95.it", true }, { "reth.ch", true }, { "rethymnorooms.tk", true }, { "reticket.me", true }, @@ -102782,22 +117879,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "retinaconsultantstexas.com", true }, { "retinacv.es", true }, { "retinens.com", true }, - { "retireearlyandtravel.com", true }, { "retirementincomeplanninggroup.com", true }, { "retireyourpassword.org", true }, { "retiring-dentist.co.uk", true }, + { "retiva-bet23367.com", true }, + { "retivabet.com", true }, { "retmig.dk", true }, { "retmus.com", true }, { "reto.ch", false }, { "reto.io", true }, { "reto.tv", true }, - { "retofunctional.com", true }, - { "retogroup.com", true }, + { "retofunctional.com", false }, { "retohaeberli.com", false }, { "retokromer.ch", false }, + { "retool.com", false }, { "retornaz.com", true }, { "retornaz.eu", true }, { "retornaz.fr", true }, + { "retract.com.au", true }, { "retractableawningssydney.com.au", true }, { "retraitebysaulsplace.nl", true }, { "retro-game.org", true }, @@ -102808,28 +117907,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "retrocdn.net", true }, { "retrocircuitos.com", true }, { "retrogamenews.tk", true }, + { "retrohousewifegoesgreen.com", true }, { "retroity.net", true }, { "retrojar.top", true }, { "retrojugo.tk", true }, { "retronet.nl", true }, { "retropack.org", true }, { "retropedal.tk", true }, - { "retrophoto.fr", true }, + { "retrophoto.fr", false }, { "retropixel.ga", true }, { "retroride.cz", true }, { "retroroundup.com", false }, { "retroskoter.tk", true }, { "retroslave.ga", true }, + { "retroterminal.com", true }, + { "retrotown.ws", true }, { "retrotubesporn.com", true }, { "retrovideospiele.com", true }, { "retroworld.tk", true }, { "retseptykaboli.cf", true }, + { "rettar.net", true }, + { "rette-ein-kinderleben.de", true }, { "rettig.xyz", true }, - { "rettungsdienst-friesland.de", true }, { "retube.ga", true }, { "return-profit.tk", true }, - { "returnlogic.com", true }, + { "return.sh", true }, + { "returnly.com", true }, { "returnonerror.com", true }, + { "returnthief.quest", true }, { "reucon.com", true }, { "reueljohnk.com", true }, { "reulitz.de", false }, @@ -102837,51 +117942,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reunion.tk", true }, { "reup.cash", true }, { "reurbcaceres.com.br", true }, - { "reuseandresist.tk", true }, - { "reussirsavie.info", true }, + { "reuschtools.com", true }, + { "reusesti.ro", true }, { "reut42.de", true }, { "reuter-profishop.de", false }, { "reuter.de", false }, { "reuterhall.se", true }, + { "reutersevents.com", true }, { "rev-crew.info", true }, { "revaio.com", true }, + { "reval.com", true }, { "revalidatiekennisnet.nl", true }, { "revaloriza.cf", true }, { "revapost.fr", true }, { "revayd.net", true }, { "revconnect.tk", true }, - { "revcord.com", true }, + { "revda.su", true }, { "reveal-sound.com", true }, { "reveal11.cloud", true }, { "revealcellcamtracker.com", true }, { "revealdata.com", true }, - { "revellecoaching.com", true }, + { "revechat.com", true }, + { "revellecoaching.com", false }, { "revellio.tk", true }, { "revenge-spells.com", true }, { "revengegames.lv", true }, { "revengeofthesomething.tk", true }, { "revenue-playbook.com", true }, { "revenuegeeks.com", true }, - { "reverbland.com", true }, + { "revenuegrid.com", true }, + { "reverce.com", true }, { "reverenceglobal.com", true }, - { "reverencestudios.com", true }, + { "reveriecaps.com.br", true }, { "revers.tk", true }, { "reverse1999.wiki", true }, { "reverseaustralia.com", true }, { "reversecanada.com", true }, - { "reversecrucifixkm.altervista.org", true }, { "reversedns.tk", true }, { "reverseloansolutions.com", true }, - { "reverselookupphone.us", true }, { "reversemortgageguides.com", true }, { "reversemortgageguides.org", true }, { "reversesouthafrica.com", true }, - { "reviderm-skinmedics-rheinbach.de", true }, + { "revgen.life", true }, { "revierstrand.de", true }, { "review.jp", true }, { "review247.ga", true }, { "reviewbestseller.com", true }, - { "reviewbrokers.online", true }, { "reviewchecker.nl", true }, { "reviewdetector.ml", true }, { "reviewengin.com", true }, @@ -102890,11 +117996,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reviewheaven.ml", true }, { "reviewinteriors.com.au", true }, { "reviewku.id", true }, + { "reviewlution.ca", true }, + { "reviewmoose.ca", true }, { "reviewninja.net", true }, { "reviewpipe.com", true }, { "reviews.anime.my", false }, + { "reviewsfunnel.com", true }, + { "reviewskia.com", true }, + { "reviewskia.in", true }, { "reviewsonline.ml", true }, + { "reviewspot.net", true }, { "reviewu.ca", true }, + { "revifymedspa.com", true }, + { "revijahak.hr", true }, + { "revintake.com", true }, + { "revionics.com", true }, { "reviquimicos.com", true }, { "revis-online.cf", true }, { "revis-online.gq", true }, @@ -102902,7 +118018,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "revis-online.tk", true }, { "revisione.it", true }, { "revisionnotes.xyz", true }, - { "revisionvillage.com", true }, { "revisore.it", true }, { "revisores.pt", true }, { "revisoronline.cf", true }, @@ -102922,10 +118037,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "reviuu.com", true }, { "revivalinhisword.com", true }, { "revivalprayerfellowship.com", true }, - { "revivemoment.com", true }, + { "reviveourhearts.com", true }, { "reviveplumbingmelbourne.com.au", true }, { "reviviendolavilla.tk", true }, - { "revivingtheredeemed.org", true }, { "revizor-online.cf", true }, { "revizor-online.ga", true }, { "revizor-online.gq", true }, @@ -102933,6 +118047,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "revizor-online.tk", true }, { "revizor.ml", true }, { "revizoronline.tk", true }, + { "revloop.com", true }, + { "revmap.com", true }, + { "revoka.de", true }, + { "revol.space", true }, + { "revolucioncharango.com", true }, + { "revolution-mining.com.au", true }, { "revolution.net.nz", true }, { "revolutionary.tk", true }, { "revolutionaryaim-vienna.tk", true }, @@ -102943,19 +118063,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "revolutionengine.tk", true }, { "revolutionenkommer.dk", true }, { "revolutionhealth.ca", true }, + { "revolutionizingheartfailure.com", true }, { "revolutionofbeauty.tk", true }, { "revolutionofgaming.tk", true }, { "revolware.com", true }, { "revosoft.de", true }, { "revres.info", true }, + { "revspot.net", true }, { "revthefox.co.uk", true }, + { "revton.com", true }, { "revuestarlight.me", true }, { "revworld.org", true }, + { "revx.io", true }, { "rewardingexcellence.com", true }, { "rewardoapp.com", true }, { "rewardscout.eu", true }, + { "rewatch.com", true }, { "rewawatch.tk", true }, + { "rewebsitepro.com", true }, + { "rewirenewsgroup.com", true }, + { "rewolucja1905.pl", true }, { "rewrite3.com", true }, + { "rewriteguru.com", true }, + { "rewritertools.com", true }, { "rex.red", true }, { "rex.st", true }, { "rex.tc", true }, @@ -102966,23 +118096,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rexdf.net", true }, { "rexel.com", true }, { "rexeroofing.com", true }, - { "rexfinland.fi", true }, + { "rexo.ch", true }, { "rexograph.com", true }, { "rexskz.info", true }, { "rextomanawato4.tk", true }, + { "rexuy.com", true }, { "rexvin.co.id", true }, { "rexxworld.com", true }, - { "reyborg.com", false }, { "reyesfernando.com", true }, + { "reyesholdings.com", true }, { "reyna.cc", true }, { "reynders.xyz", true }, { "reynoldsburg.gov", true }, - { "reyrubi.com", false }, { "rez.ee", true }, { "rezarect.net", true }, { "rezendemultimarcas.com.br", true }, { "rezept-planer.de", true }, - { "rezevu.com", true }, { "rezidencezdanice.cz", true }, { "rezio.io", false }, { "rezistor.tk", true }, @@ -102999,18 +118128,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rfdirectory.tk", true }, { "rfeif.org", true }, { "rfg.ru", true }, - { "rfgadvisory.com", true }, - { "rfgadvisorywealth.com", true }, - { "rfid-schutz.org", true }, + { "rfgadvisory.com", false }, + { "rfgadvisorywealth.com", false }, + { "rfmsconnect.nl", true }, { "rfn.cz", true }, { "rfnews.tk", true }, { "rfoard.com", true }, { "rfodistribution.co.za", true }, { "rfomega.ga", true }, { "rfs-zbpe.net", true }, + { "rfstag.com", true }, + { "rfstag.org", true }, { "rftoon.com", true }, { "rfvigo.com", true }, { "rfxanalyst.com", true }, + { "rg.to", true }, { "rga.cl", true }, { "rgacomputacion.cl", true }, { "rgbinnovation.com", true }, @@ -103018,14 +118150,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rgc.com.co", false }, { "rgcomportement.fr", false }, { "rgdt.tk", true }, - { "rgf.be", true }, + { "rgf.be", false }, { "rgfundraising.com", true }, { "rggraphics.mx", true }, - { "rghost.net", true }, - { "rgiohio.com", true }, { "rgpd-elearning.com", true }, { "rgpdkit.io", true }, - { "rgraph.net", true }, { "rgservice.ml", true }, { "rgtonline.com", true }, { "rgz.ee", true }, @@ -103033,21 +118162,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rhamzeh.com", true }, { "rhaniegghe.be", true }, { "rhaniegghesoftwaresecurity.be", true }, + { "rhbrown.com", true }, { "rhcteam.com", true }, { "rhd-instruments.com", true }, { "rhd-instruments.de", true }, + { "rhd.org", true }, + { "rhdiscovery.com", true }, { "rhees.nl", true }, - { "rheijmans.com", true }, - { "rheijmans.email", true }, { "rheijmans.io", true }, { "rheijmans.nl", true }, { "rheimsandcohen.ltd", true }, { "rhein-liebe.de", true }, + { "rheincargo.com", true }, + { "rheine.schule", true }, + { "rheineschulen.de", true }, + { "rheinland-pilgern.de", true }, { "rheinturm.nrw", true }, + { "rhelevate.com", true }, { "rhese.net", true }, { "rhetorical.ml", false }, { "rhetthenckel.com", true }, - { "rheuma-online.de", true }, { "rhev.in", true }, { "rhforum.tk", true }, { "rhfs.tk", true }, @@ -103061,40 +118195,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rhino.co.tz", true }, { "rhinobase.net", true }, { "rhinoceroses.org", true }, - { "rhiskiapril.com", false }, + { "rhinosf1.com", true }, { "rhnet.at", true }, { "rhode-island-sexcams.com", true }, { "rhodeislandhealth.tk", true }, { "rhodes.ml", true }, { "rhodesianridgeback.com.br", true }, { "rhodos.fr", true }, - { "rhodri.io", true }, { "rhona.cl", true }, - { "rhost.nl", true }, { "rhowell.io", true }, - { "rhrli.com", true }, + { "rhsbl.com", true }, + { "rhswl.com", true }, { "rhubarb.land", true }, { "rhumblineadvisers.com", true }, { "rhwebdesigns.co.uk", true }, - { "rhwonline.de", true }, { "rhye.tk", true }, { "rhyme.com", true }, { "rhymesofreason.com", true }, { "rhymeswithmogul.com", true }, { "rhynl.io", true }, { "rhyno.io", true }, + { "rhysg.net", true }, { "rhysperry.com", true }, { "rhysre.net", true }, + { "rhystagr.am", true }, + { "rhyswebbmassage.com", true }, { "riable.com", true }, + { "riacanada.ca", true }, { "riachuello.tk", true }, + { "riadhilmuna.com", true }, + { "riaiai.com", true }, { "riaki.net", true }, { "riaktiv.tk", true }, { "rial.space", true }, { "rialto.co.nz", true }, + { "rialtocapital.com", true }, { "rian.gq", true }, { "riared.net", true }, { "riared.org", true }, - { "riaszto-szereles.eu", true }, { "riaudetil.com", true }, { "rib-dinslaken.com", true }, { "rib-dinslaken.de", true }, @@ -103108,38 +118246,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "riba-lov.ga", true }, { "ribafs.tk", true }, { "ribapo.com", true }, + { "ribar.com", true }, + { "ribblu.com", true }, { "ribccs.com", true }, { "ribdigital.com", false }, { "ribella.net", true }, - { "riberasalines.cat", true }, - { "ribes.design", true }, + { "ribes.design", false }, { "ribims.de", true }, { "ribit4u.co.il", true }, { "ribmountainwi.gov", true }, { "ribolov.tk", true }, { "ribtours.co", true }, { "ric-rac.org", true }, + { "ricardo.nu", false }, + { "ricardobaptistaleite.pt", true }, { "ricardojsanchez.com.ar", true }, { "ricardopq.com", true }, { "ricardoquaresma.tk", true }, { "ricardotaakehb.tk", true }, + { "ricassiocosta.me", true }, { "ricaud.me", true }, - { "riccardopiccioni.it", true }, { "riccy.org", true }, + { "rice-cook.com", true }, { "riceadvice.info", true }, { "ricecountymn.gov", true }, - { "ricettesemplicieveloci.altervista.org", true }, + { "ricedust.com", true }, + { "ricelasvegas.com", true }, { "rich-good.com", false }, { "richadams.me", true }, { "richandsteph.co.uk", true }, { "richandsteph.uk", true }, + { "richard-fath.de", true }, { "richard-offermanns.nl", true }, { "richard-purves.com", true }, { "richardb.me", false }, - { "richardbloomfield.blog", true }, { "richardbulley.com.au", true }, { "richardcrosby.co.uk", true }, { "richardharpur.com", true }, + { "richardhicks.us", true }, { "richardhouts.tk", true }, { "richardinesrolltop.com", true }, { "richardjgreen.net", true }, @@ -103147,6 +118291,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "richardlangworth.com", true }, { "richardlevinmd.com", true }, { "richardrblocker.net", true }, + { "richardsandsterling.com", true }, { "richardschut.nl", true }, { "richardsdebt.com", true }, { "richardson.cam", true }, @@ -103158,19 +118303,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "richardson.tw", true }, { "richardsoncountyne.gov", true }, { "richardstonerealestate.com", true }, - { "richardwarrender.com", true }, { "richbutler.co.uk", true }, { "richcat.tw", true }, { "richecommecresus.com", true }, { "richelelahaise.nl", false }, { "richeyweb.com", true }, { "richeza.com", true }, + { "richfieldadamscowi.gov", true }, { "richfieldsean.org", true }, - { "richie.cloud", true }, + { "richie.cloud", false }, { "richie.fi", true }, - { "richie.network", true }, { "richie.pm", true }, - { "richie.tech", true }, + { "richiebartlett.com", true }, { "richieheijmans.com", true }, { "richieheijmans.email", true }, { "richieheijmans.eu", true }, @@ -103179,32 +118323,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "richieheijmans.one", true }, { "richiesroom.com", true }, { "richini.com", true }, - { "richkidmarketing.com", true }, { "richlandcenterwi.gov", true }, { "richlandcountyoh.gov", true }, + { "richlandcountywi.gov", true }, + { "richlandwa.gov", true }, { "richlj.com", true }, { "richlj.net", true }, { "richlogic.blog", true }, + { "richmix.org.uk", true }, + { "richmond.com", true }, { "richmondcountyclerk.com", true }, { "richmondcountync.gov", true }, + { "richmondkitchens.com.au", true }, { "richmondsunlight.com", true }, { "richmoney.us", true }, { "richmtdriver.com", true }, - { "richonrails.com", true }, { "richtabak.ru", true }, { "richviajero.com", true }, { "richwayfun.com", true }, + { "rickengineering.com", true }, { "ricketyspace.net", false }, { "rickhoekman.com", true }, { "ricki-z.com", false }, { "rickmakes.com", true }, + { "rickmanlegal.com", true }, { "rickmartensen.nl", false }, + { "rickoriginal.nl", true }, { "rickrongen.nl", true }, + { "rickrussellhomes.com", false }, { "rickscastles.co.uk", true }, { "ricksdailytips.com", true }, - { "ricksfamilycarpetcleaning.com", true }, { "rickvanderzwet.nl", true }, - { "rickweijers.nl", true }, + { "ricky.photos", true }, { "rickyips.tk", true }, { "rickyromero.com", true }, { "rickysgames.tk", true }, @@ -103214,18 +118364,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ricobaldegger.ch", true }, { "ricochet.com", true }, { "ricochet.im", true }, - { "ricomp.com.br", true }, - { "ricor.cl", false }, - { "ricoy.tk", true }, { "ricoydesign.com", true }, { "ricozienke.de", true }, { "ridayu.jp", true }, - { "riddickthemovie.tk", true }, + { "riddhimarketplace.com", true }, { "riddims.co", true }, { "riddimsworld.com", true }, { "riddler.com.ar", true }, + { "riddlock.com", true }, { "rideapart.com", true }, - { "ridedott.com", true }, + { "rideelectric.gov", true }, { "ridegravel.ch", true }, { "rideintaxi.com", true }, { "rident-estetic.ro", true }, @@ -103236,11 +118384,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rideyourdamn.bike", true }, { "ridgecrestca.gov", true }, { "ridgefieldct.gov", true }, + { "ridgespringsc.gov", true }, { "ridgewaterlodge.com", true }, { "ridgewaywi.gov", true }, + { "ridgidgear.eu", true }, + { "ridho.id", true }, { "ridingoklahoma.com", true }, + { "ridingthetigerpro.com", true }, { "rido.ml", true }, - { "ridvan-vllasaliu.tk", true }, + { "ridsdale.ca", true }, { "riechsteiner.tech", true }, { "riecht-besser.de", true }, { "riederle.com", true }, @@ -103249,7 +118401,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "riesenweber.id.au", true }, { "riesheating.com", true }, { "rieslingtrailclarecottages.ga", true }, + { "riess-ambiente.net", true }, { "rietspoppen.tk", true }, + { "rietveldacademie.nl", true }, { "riffable.com", true }, { "riffnation.tk", true }, { "riffreporter.de", false }, @@ -103260,69 +118414,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rigart-michael.be", true }, { "rigartmichael.be", true }, { "rigelro.ga", true }, - { "riggosrag.com", true }, + { "rigeltarot.com", true }, + { "riggsloves.me", true }, { "riggsmarkham.com", true }, + { "riggtech.com.au", true }, { "righettod.eu", true }, { "righini.ch", false }, { "rightblog.tk", true }, { "rightbraingroup.com", true }, { "rightducks.com", true }, - { "rightfold.io", true }, { "rightfulowner.tk", true }, { "rightlaw.nz", true }, + { "rightmovecanada.com", true }, { "rightnetworks.com", true }, - { "rightoncorpus.com", false }, - { "rightrasta.com", true }, { "rightreview.co.uk", true }, { "rights.ninja", true }, { "rightschool.cf", true }, { "rightship.com", true }, { "rightsizingcalculator.com", true }, { "rightsolutionplumbing.com.au", true }, + { "rightstartcapital.com", true }, + { "rightstartent.com", true }, + { "rightstartinc.com", true }, { "rightstuff.link", true }, { "rightsupply.net", true }, + { "rightthingrecruit.com", true }, + { "righttolife.org.uk", true }, { "rigidlandscapes.com.au", true }, - { "rigintegrity.com", true }, { "rihappy.tk", true }, { "riietr.com", true }, { "riigikogu.ee", false }, - { "riigiteenused.ee", true }, + { "riil.org", true }, { "rijk-catering.nl", false }, { "rijnland.net", true }, { "rijschoolgevonden.nl", false }, { "rijschoolrichardschut.nl", true }, - { "rijschoolsafetyfirst.nl", true }, + { "rijsecure.nl", true }, { "rijsinkunst.nl", true }, { "rik.onl", true }, { "rikels-slaapexperts.nl", true }, { "rikkamoe.com", false }, + { "rikki.moe", true }, { "riklewis.com", true }, + { "rikmeijer.nl", true }, { "rikpalm.nl", true }, { "riksby.com", true }, { "riku.pro", true }, { "riku.pw", true }, { "rikunori.com.tw", true }, - { "rikuras.cl", true }, { "rileyevans.co.uk", true }, + { "rileyreidpornstar.com", true }, { "rileyskains.com", false }, { "rileystar.com", true }, { "rilish.cf", true }, { "rilla.one", true }, + { "rillet.com", true }, { "rilretg.com", true }, + { "rim-kardzhali.bg", true }, + { "rim-kardzhali.org", true }, { "riman.tk", true }, - { "rimax.vn", true }, + { "rimax.vn", false }, { "rimba.eu", true }, - { "rimcountrymuseum.org", true }, + { "rime.red", true }, { "rimessaggio.it", true }, { "rimetsu.com", true }, + { "riministreet.com", true }, { "riminitoday.it", true }, + { "rimnow.mr", true }, + { "rimnow.net", true }, { "rimo.site", true }, { "rimonhwang.com", true }, { "rimorrecherche.nl", true }, { "rimzim.tk", true }, + { "rinabhabra.com", true }, + { "rincat.ch", true }, { "rincon-nsn.gov", true }, - { "rincondelsonido.com", true }, { "rincondenoticas.com", true }, + { "rinconga.gov", true }, { "rineke.art", true }, { "ring.com", true }, { "ringarang.com", true }, @@ -103333,87 +118501,112 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ringneckparakeets.com", true }, { "ringofglory.ga", true }, { "ringofglory.gq", true }, + { "ringover.com", true }, + { "ringtoones.com", true }, { "rinka.moe", true }, { "rinkhill.com", true }, { "rinko-mama.com", true }, + { "rinoartdistrict.org", true }, { "rinsbacherhof.com", true }, { "rinskeshomepage.tk", true }, - { "rintisnews.com", true }, + { "rintarokobayashi.jp", true }, { "rinton.ru", true }, { "rinu.cf", true }, { "rinvex.com", true }, + { "rinyui.cn", true }, + { "rinyui.com", true }, { "rio-weimar.de", true }, { "riobastian.my.id", true }, { "rioinbox.com.br", true }, { "rioloagolf.tk", true }, { "riomaisbrindes.com.br", true }, { "riomi.org", true }, + { "riosat.ru", true }, { "riosoil.co.uk", true }, { "riosoil.com", true }, { "riosoils.co.uk", true }, { "riosoils.com", true }, { "riostones.com", true }, - { "riovizela.pt", true }, + { "riotest.xyz", true }, + { "riotseeds.cloud", true }, + { "rioxmarketing.us", true }, { "rip-sport.cz", true }, - { "rip.ie", true }, { "ripadores.tk", true }, { "ripaton.fr", true }, { "ripcityproject.com", true }, { "ripcorddesign.com", true }, + { "ripcordsandbox.com", true }, { "ripcurl.tk", true }, + { "ripenapps.com", true }, { "ripetizioni.roma.it", true }, { "ripin.org", true }, { "ripley.red", true }, { "ripmixmake.org", true }, { "ripon-wi.gov", true }, + { "riponadvance.com", true }, { "ripp-it.com", true }, { "ripper.store", true }, - { "ripple.com", false }, + { "ripplecraft.cn", true }, { "ripplemarkeg.com", false }, + { "ripplematch.com", true }, { "ripplenews.club", true }, { "ripplenews.co", true }, { "ripplenews.io", true }, { "ripplenews.live", true }, - { "ripplenews.media", true }, { "ripplenews.news", true }, { "ripplenews.online", true }, + { "ripplenews.ru", true }, { "ripplenews.world", true }, + { "rippling.com", true }, { "riproduzionichiavi.it", true }, + { "riptidetech.io", true }, { "riri-tendedasole.it", true }, { "ririro.com", true }, { "ris.fi", true }, + { "ris2048.pt", true }, { "risada.nl", true }, { "risalatconsultants.com", true }, { "riscascape.net", true }, { "risco.ro", true }, { "riscone.info", true }, + { "riscoscommunity.org", true }, { "riscoshardware.tk", true }, { "rise-technologies.com", true }, { "rise.africa", true }, { "rise.com", true }, { "rise.global", true }, + { "rise.md", true }, { "riseandrank.com", true }, { "risecomedy.com", true }, { "risecstate.gov", true }, - { "riselab.com.ua", true }, { "riseofmiddle-earth.tk", true }, - { "riseofthewildwoman.com", true }, + { "riseonline.wiki", true }, + { "riseproject.ro", true }, { "riseshost.ml", true }, { "riseup.net", true }, { "riseupelectrical.com.au", true }, { "rishabh.me", true }, + { "rishav.top", true }, { "risheriffs.gov", true }, { "rishikeshan.com", true }, + { "rishikeshyoga.in", true }, + { "rishteykaro.com", true }, { "risi-china.com", true }, + { "risilience.com", true }, { "rising-cubers.tk", true }, { "risingsoftware.com", true }, - { "riskiq.com", true }, + { "risingtidecapital.org", true }, + { "risitas.com.ar", true }, + { "riskbase.uk", true }, + { "riskconsole.com", true }, + { "riskiq.com", false }, { "riskmitigation.ch", true }, { "riskstudio.com", true }, { "risky.services", true }, + { "riskymeals.com", true }, { "risman.tk", true }, { "risonanzamagnetica.roma.it", true }, - { "risoscotti.es", true }, + { "risoscotti.es", false }, { "risounokareshi.com", true }, { "risparmiare.info", true }, { "risquefetish.com", true }, @@ -103422,39 +118615,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "risquefetishtoys.com", true }, { "ristioja.ee", true }, { "ristisanat.fi", true }, - { "ristoarea.it", true }, + { "ristorantedabeni.be", true }, { "ristoviitanen.fi", true }, { "ristrutturazione.roma.it", true }, { "ristrutturazioneappartamenti.milano.it", true }, { "ristrutturazioneappartamento.roma.it", true }, { "ristrutturazioniappartamentinapoli.it", true }, { "risunki.ga", true }, - { "risxx.com", true }, + { "rit.ee", true }, { "rit.space", true }, + { "ritaescortsdelhi.com", true }, + { "ritaj.estate", true }, { "ritaohio.gov", true }, { "ritas.tk", true }, { "ritchieneville.tk", true }, { "riteboost.com", true }, { "ritel.nl", true }, - { "ritense.com", true }, + { "ritense.com", false }, { "ritense.nl", true }, + { "ritepriceheatingcooling.com.au", true }, { "ritepriceroofing.com.au", true }, { "riteway.rocks", true }, - { "ritex-shop.ru", true }, { "ritirocalcinacci.roma.it", true }, { "ritirocalcinacci.viterbo.it", true }, + { "ritmoloco.fr", true }, { "ritmos.tk", true }, { "ritmuzic.ml", true }, { "ritoge.com", true }, { "ritoner.it", true }, { "ritos.ru", true }, { "ritrium.com", true }, + { "ritsf.com", true }, { "ritsu-life.com", true }, { "rittau.org", true }, + { "rittersprinting.com", true }, + { "ritual.com", true }, { "ritual.ml", true }, { "ritus.md", true }, + { "ritzcarltonclub.com", true }, { "ritzlux.com.tw", true }, { "rivaforum.de", true }, + { "rivago.tk", true }, { "rivals.space", true }, { "rivalsa.cn", true }, { "rivalsa.net", true }, @@ -103466,34 +118667,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "river.gq", true }, { "riverbanktearooms.co.uk", true }, { "riverbednetflowsupport.com", true }, - { "riverbendroofingnd.com", true }, { "rivercitybni.com", true }, + { "rivercitycycling.org", true }, { "riverford.co.uk", true }, { "riverhoa.org", true }, - { "riveroakaa.com", true }, - { "riveroaksdentaljax.com", true }, + { "riverlandenergy.com", true }, + { "riverlea.com.au", true }, + { "riveroakaa.com", false }, { "riverotravel.cl", true }, { "riverpark.casa", true }, { "riverridgecc.com", true }, { "riverrun.tk", true }, { "rivers.gov", true }, { "riverschool.net", true }, + { "riversidebaptistchurch.net", true }, { "riversideiowa.gov", true }, { "riversidemo.gov", true }, { "riversideradio.nl", true }, { "riversmeet.co.uk", true }, - { "riverstyxgame.com", true }, { "rivertv.ca", true }, { "riverviewtree.com", true }, + { "rivervista-vacationhomes.com", true }, { "riverweb.gr", true }, { "riverwoods.gov", true }, + { "rivethealthlaw.com", true }, { "rivian.com", true }, - { "rivierasaints.ch", false }, - { "riviere.pro", true }, + { "rivian.software", true }, { "rivingtongreenwich.co.uk", true }, + { "rivlo.com", true }, + { "rivmedia.co.uk", true }, { "rivoflor.it", true }, { "rivolta.tk", true }, - { "rivoniaplumber24-7.co.za", true }, { "rivus.net", true }, { "riweco.ga", true }, { "riwers.io", true }, @@ -103502,6 +118706,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rixzz.ovh", true }, { "riyono.com", true }, { "rizaderindag.com", true }, + { "rizalpalawan.gov.ph", true }, { "rizehaberleri.tk", true }, { "rizer.io", false }, { "rizhik.com.ua", true }, @@ -103511,13 +118716,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rj-onderneemt.nl", true }, { "rjan.nl", true }, { "rjbookings.nl", true }, + { "rjclegeplads.dk", true }, { "rje-hub.net", true }, + { "rjet.com", true }, { "rjfedor.com", true }, { "rjfedor.ddns.net", true }, + { "rjhgroup.co.uk", true }, + { "rjia.gq", true }, + { "rjmartz.com", true }, + { "rjpdesignanddecor.com.au", true }, { "rk-box.ru", true }, { "rk-links.ml", true }, { "rk-mediawork.de", false }, - { "rk12.de", true }, + { "rk.com", true }, { "rkabworks.uk", true }, { "rkbegraafplaats.com", true }, { "rkesport.com", false }, @@ -103529,11 +118740,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rkowalewski.de", true }, { "rkstudio.com", true }, { "rl3.de", true }, - { "rlaftershock.com", true }, { "rlahaise.nl", false }, { "rlalique.com", true }, + { "rland.ph", true }, + { "rlcosmeticsurgery.com", true }, { "rld.org", true }, - { "rlds.ch", false }, { "rleeden.no-ip.co.uk", true }, { "rleeden.servehttp.com", true }, { "rleeden.servemp3.com", true }, @@ -103543,46 +118754,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rm-it.de", true }, { "rm2brothers.cc", true }, { "rmb.li", true }, + { "rmbnsw.org.au", true }, + { "rmbs.de", true }, { "rmbs.org", true }, { "rmcbs.de", true }, + { "rmcinsuranceservices.com", true }, + { "rmconsulting.com", true }, { "rmdb.tk", true }, { "rmdhnreza.my.id", true }, + { "rmdis.au", true }, { "rmdscreen.com", true }, { "rme.li", false }, { "rmf.io", true }, { "rmfscrubs.com", true }, - { "rmhp.org", true }, - { "rmhpbrokers.com", true }, { "rmi.com.ar", true }, + { "rmit.ee", true }, { "rmit.me", true }, + { "rmitobacco.com", true }, + { "rml-liege.be", true }, { "rmm-i.com", true }, { "rmmanfredi.com", true }, { "rmol.tk", true }, { "rmp-gebaeudedienste.de", true }, + { "rmrcapitalinc.com", true }, { "rmrig.org", true }, + { "rms.com", true }, { "rms.sexy", true }, + { "rmshg.com", true }, + { "rmsisrs.com", true }, { "rmsk.tk", true }, { "rmsliberty.com", true }, - { "rmstudio.tw", true }, { "rmsu.pl", true }, { "rmsupply.nl", true }, + { "rmt-construction.co.za", true }, { "rmtconstruction.co.za", true }, { "rmupasswordstudy.com", true }, + { "rmurai.com", false }, { "rmvalues.com", true }, + { "rmw-energy.de", true }, { "rmyachting.com", true }, { "rn29.me", true }, { "rnag.ie", true }, { "rnb-storenbau.ch", true }, - { "rncc.mx", true }, + { "rnbjunk.com", true }, { "rndtool.info", true }, { "rnews.tk", true }, { "rngmeme.com", true }, + { "rnjobsite.com", true }, { "rnmkrs.co", true }, - { "rnoax.com", true }, + { "rntgroup.com", true }, + { "rntomsn.com", true }, + { "rntomsnedu.org", true }, + { "rnz3.net", true }, { "ro.co", true }, { "ro.exchange", true }, { "ro.search.yahoo.com", false }, { "ro89.com", true }, + { "roa.net", true }, { "roach.nz", true }, { "road-safety.cz", true }, { "road-trips.fr", true }, @@ -103591,10 +118819,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roadbikes.tk", true }, { "roaddoc.de", true }, { "roadguard.nl", false }, + { "roadhousecinemas.com", true }, { "roadtochina.tk", true }, { "roadtoglory.tk", true }, { "roadtopgm.com", true }, { "roadtripaustralia.com.au", true }, + { "roadtripnation.com", true }, { "roadtripusa.tk", true }, { "roalogic.com", true }, { "roamadvisors.com", true }, @@ -103603,9 +118833,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roams.es", true }, { "roams.mx", true }, { "roanboute.be", true }, + { "roanoke.com", true }, { "roar.com.br", true }, - { "roarsocial.co.uk", true }, + { "roaringforkfire.gov", true }, { "roaster.ga", true }, + { "roastrepublic.co", true }, + { "roayahnews.com", true }, { "rob006.net", true }, { "robandjanine.com", true }, { "robaxin750mg.ml", true }, @@ -103613,14 +118846,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robbertt.com", false }, { "robbie.bio", true }, { "robbie.contact", true }, - { "robbie.studio", true }, + { "robbie.studio", false }, { "robbiebird.tk", true }, { "robbiecrash.me", true }, { "robbielowe.co", true }, { "robbievasquez.com", true }, { "robbins-construction.com", true }, { "robbrestyle.com", true }, - { "robbysmets.be", true }, { "robbyzworld.cf", true }, { "robdavidson.network", true }, { "robersonaudio.tk", true }, @@ -103632,10 +118864,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robert-victor.co.uk", true }, { "robert-wiek-transporte.de", true }, { "robertaltizer.com", true }, + { "robertamend.de", true }, { "robertattfield.com", true }, { "robertayamashita.com", true }, { "robertayamashita.com.br", true }, { "robertbln.com", true }, + { "robertcspies.de", true }, + { "robertdunn.net", true }, { "robertg.me", true }, { "robertglastra.com", true }, { "robertgonzalez.tk", true }, @@ -103646,6 +118881,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robertmusil.ml", true }, { "robertocasares.no-ip.biz", false }, { "robertodegroot.tk", true }, + { "robertodivirgilio.it", true }, { "robertoentringer.com", false }, { "robertof.ovh", true }, { "robertoggarcia.tk", true }, @@ -103656,12 +118892,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robertrijnders.nl", true }, { "robertsjoneslaw.com", true }, { "robertsmits.be", true }, + { "robertson-cg.com", true }, { "robertsonblums.com", true }, { "robertsoncountytn.gov", true }, - { "robeschinoises.fr", true }, + { "robesoncountync.gov", true }, { "robgorman.ie", true }, { "robhorstmanshof.nl", true }, - { "robi-aesch.ch", true }, { "robi-net.it", true }, { "robicue.com", false }, { "robimgood.com.ua", true }, @@ -103672,15 +118908,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robin.info", true }, { "robinb0s.nl", true }, { "robinbos.nl", true }, - { "robindeheer.nl", false }, + { "robindirksen.com", true }, { "robinevandenbos.nl", true }, { "robinflikkema.nl", true }, { "robinfrancq.ml", true }, + { "robinhallnursery.org.uk", true }, { "robinhor10.tk", true }, { "robinhordon.tk", true }, { "robinlinden.eu", true }, { "robinloeffel.ch", true }, { "robinminto.com", true }, + { "robinmurez.com", true }, + { "robinopletal.com", true }, { "robinsoncontracting.ca", true }, { "robinsonphotos.uk", true }, { "robinsonstrategy.com", true }, @@ -103692,33 +118931,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robinwill.de", true }, { "robinwinslow.uk", true }, { "robinzone.ua", true }, - { "robison.pro", true }, + { "robinzorg.nl", true }, { "robjager-fotografie.nl", true }, + { "robkaper.nl", true }, { "robkish.life", true }, { "roblog.tk", true }, + { "roblox.com", true }, { "robloxenthusiasts.ga", true }, { "robnicholls.co.uk", true }, { "robobusiness.ga", true }, { "robocop.no", true }, - { "robocorp.com", true }, { "robodeidentidad.gov", true }, { "roboform.com", true }, { "robohash.org", true }, { "robokits.co.in", true }, { "roboland.ga", true }, { "roboonline.tk", true }, + { "roboquantico.com", true }, { "roboraptor.tk", true }, { "robot-invest.cf", true }, { "robot-invest.ml", true }, { "robot.car", true }, { "robotask.in", true }, + { "robotattack.org", true }, { "robotbattle.tk", true }, { "robotcoral.de", true }, { "robotdecocinaya.com", true }, { "roboth.am", true }, { "robotham.org", true }, + { "roboticsummit.com.br", true }, { "robotimeshop.com", true }, { "robotkvarnen.se", true }, + { "roboto.social", true }, { "robots-ju.ch", true }, { "robotsaspiradores.com", true }, { "robotsbigdata.com", true }, @@ -103735,17 +118979,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "robustac.com", true }, { "robuxemporium.com", true }, { "robuxkingz.ml", true }, - { "robwas.me", true }, { "roc-reo.tk", true }, { "roc-taiwan.su", true }, { "roc-taiwan.taipei", true }, { "roc-tw.tw", true }, + { "roc.gov.au", false }, { "rocabot.ddns.net", true }, + { "rochaaricanduva.com.br", true }, { "rochakhand-knitcraft.com.np", true }, { "rochcloud.cf", true }, { "rochesterglobal.com", true }, { "rochesternh.gov", true }, + { "rochestertwpil.gov", true }, { "rochesterwi.gov", true }, + { "rochesterymca.org", true }, { "rochow.me", true }, { "rocis.gov", true }, { "rock-base.tk", true }, @@ -103753,18 +119000,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rock4life.be", true }, { "rocka.me", true }, { "rockabilly-sinners.tk", true }, - { "rockagogo.com", true }, + { "rockadocious.com", true }, { "rockandroll.tk", true }, { "rockbankland.com.au", true }, { "rockbridge.tk", true }, - { "rockcanyonbank.com", true }, + { "rockcelebrities.net", true }, { "rockcellar.ch", true }, { "rockcountyne.gov", true }, + { "rockcult.ru", true }, + { "rockdaisy.com", true }, + { "rockdalecoprobatecourt.gov", true }, + { "rockdaletx.gov", true }, { "rockenfolie.com", false }, { "rockenfuerlachenhelfen.de", true }, { "rockernj.com", true }, { "rocket-resume.com", true }, { "rocket.is", true }, + { "rocketbears.com", true }, { "rocketcityts.com", true }, { "rocketdashboard.com", true }, { "rocketdoctor.ca", true }, @@ -103772,7 +119024,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rocketeer.tk", true }, { "rocketevents.com.au", true }, { "rocketgnomes.com", true }, - { "rocketlegalmarketing.com", true }, { "rocketmill.co.uk", true }, { "rocketnet.ml", true }, { "rocketr.net", true }, @@ -103781,38 +119032,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rockfallsil.gov", true }, { "rockfax.com", true }, { "rockfordnetworks.com", true }, + { "rockfordpressurewashing.com", true }, { "rockfordtow.com", true }, { "rockfreshmanyear.com", true }, { "rockfs.ml", true }, + { "rockingreports.com", true }, { "rockinit.tk", true }, + { "rockinmama.net", true }, { "rockinronniescastles.co.uk", true }, { "rockislandcountyil.gov", true }, { "rockitinflatables.co.uk", true }, + { "rockitreports.com", true }, { "rocklabs.xyz", true }, + { "rocklandbrownwi.gov", true }, { "rocklandcountyny.gov", true }, { "rocklinhousecleaning.com", true }, { "rocknbluestoday.tk", true }, + { "rocknreports.com", true }, { "rocknwater.com", true }, { "rockpesado.com.br", true }, { "rockporttx.gov", true }, - { "rockraidersx.com", true }, { "rockrider.tk", true }, { "rockriver.tk", true }, { "rocksalt.tk", true }, { "rockset.com", true }, { "rockshooters.com", true }, { "rockslideengineering.com", true }, - { "rocksolidind.com", false }, { "rocksoundradio.tk", true }, { "rockspringswi.gov", true }, + { "rocktape.com", true }, + { "rocktonil.gov", true }, { "rocktontownshipil.gov", true }, + { "rockvilledentalarts.com", true }, { "rockvocalconsulting.com", true }, { "rockworldteam.tk", true }, { "rockyford-co.gov", true }, { "rockymountaininsurancecenter.com", true }, { "rockymountainspice.com", true }, + { "rockymountva.gov", true }, + { "rockymtnexpress.com", true }, { "rockyourlife.gq", true }, - { "rocsole.com", true }, + { "rockyrealestate.com", true }, { "rocssti.net", true }, { "rodab.party", true }, { "rodafe.sk", true }, @@ -103832,7 +119092,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rodgersawnings.com", true }, { "rodichi.net", true }, { "rodin.tk", true }, - { "rodini.it", true }, { "rodinka.tk", true }, { "rodinnebyvanie.eu", true }, { "rodinneodpoledne2018.cz", true }, @@ -103845,18 +119104,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rodolfo.gs", true }, { "rodomonte.org", true }, { "rodosto.com", true }, + { "rodpenroseracing.com.au", true }, { "rodrigamer.com", true }, { "rodrigoacevedo.com.uy", true }, - { "rodrigoamozu.com", true }, + { "rodrigoarayaaliaga.com", true }, { "rodrigoarriaran.com", true }, { "rodrigocarvalho.blog.br", true }, { "rodrigodematos.tk", true }, - { "rodrigosalascolque.com", true }, { "rodriguezsanchezabogados.es", true }, { "rody-design.com", true }, - { "rodykossen.com", true }, { "roeckx.be", true }, { "roedesonline.nl", true }, + { "roedl.de", true }, { "roeitijd.nl", false }, { "roelenscitynews.ml", true }, { "roelhollander.eu", true }, @@ -103870,7 +119129,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roenhorst.net", false }, { "roeriverbooks.ie", true }, { "roerstaafjes.nl", true }, - { "roessner-network-solutions.com", true }, { "roethelheim.net", true }, { "roethelheim.org", true }, { "rofena.org", true }, @@ -103882,11 +119140,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rogard.fr", false }, { "rogarden.ro", true }, { "roge.pw", true }, - { "rogeiro.net", false }, + { "rogeiro.net", true }, { "rogell.tk", true }, { "rogerdat.ovh", true }, { "rogerdeflor.tk", true }, { "rogerdumas.com", true }, + { "rogerfages-peinture.fr", true }, { "rogerhub.com", true }, { "rogerkunz.ch", true }, { "rogerriendeau.ca", true }, @@ -103899,15 +119158,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rognhaugen.no", true }, { "rogo.cz", true }, { "rogoff.xyz", true }, + { "rogplus.nl", true }, { "rogue-e.xyz", true }, { "rogue.pw", true }, { "roguecoder.net", true }, { "roguefortgame.com", true }, + { "roguelicious.com", true }, { "roguenation.space", true }, { "roguenetworks.me", true }, { "roguerocket.com", true }, + { "roguetech.ca", true }, { "roguetechhub.org", true }, - { "roh.one", true }, { "rohal.tk", true }, { "rohanbassett.com", true }, { "rohankondvilkar.com", true }, @@ -103916,7 +119177,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rohedaten.de", true }, { "rohitagr.com", true }, { "rohitgupta.xyz", true }, - { "rohitpatil.com", true }, { "rohkeakirkko.fi", true }, { "rohlik.cz", true }, { "rohrreinigung-zentrale.de", true }, @@ -103926,12 +119186,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roidsstore.com", true }, { "rointe.online", true }, { "roishopper.com", true }, + { "roissystories.net", true }, { "roisu.org", false }, { "roiwebmarketing.com", true }, + { "rojavainformationcenter.com", true }, { "rojiblancos.tk", true }, { "rojotv.tk", true }, - { "roka9.de", true }, { "rokade.info", true }, + { "rokales.com", true }, + { "rokalesalapitvany.com", true }, { "rokass.nl", true }, { "rokettube.tk", true }, { "rokki.ch", false }, @@ -103939,6 +119202,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rokort.dk", true }, { "rokudenashi.de", true }, { "rokuk.org", true }, + { "rolamar.com.br", true }, { "roland.io", true }, { "rolandinsh.com", false }, { "rolandlips.com", true }, @@ -103949,6 +119213,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rolandszabo.com", true }, { "rolandvanipenburg.com", true }, { "rolc.org.sg", true }, + { "roldeco.nl", true }, { "rolecontj.com", true }, { "roleplayhome.com", true }, { "rolibo.com", true }, @@ -103957,9 +119222,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roliki.ml", true }, { "roll-bakery.com.tw", true }, { "roll.hockey", true }, + { "roll9.com", true }, { "rollatorweb.nl", true }, { "rollbackdiabetes.com", true }, - { "rollenshopnr1.de", true }, { "rollerderbycollection.ga", true }, { "rollerderbywines.ga", true }, { "rollerwarehouse.com", true }, @@ -103967,10 +119232,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rollforadventure.com.au", true }, { "rollingbarge.com", true }, { "rollingcouchapp.com", true }, + { "rollinghillsestates.gov", true }, { "rollingshuttle.org", true }, + { "rollinsdogtraining.com", true }, { "rollinspass.org", true }, { "rollthedice.tk", true }, - { "rolluikentotaalshop.nl", true }, { "rolnikowie.pl", true }, { "rolotrans.cf", true }, { "rolotrans.ga", true }, @@ -103981,15 +119247,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roma-servizi.it", true }, { "romab.com", true }, { "romacoffee.co.nz", true }, + { "romadiluna.band", true }, + { "romadprojects.com.au", true }, { "romagnaoggi.it", true }, { "romail.ml", true }, { "romainlapoux.com", true }, { "romainlapoux.fr", true }, { "roman-pavlik.cz", true }, { "roman.systems", true }, + { "romana.org", true }, { "romanceamor.com.pt", true }, { "romancerecipes.com", true }, - { "romancoinsforsale.org", false }, { "romancy.tk", true }, { "romania-film.ml", true }, { "romaniacompany.com", true }, @@ -104001,14 +119269,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "romanovka.ml", true }, { "romanpavlodar.kz", true }, { "romantelychko.com", true }, - { "romantic-sex-video.com", true }, - { "romantica-hotel.de", true }, + { "romantica90.com", true }, { "romanticdate.ga", true }, { "romanticdate.gq", true }, { "romanticdate.ml", true }, { "romanticdate.tk", true }, { "romantico.tk", true }, - { "romanticschemer.com", true }, { "romanticschemermovie.com", true }, { "romanticsexshopguatemala.com", true }, { "romanticvillas.com.au", false }, @@ -104016,9 +119282,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "romantik-fm.tk", true }, { "romantik.cf", true }, { "romantik.tk", true }, + { "romanywg.com", true }, { "romapk.tk", true }, { "romarin.es", true }, - { "romaservicegroup.it", true }, { "romashka.tk", true }, { "romasko.ml", true }, { "romastantra.com", true }, @@ -104026,14 +119292,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "romatours.pt", false }, { "romatrip.it", true }, { "rombarte.pl", true }, + { "romcom.info", true }, + { "romdrop.com", true }, { "rome-airport.net", true }, + { "rome.tools", true }, { "romediatori.com", true }, { "romega.gov", true }, { "romegafire.gov", true }, { "romegapolice.gov", true }, + { "romenz.com", true }, { "romeoferraris.com", true }, { "romeoijulio.tk", true }, - { "rometoptentravel.com", true }, + { "romerska-ringar.se", true }, { "rommelhuntermusic.tk", true }, { "rommelmark.nl", true }, { "rommelwood.de", true }, @@ -104043,6 +119313,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "romtex.co.uk", true }, { "romun.net", true }, { "romy.tw", true }, + { "ron.today", true }, { "ron2k.za.net", true }, { "ronaldcantor.com", true }, { "ronaldleite.tk", true }, @@ -104050,9 +119321,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ronan-hello.fr", true }, { "ronan.cf", true }, { "ronanrbr.com", true }, - { "ronasit.com", true }, + { "ronasit.com", false }, { "ronbongamis.com", true }, - { "ronbyrne.com", true }, + { "ronc.ru", true }, { "roncoutilities.com", true }, { "ronda.tk", true }, { "rondacan.com", true }, @@ -104061,56 +119332,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ronem.com.au", true }, { "ronforeman.com", true }, { "ronghexx.com", false }, - { "rongreenbaum.com", true }, { "roninathletics.com", true }, { "roninf.ch", true }, { "roninitconsulting.com", true }, - { "ronjagers.nl", true }, { "ronniegane.kiwi", true }, { "ronnylindner.de", true }, { "ronomon.com", true }, + { "ronvil.com", true }, { "ronzertnert.xyz", true }, { "roo.ie", true }, { "roobet.com", true }, { "roodarvasi.ir", true }, + { "roodepoortplumber24-7.co.za", true }, { "roodfruit.com", true }, { "roodfruit.nl", true }, { "roodfruit.studio", true }, { "roodhealth.co.uk", true }, { "roodo.com", true }, { "roof.ai", false }, + { "roofboxhub.com", true }, + { "roofcareswfl.com", true }, { "roofer.cf", true }, + { "roofhaven.co.uk", true }, { "roofingandconstructionllc.com", true }, { "roofingmaterials.tk", true }, { "roofingomaha.com", true }, { "roofonline.com", true }, { "roofpost.gq", true }, { "roofride.com", true }, + { "roofsandbasements.com", false }, { "roohanionlinespiritualhelp.co.uk", true }, { "rooiratel.red", true }, { "rook-playz.net", true }, - { "rookiehpc.com", true }, + { "rookgamingisevil.com", true }, + { "rookie.com.pl", true }, { "rookiemamabear.com", true }, { "roolife.xyz", false }, - { "roolnews.id", false }, { "room-checkin24.de", true }, { "room-composite.com", true }, { "room.to", false }, { "room208.org", true }, { "room362.com", true }, - { "room3b.eu", true }, { "room45.tk", true }, + { "room8group.com", false }, { "roombase.nl", true }, { "roomcube.tk", true }, { "roomee.tk", true }, { "roomguide.info", true }, { "roomhub.jp", true }, + { "roomie.fi", true }, + { "roomieapp.fi", true }, + { "roomme.dk", true }, { "roomonline.tk", true }, { "roomoutside.com", true }, { "roomsatevents.eu", true }, + { "rooneyholdings.com", true }, { "roopakv.com", true }, { "roorda-schilders.nl", true }, - { "roosabels.nl", false }, + { "rooseveltcountymt.gov", true }, { "roosterpets.com", true }, { "root-books.gq", true }, { "root-books.ml", true }, @@ -104128,6 +119407,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rootedlifemontessori.com", true }, { "rootfor.me", true }, { "rootgsm.com", true }, + { "rootie.de", true }, + { "rootinchase.com", true }, { "rootingpalace.tk", true }, { "rootkit.es", true }, { "rootlair.com", true }, @@ -104138,9 +119419,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rootonline.de", true }, { "rootpak.com", true }, { "rootpigeon.com", true }, + { "rootprompt.at", true }, { "rootrelativity.com", true }, + { "rootroo.com", true }, { "roots-example-project.com", true }, - { "roots.io", true }, + { "roots.io", false }, { "rootsandrain.com", true }, { "rootsbar.fr", false }, { "rootscope.co.uk", false }, @@ -104149,15 +119432,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rootsland.net", true }, { "rootsmusicmanagement.tk", true }, { "rootstation.de", true }, - { "roottsquare.com", true }, + { "rootsweb.com", true }, { "rootusers.com", true }, - { "rootze.com", true }, - { "roozaneh.net", true }, { "roozbeh.tk", true }, { "rop.cx", true }, { "ropd.info", true }, - { "roppit.nl", true }, + { "ropoxcheats.ru", true }, { "roques.tk", true }, + { "roquesevilla.com", true }, { "rorelseprojektet.se", true }, { "roromendut.online", true }, { "rorr.im", true }, @@ -104165,32 +119447,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rosa-spain.tk", true }, { "rosabellas.co.uk", true }, { "rosabrasiv.ga", true }, + { "rosacosmos.tn", true }, { "rosaflorbijoux.com.br", true }, - { "rosahijab.com", true }, - { "rosakkreditatsiya-forum.ru", true }, { "rosalindturner.co.uk", true }, { "rosalopezcortes.tk", true }, { "rosamystica.tk", true }, { "rosanerolife.tk", true }, + { "rosangar.com", true }, { "rosaquest.ru", false }, { "rosaserra.es", true }, { "rosbass.ru", true }, { "rosbiznes.tk", true }, + { "rosclar.com", true }, { "roscommontownshipmi.gov", true }, { "rosdpk.ru", true }, { "rosdver.ru", true }, { "rose-corp.co.jp", true }, { "rose-prism.org", true }, { "roseberyvenues.co.uk", true }, + { "rosebikes.com", true }, + { "rosebikes.de", true }, + { "rosebikes.nl", true }, { "roseboom-bouwkundigadvies.nl", true }, + { "rosebudcountysheriffmt.gov", true }, { "rosecoaudit.com", true }, { "rosecrance.org", true }, + { "rosedenellandudno.co.uk", true }, { "rosefloricultura.com.br", true }, + { "rosehishop.com", true }, { "rosehosting.reviews", true }, { "roseitsolutions.co.uk", true }, { "roseliere.com", false }, { "roselinlin.com", true }, - { "roseluna.com", true }, { "rosemariefloydballet.com", true }, { "rosemountmn.gov", true }, { "rosenberg-fansite.tk", true }, @@ -104198,51 +119486,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rosenheimsingles.de", true }, { "rosenkavalier.tk", true }, { "rosenkeller.org", true }, - { "roseon.net", true }, + { "roseon.net", false }, { "roseparkhouse.com", true }, { "rosesciences.com", true }, { "rosesunmotor.com", true }, { "rosetiger.life", true }, { "rosetravel.de", true }, + { "rosettapeters.com", true }, { "rosetteromance.tk", true }, { "rosetwig.ca", true }, { "rosetwig.systems", true }, { "rosevalleyfolk.com", true }, { "rosevillefacialplasticsurgery.com", true }, + { "rosevillekindy.nsw.edu.au", true }, + { "rosevilletoday.com", true }, { "rosewater.me", true }, { "rosewebdesignstudio.co.uk", true }, { "rosewebdesignstudio.uk", true }, { "rosfan.by", true }, + { "rosgenea.ru", true }, { "roshhashanahfun.com", true }, { "roshiya.co.in", true }, - { "roshiya.pw", true }, { "rosi-royal.com", true }, { "rosiervandenbosch.nl", true }, { "roskillcv.nz", true }, { "roskillcv.org.nz", true }, + { "roslagenshiss.se", true }, { "roslagensmansjour.tk", true }, { "roslynpad.net", true }, { "rosme.it", true }, { "rosoft.tk", true }, + { "rosolioitalicus.com", true }, { "rososa.com", true }, { "rosound.cz", true }, { "rosrabota.tk", true }, { "ross-mitchell.com", false }, { "rosscountyohiocasa.gov", true }, { "rosscountyohiocourts.gov", true }, + { "rossdak.in", true }, { "rosset.me", true }, { "rosset.net", true }, { "rossfrance.com", true }, { "rossia.ga", true }, + { "rossignoli.it", true }, { "rossiyskaja.cf", true }, { "rosskopfs.de", true }, { "rosslug.org.uk", true }, { "rossome.org", true }, + { "rossstores.com", true }, { "rosstownshipmi.gov", true }, { "rosstroj-balashiha.ml", true }, { "rosstwpmcpa.gov", true }, { "rossvillega.gov", true }, - { "rosswilson.co.uk", false }, { "rost.tv", true }, { "rostclub.ro", true }, { "rosten.tk", true }, @@ -104250,19 +119545,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rostlau.be", true }, { "rostov-aikido.tk", true }, { "rostov-arena.ml", true }, - { "rostov-avia.ru", false }, { "rostov.cf", true }, + { "rosty.sh", true }, { "roswellcity.tk", true }, + { "rosystemsint.com", true }, { "roszdravnadzor.gov.ru", true }, { "rot256.io", true }, { "rot47.net", true }, { "rotamap.net", true }, { "rotanaval.tk", true }, + { "rotaquote.com", true }, { "rotaractclubtucuman.tk", true }, { "rotaracthelmond.tk", true }, { "rotary.org.ru", true }, + { "rotary6080.org", true }, { "rotaryceuta.tk", true }, { "rotaryfunds.ga", true }, + { "rotarykardzhali.org", true }, { "rotas-turisticas.com", true }, { "rotasgastronomicas.com", true }, { "rotasgastronomicas.pt", true }, @@ -104274,29 +119573,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rotasurbanas.pt", true }, { "rotate4all.com", true }, { "rotate4u.eu", true }, - { "rotatingchefs.com", true }, { "rotaville.com", true }, - { "rotdo.com", true }, { "roteam.tk", true }, { "rotek.at", true }, { "roten.email", true }, { "rotespotsdam.tk", true }, { "rothbruederlein.tk", true }, + { "rothco.com", true }, { "rothe.io", true }, { "rothkranz.net", true }, { "rothwellgornthomes.com", true }, { "rotince.tk", true }, - { "rotkreuzshop.de", true }, { "rotol.me", true }, { "rotonde.gq", true }, + { "rottal-inn.de", true }, { "rottamazioni.it", true }, + { "rotterdamapartments.com", true }, { "rotterdamjazz.info", true }, { "rottie.xyz", true }, + { "rottig.de", false }, + { "rottnestexpress.com.au", true }, { "rottweil-hilft.de", true }, { "rottweiler.ws", true }, { "rottweilerdogcare.com", true }, { "rotu.pw", true }, - { "rotumax.es", true }, { "rotunneling.net", true }, { "rouair.com", true }, { "rouamatfashion.gr", true }, @@ -104306,46 +119606,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "roughcopy.com.au", true }, { "roughgrain.com", true }, { "roughnex.tk", true }, + { "roughnotes.com", true }, + { "roughsexporn.com", true }, { "roughtime.se", true }, { "roulettecarnival.com", true }, { "roulettelive.ml", true }, { "roulettestar.com", true }, { "roulinfo.ch", false }, + { "roullageorgiou.com", true }, + { "roullier.com", true }, { "roulons-autrement.com", true }, { "roundaboutweb.net", true }, + { "roundandbrown.com", true }, { "roundball.tk", true }, { "roundcube.mayfirst.org", false }, { "roundgarden.nl", true }, { "roundrock-locksmith.com", true }, { "roundtablekzn.co.za", true }, { "roundtoprealestate.com", true }, - { "roushins.net", true }, + { "roushins.net", false }, + { "roussillon-informatique.fr", true }, { "roussos.cc", true }, { "roussosmanos.gr", true }, { "rout0r.org", true }, - { "route51.be", true }, + { "route-wird-berechnet.de", true }, { "route64.eu", true }, + { "route66.net", true }, + { "route66smiles.com", true }, { "routechoices.com", true }, + { "routedlogic.net", true }, { "routemates.tk", true }, { "router24.info", true }, { "routerchart.com", true }, { "routerclub.ru", true }, - { "routerlibre.com", true }, - { "routeto.com", true }, + { "routerctrl.com", true }, { "routetracker.co", true }, { "routeur4g.fr", false }, - { "routz.nl", true }, - { "rouwcentrumterheide.be", false }, + { "rouwcentrumterheide.be", true }, + { "rouyt.com", true }, { "rovatronic.tk", true }, { "roverglobal.ga", true }, { "roveridx.com", true }, + { "roverkob.dk", true }, { "rovetf.tk", true }, { "rovezzano.tk", true }, { "rovian.ua", true }, + { "rovid.link", true }, { "rovin.tk", true }, { "rovity.io", false }, { "rovota.com", true }, - { "rowancasting.com", true }, { "rowancasting.ie", true }, { "rowancounty911.com", true }, { "rowancounty911.org", true }, @@ -104363,15 +119672,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rowlog.com", true }, { "rowra.org", true }, { "roxanaherguz.com", true }, + { "roxanaramirez.love", true }, { "roxanneguinoo.tk", true }, { "roxburytech.tk", true }, + { "roxet.my.id", true }, { "roxhillmedia.com", true }, { "roxiesbouncycastlehire.co.uk", true }, + { "roxswinery.com", true }, { "roxville.tk", true }, + { "roy-buehring.de", true }, { "royal-flowers.dp.ua", true }, { "royal-knights.tk", true }, { "royal-life.tk", true }, { "royal-rangers.de", true }, + { "royal.io", true }, { "royal5858.com", true }, { "royal6868.com", true }, { "royal71.com", true }, @@ -104396,14 +119710,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "royal84.com", true }, { "royal850.com", true }, { "royal851.com", true }, + { "royal852.com", true }, { "royal853.com", true }, { "royal855.com", true }, { "royal856.com", true }, { "royal857.com", true }, - { "royal858.com", true }, { "royal859.com", true }, { "royal86.com", true }, - { "royal861.com", true }, + { "royal862.com", true }, + { "royal863.com", true }, { "royal865.com", true }, { "royal868.com", true }, { "royal869.com", true }, @@ -104411,32 +119726,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "royal877.com", true }, { "royal88.com", true }, { "royal88.tech", true }, + { "royal880.com", true }, + { "royal8800.com", true }, { "royal881.com", true }, + { "royal8811.com", true }, { "royal882.com", true }, + { "royal8822.com", true }, { "royal883.com", true }, { "royal885.com", true }, { "royal886.com", true }, - { "royal8866.com", true }, { "royal887.com", true }, + { "royal8881.com", true }, + { "royal888888.com", true }, { "royal889.com", true }, { "royal896.com", true }, { "royal898.com", true }, { "royal899.com", true }, { "royal929.com", true }, { "royal939.com", true }, - { "royalacademy.org.uk", true }, { "royalasianescorts.co.uk", true }, { "royalaubar.com", true }, { "royalbluewa3.cc", true }, + { "royalcanin.es", true }, + { "royalcanin.pt", true }, + { "royalcaribbeanentertainment.com", true }, { "royalcavaliers.tk", true }, + { "royalchallengers.com", true }, + { "royalchess100.com", true }, { "royalcitystudios.ca", true }, { "royalcitytaxi.ca", true }, { "royalcrowns.tk", true }, { "royaldarts.tk", true }, { "royaldoorkc.com", true }, + { "royaleafrica.com", true }, { "royalembassys.com", true }, { "royalfitnesschennai.in", true }, + { "royalfloraholland.com", true }, { "royalfoundation.com", true }, + { "royalgrandpalace.th", true }, { "royalgroup.msk.ru", true }, { "royalhosting.ch", true }, { "royalkitchensandfurniture.co.ug", true }, @@ -104445,9 +119772,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "royalnissanparts.com", false }, { "royaloz.ma", true }, { "royalpainters.co", true }, + { "royalpalmbeachfl.gov", true }, + { "royalpanda.com", true }, { "royalrace.tk", true }, + { "royalrestrooms.com", true }, { "royalsleeping.com", true }, { "royalstylefit.com", true }, + { "royalsyouthhockey.com", true }, { "royaltonvt.gov", true }, { "royaltube.net", true }, { "royalty-market.com", true }, @@ -104461,14 +119792,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "royaumesoublies.com", true }, { "roycampbell.tk", true }, { "royceandsteph.com", true }, + { "roycestars.com", true }, { "roycewilliams.net", true }, { "royger.tk", true }, - { "roynuesca.com", true }, + { "royoy.com", true }, { "royrevell.com", true }, { "roys.design", true }, { "roystowingrockford.com", true }, + { "roytuts.com", true }, { "royvansichem.nl", true }, { "royveenendaal.com", true }, + { "royxiang.me", true }, { "royzez.com", true }, { "rozalisbengal.ro", true }, { "rozalynne-dawn.ga", true }, @@ -104483,36 +119817,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rp-murk.tk", true }, { "rpa.gov", true }, { "rpadonline.com", true }, - { "rpattisonroofing.co.uk", true }, { "rpcinmobiliaria.net", false }, - { "rpcnet.net", false }, { "rpg-maker.net", true }, { "rpg-maker.org", true }, - { "rpgamers.fr", true }, { "rpgchan.cf", true }, { "rpgfactory.tk", true }, + { "rpgfan.com", true }, { "rpgmaker.es", true }, { "rpgmakers.tk", true }, - { "rpguilds.world", true }, { "rpguru.com", true }, { "rpherbig.com", true }, - { "rphl.net", true }, { "rphyncice.cz", true }, { "rpi-pihole-mon.ddns.net", true }, - { "rpine.net", false }, { "rpj.life", true }, { "rpm-oldtimer-events.ch", true }, { "rpmdrivingschool.com.au", true }, { "rpmglobal.com", true }, - { "rpo97.fm", true }, + { "rpnt.xyz", true }, + { "rpo97.fm", false }, { "rpora.co", true }, { "rpower.com", true }, { "rpowerpos.com", true }, { "rps-auto.com", true }, { "rpschultz.de", true }, + { "rpts.edu", true }, { "rpus.co", true }, { "rpy.xyz", true }, { "rq-labo.jp", true }, + { "rqfperformancehorses.com", true }, { "rr30019.com", true }, { "rr361.de", true }, { "rr5197.co", true }, @@ -104525,18 +119857,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rr9728.co", true }, { "rrailto.com", true }, { "rray.org", true }, + { "rrbahmedabad.gov.in", true }, + { "rrbmuzaffarpur.gov.in", true }, + { "rrbpatna.gov.in", true }, { "rrbt.eu", true }, { "rrbt.net", true }, { "rrbts.com", true }, + { "rrcomlogin.com", true }, { "rrdesignsuisse.com", false }, { "rrdtool.com", true }, { "rrg-partner.ch", false }, { "rritv.com", true }, + { "rrke.cc", false }, { "rrmac.ml", true }, { "rrmiran.com", true }, { "rro.rs", true }, { "rrssww.space", true }, - { "rrteam.de", true }, { "rrtribalcourts-nsn.gov", true }, { "rrudnik.com", true }, { "rrvmz.cf", true }, @@ -104544,27 +119880,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rs-cloud.ddns.net", true }, { "rs-devdemo.host", true }, { "rs-maschinenverleih.de", true }, - { "rs-piscines.fr", true }, { "rs.wiki", true }, { "rs200.org", true }, { "rsa-erp.com", true }, - { "rsa-homeinsurance.co.uk", true }, { "rsanahuano.com", true }, { "rsap.ca", true }, { "rsarchive.net", true }, { "rsauget.fr", true }, { "rsb.net", true }, + { "rsblake.com", true }, { "rsblake.net", true }, + { "rsblvd.com", true }, { "rsc-cronenberg.de", true }, - { "rsc.by", true }, { "rsc.wiki", true }, + { "rschooltoday.com", true }, { "rscturmoil.com", true }, + { "rsdbyroos.nl", true }, { "rsdisedezzari.it", true }, { "rsdns.ml", true }, { "rse-reporting.com", true }, { "rsec.kr", true }, { "rsecure.tk", true }, - { "rsgcard.com", true }, + { "rsfinance.ch", true }, { "rsingermd.com", true }, { "rsl.gd", true }, { "rslcaresa.com.au", true }, @@ -104572,7 +119909,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rslnd.com", true }, { "rsm-intern.de", true }, { "rsmedic.com", true }, + { "rsolutions-expertises.fr", true }, { "rspevents.ro", true }, + { "rspp.ru", true }, { "rsquare.nl", true }, { "rsridentassist.com", true }, { "rsrnd.org", true }, @@ -104586,36 +119925,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rssfeedonline.tk", true }, { "rssicons.pl", true }, { "rssl.me", true }, + { "rssproject.nl", true }, { "rssr.ddns.net", true }, { "rssr.se", true }, { "rssreaderone.com", true }, - { "rstraining.co.uk", false }, + { "rstadler.com", true }, { "rstsecuritygroup.co.uk", true }, { "rsttraining.co.uk", true }, { "rsuji.com", true }, { "rsvaachen.de", true }, { "rsvp", true }, { "rsvpparty.com", true }, - { "rswow.ru", true }, + { "rswebsols.com", true }, { "rsync.eu", false }, + { "rszod.com", true }, { "rt-inc.com", true }, { "rt-praxis-barbara-scheibel.de", true }, { "rt.com", true }, { "rt22.ch", true }, { "rt96.it", true }, + { "rtarabic.com", true }, { "rtate.ca", true }, { "rtate.se", true }, { "rtc-israel.com", true }, + { "rtcyber.com", true }, { "rtd.uk", false }, { "rtd.uk.com", false }, + { "rtde.life", true }, + { "rtde.live", true }, + { "rtde.me", true }, + { "rtde.site", true }, + { "rtde.tech", true }, + { "rtde.world", true }, + { "rtde.xyz", true }, { "rte.eu", true }, { "rte.host", true }, { "rte.ie", true }, { "rte.mobi", true }, { "rte.radio", true }, { "rte1.ie", true }, - { "rte2fm.ie", true }, { "rteaertel.ie", true }, + { "rtebensoc.ie", true }, + { "rtec.com.tw", true }, { "rteguide.ie", true }, { "rteinternational.ie", true }, { "rtejr.ie", true }, @@ -104633,13 +119984,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rtgnews.cf", true }, { "rtho.me", true }, { "rths.tk", false }, + { "rtionline.gov.in", true }, + { "rtjobsite.com", true }, { "rtkbe.com", true }, { "rtl.de", true }, { "rtlspiele.de", true }, + { "rtm.kr", true }, { "rtmoran.org", true }, + { "rtp.org", true }, + { "rtpa.es", true }, { "rtparket.ga", true }, { "rtsak.com", true }, { "rtsr.ch", false }, + { "rttechlaw.com", true }, { "rttreservations.com", true }, { "rttss.com", true }, { "rttvip.com", true }, @@ -104651,12 +120008,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ru-adv.tk", true }, { "ru-auto.tk", true }, { "ru-e-business.com", true }, + { "ru-m.org", true }, { "ru-robot.tk", true }, { "ru-sale.tk", true }, { "ru-sprachstudio.ch", true }, { "ru.search.yahoo.com", false }, { "ru251.tk", true }, { "rua.ink", false }, + { "ruageek.com", true }, { "ruangangkasa.com", true }, { "ruanglaptop.com", true }, { "ruanmi.de", true }, @@ -104672,22 +120031,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rubberfurs.org", true }, { "rubberlegscastles.co.uk", true }, { "rubbermaidoutlet.com", true }, + { "rubbingtherock.com", true }, { "rubbix.net", true }, - { "rubblekempton.co.za", true }, - { "rubblemidrand.co.za", true }, - { "rubblerandburg.co.za", true }, - { "rubbleremovalsbenoni.co.za", false }, { "rubbleremovalsjohannesburgsouth.co.za", true }, - { "rubblerock.com", true }, { "rubdiavila.com", true }, { "ruben.ga", true }, - { "rubenarakelyan.uk", true }, { "rubenbaer.ch", true }, { "rubenbrito.net", true }, { "rubenfelix.tk", true }, - { "rubengees.de", true }, { "rubengutierrez.tk", true }, - { "rubenjromo.com", false }, { "rubenkruisselbrink.nl", true }, { "rubenmamo.com", true }, { "rubenpeeters.ml", true }, @@ -104696,8 +120048,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rubenruiz.org", true }, { "rubens.cloud", true }, { "rubenschulz.nl", true }, + { "rubenshotel.com", true }, + { "rubenshuis.be", true }, { "rubenslikkarchive.com", true }, + { "rubensteinphotography.com", true }, { "rubensvrouwen.tk", true }, + { "rubenwardy.com", true }, { "ruber.cf", true }, { "rubia.ca", true }, { "rubiales.tk", true }, @@ -104710,30 +120066,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rubinamillinery.com", true }, { "rubinchyk.tk", true }, { "rubinnadlan.co.il", true }, + { "rubiogafsi.com", true }, { "rubirubli.tk", true }, + { "rubix.com", true }, { "rublacklist.net", true }, { "rublev.tk", true }, + { "rubonnek.com", true }, { "rubooks.gq", true }, { "rubreklama.tk", true }, { "ruby-auf-schienen.de", true }, + { "rubycanyonenv.com", true }, { "rubymediagroup.com", true }, { "rubyonline.tk", true }, { "rubyonremote.com", true }, { "rubyquincunx.com", true }, { "rubyquincunx.org", true }, + { "rubyribbon.com", true }, + { "rubysinn.com", true }, { "rubystore.ga", true }, + { "rucheentreprise.fr", true }, { "ruchka-mashinka.gq", true }, { "rucinski.ch", true }, { "rucinski.eu", true }, { "rucinski.uk", true }, { "ruckify.com", true }, - { "rucksack-rauf-und-weg.de", true }, + { "rucksackrebellen.de", true }, { "ruckzuck-privatpatient.de", true }, { "rud.is", true }, { "rudasl.pl", true }, { "rudating.tk", true }, - { "rudd-o.com", true }, + { "rudd-o.com", false }, { "ruddr.io", true }, + { "rude.com", true }, { "rudefish.tk", true }, { "rudewiki.com", true }, { "rudianto.id", true }, @@ -104745,9 +120109,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rudolph.life", true }, { "rudovasky.com", true }, { "rudrastyh.com", true }, + { "rudro.net", true }, { "rudy.ga", true }, { "rudymendoza.tk", true }, - { "rue-de-la-vieille.fr", true }, + { "rue-de-la-vieille.fr", false }, { "rueckbeil.com", true }, { "rueckert-gymnasium-blog.de", true }, { "rueckgr.at", true }, @@ -104763,6 +120128,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruf888.com", true }, { "rufartabs.ml", true }, { "ruffbeatz.com", true }, + { "ruffcuts.com.au", true }, { "ruffinstorage.com", true }, { "ruffkatt.com", true }, { "ruffm.com", true }, @@ -104773,13 +120139,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rugbugecoflooring.com", true }, { "rugby.tk", true }, { "rugby.video", true }, + { "rugbynow.com", true }, + { "rugbyrama.fr", true }, { "rugcleaninglondon.co.uk", true }, { "rugeley-vets.co.uk", true }, - { "rugged-cctv.com", true }, + { "rugged-cctv.com", false }, { "rugk.dedyn.io", true }, + { "rugspa.ie", true }, { "rugstorene.co.uk", true }, { "rugugu.jp", true }, { "ruha.co.in", true }, + { "ruhanirabin.com", false }, { "ruhigehand.de", true }, { "ruhimustafa.tk", true }, { "ruhnke.cloud", false }, @@ -104787,9 +120157,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruhrdurst.tk", true }, { "ruhrmobil-e.de", true }, { "ruhrnalist.de", true }, + { "ruhrpott-media.com", true }, + { "ruhrpott-media.de", true }, { "ruiduntrading.com", true }, { "ruifu.tech", true }, + { "ruileitao.pt", true }, { "ruiming.me", true }, + { "ruimonteiro.pt", true }, { "ruimoreira.co.uk", true }, { "ruimtevoor.gent", true }, { "ruimtevoorgent.be", true }, @@ -104798,36 +120172,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruinone.com", true }, { "ruinsofchaos.com", true }, { "ruiruigeblog.com", true }, - { "ruitershoponline.nl", true }, { "ruitersportbak.nl", true }, { "ruixin.org", true }, { "rujbin.ddns.net", true }, { "ruk.ca", true }, { "rukhaiyar.com", true }, + { "rukiyegarip.art", true }, { "rukminicarrentals.com", true }, { "ruknguk.tk", true }, + { "rukouye.cf", true }, + { "rukouye.ml", true }, { "rul.ai", true }, { "rulaholding.fi", true }, { "rule5.ai", true }, { "ruli.tk", true }, + { "rullzer.com", true }, { "rultek.tk", true }, { "rulu.tv", true }, - { "rulutv.com", true }, { "ruma.io", true }, { "rumaenien.immo", true }, + { "rumah-tanah-dijual.com", true }, { "rumah123.com", true }, + { "rumahbukitpodomoro.com", true }, { "rumahcodingtest.tk", true }, + { "rumahkeadilan.co.id", true }, { "rumahkristal.tk", true }, { "rumahminimalisoi.com", true }, { "rumahpropertigratis.com", true }, { "rumahresep.cf", true }, { "rumartinez.es", true }, + { "rumata.pub", true }, + { "rumatallc.com", true }, { "rumbasguayaquil.com", true }, - { "rumbies.co.uk", false }, { "rumble.cloud", true }, - { "rumble.com", true }, { "rumbleline.ga", true }, - { "rumdulhospital.com", true }, { "rumeli.edu.tr", true }, { "rumenka.tk", true }, { "ruminecraftru.tk", true }, @@ -104837,11 +120215,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rumlife.co.uk", true }, { "rummage4property.co.uk", true }, { "rummey.co.uk", true }, + { "rumreader.com", true }, { "rumtaste.com", true }, - { "rumtaste.de", true }, { "rumus.co.id", true }, + { "rumusbilangan.com", true }, + { "rumusrumus.com", true }, + { "rumussoal.com", true }, { "run-it-direct.co.uk", true }, + { "run.vn", true }, { "runagain.ch", false }, + { "runalyze.com", true }, { "runame.ml", true }, { "runar-data.de", true }, { "runbo-australia.ga", true }, @@ -104849,8 +120232,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "runbo-nz.ga", true }, { "runboaustralia.ga", true }, { "runcarina.com", true }, - { "runcitadel.space", true }, - { "rundesign.it", true }, { "rundh-audio.de", true }, { "rundh.de", true }, { "rundu.ml", true }, @@ -104869,7 +120250,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "runeworldforums.tk", true }, { "runews.cf", true }, { "runfitcoaching.com", true }, - { "rungie.com", true }, + { "rungie.com", false }, + { "rungisinternational.com", true }, { "rungstedhave.dk", true }, { "rungutan.com", true }, { "runicspells.com", true }, @@ -104880,21 +120262,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "runmyqubit.de", true }, { "runmyvillage.com", true }, { "runner.az", true }, - { "runnergrapher.com", true }, { "runners.yoga", true }, { "runnerslab.com", true }, + { "runningcitadel.com", true }, { "runningfast.cf", true }, { "runningrabb.it", true }, + { "runningshoesguru.com", true }, { "runningshows.tk", true }, { "runpartner.com", true }, + { "runrun.es", true }, { "runrun.sk", true }, { "runschrauger.com", true }, { "runvs.io", true }, - { "runwaybpo.com", true }, { "ruobiyi.com", false }, { "ruobr.ru", true }, { "ruonavaara.fi", true }, { "ruoskachile.tk", true }, + { "rupeek.com", true }, { "rupeespeaks.tk", true }, { "rupeevest.com", true }, { "rupom.me", true }, @@ -104903,30 +120287,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rupressa.tk", true }, { "ruprivorot.tk", true }, { "rupture-skate.tk", true }, + { "ruptureradio.com", true }, { "ruqbnsmokebbq.ga", true }, - { "ruquay.com", true }, { "ruquiz.tk", true }, { "rural-house.tk", true }, { "rural.gov", true }, - { "ruralink.com.ar", true }, + { "ruralhousing.es", true }, { "ruralis.it", true }, { "ruralsuppliesdirect.co.uk", true }, + { "rurange-les-thionville.fr", true }, { "ruri.io", true }, { "rurian-gyohen.com", true }, { "ruris.bg", true }, { "ruro.tk", true }, { "rurouni.tk", true }, { "rus-blog.tk", true }, + { "rus-call.com", true }, { "rus-manual.tk", true }, { "rus-trip.ru", false }, + { "rusa.loan", true }, { "rusakov.tk", true }, { "rusdigisolutions.com", true }, { "ruse.church", true }, { "ruseartgallery.tk", true }, { "rusenemas.tk", true }, { "rusexmany.ml", true }, + { "rush49.com", true }, { "rushashkyfond.com", true }, { "rushbmedia.com", true }, + { "rushcountykansas.gov", true }, { "rushmix.com", true }, { "rushmyessay.gq", true }, { "rushpoppershop.co.uk", true }, @@ -104944,27 +120333,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ruskamodra.cz", true }, { "ruskcountytx.gov", true }, { "ruski.tk", true }, + { "ruskod.net", true }, { "ruslandautohuur.nl", true }, { "rusmir.tk", true }, { "rusmodel.tk", true }, { "rusmolotok.ru", true }, { "rusnalog.ru", true }, { "rusnicolas.cf", true }, + { "rusnum.com", true }, + { "rusnum.ru", true }, + { "rusorg.de", true }, + { "ruspolik.ru", true }, { "rusposuda.cf", true }, { "russ-portal.tk", true }, { "russandol.eu", true }, { "russchooljordan.tk", true }, { "russell-tech.co.uk", true }, { "russellappelbaum.com", true }, + { "russellcountyky.gov", true }, { "russellenvy.com", true }, { "russelljohn.net", true }, { "russellmeek.net", true }, - { "russellshobby.com", true }, { "russellupevents.co.uk", true }, { "russia-furniture.tk", true }, { "russia-knigi.ga", true }, { "russia-rp.tk", true }, - { "russia.dating", true }, { "russia.wtf", true }, { "russiahockey.tk", true }, { "russiahunting.tk", true }, @@ -104976,34 +120369,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "russianbearsmotorsport.tk", true }, { "russianbluecatsguide.com", true }, { "russianbrides.cf", true }, + { "russianbridge.org", true }, { "russianbristol.tk", true }, + { "russiancrimes.in.ua", true }, { "russianews.cf", true }, { "russianews.ga", true }, + { "russianflora.com", true }, + { "russianflora.ru", true }, + { "russianpostcalc.ru", true }, { "russianpunkrock.tk", true }, { "russianrandom.ru", true }, { "russiantranslation.tk", true }, + { "russinfo.net", true }, { "russisch.tk", true }, { "russograffix.tk", true }, + { "russpuss.ru", true }, + { "russt.me", true }, { "rust.cf", true }, { "rust.mn", true }, - { "rust.pm", false }, + { "rust.pm", true }, + { "rust.yokohama", true }, { "rustambek.tk", true }, { "rustamkhanko.gq", true }, - { "rustbyexample.com", false }, + { "rustdesk.com", true }, { "rustfanatic.com", true }, { "rustfu.rs", true }, { "rusticpathways.com.au", true }, { "rusticroadlandscaping.com", true }, - { "rusticus-consulting.de", true }, + { "rusticus-consulting.de", false }, { "rustikalwallis.ch", true }, { "rustls.com", true }, { "rustls.org", true }, { "rustonla.gov", true }, + { "rustup.rs", true }, + { "rustwire.com", true }, + { "rusty44.com", true }, { "rustyrambles.com", false }, { "rustytub.com", true }, { "rusunion.org", true }, { "ruswomen.tk", true }, - { "rut2.tk", true }, { "ruta-66.tk", true }, { "rutadelastermitas.tk", true }, { "rutalimon.com", true }, @@ -105019,44 +120423,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rutgerschimmel.nl", true }, { "ruthbarrettmusic.com", true }, { "ruthbellgrahammemorial.org", true }, + { "ruthhaloho.com", true }, { "ruthil.co.il", true }, { "ruthil.com", true }, - { "ruthmontenegro.com", true }, - { "ruthschoenmaekers.com", true }, { "rutiger.com", true }, - { "rutik.cf", true }, - { "rutik.ga", true }, { "rutika.ru", true }, { "rutorka.tk", true }, - { "rutten.me", true }, { "ruttenadvocaat.be", true }, + { "rutterroy.com", true }, { "ruud-online.tk", true }, { "ruudkoot.nl", true }, - { "ruuky.com", true }, { "ruurdboomsma.nl", true }, + { "ruvoip.net", true }, { "ruwhof.com", true }, { "ruwhof.net", true }, { "ruxit.com", false }, { "ruya.com", true }, { "ruyana.tk", true }, { "ruyatabirleri.com", true }, + { "ruyatabirlerin.gen.tr", true }, { "ruzaevka.tk", true }, { "rv-jpshop.com", true }, - { "rva-asbestgroep.nl", true }, { "rva.gov", true }, { "rvaneijk.io", true }, { "rvantwembeke.tk", true }, + { "rvem.org", true }, { "rvender.cz", true }, { "rvf6.com", true }, - { "rvfit.dk", true }, { "rvmfm.com", true }, - { "rvnoel.net", false }, { "rvoigt.eu", true }, { "rvpoweroutlet.com", true }, { "rvrcleaning.nl", false }, { "rvsa2bevestigingen.nl", true }, { "rvsa4bevestigingen.nl", true }, { "rvsbevestigingen.nl", true }, + { "rvss-or.gov", true }, { "rvvc.im", true }, { "rw-invest.com", true }, { "rw.search.yahoo.com", false }, @@ -105064,11 +120465,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rwalch.at", true }, { "rway.pro", true }, { "rwbstuff.com", true }, - { "rwcomerciorepresentacao.com.br", true }, { "rwgamernl.ml", true }, { "rwhapdentalservicesreport.net", true }, { "rwky.net", true }, - { "rwp7.com", true }, + { "rwlib.net", true }, { "rws-cc.com", true }, { "rws-vertriebsportal.de", true }, { "rwx.ovh", true }, @@ -105081,7 +120481,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rxcarbon.com", true }, { "rxcom.net", true }, { "rxguide.nl", true }, - { "rxo.com", true }, + { "rxphoto.com", true }, { "rxtx.pt", true }, { "rxxx.ml", true }, { "ry88url.com", true }, @@ -105094,23 +120494,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ryanbritton.com", true }, { "ryanclemmer.com", true }, { "ryancmassey.com", true }, + { "ryancompanies.com", true }, { "ryandewsbury.co.uk", true }, { "ryanfamily.net.au", true }, { "ryanhowell.io", true }, + { "ryanjarvis.law", false }, { "ryankearney.com", false }, { "ryankilfedder.com", true }, { "ryanmcdonough.co.uk", false }, { "ryanonfire.tk", true }, { "ryanparman.com", true }, { "ryanrichardwalker.com", true }, - { "ryans.blog", true }, - { "ryanstreur.com", false }, - { "ryanteck.uk", true }, + { "ryansmithphotography.com", true }, { "ryanwordpress.com", true }, + { "ryanyou.com", true }, { "ryazagro.ru", true }, { "ryazan-region.ru", true }, { "ryazancity.tk", true }, - { "rybakova.coach", true }, + { "rybak-opt.ru", true }, + { "rybak-russia.ru", true }, { "rybalku.ru", true }, { "rybarski.com", true }, { "rybinsk.ga", true }, @@ -105122,44 +120524,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "rychlikoderi.cz", false }, { "rycose.com", true }, { "rycose.net", true }, + { "rycpk.org", true }, + { "ryd.no", true }, { "rydeful.com", true }, { "rydeify.com", true }, + { "ryder.tk", true }, + { "rydercragie.co.uk", true }, + { "rydercragie.com", true }, + { "rydercragie.uk", true }, { "rydermais.tk", true }, + { "ryderstatus.com", true }, { "rydi.org", true }, { "ryejuice.sytes.net", true }, - { "rygh.no", true }, + { "ryfma.com", true }, { "rygy.com.br", true }, + { "rygyatacado.com.br", true }, + { "ryland.consulting", false }, + { "rylbyte.com", true }, { "rylin.net", true }, { "rylore.com", true }, { "rymanow.tk", true }, { "rymdweb.com", true }, { "rymergames.tk", true }, + { "rymshospital.com", true }, { "rynekpierwotny.pl", true }, { "rynkebo.dk", true }, + { "ryobitools.eu", true }, + { "ryoch.in", true }, { "ryois.me", true }, { "ryois.net", true }, { "ryona.agency", true }, { "rys.pw", true }, + { "rysslynxcapital.com", true }, { "rythgs.co", false }, { "rythm.es", true }, + { "ryu-ga-gotoku-audition.com", true }, { "ryu22e.org", true }, { "ryuanerin.kr", true }, { "ryuukei-nf.tk", true }, + { "ryvit.com", true }, { "ryzen.cz", true }, { "ryzhov.me", true }, { "rzeczy-silene.pl", true }, - { "rzegocki.pl", true }, - { "rzentarzewski.net", true }, { "rzero.com", true }, { "rzero.tk", true }, { "rzhv1.cf", true }, + { "rzip.de", true }, { "rzr.supplies", true }, + { "rzsmt.com", true }, { "s-4.host", true }, { "s-c.se", true }, + { "s-comp.pl", true }, { "s-cubed.net", true }, { "s-culture.co.kr", true }, + { "s-deal.eu", true }, { "s-geiser.de", true }, { "s-gong.com", true }, + { "s-hertogenbosch.tech", true }, { "s-huset.dk", true }, { "s-i-m.tk", true }, { "s-ip-media.de", true }, @@ -105171,16 +120592,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s-pira.games", true }, { "s-pro.io", true }, { "s-s-paint.com", true }, + { "s-sisters.ru", true }, { "s-team.tk", true }, { "s-u.pw", true }, { "s-w-o-p.eu", true }, { "s-yuz.com", true }, + { "s-zwrm.de", true }, + { "s.ai", true }, { "s.lu", true }, { "s.sb", true }, + { "s.td", true }, + { "s.team", true }, + { "s.tt", true }, { "s.wtf", true }, { "s007.co", true }, { "s0923.com", true }, { "s0laris.co.uk", true }, + { "s0t.ru", true }, { "s1-llc.com", true }, { "s10y.eu", true }, { "s1128.com", true }, @@ -105192,9 +120620,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s26s.com", true }, { "s2i.ch", false }, { "s2member.com", true }, + { "s2n.tech", true }, { "s2t.net", true }, { "s36533.com", true }, - { "s3call.ddns.net", true }, + { "s3call.ddns.net", false }, { "s3chat.ddns.net", true }, { "s3cur1ty.com", true }, { "s3cur3.it", true }, @@ -105202,9 +120631,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s3gfault.com", true }, { "s3lph.me", true }, { "s3w.es", true }, + { "s3waas.gov.in", true }, { "s402.de", true }, { "s404.de", true }, { "s44.eu", true }, + { "s4c.cymru", false }, { "s4db.net", true }, { "s4hosting.in", true }, { "s4media.org", true }, @@ -105218,19 +120649,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s551.cc", false }, { "s552.cc", false }, { "s553.cc", false }, - { "s554.cc", false }, { "s556.cc", false }, { "s557.cc", false }, { "s558.cc", false }, { "s559.cc", false }, { "s5g8.com", true }, + { "s6.tel", true }, { "s64.cz", true }, { "s6729.co", true }, { "s6729.com", true }, { "s6957.co", true }, { "s6jl.com", true }, + { "s6n.jp", true }, { "s6o.de", true }, - { "s81365.com", true }, { "s82365.com", true }, { "s88.com", true }, { "s8a.me", true }, @@ -105241,17 +120672,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "s95.de", true }, { "s9721.com", true }, { "s9728.co", true }, + { "s9h.cn", true }, { "sa-blog.net", true }, { "sa-mp.me", true }, { "sa-mp.ro", true }, + { "sa-refer.nhs.uk", true }, + { "sa-stu.com", true }, + { "sa-studio.chat", true }, { "sa.gov", true }, { "sa.net", true }, { "sa68.cc", true }, - { "sa88.cc", true }, + { "sa88.cc", false }, { "saadat.in.ua", true }, { "saadurrehman.tk", true }, { "saam.aero", true }, { "saamhorigheidsfonds.nl", false }, + { "saanich.ca", true }, + { "saap.me", true }, + { "saaral.org", true }, + { "saarehaigla.ee", true }, { "saaremaa.tk", true }, { "saaricraft.ml", true }, { "saas.de", true }, @@ -105262,27 +120701,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saba-shop.tk", true }, { "sabachat.tk", true }, { "sabahattin-gucukoglu.com", true }, - { "sabaikonotes.com", true }, { "sabaland.tk", true }, + { "sabanco.com.br", true }, { "sabatikirooms.com", true }, { "sabba.uk", true }, { "sabbat-wildfire.tk", true }, + { "sabbaticalhomes.com", true }, { "sabbottlabs.com", true }, { "sabedinovski.tk", true }, { "saber-nyan.com", true }, - { "saberhortifruti.com.br", true }, + { "sabesprev.com.br", true }, { "sabghijewelers.com", true }, { "sabharwallawfirm.ca", true }, - { "sabhijobs.com", true }, + { "sabhindimai.net", true }, { "sabians.tk", true }, + { "sabiasque.pt", true }, { "sabine-forschbach.de", true }, { "sabineforschbach.de", true }, { "sablanout.com", true }, { "sable.gq", true }, { "sabmobile.pk", true }, + { "sabong.pw", true }, { "saborcaribe.tk", true }, + { "saboresdamontanha.com.br", true }, { "sabranie.com", true }, { "sabrina-auer.tk", true }, + { "sabrinajoias.com", true }, { "sabrinajoias.com.br", true }, { "sabrinajoiasprontaentrega.com.br", true }, { "sabrinajoiasvarejo.com.br", true }, @@ -105290,18 +120734,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sabrinarus.tk", true }, { "sabrinazeidan.com", true }, { "sabrine.tk", true }, + { "sabris.com", true }, + { "sabung-ayam.net", true }, { "sabworldtricks.tk", true }, { "sac-shoes.fr", true }, + { "sacabc.ca", true }, { "sacademica.tk", true }, { "sacaentradas.com", true }, { "saccani.net", true }, { "saccottino.tk", true }, { "saccounty.gov", true }, { "saccountyiowa.gov", true }, + { "sace.ca", true }, + { "sace.org.za", true }, { "sacektirme.tk", true }, + { "sacfreightlines.com", true }, { "sacha-botz.com", false }, { "sacharidovejednotky.eu", true }, { "sachasmets.be", true }, + { "sachiepvien.net", true }, { "sachinchauhan.ml", true }, { "sachk.com", false }, { "sachse.info", true }, @@ -105310,29 +120761,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sachte-restaurant.de", true }, { "sacians.tk", true }, { "sacibo.ga", true }, - { "sackers.com", true }, { "sackmesser.ch", true }, { "saclier.at", true }, + { "saco.tech", true }, { "sacodealegria.com", true }, { "sacprincesse.com", true }, { "sacramentocounty.gov", true }, { "sacramentum.tk", true }, + { "sacreatedesign.com", true }, + { "sacreativity.com", true }, { "sacred-destinee.tk", true }, { "sacred-knights.net", true }, { "sacredart-murals.co.uk", true }, { "sacredheart-cliftonheights.net", true }, { "sacredheartbath.org", true }, + { "sacredmessages.net", true }, { "sacredsecondhandbooks.com.au", true }, { "sacrome.com", true }, { "sacrosanctus.tk", true }, + { "sacscoc.org", true }, { "sacwellness.com", true }, { "sad-berezka.ru", false }, { "sadbox.es", true }, { "sadbox.org", true }, { "sadbox.xyz", true }, - { "sadeed.live", true }, { "sadeedos.systems", true }, - { "sadespor.com", true }, + { "sadeem.space", true }, { "sadev.co.za", true }, { "sadhana.cz", true }, { "sadhanaclub.de", true }, @@ -105353,16 +120807,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sadoun.com", true }, { "sadovskiy.tech", true }, { "sadsu.com", false }, + { "sadtxt.com", true }, + { "sadurscy.pl", true }, { "sadus.tk", true }, - { "saechsischer-christstollen.shop", true }, { "saeder-krupp.de", true }, { "saeedvaladbaygi.info", true }, + { "saeidii.com", true }, { "saenforcement.agency", true }, { "saengsook.com", true }, { "saengsuk.com", true }, { "saep.io", true }, { "saevor.com", true }, - { "saf.ai", true }, { "saf.earth", true }, { "safagiza.ml", true }, { "safalfasalonline.in", true }, @@ -105372,15 +120827,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "safataviationgroup.com", true }, { "safatech.me", true }, { "safc.tk", true }, + { "safe-kim.com", true }, { "safeacs.com", true }, { "safeadmin.ga", true }, { "safeandsecureserver.com", true }, { "safearth.training", true }, { "safeathomeohio.gov", true }, + { "safeatlast.co", true }, { "safebaseflorida.com", true }, { "safebaseinc.com", true }, { "safebasementsnorthdakota.com", true }, - { "safebasementsofindiana.com", true }, { "safebasementswaterproofing.com", true }, { "safebits.ch", true }, { "safebits.de", true }, @@ -105389,8 +120845,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "safebits.it", true }, { "safeboard.ml", true }, { "safebus.io", true }, - { "safebuyerscheme.co.uk", true }, { "safecar.gov", true }, + { "safecircuitelectric.com", true }, + { "safecoin.tech", true }, { "safecso.cf", true }, { "safedrivepod.com", true }, { "safeers.tk", true }, @@ -105402,48 +120859,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "safeguardcommerce.com", true }, { "safeguardhosting.ca", true }, { "safehero.com", true }, + { "safeheron.com", true }, + { "safeheron.vip", true }, { "safehouse.zone", true }, + { "safehousepestcontrol.au", true }, { "safeinfra.nl", true }, - { "safeitup.se", true }, { "safejourney.education", true }, + { "safekidney.com.tw", true }, { "safeme.ga", true }, { "safeme.gq", true }, { "safemt.gov", true }, - { "safenetwork.it", true }, + { "safensoundstoragegroton.com", true }, { "safeo.fr", true }, { "safeocs.gov", true }, { "safeplay.co", true }, - { "safepool.com.br", true }, + { "safeplayground.net", true }, { "safeporn.org", true }, { "safeprint.pt", true }, { "safer-software.tk", true }, + { "safera.com", true }, { "safercar.gov", true }, { "saferchildren.eu", false }, - { "saferedirectlink.com", true }, { "saferequest.net", true }, { "saferfederalworkforce.gov", true }, - { "saferinternetday.us", true }, { "safermao.fr", true }, { "saferpost.com", true }, { "saferproduct.gov", true }, { "saferproducts.gov", true }, + { "saferrafrica.org", true }, { "safersurfing.eu", false }, { "safertruck.gov", true }, { "safescif.com", true }, { "safesearchs.com", true }, { "safesecuretrusted.com", true }, { "safesecurevital.ca", true }, - { "safesigner.com", true }, { "safesmartvent.com", true }, { "safesoundcounselingllc.com", true }, - { "safestore.io", true }, + { "safestayok.gov", true }, { "safestreets.cf", true }, { "safetables.ga", true }, - { "safetext.me", true }, { "safethishome.com", true }, + { "safetrainingservices.co.uk", true }, { "safetrax.in", true }, - { "safetum.fi", true }, { "safety-in-construction.tk", true }, + { "safety.co.nz", true }, { "safetycloud.me", true }, { "safetydrivessuccess.com", true }, { "safetymeasuresas.com", true }, @@ -105451,36 +120910,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "safetynames.com", true }, { "safetynation.co.uk", true }, { "safetynetwork.me", true }, + { "safetynigeria.com", true }, { "safetyrange.com", true }, { "safetyrisk.net", true }, { "safetysite.tips", true }, - { "safeui.com", false }, + { "safetysource.co.nz", true }, { "safevault.org", true }, { "safevisit.com.au", true }, + { "safewatchsecurity.ie", true }, + { "safewayins.com", true }, + { "safewayinsurance.com", true }, { "safewaysecurityscreens.com.au", true }, + { "safewaywaterproofing.com", true }, + { "safex.az", true }, + { "safex.org", true }, { "saffron.com", true }, { "safijourney.com", true }, + { "safinamide.co.uk", true }, { "safiosolutions.com", true }, { "safirakbar.tk", true }, { "safire.ac.za", true }, { "safkgroup.com", true }, - { "safnah.com", false }, - { "safungerar.se", true }, + { "safleo.org", true }, + { "safquh.com", true }, + { "sag-consultores.com", true }, { "sagacioussuricata.com", true }, { "sagagardencentre.co.uk", true }, { "sagan.tk", true }, + { "sagarawat.in", true }, { "sagareserve.com", true }, { "sagargandecha.com.au", false }, + { "sagasailing.dk", true }, + { "sagauae.com", true }, { "sageclinic.org", true }, { "sagefalab.com", true }, { "sagegardens.ca", true }, - { "sagehane.com", true }, + { "sageitinc.com", false }, { "sagenesykkel.com", true }, { "sagenet.net.au", true }, { "sagerus.com", true }, + { "sageseeds.info", true }, { "sagetel.ga", true }, { "sageth.com", true }, { "saggis.com", true }, + { "saggytitsporn.com", true }, { "saghekin.com", true }, { "sagicorgeneral.com", true }, { "sagicorlife.com", true }, @@ -105492,7 +120965,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sagnette.xyz", true }, { "sago.group", true }, { "sagomedia.tk", true }, - { "sahajbooks.com", true }, + { "sagradobyme.cl", true }, + { "sagretreviso.it", true }, + { "sahabatnesia.com", true }, + { "sahafekitap.com", true }, { "sahalin.tk", true }, { "sahalinskiy.gq", true }, { "sahar.io", true }, @@ -105501,46 +120977,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saharazik.tk", true }, { "saharmassachi.com", true }, { "sahb.dk", true }, - { "sahibinden.com", true }, { "sahinozgenhukuk.com", true }, { "sahkotyot.eu", true }, - { "sahpa.co.za", false }, - { "saibacomo.online", true }, + { "sahpa.co.za", true }, { "saibotk.de", true }, { "said.id", true }, { "said.it", true }, { "said.my.id", true }, + { "saidigi.online", true }, { "saidpurtechnical.tk", true }, + { "saidrive.net", true }, + { "saidrive.online", true }, { "saidtezel.com", false }, + { "saieditor.com", true }, { "saifonvillas.com", true }, { "saifoundation.in", true }, { "saifoundation.org", true }, { "saigonflowers.com", true }, { "saigonland24h.vn", true }, { "saigonstar.de", true }, - { "saikarra.com", true }, { "saikou.moe", true }, { "saikouji.tokushima.jp", true }, { "sail-holidays-hub.gr", true }, { "sail-nyc.com", true }, { "sailarmada.com", true }, { "sailboatdata.ddns.net", true }, - { "sailing-yacht.club", true }, + { "sailormoondoujinshi.org", true }, { "sailormoonevents.org", true }, + { "sailormoonfansubs.com", true }, { "sailormoongallery.org", true }, { "sailormoonlibrary.org", true }, { "sailum.tk", true }, { "sailwiz.com", true }, { "saily.pl", true }, + { "saimedia.net", true }, + { "saimithrayoga.nl", true }, { "saimoe.moe", true }, { "saimoe.org", true }, + { "sainama.com", true }, { "sainet.xyz", true }, { "sainetworks.net", true }, { "sainikbiswas.com", false }, { "sainokuni-eng.jp", true }, + { "sainsburys.jobs", true }, { "sainsburysbusinessdirect.co.uk", true }, { "sainshand.tk", true }, { "saint-aubin-sur-scie.fr", true }, + { "saint-bernard-gouesch.fr", true }, { "saint-clan.tk", true }, { "saint-cyril.com", true }, { "saint-leonard.fr", true }, @@ -105559,12 +121042,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sainteugenechurch.net", true }, { "sainteugeneschurch.com", true }, { "saintfrancescabrini.net", true }, + { "saintgabrielparish.org", true }, { "sainth.de", false }, { "sainthedwig-saintmary.org", true }, { "sainthelena-centersquare.net", true }, + { "sainthelenaparish.net", true }, { "sainthelenas.org", true }, { "saintisidorecyo.com", true }, - { "saintjamestheapostle.org", false }, + { "saintjamestheapostle.org", true }, { "saintjohn-bocaraton.com", true }, { "saintjosephschurch.net", true }, { "saintleochurch.net", true }, @@ -105591,14 +121076,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saipariwar.com", true }, { "saipeople.net", true }, { "saiputra.com", true }, + { "saiputra.net", true }, { "sairadio.net", true }, { "sairadio.net.in", true }, { "sairadio.one", true }, + { "sairadio.xyz", true }, { "sairai.bid", true }, { "sairlerimiz.tk", true }, { "sairus.fr", true }, { "saisandesh.org", true }, { "saisecure.net", true }, + { "saisecure.online", true }, + { "saiserver.net", true }, { "saisons-fruits-legumes.fr", true }, { "saisyuusyou-ikebukuro.com", true }, { "saisyuusyou-omiya.com", true }, @@ -105613,15 +121102,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saitschool.ml", true }, { "saitv.net", true }, { "saitv.org.in", true }, + { "saivang.com", true }, { "saiwebtv.com", true }, { "saiyans.com.ve", true }, { "sajabesaya.tk", true }, - { "sajamstudija.info", true }, + { "sajbersove.rs", true }, + { "sajdowski.de", false }, + { "sajjadrezaei.fit", true }, { "sajjadzaidi.com", true }, { "sajt-vizitka-nedorogo.ru", true }, { "sajter.ga", true }, - { "sajtoskal.hu", false }, - { "sajtr.ga", true }, { "sakac.cz", true }, { "sakainvest.com", true }, { "sakaki.anime.my", false }, @@ -105631,35 +121121,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sake.my", true }, { "sakellariadis.gr", true }, { "sakenohana.com", true }, + { "sakerhetsbubblan.se", true }, { "sakiborislam.com", true }, + { "sakipsabancimuzesi.org", true }, + { "sakirdak.tk", true }, { "sakiyamagumi.com", true }, + { "saklad5.com", true }, { "sako-lab.jp", true }, { "sakostacloud.de", true }, { "sakrajda.eu", true }, + { "saksham.org", true }, { "sakshi.gq", true }, { "saksonski-szlak-parowozow.pl", true }, { "sakura-paris.org", true }, { "sakuracdn.com", true }, - { "sakuradata.com", true }, - { "sakuramarketingdigital.com.br", true }, + { "sakuradata.com", false }, { "sakurapalace.tk", true }, - { "sakustar.com", true }, - { "salaamgateway.com", true }, { "saladgo.id", true }, { "saladin.vn", true }, - { "salaervergleich.com", false }, - { "salaire-minimum.com", true }, - { "salalfoundation.ca", true }, + { "salahospitality.com", true }, + { "salalfoundation.ca", false }, { "salamanders.tk", true }, { "salamence.tk", true }, - { "salandalairconditioning.com", true }, { "salariominimo.com.co", true }, { "salarycalculatoruk.co.uk", true }, + { "salaryfinance.com", true }, { "salas.cf", true }, { "salas.tk", true }, { "salasbanquetes.cl", true }, + { "salat-s-krevetkami.ru", true }, { "salati.tk", true }, + { "salatiga.com", true }, + { "salatiga.net", true }, { "salboy.co.uk", true }, + { "salce.com.au", true }, { "salco-company.com", true }, { "sald.us", true }, { "saldanda.ml", true }, @@ -105685,17 +121180,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saleem.cf", true }, { "salegor.tk", true }, { "saleh4unraid.cyou", true }, + { "salekaz.ru", true }, { "salemma.gov", true }, + { "salempress.com", true }, { "salensmotors-usedcars.be", true }, { "salento-nostro.tk", true }, - { "salentocab.com", true }, { "salerno-on-line.tk", true }, + { "salernonotizie.it", true }, { "salernotoday.it", true }, { "salery.ga", true }, { "sales-experience.nl", true }, { "sales-respect.nl", true }, + { "salesandwants.co.uk", true }, { "salesdesign.vn", true }, { "salesdivisie.nl", true }, + { "salesdock.be", true }, + { "salesdock.de", true }, + { "salesdock.nl", true }, { "salesflare.com", true }, { "salesforce-communities.com", true }, { "salesforce-experience.com", true }, @@ -105704,23 +121205,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "salesforce-setup.com", true }, { "salesforce-sites.com", true }, { "salesforce.mil", true }, + { "salesforceliveagent.com", true }, { "salesforcescrt.com", true }, - { "salesmd.com", true }, + { "salesfunnelfirstaid.com", true }, + { "saleskeyonline.com", true }, { "salesoutcomes.com", true }, { "salesprocessing.gq", true }, - { "saletodo.com", true }, { "saleturs.tk", true }, { "saletzki.de", true }, - { "salexy.kz", true }, + { "salework.net", true }, + { "salge.rocks", true }, + { "salhiyatower.com", true }, { "salibandy.tk", true }, { "salidaswap.com", true }, - { "salier-realschule.de", true }, { "salilab.org", true }, + { "salim.space", true }, { "salimicm.com", true }, { "salinecountyks.gov", true }, { "salinecountyne.gov", true }, { "salinemi.gov", true }, + { "salinevilleoh.gov", true }, { "salins-les-bains.com", true }, + { "salisburylehighpa.gov", true }, { "salisburyreds.co.uk", true }, { "salisucre.fr", true }, { "salkield.uk", true }, @@ -105736,22 +121242,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sallyheerenveen.nl", true }, { "sallyjo.tk", true }, { "sallyman.de", true }, - { "sallysubs.com", false }, { "salmadenora.net", true }, { "salman.agency", true }, { "salmanravoof.com", true }, { "salmelainenwalter.tk", true }, { "salminencrane.tk", true }, + { "salmo-rybak.ru", true }, { "salmonde.de", true }, { "salmonella.co.uk", true }, - { "salmonvision.com.tw", true }, + { "salmonrecovery.gov", true }, { "salmotierra-salvatierra.com", false }, { "salnet.wf", true }, { "salo.fi", true }, - { "salon-claudia.ch", true }, { "salon-de-patchouli.com", true }, { "salon-hinata.biz", true }, { "salon-largo.com", true }, + { "salon-legato.com", true }, { "salon-minipli.de", true }, { "salon-stil-leben.de", true }, { "salon-svadbi.tk", true }, @@ -105759,10 +121265,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "salon.io", false }, { "salon1.ee", true }, { "salonasymetria.com", true }, - { "salonasymetria.pl", true }, + { "salonboothuren.amsterdam", true }, { "salone-mio.com", true }, { "salonestella.it", true }, { "saloniestate.ml", true }, + { "salonist.io", true }, { "salonkaufmann.it", true }, { "salonni.tk", true }, { "salonsantebienetre.ch", false }, @@ -105774,18 +121281,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "salt-documentary.blog", true }, { "salt-travel.cf", true }, { "salt.fish", true }, + { "saltandlight.sg", true }, { "saltbythesea.com", false }, { "saltcave.gq", true }, { "saltedfish.network", true }, { "saltedge.com", true }, + { "saltedpasta.com", true }, { "salter.com.tr", true }, { "saltercane.com", false }, { "saltlakecounty.gov", true }, + { "saltlakehealth.gov", true }, { "saltnsauce.cf", true }, { "saltnsauce.ga", true }, { "saltnsauce.gq", true }, { "saltnsauce.ml", true }, - { "saltosaltos.eu", true }, { "saltrecovery.com.au", true }, { "saltro.nl", false }, { "saltstack.cz", true }, @@ -105793,19 +121302,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saltus.ga", true }, { "saltwaterfishaspets.com", true }, { "saltydogpaddle.org", true }, - { "saltyfacts.com", true }, - { "saltyfish.tech", true }, { "saltykai.com", true }, { "saltyproshop.com", true }, { "salud-paratodos.com", true }, { "salud.top", false }, { "saludakeuring.nl", true }, - { "saluddecalidad.com", false }, { "saludmas.site", true }, { "saludnutrivida.com", true }, { "saludsis.mil.co", true }, { "saluels.servemp3.com", true }, { "salukinet.tk", true }, + { "salunganogroup.com", true }, + { "salus-cm.care", true }, { "salussafety.io", true }, { "salut-butovo.cf", true }, { "salutenaturale.com.br", true }, @@ -105814,14 +121322,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "salutethegrains.com", true }, { "salutethepig.com", true }, { "salutparis.ml", true }, + { "salva.ovh", true }, { "salva.re", true }, { "salvaalocombia.com", true }, { "salvadoralevin.tk", true }, { "salvadorcorriols.tk", true }, { "salvadorinfantil.tk", true }, + { "salvageforgood.org", true }, { "salvalartesicilia.it", true }, { "salvameblog.tk", true }, { "salverainha.org", true }, + { "salwyrr.com", true }, + { "salz-und-sinn.de", true }, { "salzamt.tk", true }, { "salzburg-erfahren.at", true }, { "salzburg-verkehr.at", true }, @@ -105834,11 +121346,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sam88.cc", true }, { "samabest.tk", true }, { "samalderson.co.uk", true }, - { "samalova-chata.cz", false }, - { "samandavani.com", true }, { "samandcatonline.tk", true }, { "samandej.ir", true }, - { "samandroscosrestaurant.com", true }, { "samanexports.in", true }, { "samangel.org", true }, { "samanthabiggers.com", true }, @@ -105849,22 +121358,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samarhotel.com", true }, { "samaritainsmeyrin.ch", false }, { "samarpanfurniture.com", true }, + { "samarth.edu.in", true }, { "samarthtyagi.tk", true }, + { "samatva-yogalaya.com", true }, { "samba.org", true }, - { "sambaash.com", true }, { "sambeso.net", true }, + { "sambot.ru", true }, { "sambot22.tk", true }, { "sambuchanan.tk", true }, { "sambus.com", true }, + { "samcera.gov", true }, { "samclarke.com", true }, + { "samclarke.uk", true }, { "samdev.io", true }, + { "same.lol", true }, { "samedamci.com", true }, { "samegoal.com", true }, { "samegoal.org", true }, { "samel.de", true }, + { "samelol.com", true }, { "samentest.tk", true }, { "samenuitsamenthuis.tk", true }, { "samenvoorelkaar.nl", true }, + { "samenvoormedicatieoverdracht.nl", true }, { "samenwerkingsportaal.nl", true }, { "samepage.io", true }, { "samesound.ru", true }, @@ -105872,10 +121388,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sameteem.com", true }, { "sametimetomorrow.tk", true }, { "sameworks.com", true }, + { "samh.org.uk", true }, { "samhall.se", true }, { "samhsa.gov", true }, { "samhuri.net", true }, - { "samiamelikian.com.br", false }, { "samic.ir", true }, { "samic.org", true }, { "samic.us", true }, @@ -105890,18 +121406,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samkelleher.com", true }, { "samkoandmikotoywarehouse.com", true }, { "saml-gateway.org", true }, + { "saml2.com", true }, { "samlam.ddns.net", true }, { "samlamac.com", true }, { "samlaw.co.nz", false }, + { "sammich.eu", true }, + { "sammich.social", true }, { "sammichscripts.com", true }, { "sammyservers.com", true }, { "sammyservers.net", true }, - { "samoacollege.edu.ws", true }, { "samodel.ml", true }, { "samodel.tk", true }, { "samogonka.tk", true }, { "samokhin.cf", true }, { "samorazvitie.ru", true }, + { "samorzad.gov.pl", true }, { "samosad.tk", true }, { "samotorsporttyres.com.au", true }, { "samoyeddogsguide.com", true }, @@ -105909,37 +121428,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samoylyk.net", false }, { "samozdraw.ga", true }, { "sampaguide.com", true }, + { "sampath.lk", true }, { "sampatjewelers.com", true }, { "sample-site.click", true }, { "samplefashion.nl", true }, + { "sampleroom.online", true }, + { "sampsoncountync.gov", true }, { "sampurna.shop", true }, - { "samri.pt", true }, { "samroelants.com", true }, + { "sams.wtf", true }, + { "samsatcorner.com", true }, + { "samsatkeliling.info", true }, { "samscollection.in", true }, { "samsebe.ml", true }, { "samsebe.tk", true }, + { "samsepi0l.ovh", true }, { "samshouseofspaghetti.net", true }, { "samskaar.in", true }, + { "samson-td.com", true }, + { "samson.org.au", true }, { "samsonnetworks.org", true }, { "samsreseller.com", true }, { "samstudios.tk", true }, { "samsunghalfmarathon.com", true }, { "samtalen.nl", true }, - { "samthecomputerman.com.au", true }, { "samudranesia.id", true }, { "samuel-brown.com", true }, { "samuel-philipp.de", true }, + { "samuelaigbe.com", true }, { "samuelbeckett.tk", true }, { "samuelbramley.com", true }, + { "samuelharmon.com", true }, { "samuelkeeley.com", true }, { "samuelkyalo.tk", true }, - { "samuellaulhau.fr", false }, + { "samuelphotos.com", true }, { "samuels-blog.de", true }, { "samuels-graphics.tk", true }, { "samui-samui.de", false }, { "samuidiving.net", true }, { "samuirehabcenter.com", true }, { "samurai-marumori.com", true }, + { "samuraichair.com", true }, { "samuraiskye.com", true }, { "samusil.org", true }, { "samvanderkris.com", true }, @@ -105947,6 +121476,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "samwilberforce.com", true }, { "samwrigley.co.uk", true }, { "samwu.tw", true }, + { "samy.rip", true }, { "samyang.tk", true }, { "samystic.com", true }, { "san-cassiano.com", true }, @@ -105956,6 +121486,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "san-vigilio-marebbe.net", true }, { "san.tv", true }, { "san0j.de", true }, + { "sana-commerce.com", true }, { "sana-store.com", true }, { "sana-store.cz", true }, { "sana-store.sk", true }, @@ -105963,14 +121494,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanalikaforum.tk", true }, { "sanalsergi.com", true }, { "sanalturcu.com", true }, - { "sanandreasstories.com", true }, + { "sanandreasstories.com", false }, { "sanantoniolocksmithtx.com", true }, { "sanapaino.fi", true }, + { "sanaphone.com", true }, { "sanasport.at", true }, + { "sanasport.be", true }, + { "sanasport.bg", true }, { "sanasport.cz", true }, { "sanasport.de", true }, + { "sanasport.fr", true }, { "sanasport.hu", true }, + { "sanasport.it", true }, { "sanasport.pl", true }, + { "sanasport.si", true }, { "sanasport.sk", true }, { "sanates.cz", true }, { "sanatfilan.com", false }, @@ -105980,49 +121517,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanatorionosti.com.ar", true }, { "sanatstore.ir", true }, { "sanayi.gov.tr", true }, + { "sanbaishan.com", true }, + { "sanbenitocounty-ca-cre.gov", true }, + { "sanbernardino.gov", true }, { "sanbornteam.com", true }, { "sanbs.org.za", true }, { "sancaktepehaber.tk", true }, + { "sanche.org", true }, { "sanchez.adv.br", false }, + { "sancpa.ca", true }, { "sancraft.de", true }, + { "sancta-domenica.hr", true }, { "sanctio.tk", true }, { "sanctskin.com", true }, { "sanctum.geek.nz", false }, - { "sanctumwealth.com", false }, { "sanctus-de.tk", true }, + { "sanctus.co.uk", true }, { "sand-and-mercury.tk", true }, + { "sand-bleibt.de", true }, { "sand-craft.ml", true }, { "sand-stoneinc.com", true }, { "sand66.cc", true }, { "sand66.com", true }, { "sandairephotography.com", true }, + { "sandbox.i.ng", true }, { "sandbox.mydigipass.com", false }, { "sandelduggal.com", true }, { "sander.sh", true }, { "sanderdesign.tk", true }, + { "sanderdorigo.nl", true }, { "sanderkoenders.eu", true }, { "sanderkoenders.nl", true }, - { "sanderpoppe.com", true }, - { "sanderstech.solutions", true }, + { "sanderpoppe.com", false }, + { "sandersonfarms.com", true }, { "sandervanderstap.nl", true }, { "sandesh.tk", true }, - { "sandeshpanta.com", true }, { "sandgatebaysidedental.com.au", true }, { "sandiegolemonlawyer.net", true }, + { "sandiegolifechanging.org", true }, { "sandiegoluxuryhomes.org", true }, { "sandiegotaxpreparation.com", true }, { "sandiegotown.com", true }, { "sandipmukherjee.tk", true }, + { "sanditong.com", true }, { "sandiuno.ml", true }, + { "sandle.uk", true }, { "sandlerpartners.com", true }, { "sandmanintel.com", true }, { "sandmarc.cz", true }, { "sandokan.tk", true }, { "sandor.wtf", true }, + { "sandoval.photography", true }, + { "sandownpolicenh.gov", true }, { "sandr0.tk", true }, { "sandra-perlbach.de", true }, - { "sandrabamboo.com", true }, + { "sandrabay.com", true }, { "sandrabernardo.com", true }, + { "sandragortemaker.nl", true }, { "sandrainden.nl", true }, { "sandraindenfotografie.nl", true }, { "sandramargolesmd.com", true }, @@ -106030,28 +121581,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sandras-hobbystueble.de", true }, { "sandrasturm.net", true }, { "sandrinesite.tk", true }, - { "sandro.sk", true }, { "sandrolittke.de", true }, { "sandrproperty.com", true }, { "sandsclan.tk", true }, { "sandspoint.gov", true }, + { "sandssteelservices.com", true }, + { "sandstein.de", true }, { "sandstroh.network", true }, { "sandtears.com", true }, { "sandtime.io", true }, { "sandtler.moe", true }, { "sandton-plumbing.co.za", true }, - { "sandtonplumber24-7.co.za", true }, { "sanduskycountyoh.gov", true }, { "sandwichclub.tk", true }, { "sandwichcouncil.tk", true }, { "sandwoman.tk", true }, + { "sandybigboobs.com", true }, { "sandybigboobs.net", true }, + { "sandylanevacations.com", true }, { "sandyrobison.org", true }, { "sandyrobsonhypnotherapy.co.uk", true }, { "sandyvazquez.com", true }, { "sanemind.de", true }, { "sanetschka.tk", true }, { "sanex.ca", true }, + { "sanf.org", true }, { "sanfernando.tk", true }, { "sanfranciscotours.org", true }, { "sangamonil.gov", true }, @@ -106063,7 +121617,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sangoandmiroku.tk", true }, { "sangowen.xyz", true }, { "sangreytinta.tk", true }, - { "sangriasenorial.com", true }, { "sangwanbeach.tk", true }, { "sangyoui.health", true }, { "sanhotel.ml", true }, @@ -106071,8 +121624,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanierungskonzept.pro", true }, { "sanificazioni.roma.it", true }, { "sanikapandit.com", true }, + { "sanilaccounty.gov", true }, + { "sanilactownshipmi.gov", true }, { "sanin.gq", true }, - { "sanisafepro.com", true }, + { "sanitaer-heinze.com", true }, { "sanitaer-notdienst-zentrale.de", true }, { "sanitairwinkel.be", true }, { "sanitairwinkel.com", true }, @@ -106086,31 +121641,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanitynet.org", true }, { "sanityrant.cf", true }, { "sanityrant.ml", true }, - { "sanjacintotitle.com", true }, { "sanjanaherath.cf", true }, + { "sanjaymenon.xyz", true }, { "sanjosecolorectal.com", true }, { "sanjosecostarica.org", true }, { "sanjoweb.tk", true }, { "sanjuanchamelco.tk", true }, + { "sanjuancountywa.gov", true }, { "sanjuandeabajo.tk", true }, + { "sanjuandediosburgos.es", true }, { "sanjuanerita.com", true }, { "sanketsu.ml", false }, { "sanki.tk", true }, - { "sankovitzmediation.com", true }, { "sankt-kassian.com", true }, { "sanktannae-advokater.dk", true }, { "sanktpetriskole.dk", true }, - { "sanleandromazda.com", true }, { "sanliurfahaberi.tk", true }, { "sanluisdequillota.tk", true }, { "sanmarcovecchio.tk", true }, + { "sanmigueltimes.com", true }, { "sanmonjiya-kimono.com", true }, { "sanmuding.com", true }, + { "sanne-content.de", true }, { "sannefoltz.com", true }, - { "sannesfotklinikk.no", true }, { "sannikfk.gq", true }, { "sanodent.com.ua", true }, { "sanook69.com", true }, + { "sanook69s.com", true }, { "sanooktiew.com", false }, { "sanpablo.tk", true }, { "sanpancrazio.tk", true }, @@ -106120,27 +121677,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sanpatriciocountytx.gov", true }, { "sanpham-balea.org", true }, { "sanqinyinshi.com.cn", true }, + { "sanrafaelvigo.org", true }, + { "sanray73.ru", true }, { "sans-hotel.com", true }, { "sansairyu-kuyoukai.com", true }, + { "sansdb.io", false }, { "sansdict.ml", true }, { "sanskrit.pub", true }, { "sanskrit.site", true }, + { "sanskritiyoga.com", true }, { "sansonehowell.com", true }, { "sanstyles.be", true }, + { "sansumclinic.org", true }, { "santa-fell-from.space", true }, { "santabarbaraca.gov", true }, + { "santacasamarilia.com.br", true }, { "santackergaard.nl", true }, { "santaclaracounty.gov", true }, + { "santaclaratx.gov", true }, + { "santaclarautah.gov", true }, + { "santaclarita.gov", true }, { "santacruzca.gov", true }, + { "santacruzcountyca.gov", true }, + { "santacruzgalapagoscruise.com", true }, { "santacruzstudio.com.mx", true }, + { "santadeluxo.com.br", true }, { "santafesilversaddlemotel.com", true }, - { "santaijia.com", false }, + { "santafetx.gov", true }, + { "santaluciatirajana.com", true }, { "santamargarita.tk", true }, { "santamariadelaisla.tk", true }, { "santamariaretreats.co.uk", true }, { "santamariaretreats.uk", true }, { "santamonicapost123.org", true }, - { "santander.com", true }, + { "santander-dojo.com", true }, + { "santander.com", false }, { "santanderassetmanagement.es", false }, { "santanderibc.com", false }, { "santanderideas.com", false }, @@ -106149,10 +121720,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "santapace.com.br", true }, { "santarosaca.gov", true }, { "santarosanm.gov", true }, + { "santarosasegurapp.gov.co", true }, { "santasofiastereo.tk", true }, { "santaynezchumash-nsn.gov", true }, + { "sante-actu.com", true }, + { "sante-informations.com", true }, + { "sante.akita.jp", true }, { "santegra.tk", true }, - { "santehart.by", true }, { "santehnica.ml", true }, { "santehnik-dnepr.dp.ua", true }, { "santehnik-home.ru", true }, @@ -106160,13 +121734,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "santekhmarket-nn.ru", true }, { "santenatureetcie.com", false }, { "santeriabeliefs.com", true }, - { "santevege.fr", true }, - { "santevie.ch", false }, { "santhatela.com.br", true }, + { "santhoffplumbingco.com", false }, { "santhoshveer.com", true }, { "santiagogarza.co", true }, { "santibanezdetera.tk", true }, { "santibz.es", true }, + { "santillana.com", true }, { "santimb.photos", true }, { "santing.net", true }, { "santippolito-borgo.tk", true }, @@ -106177,15 +121751,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "santmark.org", true }, { "santo.fi", true }, { "santodelgiorno.it", true }, + { "santomospb.ru", true }, { "santong.tk", true }, { "santoscarmelitas.tk", true }, { "santosdecordoba.tk", true }, { "santoshpandit.com", true }, + { "santosmanjares.com.mx", true }, { "santugon.tk", true }, { "santv.cc", false }, + { "sanuk.com", true }, { "sanukarlos.tk", true }, { "sanweb.info", true }, { "sanych-msk.ru", false }, + { "saoneth.pl", true }, { "saorsa.fr", true }, { "saorsat.com", true }, { "saorsat.ie", true }, @@ -106201,24 +121779,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sapafolumuxu.tk", true }, { "sapancavillalari.com", true }, { "sapaship.ru", true }, + { "saphead.cn", true }, { "saphi.re", true }, + { "saphnelosavings.com", true }, { "sapibatam.com", false }, { "sapien-ci.com", true }, + { "sapien.com", true }, { "sapience.com", true }, { "sapienml.com", true }, + { "sapiensecure.io", false }, { "sapienz.tk", true }, { "sapienza-eclipse.com", true }, { "sapienzaconsulting.com", true }, { "sapik.hu", true }, - { "sapindus.pl", false }, { "sapiperelining.com.au", true }, - { "sapk.fr", true }, + { "sapling.ai", true }, { "saplumbers.com.au", true }, { "sapmap01.azurewebsites.net", true }, { "sapoghki.tk", true }, - { "saposute-s.jp", true }, { "sapphi.st", true }, + { "sapphic.site", true }, + { "sapphirebet.com", true }, + { "sapphireblinds.com.au", true }, { "sapphireblue.me", true }, + { "sapphirecleaningwa.com.au", true }, { "sapphirepearl.com.sg", true }, { "sapphireservicesga.com", true }, { "sapporo-asaichi.com", true }, @@ -106232,7 +121816,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saq.com", false }, { "saqara.com", true }, { "saracenmarkets.com", true }, - { "sarae.id", false }, + { "sarae.id", true }, { "sarafanchik.tk", true }, { "sarafanchiki.tk", true }, { "sarafani.tk", true }, @@ -106241,8 +121825,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sarah-brown.tk", true }, { "sarah-harding.tk", true }, { "sarah-jane.nl", true }, + { "sarah-jones.uk", true }, { "sarahbaker.co.nz", true }, - { "sarahfuerstenberg.com", true }, + { "sarahbowling.org", true }, { "sarahjaneethan.co.uk", true }, { "sarahjaneredmond.com", true }, { "sarahlicity.co.uk", true }, @@ -106252,17 +121837,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sarahneumann.tk", true }, { "sarahplusdrei.de", true }, { "sarahshabrina.tk", true }, + { "sarahtamsin.com", true }, { "sarahvanessen.tk", true }, { "sarahwellington.com", true }, { "sarahwikeley.co.uk", true }, + { "saraimnhd.com", true }, { "saraleebread.com", false }, - { "saralmai.com", true }, { "saranamayyappa.tk", true }, - { "sarariman.com", true }, - { "saraskins.tk", true }, + { "sarand.ch", true }, { "sarasotadentistry.com", true }, - { "sarasotaplasticsurgery.com", true }, { "sarasotaroboticurology.com", true }, + { "saratogasprings-ut.gov", true }, + { "saratogawi.gov", true }, { "saraton-kasalligi.cf", true }, { "saraton-kasalligi.ml", true }, { "saraton-kasalligi.tk", true }, @@ -106271,6 +121857,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saratovnews.ml", true }, { "saratovtime.tk", true }, { "sarayeketabesoti.ir", true }, + { "sarbarhetsskanning.se", true }, { "sarbash.ee", true }, { "sarbel.tk", true }, { "sarcasmlol.ga", true }, @@ -106281,12 +121868,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sardegnarifiuti.it", true }, { "sardegnatirocini.it", true }, { "sardine.tk", true }, + { "sardinhagarcia.pt", true }, { "sardinianvillas.co.uk", true }, { "sardinianvillas.com", true }, { "sardinianvillas.ru", true }, { "sardoche.lol", true }, { "sarecords.tk", true }, + { "sareena.org", true }, { "sarella.org", true }, + { "sarems.com", true }, { "saresegur.com", true }, { "sargar.tk", true }, { "sargarmi.tk", true }, @@ -106299,10 +121889,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saritas.com.tr", true }, { "sarjakuvakauppa.fi", true }, { "sarjas.tk", true }, - { "sarkaribabu.in", true }, { "sarkarinaukriworld.net", true }, + { "sarkariresultz.in", true }, { "sarkazam.ml", true }, { "sarkchat.cf", true }, + { "sarki-sozleri.net", true }, { "sarkisianbuilders.com", true }, { "sarkom.tk", true }, { "sarkvideos.cf", true }, @@ -106311,11 +121902,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sarny.at", true }, { "sarogiw.tk", true }, { "saropa.com", true }, - { "sarouel.fr", true }, - { "sarox.com.au", false }, { "sarpsb.org", true }, { "sarrworld.com", true }, { "sars-cov-2.com", true }, + { "sarto.roma.it", true }, { "sartori.tk", true }, { "sartoria.milano.it", true }, { "sartoria.roma.it", true }, @@ -106329,10 +121919,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sascha-brockel.de", true }, { "sascha.io", true }, { "sascha.is", true }, + { "saschabruemmer.de", true }, { "saschaeggenberger.ch", true }, { "saschaeggenberger.com", true }, { "sascorp.co.uk", true }, { "sascorp.es", true }, + { "saseducacao.com.br", true }, { "sash.pw", true }, { "sashabognibov.tk", true }, { "sashaclothing.tk", true }, @@ -106341,11 +121933,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sashka.com.ua", true }, { "sashleighaust.com", true }, { "sasioglu.co.uk", true }, + { "saskiacreations.nl", true }, { "saskiadhont.be", true }, - { "saskiafarell.net", true }, { "saskialund.de", true }, { "sasrobotics.xyz", true }, { "sasroli.tk", true }, + { "sassyporkchop.com", true }, { "sastamalandemarit.fi", true }, { "sastd.com", true }, { "sasyabapi.com", true }, @@ -106364,66 +121957,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "satat.tk", true }, { "sataturf.com", true }, { "sateahafreedi.com", true }, + { "satealliasdomain.net", true }, { "satelital.tk", true }, { "satellights.tk", true }, { "satellite-equipment.tk", true }, - { "satellite-reviews.net", true }, { "satellite-shop.tk", true }, { "satellite-top.com", true }, + { "satellitebeach.gov", true }, { "satellites.hopto.me", true }, { "satellitetelevision.tk", true }, { "satellitetv-deal.com", true }, { "satellitetv.tk", true }, - { "satena.com", true }, { "satheeshsbennet.tk", true }, { "satimagingcorp.com", true }, { "satindolls.tk", true }, { "satinn.pl", true }, - { "satipatthanamula.com", true }, { "satirelabs.com", true }, { "satisfaction.su", true }, { "satisfactory-calculator.com", true }, + { "satismeter.com", true }, { "satisperfectacollections.com", true }, + { "satistemsilcileri.com", true }, { "sativatunja.com", true }, - { "satja-juga.de", true }, - { "satja-juga.pl", true }, { "satl-lelystad.nl", true }, { "satlantis.tk", true }, { "satmd.de", true }, { "sato-legaloffice.jp", true }, { "satoshilabs.com", true }, { "satoshinumbers.com", true }, + { "satowa-network.eu", true }, { "satpersian.tk", true }, { "satplay.host", true }, { "satradio.tk", true }, { "satramana.org", true }, - { "sats4.me", true }, { "satselect.tk", true }, { "satserwis.xyz", true }, { "satsukii.moe", true }, { "satsumi.tk", true }, { "satta-company.tk", true }, + { "sattajhotelsandhomes.com", true }, { "sattamatka420.mobi", false }, - { "sattamatkamobi.com", true }, { "sattaresult.in", true }, { "sattaresult.net", true }, + { "saturdayblitz.com", true }, { "saturdayenterprises.ga", true }, { "saturn-test.network", true }, { "saturne.tk", true }, { "saturnjump.com", true }, - { "saturuang.id", false }, + { "saturnus.consulting", true }, + { "satvasolutions.com", true }, + { "satwcomic.com", true }, { "satyamshivamsundaram.in", true }, - { "sauber.dk", true }, + { "sauber-lab.com", true }, + { "saubermacher.at", true }, { "saubooks.tk", true }, { "saucelabs.com", true }, { "saucy.io", true }, { "saudecoluna.com", true }, - { "saudeealimentos.com", true }, + { "saudedigitalnews.com.br", true }, { "saudeintimadamulher.com.br", true }, { "saudenoclique.com.br", true }, + { "saudiembassy.net", true }, { "saudiglasses.com", true }, { "saudinews.ml", true }, - { "sauditourguide.com", true }, { "saue.edu.ee", true }, { "sauenytt.no", true }, { "sauerbrey.eu", true }, @@ -106432,15 +122028,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sauerwetter.tk", true }, { "saugatucktownshipmi.gov", true }, { "saulchristie.com", true }, - { "saulsplace.com", true }, + { "saulsplace.com", false }, { "saulsplacehealth.com", true }, { "saulsplacewebdesign.com", true }, { "saultdefencelaw.ca", true }, { "saulvanderbijl.com", true }, { "saumon-de-france.com", false }, { "saumon-france.com", false }, - { "saumondefrance.fr", false }, - { "saumonfrance.fr", false }, { "sauna-acties.nl", true }, { "saunafahrten.ch", true }, { "saunahats.eu", true }, @@ -106449,44 +122043,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "saunavoordeel.nl", true }, { "saurel.me", true }, { "saurusly.com", true }, + { "sauseng.eu", true }, { "sauthon.com", false }, { "sauvagebridge.nl", true }, { "sauve-tes-euros.com", true }, { "savaari.com", true }, - { "savacloud.com", false }, { "savage-harmony.tk", true }, { "savagecore.eu", true }, { "savageorgiev.com", true }, { "savanna.io", true }, { "savanna.vn.ua", true }, { "savannahhappycats.com", true }, - { "savannahsidewalktours.com", true }, { "savannapro.vn.ua", true }, { "savant-dagen.nl", true }, { "savantcare.com", true }, - { "savasanadam.com", true }, + { "savanti.ca", true }, { "savatha.tk", true }, { "savbus.com", true }, { "savbus.net", true }, { "savbus.ws", true }, { "savchenko.net", true }, { "savconventioncenter.com", true }, + { "savcurv.com", true }, { "save-me-aachen.de", true }, { "save-me-aachen.eu", true }, { "save-me-koeln.de", true }, + { "save.gov", true }, + { "saveaward.gov", true }, { "savebees.org", true }, { "savebt.net", true }, { "savedana.tk", true }, { "savejonasquinn.tk", true }, + { "savemycent.com", true }, { "savemyexams.co.uk", true }, + { "savemylicence.co.uk", true }, { "saveolga.tk", true }, { "saveonadventures.com", true }, + { "saveonattractions.com", true }, { "saveoney.ca", true }, { "saveora.com", true }, { "saveora.shop", true }, { "savesilvercreek.com", true }, { "savesilvercreek.org", true }, { "savestatecentral.tk", true }, + { "savesubs.com", true }, { "savetech.tk", true }, { "savethedogfishfoundation.org", true }, { "savetheinternet.eu", true }, @@ -106495,33 +122095,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "savewildcats.eu", true }, { "savewildcats.foundation", true }, { "savewildcats.life", true }, - { "savewithtrove.com", false }, { "savewithupgrade.com", true }, { "saveworldpets.ga", true }, { "saveyourhouse.tk", true }, + { "saveyourinternet.eu", true }, { "savicki.co.uk", true }, { "savicki.cz", true }, { "savicki.sk", true }, - { "saviezvousque.net", true }, { "savilleassessment.com", true }, { "savin.ga", true }, + { "savin.in", true }, { "savinggoliath.com", true }, - { "savinglivesatbirth.net", true }, + { "savingmoses.org", true }, { "savingsbondwizard.gov", true }, { "savingsoftheyear.com", true }, - { "savingsomegreen.com", true }, { "savingtails.org", true }, - { "savoir.fr", true }, + { "saviynt.com", true }, { "savoir.ga", true }, { "savonlinnatrujillo.tk", true }, { "savonsuuntaporaus.fi", true }, - { "savransafari.com", true }, + { "savoryandpartners.com", true }, { "savushkin.tk", true }, + { "savvycleaner.com", true }, + { "savvydevelopment.com", true }, { "savvystagingaz.com", true }, + { "sawanonlinebookstore.com", true }, { "sawansasaram.ml", true }, { "sawiday.at", true }, { "sawiday.be", true }, - { "sawiday.com", true }, + { "sawiday.com", false }, { "sawiday.cz", true }, { "sawiday.de", true }, { "sawiday.es", true }, @@ -106531,38 +122133,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sawiday.nl", true }, { "sawiday.pl", true }, { "sawiday.se", true }, - { "sawiday.work", true }, + { "sawikowscy.eu", true }, + { "sawikowscy.pl", true }, { "sawyerroofing.com", true }, { "saxeandthecity.com", true }, + { "saxifrageleather.com", true }, { "saxis.dk", true }, - { "saxmasters.de", true }, { "saxobroko.com", true }, { "saxobroko.ga", true }, { "saxobroko.gq", true }, + { "saxocon.com", true }, { "saxojoe.co.uk", true }, { "saxojoe.de", true }, { "saxol-group.com", true }, { "saxoncreative.com", true }, { "saxophone.tk", true }, - { "saxotex.de", true }, { "saxotrader.com", true }, { "saxynele.tk", true }, { "say-it-loud.com", true }, - { "saya.gg", true }, + { "sayansamanta.com", true }, { "sayany.tk", true }, - { "saybay24.com", true }, { "saybecraft.ru", true }, + { "saybrus.partners", true }, { "saydj.tk", true }, { "sayednidhalphoto.tk", true }, { "sayeghonline.com", false }, + { "sayehsazan.ir", true }, { "sayers.group", false }, - { "sayfr.com", true }, + { "sayfa.istanbul", true }, + { "sayfr.com", false }, { "sayhanabi.eu.org", true }, - { "sayheymike.com", true }, + { "sayhi.com", true }, { "sayhuahuo.com", true }, + { "sayhuahuo.net", true }, + { "sayhuahuo.xyz", true }, + { "sayingimages.com", true }, + { "sayiw.com", true }, { "sayprepay.com", true }, - { "sayrodigital.com", false }, - { "says.lol", true }, { "sayura.net", true }, { "sayver22.com", true }, { "saz-it.de", true }, @@ -106578,43 +122185,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sb.im", true }, { "sb.sb", true }, { "sb0.io", true }, + { "sba7a.loans", true }, { "sbabeshin.tk", true }, + { "sbacorporation.it", true }, { "sbanken.no", true }, { "sbaten.nl", true }, { "sbblog.cn", true }, { "sbbz-bad-wurzach.de", true }, { "sbcalitagtag.edu.ph", true }, { "sbcargo.com", true }, + { "sbcbatangas.edu.ph", true }, + { "sbcgloballogin.com", true }, { "sbcmedia.nl", true }, - { "sbconstrucciones.com", true }, { "sbcountyarc.gov", true }, { "sbcountyatc.gov", true }, - { "sbedirect.com", true }, + { "sbcountywines.com", true }, + { "sbeech.uk", false }, { "sbequineevac.org", true }, { "sber-solutions.kz", true }, { "sber-solutions.ru", true }, { "sber.games", true }, - { "sber.us", true }, { "sberanalytics.ru", true }, - { "sberauto.com", true }, { "sberbank.ch", true }, { "sbercity.ru", true }, { "sbercontactmonitoring.ru", true }, + { "sberlogistics.ru", true }, { "sbermobile.ru", true }, { "sberna-fotofast.cz", true }, { "sbestimes.com", true }, + { "sbettoken.org", true }, { "sbf888.com", true }, + { "sbgcred.com", true }, { "sbhscotland.org.uk", true }, { "sbiewald.de", true }, + { "sbin.pt", true }, { "sbir.gov", false }, { "sbirwot.xyz", true }, - { "sbit.com.br", true }, - { "sbl01.com", true }, { "sbl250.com", true }, - { "sbli-webhook.herokuapp.com", true }, + { "sbli.com", true }, + { "sblogistica.ru", true }, { "sbm.cloud", true }, + { "sbm.org.tr", true }, { "sbmenedzsment.hu", true }, - { "sbmlogistik.com", false }, { "sbmsite.cf", true }, { "sbmsite.ml", true }, { "sbmsitelist.ml", true }, @@ -106623,14 +122235,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sbmt.cc", true }, { "sbo.no", true }, { "sbodewissel.tk", true }, - { "sbond.co", true }, { "sborka.ml", true }, { "sbpk.fr", true }, { "sbpropman.co.uk", true }, + { "sbrc.gov", true }, { "sbrouwer.org", true }, { "sbrownbourne.com", false }, { "sbsavings.bank", true }, { "sbscyber.com", true }, + { "sbspp.ru", true }, { "sbsrv.ml", true }, { "sbssoft.ru", true }, { "sbst.gov", true }, @@ -106639,38 +122252,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sbz.fr", true }, { "sc-artworks.co.uk", false }, { "sc019.com", true }, - { "sc2pte.eu", false }, + { "sc2labs.com", true }, + { "sc2pte.eu", true }, { "sc5.jp", true }, { "scaarus.com", true }, - { "scabieslice.com", true }, + { "scadanews.net", true }, { "scaffalature.roma.it", true }, { "scaffoldhiremidrand.co.za", true }, { "scaffoldhirerandburg.co.za", true }, { "scaffoldhiresandton.co.za", true }, { "scaffoldingsandton.co.za", true }, - { "scaffoldingsolutions.com", true }, { "scag9.com", true }, { "scai.org", true }, { "scala.click", true }, - { "scalacollege.nl", true }, { "scalaire.com", true }, { "scalaire.fr", true }, { "scale.at", true }, { "scale.milano.it", true }, { "scale.roma.it", true }, { "scalecalculation.ml", true }, + { "scaledge.com", true }, { "scalemodeling.tk", true }, { "scalesbiolab.com", true }, + { "scaleskun.com", true }, { "scaligerorooms.it", true }, { "scaling.solutions", false }, + { "scalinx.com", true }, { "scalive.tv", true }, + { "scallyboy.uk", true }, { "scallywagsbouncycastles.co.uk", true }, { "scallywagskids.co.uk", true }, + { "scalpbase.com", true }, { "scalpel.com", true }, + { "scalr.io", true }, { "scamadviser.com", true }, { "scamangels.com", true }, { "scambistimaturi.com", true }, { "scamblockplus.org", true }, + { "scammer.info", false }, + { "scamwatch.gov.au", true }, { "scan.co.uk", true }, { "scan.computer", true }, { "scanamed.tk", true }, @@ -106680,10 +122300,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scandata.cf", true }, { "scandata.tk", true }, { "scandesk.com", true }, - { "scandicom.fi", true }, - { "scandinavia.dating", true }, { "scandinavia.ga", true }, { "scandinaviancorner.tk", true }, + { "scandiweb.com", true }, { "scaner.ga", true }, { "scangeo.net", true }, { "scanigma.com", true }, @@ -106700,6 +122319,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scanutracker.com", true }, { "scanyachat.cf", true }, { "scapin.dk", true }, + { "scapp9565.xyz", true }, + { "scappoose.gov", true }, + { "scappoosebay-wc.org", true }, { "scarabcoder.com", true }, { "scaracloud.ddns.net", true }, { "scarafaggio.it", true }, @@ -106709,6 +122331,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scarecrow-cn.com", true }, { "scaricamusica.tk", true }, { "scarinex.tk", true }, + { "scarletandgame.com", true }, + { "scarsviewchrysler.com", true }, { "scaryghost.tk", true }, { "scatgirls.net", true }, { "scatsbouncingcastles.ie", true }, @@ -106719,44 +122343,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scavalentenx.duckdns.org", true }, { "scavenged.ga", true }, { "scbdh.org", true }, + { "scbodner.com", true }, { "sccd.co.uk", true }, { "sccoaching.io", true }, { "scde.ventures", true }, { "scdmx.de", true }, + { "scdn.us", true }, { "sceenfox.de", true }, + { "scejournals.org", true }, { "scenadex.ga", true }, { "scenari.eu", true }, { "scenari.ovh", true }, + { "scenarp.pl", true }, { "scenastu.pl", true }, { "scene.mx", true }, { "scenefense.tk", true }, { "scenester.tv", true }, { "scenetv.ga", true }, { "scenicbyways.info", true }, - { "scenicpathways.com", true }, { "scented-delights.co.uk", true }, + { "scentiche.com", true }, { "scepticism.com", true }, { "scevity.com", true }, { "scfpensante.ca", true }, + { "scfssp.it", true }, { "scguaranty.com", true }, { "sch44r0n.de", true }, - { "sch5-gusev.ru", true }, { "schaafenstrasse.koeln", true }, { "schachburg.de", true }, - { "schack.dk", true }, + { "schachingerfilm.at", true }, { "schadehulpservice.nl", true }, - { "schadevergoedingen.eu", true }, { "schaedlingsbekaempfung.tk", true }, + { "schaerding-innovativ.at", true }, + { "schafspieker.ddnsking.com", false }, { "schallert.com", false }, { "schambereich.org", true }, { "schamlosharmlos.de", true }, + { "schanksysteme.cloud", true }, { "schaper-sport.com", true }, { "schastie.ml", true }, { "schat.top", true }, { "schatderer.com", true }, + { "schatderer.xyz", true }, { "schattenwoelfe.tk", true }, { "schatzibaers.de", true }, { "schauergroup.com", true }, + { "schaumburg-dachundwand.de", true }, { "schaumburgil.gov", true }, { "schauraum.tk", true }, { "schauspielbuehnen.de", true }, @@ -106770,17 +122402,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schefczyk.de", true }, { "schefczyk.eu", true }, { "schefczyk.net", true }, + { "schefer-mietstapler.de", true }, + { "scheidegger-kaesealpe.de", true }, { "scheidingspuntlansingerland.nl", true }, - { "scheidsrechtersinfo.nl", true }, { "scheinerhaus.at", true }, { "scheinlichter.de", true }, + { "schekino.ru", true }, { "scheldestromen.nl", true }, { "schelkovo.tk", true }, { "schella.network", true }, { "schellebelle.tk", true }, + { "schellenberg-web.de", true }, + { "schellenberg.ac", true }, { "schellevis.net", false }, { "schemingmind.com", true }, { "schemmel.net", true }, + { "schenectadycountyny.gov", true }, + { "schenkel.eti.br", true }, { "schenkel.tk", true }, { "schenkes.de", false }, { "scherfke.de", true }, @@ -106791,40 +122429,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schiau.co", true }, { "schiavaonei.tk", true }, { "schiavidiabruzzo.tk", true }, + { "schicksal.com", true }, { "schiedelkonfigurator.hu", true }, { "schielandendekrimpenerwaard.nl", true }, { "schier.info", true }, { "schil.li", true }, { "schildbach.de", true }, - { "schilderennummers.nl", true }, - { "schildermaxe.de", true }, - { "schillers-friedberg.de", true }, { "schiltron.tk", true }, { "schimmel-test.info", true }, { "schimmelnagelspecialist.nl", false }, + { "schindler.com", true }, + { "schinkelplatz.com", true }, { "schipholwatch.nl", true }, + { "schipholwatch.org", true }, { "schippendale.de", true }, { "schippers-it.nl", true }, { "schiriportal.ch", true }, + { "schirmer.io", true }, { "schittscreek.shop", true }, { "schizoid.tk", true }, { "schizoids.net", true }, { "schizomatrix.cf", true }, { "schizomatrix.tk", true }, { "schlachter.ca", true }, - { "schlaf.guru", true }, { "schlafteq.com", true }, { "schlagenhauf.info", false }, + { "schlager.de", true }, { "schlagma.de", false }, + { "schlagzeug-lernen.com", true }, { "schlappmoebel.de", true }, { "schlarb.eu", true }, { "schlechtewitze.com", true }, { "schleifenbaum.org", true }, { "schlitzbergers.com", true }, { "schlopolis.tk", true }, + { "schloss-gottorf.de", true }, + { "schloss-wackerbarth.de", true }, { "schlossanger.de", true }, - { "schlossereieder.at", true }, + { "schlossberg-hotel-wernigerode.de", true }, { "schlossfuchs.de", true }, + { "schlouk-map.com", true }, { "schluderns.org", true }, { "schluesseldienst-hannover24.de", true }, { "schluesseldienst-haymov.de", true }, @@ -106834,15 +122478,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schmatloch.cloud", true }, { "schmelzle.io", true }, { "schmidt-fri.de", true }, - { "schmidthomes.com", true }, - { "schmidtplasticsurgery.com", true }, + { "schmidt-friesoythe.de", true }, { "schmiedbauergut.at", true }, + { "schmiedecorp.com", true }, { "schmiggywibblits.net", true }, { "schmitt-etienne.fr", true }, { "schmitt-max.com", true }, { "schmitt.ws", false }, { "schmitzvertalingen.nl", true }, - { "schnabllending.com", true }, { "schnalstal.info", true }, { "schnapke.name", true }, { "schnapsverein.ddns.net", true }, @@ -106853,26 +122496,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schneider-dresden.de", true }, { "schneider-romania.ro", true }, { "schneider.co.il", true }, - { "schneidr.de", true }, + { "schneidr.de", false }, { "schneids.me", true }, { "schnellno.de", true }, { "schnippering.com", true }, + { "schnism.net", true }, { "schnitzel-und-co.de", true }, { "schnouki.net", true }, { "schnuckenhof-wesseloh.de", true }, { "schnyder-werbung.ch", false }, { "schody-rozycki.pl", true }, { "schoenstatt-fathers.link", true }, + { "schoenstatt-fathers.us", true }, { "schoenstatt.link", true }, { "schoepski.de", true }, { "schoffelcountry.com", true }, { "schoknecht.net", true }, { "schoknecht.one", true }, - { "schoko-ferien.de", true }, { "schokobebe.net", true }, - { "schokoferien.de", true }, { "schokokeks.org", true }, - { "schokoladensouffle.eu", true }, { "scholar.group", false }, { "scholar.pk", true }, { "scholar.site", false }, @@ -106880,6 +122522,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scholarchip.com", true }, { "scholarconnect.com", true }, { "scholareducation.tk", true }, + { "scholargic.com", true }, { "scholarly.com.ph", true }, { "scholarly.ph", true }, { "scholarnet.cn", true }, @@ -106887,9 +122530,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scholarsclub.club", true }, { "scholarships.ga", true }, { "scholarships.link", true }, - { "scholarstyle.com", false }, + { "scholding.ru", true }, { "scholenlijst.tk", true }, { "scholenprogrammagroningen.nl", true }, + { "scholi.org", true }, { "scholieren.com", true }, { "scholingua.com", true }, { "schollbox.de", false }, @@ -106903,8 +122547,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "school-27-lpr.tk", true }, { "school-33.tk", true }, { "school-adventures.tk", true }, + { "school-counselor.org", true }, { "school-id.co.uk", true }, + { "school-korfbal.nl", true }, { "school-project.tk", true }, + { "school-psychologists.com", true }, { "school-register.co.za", true }, { "school.in.th", true }, { "school16-tob.tk", true }, @@ -106917,27 +122564,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schoolbag.ml", true }, { "schoolbag.tk", true }, { "schoolbuddy.ch", true }, - { "schoolbus.at", false }, { "schoolbytes.com.au", true }, { "schoolbytes.education", true }, { "schoolcafe.com", true }, + { "schoolcash.net", true }, { "schoolcashonline.com", true }, { "schoolcrafttownshipmi.gov", true }, { "schooldatasquad.com", true }, - { "schooled.ga", true }, + { "schooldismissalmanager.com", true }, + { "schooleducationharyana.gov.in", true }, { "schoolheads.ph", true }, { "schoolhouse.world", true }, { "schooli.io", true }, - { "schoolninja.net", true }, { "schoolofequineshiatsu.com", true }, { "schoolofphilosophy.org.au", true }, - { "schoolotzyv.ru", true }, { "schoolroom.ga", true }, { "schoolrumble.tk", true }, { "schoolsafety.gov", true }, + { "schoolshow.nl", true }, { "schoolsonice.nl", true }, + { "schooltransport.com.au", true }, { "schooluniform.com.au", true }, - { "schoonheidssalon-annelies-santpoort.nl", true }, + { "schoonheidssalon-annelies-velserbroek.nl", true }, { "schoonheym.com", true }, { "schoonheym.nl", true }, { "schoop.me", true }, @@ -106948,6 +122596,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schorers.org", true }, { "schorle.wine", true }, { "schottenland.de", true }, + { "schottlandtaxi.de", true }, { "schoutenseo.com", true }, { "schrauber.tk", true }, { "schrauger.com", true }, @@ -106956,20 +122605,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schrauger.org", true }, { "schrauger.run", true }, { "schraugerrun.com", true }, + { "schreck-thomas.de", true }, { "schreibers.ca", true }, { "schreilechner.tk", true }, { "schreinerei-jahreis.de", true }, { "schreinerei-schweikl.de", true }, { "schreinerei-schwenk.com", false }, + { "schreinert.com", true }, { "schrijnwerkerij-deconinck.be", true }, { "schrijnwerkerij-deconinck.com", true }, + { "schrijverspunt.nl", true }, { "schritt4fit.de", true }, { "schroderusa.cf", true }, { "schrodingersscat.com", true }, { "schrodingersscat.org", true }, { "schroeder-immobilien-sundern.de", true }, { "schroederdennis.de", true }, - { "schroepfi.de", true }, + { "schroepfi.de", false }, { "schroettle.com", true }, { "schrok.eu", true }, { "schrolm.de", true }, @@ -106985,6 +122637,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schuhbeck.tk", true }, { "schuhbedarf.de", true }, { "schuhfits.com", true }, + { "schuhwelt.de", true }, { "schuhwerkstatt.at", true }, { "schuhzoo.de", true }, { "schulden.tk", true }, @@ -106992,8 +122645,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schule.wtf", false }, { "schuler.st", true }, { "schulferien.org", true }, - { "schulfotograf-deinfoto.ch", true }, { "schulhomepage.de", true }, + { "schulid.de", true }, { "schull.ch", false }, { "schum.world", false }, { "schuman.tk", true }, @@ -107005,26 +122658,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schutterij-sintsebastianus-eys.tk", true }, { "schutterijschinveld.nl", false }, { "schutz-vor-schmutz.de", true }, + { "schutzkoffer-profilampen.at", true }, { "schutznetze24.de", true }, { "schutzwerk.com", true }, { "schuurmanopleidingen.nl", true }, + { "schuylercountyil.gov", true }, + { "schuylerne.gov", true }, { "schuylkillcountypa.gov", true }, { "schwabenhaus-ka.de", true }, + { "schwan-gestaltung.de", true }, { "schwanke.in", false }, { "schwano-dent.at", true }, + { "schwartinsky24.de", true }, { "schwartz.pro", true }, { "schwarz-gelbe-fuechse.de", true }, { "schwarzegar.de", true }, { "schwarzenberg.tk", true }, - { "schwarzenhoelzer.net", true }, { "schwarzes-muenchen.de", true }, { "schwarztrade.cz", true }, + { "schwarzwaelder-schinken-verband.de", true }, { "schwarzwald-flirt.de", true }, { "schwedenkiosk.de", true }, { "schwedischezahnaerztin.com", true }, { "schwedischezahnaerztin.de", true }, { "schweingehabt.expert", true }, - { "schweininchen.de", false }, { "schweiz-sextreffen.ch", true }, { "schweizerbanken.tk", true }, { "schweizers-restaurant.de", true }, @@ -107032,18 +122689,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "schwertkriege.de", true }, { "schwienbacher-karl.it", true }, { "schwifty.cloud", true }, + { "schwiha.de", true }, { "schwimmschule-kleine-fische.de", true }, - { "schwimmschulen.de", true }, { "schwinabart.com", true }, - { "schwingen.net", false }, + { "schwingen.net", true }, { "schwinger.me", true }, { "schwinnbike.ru", true }, - { "schwinnic4.com", true }, { "schworak.com", true }, { "schwuppengrillen.de", false }, { "sci-internet.tk", true }, { "sciagebeton.net", true }, { "sciartel.ru", true }, + { "scias.com", true }, { "scib.tk", true }, { "sciburg.com", true }, { "sciclubappiano.it", true }, @@ -107053,58 +122710,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "science-texts.de", true }, { "science.co.il", true }, { "science.gov", true }, + { "science360.gov", true }, + { "science4fun.info", true }, { "scienceasfashion.ga", true }, { "sciencebase.gov", true }, + { "sciencedaily.com", true }, { "scienceeducation.tk", true }, + { "scienceeurope.org", true }, { "scienceforhealth.eu", true }, { "scienceminnesota.com", true }, { "sciencemonster.co.uk", true }, { "sciencenews.gq", true }, { "scienceofpeople.com", false }, - { "sciencephilanthropyalliance.org", true }, + { "sciencephilanthropyalliance.org", false }, { "sciencequality.tk", true }, - { "scienceroads.com", true }, { "sciences-world.com", true }, { "scienceschool.ml", true }, { "sciencesolutions.eu", true }, { "sciencetechworld.tk", true }, + { "sciencetoymaker.org", true }, { "sciencetram.tk", true }, { "scienceweb.tk", true }, { "sciencex.com", true }, { "sciencexpo.org.za", true }, { "scientia.ga", true }, + { "scientific-editing.info", true }, { "scientific-socialism.cf", true }, { "scientific-socialism.ga", true }, { "scientific-socialism.ml", true }, - { "scientificwomen.net", true }, { "scif.com", true }, { "scifplus.com", true }, { "scifsafe.com", true }, { "scigov.xyz", true }, { "scijinks.gov", true }, { "scindustries.it", true }, + { "scintillating.stream", true }, { "scionasset.com", false }, { "sciooregon.gov", true }, + { "sciotoarts.com", true }, { "sciototownship-oh.gov", true }, { "scip.ch", true }, { "scislowcy.pl", true }, + { "scisoltd.com", true }, + { "scit-nsn.gov", true }, { "scitheory.com", true }, { "scitopia.me", true }, { "scituateri.gov", true }, { "scity88.com", true }, - { "scjtt.fr", true }, + { "scjc-bridge.fr", true }, { "sckc.stream", true }, - { "scks.site", true }, + { "sclasupplychain.com", true }, + { "sclause.net", true }, { "scloud.link", true }, + { "sclsnglssttldwn.com", true }, { "sclub7esp.tk", true }, { "scm-2017.org", true }, - { "scoala-it.ro", true }, + { "scm-team.be", true }, + { "scmhandling.com", true }, + { "scms.com.my", true }, + { "scn9a.com", true }, + { "scnow.com", true }, + { "scoachingtherapy.com", true }, { "scoebg.org", true }, { "scoep.net", true }, { "scohetal.de", true }, { "scola.id", true }, { "scolacdn.com", true }, - { "scolasti.co", true }, + { "scolago.com", true }, + { "scoliosisinstitute.com", true }, { "scom.org.uk", true }, { "scommessalegale.com", true }, { "scommessenonaams.com", true }, @@ -107115,8 +122788,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scoolio.de", true }, { "scoop6.co.uk", true }, { "scoopcake.com", true }, - { "scoopgalleries.com", true }, { "scoopgh.com", true }, + { "scooply.org", true }, { "scootaloo.co.uk", true }, { "scootarama.com", true }, { "scooterinaustralia.tk", true }, @@ -107124,24 +122797,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scooterproducten.com", true }, { "scooterservis.com", true }, { "scootertechnofrance.tk", true }, - { "scootfleet.com", true }, { "scope.studio", true }, { "scopea.fr", false }, + { "scopeglass.com.au", true }, { "scopethree.org", true }, { "scopus.tk", true }, { "scorb.com.br", true }, { "scorchers.tk", true }, + { "scorebet24.com", true }, + { "scorehref.xyz", true }, + { "scores24.live", true }, + { "scoresense.com", true }, { "scoro.com", true }, { "scorobudem.ru", true }, + { "scorpexuke.com", true }, { "scorpia.co.uk", true }, + { "scorpiomarine.co.in", true }, { "scorpioncomputers.nl", true }, { "scorpiongames.tk", true }, { "scorpions-realm.tk", true }, { "scorpions.tk", true }, + { "scorpiotankers.com", true }, { "scotbirchfield.com", true }, { "scothauscounseling.com", true }, - { "scotiabankgillerprize.ca", false }, + { "scotiabank.ca", true }, { "scott-lacy.com", true }, + { "scott-smith.us", true }, { "scott.cm", true }, { "scott.st", true }, { "scott.today", true }, @@ -107149,6 +122830,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scottandtammy.com", true }, { "scottashley.tk", true }, { "scottbot.tk", true }, + { "scottbroad.com.au", true }, { "scottcoil.gov", true }, { "scottcountyva.gov", true }, { "scottdayman.com", true }, @@ -107156,7 +122838,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scotthelme.co.uk", true }, { "scotthelmesucks.com", true }, { "scottipc.com", true }, - { "scottish-fold-cats.com", true }, { "scottish-paranormal.tk", true }, { "scottishcca.co.uk", true }, { "scottishcu.org", true }, @@ -107167,25 +122848,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scottniven.tk", true }, { "scottpilgrim.tk", true }, { "scottrae.me.uk", true }, - { "scotts-restaurant.com", true }, { "scottsbluffcountyne.gov", true }, { "scottsboropdal.gov", true }, + { "scottsdaleaz.gov", true }, + { "scottseditaacting.com", true }, + { "scottsfreightshipping.com", true }, { "scottshorter.com.au", true }, { "scottspainting.com", true }, { "scottsvalley.gov", true }, { "scottsvilleva.gov", true }, + { "scottymiller.au", true }, { "scottyspot.tk", true }, { "scounter.tk", true }, { "scour.cc", true }, + { "scoure.de", true }, { "scourgesofcarpathia.tk", true }, { "scout-korting.tk", true }, + { "scout.org", true }, { "scoutbee.io", true }, { "scoutconcept.com", true }, { "scouteridano.tk", true }, { "scouting-kontiki.nl", true }, { "scoutingeijsdenonline.tk", true }, { "scoutingkontiki.nl", true }, + { "scoutingmeerhoven.nl", true }, { "scoutingridderkerk.nl", true }, + { "scoutingtheworld.co.uk", true }, { "scoutingtungelroy.nl", true }, { "scoutingvilsteren.tk", true }, { "scoutnation.tk", true }, @@ -107193,39 +122881,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scoutreinosa.tk", true }, { "scoutsanbartolome.tk", true }, { "scoutsanpieropatti.tk", true }, - { "scoutsberg.be", false }, { "scoutsdeldesierto.tk", true }, - { "scouttrails.com", true }, { "scoutwired.org", true }, - { "scp-079.org", false }, { "scp-rustenholz-trens.notaires.fr", true }, - { "scp-trens.notaires.fr", true }, { "scp500.com", true }, { "scpe.eu.org", true }, { "scphotography.co.uk", true }, + { "scpidcard.com", true }, { "scpocahontas.nl", true }, + { "scpower.sg", true }, { "scpsecretlab.com", true }, + { "scpsecretlab.pl", true }, { "scpsecretlaboratory.com", true }, { "scpsl.ru", true }, { "scpslgame.com", true }, + { "scqpw.com", true }, { "scra.gov", true }, { "scrabble-solver.com", true }, + { "scrabblecheat.com", true }, { "scrambled.online", true }, - { "scrambox.com", true }, { "scramjet.org", true }, - { "scrammliveescape.co.uk", true }, { "scramsoft.com", true }, + { "scrantonmma.com", true }, { "scrap-car-removal.ca", true }, { "scrap.photos", true }, { "scrap.tf", true }, { "scrapbookdecorations.ga", true }, { "scrapcarbrampton.ca", true }, - { "scrapcarremovalmississauga.ca", true }, { "scrapcars.net.au", true }, - { "scraperhireaustralia.com.au", true }, { "scrapfly.io", true }, { "scrapmartine.tk", true }, - { "scrapmycarperth.com.au", true }, + { "scrapmycarperth.com.au", false }, + { "scrapticket.jp", true }, { "scratch-ppp.jp", true }, { "scratchbot.tk", true }, { "scratchzeeland.nl", true }, @@ -107233,6 +122920,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scrayos.net", true }, { "scrc.gov", true }, { "screamager.tk", true }, + { "screamingrooster.co.nz", true }, { "scredible.com", false }, { "screefox.de", true }, { "screen-fox.de", true }, @@ -107243,16 +122931,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "screenfox.info", true }, { "screenfox.net", true }, { "screeningmaster.jp", true }, + { "screeningxchange.com", true }, { "screenmachine.com", true }, { "screenpublisher.com", true }, + { "screenrant.com", true }, { "screensizemap.com", true }, - { "screenstotaalshop.nl", true }, + { "screentimelabs.com", true }, { "screenwalker.de", true }, { "screenwriter.tk", true }, { "screenzy.io", true }, + { "screvencosheriffga.gov", true }, { "screvencountyga.gov", true }, + { "scribblefun.com", true }, { "scribbler.tk", true }, { "scribd.com", true }, + { "scriber.to", true }, + { "scributors.com", true }, { "scripo-bay.com", true }, { "script-sign.com", true }, { "script.google.com", true }, @@ -107262,6 +122956,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scriptjunkie.us", true }, { "scriptline.ga", true }, { "scriptmaker.tk", true }, + { "scriptnav.com", true }, { "scriptolab.com", true }, { "scriptomania.tk", true }, { "scriptrock.com", true }, @@ -107269,9 +122964,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scripty.org", false }, { "scrod.me", true }, { "scroll-to-top-button.com", true }, - { "scroll.com", true }, - { "scroll.in", true }, { "scroollocker.tk", true }, + { "scrot.de", true }, { "scrubcorpo.net", true }, { "scruffy.ga", true }, { "scruffymen.com", true }, @@ -107283,8 +122977,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scrutinizer.com", true }, { "scryfall.com", true }, { "scsd.si", true }, + { "scservis.cz", true }, + { "scsprotect.com", true }, { "scstg.net", true }, - { "scswam.com", false }, + { "sctfpa.gov", true }, { "sctiger.me", true }, { "sctiger.men", true }, { "sctiger.ml", true }, @@ -107299,10 +122995,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sculpteo.com", true }, { "sculpture.support", true }, { "sculpturesworldwide.tk", true }, - { "sculpturos.com", true }, + { "scunthorpemoneyman.com", true }, { "scuolaguidalame.ch", false }, { "scuolamazzini.livorno.it", true }, - { "scuolatdm.com", true }, + { "scuolaparentalesanpancrazio.it", true }, { "scurtam.tk", true }, { "scuspd.gov", true }, { "scuters.club", true }, @@ -107315,16 +123011,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "scwind.com", true }, { "scylla.live", true }, { "scytart.xyz", true }, + { "scytl.com", true }, { "sd.af", true }, { "sd.ax", true }, + { "sd44.ca", true }, { "sdaniel55.com", true }, + { "sdarcc.gov", true }, + { "sdarot.buzz", true }, + { "sdarot.tw", true }, + { "sdbehavioralhealth.gov", true }, { "sdcapp.in", true }, { "sdcardrecovery.de", true }, + { "sdea.ca", true }, { "sdebitati.it", true }, - { "sdelatmrt.spb.ru", false }, + { "sdesam.ru", true }, { "sdeu.fr", true }, { "sdfamilycare.org", true }, - { "sdg-tracker.org", true }, + { "sdg-tracker.org", false }, { "sdgllc.com", true }, { "sdgrait.tech", true }, { "sdguitdagingen.be", true }, @@ -107332,6 +123035,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sdhb.cz", true }, { "sdhblatnice.cz", true }, { "sdhblatnice.eu", true }, + { "sdhcounselling.co.uk", true }, { "sdho.org", true }, { "sdipolanight.co.uk", true }, { "sdis-trib.fr", true }, @@ -107340,12 +123044,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sdns.fr", true }, { "sdns.io", true }, { "sdocast.com", true }, + { "sdp-grupopit.com", true }, { "sdp.training", true }, { "sdphoto.com.au", true }, { "sdpokieswiry.ga", true }, { "sdpokieswiry.tk", true }, { "sdruzeniprovltavu.cz", true }, - { "sds-marburg.de", false }, { "sdsi.us", true }, { "sdsite.tk", true }, { "sdsmanagement.me", false }, @@ -107353,7 +123057,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sduconnect.nl", false }, { "sduoxminty.cn", true }, { "sdut.gq", true }, - { "sdvigpress.org", false }, { "sdvx.net", false }, { "sdxcentral.com", true }, { "sdyzmun.club", true }, @@ -107361,21 +123064,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "se-center.pl", true }, { "se-live.org", true }, { "se-theories.org", true }, + { "se.au", true }, { "se.com", true }, { "se.gg", true }, { "se.search.yahoo.com", false }, { "se2.com", true }, { "sea-airinternational.tk", true }, { "sea-godzilla.com", true }, - { "sea-man.org", true }, { "sea.zapto.org", true }, { "seabehind.me", false }, { "seabooty.com", true }, + { "seaborn.top", false }, { "seachef.it", true }, { "seadrive.cc", true }, { "seadus.ee", true }, { "seaelba.com", true }, { "seagulls-luebeck.de", true }, + { "seahaweb.org", true }, + { "seaif.org", true }, + { "seajacks.com", true }, { "seal-tite.eu", true }, { "sealandair.fr", true }, { "sealart.pl", true }, @@ -107383,96 +123090,120 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sealbaker.com", true }, { "sealoffantasy.de", true }, { "sealtitebasement.com", true }, + { "sealvault.org", true }, + { "seamac.info", true }, { "seamester.com", true }, { "seamoo.se", true }, { "seamus.party", true }, { "sean-wright.com", true }, + { "sean.scot", true }, { "seanbright.com", true }, { "seanbright.info", true }, { "seanbright.net", true }, { "seanchaidh.org", true }, { "seanchristian.tk", true }, + { "seancody.com", true }, + { "seancodynetwork.com", true }, { "seandawson.info", true }, - { "seangunter.net", true }, { "seanholcroft.co.uk", true }, { "seankilgarriff.com", false }, { "seanmeedevworld.com", true }, + { "seanmichaelspornstar.com", true }, { "seanrodda.com", true }, { "seanstaffiery.com", true }, { "seaoftime.tk", true }, { "seaplayhomes.com", true }, { "seara-staging.net", true }, + { "searacon.nl", true }, { "search", true }, - { "search-engine-optimization.xyz", true }, { "search-net.tk", true }, { "search.gov", true }, { "search.yahoo.com", false }, + { "search4stores.com", true }, { "searchable.ml", true }, + { "searchaudits.com", true }, { "searchbar.co.za", true }, { "searchbyai.com", true }, - { "searchcandy.nl", true }, + { "searchbyimages.com", true }, { "searchcandy.uk", true }, + { "searchcoloradohouses.com", true }, { "searchdatalogy.com", true }, + { "searchdogs.ch", true }, { "searchenginelinks.co.uk", true }, { "searchenginepartner.com", true }, - { "searchenginereports.net", false }, { "searchforbeer.com", true }, + { "searchforjohn.com", true }, { "searchfox.org", true }, { "searchgurus.ca", true }, { "searchmore.dk", true }, { "searchpartners.dk", true }, { "searchperfumes.ga", true }, + { "searchshops.com", true }, { "searchtechnology.tk", true }, { "searchwork.tk", true }, { "searchzone.ch", false }, { "seareelfiji.com", true }, { "searena.ga", true }, { "seareytraining.com", true }, + { "seark.edu", true }, { "searsucker.com", true }, - { "searx.bar", true }, { "searx.be", true }, { "searx.ca", true }, { "searx.nu", true }, { "searx.one", true }, - { "searx.pw", true }, + { "searx.org", true }, + { "searx.rocks", true }, { "searx.ru", true }, { "searx.run", true }, { "searx.space", true }, - { "searx.xyz", true }, + { "searx.work", true }, { "searxng.cf", true }, { "searxng.com", true }, { "seashkey.com", true }, { "seasidestudios.co.uk", true }, { "seasistent.tk", true }, { "season.moe", true }, + { "seasonlevel.com", true }, { "seasons.nu", false }, { "seasonsboutique.com.au", true }, - { "seaspineortho.com", true }, - { "seaspiration.com", true }, + { "seasonsof.berlin", true }, + { "seat61.com", true }, { "seatbeltpledge.com", true }, { "seatinglane2u.com", true }, - { "seatsurfing.de", true }, + { "seatingworldindia.com", true }, + { "seats.aero", true }, { "seattle-life.net", true }, { "seattlebasementwaterproofers.com", true }, + { "seattlecannabis.co", true }, { "seattlecornerstonedental.com", true }, + { "seattledevicerepair.com", false }, { "seattleduiattorneys.com", true }, { "seattlemesh.net", true }, { "seattlewalkinbathtubs.com", true }, - { "seavancouver.com", true }, { "seaview.gq", true }, { "seaviewkohchang.com", true }, + { "seavision-group.com", true }, + { "seavision-group.it", true }, + { "seavision-latam.com", true }, + { "seavision-lixis.com", true }, + { "seavision-usa.com", true }, + { "seavision.es", true }, + { "seavision.eu", true }, + { "seavision.fr", true }, + { "seavision.it", true }, + { "seavision.ru", true }, { "seb-mgl.de", true }, { "seb.surf", true }, { "seb8iaan.com", true }, { "sebald.com", true }, { "sebald.org", true }, - { "sebandroid.com", true }, { "sebar-iklan.gq", true }, { "sebariklanmassal.gq", true }, { "sebarin.tk", true }, { "sebastiaandouma.co.uk", true }, { "sebastiaanwijnimport.nl", true }, { "sebastian-bravo.com", true }, + { "sebastian-elisa-pfeifer.eu", true }, { "sebastian-haeutle.de", true }, { "sebastian-janich.de", true }, { "sebastian-kraus.me", true }, @@ -107498,16 +123229,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seberika.tk", true }, { "seberova.cz", true }, { "sebetesty.cz", true }, + { "sebgar.ca", true }, { "sebi.org", true }, + { "sebio.be", true }, { "sebjacobs.com", true }, { "seblod.com", true }, + { "seblossom.com", true }, { "seboluo.com", true }, { "seboreia.tk", true }, { "sebster.com", true }, { "seby.io", true }, + { "sec-consult.com", true }, { "sec-research.com", true }, { "sec-tunnel.com", true }, { "sec-wiki.com", true }, + { "sec.ec", true }, { "sec.gd", true }, { "sec.gov", true }, { "sec30.com", true }, @@ -107520,14 +123256,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secard.me", true }, { "secard.xyz", true }, { "secaucusnjpolice.gov", true }, + { "secborder.com", true }, { "secctexasgiving.org", false }, { "secdaemons.com", true }, { "secdfir.com", true }, + { "secfilingdata.com", true }, { "secgui.de", true }, { "sech.me", true }, { "secinto.com", true }, { "secitem.de", true }, - { "seclimax.site", true }, { "seclimax7.pw", true }, { "seclink.link", true }, { "seclms.net", true }, @@ -107538,12 +123275,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "second-life-partner-ichien.com", true }, { "secondchancejobsforfelons.com", true }, { "secondlife.tk", true }, + { "secondmeasure.com", true }, { "secondnature.bio", true }, + { "secondnexus.com", true }, { "secondorder.xyz", true }, { "secondtreasuresmv.com", true }, { "seconfig.sytes.net", true }, { "secong.tk", true }, - { "secopsolution.com", false }, { "secoseal.de", true }, { "secpatrol.de", true }, { "secpoc.online", true }, @@ -107556,6 +123294,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secretagentclub.tk", true }, { "secretar.is", true }, { "secretary-schools.com", true }, + { "secretarypics.com", true }, { "secretbase.cf", true }, { "secretbusiness.tk", true }, { "secretdeals.ga", true }, @@ -107566,14 +123305,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secretmolodosti.ga", true }, { "secretmolodosti.ml", true }, { "secretmolodosti.tk", true }, + { "secretmuseum.net", true }, { "secretofanah.com", true }, { "secretosbolivia.tk", true }, - { "secretpanties.com", true }, { "secrets-marketing.tk", true }, { "secretsdujeu.com", true }, - { "secretserveronline.com", true }, { "secretsofuniverse.in", true }, { "secretstomartialarts.tk", true }, + { "secretum.tech", true }, { "secretworld.ml", true }, { "secretzone.bg", true }, { "secrium.io", true }, @@ -107596,7 +123335,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "section508.gov", true }, { "section77.de", true }, { "sector.zone", true }, - { "sector5.xyz", true }, { "sector7.nu", true }, { "sectrans.tk", true }, { "sectun.com", true }, @@ -107607,6 +123345,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secundity.com", true }, { "secundity.nl", true }, { "secunit.org", true }, + { "secunm.org", true }, { "securai.de", true }, { "secure-automotive-cloud.com", true }, { "secure-automotive-cloud.org", true }, @@ -107614,32 +123353,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "secure-consult.com", true }, { "secure-graphic.de", true }, { "secure-gw.de", true }, - { "secure-server-hosting.com", false }, + { "secure-it-is.nl", false }, + { "secure-server-hosting.com", true }, { "secure.advancepayroll.com.au", true }, { "secure.facebook.com", false }, { "secure.wang", true }, { "secureapplicationaccess.ca", true }, { "secureapplicationaccess.com", true }, + { "secureauth.com", true }, { "securebot.ga", true }, { "securebuildingaccess.com", true }, - { "securecloudplatform.nl", true }, - { "securecomms.cz", true }, + { "secured-login.net", true }, + { "secured.vote", true }, { "secureddocumentshredding.com", true }, { "securedrop.org", true }, + { "securedsigning.com", true }, + { "secureenduserconnection.se", true }, { "securefiletransfer.nl", true }, { "securegovernment.us", true }, - { "securehealth.care", true }, { "securehugs.com", true }, { "secureid.services", true }, { "secureideas.com", false }, { "secureim.de", true }, { "secureinfo.pl", true }, { "securelect-inspection.com", true }, - { "securemantra.net", true }, - { "securenets.nl", true }, + { "secureo.at", true }, { "secureobscure.com", true }, { "secureonline.co", true }, - { "secureover.com", true }, + { "secureonline.nl", true }, { "secureprivacy101.org", true }, { "secureqbplugin.com", true }, { "securerepository.net", true }, @@ -107648,6 +123389,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "securesiteaccess.com", true }, { "securesuite.co.uk", true }, { "securesystems.de", true }, + { "securetalks.com.br", true }, { "securetown.top", true }, { "securetrustbank.com", true }, { "secureutilitypayments.com", true }, @@ -107671,25 +123413,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "security.xn--q9jyb4c", true }, { "security201.co.uk", true }, { "security201.com", true }, + { "securityabstract.com", true }, { "securityandsafetythings.com", true }, { "securityaware.me", true }, { "securitybrief.asia", true }, { "securitybrief.co.nz", true }, { "securitybrief.com.au", true }, { "securitybrief.eu", true }, - { "securitydriver.com", false }, + { "securitydriver.com", true }, { "securityescrownews.com", true }, { "securityfest.com", true }, { "securitygladiators.com", true }, + { "securityguard-license.org", true }, { "securityheaders.com", true }, { "securityheaders.io", true }, { "securityheaders.nl", true }, { "securityindicators.com", true }, - { "securityintelligence.com", true }, - { "securitykey.co", true }, { "securitypluspro.com", true }, { "securitypuppy.com", true }, - { "securityrussia.com", true }, + { "securityscore.com.br", true }, { "securitysense.co.uk", true }, { "securitysnobs.com", false }, { "securitysoapbox.com", true }, @@ -107704,48 +123446,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "securix.hk", true }, { "securl.chat", true }, { "securl.link", true }, + { "securly.me", true }, { "securocloud.com", true }, { "securoswiss.ch", true }, { "securot.eu", true }, { "securview.ch", true }, + { "securyblack.com", true }, { "secutorcloud.com", false }, - { "secutrans.com", true }, { "secuvera.de", false }, + { "secuxtech.com", true }, { "secvuln.info", true }, { "secwall.me", true }, { "secwatch.nl", true }, { "secweb.org", true }, { "secwise.nl", false }, { "secyourity.se", true }, + { "seda.wa.edu.au", true }, { "sedico.mx", true }, + { "sedicomm.com", true }, { "sedirector.net", true }, { "sedkisghairi.com", false }, + { "sedl.org", true }, { "sedlex.fr", true }, { "sedmicka.sk", false }, { "sedoexpert.nl", true }, { "sedoexperts.nl", true }, + { "sedonagolfresort.com", true }, { "sedro-woolley.gov", true }, { "see22.de", true }, { "seearmenia.tk", true }, { "seebetterlab.com", true }, + { "seecat.biz", true }, { "seedandleisure.co.uk", true }, { "seedboite.ovh", true }, { "seedbox.fr", true }, { "seedbox.hosting", true }, + { "seedcom.dk", false }, { "seedcoworking.es", true }, { "seedisclaimers.com", true }, { "seedno.de", true }, - { "seedsofangelica.net", true }, + { "seedscientific.com", true }, { "seedspark.com", true }, { "seedsystemcoaching.com", true }, + { "seefeldbilder.at", true }, + { "seefunk.net", true }, { "seehisnudes.com", false }, { "seeinred.tk", true }, { "seejay.me", true }, - { "seekfirstthekingdom.ca", true }, { "seekingalpha.com", true }, { "seeks.ru", true }, { "seeksupply.ga", true }, - { "seekthe.net", true }, { "seekweb.com", true }, { "seeme.ai", true }, { "seemeagain.com", true }, @@ -107754,22 +123504,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seemyreality.tk", true }, { "seeonce.co", true }, { "seerainer.com", true }, - { "seestersmexicancantina.com", false }, { "seesuite.com", false }, { "seetheprogress.com", true }, { "seetheprogress.de", true }, { "seetheprogress.eu", true }, { "seetheprogress.net", true }, { "seetheprogress.org", true }, + { "seetow.sg", true }, { "seetv.ga", true }, { "seewang.me", true }, { "seewhatididhere.com", true }, { "seewines.com", true }, { "seexw.com", true }, { "seezeitlodge-bostalsee.de", true }, + { "sef.co.za", true }, { "sefa.cloud", true }, { "sefodbold.dk", true }, - { "sefor.nc", true }, { "sefru.de", true }, { "seg-leipzig.org", true }, { "seg-sys.com", true }, @@ -107781,38 +123531,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "segdogames.com", true }, { "segdomedia.com", true }, { "segel-setzen-buch.de", true }, - { "segenstore.com", true }, - { "segf.lt", true }, + { "segm.org", true }, { "segmentify.com", true }, - { "segnalabullo.com", true }, + { "segmentnext.com", true }, { "segnalabullo.it", true }, { "segnidisegni.eu", true }, - { "segtronix.com", true }, - { "seguidores.com.br", true }, + { "segnoadv.com", false }, + { "segpay.com", true }, { "segulink.com", true }, - { "segundaleitura.net.br", true }, { "segurancaresidencialbh.com.br", true }, + { "segurancati.com", true }, + { "segurcaixaadeslas.es", true }, { "segurdatacr.com", true }, + { "segurico.cz", true }, { "seguridadconsumidor.gov", true }, { "seguridadsistem.tech", true }, { "seguridadsistemtienda.tech", true }, - { "seguridadyredes.tk", true }, + { "seguromail.com.br", true }, + { "segurosbantrab.com.gt", true }, { "segurosdesaluddominicanos.com", true }, { "segurosmaurobracchieri.com", true }, { "segurosmr.es", true }, { "segurosocial.gov", false }, { "segurosproteccion.com", true }, - { "seguroviagem.srv.br", true }, { "sehat-solusi-makmur.com", true }, { "sehatpoin.com", true }, { "sehatyab.com", true }, { "sehd.top", true }, + { "sehersirin.com", true }, + { "seheyah.me", true }, { "sei-yu.net", true }, - { "seibert.ninja", true }, + { "seibert.ninja", false }, { "seibu-kikaku.co.jp", true }, - { "seicochimica.it", true }, { "seida.at", true }, { "seidel-immobilienberatung.de", true }, + { "seiffen.de", true }, { "seifried.org", true }, { "seika-housei.com", true }, { "seikatu-navi.com", true }, @@ -107822,7 +123575,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seilermicro.com", true }, { "seilgold.de", true }, { "seincojavea.es", false }, + { "seineoparebrise.fr", true }, { "seinfeldquote.com", true }, + { "seinolab.jp", true }, { "seintje24.nl", true }, { "seira.tk", true }, { "seirdy.one", true }, @@ -107833,21 +123588,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seishinchuo-lawoffice.com", true }, { "seishuncollection.com", true }, { "seismas1.com", true }, + { "seisthewaytobe.com", true }, { "seistolzaufdich.de", true }, + { "seistrup.dk", true }, { "seitai-nabejun.jp", true }, { "seitai-taiyou.com", true }, { "seitanic-cookbook.de", true }, { "seitenwaelzer.de", true }, + { "seitokai.jp", true }, + { "seiulocal300.org", true }, + { "seized.gov", true }, + { "seizethedaybrasil.com.br", true }, { "sejageek.com", true }, { "sek.ai", true }, { "sekainokokki.jp", true }, { "sekfung.me", true }, { "sekisonn.com", true }, - { "sekko2.jp", true }, { "sekkom.com", true }, { "sekoia.io", true }, { "sekoya.org", true }, { "sekreti-biznesa.cf", true }, + { "sekretiki.info", true }, { "seks-znakomstva.tk", true }, { "sekshikayeler.tk", true }, { "sektor-news.tk", true }, @@ -107855,40 +123616,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sektor.tech", true }, { "sektor41.com", true }, { "sektorgaza.su", true }, + { "sekundadosetki.pl", true }, { "sekurak.pl", true }, { "sekusi-tochiki.tk", true }, - { "selaparangpost.com", true }, + { "sekweta.com", true }, + { "selang.cf", true }, + { "selang.ml", true }, + { "selangdi.com", true }, { "selayar.vacations", true }, { "selber-coden.de", true }, { "selco-himejiminami.com", true }, + { "selcukluhali.com.tr", true }, + { "selcuksportr.com", true }, { "selcusters.nl", true }, { "selea.design", true }, - { "selea.se", true }, { "selebrita.ml", true }, { "selectables.tk", true }, + { "selectagents.gov", true }, { "selectanderect.com", true }, { "selectbusteni.tk", true }, { "selected-properties.com", false }, { "selectedbym.com", true }, - { "selectel.com", false }, { "selectel.ru", true }, - { "selectra.pt", true }, + { "selectionengine.ca", true }, + { "selectionengine.com", true }, + { "selectionengine.net", true }, + { "selectionengine.org", true }, { "selectsplat.com", true }, { "selegiline.com", true }, { "selekzo.com", true }, { "selena-armavir.ml", true }, { "selenapelletier.tk", true }, { "seleondar.ru", true }, + { "selesnafes.com", false }, { "selezionebarbrboguaccero.cf", true }, { "selezionebarbrboguaccero.ga", true }, { "selezionebarbrboguaccero.tk", true }, { "self-business.tk", true }, { "self-evident.org", true }, - { "self-signed.com", true }, { "selfassess.govt.nz", true }, { "selfbattery.ga", true }, + { "selfbestyou.com", true }, { "selfcaregate.com", false }, { "selfcateringstratford.co.uk", true }, + { "selfdefinition.org", true }, { "selfdefinition.tk", true }, { "selfdevelopment.com.au", true }, { "selfelec.be", true }, @@ -107897,18 +123668,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "selfici.com", true }, { "selfici.cz", true }, { "selfiehome.cz", true }, + { "selfiestick.bg", true }, { "selfishness.com", true }, { "selfloath.in", true }, - { "selfmade4u.de", true }, + { "selfmade4u.de", false }, + { "selfpublishingformula.com", true }, { "selfrealize.ga", true }, { "selfretire.cf", true }, { "selfserverx.com", false }, + { "selfstorageindia.com", true }, { "selftech.tk", true }, { "selfycheck.it", true }, { "selimcerkezi.tk", true }, { "selistina.tk", true }, { "selkiemckatrick.com", true }, - { "sell2orbit.com", true }, { "sellajoch.com", true }, { "sellbit.io", true }, { "sellcar.biz", true }, @@ -107916,14 +123689,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "selldone.com", true }, { "selldorado.com", true }, { "seller.diamonds", true }, + { "sellerengine.com", true }, + { "sellerrunning.com", true }, + { "sellersfunding.com", true }, { "sellersmart1.com", true }, + { "sellerssignals.com", true }, + { "sellerstats.ru", true }, { "sellerteam.tk", true }, + { "sellerwiz.io", true }, { "sellguard.pl", true }, { "sellhouseflat.com", true }, - { "sellingclassiccars.com", true }, - { "sellingsherpa.com", true }, - { "sellittobobal.com", true }, + { "sellingsherpa.com", false }, { "sellmymobile.com", true }, + { "sellmyphone.co.uk", true }, { "sellmyshares.com.au", true }, { "sello.com", true }, { "sellocdn.com", true }, @@ -107931,19 +123709,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sellorbuy.us", true }, { "sellphotos.tk", true }, { "sellsmartwatches.tk", true }, - { "selltobluefirefly.com", true }, - { "selltobpp.com", true }, - { "selltoec.com", true }, { "selltothousandhills.com", true }, { "selltous.com.au", true }, { "sellwithsquare.com", true }, + { "sellyboard.company", true }, { "selma.com", true }, + { "selmatownship-mi.gov", true }, + { "selmec.com.mx", true }, { "selmer-tn.gov", true }, + { "selmon.ru", true }, { "selo-cer.tk", true }, { "selo-grncare.tk", true }, { "selo.ru", true }, { "seloc.org", true }, + { "selokids.ru", true }, { "selsovet56.tk", true }, + { "seltek.su", true }, { "seltendoof.de", true }, { "selvaggialucarelli.blog", true }, { "selwyn.cc", true }, @@ -107952,6 +123733,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "semalt.net", true }, { "semanaacademica.org.br", true }, { "semanarioaqui.tk", true }, + { "semantic-systems.com", true }, { "semantica.cz", false }, { "semantics.ga", true }, { "semao.org", true }, @@ -107966,16 +123748,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "semenov.su", true }, { "semenserang.com", true }, { "sementes.gratis", true }, + { "sementesquati.com.br", true }, + { "semestaindovest.co.id", true }, { "semesur.com", true }, { "semi.social", true }, { "semianalog.com", true }, + { "semicolon.cf", true }, + { "semicon.cc", true }, { "semiconductors.gov", true }, { "semicvetik.tk", true }, - { "semillasdelucha.com", true }, { "seminarioabdtic.com.br", true }, { "seminariruum.ee", true }, { "seminarraum-isny.de", true }, { "seminolecountyoklahoma.gov", true }, + { "seminovostoyota.com.br", true }, { "semiotical.com", false }, { "semiotika.tk", true }, { "semira.tk", true }, @@ -107988,6 +123774,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "semops.gq", true }, { "semox.de", true }, { "semparar.com.br", true }, + { "semperincorde.sk", true }, + { "sempersolaris.com", true }, { "semplicementelight.com", true }, { "sempoctet.ca", true }, { "semps-2fa.de", true }, @@ -108000,14 +123788,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "semyonov.su", true }, { "semyonov.us", true }, { "sen.bo", true }, + { "senacor.com", true }, { "senamexico.com", true }, { "senaofertaeducativa.co", true }, { "senaofertaeducativa.com", true }, { "senarea.nl", true }, { "senarist.tk", true }, { "senarius.de", true }, + { "senat.cz", true }, + { "senat.ro", true }, { "senbil.net", true }, + { "senbil.video", true }, + { "sence.gob.cl", true }, { "send.tk", true }, + { "send2sign.net", true }, { "sendaddress.com", true }, { "sendai-cc.jp", true }, { "sendai-cdc.com", true }, @@ -108015,6 +123809,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sendai-ctr.com", true }, { "sendai-himawari.jp", true }, { "sendai-rc.com", true }, + { "sendai-recruit.com", true }, { "sendai-sisters.com", true }, { "sendai-sougou.com", true }, { "sendai-works.com", true }, @@ -108024,38 +123819,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sendbox.cz", true }, { "sender.party", true }, { "sender.services", true }, + { "senderdb.com", true }, { "senderismoinfantil.tk", true }, + { "sendflowers.pk", true }, { "sendigperu.com", true }, { "sendingbee.com", true }, { "senditvia.email", true }, + { "sendmail.com", true }, { "sendonce.io", true }, { "sendonomics.com", true }, { "sendpulse.com", true }, + { "sendsonar.com", true }, { "sendthisfile.com", true }, { "sendtrix.nl", true }, + { "sendy.land", true }, { "sendzik.eu", true }, - { "senego.com", false }, + { "senecailpd.gov", true }, { "senergiya.tk", true }, - { "senergyconsultants.com", true }, { "senf-kren.at", true }, { "senfcall.de", true }, - { "senffabrik.com", true }, { "senhorst.com", true }, { "senhost.tk", true }, { "seni-beladiri.tk", true }, + { "senibongcove.my", true }, + { "senibonggolfclub.com.my", true }, { "senior-sigan.ml", true }, { "seniorem.eu", true }, - { "seniorhomexchange.com", true }, + { "seniorenbeirat-murnau.de", true }, { "seniorhost.net", true }, { "seniorinhomecare.com", true }, { "seniorlivinginvestments.eu", true }, - { "seniorlivingspain.com", true }, { "seniormanager.cz", true }, - { "seniors.singles", true }, + { "seniorsupportservicesohio.com", true }, { "senkals.one", true }, { "senkyo.watch", true }, - { "senmendai-reform.com", true }, { "senneeeraerts.be", true }, + { "sennheiser.com", true }, { "sennik.tk", true }, { "senoctarsoft.tk", true }, { "senok.ml", true }, @@ -108063,22 +123862,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "senor-cheapo.nl", true }, { "senork.de", true }, { "senpiper.com", true }, + { "senres.top", true }, { "senrj.be", true }, { "sens2lavie.com", true }, + { "sensat.co", true }, + { "sense.finance", true }, { "sense.hamburg", true }, { "sensebridge.net", true }, { "senseful-online.de", true }, { "senseful-online.eu", false }, { "senseful-online.info", true }, { "senseiclassroom.tk", true }, + { "senseilabs.com", true }, { "senselabs.it", true }, { "sensepixel.com", true }, + { "sensepost.com", true }, { "senshot.com", true }, { "senshudo.tv", true }, { "sensibleita.tk", true }, { "sensiblelanecounty.tk", true }, { "sensibus.com", true }, - { "sensizem.tk", true }, + { "sensical.net", true }, { "sensoft-int.com", true }, { "sensoft-int.net", true }, { "sensoft-int.org", true }, @@ -108087,17 +123891,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sensorshop.ir", true }, { "sensorsoft-waterontharder.nl", true }, { "sensorville.com.br", true }, + { "sensoscientific.com", true }, { "sensound.ml", true }, - { "sensualgoth.com", true }, { "sensualism.com", true }, { "sensuality-models.com", true }, { "sensually.tk", true }, + { "sensualsexyhot.com.br", true }, { "sensuuri.tk", true }, { "sentandsecure.com", true }, { "sentencing.net", true }, { "sentenza.tk", true }, { "senteon.co", true }, { "senterada.tk", true }, + { "sentia.com", true }, { "sentic.info", true }, { "sentidosdelatierra.org", true }, { "sentiment.rest", true }, @@ -108106,12 +123912,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sentinelnet.tk", true }, { "sentinelproject.io", true }, { "sentinels.tk", true }, + { "sentir.id", true }, { "sentirmebien.org", true }, { "sentitvia.email", true }, { "sentmail.ga", true }, { "sentor.se", true }, { "sentorsecurity.com", true }, { "sentrafield.com", true }, + { "sentral.com", true }, { "sentry.io", true }, { "sentry.nu", true }, { "sentrybay.com", true }, @@ -108126,24 +123934,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seo-obmen.tk", true }, { "seo-phpbb.cf", true }, { "seo-piar.tk", true }, - { "seo-portal.de", true }, { "seo-portal.tk", true }, { "seo-promox.cf", true }, { "seo-promox.tk", true }, { "seo-reality.cf", true }, { "seo-reklama.ml", true }, { "seo-reklama.tk", true }, + { "seo-sem.online", true }, { "seo-smo.ml", true }, { "seo-smo.tk", true }, + { "seo-srbija.rs", true }, + { "seo-tools4u.com", true }, { "seo-url.tk", true }, { "seo-website.ru", true }, + { "seo.co", true }, + { "seo.consulting", true }, { "seo.domains", true }, { "seo.london", true }, { "seo.services", true }, + { "seo40.fr", true }, + { "seoagentur-hamburg.com", true }, { "seoankara.name.tr", true }, { "seoapi.com", true }, { "seoarchive.org", true }, { "seoargentina.com.ar", true }, + { "seobay.in", true }, { "seobgynpc.com", true }, { "seoblogs.cf", true }, { "seobook2015.cf", true }, @@ -108157,39 +123972,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seodayo.com", true }, { "seodefinitivo.com", true }, { "seodelhi.com", true }, - { "seodigital.nl", true }, { "seodoma.ml", true }, { "seodrug.tk", true }, { "seoefectivo.com", true }, { "seoenmexico.com.mx", true }, { "seoexpert.com.br", true }, - { "seoeye.ru", true }, { "seoforyou.nl", true }, { "seogeek.nl", true }, { "seogeky.com", true }, { "seogood.cf", true }, { "seohackers.fr", true }, + { "seohost.pl", true }, { "seohouston.com", true }, { "seoified.com", true }, { "seojaguar.tk", true }, - { "seokaos.com", false }, { "seokatka.tk", true }, { "seolabuitest.azurewebsites.net", true }, - { "seolib.org", true }, { "seoline.cf", true }, { "seolister.cf", true }, { "seolisting.cf", true }, { "seolisting.tk", true }, + { "seolizer.de", true }, { "seolord.cf", true }, { "seomag.tk", true }, + { "seomanager.vip", true }, { "seomarketing.bg", true }, + { "seomasti.com", true }, { "seomaton.com", true }, { "seomaton.org", true }, { "seomaxion.com", true }, { "seomedo.com", true }, { "seomen.biz", true }, - { "seomik.dk", true }, - { "seomoft.com", true }, { "seomonk.com", true }, { "seonaut.org", true }, { "seonoco.com", true }, @@ -108198,11 +124011,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seoonline.cf", true }, { "seoonlinejaipur.tk", true }, { "seopiar.tk", true }, - { "seoping.ru", true }, + { "seoping.ru", false }, + { "seoplus.com", true }, { "seopost.ga", true }, { "seoprnews.cf", true }, { "seopromotion.tk", true }, { "seoproof.tk", true }, + { "seoptimize.fr", true }, { "seoquero.com", true }, { "seoranker.tk", true }, { "seorus.cf", true }, @@ -108214,19 +124029,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seosearch.org", true }, { "seoserfing.tk", true }, { "seosergio.com", true }, - { "seoshanti.ru", true }, + { "seoshanti.ru", false }, { "seoshnik.tk", true }, { "seosmart.gq", true }, { "seosof.com", true }, { "seosos.gq", true }, { "seosos.ml", true }, - { "seospecialist.ma", false }, + { "seospace.ro", true }, { "seosprint.gq", true }, { "seostrit.cf", true }, { "seostrit.tk", true }, { "seoteam.tk", true }, + { "seotesty.cz", true }, { "seotip.top", true }, { "seotipster.com", true }, + { "seotoolsearth.com", true }, { "seotoolset.tk", true }, { "seoturkey.tk", true }, { "seotutorials32.tk", true }, @@ -108236,14 +124053,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seovisit.tk", true }, { "seovisits.tk", true }, { "seoviziti50.tk", true }, - { "seovoorboekhouders.nl", true }, - { "seowebcreative.com", true }, - { "seowebexpert.co.uk", false }, { "seowerkz.com", true }, { "seowind.io", true }, { "seowordpress.pl", true }, { "seowork.tk", true }, { "seozel.tk", true }, + { "seozen.ru", true }, + { "seozen.top", true }, { "sep-online.com.pl", true }, { "sep.bydgoszcz.pl", true }, { "sep.cc", true }, @@ -108253,39 +124069,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sepakbola.id", true }, { "sepalasaude.com.br", true }, { "separacioniglesiaestado.tk", true }, - { "sepenggal.info", false }, - { "sepetibostan.com", true }, - { "seppelec.com", true }, + { "sepenggal.info", true }, { "seproco.com", false }, { "septakkordeon.de", true }, { "septam-orchestra.fr", true }, - { "septem.cc", true }, + { "septem.cc", false }, + { "septemcapital.ru", true }, { "septentrionalist.org", true }, - { "septfinance.ch", false }, { "septicrepairspecialists.com", true }, { "septics.ga", true }, + { "septictankpumpingservices.com", true }, + { "septischeput.com", true }, { "septodont.at", true }, - { "septodont.be", true }, { "septodont.ch", true }, - { "septodont.co.uk", true }, - { "septodont.com", true }, { "septodont.com.br", true }, { "septodont.com.pl", true }, { "septodont.com.ru", true }, - { "septodont.de", true }, - { "septodont.es", true }, - { "septodont.ie", true }, { "septodont.in", true }, - { "septodont.it", true }, { "septodont.nl", true }, { "septodont.ro", true }, - { "septodontaucanada.ca", true }, { "septodontchina.com", true }, - { "septodontusa.com", true }, { "septonol.tk", true }, { "septs.blog", true }, { "sepulcharium.tk", true }, { "seputarfinansial.com", true }, + { "seqing.cf", true }, { "sequachee.com", true }, { "sequatchiecounty-tn.gov", true }, { "sequatchiecountytn.gov", true }, @@ -108293,37 +124101,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sequencediagram.org", true }, { "sequencing.com", true }, { "sequitur.tech", true }, - { "sequiturs.com", true }, { "ser-it.pl", true }, { "sera.jp", true }, - { "serafin.tech", true }, { "serail.biz.id", true }, { "seraimu.me", true }, + { "seraku.co.jp", true }, { "seraph.tokyo", true }, { "serasa.com.br", true }, + { "serasaexperian.com.br", true }, { "seratblog.ga", true }, { "serban.ro", true }, { "serbanpaun.ro", true }, { "serbiaonline.tk", true }, + { "serc.ac.uk", true }, { "sercasindustry.tk", true }, { "serdarakyildiz.com", true }, - { "serdarcal.com", true }, { "serdarwork.com", true }, { "serdengolpinar.tk", true }, { "serecoponsillo.it", true }, { "sereema.com", true }, { "serele.fr", true }, { "seren.tk", true }, + { "serenaaverypornstar.com", true }, { "serenascreations.com", true }, { "serenata.tk", true }, { "serenavilage.net", true }, { "serenavillage.net", true }, { "serenavillageresidence.com", true }, + { "serenaweb.de", true }, { "serendeputy.com", true }, { "serenity-realms.com", false }, { "serenityeditor.com", true }, { "serenitytvl.com", true }, - { "seresco.com", true }, + { "seresco.es", true }, { "serf.io", true }, { "serfas.gr", true }, { "serfinansa.com.co", true }, @@ -108333,7 +124143,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serge-design.ch", true }, { "sergeemond.ca", true }, { "sergefonville.nl", true }, - { "sergen.tk", true }, + { "sergelapointe.ca", true }, { "sergeyburov.tk", true }, { "sergeyesenin.tk", true }, { "sergeykozharinov.com", true }, @@ -108343,14 +124153,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sergio-rivero.tk", true }, { "sergiochica21.tk", true }, { "sergiocv.com", true }, - { "sergiodemo.com", true }, { "sergioforsanmateo.com", true }, { "sergioforse.com", true }, { "sergiogm.es", true }, { "sergiogug.tk", true }, { "sergiomur.tk", true }, { "sergiopereiracouto.tk", true }, + { "sergiopimpao.pt", true }, { "sergiozygmunt.com", true }, + { "sergiozygmunt.org", true }, { "sergivb01.me", false }, { "sergos.de", false }, { "serguzim.me", true }, @@ -108358,20 +124169,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serial-kinder.tk", true }, { "serial2000.tk", true }, { "serialas.ru", true }, + { "serializacion.mx", true }, { "serialize.gq", true }, + { "serialkey.info", true }, { "seriesdatv.pt", true }, { "seriesfeed.com", false }, { "seriesgratis.tk", true }, + { "serifosguide.dk", true }, { "serije.co", true }, { "serinamusic.com", true }, - { "seriousclimbing.com", true }, { "seriouss.am", true }, { "serioussam.ml", true }, { "serkanceyhan.com", true }, - { "serkanyarbas.com", true }, { "serkanyarbas.com.tr", true }, + { "serkozh.me", true }, { "sermerkt.is", true }, - { "serondaredestrail.com", true }, + { "sernate.com", true }, { "seroquel50mg.tk", true }, { "seroquelonline.ga", true }, { "seroquelonline.tk", true }, @@ -108380,9 +124193,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serpes.nz", true }, { "serphost.ml", true }, { "serpic.photo", true }, - { "serpuhof.ru", false }, - { "serralheriaemcuritiba.com", true }, + { "serpinco.com", true }, + { "serpsolace.com", true }, + { "serptoolsuite.com", true }, + { "serpuhof.ru", true }, { "serralheriaeseguranca.com.br", true }, + { "serrande.it", true }, { "serrande.roma.it", true }, { "serraniadecuencaafondo.tk", true }, { "serrano-chris.ch", false }, @@ -108391,8 +124207,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sertaobom.eco.br", true }, { "sertaovivo.tk", true }, { "sertasimmons.com", true }, + { "sertec.com.mx", true }, { "sertim.tk", true }, - { "seru.eu", true }, { "serv.site", true }, { "serval-concept.com", true }, { "serval-formation.com", true }, @@ -108401,20 +124217,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servatmandi.com", true }, { "serve.gov", true }, { "serve.work", true }, - { "serveatechnologies.com", true }, + { "servebyte.com", true }, { "servecrypt.com", true }, { "servecrypt.net", true }, { "servecrypt.ru", true }, { "serveistic.cat", true }, { "serveistic.com", true }, { "serveistic.es", true }, + { "servelelecciones.cl", true }, + { "servelink.com", true }, + { "servend.gov", true }, { "servepublic.com", true }, { "servepublic.org", true }, { "server-bg.net", true }, { "server-daten.de", true }, { "server-essentials.com", true }, + { "server-zugang.eu", true }, { "server.vote", true }, - { "server21.ro", true }, { "server72a.ddns.net", true }, { "server92.eu", true }, { "server92.tk", true }, @@ -108423,7 +124242,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serverbin.net", true }, { "serverbit.it", true }, { "serverco.com", true }, - { "servercore.cz", true }, { "serverd.de", true }, { "serverdechile.tk", true }, { "serverdensity.io", true }, @@ -108435,29 +124253,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "serverion.ga", true }, { "serverka.tk", true }, { "serverlauget.no", true }, + { "serverlein.com", true }, + { "serverlist101.com", true }, { "serverlog.net", true }, { "servermacher.de", true }, { "servermaster.sk", true }, + { "servernerds.net", true }, { "serverninja.tk", true }, { "serveroffline.net", true }, { "serverpedia.de", true }, { "servers.vg", true }, + { "servers4all.co.uk", false }, { "serverscan.com", true }, { "serversfrom.space", true }, + { "serversify.net", true }, { "serverstatus.tk", true }, { "serverstuff.info", true }, { "serversuit.com", true }, { "servertastic.com", true }, { "servertutorial.eu", true }, - { "serveru.us", true }, { "servetten-groothandel.nl", true }, { "serveur.nl", true }, { "serveursminecraft.org", true }, { "servfefe.com", true }, - { "servgate.jp", true }, { "servi-tek.net", true }, { "service-centre.cf", true }, { "service-soft.de", true }, + { "service-status.cloud", true }, { "service-ways.com", true }, { "service-wueste-vodafone.tk", true }, { "service.gov.scot", true }, @@ -108466,29 +124288,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servicebeaute.fr", true }, { "serviceboss.de", true }, { "servicecentreperth.com.au", true }, + { "servicedesk.ath.cx", true }, { "servicefish.tk", true }, { "serviceflow.co.za", true }, - { "servicegeneralhvac.com", true }, - { "serviceinconstanta.ro", true }, + { "serviceforge.com", true }, { "serviceland.am", true }, - { "servicemaxgreencleaning.com", true }, + { "servicemasterlawncare.ca", true }, { "servicemembers.gov", true }, { "servicenow.com", true }, - { "serviceparts.nl", true }, { "servicepclaptop.com", true }, { "servicesforfree.com", true }, { "serviceslotenmaker.nl", false }, { "servicesneo.com", true }, { "servicesnetpro.com", true }, { "servicespot.ca", true }, - { "servicestechnologiquesam.ca", true }, { "servicevie.com", true }, { "serviciales.com", true }, { "servicii-funerare.tk", true }, { "serviciodebarralibreparaeventos.com", true }, - { "serviciodigitalweb.com", true }, - { "servicios-electricos.com", true }, + { "serviciomigraciones.cl", true }, + { "serviciosdeti.gq", true }, { "serviciosfncs.com", true }, + { "servicioskoinonia.org", true }, + { "serviciotecnicoencomputacion.com.ve", false }, { "servida.ch", true }, { "servietten-grosshandel.at", true }, { "servietten-grosshandel.be", true }, @@ -108498,12 +124320,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servilletas-de-papel.es", true }, { "servilletas-de-papel.mx", true }, { "servilonjas.com", true }, + { "servingbaby.com", false }, { "servingroddick.tk", true }, + { "servingseniors.org", true }, { "servingupsouthern.com", true }, + { "servion.com", true }, { "servis-azd.cz", true }, { "servis4u.top", true }, { "servisin.id", true }, - { "servisna.com", true }, + { "servispasaoglu.com.tr", true }, { "servitel.ga", true }, { "servitor.cf", true }, { "servitproducts.com", true }, @@ -108513,22 +124338,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "servmaslt.com", true }, { "servn.ca", true }, { "servo.org", true }, - { "servondesign.co.uk", true }, { "servonline.de", true }, + { "servpress.net", true }, { "servrox.solutions", true }, + { "servtepstore.com", true }, { "servtraq-staging.azurewebsites.net", true }, { "servtraqazure.com", true }, { "servus.ca", true }, { "servx.org", true }, { "serw.org", true }, { "serwetki-papierowe.pl", true }, + { "serwis-militarny.net", true }, { "serwis-telewizorow.pl", true }, { "serwis-wroclaw.pl", true }, + { "serwispv.eu", true }, { "serwistomy.pl", true }, + { "serworkribeirao.com.br", true }, { "serx.cf", true }, { "serx.ml", true }, { "seryovpn.com", true }, { "ses-egy.com", true }, + { "ses-offshore.com", true }, + { "sesa.org", true }, { "sesam-biotech.com", true }, { "sesamomusical.tk", true }, { "sescoen.tk", true }, @@ -108541,24 +124372,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "session.bbc.com", true }, { "sessionslogning.dk", true }, { "sestry.tk", true }, + { "set-freeporn.com", true }, + { "setabun.or.jp", true }, { "seteampty.net", true }, { "setenforce.one", true }, { "setesat.com.br", true }, { "setevik.tk", true }, - { "sethcaplan.com", true }, + { "sethclinic.com", true }, { "sethcorker.com", true }, { "sethcurry.ga", true }, { "sethforprivacy.com", true }, + { "sethgamblepornstar.com", true }, { "sethjust.com", true }, { "sethlmatarassomd.com", true }, { "sethoedjo.com", true }, { "sethriedel.com", true }, { "sethvargo.com", true }, - { "seti-germany.de", true }, + { "seti-germany.de", false }, { "setin.srl", true }, { "setkit.net", true }, { "setmore.com", true }, { "setof88.com", true }, + { "setonhill.edu", true }, { "setphaserstostun.org", false }, { "settberg.de", true }, { "setterirlandes.com.br", true }, @@ -108570,12 +124405,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "setuid0.kr", true }, { "setun.tk", true }, { "setuplog.io", true }, + { "setupstreamers.com", true }, + { "setxxxtube.com", true }, { "seu.edu.sa", true }, - { "seucreditodigital.com.br", true }, + { "seuntaylor.co", true }, + { "seuplano.com.br", true }, { "seutens.be", true }, { "seutens.eu", true }, { "seva.fashion", true }, - { "sevacy.net", true }, { "sevastopol.tk", true }, { "sevathian.com", true }, { "seven-seas.ml", true }, @@ -108585,22 +124422,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sevenhillsapartments.com.au", true }, { "sevenicealimentos.com.br", true }, { "sevenmatches.com", true }, + { "sevenrooms.com", true }, + { "sevenseasmarble.co.uk", true }, + { "seventeamiles.com", true }, { "seventwentynine.com", true }, + { "seventymania.de", true }, { "severac.org", true }, + { "severesexfilms.com", true }, { "severine-trousselard.com", true }, { "severing.cf", true }, { "severntrentinsuranceportal.com", true }, + { "sevgitesisat.net", false }, { "seviercountyar.gov", true }, + { "seviercountyassessor-ar.gov", true }, { "sevilinux.es", true }, { "sevillacani.tk", true }, { "sevillalinces.tk", true }, { "sevillanazarena.tk", true }, { "sevinci.ch", true }, { "sevitahealth.com", true }, - { "sevivo.fr", true }, { "sevocomm.com", true }, { "sevsey.ru", true }, - { "sevwebdesign.com", true }, { "sewa.nu", true }, { "sewalaptopm2i.com", true }, { "sewardcountyne.gov", true }, @@ -108615,59 +124457,107 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sex-chat-geld-verdienen.com", true }, { "sex-education.com", true }, { "sex-sex-cam.com", true }, + { "sex-videochat.club", true }, { "sex5.com", true }, { "sexaki.com", true }, { "sexandthecitty.tk", true }, + { "sexarab.live", true }, + { "sexastr.club", true }, + { "sexastr.com", true }, + { "sexawynet.cam", true }, + { "sexblag.club", true }, + { "sexcamsbay.com", true }, + { "sexchita.club", true }, { "sexdocka.nu", true }, - { "sexdollpornhd.com", true }, { "sexedquickies.com", true }, { "sexedrescue.com", true }, { "sexflare.net", true }, + { "sexgamesclub.com", true }, { "sexgarage.de", true }, + { "sexgirlfriend.com", true }, { "sexgood.com.ua", true }, { "sexhab.guru", true }, - { "sexi-model.ru", true }, + { "sexivanovo.com", true }, + { "sexkazan.love", true }, + { "sexkras.club", true }, + { "sexkrd.love", true }, + { "sexkursk.club", true }, + { "sexlipetsk.club", true }, { "sexminister.tk", true }, { "sexmobil.de", true }, + { "sexnorilsk.love", true }, + { "sexobryansk.guru", true }, + { "sexocheb.com", true }, + { "sexochita.com", true }, { "sexoclicker.com", true }, { "sexoclicker.net", true }, { "sexoclicker.org", true }, { "sexocomgravidas.com", true }, + { "sexohab.guru", true }, + { "sexohm.club", true }, + { "sexohm.love", true }, + { "sexokiev.love", true }, + { "sexokolomna.com", true }, + { "sexokrasnogorsk.com", true }, + { "sexokrsk.com", true }, + { "sexokursk.com", true }, + { "sexolipetsk.com", true }, { "sexologist.cf", true }, - { "sexonwax.com", true }, + { "sexolviv.com", true }, + { "sexonorilsk.club", true }, + { "sexonr.com", true }, + { "sexonwax.com", false }, + { "sexorzn.red", true }, + { "sexorzn.xyz", true }, + { "sexosintabues30.com", true }, + { "sexosmol.com", true }, + { "sexostav.com", true }, + { "sexotomsk.com", true }, + { "sexoufa.center", true }, + { "sexoyalta.love", true }, { "sexoyrelax.com", true }, { "sexpay.net", true }, { "sexpdf.com", true }, - { "sexruby.com", true }, + { "sexpression.com.br", true }, { "sexshopfacil.com.br", true }, { "sexshopnet.com.br", true }, + { "sexsmolensk.club", true }, + { "sexspb.love", true }, { "sexswing.com", false }, { "sextacy.tk", true }, { "sextapegermany.com", true }, { "sextoysproductstore.com", true }, { "sextreffendeutschland.com", true }, + { "sextubespot.com", true }, + { "sextw.net", true }, { "sexualdiversity.org", true }, + { "sexufa.red", true }, { "sexvideochat.it", true }, { "sexvideos.tel", true }, { "sexvirtualspace.com", true }, + { "sexvl.club", true }, { "sexworkrights.com", true }, { "sexxyangie.com", true }, { "sexy-mom.org", true }, { "sexy-periscope.ml", true }, { "sexy-store.nl", true }, { "sexyanne.net", true }, - { "sexyfish.com", true }, + { "sexyar.vip", true }, + { "sexybabes.pics", true }, + { "sexybubblebutts.com", true }, + { "sexybuttpics.com", true }, { "sexyfotosvandep.nl", true }, { "sexyjanahot.com", true }, { "sexyjenjen.net", true }, { "sexyleni.org", true }, + { "sexynakedgirls.pics", true }, { "sexynaty.org", true }, { "sexynoemi.com", true }, + { "sexyporn.tv", true }, { "sexyrachel846.com", true }, - { "sexys.cam", true }, - { "sexysamira.net", true }, { "sexystine.net", true }, { "sexytagram.com", true }, + { "sexyteens.net", true }, { "sexyvenushuegel.org", true }, { "seyfarth.de", true }, { "seykapuertasautomaticas.com", true }, @@ -108675,12 +124565,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "seypt.de", true }, { "seyr.it", true }, { "seyr.me", true }, - { "seyrederiz.com", true }, { "seyv.io", true }, - { "sezon.ua", true }, { "sf-builders.com", true }, + { "sf-kayh.de", true }, { "sf3223.com", true }, - { "sfa.sk", true }, { "sfaparish.org", true }, { "sfarc.ml", true }, { "sfat.llc", true }, @@ -108691,9 +124579,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sfccapital.com", true }, { "sfccapitalpartners.com", true }, { "sfcityoption.org", true }, + { "sfdchub.com", true }, { "sfdcopens.com", true }, { "sfdev.ovh", true }, { "sfdlsource.tk", true }, + { "sfebolivia.com", true }, { "sfee.cl", true }, { "sfeerhuisbaan.nl", true }, { "sfera360.es", true }, @@ -108707,24 +124597,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sfirat-haomer.com", true }, { "sfleisure.com", true }, { "sflhidta.gov", true }, - { "sflowanalyzer.com", true }, + { "sfmason.net", true }, + { "sfnetwork.pl", true }, { "sfo-fog.ch", false }, + { "sfoks33.ru", true }, + { "sfomuseum.org", true }, + { "sfondo.info", true }, { "sfpebblesstones.com", true }, + { "sfslashing.com", true }, { "sft-framework.org", true }, { "sftool.gov", true }, { "sfumusic.com", true }, { "sfvonline.nl", true }, { "sfweef.gq", true }, - { "sg-elektro.de", true }, + { "sfxmr.de", true }, + { "sg-1xbet.com", true }, { "sg-gallerylive.it", true }, { "sg-strietwald.de", true }, { "sg.search.yahoo.com", false }, { "sg1.tech", true }, { "sgatlantis.tk", true }, - { "sgb.co", true }, { "sgbpa.co.uk", true }, { "sgcaccounts.co.uk", true }, + { "sgcountymt.gov", true }, { "sgdementia.ca", true }, + { "sgdi.gov.sg", true }, { "sgdm-services.com", true }, { "sgfinanceira.online", true }, { "sggame990.com", true }, @@ -108733,6 +124630,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sgj0.net", true }, { "sglazov.ru", true }, { "sglibellen.de", true }, + { "sgnation.dk", true }, { "sgo-overbetuwe.nl", true }, { "sgombero.it", true }, { "sgoossens.nl", true }, @@ -108745,6 +124643,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sgs-systems.de", true }, { "sgs.camera", true }, { "sgs.systems", true }, + { "sgsautoparts.com.au", false }, { "sgsmart.ru", true }, { "sgsosu.net", true }, { "sgsp.nl", true }, @@ -108752,6 +124651,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sgtech.ga", true }, { "sgthotshot.com", true }, { "sgtool.eu", true }, + { "sgtrains.com", true }, { "sgtsnookums.net", true }, { "sgtt.ch", false }, { "sguerrero.com", true }, @@ -108759,9 +124659,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sh-heppelmann.de", true }, { "sh-network.de", true }, { "sh.com.tr", true }, - { "sh.org.sa", true }, { "sh0rt.in", true }, { "sh0rt.zone", true }, + { "sh0u.jp", true }, { "sh0uld.net", true }, { "sh1mar.in", true }, { "sh4y.cn", true }, @@ -108770,6 +124670,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sha.bi", true }, { "sha512.online", true }, { "shaadithailand.com", true }, + { "shabaka.org", true }, { "shabashka.ml", true }, { "shabiwangyou.com", true }, { "shackleton.io", true }, @@ -108789,6 +124690,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shadigee.org", true }, { "shadikhan.tk", true }, { "shadow-forum.tk", true }, + { "shadow-group.org", true }, { "shadowandy.net", true }, { "shadowcp.eu", true }, { "shadowdomain.ml", true }, @@ -108799,38 +124701,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shadowkitsune.net", true }, { "shadowknight.tk", true }, { "shadowlurker.com.au", true }, + { "shadowmas.ddns.net", true }, { "shadowmorph.info", true }, - { "shadownet.tk", true }, { "shadowping.com", true }, - { "shadowplus.net", true }, + { "shadowplus.net", false }, { "shadowrocket.net", true }, { "shadowsing.com", true }, + { "shadowsocks.au", true }, + { "shadowsocks.click", true }, { "shadowsocks.com", true }, { "shadowsocks.com.au", true }, { "shadowsocks.com.hk", true }, { "shadowsocks.fr", false }, { "shadowsocks.la", true }, { "shadowsocks.live", true }, + { "shadowsocks.nz", true }, { "shadowsocks.se", true }, { "shadowsocks.software", true }, { "shadowsocks.to", true }, - { "shadowsproject.ru", true }, { "shadowstalkers.tk", true }, { "shadowstep.tk", true }, { "shadowstrikers.tk", true }, { "shadowuniverse.xyz", true }, { "shadowvolt.net", true }, + { "shadrinsk-city.ru", true }, { "shadwe.com", true }, { "shadynook.net", true }, { "shadypark.tk", true }, - { "shaftofdarkness.club", true }, + { "shaeishu.co", true }, + { "shafa.ua", true }, + { "shaffermixers.com", true }, + { "shafteldhon.com", true }, + { "shaftofdarkness.club", false }, { "shag-shag.ru", true }, { "shahar.cc", false }, { "shaharyaranjum.com", true }, { "shaheedirfani.tk", true }, { "shaheednawazirfani.tk", true }, { "shahidafkar.tk", true }, - { "shahidfakih.com", false }, + { "shahidfakih.com", true }, { "shahidflix.ml", true }, { "shahidhashmi.net", true }, { "shahpurjat.xyz", true }, @@ -108840,6 +124749,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shahrsazan.tk", true }, { "shahrvand.ga", true }, { "shahsaadkhan.tk", true }, + { "shahyadmusic.com", true }, { "shahzaibm.com", true }, { "shaicoleman.com", true }, { "shaiden-porn.com", true }, @@ -108878,21 +124788,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shamami.ml", true }, { "shamans.ga", true }, { "shambala.cf", true }, - { "shambhu.info", true }, { "shamed.tk", true }, + { "shamesofhungary.com", true }, + { "shamil.tech", true }, { "shamimahmed.tk", true }, { "shamimmedia.ir", true }, { "shamiphotos.tk", true }, - { "shampoo63.ru", true }, + { "shampoo63.ru", false }, { "shan.io", false }, + { "shan.sg", true }, { "shan.si", true }, - { "shanefagan.com", false }, { "shaneparker.tk", true }, { "shanerichards.tk", true }, { "shanetully.com", true }, { "shanevandermeer.com", true }, { "shanewadleigh.com", true }, - { "shanghaimineral.com", true }, + { "shanghaimineral.com", false }, { "shangobud.com", true }, { "shanhay.tk", true }, { "shaniainternational.tk", true }, @@ -108901,8 +124812,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shanju.tk", true }, { "shankangke.com", true }, { "shanli.tk", true }, - { "shannapeeples.com", true }, { "shanoviyam.in", true }, + { "shanprop.co.za", true }, { "shansen-online.de", true }, { "shansing.cn", true }, { "shansing.com", true }, @@ -108911,21 +124822,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shantelle.tk", true }, { "shanteo.com", true }, { "shantitsafar.com", true }, - { "shanus.in", false }, + { "shanwong.com", true }, + { "shanwong.design", true }, { "shanxia.com", true }, { "shanxiapark.com", true }, + { "shanyi.space", true }, + { "shaofu.cf", true }, { "shaolin-kungfu.tk", true }, { "shaoxia.xyz", false }, { "shape.pink", true }, { "shapediver.com", true }, + { "shapelyways.com", true }, + { "shapers-production.fr", true }, { "shapesouthcarolina.gov", true }, + { "sharaf.net", true }, { "sharanyamunsi.net", true }, { "sharanyan.com", true }, { "shararam-card.tk", true }, + { "sharats.me", true }, { "share.la", true }, { "share2act-dev.io", true }, { "share2act-test.io", true }, - { "share4brain.org", true }, { "shareabc.vip", true }, { "shareapollo.com", true }, { "shareasale-analytics.com", true }, @@ -108933,26 +124850,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shareby.cam", true }, { "sharedgoals.co", true }, { "sharedhost.de", true }, + { "sharedrive.art", true }, + { "sharedrive.lol", true }, { "shareeri.com", true }, - { "shareeri.xyz", true }, { "sharefox.eu", false }, { "sharegate.tk", true }, { "sharehabor.org", true }, + { "sharehousechintai.jp", true }, + { "shareideanews.com", true }, { "sharekey.com", false }, { "sharelinks.tk", true }, { "sharelovenotsecrets.com", true }, { "sharemania.tk", true }, { "sharemessage.net", true }, { "sharenotes.tk", true }, + { "sharenz.com", true }, { "shareoffice.ch", true }, { "sharepointcass.com", true }, { "sharepointdrive.com", true }, { "sharerotic.com", true }, + { "sharery.net", true }, { "sharescope.co.uk", true }, { "shareselecttools.com", true }, { "sharethe.link", true }, + { "sharethemeal.org", true }, { "sharetheroad.org", true }, - { "sharevari.com", true }, { "shareworks.com", true }, { "shareworx.net", true }, { "sharezen.de", false }, @@ -108968,6 +124890,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sharingcolombia.com", true }, { "sharingiscaring.cc", true }, { "sharingphotos.co", false }, + { "sharisharpe.com", true }, { "sharix.ml", true }, { "shark-host.tk", true }, { "shark5060.net", true }, @@ -108979,9 +124902,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sharko.tk", true }, { "sharkpaint.tk", true }, { "sharks.football", true }, + { "sharkstriker.com", true }, { "sharmafamily.tk", true }, - { "sharmalaw.com", true }, - { "sharondavale.org", true }, + { "sharona.cloud", true }, { "sharonnh.gov", true }, { "sharonsplace.biz", true }, { "sharpe-practice.co.uk", true }, @@ -109000,12 +124923,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shastacounty.gov", true }, { "shatabdichildrenschool.tk", true }, { "shatalov.com", true }, + { "shatteredarchive.com", true }, { "shaukatkhanum.org.pk", true }, { "shaumine.ml", true }, { "shaunallen.co.uk", true }, { "shaunandamyswedding.com", true }, { "shaunc.com", true }, { "shaundanielz.com", true }, + { "shaunthomasart.com", true }, + { "shavedpics.com", true }, + { "shavedpussy.tv", true }, + { "shavedpussypics.com", true }, { "shavingks.com", true }, { "shavit.space", true }, { "shavitech.com", true }, @@ -109016,18 +124944,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shawclan.id.au", true }, { "shawfamily.id.au", true }, { "shawiah.tk", true }, - { "shawnaleighdesigns.com", true }, + { "shawlumber.ca", true }, { "shawnalucey.com", true }, { "shawnee-nsn.gov", true }, { "shawngvs.com", true }, { "shawnhogan.com", true }, + { "shawnleetttt.cyou", false }, { "shawnow.com", true }, - { "shawnstarrcustomhomes.com", false }, { "shawnz.ca", true }, { "shawnz.org", true }, { "shawty.tk", true }, { "shaytan.tk", true }, - { "shazamkitpro.com.br", true }, { "shazbots.org", true }, { "shazzlemd.com", true }, { "shazzlepro.com", true }, @@ -109036,14 +124963,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shcsystems.bg", true }, { "shd.one", true }, { "shdw.cc", true }, + { "she.kiwi", true }, { "she.run", false }, { "she.tw", true }, { "sheaf.site", true }, + { "sheaorganics7.com", true }, { "shear.tk", true }, - { "shearcomfort.com", true }, - { "shearin.pro", false }, + { "shearin.pro", true }, { "shearwaterdental.com", true }, { "sheaspire.com", true }, + { "sheaspire.com.tw", true }, { "sheboygancountywi.gov", true }, { "sheboyganfallswi.gov", true }, { "shechipin.cf", true }, @@ -109051,9 +124980,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shechipin.gq", true }, { "shechipin.ml", true }, { "shed49.com", true }, - { "shedrickflowers.com", true }, + { "shedrentalspot.com", true }, { "shedrin.tk", true }, + { "sheds.online", true }, { "shee.org", true }, + { "sheehans.com.au", true }, { "sheehyinfinitioftysonsparts.com", true }, { "sheekdeveloper.com", true }, { "sheekmedia.com", true }, @@ -109062,26 +124993,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sheepproductions.com", true }, { "sheeprock.tk", true }, { "sheepsound.tk", true }, + { "sheepymeh.net", true }, { "sheerchain.com", true }, + { "sheeru.cafe", true }, { "sheet.host", true }, { "sheetengine.net", true }, + { "sheetsindonesia.com", true }, { "sheetstutorial.com", true }, { "shef.com", true }, + { "shefburgers.com", true }, { "sheffield-wednesday-fc.tk", true }, { "sheffieldjob.net", true }, + { "sheffieldmoneyman.com", true }, { "shefftunes.tk", true }, { "shehaal.com", true }, - { "shehansanjula.me", true }, + { "shehan.live", true }, { "shehata.com", true }, { "sheika.ro", true }, - { "sheikah.online", true }, { "sheilasdrivingschool.com", true }, - { "shejumm.com", true }, { "shek.zone", true }, { "shelbycounty-il.gov", true }, { "sheldon.sk", true }, { "sheldoniowa.gov", true }, { "shelehov.tk", true }, + { "shelf-ssp.com", true }, { "shelf.io", true }, { "shelfieretail.com", true }, { "shelfordsandstaplefordscouts.org.uk", true }, @@ -109089,7 +125024,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shellcon.io", true }, { "shellcore.fr", true }, { "shellday.cc", true }, - { "shelleystoybox.com", true }, { "shellfire.de", true }, { "shellgame.io", true }, { "shelljuggler.com", false }, @@ -109100,7 +125034,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shellshock.eu", true }, { "shellta.com", true }, { "shellta.net", true }, - { "shellvatore.us", true }, { "shellwhite.ga", true }, { "shellwhite.tk", true }, { "shelma.tk", true }, @@ -109111,62 +125044,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sheltongrp.com", true }, { "sheltonvirtual.com", true }, { "shelvacu.com", true }, + { "shemaleflick.com", true }, + { "shemalehub.com", true }, + { "shemalepictures.net", true }, + { "shemaleplus.com", true }, + { "shemalestrokers.com", true }, { "shemalexxxfreetube.com", true }, { "shemogo.com", true }, { "shemsconseils.ma", true }, - { "shemsharples.co.uk", true }, + { "shemy.eu", true }, { "shena.co.uk", true }, + { "shenandoahrealestate.org", true }, { "shenannigans.tk", true }, + { "shenbibi.com", true }, { "shenderman.ml", true }, { "shenghaiautoparts.com", true }, + { "shenghaiautoparts.net", true }, { "shenghuang.tk", true }, { "shengrenyu.com", true }, + { "shengyipin.com.my", true }, { "shenmiya.com", true }, - { "shenpei.net", true }, { "shenshi.com", true }, { "shentengtu.idv.tw", true }, { "sheo-tech.fr", true }, { "shepherdsfriendly.co.uk", true }, - { "sheplus.net", true }, + { "shepherdsvilleky.gov", true }, { "sheptytsky.ga", true }, { "sheratsuki.tk", true }, { "sherbers.de", true }, { "sheremetka.com", true }, { "sheridancountyks.gov", true }, + { "sheridancountymt.gov", true }, { "sheridancountywy.gov", true }, { "sheriffmiamicountyks.gov", true }, { "sheriffpawneecountyne.gov", true }, + { "sheriffpendletoncountyky.gov", true }, { "sheriffwashingtoncountymaine.gov", true }, - { "sherijames.com", true }, { "sherissims.tk", true }, { "shermancountyks.gov", true }, { "shermancountyne.gov", true }, + { "shermanms.gov", true }, { "shermanshebcowi.gov", true }, + { "shermantwphuronmi.gov", true }, { "sherpa.blog", true }, { "sherpnortheast.com", true }, { "sherrikelley.com", true }, - { "sherston.com", true }, { "sherut.net", true }, + { "sherwen.uk", true }, + { "sherwen.us", true }, { "shethbox.com", true }, { "shetshivar.com", true }, { "shevans.com", true }, - { "shevenmed.com", true }, { "shevet-achim.tk", true }, { "sheweek.ml", true }, + { "shewillcheat.com", true }, { "shft.cl", true }, - { "shg-pornographieabhaengigkeit.de", false }, - { "shgroup.xyz", true }, + { "shgf.de", true }, { "shgt.jp", true }, { "shgw186.com", true }, { "shh-listen.com", true }, { "shh.sh", true }, + { "shhmale.com", true }, { "shi.ma", true }, { "shiawasedo.co.jp", true }, { "shibainu.com.br", true }, + { "shibashake.com", true }, { "shibbydex.com", true }, { "shibeflix.com", true }, { "shibleysmiles.com", true }, - { "shibumi.com", true }, { "shichibukai.net", true }, { "shichidadoma.ru", true }, { "shico.org", true }, @@ -109176,12 +125121,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shieldnet.tk", true }, { "shieldnsheath.com", true }, { "shieldofachilles.in", true }, + { "shieldsair.com", true }, { "shiellc.com", true }, { "shif.tk", false }, - { "shifaat.com", true }, { "shift-record.com", true }, { "shift-to.co.jp", true }, - { "shift.email", true }, { "shiftade.band", true }, { "shiftadeband.com", true }, { "shiftcrypto.ch", true }, @@ -109189,7 +125133,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shiftcrypto.support", true }, { "shiftdelete.net", true }, { "shiftdevices.com", true }, + { "shiftfrequency.com", true }, { "shiftj.is", true }, + { "shiftkey.com", true }, { "shiftleft.io", true }, { "shiftleft.org", true }, { "shifton.com", true }, @@ -109214,31 +125160,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shileo.de", true }, { "shilled.tk", true }, { "shilpaonline.tk", true }, + { "shilvister.net", true }, { "shimi.blog", true }, { "shimi.guru", true }, { "shimi.net", true }, + { "shimi.photography", true }, { "shimitower.pw", true }, + { "shimmo.de", true }, { "shimmy1996.com", true }, { "shimo.im", true }, - { "shimonfly.com", true }, { "shin-yo.de", true }, + { "shindigweb.com", true }, { "shindocuba.tk", true }, + { "shineads.in", true }, { "shineindiarktutorial.ml", true }, { "shineleds.ga", true }, { "shinenet.cn", true }, { "shines.ml", true }, { "shinetruckleads.com", true }, - { "shinetsuamerica.com", true }, - { "shinetsusilicones.com", true }, { "shinghoi.com", true }, { "shinglereplacementlv.com", true }, { "shinice.net", true }, { "shining.gifts", true }, + { "shiningservices.ie", true }, { "shinkamigoto.tv", true }, { "shinko-osaka.jp", true }, { "shinnecock-nsn.gov", true }, { "shinnyosangha.org", false }, { "shinobi-fansub.ro", true }, + { "shinochip.ru", true }, { "shinodadc-nakano.com", true }, { "shinonome-lab.eu.org", true }, { "shinsandenki.com", true }, @@ -109246,22 +125196,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shinta.ro", true }, { "shintoism.com", true }, { "shinuytodaati.co.il", true }, - { "shinyhappydoggy.com", true }, + { "shinycleankitchen.com", true }, { "shinyoko-saisyuusyou.com", true }, - { "shinypebble.uk", true }, { "shinyteethand.me", true }, { "shiomiya.com", true }, + { "ship-safely.com", true }, { "shipaik.com", true }, { "shipard.com", true }, { "shipard.cz", true }, { "shipard.org", true }, { "shipbuddies.com", true }, { "shipcloud.io", false }, + { "shipengliang.com", true }, { "shipeurousa.com", true }, + { "shipgoldchandler.com", true }, { "shipheart.tech", true }, { "shipitsmarter.com", true }, + { "shipkirana.com", true }, { "shiplapandshells.com", true }, { "shipmile.com", true }, + { "shipmondo.com", true }, { "shipmonk.cloud", true }, { "shipmonk.com", true }, { "shipnak.com", true }, @@ -109269,7 +125223,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shippexx.com", true }, { "shipping-trade.ga", true }, { "shippinglabel.de", true }, + { "shippingyourworld.ca", true }, + { "shippingyourworld.com", true }, + { "shipshewana.gov", true }, { "shiptek.co", true }, + { "shiptest.net", true }, + { "shiptor.ru", true }, { "shiptron.com", true }, { "shipzero-frontend-staging.azurewebsites.net", true }, { "shiqi.ca", true }, @@ -109281,40 +125240,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shiqi1.com", true }, { "shiqishidai.cc", true }, { "shiqisifu.cc", true }, - { "shiraikuroko.com", true }, { "shiranaitenshi.tk", true }, { "shirao.jp", true }, - { "shiraz-coffee.com", true }, { "shirazi.tk", true }, { "shiresvets.com", true }, { "shirevirtual.tk", true }, { "shireyishunjian.com", true }, - { "shireyishunjian.group", true }, { "shiriforum.tk", true }, { "shirley.li", true }, - { "shirleydentalpractice.co.uk", true }, { "shirlygilad.com", true }, - { "shiroanime.es", true }, + { "shiro.com.pk", true }, { "shiroki-k.net", true }, { "shiropaev.tk", true }, { "shirosaki-hana.fun", true }, { "shirro.com", true }, { "shirshik.xyz", true }, - { "shirtsdelivered.com", true }, { "shiryo.ch", true }, { "shishadenbosch.nl", true }, { "shishamania.de", true }, + { "shishkin.im", true }, { "shishlik.net", true }, { "shit.com", true }, + { "shit.one", true }, { "shit.software", true }, { "shit.works", true }, - { "shitagi-shop.com", true }, + { "shitara-tateo.jp", true }, { "shitbeast.institute", false }, { "shitcountries.org", true }, { "shitdick.tk", true }, { "shitfest.net", true }, + { "shitleft.io", true }, { "shitmybradsays.com", true }, { "shitnikovo.tk", true }, + { "shitposter.club", true }, { "shitposter.io", true }, { "shitposts.se", true }, { "shitproductions.org", true }, @@ -109326,17 +125284,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shivammathur.com", true }, { "shivenjoshi.com", true }, { "shivering-isles.com", true }, - { "shivkrupanandfoundation.org", true }, { "shiwa-shop.ml", true }, - { "shixuen.com", true }, { "shiyouqkl.com", true }, { "shiyutech.com", true }, - { "shizati.de", true }, - { "shj.technology", true }, { "shk.im", false }, { "shk8.tk", true }, { "shkafi-krasnodar.tk", true }, - { "shkilna-kraina.com.ua", true }, + { "shkola-95.ru", true }, { "shkola1.ml", true }, { "shkolamishlenia.tk", true }, { "shkolladigjitale.com", true }, @@ -109360,44 +125314,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shmilyhua.com", true }, { "shmotki.ml", true }, { "shmroom.tk", true }, + { "shmtranslations.com", true }, { "shmulvad.com", true }, + { "shnuff.co.uk", true }, { "sho-furtwangen.de", true }, + { "shoalcreekoutfitters.com", true }, { "shoarq.com", true }, + { "shobhanayogsadan.com", false }, { "shochikubai.tk", true }, - { "shock.ee", true }, + { "shochufes.jp", true }, + { "shock.ee", false }, { "shockerdragon.tk", true }, + { "shocklogic.com", true }, { "shockproof.systems", true }, { "shodan.io", true }, { "shoe.club", true }, { "shoejitsu.co", true }, { "shoekeys.lt", true }, { "shoelevel.com", true }, + { "shoeline.com", true }, { "shoemakerywc.com", true }, { "shoeracks.uk", true }, - { "shoes4gentlemen.de", true }, + { "shoesandmorebdn.com", true }, { "shoesoutlet.tk", true }, { "shoestorebiz.tk", true }, { "shoestorenet.tk", true }, { "shoestringeventing.co.uk", true }, { "shoetravel.com", true }, - { "shojishika.com", true }, { "shokaran.tk", true }, { "shokofarehab.ir", true }, - { "shokureach.jp", true }, + { "shokola.com", false }, { "sholtowu.com", true }, { "shongshoy.com", true }, { "shontakleinpeter.tk", true }, { "shooba.net", true }, { "shoobacreations.com", true }, - { "shoogar.herokuapp.com", true }, + { "shoosmiths.com", true }, + { "shoot-yalla.tv", true }, { "shooter.dog", true }, { "shootpooloklahoma.com", true }, { "shootsame.tk", true }, { "shop-cosmetic.tk", true }, { "shop-cosmetics.tk", true }, + { "shop-de-johnniewalker.com", true }, + { "shop-eldorado.tk", true }, { "shop-hellsheadbangers.com", true }, { "shop-lingerie.tk", true }, - { "shop-links.co", true }, { "shop-ok.tk", true }, { "shop-s.net", true }, { "shop-slivki.tk", true }, @@ -109420,6 +125382,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shopapi.cz", true }, { "shoparbonne.co.uk", true }, { "shopatkei.com", true }, + { "shopazmoon.ir", true }, + { "shopbabymonitors.gq", true }, { "shopbackyardpro.com", true }, { "shopbakersnook.com", true }, { "shopbysarah.com", true }, @@ -109431,16 +125395,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shopcoupons.ph", true }, { "shopcoupons.sg", true }, { "shopcrocs.in", false }, - { "shopee6.com", true }, + { "shopdiy.com", true }, + { "shopee6.com", false }, { "shopessenciais.com.br", true }, { "shopexo.in", true }, { "shopfazz.com", true }, { "shopfinale.com", true }, + { "shopforcovers.com", true }, { "shopforeverproducts.com", true }, + { "shopfully.com.au", true }, { "shophisway.com", true }, + { "shophumm.com", true }, + { "shophumm.com.au", true }, { "shopific.co", true }, { "shopific.com", true }, { "shopify.com", true }, + { "shopify2006.com", true }, { "shopifycloud.com", true }, { "shopikal.com", true }, { "shopingbiz.tk", true }, @@ -109451,15 +125421,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoplogcap.com", true }, { "shoplus.com.tw", true }, { "shoplyft.co.za", true }, - { "shopminut.com", true }, + { "shopmalinka.cf", true }, + { "shopmlr.com", true }, { "shopnguyenlieumypham.com", true }, - { "shopocratic.com", true }, { "shopofturkey.com", true }, { "shoponlinedeals.tk", true }, + { "shoporangetheory.com", true }, { "shoposal.com", true }, + { "shoppbs.org", true }, { "shoppe561.com", true }, { "shopperexperts.com", true }, { "shopperexpertss.com", true }, + { "shoppersdepuertorico.com", true }, + { "shoppersvineyard.com", true }, { "shoppies.tk", true }, { "shopping-cart-migration.com", true }, { "shopping-il.org.il", true }, @@ -109486,7 +125460,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoppingcharte.ga", true }, { "shoppingcheaper.ga", true }, { "shoppingcheapest.ga", true }, - { "shoppingchina.com.py", true }, { "shoppingcircus.ga", true }, { "shoppingclearance.ga", true }, { "shoppingcollections.ga", true }, @@ -109533,6 +125506,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoppingiron.ga", true }, { "shoppingisrael.org.il", true }, { "shoppingjackpot.ga", true }, + { "shoppingjin.pk", true }, { "shoppingjoker.ga", true }, { "shoppingkayak.ga", true }, { "shoppinglast.ga", true }, @@ -109606,6 +125580,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoppingsunflower.ga", true }, { "shoppingsuperhero.ga", true }, { "shoppingsustain.ga", true }, + { "shoppingthoughts.com", true }, { "shoppingthunder.ga", true }, { "shoppingtopsecret.ga", true }, { "shoppingtreasure.ga", true }, @@ -109614,13 +125589,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoppingunique.ga", true }, { "shoppingurban.ga", true }, { "shoppingvariety.ga", true }, - { "shoppingvrimini.ru", true }, { "shoppingwaterfront.ga", true }, { "shoppingwinner.ga", true }, { "shoppingworth.ga", true }, { "shoppingyankee.ga", true }, - { "shopshap.ru", true }, + { "shoppre.com", true }, + { "shoppsb.com", true }, + { "shoppyad.com", true }, + { "shoprentone.com", true }, { "shopsici.com", true }, + { "shopsmarter.com", true }, { "shopstasy.com", true }, { "shoptec.sk", true }, { "shopteq.hu", true }, @@ -109630,32 +125608,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shopunderwear.tk", true }, { "shopunilever.com", true }, { "shopupnorth.com", true }, + { "shopvcs.com", true }, { "shopwebhue.com", true }, { "shore.co.il", true }, { "shorebreaksecurity.com", true }, { "shorehamfort.co.uk", true }, { "shorehillgolf.com", true }, + { "shorenstein.com", true }, { "shoresofshawneebend.com", true }, + { "shorewoodil.gov", true }, { "shorewoodmn.gov", true }, { "shorewoodwi.gov", true }, + { "shoreyit.com", true }, { "shorifhussain.tk", true }, { "shorinkarate.tk", true }, { "shork.space", true }, { "shornehasim.co.il", true }, + { "short-games.gq", true }, + { "short-jambo.com", true }, { "short-term-plans.com", true }, { "short.io", true }, { "shortaudition.com", true }, { "shortaudition.net", true }, { "shortaudition.tv", true }, { "shortbread.systems", true }, - { "shortcdn.com", true }, + { "shortbreakstudios.com", true }, + { "shortcircuit-online.tk", true }, { "shortcut-link.ga", true }, + { "shortcut.com", true }, { "shortcut.pw", true }, + { "shortcutable.com", true }, { "shorted.one", true }, { "shorten.ninja", true }, { "shorteral.gov", true }, { "shorti.ga", true }, { "shortnews.cf", true }, + { "shortquotesworld.com", true }, { "shortr.li", true }, { "shortshadows.band", true }, { "shortstackcustoms.com", true }, @@ -109664,16 +125652,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shoruihokan.com", true }, { "shoshin-aikido.de", true }, { "shoshin.technology", true }, + { "shoshonecityid.gov", true }, { "shossain.tk", true }, { "shost.ga", true }, { "shota-sekkotsuin.com", true }, { "shota.pictures", true }, - { "shota.vip", true }, + { "shota.soy", true }, { "shotbow.net", true }, - { "shotgunstudio.com", true }, { "shotoniphone.ga", true }, { "shotsleeve.com", true }, { "shou.si", true }, + { "shoudanren.jp", true }, { "shoujik8.com", true }, { "shoujochronicle.org", true }, { "shouldbetaught.com", true }, @@ -109686,47 +125675,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shouldtest.net", true }, { "shouldtest.org", true }, { "shouohkai-dental.com", true }, - { "shouttag.com", true }, + { "shoutmecrunch.com", true }, + { "shoutoutclassy.com", true }, { "shoveltoss.com", true }, { "shovonhasan.com", true }, - { "show-pro.com.au", true }, { "showbits.net", false }, { "showcats.tk", true }, { "shower.im", true }, + { "showerdoorco.com", true }, { "showersnet.com", true }, { "showf.om", true }, { "showfom.sb", true }, + { "showgirls.ga", true }, { "showmax.com", true }, + { "showme.co.za", true }, { "showmeengland.co.uk", true }, { "showmethescore.cf", true }, + { "showmoviz.com", true }, + { "showmyip.com", true }, { "shown.io", true }, { "shownet.tk", true }, { "showpassword.net", false }, { "showroom.co.uk", true }, - { "showroom.de", false }, { "showroom.uk", true }, { "showroom113.ru", true }, { "showroombelcorp.com", true }, - { "showslivki.tk", true }, { "showslot.com", true }, + { "showsnob.com", true }, { "showsonar.com", true }, { "shoyuf.top", true }, + { "shpfy-manager.com", true }, { "shpil.by", true }, { "shpilevsky.name", true }, { "shpiliak.com", true }, { "shpiliak.ru", true }, { "shpori.tk", true }, - { "shrapnel.com", true }, + { "shrapnel.com", false }, { "shrapnel.ga", true }, { "shraymonks.com", true }, { "shred.ch", false }, + { "shredder.tk", true }, { "shredoptics.ch", false }, + { "shreveportlawater.gov", true }, { "shreyansh26.me", true }, - { "shrike.me", false }, + { "shrglobal.com", true }, { "shrimpcam.pw", true }, { "shrimpnews.tk", true }, { "shrines.ga", true }, + { "shrines.tk", true }, { "shrinidhiclinic.in", true }, + { "shrinker.tk", true }, { "shrinkhub.com", true }, { "shroomery.com", true }, { "shroomery.net", true }, @@ -109739,6 +125737,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shrub.ca", true }, { "shrug.fyi", true }, { "shrug.ml", false }, + { "shsadmission.online", true }, { "shssl.vip", false }, { "sht-vr-player.cf", true }, { "shtaiman.com", true }, @@ -109750,10 +125749,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shteiman.com", true }, { "shteiman.net", true }, { "shteiman.org", true }, + { "shtfpreparedness.com", true }, { "shtorku.com", true }, { "shu-fu.net", true }, - { "shuang.us", true }, - { "shuax.com", false }, { "shubhkumar.in", false }, { "shucheng.li", true }, { "shufersal-cashback.co.il", true }, @@ -109761,18 +125759,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shufflemall.com", true }, { "shufflemix.tk", true }, { "shuffleradio.nl", true }, - { "shuftipro.com", true }, + { "shuffleware.tk", true }, { "shugarmanpsychiatric.com", true }, { "shugo.net", true }, { "shugua.com.tw", true }, { "shuhacksoc.co.uk", true }, { "shui.ga", false }, { "shuizilan.com", true }, + { "shukatsu-ichiba.com", true }, { "shulan.moe", true }, { "shuletime.ml", true }, { "shulker.store", true }, + { "shulman.tk", true }, { "shulyaka.org.ru", true }, { "shuma.ga", true }, + { "shumnyj-istochnik.tk", true }, { "shumov.tk", true }, { "shunliandongli.cn", true }, { "shunliandongli.com", true }, @@ -109784,66 +125785,96 @@ static const nsSTSPreload kSTSPreloadList[] = { { "shura.eu.org", true }, { "shurita.org", true }, { "shuset.dk", true }, + { "shuttelportal.nl", true }, { "shuttelservices.nl", true }, { "shutter-shower.com", true }, - { "shutterstreetblog.com", true }, + { "shutterflybusinesssolutions.com", true }, + { "shutts.com", true }, { "shutupbabyiknowit.party", true }, { "shuvodeep.de", true }, { "shux.pro", true }, + { "shuxiaoyi.cn", true }, { "shuzicai.cn", true }, + { "shvedskie-stenki.ml", true }, + { "shw-bw.dyndns.org", true }, + { "shw-nc.dyndns.org", true }, + { "shw-rz.dyndns.org", true }, { "shwemyanmarmalay.com", true }, { "shwrm.ch", true }, + { "shy4evr.com", true }, { "shymeck.pw", true }, { "shymeck.xyz", true }, { "shytok.net", false }, { "shyuka.me", true }, { "si-benelux.nl", true }, + { "si.insure", true }, { "si.to", true }, { "si2b.fr", true }, { "sia.one", true }, { "siadlak.com", true }, { "siaggiusta.com", true }, + { "siai.cf", true }, + { "siai.gq", true }, + { "siai.ml", true }, + { "sialis.tk", true }, { "sialtv.pk", true }, { "siamdevsqua.re", true }, { "siamdevsquare.com", true }, { "siamega.com", true }, { "siamesecatsguide.com", true }, + { "siaminterhost.com", true }, { "siamojo.com", true }, { "siamrehab.com", true }, - { "siamsnus.com", true }, + { "siamserp.com", true }, { "siamwatercraftpromotion.com", true }, { "sianjhon.com", true }, { "siatris.qc.ca", true }, { "siava.ru", true }, + { "sib-taxi.ru", true }, + { "sib.li", true }, + { "sibanyestillwater.com", true }, + { "sibauto.club", true }, { "sibekohirescaffolding.co.za", true }, { "siberas.de", true }, { "siberia.gq", true }, { "siberiactiva.com", true }, { "siberiancatsinformation.com", true }, + { "siberianhealth.com", true }, { "siberianhuskypets.com", true }, - { "siberianhuskytraining.net", true }, { "siberiaserver.ga", true }, { "siberkulupler.com", true }, + { "sibernet.tk", true }, { "sibfk.org", true }, + { "sibfl.gov", true }, + { "sibgold.su", true }, + { "sibi.nl", true }, + { "sibintek.ru", true }, + { "sibirium-red.ga", true }, + { "sibiuindependent.ro", true }, { "sibleycounty.gov", true }, + { "sibleycountyattorney.gov", true }, { "sibleyla.gov", true }, { "sibnerpartie.tk", true }, + { "sibpdfl.gov", true }, { "sibrenvasse.nl", true }, + { "sibs-dance-diamonds.ch", true }, { "siccardisport.it", true }, { "sice-si.org", true }, { "sich-fight.club", true }, { "sich-positionieren.net", true }, - { "sich.co.uk", true }, - { "sicherheitsschuhe.de", true }, { "siciliadisinfestazioni.it", true }, { "siciliamconsulting.com", true }, { "sicilianbalm.com", true }, { "siciliapulizie.it", true }, + { "sicilpiuma.it", true }, + { "sicistroje-kocarek.cz", true }, { "sickbrothers.tk", true }, { "sicken.eu", true }, { "sickhouse.se", true }, { "sicklepod.com", true }, { "sickmadworld.tk", true }, + { "sicom.com", true }, + { "sicomasp.com", true }, { "sicoobpaulista.com.br", true }, { "sicurezza24.info", true }, { "sicurezzalavoro24.com", true }, @@ -109852,34 +125883,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sicz.de", true }, { "sid-giessen.de", true }, { "sid.group", true }, + { "sid500.com", true }, { "sidari.tk", true }, + { "sidas.com", true }, { "sidatbacklink.tk", true }, { "siddhamehta.tk", true }, { "siddigsami.com", true }, + { "sidecredit.ga", true }, + { "sidefx.com", true }, { "sideleau.com", true }, - { "sidelka-tver.ru", true }, { "sidema.be", true }, - { "sidemount-forum.com", true }, { "sidemount-tauchen.com", true }, - { "sidepocket.com", true }, + { "sideofburritos.com", true }, + { "sideofburritos.social", true }, { "sidepodcast.com", true }, { "sidepodcastdaily.com", true }, { "sidepodcastextra.com", true }, { "sidequestors.org", true }, { "sideral.is", true }, { "sideshowbarker.net", true }, + { "sidewalkcleaningchicago.com", true }, + { "sidewalkpressurewashingchicago.com", true }, + { "sidhbalibaba.com", true }, { "sidi-smotri.ru", true }, - { "sidingsmedia.com", true }, { "sidiprojects.us", true }, { "sidirokastro.ga", true }, { "sidium.de", true }, { "sidmax.ca", true }, { "sidneyhaberland.com", true }, + { "sidneymi.gov", true }, { "sidnicio.us", true }, { "sidocsa.com", true }, { "sidomulyo.tk", true }, + { "sidonge.com", false }, { "sidorovich.tk", true }, { "sidpod.ru", true }, + { "sidrabitkisel.net", true }, { "sidsdock.org", true }, { "siduga.com", true }, { "sie.at", true }, @@ -109887,51 +125926,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "siebeve.be", true }, { "siecledigital.fr", true }, { "siecon-it.com", true }, + { "siega.pl", true }, { "siegemund-frankfurt.de", true }, + { "siegprod.tk", true }, { "sieh.es", true }, + { "sieiro.tk", true }, { "siel.nl", true }, { "sielsystems.nl", true }, { "siemencaes.tk", true }, + { "siemens.ch", true }, + { "siemens.co.in", true }, { "siemens.co.uk", true }, { "siemens.com", true }, + { "siemens.com.br", true }, + { "siemens.com.sg", true }, { "siemens.de", true }, + { "siemens.es", true }, + { "siemens.nl", true }, + { "siemens.pt", true }, + { "siemens.se", true }, { "siemplify-soar.com", true }, { "siemplifyg.net", true }, + { "sienafree.it", true }, { "sientemendoza.com.ar", true }, { "siepietnica.tk", true }, + { "sieplo.nl", true }, { "siepomaga.net", true }, + { "siepomaga.pl", true }, + { "sierkbornemann.de", true }, { "sierom.net", true }, { "sierpinska.eu", true }, + { "sierramadreca.gov", true }, { "sierramusic.tk", true }, - { "siesapps.com", true }, { "sietejefes.com.ar", true }, { "sieulog.com", true }, { "sieuthithangmay.com", true }, + { "sifasharing.tk", true }, { "sifecs.ml", true }, + { "siffron.com", true }, + { "sifnosguide.dk", true }, { "sifreuret.com", false }, { "sift-tool.org", false }, { "sift.com", true }, - { "sifuondemand.com", true }, { "sig-io.nl", true }, { "sig6.org", true }, { "siga.com", true }, { "sigabrt.org", true }, { "sigarettenautomaat.be", true }, + { "sigateway.com", true }, { "sigb.sh", true }, { "sigcafe.net", true }, + { "sigep.org", true }, { "sigfridlinden.se", true }, { "siggi.io", true }, { "sight-restoration.tk", true }, { "sight-sound.com", true }, - { "sightconnection.org", true }, { "sightcure.jp", true }, + { "sightdx.com", true }, + { "sightful.be", true }, + { "sightful.eu", true }, + { "sightful.nl", true }, + { "sightmachine.com", true }, { "sightseeing.news", true }, { "sighup.nz", true }, { "sigi.tk", true }, - { "sigil.lt", true }, - { "sigint.pw", true }, + { "sigint.pw", false }, { "sigio.nl", true }, - { "sigma-signalisation.com", true }, { "sigma957.net", true }, { "sigmacomputers.ga", true }, { "sigmalux.ca", true }, @@ -109948,56 +126008,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sigmaomeganu.tk", true }, { "sigmasensors.com.br", true }, { "sigmasms.com", true }, - { "sigmasms.kz", true }, - { "sigmasms.ru", true }, { "sigmateca.tk", true }, - { "sigmaweb.co.uk", true }, + { "sigmath.net", true }, { "sign.dog", true }, - { "sign.io", true }, { "signaconsultoria.com.br", true }, { "signage.red", true }, { "signal.org", false }, { "signal34.com", true }, + { "signaldp.com", false }, { "signalmaps.co.uk", true }, + { "signature.in.th", true }, { "signature365.com", true }, { "signaturechannel.com", true }, - { "signaturecityllc.com", true }, - { "signaturecountertops.com", true }, { "signaturedallas.com", true }, + { "signatureplasticsurgery.net", true }, { "signatureresolution.com", true }, + { "signaturerx.co.uk", true }, { "signcreative.de", true }, { "signere.com", true }, - { "signicat.com", true }, + { "signicat.com", false }, { "signicat.io", true }, { "significado.origem.nom.br", true }, { "significadodenombres.net", true }, { "significados.com", true }, { "significados.com.br", true }, + { "significantbanter.com", true }, { "signing-milter.org", true }, { "signing.tools", true }, { "signinwithmc.com", true }, { "signix.net", true }, + { "signmore.com", true }, { "signmycode.com", true }, - { "signomatic.be", true }, - { "signomatic.ch", true }, - { "signomatic.co.nz", true }, - { "signomatic.co.uk", true }, - { "signomatic.com", true }, - { "signomatic.com.au", true }, - { "signomatic.ie", true }, + { "signorbet.it", true }, { "signpath.io", true }, + { "signrequest.com", true }, { "signrightsigns.co.uk", true }, { "signsdance.uk", true }, { "signslabelstapesandmore.com", false }, - { "signsymptom.com", true }, { "signtul.com", false }, { "signup.ly", true }, + { "signup.ninja", true }, { "signupgenius.com", true }, + { "signuponline.events", true }, + { "signwell.com", true }, { "sigparser.com", true }, { "sigptr.me", true }, - { "sigridcrm.com", true }, - { "sigriderp.com", true }, { "sigsrv.net", true }, + { "sigsync.com", true }, { "sigterm.no", true }, { "sigterm.sh", true }, { "sigurnost.online", true }, @@ -110016,6 +126073,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sike.org", true }, { "sikecikcomel.com", true }, { "sikevux.se", true }, + { "sikkasoft.com", true }, { "sikkerwindows.dk", true }, { "sikkind.com", false }, { "siku-shop.ch", true }, @@ -110028,11 +126086,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silashes.ru", true }, { "silbercloud.com", true }, { "silberkiste.com", true }, + { "silbox.ch", false }, { "sildenafilcitrate.cf", true }, { "sildenafilcitrate100mg.ga", true }, + { "sildenafilcitratesale.com", true }, + { "sildenafilix.com", true }, + { "sildenafilmtab.com", true }, + { "sildenafilotab.com", true }, + { "sildenafilvpill.com", true }, { "silensoclinic.com", true }, { "silent-clean.de", true }, { "silent-yachts.com", true }, + { "silent.quest", true }, { "silent.se", true }, { "silentartifact.org", true }, { "silentdream.tk", true }, @@ -110042,9 +126107,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silentneko.ga", true }, { "silentsite.tk", true }, { "silentsky.tk", true }, - { "silentsystem.com", true }, + { "silentsystem.com", false }, + { "silentsystem.it", true }, { "silentundo.org", true }, { "silesianus.pl", true }, + { "silex.live", true }, { "silica-project.com", true }, { "silica-project.jp", true }, { "silicateillusion.org", true }, @@ -110055,7 +126122,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "siliton.pl", true }, { "silken-madame.tk", true }, { "silkky.cloud", true }, - { "silklogistics.com.au", true }, { "silklogisticsholdings.com.au", true }, { "silkon.net", true }, { "silkproducts.tk", true }, @@ -110068,23 +126134,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silqueskineyeserum.com", true }, { "silsha.me", true }, { "silta.tk", true }, - { "siltmax.ee", true }, { "silv.me", true }, { "silv.tk", true }, - { "silvaserv.it", true }, + { "silver-fenrir.cn", true }, { "silver-heart.co.uk", true }, { "silver-johnes.tk", true }, - { "silverartcollector.com", true }, + { "silverage.co", true }, + { "silverairways.com", true }, { "silverback.is", false }, - { "silverblog.org", true }, + { "silverbankltd.com", true }, { "silverbowflyshop.com", true }, { "silverbox.ga", true }, - { "silvercrossbaby.com", true }, { "silverdollaracademy.com", true }, { "silverdroid.gq", true }, { "silverfalcon.me", true }, - { "silverflow.co", true }, - { "silverflow.com", true }, + { "silvergate.com", true }, + { "silvergatebank.com", true }, + { "silvergatebank.net", true }, { "silvergoldbull.at", true }, { "silvergoldbull.ba", true }, { "silvergoldbull.be", true }, @@ -110164,23 +126230,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silverkattens.tk", true }, { "silverlakeks.gov", true }, { "silverlinkz.net", true }, + { "silvermama.co.za", true }, { "silvermatch.ga", true }, - { "silvernight.social", true }, { "silveronline.ml", true }, { "silveronline.tk", true }, + { "silverscopedesign.com", true }, { "silverscreenindia.com", true }, { "silversgarage.com", true }, { "silversgarage.net", true }, { "silversgarage.org", true }, { "silvershadow.cc", true }, + { "silverspringdowntown.com", true }, { "silverstartup.sk", true }, { "silverstyle.ua", true }, - { "silverswanrecruitment.com", false }, { "silvertorrents.cf", true }, { "silverwaregames.io", true }, { "silverwind.io", true }, - { "silvesrom.ro", false }, - { "silvester-mitterschida.de", true }, + { "silverwolf.cn", true }, { "silviacataldi.com", true }, { "silviadominguez.tk", true }, { "silviaecintia.tk", true }, @@ -110188,24 +126254,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "silviaroddey.tk", true }, { "silvine.xyz", true }, { "silviorodriguez.tk", true }, - { "silvistefi.com", true }, { "silvius.at", true }, { "silvobeat.blog", true }, { "silvobeat.com", true }, + { "silvu.net", true }, + { "silvullet.com", true }, { "sim-karten.net", true }, { "sim-minaoshi.jp", true }, { "sim-mobile.ml", true }, { "sim4seed.org", true }, { "simabonnement.nl", true }, + { "simac.fr", true }, { "simam.de", true }, + { "simantec.cl", true }, { "simaogv.net", true }, { "simark.ca", true }, { "simart.cf", true }, + { "simartik.com", true }, { "simasoft.com", true }, { "simava.org", true }, - { "simbamail.de", true }, { "simbeton.nl", true }, - { "simbiat.ru", true }, { "simbike.ru", true }, { "simbolo.co.uk", false }, { "simcity-cafe.tk", true }, @@ -110214,23 +126282,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simcongroup.ir", true }, { "simdex.org", true }, { "simeonoff.ninja", true }, + { "simeononsecurity.ch", true }, + { "simeononsecurity.com", true }, { "simetal.ch", false }, { "simetri.tk", true }, { "simetria.org", true }, { "simex.tk", true }, { "simfdr.com", true }, { "simfree-review.com", true }, - { "simfri.com", false }, { "simghep.com.vn", true }, { "simha.online", true }, { "simhaf.cf", true }, { "simi-reizen.nl", true }, + { "similarcontent.com", true }, + { "similarfans.com", true }, { "simivalleyelectrical.com", true }, { "simivalleyexteriorlighting.com", true }, { "simivalleylandscapelighting.com", true }, { "simivalleylighting.com", true }, { "simivalleyoutdoorlighting.com", true }, - { "simkartya.hu", true }, { "simkin.tk", true }, { "simkova-reality.cz", true }, { "simlog.tk", true }, @@ -110241,6 +126311,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simon-agozzino.fr", true }, { "simon-kosmrl-diplomski.xyz", true }, { "simon-mueller.de", true }, + { "simon-templar.fr", true }, { "simon.butcher.name", true }, { "simon.lc", true }, { "simon3k.moe", true }, @@ -110249,8 +126320,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simonbondo.dk", true }, { "simoncommunity.org.uk", true }, { "simoncook.org", true }, + { "simoncotsworth.com", true }, + { "simone.pl", true }, { "simone.sh", true }, + { "simonehair.com", true }, { "simonevans.uk", true }, + { "simonewebdesign.it", true }, { "simonfischer.info", true }, { "simonhirscher.de", true }, { "simonkjellberg.com", true }, @@ -110258,13 +126333,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simonmaddox.com", true }, { "simonmanuel.com", true }, { "simonoener.com", true }, + { "simonparrillaorlando.com", true }, { "simonreich.de", true }, { "simonreynoldsfavesunfaves.cf", true }, { "simonschmitt.ch", true }, + { "simonsmh.cc", true }, { "simonspeich.ch", true }, + { "simonspikensmultiplexcinema.uk", true }, { "simonsreich.de", true }, { "simonssh.ddns.net", true }, - { "simonweil.com", true }, + { "simonweil.com", false }, { "simonwessel.net", true }, { "simonwoodside.com", true }, { "simonzoellner.de", true }, @@ -110274,32 +126352,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simp.beauty", true }, { "simpatie.tk", true }, { "simpbx.net", true }, + { "simpel.nl", true }, { "simpelkoken.be", true }, { "simpelkoken.com", true }, { "simpelkoken.net", true }, { "simpelkoken.nl", true }, { "simpelkoken.org", true }, + { "simpelkredit.dk", true }, { "simpeo.org", true }, + { "simphome.com", true }, { "simphony.cz", true }, { "simple-perfect.tk", true }, { "simple-test-to-demonstrate-the-maximum-length-of-a-domain-name.com", true }, { "simple-test-to-demonstrate-the-maximum-length-of-a-domain-name.eu", true }, { "simple-test-to-demonstrate-the-maximum-length-of-a-domain-name.international", true }, { "simple.com", false }, + { "simpleartifact.com", true }, + { "simpleavenue.com", true }, { "simplechoicesuper.com.au", true }, { "simpleclassiclife.com", true }, { "simpleclothing.ro", true }, { "simplecmsdemo.com", true }, { "simplecoding.click", true }, + { "simplecompliance.co.uk", true }, { "simplecrypt.io", true }, { "simplecryptoconvert.com", true }, { "simplednscrypt.org", true }, - { "simplefraud.com", true }, { "simplegoodhealth.com", true }, - { "simplehealth.com", true }, + { "simplegreen.mx", true }, { "simplehome.ml", true }, + { "simpleinfoblog.com", true }, { "simpleinout.com", true }, - { "simpleinvoices.io", true }, { "simpleit.services", true }, { "simpleline.studio", true }, { "simplelinux.tk", true }, @@ -110310,25 +126393,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simplelogin.io", true }, { "simpleman.cf", true }, { "simplemining.net", true }, + { "simplenet.io", true }, + { "simplenet.ro", true }, { "simplepaddle.com", true }, { "simplepengu.com", true }, { "simplepoll.rocks", true }, { "simpleports.eu", true }, { "simpleports.net", true }, { "simpleports.org", true }, + { "simpleprivacy.fr", true }, { "simpleprojects.net", true }, { "simplereport.gov", true }, + { "simplerezo.com", true }, { "simplerses.com", true }, { "simplerv.xyz", true }, + { "simples.vet", true }, { "simplesellatl.com", true }, { "simplesend.io", true }, + { "simpleshow.com", true }, { "simplesite.hu", true }, { "simplespy.tk", true }, + { "simplesummerreading.com", true }, { "simpletax.ca", true }, - { "simpletherapy.com", true }, { "simpletools.tk", true }, { "simpletrace.nz", true }, - { "simplevat.eu", true }, { "simplevote.ca", true }, { "simplewebarchitecture.com", true }, { "simplewire.de", true }, @@ -110336,56 +126424,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "simplia.cz", true }, { "simpliby.com", true }, { "simplicitypvp.net", true }, + { "simplifiedlaws.com", true }, { "simplifixed.com", true }, + { "simplifyingcollege.com", true }, { "simplifylivelove.com", true }, + { "simplio3d.com", true }, + { "simplix.info", true }, { "simplixos.org", true }, - { "simplonevents.ch", true }, { "simplosoft.co.uk", true }, + { "simplr.ai", true }, + { "simplrflex.com", true }, { "simplusbr.com", true }, + { "simply-bob.de", true }, { "simply-pattinson.tk", true }, + { "simply-pdf.de", true }, { "simply-premium.com", true }, { "simply.com", true }, { "simply.scot", true }, { "simply2020.com", true }, - { "simplyathenee.com", true }, { "simplybloomfloral.com", true }, { "simplybrave.net", true }, { "simplycateringequipment.co.uk", true }, { "simplycharlottemason.com", true }, + { "simplychocolate.com", true }, { "simplycloud.de", true }, { "simplydonelegal.com", true }, { "simplyfitperth.com.au", true }, { "simplyfixit.co.uk", true }, - { "simplyheadwear.com.au", true }, + { "simplygood.work", true }, { "simplyhelen.de", true }, - { "simplyirfan.com", true }, { "simplyjet.tk", true }, + { "simplymaidsaz.com", true }, + { "simplymeatsmoking.com", true }, { "simplymidget.tk", true }, { "simplyml.com", true }, { "simplyowners.net", true }, { "simplyplans.co.uk", true }, { "simplyregister.net", true }, + { "simplyshamal.online", true }, { "simplysmartgardening.com", true }, { "simplytiles.com", true }, { "simplyuniforms.com.au", true }, { "simplyvoting.com", true }, + { "simprosuite.com", true }, + { "simpson.id", true }, { "simpsoncountyky.gov", true }, { "simpul.nl", true }, + { "simracingcockpit.com", true }, { "simrail.nl", true }, { "simranmehta.ga", true }, { "sims4hub.ga", true }, { "simscale.com", true }, + { "simsek.biz.tr", true }, + { "simservice.dk", true }, { "simsfinnchiropractic.com.au", true }, + { "simsim.in", true }, { "simsimi.ml", true }, + { "simsmotorshop.be", true }, { "simsnieuws.nl", true }, { "simstarstyle.tk", true }, - { "simstime.net", true }, + { "simul.host", true }, { "simulfund.com", false }, + { "simulhost.com", true }, { "simulise.cloud", true }, { "simulise.com", true }, { "simulise.help", true }, { "simulping.com", true }, + { "simulus.education", true }, + { "simulus.hr", true }, { "simulus.technology", true }, + { "simulus.training", true }, { "simumiehet.com", true }, { "simus.fr", true }, { "simyayayinlari.com", false }, @@ -110394,18 +126502,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sin.swiss", false }, { "sin4psi77.tk", true }, { "sina-praxis.com.mx", true }, + { "sina.swiss", true }, { "sinakuhestani.ir", false }, { "sinalizeweb.com.br", false }, { "sinan.mobi", true }, - { "sinanaydemir.com.tr", true }, + { "sinanozpinar.nl", true }, { "sinapuros.tk", true }, + { "sinarbaktiperdana.id", true }, { "sinatralegal.com", true }, - { "sinavcevaplan.com", true }, + { "sinavcevaplan.com", false }, { "sinavelvet.com", true }, { "sinavyo.ml", true }, { "sincelockdown.co.uk", true }, { "sincemydivorce.com", true }, - { "sinceschool.com", true }, { "sincityfan.tk", true }, { "sinclairinat0r.com", true }, { "sincordones.net", true }, @@ -110418,7 +126527,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sindastra.net", true }, { "sindastra.org", true }, { "sinde.ru", true }, - { "sindescargar.es", true }, { "sindicatoburgos.org", false }, { "sindirectory.com", true }, { "sindlerova.com", true }, @@ -110430,7 +126538,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sinefili.com", true }, { "sinemakurd.tk", true }, { "sinergify.com", true }, - { "sinergy.ch", false }, { "sinetron.ga", true }, { "sinews.tk", true }, { "sinfield.com", false }, @@ -110447,11 +126554,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "singaporewebdesign.tk", true }, { "singapur24.tk", true }, { "singapurfirma.com", true }, + { "singcapital.com.sg", true }, { "singee.me", true }, { "singel.ch", true }, - { "singen.icu", true }, { "singer.ru", true }, - { "singerfamily.ca", true }, { "singerpragathi.tk", true }, { "singerwang.com", true }, { "singeyel.gq", true }, @@ -110465,14 +126571,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "singles-aus-hamburg.de", true }, { "singles-berlin.de", true }, { "singles-day.org.il", true }, + { "singlesproject.org", true }, + { "singleton-factory.de", true }, { "singleuse.link", true }, { "singlu10.org", false }, { "singluten.tk", true }, + { "singreggaeoke.com", true }, { "singulair-generic.tk", true }, - { "sinhnhatbaby.com", true }, { "sini.tk", true }, { "sinibaldi.me", true }, { "sinistragiovanile.tk", true }, + { "sinkaray.com", true }, + { "sinkfactory.com", true }, { "sinkhole-florida.com", true }, { "sinkholerepairsflorida.com", true }, { "sinkip.com", true }, @@ -110491,6 +126601,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sinopx.cf", true }, { "sinoscandinavia.se", true }, { "sinosky.org", false }, + { "sinpermiso.info", true }, { "sinquin.eu", true }, { "sinronet.com", false }, { "sinsalida.tk", true }, @@ -110500,7 +126611,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sint-apollonia-appels.tk", true }, { "sint-barbara.tk", true }, { "sint-joris.nl", true }, - { "sint-maarten.net", true }, { "sint-sebastianus.tk", true }, { "sint-servattumus.tk", true }, { "sinta-d.com", true }, @@ -110515,38 +126625,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sintomasdocancer.com", true }, { "sintpietersabdijgent.be", true }, { "sintsationeel.nl", true }, - { "sinuasi.ee", true }, { "sinuate.gq", true }, { "sinuelovirtual.com.br", true }, { "sinusbot.online", true }, { "sinusitis-bronchitis.ch", true }, - { "sinusitisexplained.com", true }, { "sinvideovault.com", true }, { "siogyumolcs.hu", true }, { "sion-colony.tk", true }, { "sion.info", true }, - { "siongseafood.com", true }, + { "siouxcityjournal.com", true }, + { "siouxcountyne.gov", true }, + { "siouxfalls.gov", true }, + { "siouxfalls.org", true }, { "sip.ch", true }, { "sipa.nc", true }, { "sipa.pf", true }, { "sipadmin.ru", true }, - { "sipc.org", true }, - { "sipd.go.id", true }, + { "sipd.go.id", false }, { "sipede.tk", true }, + { "siphalor.de", true }, + { "sipinterdindikcilegon.id", true }, { "sipo.tk", true }, { "siproj.com.br", true }, { "sipstix.co.za", true }, { "siptls.com", true }, + { "sipuri.me", true }, { "sipyuru.com", true }, { "sipyuru.lk", true }, - { "siq.li", true }, { "siqi.wang", true }, { "sirakov.tk", true }, { "siralyvisegrad.hu", true }, { "siranap.com", true }, { "sirandorung.tk", true }, { "siraweb.org", true }, - { "sirbouncealotcastles.co.uk", true }, + { "sirbio.ru", true }, { "sircharlesincharge.com", true }, { "sirchuk.net", true }, { "sircon.no", true }, @@ -110554,22 +126666,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sirenasweet.net", true }, { "sirenasweet.org", true }, { "sirencallofficial.com", true }, + { "sirenequestrianvaulting.co.uk", true }, + { "sirenequestrianvaulting.com", true }, { "sirenslove.com", true }, + { "sirenvaulting.club", true }, + { "sirenvaulting.co.uk", true }, + { "sirenvaulting.com", true }, + { "sirenvaulting.group", true }, { "siretaweb.id", true }, { "sirfaustobrasil.com.br", true }, { "sirg.fr", true }, { "sirhempco.com", true }, + { "siri.cc", true }, { "siria.tk", true }, - { "siriusatelier.com", true }, + { "siris.nl", true }, + { "sirius-se.hu", true }, + { "sirius.su", true }, { "siriuspro.pl", true }, { "siriuspup.com", true }, { "sirma.com", true }, - { "sirmoffat.com", true }, { "sirnakhaber.tk", true }, { "siro.gq", true }, { "sirovatka.tk", true }, { "sirplus.com.ar", true }, { "sirpsycho.tk", true }, + { "sirram.de", true }, { "sirtaptap.com", true }, { "sirtuins.com", true }, { "sirvio.eu", true }, @@ -110589,17 +126710,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sirvoy.nl", true }, { "sirvoy.no", true }, { "sirvoy.se", true }, + { "sirzech.my.id", true }, { "sis.net.sa", true }, { "sisadmin21.tk", true }, - { "sisap.com", true }, { "siscompbolivia.tk", true }, { "siscompt.com", false }, - { "siseed.io", true }, { "siselectrom.com", true }, { "siseministeerium.ee", false }, { "sisiengineers.gq", true }, { "sisirbatu.tk", true }, { "sismit.es", true }, + { "sisms.pl", true }, { "sisqo.tk", true }, { "sisqualwfm.com", true }, { "sissden.eu", true }, @@ -110610,28 +126731,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sistema-trenirovok.ml", true }, { "sistema20k.tk", true }, { "sistemair.be", true }, - { "sistemair.ch", true }, - { "sistemair.it", true }, - { "sistemairpro.com", true }, { "sistemapronto.ml", true }, - { "sistemasarquitectonicos.com", true }, { "sistemasespecializados.com", true }, { "sistemista.it", true }, - { "sistimiki-anaparastasi.gr", true }, { "sistonenfranco.tk", true }, { "sistrade.com", true }, { "sisu.ai", true }, + { "sisudata.com", true }, { "sisv.eu", true }, { "sisver.mx", true }, { "sit-brn.ru", true }, { "sit.ec", true }, { "sit.moe", true }, + { "sit.sh", true }, { "sitak.fi", true }, - { "sitanleta.de", false }, + { "sitanleta.de", true }, { "sitatravel.gr", true }, { "sitc.sk", true }, + { "site-analyzer.pro", true }, + { "site-de-paris-en-ligne.fr", true }, { "site-development.tk", true }, - { "site-helper.com", true }, + { "site-dns.com", true }, { "site-master.ml", true }, { "site-oficial-inicio.com", true }, { "site-oflcial.com", true }, @@ -110646,16 +126766,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sitebuilderreport.com", false }, { "sitecentre.com.au", true }, { "sitechange.dedyn.io", true }, - { "sitecloud.jp", true }, + { "sitechecker.pro", true }, { "sitecreation.tk", true }, { "sitecreator.tk", true }, { "sitecrew.cf", true }, { "sitecuatui.com", true }, { "sitedebelezaemoda.com.br", true }, - { "sitederencontregratuite.com", true }, + { "sitedynamix.co.uk", true }, { "siteforce.com", true }, { "sitehizi.com", true }, { "siteintelstage.com", true }, + { "sitek.rocks", true }, { "sitekatalog.tk", true }, { "sitelinks.ga", true }, { "sitelinks.ml", true }, @@ -110666,32 +126787,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sitempro.com.mx", false }, { "sitemydesk.fr", true }, { "sitenv.org", true }, + { "sitepentruprofesori.com", true }, + { "siteplug.com", true }, + { "sitepokupok.ru", true }, { "siterank.cf", true }, { "siterank.gq", true }, + { "siterapidowp.com.br", true }, { "siterencontre.me", true }, { "siteru.tk", true }, { "sites.google.com", true }, + { "sites2poker.fr", true }, + { "sites2rencontre.fr", true }, { "sitesara.com", true }, - { "siteschema.com", true }, { "sitesdesign.tk", true }, { "sitesecurityscan.com", true }, { "sitesforward.com", true }, + { "sitesignal.net", true }, { "sitesko.de", true }, { "sitestudio.tk", true }, { "sitesweb.gq", true }, { "sitetalk.tk", true }, + { "sitetuners.com", true }, { "siteviseagency.com", true }, - { "siteweb-seo.fr", true }, + { "sitgesfilmfestival.com", true }, { "sithijaya.tk", true }, { "sithmanifest.com", true }, { "sitinjau.com", true }, { "sitiosantaangela.com.br", true }, { "sitischu.com", true }, - { "sitiweb-wp.com", false }, + { "sitisnab.kz", true }, { "sitnikov.ga", true }, { "sito-online.ch", true }, - { "sitramos.es", true }, - { "sitscommunity360.com", true }, + { "sitra.fi", true }, { "sittingwell.co.uk", true }, { "sittogether.club", true }, { "sittogether.tw", true }, @@ -110707,30 +126834,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "siusto.com", true }, { "sivaexports.in", true }, { "sivaru.tk", true }, + { "siviagra.com", true }, { "sivizius.eu", true }, { "sivutoimisto.fi", true }, { "sivyerge.com", true }, { "siw64.com", true }, + { "siwa.cf", true }, { "siwek.xyz", true }, { "siwyd.com", true }, { "six27.com", true }, { "sixam.co.jp", true }, + { "sixara.com", true }, { "sixcolors.lu", true }, { "sixcorners.info", true }, { "sixcorners.net", true }, { "sixde.com.au", true }, { "sixe.es", true }, { "sixforkurd.tk", true }, - { "sixgungroup.com", true }, + { "sixnines.net", true }, { "sixpackband.tk", true }, { "sixpackholubice.cz", true }, { "sixstrings.tk", true }, - { "sixt.com.tr", true }, + { "sixtiesgroovemachine.com", true }, + { "sixtiesgroovemachine.nl", true }, { "sixyy.com", true }, { "siyako.com", true }, { "siyuan.com", true }, + { "sizeofvoid.org", true }, { "sizeunknown.com", true }, { "sizeunknown.net", true }, + { "sizinajans.com", true }, + { "sizzlermagazine.com", true }, { "sj-leisure.com", true }, { "sja-se-training.com", true }, { "sjaakgilsingfashion.nl", true }, @@ -110741,8 +126875,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sjeverni.info", true }, { "sjfss.com", true }, { "sjfss.marketing", true }, + { "sjid.co.uk", true }, { "sjiplanning.com.au", true }, { "sjleisure.co.uk", true }, + { "sjlmd.moe", true }, + { "sjm-hamburg.de", false }, + { "sjm.ovh", true }, { "sjnp.org", true }, { "sjoelen.tk", true }, { "sjoelsport.nl", true }, @@ -110752,13 +126890,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sjout.nl", true }, { "sjparanormal.tk", true }, { "sjrcommercialfinance.co.uk", true }, - { "sjrslms.in", true }, + { "sjrslms.in", false }, { "sjs.org.hk", true }, + { "sjtravel.guru", true }, { "sjwheel.net", true }, - { "sjwkeyz.com", true }, + { "sk-ii.com", true }, { "sk.tl", true }, - { "sk8erofbodom.com", true }, + { "sk4y.net", true }, { "sk8israel.com", true }, + { "skaala.com", true }, + { "skachat-filmi.info", true }, { "skachat-programmylini.ga", true }, { "skachat-shablon-rezyume-na-angliyskom-yazyk.tk", true }, { "skachat-zip.tk", true }, @@ -110768,7 +126909,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skaginn.tv", true }, { "skaiman.ga", true }, { "skaitliukas.tk", true }, - { "skalar.sk", true }, { "skalcollective.com", true }, { "skalec.org", true }, { "skalis-portage.com", true }, @@ -110780,9 +126920,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skarox.eu", true }, { "skarox.net", true }, { "skarox.ru", true }, - { "skartecedu.in", true }, { "skatclub-beratzhausen.de", true }, { "skate.fr", true }, + { "skatefilms.tv", true }, { "skateparkmontbriz.tk", true }, { "skaterangels.tk", true }, { "skaterepublic.tk", true }, @@ -110791,20 +126931,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skateswagger.com", true }, { "skatingchina.com", true }, { "skatn.de", true }, - { "skautibrno.cz", true }, + { "skatrey.com", true }, + { "skattebo.no", true }, + { "skazama.com", true }, { "skazka.ml", true }, { "skazka.ru", true }, { "skazochnyj-sait.tk", true }, { "skbexteriorcleaningsolutions.com", true }, { "skbilisim.tk", true }, + { "skblab.ru", true }, { "skday.com", true }, { "skedda.com", true }, { "skeditor.tk", true }, { "skedr.io", false }, { "skeeley.com", true }, + { "skeetads.com", true }, { "skegnesstec.ac.uk", true }, { "skei.org", true }, { "skepneklaw.com", true }, + { "skepp.com", true }, { "skeppsbrons.se", true }, { "skepticalsports.com", true }, { "skeptics.org", true }, @@ -110813,6 +126958,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sketch.io", true }, { "sketch.jpn.com", true }, { "sketchbox.tk", true }, + { "sketcheny.com", true }, { "sketchmonk.tk", true }, { "sketchy.tk", true }, { "skgzberichtenbox.nl", true }, @@ -110822,21 +126968,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skhire.co.uk", true }, { "skhoop.cz", true }, { "skhosting.eu", true }, + { "skhron.com.ua", true }, { "skhuf.net", true }, { "ski-outdoor-shop.de", true }, + { "ski-planet.com", true }, { "skibbereencomhaltas.tk", true }, { "skibikers.tk", true }, { "skid.church", true }, { "skiddle.com", true }, { "skidka.by", true }, { "skidki-ru.cf", true }, + { "skidkimira.ru", true }, { "skidzun.de", true }, { "skifairview.com", true }, + { "skiff.city", true }, + { "skiff.com", true }, { "skiff.town", true }, { "skiforlight.ca", true }, + { "skiftet.org", true }, { "skifttiljutlanderbank.dk", true }, { "skigebied.nl", true }, - { "skigebiete-test.de", true }, { "skiingnewsletter.cf", true }, { "skiingnewsletter.ga", true }, { "skiingproperty.com", true }, @@ -110849,61 +127000,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skill.tk", true }, { "skillab.ro", true }, { "skillablers.com", true }, - { "skillatwill.com", true }, - { "skillavid.com", true }, { "skillcore.net", true }, - { "skilldetector.com", true }, - { "skillled.com", true }, + { "skilldnsproc.com", true }, + { "skillearning.de", true }, + { "skillmamba.com", true }, { "skillmoe.at", true }, + { "skillnes.herokuapp.com", true }, + { "skillonnet.com", true }, { "skillrocket.in", true }, { "skills2serve.org", true }, { "skills2services.com", true }, { "skillsboffin.com", true }, { "skillsenhancementtexas.gov", true }, { "skillsenhancementtx.gov", true }, + { "skillsforall.com", true }, { "skillshare.com", true }, + { "skillsoftcompliance.com", true }, { "skilltran.com", true }, + { "skillup.co", true }, { "skillwaze.com", true }, - { "skiltmax.dk", true }, - { "skiltmax.no", true }, { "skiman.tk", true }, { "skimbo.tk", true }, { "skin-cosmetic.eu", true }, + { "skin.club", true }, { "skinbet.co", true }, { "skinboost.ga", true }, { "skinboost.ml", true }, { "skincare-note.com", true }, { "skincareagent.cf", true }, { "skindb.net", true }, + { "skinetic.eu", true }, { "skinews.tk", true }, { "skinexpert.ml", true }, { "skinfoodpeachcotton.tk", true }, { "sking.io", true }, + { "skinlords.com", true }, { "skinmarket.co", true }, + { "skinmedshop.ro", true }, { "skinmodo.com", true }, { "skinnation.tk", true }, - { "skinny-bitch99.com", true }, { "skinnybitch99.net", true }, { "skinport.com", true }, { "skinpwrd.com", true }, + { "skinrejuvenate.com.au", true }, { "skinrender.ga", true }, { "skinseries.cf", true }, { "skinsolution.ga", true }, { "skinsolutionclinic.com", true }, { "skinstyleglobal.com", true }, { "skinsuperstore.tk", true }, + { "skintdad.co.uk", true }, + { "skintillation.com", true }, + { "skinzwear.com", true }, { "skio.com", true }, + { "skioakenfull.com", true }, + { "skip.re", true }, { "skipfault.com", true }, { "skipperinnovations.com", false }, - { "skippers-bin.com", false }, { "skippy.dog", false }, + { "skipr.co", true }, + { "skipr.ninja", true }, { "skiptadiabetes.com", true }, + { "skipthetrailers.xyz", true }, { "skipton.io", true }, + { "skiptontownhall.co.uk", true }, { "skirent-masocorto.com", true }, { "skirted.cf", true }, { "skirts.tk", true }, { "skirtskenya.tk", true }, + { "skirwin.com", true }, { "skischule-wildewiese.de", true }, + { "skisportdain.it", true }, { "skitecsh.com", true }, { "skitop.it", true }, { "skitznet.tk", true }, @@ -110912,10 +127079,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skjt.co.jp", true }, { "skk.moe", true }, { "skky.net", true }, - { "skladmebliv.ua", true }, - { "sklep-proekologia.pl", true }, + { "skladmebliv.ua", false }, { "sklepbhp.online", true }, - { "sklepjacobs.pl", true }, { "sklepsamsung.pl", true }, { "sklepsnowboardowy.pl", true }, { "sklepvoip.tel", true }, @@ -110930,6 +127095,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skoander.com", true }, { "skoda-im-dialog.de", true }, { "skodapower.tk", true }, + { "skoilly.cc", true }, + { "skoiy.com", true }, { "skokie.gov", true }, { "skol.bzh", true }, { "skolagatt.is", true }, @@ -110941,6 +127108,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skolnieks.lv", true }, { "skolnilogin.cz", true }, { "skolniweby.cz", true }, + { "skolplattformen.org", true }, + { "skolskyportalporuba.cz", true }, + { "skooli.com", true }, { "skorbord.tk", true }, { "skorepova.info", true }, { "skoroff.com", true }, @@ -110949,11 +127119,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skorpil.cz", true }, { "skorstensfolket.se", true }, { "skory.us", true }, + { "skorzew.ski", true }, { "skoskav.org", true }, { "skotobaza.tk", true }, { "skotstvo.tk", true }, - { "skotty.io", true }, { "skovbosburgerblog.dk", true }, + { "skovik-sandbox.com", true }, { "skovik.com", true }, { "skpark.cf", true }, { "skpk.de", true }, @@ -110993,7 +127164,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skux.ch", true }, { "skvele-cesko.cz", true }, { "skvelecesko.cz", true }, - { "skvty.com", true }, + { "skvot.de", true }, { "skwile-cafe.com", true }, { "skwitko.com", true }, { "skwlkrs.com", true }, @@ -111002,6 +127173,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sky-cargo.at", true }, { "sky-coach.com", true }, { "sky-coach.nl", true }, + { "sky-driver.ch", true }, { "sky-live.fr", true }, { "sky-motion.de", true }, { "sky-music.tk", true }, @@ -111016,26 +127188,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skybirds.org", true }, { "skyblockmc.eu", true }, { "skyblockmc.no", true }, - { "skyblond.info", true }, { "skybloom.com", true }, - { "skyblueradio.com", true }, + { "skyblue4.com", true }, { "skyborne.tk", true }, { "skybound.link", false }, { "skybrary.aero", true }, { "skybrary.eu", true }, + { "skybrary.info", true }, + { "skybridge.net", true }, { "skyclinic.ua", true }, { "skycmd.net", true }, { "skyder.com.mx", false }, { "skyder.mx", false }, { "skyderby.ru", true }, + { "skydiveaddiction.com", true }, + { "skydivegeronimo.com.au", true }, { "skydiverapp.com", true }, { "skydiverecuador.com", true }, { "skydivingexperiences.co.uk", true }, { "skydragoness.com", true }, { "skydrive.live.com", false }, + { "skydronesolutions.com", true }, + { "skye.vg", true }, + { "skyebluepornstar.com", true }, { "skyeeverest.tk", true }, { "skyem.co.uk", false }, - { "skyfone.cz", true }, + { "skyeng.ru", true }, + { "skyevg.systems", true }, + { "skyexpressinternational.com", true }, + { "skyfall.network", true }, + { "skyfibertech.com", true }, { "skyfpicture.tk", true }, { "skygame.tk", true }, { "skygates.tk", true }, @@ -111051,12 +127233,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skylair.info", true }, { "skylandanalytics.net", true }, { "skylander.cf", true }, + { "skylar.ai", false }, { "skylarker.org", true }, + { "skylarsnowpornstar.com", true }, { "skylash.be", true }, { "skylgenet.nl", true }, { "skylightcreative.com.au", true }, { "skylightipv.com", true }, + { "skylimitmedia.com", true }, { "skyline.link", true }, + { "skyline.tw", true }, { "skylineexplorer.com", true }, { "skylinehk.org", true }, { "skylinehouse.ca", true }, @@ -111065,36 +127251,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skylocker.net", true }, { "skyloisirs.ch", false }, { "skyltmax.se", true }, + { "skymagdaily.com", true }, + { "skymail.de", true }, { "skymass.xyz", true }, { "skyminds.net", true }, + { "skymkmk.com", true }, { "skymonk.tk", true }, { "skyn.ai", true }, { "skynet-research.us", false }, - { "skynet.co.ug", false }, { "skynet233.ch", false }, { "skynet800.goip.de", true }, { "skynetcloud.site", true }, - { "skynethk.com", true }, { "skynetnetwork.eu.org", true }, { "skynetstores.ae", true }, { "skynetz.tk", true }, + { "skyoceanblue.com", true }, + { "skyone.host", true }, { "skyoy.com", false }, { "skypanic.com", true }, { "skypark.tk", true }, { "skypce.net", true }, - { "skype.com", true }, + { "skype", true }, + { "skype.com", false }, { "skypech.com", true }, { "skypefr.com", true }, + { "skypicker.com", true }, { "skyportcloud.com", true }, { "skyqueen.cc", true }, { "skyquid.co.uk", true }, { "skyra.pw", true }, + { "skyrider.me", true }, { "skyrieptravel.com", true }, - { "skyrocket.site", true }, + { "skyrocketconstruction.it", true }, + { "skyrocketing.ninja", true }, { "skyrosconsulting.com", true }, { "skys-entertainment.com", true }, + { "skyscanner.ca", true }, { "skyscanner.co.in", true }, { "skyscanner.com", true }, + { "skyscanner.com.au", true }, + { "skyscanner.com.hk", true }, + { "skyscanner.fr", true }, { "skyscanner.gg", true }, { "skyscanner.net", true }, { "skyscanner.pt", true }, @@ -111103,8 +127300,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skyseo.cf", true }, { "skysoftbg.com", true }, { "skysplash.gq", true }, + { "skysprouts.co.uk", true }, { "skysuite.nl", true }, + { "skytamil.net", true }, { "skytec.host", true }, + { "skytechosting.com", true }, + { "skytel.ge", true }, { "skyterraathome.com", true }, { "skyterraembrace.com", true }, { "skyterrawellness.com", true }, @@ -111116,6 +127317,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "skyvault.io", true }, { "skyviewtowers.com", true }, { "skywalkersa.ga", true }, + { "skywatch.com", true }, { "skywindowsnj.com", true }, { "skyworldserver.ddns.net", true }, { "skywt.cn", true }, @@ -111128,15 +127330,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sl0.us", true }, { "sl41.com.br", true }, { "sl66.cc", false }, + { "sla.pl", true }, { "slaam.tk", true }, { "slab.com", true }, { "slabserver.com", true }, { "slabstage.com", true }, { "slack-files.com", true }, - { "slack-gov.com", true }, - { "slack.com", true }, { "slackline.tk", true }, { "sladic.si", false }, + { "sladkiiflirt.ru", true }, + { "slaek.de", true }, { "slagerijdekoekelaere.be", true }, { "slagerijrooken.be", true }, { "slagerijvanguilik.nl", true }, @@ -111147,43 +127350,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slamdunkdedication.tk", true }, { "slamhope.gq", true }, { "slamix.nl", true }, + { "slamtradingcards.com.au", true }, { "slan.fr", true }, { "slangbellor.com", true }, + { "slaninka.eu", true }, { "slanterns.net", true }, { "slapen17.nl", true }, { "slaps.be", true }, + { "slapthesign.com", true }, { "slash64.co.uk", true }, { "slash64.uk", true }, { "slashbits.no", true }, { "slashcam.de", true }, { "slashcrypto.org", true }, + { "slashdigit.com", true }, { "slashnroses.com", true }, { "slashorg.net", true }, { "slate.to", true }, { "slated.ie", true }, + { "slatemc.com", true }, { "slatemc.fun", true }, + { "slateteams.com", true }, { "slathering.cf", true }, + { "slatteryassetadvisory.com.au", true }, { "slaughter.com", true }, { "slaughterhouse.fr", true }, { "slava.ml", true }, { "slavasoloviev.com", true }, { "slavasveta.info", true }, { "slavblog.ru", true }, + { "slaveykov.bg", true }, + { "slavic401k.com", true }, + { "slavira.ru", true }, { "slaws.io", true }, { "slayer.tech", true }, + { "slayersonline.net", true }, { "slayingqueen.com", true }, + { "slaytec.com", true }, { "slb.ru", true }, + { "slbbiromaru.sch.id", true }, + { "slbetx.com", true }, { "slbknives.com", true }, - { "slc.is", false }, + { "slbm.com.au", true }, + { "slboatstorage.com", true }, { "slcdn.net", true }, + { "sld08.com", true }, { "sldev.ovh", true }, { "sldlcdn.com", true }, + { "sldonline.org", true }, { "slechtereview.nl", true }, + { "sleddogclub.com", true }, { "sledgeroofing.com", true }, - { "sleeklounge.com", false }, + { "sledwyoming.com", true }, + { "sleekfellow.com", true }, + { "sleekflow.io", true }, { "sleep-go.info", true }, { "sleep-tight.cf", true }, { "sleepawaycampseries.tk", true }, + { "sleepcouncil.org.uk", true }, { "sleepet.tw", true }, { "sleepig.com", true }, { "sleepily.tk", true }, @@ -111197,8 +127421,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sleepshop.be", true }, { "sleepstar.co.uk", true }, { "sleepstar.fr", true }, + { "sleepys.net", true }, { "sleetandsole.es", true }, { "sleetandsole.eu", true }, + { "sleeuwijkskerkje.nl", true }, { "sleio.com", true }, { "sleismann.de", true }, { "sleismann.eu", true }, @@ -111208,30 +127434,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sletaem.ml", true }, { "sletat.ru", true }, { "slev.tk", true }, - { "slevermann.de", true }, + { "slevermann.de", false }, { "slevomat.cz", true }, { "slew.gq", true }, { "slezenko.tk", true }, { "sli.do", true }, + { "slicehousefranchise.com", true }, { "sliceone.com", true }, { "slicklines.co.uk", true }, { "slicss.com", true }, { "slidebatch.com", true }, { "slidefiftyfamily.tk", true }, { "slidemembers.com", true }, + { "slideproducts.com", true }, { "slides.zone", true }, { "slideshare.net", true }, { "slido.com", true }, { "slidstvo.info", true }, - { "sliferdenver.com", true }, + { "slightshop.com", true }, { "slik.ai", true }, + { "slim-health.com", true }, { "slim-slender.com", true }, { "slim.ua", true }, - { "slimer.com", true }, { "slimetutorial.com", true }, { "slimmarkets.com", true }, { "slimopweg.be", true }, { "slimspots.com", true }, + { "slimster.nl", true }, { "slimwindows.cf", true }, { "slimwindows.ga", true }, { "slimwindows.gq", true }, @@ -111251,20 +127480,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sliteapp.com", true }, { "slivkadesigns.tk", true }, { "slix.io", true }, + { "slizgawka.eu", true }, { "sllatina.tk", true }, { "slm-sla.tk", true }, { "slma.tk", true }, { "slmail.me", true }, { "sln.cloud", true }, - { "slneighbors.org", true }, { "slo-net.net", true }, { "slo-tech.com", true }, - { "slo.ee", true }, + { "slo.nl", true }, { "sloancom.com", true }, { "sloanrealtygroup.com", true }, { "sloboda.tk", true }, { "slobrowink.com", true }, { "slobsbeer.com", true }, + { "slocounty.gov", true }, + { "slodkiflirt.pl", true }, { "sloeproeienalmere.nl", true }, { "sloepverhuur-roggebroek.nl", true }, { "slogan.tk", true }, @@ -111272,21 +127503,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slogix.in", true }, { "sloneczni.pl", true }, { "slonep.net", true }, + { "slonko.net", true }, { "sloopautonoordholland.com", true }, { "slootskyartisticdentistry.com", true }, { "slopecountynd.gov", true }, { "slopeedge.com", true }, { "slopeedge.net", true }, - { "slopi.net", true }, + { "slopeoak.com", true }, { "slotarazzi.com", true }, + { "slotbonus24.com", true }, { "slotboss.co.uk", true }, { "slotcatalog.com", true }, + { "sloterplas-beveiliging.nl", true }, + { "sloterplas-bouw.nl", true }, + { "sloterplas-management.nl", true }, { "slotfara.net", true }, + { "slotgames.pro", true }, { "slotgratisonline.net", true }, { "slothless.com", true }, { "sloths.org", true }, - { "slothy.cloud", true }, - { "slothy.win", true }, { "sloticagames.com", true }, { "slotjava.com.br", true }, { "slotjava.es", true }, @@ -111295,16 +127530,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slotmachinesgratisonline.com", true }, { "slotmad.com", true }, { "slotsinspector.com", true }, - { "slotsmegacasino.com", true }, + { "slotsmegacasino.com", false }, + { "slotsup.com", true }, { "slouching.ga", true }, { "sloudways.com", true }, + { "slovakiana.sk", true }, { "slovenia-trip.tk", true }, + { "slovenskekasina.sk", true }, { "slovenskycestovatel.sk", true }, { "slow-coaching.fr", true }, { "slow.social", true }, { "slow.zone", false }, { "slowapi.com", true }, { "slowcookingperfected.com", true }, + { "slowfoodandhandforgedtools.com.au", true }, { "slowgames.xyz", true }, { "slowinski.tk", true }, { "slowlove.es", true }, @@ -111312,11 +127551,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slowsocial.eu", true }, { "slowsocial.net", true }, { "slowsocial.org", true }, + { "slowsociety.org", false }, + { "slpidny.gov", true }, { "slpm.com", true }, { "slpower.com", true }, { "slrd-isperih.com", true }, { "slrie.de", true }, + { "slt.ee", true }, { "slt24.de", true }, + { "sltcapital.com", true }, + { "sltda.gov.lk", true }, { "sluciaconstruccion.com", true }, { "sluderno.org", true }, { "sludge.tk", true }, @@ -111328,44 +127572,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "slunecnice.cz", true }, { "slunyavchik.tk", true }, { "sluo.org", true }, + { "slushat-tekst-pesni.ru", true }, + { "slushe.com", true }, { "slushpool.com", true }, { "slutty-girls.cf", true }, - { "slwilde.ca", true }, { "slxh.eu", true }, { "slxh.nl", true }, + { "slyarts.com", true }, + { "slycegateway.com", true }, + { "slycepay.com", true }, + { "slycereporting.com", true }, { "slymak.com", true }, { "slytech.ch", false }, { "slytigers.tk", true }, { "slyvon.com", true }, { "slzr.cloud", true }, { "sm-kyoushitsu.com", true }, - { "sm-stream.com", true }, { "sm-supplements.gr", true }, - { "sm.link", true }, { "sm.ms", true }, { "sm161.cn", true }, { "sm2016.ch", true }, { "sma-dev.de", true }, { "sma-gift.com", true }, - { "smackhappy.com", true }, + { "smackhappy.com", false }, { "smadav.ml", true }, { "smaksbanken.no", true }, { "smalandscountryclub.tk", true }, + { "small-blog.cf", true }, { "small-king.ml", true }, + { "smallblog.org", true }, + { "smallbusinesscharter.org", true }, { "smallbytedesign.co", true }, + { "smallchanges.tv", true }, { "smallchat.nl", true }, - { "smallcloudsolutions.co.za", true }, - { "smallcloudsolutions.com", true }, + { "smallcraftadvisory.tk", true }, { "smallcubed.com", true }, { "smalldata.tech", true }, { "smalldeveloper.ml", true }, { "smalle-voet.de", true }, - { "smallplanet.com", true }, + { "smallfarmersjournal.com", true }, + { "smallfoot.tk", true }, + { "smallplanet.com", false }, { "smalls-world.tk", true }, { "smallsiri.gq", true }, { "smallsites.eu", true }, { "smalltalkconsulting.com", true }, { "smalltunepress.tk", true }, + { "smallville.tk", true }, { "smallville25.tk", true }, { "smallwhitebear.ga", true }, { "smaltimento-rifiuti.com", true }, @@ -111378,6 +127631,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smaltimentoamianto.campania.it", true }, { "smaltimentoamianto.frosinone.it", true }, { "smaltimentoamianto.latina.it", true }, + { "smaltimentocalcinacci.roma.it", true }, { "smaltimentorifiuti.firenze.it", true }, { "smaltimentorifiuti.livorno.it", true }, { "smaltimentorifiuti.milano.it", true }, @@ -111394,62 +127648,81 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smarinintgal.tk", true }, { "smarpshare.com", true }, { "smarriti.it", true }, + { "smart-bezpeka.com", true }, + { "smart-broker.ru", true }, { "smart-cp.jp", true }, + { "smart-fencing.co.uk", true }, { "smart-fixed.ru", true }, { "smart-house.bg", true }, + { "smart-hub.io", true }, { "smart-informatics.com", true }, { "smart-ket.com", true }, { "smart-lab.ch", true }, { "smart-mirror.de", true }, { "smart-mrt.co.il", true }, { "smart-profile.ro", true }, + { "smart-travel.tk", true }, { "smart-tux.de", true }, { "smart-wohnen.net", true }, - { "smart.gov", true }, + { "smart-zona.tk", true }, { "smartacademy.ge", true }, { "smartacademy.pro", true }, { "smartagilesolution.com", true }, { "smartandcom.ch", true }, - { "smartandhappychild.ro", false }, { "smartar.com", true }, { "smartart.gr", true }, { "smartart.tk", true }, { "smartass.space", true }, { "smartass0027.com", true }, + { "smartassembly.tk", true }, + { "smartbase.de", true }, + { "smartbear.com", true }, + { "smartbitcoininvestments.com", true }, { "smartbiz.vn", true }, { "smartblock.cloud", true }, { "smartcar.com", true }, + { "smartcard.tools", true }, { "smartcents.gold", true }, + { "smartcheck.gov", true }, + { "smartchezvous.com", true }, { "smartchoices.ie", true }, - { "smartcleaningcenter.nl", true }, { "smartclothing.pl", true }, { "smartcluster.ga", true }, { "smartcover.tk", true }, { "smartcpa.ca", true }, { "smartdatafusion.jp", true }, { "smartdb.jp", true }, + { "smartdigital.ga", true }, { "smarteco.tk", true }, - { "smartedukasi.co.id", false }, + { "smartedukasi.co.id", true }, { "smarterskies.gov", true }, + { "smartersoft-integra.com", true }, + { "smartersoft.io", true }, + { "smartertowing.com", true }, { "smartest-trading.com", true }, { "smartestate.com", true }, { "smartevals.com", true }, { "smartfaktor.pl", true }, { "smartfit.cz", true }, - { "smartfitkitchen.bg", true }, { "smartfixmarburg.de", true }, + { "smartfons.tk", true }, { "smartfooding.com", true }, { "smartftp.com", true }, { "smartgirledits.com", true }, { "smartgirls.tk", true }, + { "smartglassworld.net", true }, { "smartgrepp.se", true }, { "smartgrid.gov", true }, + { "smartgridsecurity.com", true }, + { "smartgridsecurity.org", true }, { "smartguardzone.kr", true }, + { "smarthalal.de", true }, { "smarthdd.com", true }, { "smarthealthinnovationlab.com", true }, { "smarthome365.nl", true }, { "smarthrms.com", true }, { "smartit.gr", true }, + { "smartius.it", true }, { "smartjoin.style", true }, { "smartland.com", true }, { "smartlandapartments.com", true }, @@ -111457,32 +127730,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smartlandturnkey.com", true }, { "smartleads.tk", true }, { "smartleaklocator.com", true }, - { "smartlend.se", true }, { "smartliferd.ml", true }, { "smartlinecomputers.nl", true }, { "smartlink.sk", true }, + { "smartlist.ga", false }, + { "smartloanhacks.com", true }, { "smartlocksmith.com", true }, { "smartlogreturns.com", false }, { "smartlogstock.com", false }, - { "smartlogtower.com", false }, + { "smartlogtower.com", true }, { "smartlook.cz", true }, + { "smartlooks.es", true }, { "smartmachine.com", true }, + { "smartmail.io", true }, { "smartmail24.de", true }, + { "smartme.pl", true }, { "smartmeal.ru", true }, { "smartmessages.eu", true }, { "smartmessages.net", true }, { "smartmeterfraud.tk", true }, { "smartminibushire.co.uk", false }, + { "smartmodularhoardings.com", true }, { "smartmomsmartideas.com", true }, { "smartnanny.cf", true }, + { "smartnews-smri.com", true }, { "smartnoob.de", true }, { "smartografia.pl", true }, + { "smartoneclub.com", true }, + { "smartours.com", true }, { "smartpanelsmm.com", true }, + { "smartpaperhelps.com", true }, { "smartpatika.hu", true }, + { "smartpayables.com", true }, { "smartpheromones.com", true }, { "smartphone-pliable.wtf", true }, + { "smartphone.nl", true }, + { "smartphonecases.tk", true }, { "smartphonechecker.co.uk", true }, { "smartphonefixen.be", true }, + { "smartphonepliable.co", true }, { "smartphonesolution.tk", true }, { "smartplus.ae", true }, { "smartpolicingplatform.com", true }, @@ -111493,53 +127779,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smartrak.com", true }, { "smartrecruiters.com", true }, { "smartrentacar.ro", true }, + { "smartresumeservices.com", true }, { "smartriotour.com.br", false }, { "smartrise.us", true }, { "smartroofingandsheetmetal.com", true }, + { "smartservices.nl", false }, { "smartshiftme.com", true }, { "smartshop.gr", true }, { "smartshoppers.es", true }, + { "smartshousekeeper.pt", true }, { "smartsitio.com", true }, + { "smartspace.ml", true }, { "smartspace.tk", true }, { "smartsparrow.com", false }, + { "smartsprouts.com", true }, + { "smartsteelus.com", true }, { "smartstep.pt", true }, { "smartsupply.global", true }, { "smartthursday.hu", true }, + { "smarttins.com", true }, { "smartvalor.com", true }, - { "smartvideo.io", true }, - { "smartvitaal.nl", true }, { "smartwank.com", true }, { "smartweb.ge", true }, + { "smartwebportal.co.uk", true }, { "smartwoodczech.cz", true }, { "smartwritingservice.com", true }, { "smartwurk.nl", false }, { "smarty.cz", true }, + { "smartzonemikulov.cz", true }, { "smash-gg.club", true }, + { "smashbros-chile.tk", true }, { "smashbylaney.com", true }, { "smashcooper.tk", true }, { "smashingconf.com", true }, { "smashingmagazine.com", true }, + { "smashnl.tk", true }, { "smashno.ru", true }, - { "smatch.com", false }, + { "smatwebdesign.com", false }, + { "smavesto.de", true }, { "smb-analytics.pw", true }, + { "smb.wiki", true }, { "smb445.com", true }, { "smbabyshop.gr", true }, - { "smbeermen.tk", true }, + { "smbc.co.id", true }, { "smbi-gelblasterhq.com.au", true }, { "smcconsulting.be", true }, { "smcconsulting.eu", true }, + { "smchfujuae.com", true }, { "smcj.xyz", true }, { "smcquistin.uk", true }, { "smd-tlt.ru", true }, + { "smdc.com", true }, { "smdcn.net", true }, + { "smdmetals.com", true }, { "sme-gmbh.com", true }, { "sme-gmbh.net", true }, + { "sme.sk", true }, + { "smedata.sk", true }, + { "smedix.com", true }, { "smeetsengraas.com", true }, { "smelly.cloud", true }, + { "smereka.ua", true }, { "smeso.it", true }, + { "smeta.ml", true }, { "smetak.cz", true }, { "smetana.pro", true }, { "smetbuildingproducts.com", true }, + { "smeweb.com", true }, { "smexpt.com", true }, { "smeys.be", true }, { "smgl.cm", true }, @@ -111551,26 +127857,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smicenter.tk", true }, { "smicompact.com", true }, { "smictecniservi.com", true }, + { "smiilliin.com", true }, + { "smiilliin.site", true }, { "smikom.ru", true }, { "smileback.co.uk", true }, - { "smilecare.ae", true }, - { "smilechic.com", true }, { "smilecliniq.com", true }, { "smilecon.cf", true }, { "smiledirectsales.com", true }, - { "smilemantra.clinic", true }, + { "smiledoctors.com", true }, + { "smileeye.com.tw", true }, + { "smilegenerator.tk", true }, { "smilenwa.com", true }, + { "smileofindia.co.in", true }, { "smilephi.com", true }, - { "smilesondemand.com", true }, { "smilessoftplay.co.uk", true }, + { "smiletimegh.com", true }, + { "smileykylie.com", true }, + { "smileys-emojis.com", true }, { "smileytechguy.com", true }, - { "smileywoodflooring.com", true }, { "smilingmiao.com", true }, { "smime.io", true }, { "smimea.info", true }, { "smipty.cn", true }, { "smipty.com", true }, { "smiraus.cz", true }, + { "smishnik.tk", true }, { "smit.com.ua", true }, { "smith-tech.ga", true }, { "smith.bz", true }, @@ -111583,28 +127894,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smithcountyms.gov", true }, { "smithcountytxtaxrates.gov", true }, { "smithf.red", true }, - { "smithings.com", true }, + { "smithikakart.in", true }, { "smithsanchez.com", true }, + { "smithsonian.gov", true }, { "smithsstational-fpd.gov", true }, { "smithsstational.gov", true }, { "smithsystem.net", true }, + { "smithteresa.tk", true }, + { "smithwealth.com.au", true }, { "smits.com", true }, { "smits.frl", true }, + { "smitsdesigncenter.nl", true }, { "smitsmail.net", true }, - { "smkbpj.edu.my", true }, - { "smkmusaga.sch.id", false }, + { "smittybilt.com", true }, + { "smkkesfambatujajar.sch.id", true }, { "smkn5smg.sch.id", true }, { "smkw.com", false }, { "sml.lc", true }, { "smleaks.com", true }, { "smlk.org", true }, + { "smlstriperfishing.com", true }, { "smltour.net", true }, { "smm.im", true }, { "smm.lu", true }, { "smmcab.ru", true }, { "smmlaba.io", true }, { "smmog.tk", true }, - { "smmpanelbul.com", true }, + { "smmpaketleri.com", true }, { "smmpanelweb.com", true }, { "smmpropaganda.ru", true }, { "smnz.de", true }, @@ -111614,83 +127930,98 @@ static const nsSTSPreload kSTSPreloadList[] = { { "smokeandmirrors.agency", true }, { "smokedrhymez.tk", true }, { "smokefree.gov", true }, + { "smokefreeclinic.com.au", true }, { "smokefreerowan.org", true }, { "smokefreestage.jp", true }, { "smokeping.pl", true }, { "smoker.tk", true }, + { "smokestore.bg", true }, { "smokinghunks.com", true }, + { "smokingtapes.ga", true }, { "smokkelenken.no", false }, - { "smol.cat", true }, { "smolbotbot.com", true }, { "smolensk-i.ru", true }, + { "smolensk.ml", true }, + { "smolensk.tk", true }, { "smolkatours.com", true }, { "smolnikova.tk", true }, + { "smolny.org", false }, { "smoo.st", true }, { "smooth-e.net", true }, - { "smoothgesturesplus.com", true }, + { "smoothambler.com", true }, + { "smoothfreight.ca", true }, { "smoothics.at", true }, { "smoothics.com", false }, { "smoothics.eu", true }, { "smoothics.mobi", true }, { "smoothics.net", true }, { "smoothweblife.tv", true }, + { "smoove.io", true }, { "smoqerhome.ddns.net", true }, { "smorgasblog.ie", true }, { "smoser.eu", true }, - { "smpetrey.com", true }, { "smplace.com", true }, { "smplr.uk", true }, - { "smplu.com", true }, + { "smpnsata.sch.id", true }, { "smpositiva.com", true }, { "smppcenter.com", true }, { "smpred.net", true }, { "smprime.com", true }, { "smrdim.cz", true }, { "smries.com", true }, + { "smrtgeekdevs.com", true }, { "sms-pro.tk", true }, { "sms.storage", true }, + { "sms.to", true }, { "sms1.ro", true }, { "sms72.tk", true }, { "smsalvand.tk", true }, { "smsappointment.com", false }, + { "smsbd.net", true }, { "smsben.com", false }, { "smsbrana.cz", false }, { "smsg-dev.ch", false }, + { "smsinger.com", false }, { "smsk.email", true }, { "smskeywords.co.uk", true }, { "smskmail.com", true }, { "smsprivacy.org", true }, - { "smsstock.tk", true }, - { "smstorems.com.br", true }, + { "smstec.ru", true }, { "smstoreoficial.com.br", true }, + { "smszone.tk", true }, { "smtchahal.com", true }, { "smtcn.cc", true }, { "smtenants.cn", true }, { "smtji.com", true }, - { "smtonline.co", true }, + { "smtnet.com", true }, { "smtouseef.com", true }, { "smtparish.org", true }, { "smtpdev.com", true }, - { "smtpimap.email", true }, + { "smtpserver.dk", true }, { "smuc-koca.si", true }, + { "smudge.ai", true }, { "smuhelper.cn", true }, { "smuncensored.com", true }, { "smurffi.net", true }, { "smurl.tk", true }, { "smusg.com", false }, + { "smutba.se", true }, + { "smutfactor.com", true }, { "smvcm.com", true }, + { "smvpdev.nl", true }, + { "smvpro.dk", true }, { "smx.net.br", true }, { "smxconventioncenter.com", true }, - { "smyrilline.com", true }, + { "smylemouse.com", true }, { "smys.uk", true }, { "sn0int.com", true }, + { "snab-ural.ga", true }, { "snabbacash.no", true }, - { "snabbfoting.com", true }, - { "snabbfoting.se", true }, { "snacdata.com", true }, { "snack-online.com", true }, { "snackbartaapje.com", true }, { "snackbesteld.nl", true }, + { "snackbyincome.sg", true }, { "snacktakos.gr", true }, { "snacky.nl", true }, { "snafarms.com", true }, @@ -111699,6 +128030,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snajdr.online", true }, { "snajdrova.eu", true }, { "snakafya.com", true }, + { "snakeanarchy.tk", true }, { "snakejs.ga", true }, { "snakesandladders.tk", true }, { "snakesolid.nl", true }, @@ -111707,11 +128039,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snapappointments.com", true }, { "snapappts.com", true }, { "snapbuzz.tk", true }, - { "snapchat.com", true }, { "snapfinance.com", true }, { "snapintegrations.net", true }, { "snapkit.com", true }, - { "snapserv.ch", true }, { "snapserv.net", true }, { "snapsh.com", true }, { "snapware.tk", true }, @@ -111727,12 +128057,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snazel.de", true }, { "snazel.ee", true }, { "snazzie.nl", true }, - { "sncdn.com", true }, + { "snco.gov", true }, { "snd-zentrum.de", true }, { "sndbouncycastles.co.uk", true }, { "sndcdn.com", true }, { "snea-kers.tk", true }, { "sneak.berlin", true }, + { "sneakers-sports.tk", true }, { "sneakers88.it", true }, { "sneakersmexs.com", true }, { "sneakpod.de", true }, @@ -111744,14 +128075,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sneed.it", true }, { "sneedit.com", true }, { "sneedit.de", true }, + { "sneeit.com", true }, { "snegozaderzhatel.ru", true }, { "snehasish-chakraborty.com", true }, + { "snekul.net", true }, { "snel4u.nl", true }, { "snelbv.nl", true }, { "snellius.tk", true }, { "snelshops.nl", true }, { "snelwebshop.nl", true }, { "snelwegzen.nl", true }, + { "snem.tk", true }, { "snerith.com", true }, { "snesdev.com", true }, { "snetts.com", true }, @@ -111763,35 +128097,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snh48live.org", true }, { "snic.website", true }, { "sniderman-online.com", true }, + { "sniderman.co.il", true }, { "sniderman.eu.org", true }, { "sniderman.org", true }, { "sniderman.pro", true }, + { "sniderman.us", true }, { "sniderman.xyz", true }, { "sniep.net", true }, { "sniffing.gq", true }, + { "sniffnfetch.com", true }, + { "sniffy.ee", true }, { "snight.co", true }, { "snille.com", true }, - { "snip.city", true }, - { "snip.host", true }, { "snip.software", true }, { "snipdrive.com", true }, + { "sniper.sh", true }, { "snipermarkettiming.com", true }, { "snipl.io", true }, { "snippet.host", true }, { "snippet.ml", true }, { "snippet.wiki", false }, + { "snippetpress.com", true }, { "snitch.rocks", true }, { "snitchnet.tk", true }, { "snitko.pro", true }, { "snizl.com", true }, { "snj.pt", true }, + { "snlianshang.com", true }, + { "snnwes.de", true }, + { "sno-tek.net", true }, { "snoerendevelopment.nl", false }, - { "snohomishsepticservice.com", true }, { "snooker.tk", true }, { "snoopyfacts.com", true }, { "snoot.club", true }, - { "snopyta.org", true }, - { "snorer.com", true }, { "snorerx.com", true }, { "snorgtees.com", true }, { "snoringtreatment.tk", true }, @@ -111799,11 +128137,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snortfroken.net", true }, { "snoska.ga", true }, { "snote.io", true }, + { "snotekbyariens.com", true }, { "snoupon.com", true }, - { "snow-online.com", true }, { "snow-service.it", true }, { "snow.dog", false }, { "snowalerts.nl", true }, + { "snowapparel.us", true }, { "snowatka.com", true }, { "snowboard-break.tk", true }, { "snowboardforum.tk", true }, @@ -111821,11 +128160,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snowhaze.ch", true }, { "snowhaze.com", true }, { "snowman25.de", true }, + { "snowmassvillage.gov", true }, { "snoworld.one", true }, { "snowpak.com", false }, { "snowparties.com", true }, - { "snowpaws.de", true }, - { "snowplane.net", true }, + { "snowpaws.de", false }, { "snowplanet.tk", true }, { "snowplow.forsale", true }, { "snowpro.tk", true }, @@ -111835,29 +128174,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "snowschool.tk", true }, { "snowshoedistrictwv.gov", true }, { "snowsubs.moe", true }, + { "snowvictoria.ga", true }, { "snowy.ink", true }, { "snowy.land", true }, { "snowyluma.com", true }, { "snowyluma.me", true }, + { "snp-media.de", false }, { "snperformance.gr", true }, { "snrat.com", true }, + { "snrd-africa.net", true }, { "snrd.de", true }, { "snrd.eu", true }, { "snroth.de", true }, { "snrub.co", true }, + { "sns-beta.com", true }, + { "sns-dev.com", true }, { "sns-tg.pl", true }, { "sns.hu", true }, - { "snsdomain.com", true }, { "snsirius.cf", true }, + { "snsp.es", true }, + { "snsp.nl", true }, + { "snsp.ro", true }, { "sntial.co.za", true }, - { "snuffstore.de", true }, { "snukep.kr", true }, { "snwsjz.com", true }, + { "snyder-ne.gov", true }, { "snz.pw", true }, - { "so-commerce.com", true }, { "so-link.co", true }, { "so-spa.ru", true }, { "so.is-a-cpa.com", true }, + { "so.ninja", true }, { "soacompanhantes.vip", true }, { "soadultos.com", true }, { "soakgames.com", true }, @@ -111867,28 +128213,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soar-npc.org", true }, { "soaringdownsouth.com", true }, { "soaringtoglory.com", true }, - { "soat.fr", true }, + { "soat.fr", false }, { "soatplus.com", true }, - { "soax.com", true }, + { "soax.com", false }, { "sobakasite.tk", true }, + { "sobaki.tk", true }, { "sobatiment.fr", true }, - { "sobchak.blog", true }, + { "sobchak.ga", true }, { "sobersys.com", true }, - { "sobie.ch", true }, { "sobieray.dyndns.org", true }, { "soblaznenie.ru", true }, { "soblaznenie2.ru", true }, + { "sobranie.mk", false }, { "sobre.tk", true }, { "sobrelixo.tk", true }, - { "sobreperros.org", true }, { "sobreporcentagem.com", true }, { "sobuj.me", true }, - { "soc.com.br", true }, { "soc.net", true }, { "soc247.cloud", true }, { "socal-babes.com", true }, - { "socaliente.fr", true }, { "socbayuc.com", true }, + { "socblock.com", true }, + { "soccer4live.com", true }, + { "soccerking-store.com", true }, { "soccernews.id", true }, { "soccerquarters.tk", true }, { "soccers.fr", true }, @@ -111896,6 +128243,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soccorsostradale.lazio.it", true }, { "soccorsostradale.roma.it", true }, { "socfactor.ru", true }, + { "sochealth.co.uk", true }, { "socheap.win", true }, { "sochi-sochno.ru", true }, { "sochi.tatar", true }, @@ -111904,20 +128252,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sociaalwerknederland.nl", true }, { "sociability.dk", true }, { "social-class.ga", true }, + { "social-directory-list.tk", true }, { "social-engineering.tk", true }, { "social-line.tk", true }, { "social-media-strategy.org.uk", true }, + { "social-net.ir", true }, { "social-network.tk", true }, { "social-work-colleges.com", true }, { "social-work.tk", true }, { "social.com.co", true }, { "socialab.gr", true }, + { "socialace.in", true }, { "socialair.tk", true }, + { "socialarchive.nl", true }, { "socialblaze.com.au", true }, { "socialbook2015.ga", true }, { "socialbook2015.gq", true }, { "socialbook2015.ml", true }, { "socialbook2015.tk", true }, + { "socialcare.wales", true }, { "socialclimb.com", true }, { "socialcredit.icu", true }, { "socialdemo.ga", true }, @@ -111930,32 +128283,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "socialfreak.cf", true }, { "socialgroups.tk", true }, { "socialhams.net", true }, - { "socialhead.io", true }, + { "socialhax.com", true }, { "socialhp.com", true }, { "socialism.tk", true }, - { "socialist-alliance.org", true }, + { "socialist-alliance.org", false }, + { "socialistregister.com", true }, + { "socialistyouth.tk", true }, + { "sociality.io", true }, + { "socializator.tk", true }, + { "socialloots.com", true }, { "socialmarketingday.nl", true }, + { "socialmatch.de", true }, { "socialmedia-manager.gr", true }, + { "socialmediadisruption.com", true }, { "socialmedias.tk", true }, { "socialmeeps.ml", true }, + { "socialnet.ml", true }, { "socialnetworkdemo.tk", true }, { "socialnews.ga", true }, { "socialnitro.com", true }, { "socialnous.co", true }, + { "socialpa.ws", true }, + { "socialplace.net", true }, + { "socialproject.ml", true }, { "socialprotection.gov.bd", true }, { "socials.gq", true }, - { "socialsecrets-coaching.de", true }, { "socialsecurity.gov", false }, + { "socialsolutions.com", true }, { "socialstrata.com", true }, { "socialsurvivalist.net", true }, + { "socialtactics.cf", true }, { "socialtactics.ga", true }, { "socialtactics.gq", true }, { "socialtactics.ml", true }, - { "socialtoolsonline.com", true }, + { "socialtick.club", true }, { "socialtournaments.com", false }, + { "socialtranslation.ga", true }, { "socialtrends.pl", true }, { "socialwave.tk", true }, - { "socialworkout.com", true }, + { "socialworkdegrees.org", true }, { "socialworkout.net", true }, { "socialworkout.org", true }, { "socialworkout.tv", true }, @@ -111968,19 +128334,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "societatis.fr", true }, { "societe-chablaisienne-de-revetements.com", true }, { "societe-chablaisienne-de-revetements.fr", true }, + { "societemaraval.com", true }, + { "societyawards.com", true }, { "societyofbur-q-ua.tk", true }, + { "societyparty.ga", true }, { "socii.network", true }, { "sociobiology.com", true }, - { "sociocosmos.com", true }, + { "sociohosting.es", true }, + { "sociology-bg.gq", true }, { "sociology-schools.com", true }, { "sociologyk.nl", true }, { "sociopampers.com.ar", true }, { "sociopathy.org", true }, { "sociosalafuerza.tk", true }, + { "socious.io", true }, + { "sociusian.gq", true }, { "sockfetish.net", true }, { "sockscap64.com", true }, + { "socksfromholland.com", true }, { "socktopus.io", true }, + { "socomforums.tk", true }, { "soconj.gov", true }, + { "socprime.com", true }, { "socratec-pharma.de", true }, { "socraticsolutions.us", true }, { "socseti.cf", true }, @@ -111990,11 +128365,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "socstar.ml", true }, { "socstation.com", true }, { "soczu.duckdns.org", true }, - { "soda-net.com", true }, + { "soda-net.com", false }, + { "soda.ga", true }, { "sodadigital.com.au", true }, { "sodafilm.de", true }, + { "sodalai.tk", true }, { "sodel-sa.eu", true }, - { "sodelicious.recipes", true }, + { "sodelicious.recipes", false }, { "sodependable.com", true }, { "soderestore.com", true }, { "sodermans.com", true }, @@ -112005,74 +128382,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sodigent.be", true }, { "sodigent.gent", true }, { "sodirace.com", true }, - { "sodiummedia.com", true }, { "sodo.top", true }, { "sodom-metal.tk", true }, - { "sodomojo.com", true }, { "sodrujestvo.tk", true }, { "sodsouthernindiana.com", true }, + { "sodusny.gov", true }, { "soe-server.com", true }, { "soegi-haru.com", true }, { "soellc.com", true }, { "soellner.info", true }, + { "soelt.dk", true }, + { "soelta.com", true }, { "soengen.com", true }, { "soenkem.ddnss.de", true }, { "soepvork.nl", true }, { "sofa-bed.tk", true }, { "sofa-rockers.org", true }, { "sofabedshop.de", true }, + { "sofacamafuton.com.br", true }, { "sofaclean.co.uk", true }, + { "sofasthousebuyers.com", true }, + { "sofdwi.gov", true }, + { "soff.se", true }, { "soffit.com", true }, - { "sofgen.com", true }, { "sofi.codes", true }, - { "sofiadaoutza.gr", true }, { "sofiaestado.com", true }, { "sofialobocera.com", true }, + { "sofianeves.tk", true }, { "sofias.tk", true }, { "sofiavanmoorsel.com", true }, { "sofibox.com", true }, - { "sofidelshop.blog", true }, { "sofiesteinfeld.com", true }, { "sofiesteinfeld.de", true }, - { "sofiesteinfeld.org", true }, - { "sofloridavacationrentals.com", true }, { "sofoco.us", true }, { "sofortcutie24.de", true }, { "sofortimplantate-muenchen.de", true }, + { "sofortindenurlaub.de", true }, { "sofpedia.ro", false }, + { "soft-key.tk", true }, + { "soft-office.tk", true }, + { "soft-resets.com", true }, { "soft-search-system.tk", true }, { "soft.taipei", true }, + { "soft3arbi.com", true }, { "soft41.ru", true }, + { "soft4led.com", true }, { "softandbouncy.co.uk", true }, { "softanka.com", true }, { "softbabyducks.com", true }, { "softbit.pt", true }, { "softblinds.co.uk", true }, { "softchin.ir", true }, + { "softcom.net", false }, { "softcompany.tk", true }, + { "softcomplex.com", true }, { "softconcept.pt", true }, { "softcreatr.com", true }, { "softcreatr.de", true }, { "softekontrack.com", true }, { "softelectronet.tk", true }, + { "softfusion.co.uk", true }, { "softfuture.tk", true }, + { "softhints.com", true }, { "softios.com", true }, { "softizy.com", true }, - { "softly.sk", true }, + { "softlay.com", true }, + { "softline.ru", true }, { "softmas.cl", true }, + { "softnet-consulting.com", true }, + { "softonic-ar.com", true }, + { "softonic-id.com", true }, + { "softonic-th.com", true }, + { "softonic.cn", true }, { "softonic.com", true }, { "softonic.com.br", true }, { "softonic.com.tr", true }, { "softonic.jp", true }, + { "softonic.kr", true }, + { "softonic.nl", true }, { "softonic.pl", true }, + { "softonic.ru", true }, { "softonic.vn", true }, + { "softonit.ru", true }, { "softonline.net", true }, { "softowe.com", true }, { "softpark.cf", true }, + { "softpark.ml", true }, { "softplay4hire.co.uk", true }, - { "softprayog.in", true }, { "softsecmatheodexelle.be", true }, - { "softsite.cl", true }, { "softskills.tech", true }, { "softskin.ga", true }, { "softstack.ru", true }, @@ -112081,17 +128478,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "softview.tk", true }, { "softw.net", true }, { "software-search.com", true }, + { "software-tech.tk", true }, { "software-voor-projecten.nl", true }, { "software.rocks", true }, { "softwarebeveiligingtestdomein.be", true }, { "softwarechris.com", true }, { "softwarecloud.ml", true }, { "softwareclub.tk", true }, - { "softwaregeek.nl", true }, + { "softwarehexe.de", true }, { "softwarepara.net", true }, + { "softwarepatenten.tk", true }, { "softwarepixie.com", true }, + { "softwaresanta.com", true }, { "softwaresecurityandradefernando.be", true }, - { "softwaresolved.com", true }, { "softwaterinc.com", true }, { "softweb-dev.de", true }, { "softwerk-edv.de", true }, @@ -112100,85 +128499,113 @@ static const nsSTSPreload kSTSPreloadList[] = { { "softx.tk", true }, { "sog-gilde.tk", true }, { "sogaro-realestate.de", true }, + { "sogec-digital.fr", true }, { "sogeek.me", true }, { "sogesel.es", true }, + { "sogo.com.hk", true }, { "sogo.com.my", false }, + { "sogola.com", true }, + { "sogoreate-landtrust.org", true }, { "sogravatas.com.br", true }, { "sogravatas.net.br", true }, - { "sogudo.com", false }, { "sogutma.com.tr", true }, { "sohamroy.me", true }, + { "sohanakhan.tk", true }, + { "sohanman.com", true }, { "sohka.eu", true }, { "soia.ca", true }, { "soilegustafsson.fi", true }, { "soillessgeek.com", true }, - { "soin-rebozo.fr", true }, { "soinsparlesmains.fr", true }, { "sointelcom.com.co", true }, { "soinvett.com", false }, { "soissons-technopole.org", true }, { "soji.io", true }, - { "soju-delivery.com", true }, { "sokak-sanati.tk", true }, - { "sokakfotografi.com", true }, { "sokenconstruction.com", true }, { "soket.ee", true }, - { "soko.nl", true }, + { "sokkenkraam.nl", true }, { "soko.reisen", true }, + { "sokolin.com", true }, { "sokolmelnik.tk", true }, + { "sokolovskyi.ml", true }, { "sokolslavkov.tk", true }, - { "sokosport.com", true }, { "sokouchousa.net", true }, { "sokrabatt.se", true }, { "sokretirement.com", true }, { "sol-3.de", false }, { "sol-design.jp", true }, { "sol-negro.tk", true }, + { "sol.de", true }, { "sol24.net", true }, - { "solace.com", true }, - { "solacyre.ch", false }, { "solaland.co.uk", true }, + { "solalnathan.com", true }, { "solalt.com", true }, + { "solana-active.tk", true }, { "solanacasinos.io", true }, - { "solanaroyale.com", true }, + { "solanaroyale.com", false }, + { "solandsimonasphalt.com", true }, { "solanocounty.gov", true }, { "solanowonen.nl", true }, { "solar-electric-propulsion.pl", true }, + { "solarace.tk", true }, { "solaradventures.icu", true }, + { "solarafrica.com", true }, + { "solarandenergyspecialists.com", true }, { "solarbattery.ga", true }, { "solarbynatureinc.com", true }, + { "solarcia.com.br", true }, { "solareagricola.it", true }, { "solarfaa.ir", true }, { "solarfever.ga", true }, + { "solargaming.tk", true }, + { "solarhome.ml", true }, { "solarhome.tk", true }, { "solariilacheie.ro", true }, + { "solarisbank.de", true }, + { "solarisgroup.com", true }, { "solarium.gov", true }, { "solarium.milano.it", true }, { "solarloon.com", true }, - { "solarnatur.es", true }, + { "solaronics.tk", true }, + { "solarpanelquotes.org", true }, + { "solarpanels.tk", true }, { "solarplan-berlin.de", true }, { "solarrights.org", true }, + { "solarscan.com", true }, { "solarseason.ga", true }, { "solarstats.net", true }, { "solarstrom.net", true }, + { "solartek.cf", true }, + { "solartek.ga", true }, { "solartek.gq", true }, { "solartrackerapp.com", true }, + { "solartravel.tk", true }, { "solarwave.tk", true }, + { "solarwind.cf", true }, + { "solati.co", true }, { "solautoescuela.com", true }, { "solaxfaq.com", true }, - { "solbit.xyz", true }, { "solbjer.se", true }, + { "solcloud.eu", true }, + { "solcom.de", true }, { "soldai.com", true }, { "soldamontanhabeachwear.com.br", true }, { "soldarizona.ga", true }, { "soldaten-genealogie.tk", true }, + { "soldbygagan.com", true }, { "solden.be", true }, - { "soldeoutubro.com", true }, + { "soldered.com", true }, { "soldesduck.be", true }, { "soldesduck.ch", true }, { "soldierangels.tk", true }, + { "soldieroftruthpublishing.com", true }, { "soldiersmg.tk", true }, { "sole-erdwaermetauscher.de", true }, + { "soleanos.tk", true }, + { "solechuva.com.br", true }, + { "solectrus.de", true }, + { "soledadmataro.tk", true }, { "soledadpenades.com", false }, { "soleil33.net", true }, { "solemare-hotel.it", true }, @@ -112187,46 +128614,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "solentbubblesandbounce.co.uk", true }, { "solfegiator.ch", false }, { "solfipinformatique.org", true }, + { "solgar.dk", true }, { "soli.cafe", true }, { "solicafe.at", true }, { "solidariaautos.com", true }, - { "solidariedadecultura.pt", true }, { "solidarita-kosovo.net", true }, { "solidarityzone.org", true }, + { "solidform.ml", true }, + { "solidgroundchiro.com", true }, + { "solidhost.cf", true }, { "solidian.com", true }, { "solidimage.com.br", true }, + { "solidincome.ga", true }, { "solidnet.software", true }, { "solidnetwork.org", true }, { "solidpurenonsense.tk", true }, - { "solidrop.net", true }, + { "solidray.co.jp", true }, { "solidshield.com", true }, { "solidsteel.tk", true }, { "solidtuesday.com", true }, + { "solifi.com", true }, { "soligorsk.place", true }, { "solihullcarnival.co.uk", true }, + { "solihullheartsupport.org.uk", true }, { "solihullinflatables.com", true }, { "solihulllionsclub.org.uk", true }, + { "solihullobserver.co.uk", true }, { "solihullpcrepairs.co.uk", true }, { "solikreis-stuttgart.tk", true }, { "solipsists.tk", true }, { "solisrey.es", true }, { "solit.systems", true }, { "solitairenetwork.com", true }, + { "solitary.social", true }, { "solitaryride.com", true }, { "soliten.de", true }, { "soliujing.ml", true }, - { "soliujing.top", true }, + { "solium.com", true }, + { "soliver-group.com", true }, + { "sollah.com", true }, + { "sollahlibrary.com", true }, { "solliv.com", true }, { "solmek.co.uk", true }, { "solnascentepapelaria.com.br", true }, { "solnet.ao", true }, - { "solo-shoes.ru", true }, + { "solntsezaschitnye-ochki.tk", true }, { "solo.com.sa", true }, + { "solobus.com.co", true }, { "solocalcetines.com", true }, { "solochubasqueros.com", true }, + { "solocorse.com", true }, { "solodukhin.tk", true }, { "solofajas.online", true }, { "solofi.fr", true }, + { "sologetaway.ga", true }, { "sologoc.com", true }, { "sologstrand.com", true }, { "sologstrand.dk", true }, @@ -112235,9 +128676,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sologstrand.se", true }, { "soloinfo.it", true }, { "soloingenieria.tk", true }, - { "solomart.online", true }, { "solomidis.tk", true }, { "solomo.pt", true }, + { "solomoncorp.com", true }, { "solomonsklash.io", true }, { "solongandthanksforallthe.fish", true }, { "soloparaguas.com", true }, @@ -112261,48 +128702,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "solostocks.net", true }, { "solostocks.pl", true }, { "solostocks.pt", true }, - { "solovey.su", true }, + { "solovey.su", false }, + { "solovia.ru", true }, { "solovyovalawfirm.com", true }, + { "solsea.io", true }, + { "solsi.ga", true }, { "solsocog.de", true }, + { "solsombra-abdl.com", true }, + { "solsticecam.com", true }, + { "soltanastore.com", true }, { "solucion.gq", true }, { "solucionesihd.com", true }, { "solucionesmk.online", true }, { "solucionupsperu.com", true }, - { "solunci-loznica.tk", true }, + { "solunet.com.ar", true }, + { "soluruse.com", true }, { "solutek.com.au", true }, { "solution24.nl", true }, { "solutionalbum.com", true }, { "solutionmotsfleches.com", true }, + { "solutionpieces.com", true }, { "solutionplumber.com", true }, { "solutions-ii.com", true }, - { "solutions-teknik.com", true }, + { "solutions-it.net", true }, + { "solutions30.com", true }, + { "solutionshosted.de", true }, + { "solutiontutorials.com", true }, + { "solutys-btp-logistic.com", true }, { "solutysmultiservices.com", true }, + { "soluzionefightlist.altervista.org", true }, { "soluzionifightlist.cf", true }, + { "solv.ws", true }, { "solvation.de", true }, { "solvaybank.com", true }, - { "solved.tips", true }, { "solvedapp.io", true }, - { "solvemethod.com", true }, - { "solvewebmedia.com", true }, { "solviejo.tk", true }, { "solvin.com", true }, { "solviq.com", true }, + { "solware.co.uk", true }, { "solwaveovens.com", true }, + { "solweb.co.uk", true }, { "solxsys.com", true }, { "solymar.co", true }, { "soma.com.au", true }, { "somaar.tk", true }, { "somaini.li", true }, - { "somaliagenda.com", true }, { "somaliaonline.com", true }, + { "somalilandtalk.tk", true }, { "somanao.com", true }, { "somautomotivobr.com.br", true }, + { "someapi.de", true }, { "somecrazy.com", true }, { "somedial.ch", true }, { "somedomain.tk", true }, - { "somefe.pt", true }, - { "somehowsomeday.com", true }, { "somehsara.tk", true }, + { "someog.com", false }, { "somerm.com", true }, { "somerprints.co.uk", true }, { "somersetscr.nhs.uk", true }, @@ -112312,31 +128766,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "someserver.cf", true }, { "something-blue.tk", true }, { "something-else.cf", true }, + { "something.pink", true }, { "somethingsimilar.com", true }, { "somethingsketchy.net", true }, + { "somevideotapes.com", true }, + { "somewherenews.cf", true }, { "somewherenews.ga", true }, { "somewherenews.gq", true }, { "somewherenews.ml", true }, + { "somi.nl", true }, { "sominemo.com", true }, { "somix.com", true }, { "soml.best", true }, { "somme.tk", true }, { "sommefeldt.com", true }, { "sommeilsante.com", true }, + { "sommer-reitmajer.de", true }, { "sommerhusudlejning.com", true }, + { "sommerles.no", true }, { "sommerplassen.no", true }, + { "somnam.tk", true }, + { "somni.one", true }, { "somnium.click", true }, - { "somnusoft.com", true }, - { "somnusoft.eu", true }, - { "somnusoft.net", true }, + { "somnus.com", true }, { "somogyivar.hu", true }, - { "somosdefensores.org", true }, { "somosgesath.com", true }, { "somosgratitude.com.br", true }, - { "somoshuemul.cl", false }, { "somoslaarmenia.com", true }, { "somosweb.cf", true }, - { "somoyorkies.com", true }, + { "sompo-intl.com", true }, + { "sompo.com.br", true }, { "somsak.de", true }, { "somuchbetterwithage.com", true }, { "somweyr.de", true }, @@ -112354,8 +128813,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sona-gaming.com", true }, { "sona.fr", true }, { "sonacupalova.cz", true }, - { "sonalkolfiyatlari.com", true }, + { "sonalisharma.co.in", true }, + { "sonar.ga", true }, { "sonaraamat.com", true }, + { "sonarhmx01.serveftp.org", true }, + { "sonarhmx02.serveftp.org", true }, { "sonarsource.com", true }, { "sonate.jetzt", true }, { "sonavankova.cz", true }, @@ -112363,23 +128825,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sonaza.fi", true }, { "sonbilgi.net", true }, { "soncini.ch", true }, + { "soncnaura.si", true }, { "sondebase.com", true }, { "sondemitierra.tk", true }, { "sonder.com.au", true }, - { "sondercare.com", true }, { "sonderfloral.com", true }, - { "sondergaard.de", true }, { "sonderkomission.ch", true }, - { "sondersobk.dk", true }, { "sondoro.tk", true }, { "sondriotoday.it", true }, { "sonerezh.bzh", true }, + { "sonesinafar.tk", true }, + { "sonesisonesi.tk", true }, + { "sonesonesisi.tk", true }, + { "sonet.uz", true }, { "song.ski", true }, { "songclan.tk", true }, { "songdew.com", true }, { "songesdeplumes.fr", true }, { "songlifty.com", true }, { "songslaura.tk", true }, + { "songsonline.tk", true }, { "songsterr.com", true }, { "songsthatsavedyourlife.com", true }, { "songstothesiren.com", true }, @@ -112388,30 +128853,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "songyang.cn", true }, { "songzhuolun.com", true }, { "sonia.ai", true }, - { "sonia.com", true }, - { "sonia.com.au", true }, { "soniaai.com", true }, { "soniaferrer.tk", true }, - { "sonic.ddns.net", true }, + { "sonic.network", true }, { "sonic.sk", false }, { "sonic.studio", true }, { "sonicdoe.com", true }, + { "sonicdx.com.au", true }, { "soniclaunchpad.com", true }, { "soniclink.tk", true }, { "sonicshop.tk", true }, { "sonicwanderer.tk", true }, { "sonicworld.tk", true }, - { "sonimei.cn", false }, + { "sonidoslibertarios.tk", true }, + { "sonik.tk", true }, { "sonimusic.tk", true }, { "soninger.ru", true }, { "sonix.dk", true }, { "sonixonline.com", true }, - { "sonixpro.com", true }, { "sonja-daniels.com", true }, { "sonja-kowa.de", true }, { "sonjaruster.de", true }, - { "sonjoux.com", false }, + { "sonjaundjeromeheiraten.jetzt", true }, + { "sonjoux.com", true }, { "sonkamusic.tk", true }, + { "sonlapc.vn", true }, { "sonmark.ru", true }, { "sonnenbergharrison.law", true }, { "sonnendeal.ml", true }, @@ -112419,6 +128885,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sonnenta.de", true }, { "sonneundstrand.de", true }, { "sonnik-znachenie-sna.cf", true }, + { "sonnik-znachenie-sna.ga", true }, { "sonnik-znachenie-sna.gq", true }, { "sonnik-znachenie-sna.ml", true }, { "sonnik-znachenie-sna.tk", true }, @@ -112428,32 +128895,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sonofsunart.com", true }, { "sonohigurashi.blog", true }, { "sonologic.nl", true }, + { "sonology.tk", true }, { "sonomacounty.gov", true }, - { "sonomacountywriterscamp.com", true }, + { "sonomotors.com", true }, { "sonoratexas.gov", true }, + { "sonosguide.dk", true }, + { "sonraisecurity.com", true }, { "sons.cf", true }, { "sons.tk", true }, + { "sonsight.tk", true }, { "sonsonate.cf", true }, { "sonsonate.tk", true }, - { "sontaycamera.com", true }, + { "sontaycamera.com", false }, { "sony-psvita.ru", true }, - { "sonyashappenings.com", true }, - { "sonypremiumhome.com", true }, + { "sonyazi.com", true }, { "soohealthy.nl", true }, { "soom.ga", true }, { "soom.tk", true }, { "soomee.be", true }, { "soomee1.be", true }, - { "soontm.net", true }, { "soopure.nl", true }, { "soopy.moe", true }, - { "soora.jp", true }, + { "sopelaotaez.tk", true }, { "sopenguin.com", true }, { "soph.jp", true }, + { "soph.tk", true }, { "soph.us", true }, { "sopheos.com", false }, { "sopher.io", true }, - { "sophi.online", true }, { "sophia.com.br", true }, { "sophiaandmatt.co.uk", true }, { "sophiafoundation.org", true }, @@ -112464,54 +128933,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sophiefrutti.gr", true }, { "sophiekush.com", true }, { "sophier.tk", true }, - { "sophiesinclair.com", true }, { "sophomoric.ga", true }, { "sophos.com", true }, + { "sophus.com.br", true }, { "sopilov.tk", true }, { "sopira.ru", true }, { "sopo.me", true }, { "soportelatino.ml", true }, { "sopra.tk", true }, { "soprabalao.com.br", true }, + { "sopriza.com", true }, { "sopronforras.tk", true }, { "soprovise.fr", true }, { "sopsop.tk", true }, { "soquee.net", true }, + { "sor.so", true }, { "sorabi.jp", true }, - { "soracave.com", true }, { "soraharu.com", false }, { "soraiaschneider.com.br", true }, { "sorakumo.jp", true }, { "sorbire.com", true }, { "sorcix.com", true }, { "sorellecollection.com.au", true }, + { "sorellinteriors.com", true }, { "soren.xyz", true }, { "sorenstudios.com", true }, { "sorex.photo", true }, - { "sorgulamauzmani.com", true }, { "sorin.cc", true }, { "sorincocorada.ro", true }, { "sorn.service.gov.uk", true }, { "sornyaki.tk", true }, - { "sorocabacopos.com.br", true }, + { "sorocabacopos.com.br", false }, { "sorpresashop.nl", false }, + { "sorrentofc.com.au", true }, + { "sorrentoparking.com", true }, { "sorridi.xyz", true }, { "sorrowfulunfounded.com", true }, { "sort.land", true }, { "sortandpack.com", true }, { "sortaweird.net", false }, + { "sorted.org.nz", true }, { "sorteiosdotom.com.br", true }, { "sortek.mk", true }, + { "sorteonline.com.br", true }, { "sortirentrenous.com", true }, { "sorubak.com", true }, { "soruly.com", true }, { "soruly.io", true }, + { "soruly.moe", true }, { "soruly.net", true }, { "soruly.org", true }, + { "sorunrehberi.com", true }, { "sorveglianza.roma.it", true }, { "sorwi.gov", true }, { "sorx.tech", true }, { "sorz.org", true }, + { "sos-brigade.org", true }, + { "sos-deratisation.com", true }, { "sos-elettricista.it", true }, { "sos-fabbro.it", true }, { "sos-falegname.it", true }, @@ -112519,24 +128997,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sos-loodgieter.com", true }, { "sos-muratore.it", true }, { "sos.sk", false }, - { "sos.vg", true }, - { "sos.yt", true }, + { "sos.xxx", true }, { "sosafe-awareness.com", true }, { "sosaka.ml", true }, { "sosaka.tk", true }, { "sosecu.red", true }, { "sosedisetka.tk", true }, - { "soseletronica.com.br", true }, { "sosesh.shop", true }, { "sosessaimabeilles.com", true }, - { "sosgate.com", true }, { "soshin.cf", true }, { "sosimple.academy", true }, - { "sosinfotech.com", true }, + { "sosisuka.ga", true }, { "sosko.in.rs", true }, - { "soslsd.org", true }, + { "soslsd.org", false }, { "sosmicro.tk", true }, + { "sosnovka.ga", true }, { "soso.ga", true }, + { "soso.loan", true }, { "soso.ml", true }, { "soso.stream", true }, { "sosoft.tk", true }, @@ -112547,24 +129024,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sospeed.net", true }, { "sosregistration.eu", true }, { "sostacancun.com", true }, - { "soste.fi", true }, - { "sosteam.jp", true }, + { "soste.fi", false }, { "sosteric.si", true }, - { "sostm.org", true }, + { "sosuchki.com", true }, { "sosyalat.com", true }, - { "sot-te.ch", true }, - { "sot.blue", true }, - { "sot.red", true }, + { "sosz.org", true }, + { "sota.sh", true }, { "sotadb.info", true }, { "sotaltamer.it", true }, { "sotar.us", true }, { "soterdev.com", true }, { "sotin-hr.tk", true }, - { "sotiran.com", false }, + { "sotis.bg", true }, + { "sotnya.cf", true }, + { "sotnyk.ml", true }, { "sotoasobi.net", true }, { "sotocine.tk", true }, { "sotolar.com", true }, - { "sotolar.net", true }, { "sotonlgbt.org.uk", true }, { "sotool.dk", true }, { "sotovik.tk", true }, @@ -112575,6 +129051,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sotypicallydutch.nl", true }, { "soubriquet.org", true }, { "soufastnet.com.br", true }, + { "souga.eu.org", true }, { "sougou.com", true }, { "souked.com", true }, { "soukka-seura.fi", true }, @@ -112587,20 +129064,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "souldecorpaints.co.nz", true }, { "soulema.com", true }, { "souletter.com", true }, - { "souleymanecamara.com", true }, { "soulike.tech", true }, { "soulinbusiness.ga", true }, - { "soulmate.dating", true }, + { "soulla.tk", true }, { "soulmating.de", true }, { "soulmusic.tk", true }, + { "soulnatura.es", true }, { "soulogic.com", true }, { "soulpetrol.in", true }, - { "soulplay.com", true }, { "soulpowercoaching.ga", true }, { "soulreapers.tk", true }, + { "soulshare.com", true }, + { "soulshare.net", true }, { "soulshow.tk", true }, + { "soulsinner.tk", true }, { "soulsteer.com", false }, + { "soulunification.com", true }, { "soulveda.com", true }, + { "soulwinning.tk", true }, { "souly.cc", true }, { "soulyi.io", true }, { "soumen.tk", true }, @@ -112609,46 +129090,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soumissionalarme.ca", true }, { "soumya.xyz", true }, { "soumya92.me", true }, + { "sounah.com", true }, + { "sound-gardens.com", true }, { "sound-orpheus.tk", true }, { "sound-recording.org", true }, { "sound-wave.tk", true }, { "sound.as", true }, { "soundabout.nl", true }, { "soundar.eu.org", true }, + { "soundar.net", true }, { "soundbase.tk", true }, { "soundblast.tk", true }, { "soundcache.tk", true }, { "soundcamp.org", true }, + { "soundcharts.com", true }, { "soundclick.com", true }, { "soundcloud-to-mp3.com", true }, { "soundcloud.com", true }, - { "soundcloud.org", true }, + { "soundee.com", true }, { "soundeo.com", true }, { "soundeo.net", true }, + { "soundersmusic.com", true }, { "soundexclusive4ever.tk", true }, - { "soundforsound.co.uk", true }, { "soundgasm.net", true }, { "soundgo.gq", true }, { "soundhunter.xyz", false }, { "soundinthesignals.tk", true }, { "soundlight.tk", true }, + { "soundman.ga", true }, { "soundmix.tk", true }, { "soundmk.ch", true }, { "soundmoney.club", true }, { "soundmoney.page", true }, { "soundmoney.tech", true }, + { "soundoffsignal.com", true }, { "soundonmike.tk", true }, - { "soundorabilia.com", true }, + { "soundproofingideas.com", true }, { "soundprotectionllc.com", true }, + { "soundrecords.tk", true }, + { "soundrelief.com", false }, { "soundresource.tk", true }, { "soundrise.tk", true }, - { "sounds-familiar.info", true }, + { "sounds-resource.com", true }, { "sounds.koeln", true }, { "soundservice.gr", true }, { "soundshepard.tk", true }, { "soundslike.gent", true }, { "soundtrash.tk", true }, - { "soundtruckandautorepair.com", true }, { "soundtube.tk", true }, { "soundwavefestival.tk", true }, { "soundzimega.tk", true }, @@ -112657,31 +129145,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "soungui.net", true }, { "soupbuahtaza.id", true }, { "sour.is", true }, - { "souravbhor.com", true }, + { "sourabhvourabh.com", true }, { "souravbhor.gq", true }, { "souravbhor.ml", true }, { "source-clan.tk", true }, + { "sourceadvisors.com", true }, { "sourceaudio.co.uk", true }, { "sourceaudio.com", true }, { "sourceaudiodetect.com", true }, - { "sourcebox.be", true }, { "sourcecode.hosting", true }, { "sourcecode.love", true }, { "sourcecode.tw", true }, + { "sourceforge.net", true }, { "sourcegraph.com", true }, - { "sourcelair.com", false }, - { "sourcely.net", true }, + { "sourcehut.net", true }, { "sources.tk", true }, { "sourcesdegarrigue.fr", true }, { "sourcexchange.net", true }, { "sourcing4exports.co.uk", true }, { "sourcitec.com", true }, { "souria.tk", true }, - { "souris.ch", false }, { "sourlakepd.gov", true }, - { "sournews.gr", true }, + { "sourmatt.xyz", true }, { "sourraundweb.tk", true }, + { "sourse.co", true }, { "sous-surveillance.net", false }, + { "soushinjo.net", true }, + { "southadamswaterco.gov", true }, { "southafrican.dating", true }, { "southambouncycastle.co.uk", true }, { "southamerican.dating", true }, @@ -112692,30 +129182,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "southbridge-ma.gov", true }, { "southcarolinahealth.tk", true }, { "southdakotahealth.tk", true }, - { "southdakotahealthnetwork.com", true }, { "southdakotanet.tk", true }, { "southeastradiology.com", true }, { "southeastvalleyurology.com", true }, { "southerncross.tk", true }, - { "southerncrossbeauty.com", true }, { "southernforge.com", true }, { "southernlights.cf", true }, { "southernlights.club", true }, { "southernlights.gq", true }, { "southernlights.ml", true }, + { "southernlights.world", true }, { "southernmost.us", true }, + { "southernsecurity.org", true }, { "southernsurgicalga.com", true }, + { "southernvalve.com", true }, { "southernviewmedia.com", true }, + { "southernwatersolutions.com", true }, { "southessexstatus.co.uk", true }, + { "southfieldtownshipmi.gov", true }, { "southflanewsletter.com", true }, { "southfox.me", true }, { "southgatemi.gov", true }, + { "southgatesystems.com", true }, { "southgeorgiacargotrailers.org", true }, { "southjacksonville-il.gov", true }, { "southjerseyhomes.info", true }, + { "southkingstownri.gov", true }, { "southlakenissanparts.com", true }, { "southlaketx.gov", true }, + { "southlandcasino.com", true }, { "southlandurology.com", true }, + { "southmarengo.com", true }, { "southmarengoal.gov", true }, { "southmelbourne.apartments", true }, { "southmill.com", true }, @@ -112728,46 +129225,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "southside-digital.co.uk", true }, { "southside-tuning-day.de", true }, { "southsidebargaincenter.com", true }, + { "southsidebuildingcenter.com", true }, { "southsideplacetx.gov", true }, - { "southsideshowdown.com", true }, + { "southtoowoombahawks.com.au", false }, + { "southwebsterohio.gov", true }, { "southwestkansaslibrarysystem.gov", true }, { "southwestpremierurology.com", true }, { "southwestrda.org.uk", true }, + { "southwesttest.co.uk", true }, + { "southwestwildlife.org", true }, + { "southwickma.gov", true }, { "southwindsor-ct.gov", true }, { "southyorkshire-pcc.gov.uk", true }, { "southyorkshireviolencereductionunit.com", true }, { "soutien-naissance.com", true }, { "souvenirs-gifts.tk", true }, - { "souvian.com", true }, { "souzanabellydance.com", true }, - { "sov-teh.com", true }, + { "sova-center.ru", true }, { "sova.cc", true }, { "sova.st", true }, + { "sova.wiki", true }, { "sovendus.com", true }, { "sovendus.de", true }, { "sovereign.bounceme.net", true }, - { "sovereignartfoundation.com", true }, { "sovereignpcs.com", true }, { "soverin.net", true }, { "sovest.ml", true }, + { "sovet4ik.info", true }, + { "soveti.info", true }, + { "sovetidachniku.info", true }, + { "sovetiogorodniku.info", true }, { "sovhoz.tk", true }, + { "sovmestimost-goroskop.cf", true }, + { "sovmestimost-goroskop.ga", true }, + { "sovmestimost-goroskop.gq", true }, { "sovmestimost-goroskop.ml", true }, + { "sovmestimost-zodiak.gq", true }, { "sovos.com", true }, - { "sovraindebitamento.net", true }, { "sovremenik.tk", true }, + { "sovryn.com", true }, { "sovtech.tk", true }, - { "sowhat.dk", true }, + { "sovxoz.gq", true }, + { "sowget.com", true }, + { "sowhat.dk", false }, { "sowncloud.de", true }, { "sowndfinancial.com", true }, { "sowsmallgarden.com", true }, { "sowtarabiya.com", true }, { "soybase.org", true }, { "soychef.today", true }, + { "soychile.cl", true }, + { "soycomocomo.es", true }, { "soydoula.com", true }, { "soydxn.com", true }, { "soyezonline.fr", true }, { "soyladani.com", true }, + { "soylemeztrading.com", true }, { "soytusitio.com", true }, + { "soyunperro.com", true }, + { "soyuznik.ml", true }, { "soyvigilante.com", true }, { "sozai-good.com", true }, { "sozai.tk", true }, @@ -112778,16 +129294,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sozialismus.tk", true }, { "sozialistische-gruppe.de", true }, { "sozialy.com", true }, + { "sozole.eu", true }, { "sozon.ca", true }, - { "sozoom.kz", true }, { "sp-az.com", true }, { "sp-codes.de", true }, { "sp-dh.com", true }, { "sp-gg.com", true }, { "sp-magic.de", true }, + { "sp-moebel.net", true }, { "sp-pn.com", true }, { "sp-sites.com.au", true }, { "sp.rw", true }, + { "sp03.de", true }, { "sp8ce.co", true }, { "spa-center.tk", true }, { "spaallegretto.com", true }, @@ -112799,16 +129317,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "space-inc.co.jp", true }, { "space-it.de", true }, { "space-mining.cf", true }, + { "space-net.ml", true }, { "space-station.tk", true }, { "space-time-elements.com", true }, { "space-y.cf", true }, + { "space.gov.ae", true }, { "spaceage.mp", true }, { "spaceanimalnutrition.com", true }, { "spaceapi.io", true }, - { "spacebabies.nl", true }, - { "spacebear.ee", false }, + { "spacearound.com", true }, + { "spacebabies.nl", false }, + { "spacebear.ee", true }, { "spacebestnews.tk", true }, { "spacecaps.xyz", true }, + { "spacecityweather.com", true }, { "spacecorp.de", true }, { "spacedance.tk", true }, { "spacedogs.ml", true }, @@ -112822,14 +129344,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spaceint.fr", true }, { "spacelabs.io", true }, { "spacelandpark.ga", true }, + { "spacelift.io", true }, { "spacenerd.it", true }, { "spaceon.tk", true }, { "spacepirates.tk", true }, { "spacepixel.ml", true }, { "spacepunks.de", true }, { "spacerocksmc.tk", true }, + { "spacesedu.com", true }, + { "spaceshells.tk", true }, { "spacestation13.com", true }, { "spacetime.am", false }, + { "spacetriangle.com", true }, { "spaceunique.de", true }, { "spaceunique.eu", true }, { "spacewinner.nl", true }, @@ -112837,6 +129363,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spacivox.com", true }, { "spackmanimages.com", true }, { "spackova.cz", true }, + { "spacomic.com", true }, { "spaconnection.com", true }, { "spaconsulting.it", true }, { "spactostock.com", true }, @@ -112846,24 +129373,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spaghettiwesterns.tk", true }, { "spagobudapest.com", true }, { "spahireleeds.co.uk", true }, - { "spahnandrose.com", true }, { "spaid.xyz", false }, + { "spainemotions.com", true }, + { "spaink.net", true }, { "spainpol.es", true }, { "spajk.cz", true }, + { "spalding-labs.com", true }, { "spaldingwall.com", true }, { "spalnobelyo.com", true }, { "spaltron.net", true }, - { "spam.lol", true }, { "spamasaurus.com", true }, { "spamcage.com", true }, { "spamdrain.com", true }, { "spamedica.com.co", true }, + { "spamhelp.org", true }, { "spamhunter360.gq", true }, + { "spamlinks.net", true }, { "spamloco.net", true }, { "spammable.com", true }, { "spamtuning.tk", true }, { "spamty.eu", true }, - { "spamwc.de", true }, { "spanch.cf", true }, { "spanch.ga", true }, { "spanch.gq", true }, @@ -112876,67 +129405,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spanchelele.tk", true }, { "spanda.io", true }, { "spandrusyszyn.com", true }, + { "spanglishls.com", true }, { "spanien.guide", true }, - { "spanier.es", true }, + { "spanischunterricht.tk", true }, { "spanishblackboard.com", true }, { "spanishdogs.tk", true }, + { "spanishenglish.net", true }, { "spanishnewsarticles.tk", true }, { "spanishnow.tk", true }, - { "spanjeautohuur.nl", true }, + { "spankmonster.com", true }, { "spanmass-portal.org", true }, + { "spanner.tk", true }, { "spanner.works", true }, + { "spanpine.gq", true }, { "spanstindrundt.no", true }, { "spantrix.com", true }, { "spanyolul.hu", true }, + { "spar-dich-frei.com", true }, + { "spar-ics.com", true }, { "spar-ni.co.uk", true }, + { "spar.at", true }, + { "spar.hr", true }, + { "spar.hu", true }, + { "spar.si", true }, { "sparanoid.blog", true }, { "sparanoid.com", true }, { "sparanoid.net", true }, { "sparanoid.network", true }, { "sparanoidstatus.com", true }, + { "sparatryggt.se", true }, + { "sparebusiness.com", true }, { "sparendirekt.at", true }, { "spargrancanaria.es", true }, { "spark.ai", true }, { "sparkai.co", true }, { "sparkandglass.com", true }, - { "sparkandpook.com", true }, { "sparkar.com", true }, { "sparkasse.de", true }, { "sparkbase.cn", true }, + { "sparkeddigital.ca", true }, { "sparkforautism.org", true }, + { "sparkimg.nl", true }, + { "sparkingscala.com", true }, { "sparkl.fm", true }, + { "sparklabs.com", true }, { "sparklark.com", true }, { "sparklatvia.lv", true }, + { "sparkleapp.com", true }, { "sparklebastard.com", true }, - { "sparklesdelivery.com", false }, { "sparklesvt.com", true }, - { "sparkletowels.com", false }, + { "sparkletowels.com", true }, { "sparklewindowcleaners.co.za", true }, - { "sparklingessentials.ga", true }, { "sparklingloungecampiglio.it", true }, - { "sparklyfairy.co.nz", false }, + { "sparklyfairy.co.nz", true }, { "sparkplug.tk", true }, { "sparkresearch.net", true }, { "sparksga.gov", true }, - { "sparkweb.com.au", true }, - { "sparkwood.org", true }, { "sparkz.no", true }, { "sparmedo.de", true }, { "sparprofi.at", true }, { "sparrius.com", true }, { "sparrowwallet.com", true }, { "sparta-en.org", true }, + { "sparta-szczekociny.tk", true }, { "sparta-upice.tk", true }, { "sparta.ee", true }, - { "spartac.be", true }, { "spartacuslife.com", true }, { "spartaermelo.nl", true }, + { "spartamet.tk", true }, { "spartan300.tk", true }, - { "spartankids.in", true }, - { "spartantheatre.org", true }, + { "spartanavenue.com", true }, + { "spartanis.tk", true }, { "sparvagn.tk", true }, + { "sparx.dog", true }, { "spasem-park.tk", true }, { "spasicilia.it", true }, + { "spasskellner-comedykellner.ch", true }, + { "spatialflunky.one", true }, { "spatiugratis.tk", true }, { "spatter.cf", true }, { "spatter.tk", true }, @@ -112949,95 +129494,131 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spazturtle.co.uk", true }, { "spazzacamino.roma.it", true }, { "spb-xiaomi.ru", true }, - { "spb.ooo", false }, + { "spbatelec.fr", true }, + { "spbelect.info", true }, + { "spbelect.org", true }, + { "spbet99.com", true }, + { "spbfavourite.ru", true }, + { "spbgorod.ru", true }, { "spbot.ml", true }, - { "spbven.com", true }, + { "spcconnect.com", true }, + { "spclinic.pt", true }, { "spcollege.edu", true }, + { "spconsult.com.br", true }, { "spctech.click", true }, { "spd-porta-westfalica.de", true }, { "spd-porta-westfalica.eu", true }, + { "spd15revision.gov", true }, { "spdepartamentos.com.br", true }, { "spdf.net", true }, { "spdfund.org", true }, { "spdillini.com", true }, + { "spdrdng.com", true }, { "spe.org.co", true }, { "speac.jp", true }, { "speacock.co.uk", true }, { "speacock.uk", true }, + { "speak-polish.com", true }, + { "speak.nl", true }, { "speak.software", true }, + { "speakandgo.education", true }, { "speakeasy.co", true }, { "speaker-animateur.com", true }, { "speakermatch.com", true }, { "speakersbusiness.com", true }, { "speakersden.tk", true }, + { "speakersforschools.org", true }, { "speakertwpmi.gov", true }, + { "speaklikeapro.org", true }, { "speakthewordaudio.com", true }, - { "spec-auto.com.ua", true }, + { "spear.ga", true }, + { "spec-auto.com.ua", false }, { "spec-ranking.pl", true }, { "specdrones.us", true }, + { "specflow.org", true }, + { "special-education-degree.net", true }, { "special-equipment.tk", true }, + { "special-ops.org", true }, { "specialcameras.tk", true }, + { "specialcounsel.com", true }, { "speciale.cf", true }, + { "specialeffect.tk", true }, + { "specialelectronics.tk", true }, + { "specialisedhealth.com.au", true }, + { "specialist.srv.br", true }, + { "specialistskin.com.sg", true }, { "specialized-hosting.eu", true }, { "specialnoise.tk", true }, - { "specialprojectsdesk.com", true }, + { "specialofficesupplies.tk", true }, + { "specialplasticparts.com", true }, { "specialproperties.com", true }, { "specialsite.tk", true }, { "specialtechnique.tk", true }, { "specialtyalloys.ca", true }, { "specialtyjets.ca", true }, - { "specialtyrigging.com", true }, { "specialworld.ml", true }, { "speciauxquebec.com", true }, { "speciesism.com", true }, + { "specifications-pro.com", true }, { "specificenergy.com", true }, { "speciosapro.com", true }, + { "speckle.systems", true }, { "speckrot.ru", true }, { "specks.tk", true }, + { "specopssoft.com", true }, + { "specprawnik.pl", true }, + { "specs-tech.com", true }, { "specsdot.ga", true }, { "spectacles.com", true }, { "spectemur.tk", true }, { "spectrafox.com", true }, - { "spectraspatial.com", true }, + { "spectre-network.tk", true }, { "spectrocoin.com", true }, { "spectrosoftware.de", true }, { "spectrum-markets.com", true }, { "spectrum.gov", true }, + { "spectrum3d.ru", true }, { "spectrumelectrical-brisbane.com.au", true }, - { "spectrumtheatreaustin.org", true }, + { "spectrumtexas.net", true }, { "spediscifiori.com", true }, { "spedizioni.roma.it", true }, - { "speech-balloon.com", true }, { "speechdrop.net", true }, - { "speechlesshairstyles.co.uk", true }, { "speechmate.com", true }, { "speechmore.ml", true }, + { "speechpathologygraduateprograms.org", true }, + { "speechpathologymastersprograms.com", true }, { "speed-bonus.tk", true }, { "speed-strike.tk", true }, + { "speed.tk", true }, + { "speed24.re", true }, + { "speedable.net", true }, + { "speedcam.tk", true }, { "speedcubing.tk", true }, { "speeddate.it", false }, { "speeddating.mx", true }, + { "speeder-vpn.tk", true }, { "speeder.cf", true }, { "speeder.one", true }, { "speeders.cf", true }, { "speeders.ga", true }, - { "speedhost.com.br", true }, + { "speedexam.net", true }, { "speedhoundz.com", true }, { "speedleads.dk", true }, { "speedlearning.ml", true }, { "speedlearningapp.com", true }, { "speedlearningapp1.com", true }, { "speedliner.com", true }, + { "speedmailer.nl", true }, { "speedof.me", true }, { "speedracer.ca", true }, { "speedsvip.cc", true }, - { "speedsvip.net", true }, { "speedtailors.com", true }, { "speedtemplate.de", true }, { "speedtest-russia.com", true }, { "speedvitals.com", true }, { "speedwaybring-proposal.cf", true }, { "speedwaybusinesspark.com", true }, + { "speedwell.pt", true }, { "speedwp.ch", true }, { "speedychat.it", false }, { "speedynews.ml", true }, @@ -113045,70 +129626,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "speedzone.bg", true }, { "speeleninstallatietechniek.nl", true }, { "speelfabriek.tk", true }, - { "speeli.com", true }, - { "speeltoneel.nl", true }, - { "speerpunt.info", true }, { "speets.ca", true }, + { "spegeltankar.tk", true }, { "speich.net", true }, - { "speights-law.com", true }, { "spek.tech", true }, + { "spekit.com", true }, { "spelaspelautomater.ga", true }, { "speleo-explo.fr", true }, { "speleo.live", true }, { "speletrodomesticos.com.br", true }, - { "spellbound.ink", true }, { "spellcheck24.net", true }, { "spellchecker.net", true }, { "spellchecksquatting.com", true }, { "spellic.com", true }, { "spelling.ml", true }, + { "spellmanamp.com", true }, { "spencernc.gov", true }, + { "spencerscherer.com", true }, + { "spend.cloud", true }, { "spendable.money", true }, { "spendd.co", true }, + { "spenderservice.net", true }, { "spendesk.com", true }, + { "spendmenot.com", true }, { "spendo.gq", true }, { "spendwise.com.au", true }, - { "spendyourcoins.net", true }, { "spenglerei-shop.de", true }, { "spenny.tf", true }, { "spensix-pekalongan.tk", true }, { "sperandii.it", true }, { "sperformance.shop", true }, - { "spermosens.com", true }, { "spero.solutions", true }, + { "sperrmuell-berlin.de", true }, { "sperrstun.de", true }, { "spertto.com", true }, { "spes.solutions", true }, + { "spescaperoom.ir", true }, { "spesys-services.fr", true }, + { "spetsialist-po-zakupkam.ru", true }, { "spetsialist.cf", true }, { "spetskabel.ru", true }, { "spettacolocame.ga", true }, - { "spettacolodesign.com", true }, { "speventos.es", true }, { "spewingmews.moe", true }, { "speww.com", true }, - { "spfl.org.au", true }, - { "sphera.com", true }, + { "spfusion.com", true }, + { "sphaeristerium.it", true }, { "sphere-realty.com", true }, { "sphereblur.com", true }, { "spherejoias.com.br", true }, + { "sphericalmagic.com", true }, { "sphericalvision.cz", true }, { "sphido.org", false }, + { "spholdings.us", true }, { "sphynx-cats.com", true }, - { "sphynx.vn", true }, { "sphynxboyz.com.au", true }, + { "spicandspanroofrestoration.com.au", true }, { "spice-club.tk", true }, + { "spicegirlschart.tk", true }, { "spiceislandhome.com", true }, { "spicejungle.com", true }, + { "spicelandcorporation.com", true }, { "spicemail.cc", true }, - { "spicemoney.com", true }, - { "spicerack.co.uk", true }, + { "spicemoney.com", false }, + { "spicerack.co.uk", false }, { "spicerack.uk", true }, - { "spiceywraps.co.uk", true }, + { "spichki.tk", true }, { "spicture.in", true }, { "spicydog.org", true }, { "spicydog.tk", true }, { "spicymatch.com", true }, + { "spicysubject.com", true }, { "spicywombat.com", true }, { "spidercrabs.tk", true }, { "spidergymrotterdam.tk", true }, @@ -113116,23 +129704,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spidermanitalia.tk", true }, { "spidernet.tk", true }, { "spideroak.com", true }, + { "spiderprotect.com", true }, { "spiders.org.ua", true }, { "spidersweb.cf", true }, + { "spidersweb.ga", true }, { "spidersweb.gq", true }, { "spidertechpromotions.com", true }, - { "spidometrus.ru", true }, - { "spiegels-op-maat.nl", false }, + { "spidometr.ml", true }, + { "spiegelingenblog.nl", true }, + { "spiegels-op-maat.nl", true }, { "spieka.info", true }, { "spielautomaten.cf", true }, { "spielbankspezialist.com", true }, + { "spielcasinos.com", true }, { "spiele-gewinnspiele.tk", true }, + { "spielefant.de", true }, { "spielezar.ch", true }, { "spielgeld.tk", true }, { "spielland.ch", true }, { "spiellawine.de", true }, { "spielmit.com", true }, { "spieltexte.de", true }, - { "spielzeugpistolen.de", true }, { "spiet.nl", true }, { "spiffsearch.com", true }, { "spiga.ch", false }, @@ -113144,13 +129736,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spikelands.com", true }, { "spilka-dyplomativ.tk", true }, { "spillbasen.no", true }, - { "spillefuglen.com", true }, { "spillersfamily.net", false }, { "spillforum.no", true }, { "spillhosting.no", true }, { "spillmaker.no", false }, { "spilnu.dk", true }, - { "spiludennemid.com", true }, + { "spin.city", true }, + { "spinal.ga", true }, + { "spinbetter.com", true }, + { "spinbetter.life", true }, + { "spinbetter.online", true }, + { "spincity-casino.com", true }, { "spindelnet.dk", true }, { "spinderella.tk", true }, { "spindle.com.ph", true }, @@ -113158,23 +129754,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spindrel.com", true }, { "spinecomms.com", true }, { "spinemexin.tk", true }, + { "spinnbox.com", true }, { "spinner.dnshome.de", true }, { "spinning-portugal.com", true }, { "spinolamediation.com", true }, { "spinpay.com.br", true }, + { "spins.city", true }, { "spins.fedoraproject.org", true }, + { "spinscity-casino.info", true }, + { "spinscity.club", true }, + { "spinscity.info", true }, + { "spinscity.net", true }, + { "spinscity777.info", true }, { "spintracer.de", true }, - { "spira.kiev.ua", true }, - { "spiralstabilization.com", true }, - { "spirax.tk", true }, + { "spireat.it", true }, { "spirella-shop.ch", true }, + { "spirent.com", true }, { "spirit-hunters-germany.de", true }, + { "spirit1019.com", true }, { "spirit55555.dk", true }, { "spiritbionic.ro", true }, + { "spiritdesigns.tk", true }, { "spiritedengineers.tk", true }, { "spiritous.cf", true }, { "spiritscorp.ddns.net", true }, - { "spiritshack.co.uk", true }, + { "spiritual.codes", true }, { "spiritual.dating", true }, { "spiritualife.net", true }, { "spiritualites.ch", false }, @@ -113183,6 +129787,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spiritualvybz.com", true }, { "spiritworld.ml", true }, { "spiro.se", true }, + { "spiski-domenov.tk", true }, + { "spisochek.tk", true }, + { "spisok-domenov.tk", true }, { "spit.com.au", true }, { "spitalbuhusi.ro", true }, { "spitalulbuzau.ro", true }, @@ -113190,13 +129797,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spitfireuav.com", true }, { "spithoven.tk", true }, { "spjaet.dk", true }, + { "splashily.gq", true }, { "splashstoretw.com", true }, + { "splatnet3.net", true }, { "splatprofcare.com", true }, + { "splconsulenza.it", true }, { "spleis.no", true }, { "splendadent.it", true }, - { "splendidspoon.com", true }, + { "splendidspoon.com", false }, { "splendorservizi.it", true }, + { "splex.com", true }, { "spli.co", true }, + { "splibrary.tk", true }, { "splikity.com", true }, { "splimtechco.tk", true }, { "splintercake.tk", true }, @@ -113213,25 +129825,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "splosh.me", true }, { "splunk.net", true }, { "splytech.io", true }, + { "spm-servis.tk", true }, { "spmax.design", true }, - { "spmswiss.com", true }, + { "spmf.org.sg", true }, + { "spmttest.azurewebsites.net", true }, { "spn-it.de", true }, { "spnitalianfestival.com", true }, { "spnsv.com", true }, { "spocool.com", true }, - { "spode.co.za", true }, { "spodelime.com", true }, { "spofia.nu", true }, { "spokanecounty.gov", true }, - { "spokaneexteriors.com", true }, + { "spokanevalleywa.gov", true }, + { "spokeoaffiliates.com", true }, { "spokesly.com", true }, { "spolekatelier.cz", true }, - { "spolshy.com.ua", true }, { "spoluck.ca", true }, - { "spolwind.de", true }, + { "spolwind.de", false }, { "spom.net", true }, { "sponc.de", true }, - { "sponec.com", true }, { "spongebobwiki.tk", true }, { "sponsor.software", true }, { "spoofhaus.com", true }, @@ -113239,61 +129851,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spookquest.com", true }, { "spooks.ga", true }, { "spookyinternet.com", true }, + { "spoonnspice.com", true }, { "spoorcam.nl", true }, + { "sporadesnews.gr", true }, { "sporenvanslavernijutrecht.nl", true }, { "sporki.fun", true }, { "sporq.de", true }, + { "sporstball.com", true }, + { "sport-attitude.com", true }, { "sport-in-sundern.de", true }, { "sport-news.ml", true }, { "sport-news24hs.tk", true }, + { "sport-obzor.tk", true }, + { "sport-online-ru.cf", true }, { "sport-potreby.cz", true }, { "sport-potreby.sk", true }, + { "sport-school.tk", true }, { "sport-socken.net", true }, + { "sport-tv-guide.live", true }, + { "sport1ne.com", true }, { "sport24.by", true }, + { "sport4sd.com", true }, { "sportabatese.tk", true }, { "sportabee.com", false }, { "sportadictos.com", true }, - { "sportakrobatik.at", true }, { "sportal.se", true }, + { "sportalliance.com", true }, { "sportboot.mobi", true }, { "sportcenter.ga", true }, { "sportcenter.ml", true }, { "sportchirp.com", true }, { "sportclipsfranchise.com", true }, + { "sportcompactwarehouse.com", true }, + { "sportcucc.hu", true }, { "sportda.tk", true }, - { "sporter.com", true }, + { "sporte3q.com", true }, + { "sportedy.com", true }, + { "sporter.com.hr", true }, { "sportfits.at", true }, { "sportfits.de", true }, { "sportfits.eu", true }, { "sportfogadas.tk", true }, { "sporthotel-rasen.com", true }, { "sportify-design.fr", true }, + { "sportihome.com", true }, + { "sportinfon.cf", true }, { "sportingclubdacruz.pt", false }, { "sportivo.cf", true }, { "sportivo.ga", true }, { "sportivo.tk", true }, - { "sportlesplanner.be", true }, { "sportli.sk", true }, { "sportlinks.tk", true }, { "sportllux.com.br", true }, + { "sportmedia.ga", true }, { "sportmultimedia.pt", true }, - { "sportmundschutz-info.de", true }, { "sportnesia.com", true }, { "sportnn.tk", true }, { "sporto24.ml", true }, - { "sportosistemos.lt", true }, { "sportovni.site", true }, { "sportovnidum.cz", true }, + { "sportovnivozy.cz", true }, { "sportparks.com", true }, { "sportparks.org", true }, { "sportpiacenza.it", true }, { "sportplaatje.nl", false }, { "sportposch.com", true }, { "sportprint.hr", true }, + { "sportraucher.tk", true }, + { "sportrent.it", true }, { "sports-colleges.com", true }, { "sports-equipmen.tk", true }, + { "sports-news-today.ml", true }, { "sports-online.cf", true }, { "sports-sites.ml", true }, + { "sports-wear.tk", true }, { "sports.dating", true }, { "sportsandnews.tk", true }, { "sportsbookpromocodes.com", true }, @@ -113301,15 +129932,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sportschoolgeelhoed.nl", true }, { "sportsdans.tk", true }, { "sportsdeck.tk", true }, - { "sportsgraphing.com", true }, + { "sportsdestinations.com", true }, { "sportskibat.tk", true }, { "sportsmagy.com", true }, { "sportsmania.tk", true }, { "sportsmansblog.com", true }, { "sportsmashup.com", true }, - { "sportsmaximus.com.br", true }, + { "sportsmax.tv", true }, { "sportspainmanagementnyc.com", true }, { "sportspassbremen.de", true }, + { "sportspeople.com.au", true }, { "sportstips.tk", true }, { "sportstreetstyle.com", true }, { "sportsxplay.com", true }, @@ -113317,44 +129949,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sporttomorrow.com", true }, { "sporttown.it", true }, { "sportvereine.online", true }, + { "sportverzorging.tk", true }, { "sportvision.ml", true }, { "sportvissenfun.tk", true }, - { "sportwetten-anbieter.com", true }, + { "sportwars.net", true }, + { "sportwette.net", true }, + { "sportwettenbonus.de", true }, { "sportwettenschweiz.net", true }, { "sportxt.ru", false }, { "sportygirlsjewels.ga", true }, { "sportztalk.com", true }, - { "spot-lumiere-led.com", true }, + { "sporyayinevi.com", true }, + { "spot-cleaner.tk", true }, { "spot-pro.jp", true }, + { "spotifycodes.com", true }, { "spotifyfreetrial.co.uk", true }, { "spotifytop.me", true }, - { "spotlabs.uk", true }, + { "spotless-londoncleaningcompany.com", true }, { "spotlessohio.com", true }, + { "spotlight.com", true }, { "spotlightsrule.com", true }, { "spotonlive.dk", true }, + { "spotpetins.com", true }, + { "spotpetinsurance.ca", true }, + { "spotpriskollen.se", true }, { "spotsee.io", false }, - { "spotsolutions.com", true }, { "spotswoodvet.com", true }, { "spotsylvaniacounty-va.gov", true }, { "spotsylvaniacountyva.gov", true }, - { "spottedfoxdigital.com", true }, + { "spottedfoxdigital.com", false }, { "spottedpenguin.co.uk", true }, { "spotupload.com", true }, { "spotworld.co", true }, { "spotypal.com", true }, { "spotzlight.cf", true }, { "spotzlight.tk", true }, + { "spowtr.com", true }, + { "spp.co", true }, { "sppin.fr", true }, { "sppit.com", true }, { "spr.id.au", true }, { "sprachenlernen24.org", true }, { "sprachfreudehoch3.de", true }, { "sprashivalka.com", true }, + { "spravka-internet.tk", true }, + { "spravka.tk", true }, { "spravki.cf", true }, + { "spravochnick.ru", true }, { "sprawdz-nip.pl", true }, + { "sprawdzanie-pozycji.pl", true }, { "sprax2013.de", true }, { "sprayontv.com", false }, - { "spreadsheetgear.com", true }, + { "spreadsheetconverter.co", true }, { "spreadsheets.google.com", true }, { "spreadshirt.at", true }, { "spreadshirt.be", true }, @@ -113377,49 +130023,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spreadshirt.se", true }, { "spreadthejam.tk", true }, { "spreadthenews.eu", true }, + { "spreaf.shop", true }, { "spreed.me", true }, + { "spribe.co", true }, + { "spribe.io", true }, + { "spribe.net", true }, + { "spribe.tech", true }, + { "spribegaming.com", true }, { "spricknet.de", true }, { "sprietlopen.tk", true }, { "sprillerer.tk", true }, + { "springbaystudio.com", true }, + { "springbreak.it", true }, { "springdalewi.gov", true }, { "springerundpartner.de", true }, { "springfieldbricks.com", false }, + { "springfieldchartertownship.gov", true }, + { "springfieldneurological.com", true }, + { "springfieldsd.gov", true }, { "springfieldvt.gov", true }, + { "springgrillhouse.com", true }, + { "springgrovepa.gov", true }, { "springhillmaine.com", true }, { "springhow.com", true }, + { "springlakemi.gov", true }, { "springlanguages.com", true }, - { "springmountaindistrict.org", true }, + { "springportmi.gov", true }, { "springportny.gov", true }, { "springsoffthegrid.com", true }, + { "springspeedshop.com", true }, { "springtxcarpetcleaning.com", true }, - { "sprintcv.com", true }, { "sprintkitchen.com", true }, { "sprintlee.com", true }, { "sprintswac.tk", true }, + { "spriterinc.com", true }, + { "spriters-resource.com", true }, { "spritmonitor.de", true }, { "spritsail.io", true }, + { "sprizzy.com", true }, { "sprock.io", false }, - { "spron.in", true }, + { "sprocktech.com", true }, + { "sprogress.uz", true }, { "sprossen-keimlinge.de", true }, { "sprossenwand.de", true }, - { "sprout24.com", true }, { "sproutsandstems.com", true }, + { "sproutstudio.com", true }, + { "sproutstudiostaging.com", true }, { "sproutways.com", true }, + { "sprt.pl", true }, { "sprucecreekclubs.com", true }, { "sprucecreekgcc.com", true }, { "spruces.gq", true }, { "sprucingupmamahood.com", true }, - { "sprueche-liste.com", true }, { "sprueche-zum-valentinstag.de", true }, { "sprueche-zur-geburt.info", true }, { "sprueche-zur-hochzeit.de", true }, { "sprueche-zur-konfirmation.de", true }, - { "spruijtparket.nl", true }, { "sprutech.de", true }, { "sps-lehrgang.de", true }, - { "spsidahoinc.com", true }, { "spslawoffice.com", true }, { "spstaticfiles.com", true }, + { "spstechnical.com", true }, { "spt.tf", true }, { "spthk.com", true }, { "sptk.org", true }, @@ -113428,20 +130092,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "spufpowered.com", true }, { "spur.com.br", true }, { "spurghi.roma.it", true }, + { "spurstark.de", true }, { "spurto.in", true }, { "sputnik1net.org", true }, + { "spx.com", true }, { "spy-net.tk", true }, { "spycam.hopto.me", true }, { "spychala-it.de", true }, + { "spyclub.tk", true }, { "spydar007.com", true }, { "spydar007.net", true }, { "spydar007.wiki", true }, { "spydersec.com", true }, - { "spykedigital.com", false }, + { "spypornone.com", true }, { "spyprofit.ru", true }, + { "spyra.rocks", true }, { "spyroszarzonis.com", true }, { "spyse.com", true }, { "spytrash.tk", true }, + { "sq0z.ovh", true }, + { "sq3dmv.pl", true }, { "sqalogic.com", true }, { "sqap.pt", true }, { "sqclick.com", true }, @@ -113449,26 +130119,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sqills.com", true }, { "sql-injection.cz", true }, { "sql-injection.rocks", true }, + { "sql-oem.com", true }, { "sql-query-tool-exact-online.nl", true }, { "sql-query-tool.com", true }, { "sql-und-xml.de", true }, { "sql.bi", true }, { "sqlapius.net", true }, { "sqlbi.com", true }, + { "sqldbm.com", true }, { "sqli.cz", true }, { "sqli.rocks", true }, { "sqlinjection.cz", true }, { "sqlinjection.rocks", true }, { "sqliteonline.com", true }, { "sqlwrapper.com", true }, + { "sqmin.tk", true }, { "sqr-training.com", true }, - { "sqreemtech.com", true }, { "sqrl.ch", true }, { "sqroot.eu", true }, { "sqsd.xyz", true }, { "squad.fr", true }, - { "squality2.xyz", true }, + { "squadco.com", true }, + { "squadgames.ru", true }, + { "squalesdechatou.org", true }, { "squardllc.ml", true }, + { "square-gamers.tk", true }, { "square-gaming.org", false }, { "square-phone.com", true }, { "square-src.de", false }, @@ -113479,6 +130154,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "square.ly", true }, { "square.mx", true }, { "square.site", true }, + { "squarecdn.com", true }, + { "squaredancedance.tk", true }, { "squaredseven.com", true }, { "squaredtechnologies.com", true }, { "squareeye.com", true }, @@ -113487,12 +130164,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "squaregift.com", true }, { "squaregift.net", true }, { "squaregift.org", true }, + { "squareinchhome.com", true }, + { "squareincircle.me", true }, { "squareinstallments.com", true }, { "squareinvite.com", true }, { "squareinvoices.com", true }, { "squarelab.it", true }, { "squaremktg.com", true }, - { "squaremktgstaging.com", true }, { "squarenoid.com", true }, { "squareoffer.com", true }, { "squareonebgc.com.ph", true }, @@ -113503,74 +130181,93 @@ static const nsSTSPreload kSTSPreloadList[] = { { "squarestagingexternal.com", true }, { "squareup.com", true }, { "squareupsandbox.com", true }, - { "squarewave.cloud", true }, { "squattra.com", true }, { "squeakie.club", true }, { "squeaksscalesandtails.com", true }, { "squeaky.services", true }, { "squealing-filth.tk", true }, { "squeezemetrics.com", true }, + { "squelcher.cf", true }, { "squibby.ml", true }, { "squid.gay", true }, + { "squidnovels.tk", true }, { "squido.ch", true }, { "squidparty.com", true }, { "squids.space", true }, + { "squiresinsurance.net", true }, { "squirex2.com", true }, { "squirtingpussygirl.com", true }, - { "squirtlesbians.net", true }, { "squirtqueen.org", true }, { "sqxb0.ga", true }, { "sr-33.com", true }, + { "sr-f.tk", true }, { "sr.ht", true }, - { "sr2.uk", true }, { "sr33.com", true }, { "sr7store.com.br", true }, { "sr88.co.uk", true }, { "sr88.me.uk", true }, { "srae.me.uk", true }, + { "sram.top", true }, { "srandom.com", true }, { "sranje.rocks", true }, + { "sratim.tv", true }, { "sravyareddy.space", true }, { "srb.help", true }, { "srbc.gov", true }, { "src.fedoraproject.org", true }, + { "srcbolt.com", true }, { "srchicmodas.com.br", true }, { "srchub.org", true }, { "srcpa.gov", true }, - { "srcprivatesecurity.com", true }, - { "srdinnovativedesigns.com", true }, + { "srd.re.kr", false }, { "srdmarketingservice.com", true }, + { "sreb.loan", true }, { "srebro.cc", true }, { "sreedhareeyam.tk", true }, { "sreeharis.tk", true }, { "sreenadh.in", true }, + { "sremodelingnyc.com", true }, { "srfloki.com", true }, { "srhdesign.co.uk", true }, + { "srherald.com", true }, { "sri.com.pa", true }, + { "sridevi.ru", true }, { "srife.net", true }, { "srigc.com", true }, - { "srilankachinasociety.org", true }, + { "srilanka.travel", true }, { "srilankan-hope-for-children.nl", true }, + { "srilankanguides.com", true }, { "srimakc.com", true }, - { "srinivasan.io", true }, { "sriramdigital.tk", true }, { "sriravana.tk", true }, + { "sristicreationart.com", true }, { "sritafrican.tk", true }, + { "sritalabama.tk", true }, { "sritalaska.tk", true }, { "sritbeauty.tk", true }, { "sritbrazil.tk", true }, + { "sritcalifornia.tk", true }, { "sritcities.tk", true }, { "sritclassic.tk", true }, + { "sritculture.tk", true }, + { "sritegypt.tk", true }, { "srithunters.tk", true }, { "sritidaho.tk", true }, + { "sritsafety.ml", true }, { "sritspanish.tk", true }, + { "srittheatre.tk", true }, { "sritvermont.tk", true }, + { "srix.ml", true }, { "srkarra.com", true }, { "srkb.net", true }, { "srle.tk", true }, { "srmi.biz", true }, + { "srmllc.net", true }, + { "srmstatic.com", true }, { "srnl.gov", true }, { "sro.fi", true }, + { "sro.nl", true }, + { "srochno-pohudeti.tk", true }, { "srochnozaim.gq", true }, { "srochnyj-zajm.ga", true }, { "sroma.tk", true }, @@ -113578,19 +130275,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sros.fi", true }, { "sroturkey.tk", true }, { "srp.gov", true }, + { "srpworks.com", true }, { "srpx.de", true }, { "srqpedals.com", true }, - { "srrdb.com", true }, { "srroddy.com", true }, + { "srs.sg", false }, { "srsforward.email", true }, { "srsfwd.com", true }, { "srsfwd.email", true }, { "srsfwd.eu", true }, { "srsfwd.net", true }, { "srsfwd.org", true }, - { "srshopping-rest.herokuapp.com", true }, + { "srto.win", true }, { "srun.in", false }, { "sruthisjewellery.com", true }, + { "srv-4g-test.fr", true }, { "srvonfire.com", true }, { "srwminc.com", true }, { "srx.sx", true }, @@ -113608,7 +130307,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ss6729.co", true }, { "ss6729.com", false }, { "ss6957.co", true }, - { "ss9188.com", true }, + { "ss9188.com", false }, { "ss9288.com", false }, { "ss9297.co", true }, { "ss9397.com", true }, @@ -113616,18 +130315,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ssa.co.ir", true }, { "ssa.gov", false }, { "ssaarevents.tk", true }, + { "ssab.gov", true }, { "ssasociety.nl", true }, + { "ssatpa.com", true }, { "ssatripura.com", true }, + { "ssb.ee", true }, { "ssbljk.com", true }, { "ssbrm.ch", true }, + { "ssbwiki.com", true }, { "ssc.vg", false }, { "sscd.no", true }, { "sschd.cc", false }, + { "sscnapoli.it", true }, { "ssconn.com", true }, + { "sscpsms.biz", true }, { "ssd.today", false }, { "ssdax.com", true }, { "ssdpalermo.it", true }, { "ssenberg.nl", true }, + { "ssentinel.com", true }, + { "sserc.ca", true }, { "ssf.no", true }, { "ssh-keys.online", true }, { "ssh-vault.com", true }, @@ -113639,25 +130346,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sshx.top", true }, { "ssk.ovh", true }, { "sskb-ey.tech", true }, - { "ssky.cn", true }, { "ssl-zertifikate.de", true }, { "ssl.com.ru", true }, { "ssl.google-analytics.com", true }, - { "ssl.kim", false }, { "ssl24.pl", true }, { "ssl247.co.uk", true }, { "ssl247.com.mx", true }, { "ssl247.de", true }, { "ssl247.dk", true }, + { "ssl4all.gq", true }, { "sslbrain.com", true }, { "sslc.gov", true }, - { "sslcentral.co.uk", true }, { "sslcertificaten.nl", true }, { "sslcheck.nl", true }, { "ssld.at", true }, { "ssldecoder.eu", true }, { "ssldev.net", true }, + { "sslgctx.gov", true }, { "sslgram.com", true }, + { "sslhello.com", true }, { "sslle.eu", true }, { "sslmate.com", true }, { "sslmonitor.eu", true }, @@ -113671,37 +130378,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ssm-techmarketing.tk", true }, { "ssma.it", true }, { "ssmato.me", true }, - { "ssmca.com", true }, { "ssmd.tk", true }, { "ssmic.com", false }, { "ssmm88.cc", true }, { "ssmothership.tk", true }, { "ssmpuc.com", true }, - { "ssmrca.ca", true }, { "ssmwebportal.tk", true }, { "ssnetwork.jp", true }, { "ssone.ee", true }, { "ssprod.tk", true }, + { "sspu.ml", true }, + { "ssqq.com", true }, { "ssr.llc", true }, { "ssradio.live", true }, { "ssready.io", true }, { "ssrfq.com", true }, { "ssrgov.cn", true }, { "ssrvpn.tech", true }, + { "sss.red", true }, { "ssshh.com", true }, + { "sssib.ru", true }, { "ssslelectricfencing.co.za", true }, - { "ssslgaragedoors.co.za", true }, { "sssppp.gq", true }, - { "ssst.top", true }, + { "sssss.click", true }, + { "sssssssss.com", false }, { "sst-racing.ch", true }, + { "sst.ru", true }, { "sstaging.com", true }, { "sstestingservice.com", true }, - { "sstool.vip", true }, { "ssu.moe", true }, { "ssuc.net", true }, { "ssuiteoffice.com", true }, { "ssuitesoft.com", true }, - { "st-bede.org", true }, { "st-kilian-markt-erlbach.de", true }, { "st-li.com", true }, { "st-news.de", true }, @@ -113709,6 +130417,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "st-steuern.de", true }, { "st42.fr", true }, { "staaldart.tk", true }, + { "staapp.org", true }, + { "staapprecruiting.org", true }, { "staatdesinternets.nl", true }, { "staatdesnederlandscheninternets.nl", true }, { "staatdesnederlandseninternets.nl", true }, @@ -113720,25 +130430,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stabelino.tk", true }, { "stabilimento.it", true }, { "stabilizatory.ga", true }, - { "stable.network", true }, { "stableflect.finance", true }, { "stablelib.com", true }, { "stablina.tk", true }, + { "staceygillinphotography.com", true }, { "stacisezeptat.cz", true }, + { "stackblogging.com", true }, { "stackery.io", true }, { "stackhub.cc", true }, { "stacklasvegas.com", true }, { "stackpath.com", true }, + { "stackroute.in", true }, + { "stackshine.com", true }, { "stackstartup.com", true }, { "stackstartup.tech", true }, - { "stackunderflow.com", true }, { "stacky.me", true }, { "stad.gent", true }, { "stadgent.be", true }, + { "stadiamaps.com", true }, { "stadionmanager.com", true }, + { "stadionwelt.de", true }, { "stadlwirt.at", true }, { "stadm.com", true }, - { "stadsbos013.nl", false }, { "stadspaleizengent.be", true }, { "stadtbauwerk.at", false }, { "stadtcentrum.it", true }, @@ -113750,9 +130463,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "staer.ro", true }, { "staff.direct", true }, { "staffhours.com", true }, + { "staffi.tk", true }, { "staffingnation.com", true }, { "staffordpk.tk", true }, + { "staffsante.fr", true }, + { "staffsocial.fr", true }, + { "stage-bluejeans.com", true }, { "stage-metrobible.org", true }, + { "stage-privacyportal-ui.azurewebsites.net", true }, { "stage-props-blank-guns.com", true }, { "stage-recuperation-points-bordeaux.com", true }, { "stage-recuperation-points-lille.com", true }, @@ -113766,6 +130484,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stage-recuperation-points-rennes.com", true }, { "stage-recuperation-points-strasbourg.com", true }, { "stage-recuperation-points-toulouse.com", true }, + { "stage-ui.azurewebsites.net", true }, { "stage.wepay.com", true }, { "stage4.ch", true }, { "stageirites.com", true }, @@ -113775,15 +130494,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stagend.com", true }, { "stagespediatrics.com", true }, { "stagewalker.no", true }, - { "staging-covid-games.herokuapp.com", true }, { "staging-scholar.tk", true }, { "stagingpepocoin.com", true }, + { "stagmarketim.com", true }, { "stagoz.com", true }, - { "stagstickets.co.uk", true }, { "stahlen.dk", true }, { "stahlfors.com", true }, { "stahlp.dk", true }, + { "stahlzart-moebel.de", true }, + { "stahlzart.at", true }, + { "stahlzart.com", true }, + { "stahlzart.de", true }, { "stail.eu", true }, + { "stainfilm.com", true }, { "stainhaufen.de", true }, { "stainless-steel-cookware.tk", true }, { "stainternational.com", true }, @@ -113791,15 +130514,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stairfallgames.com", true }, { "stairlin.com", false }, { "stairmaster.tk", true }, - { "stairwayrecovery.com", true }, { "stajka.tk", true }, + { "staked.us", true }, { "stakedate.com", true }, - { "stakestrategy.com", true }, { "stako.jp", true }, { "stakotec.de", true }, { "staktrace.com", true }, { "stal-rulon.ru", true }, - { "stalbans.org.au", true }, { "stalbansvt.gov", true }, { "stalbanswv.gov", true }, { "stalder.work", true }, @@ -113817,35 +130538,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stallionsnow.com", true }, { "stallone.pl", true }, { "stalphonsusks.org", true }, + { "stalplus.ml", true }, + { "stalstroi.ml", true }, + { "stalwartshopping.com", true }, { "stalworld.tk", true }, + { "stamant.org", true }, { "stamboomforum.nl", true }, { "stamboomgids.nl", true }, - { "stameystreet.com", true }, { "stamgent.be", true }, { "stamit.nl", true }, { "stamkassa.nl", true }, + { "stammering.ga", true }, { "stammtisch-bauwagen.tk", true }, { "stammtisch.domains", true }, { "stamonicatourandtravel.com", true }, { "stampederadon.com", true }, { "stamperdle.com", true }, { "stampinggroundky.gov", true }, + { "stampsbar.co.uk", false }, { "stamurai.com", true }, - { "stan.moe", true }, { "stanandjerre.org", true }, + { "stanbul.ru", true }, { "stanchierifamilylaw.com", true }, + { "stancoe.org", false }, + { "stand.earth", true }, { "stand.gg", true }, { "standard-mobilitaet.de", true }, + { "standard-wohnungsbaukredit.ag", true }, + { "standard-wohnungsbaukredit.biz", true }, + { "standard-wohnungsbaukredit.com", true }, + { "standard-wohnungsbaukredit.de", true }, + { "standard-wohnungsbaukredit.eu", true }, + { "standard-wohnungsbaukredit.info", true }, + { "standard-wohnungsbaukredit.net", true }, + { "standard-wohnungsbaukredit.org", true }, { "standard.co.uk", true }, { "standardizarea.ro", true }, { "standardlifters.com", true }, { "standardmetrics.io", true }, + { "standardnotes.com", true }, { "standards.gov", true }, { "standardstraversal.jp", true }, + { "standardwohnungsbaukredit.ag", true }, + { "standardwohnungsbaukredit.biz", true }, + { "standardwohnungsbaukredit.com", true }, + { "standardwohnungsbaukredit.de", true }, + { "standardwohnungsbaukredit.eu", true }, + { "standardwohnungsbaukredit.info", true }, + { "standardwohnungsbaukredit.net", true }, + { "standardwohnungsbaukredit.org", true }, { "standdownofnorthjersey.org", true }, { "standford.pe", true }, { "standfore.com", true }, { "standheizung-shop.de", true }, + { "standiluminaciones.com", true }, { "standingbear.tk", true }, { "standoffarena.com", true }, { "standoffdrop.com", true }, @@ -113854,7 +130600,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "standupcomedy.cf", true }, { "standupcomedy.ga", true }, { "standupcomedy.tk", true }, + { "standwithhaiti.org", true }, { "stanfordny.gov", true }, + { "stanfordvr.com", true }, { "stang.moe", true }, { "stangeland.tk", true }, { "stanglwirt.com", true }, @@ -113865,18 +130613,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stanmirstudio.pl", true }, { "stannesvets.co.uk", true }, { "stannri.org", true }, + { "stanonline.tk", true }, { "stanron.com", true }, + { "stansberryresearch.com", true }, { "stansweather.net", true }, { "stantabler.com", true }, { "stanthony-hightstown.net", true }, { "stantonca.gov", true }, { "stantoncountyne.gov", true }, + { "stanwoodwa.gov", true }, { "stanza.group", true }, + { "stape.io", true }, + { "staplespromo.com", true }, { "staplestx.gov", true }, { "stapvoorstapduurzaam.nl", true }, { "star-citizen.wiki", true }, { "star-clean.it", true }, { "star-darom.co.il", true }, + { "star-life.tk", true }, { "star-one.co.uk", true }, { "star.my.id", true }, { "star.watch", true }, @@ -113885,22 +130639,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "starbaese.de", true }, { "starbase01.com", true }, { "starboardmarketing.io", true }, - { "starborne.space", true }, + { "starbreaker.org", true }, + { "starbt.ro", true }, + { "starbucks.vn", true }, { "starbusiness.ml", true }, { "starbyte.co.uk", true }, { "starcitizen.tools", true }, { "starcitizenreferral.codes", true }, + { "starcitywv.gov", true }, { "starcoachservices.ca", true }, + { "starcom.run", true }, { "starcomproj.com", true }, { "starconnect.at", true }, + { "starcraftsource.tk", true }, { "starcroisieres.com", true }, { "starcys.xyz", true }, { "stardanceacademy.net", true }, { "stardev.ovh", true }, + { "stardima.com", true }, { "stardomino.tk", true }, + { "stardrive.cf", true }, { "starease.com", true }, { "starease.net", true }, - { "stareplanymiast.pl", true }, + { "starengineeringinc.com", true }, + { "starexponent.com", true }, { "starfall.systems", true }, { "starfeeling.net", true }, { "starfield.ai", true }, @@ -113908,14 +130670,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "starfiles.co", true }, { "starfm.de", true }, { "starfm.gq", true }, + { "starfm.ml", true }, { "starfriend.ru", true }, { "stargarder-jungs.de", true }, + { "stargate.cam", true }, { "stargate.gq", true }, { "stargazer.de", true }, - { "stargazing-fw.herokuapp.com", true }, { "stargift.ch", true }, { "starglancer.ddns.net", true }, { "stargroupinc.com", true }, + { "starherald.com", true }, { "stari.co", true }, { "stariders.com", true }, { "starina.ru", true }, @@ -113926,66 +130690,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "starkbim.com", true }, { "starking.net.cn", true }, { "starking.tk", true }, + { "starkparks.gov", true }, { "starkstromkonsument.de", true }, { "starkvilleurgentcareclinic.com", true }, { "starlabs.bio", true }, - { "starlanka.com", true }, + { "starlim.co.in", true }, + { "starlim.org", true }, { "starlincuesta.gq", true }, + { "starline.ru", true }, { "starlinks.tk", true }, { "starlinkz.tk", true }, { "starlux.cz", true }, { "starman.agency", true }, - { "starmtech.fr", true }, + { "starmyworld.ga", true }, { "staroch.name", true }, { "starorusing.com", false }, { "starover.tk", true }, { "starpeak.org", true }, - { "starphotoboothsni.co.uk", true }, { "starpoles.com", true }, { "starprime.ch", true }, { "starprime.de", true }, { "starprime.eu", true }, { "starprime.net", true }, { "starrace.eu", true }, - { "starred.com", true }, { "starretest.nl", true }, { "starreview.tk", true }, + { "starring.host", true }, + { "starring.work", true }, { "starrosesandplants.com", true }, { "starry.blue", true }, + { "starrynight.com", true }, { "starryvoid.com", true }, { "starsam80.net", true }, + { "starsandmanifolds.xyz", false }, { "starsbattle.net", true }, { "starscream.xyz", true }, - { "starseersprophecy.com", true }, + { "starsessions.cc", true }, + { "starsgab.com", true }, { "starsguru.com", true }, + { "starship.xyz", true }, { "starsing.bid", true }, { "starskim.cn", true }, { "starsoft.io", true }, - { "starsportstours.com", false }, - { "starsub.com.au", true }, + { "starspie.com", true }, + { "start-knighki.gq", true }, { "start-nadlan.co.il", true }, { "start-school.online", true }, + { "start-up.network", true }, { "start.ag", true }, - { "start.biz.id", true }, + { "start.ie", true }, { "start.stockholm", true }, { "start2dance.tk", true }, { "startablog.tv", true }, { "startag.xyz", true }, + { "startandstop.fr", true }, { "startaninflatablebusiness.com", true }, + { "startbetter.tk", true }, { "startbiz.biz.id", true }, { "startbiz.co.id", true }, { "startbiz.my.id", true }, { "startbiz.web.id", true }, { "startekstil.ru", true }, + { "starter.social", true }, { "startersiteweb.com", true }, + { "startgeophysical.ga", true }, { "starthubs.uk", true }, { "starti.com.ua", true }, + { "startinganllcbusiness.com", true }, { "startingent.be", true }, - { "startinop.com", true }, + { "startingyourbusiness.com", true }, { "startlab.sk", true }, - { "startlak.hu", true }, { "startlap.es", true }, - { "startlas.studio", true }, { "startle.cloud", true }, { "startle.studio", true }, { "startlgvtraining.co.uk", true }, @@ -113993,9 +130768,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "startliste.info", true }, { "startmail.com", true }, { "startner.com", true }, + { "startpage.com", true }, { "startpage.info", true }, { "startpage4u.tk", true }, { "startplats.tk", true }, + { "startplaying.games", true }, { "startpoint.tk", true }, { "starts.sh", true }, { "startsafety.uk", true }, @@ -114003,12 +130780,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "startstunter.com", true }, { "starttoact.nl", true }, { "starttraffic.uk", true }, - { "startup-lab.ro", true }, { "startup-stack.com", true }, { "startup-stack.tech", true }, { "startup.melbourne", true }, { "startupbros.com", true }, { "startupisland.tw", true }, + { "startupislandtaiwan.com", true }, + { "startupislandtaiwan.net", true }, + { "startupislandtaiwan.org", true }, + { "startupopinions.com", true }, { "startupstack.cloud", true }, { "startupstack.llc", true }, { "startupstack.net", true }, @@ -114022,17 +130802,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "startupstack.technology", true }, { "startupstacksandbox.com", true }, { "startupstacktech.com", true }, - { "startupstreet.in", true }, { "startupswitzerland.com", true }, { "startuptechstack.com", true }, { "startupum.ru", true }, { "startupweb.io", true }, + { "startupyourmind.com", true }, { "startw.cf", true }, - { "startzz.digital", true }, + { "startwithpieter.com", true }, { "starvizyon.com", true }, { "starwarschronology.com", true }, { "starwatches.eu", true }, { "starx.ink", true }, + { "starzfilm.com", true }, { "stasia.ml", true }, { "stasiniewicz.com", true }, { "stass.eu", true }, @@ -114040,16 +130821,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stastka.ch", true }, { "stasyan.ga", true }, { "staszic.waw.pl", true }, + { "stat-xpert.com", true }, { "stat.ink", true }, + { "statcenter.tk", true }, { "state-of-body-and-mind.com", true }, + { "statecareercenter.com", true }, { "statecollegemortgages.com", true }, - { "statefundca.com", true }, + { "stated.gq", true }, { "statefunddirect.com", true }, + { "stateidea.ga", true }, + { "statejobcenter.com", true }, { "statelibraryofiowa.gov", true }, + { "statelines.ga", true }, { "statelywork.com", true }, { "statemercantile.com.au", true }, + { "stateofwatourism.com", true }, + { "statepoint.net", true }, { "staterun.tk", true }, { "stateserv.com", true }, + { "statesville.com", true }, + { "statfluence.com", true }, { "statgram.me", true }, { "static-assets.io", true }, { "static-myfxee-808795.c.cdn77.org", true }, @@ -114060,43 +130851,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "staticfury.com", true }, { "staticline.de", true }, { "staticweb.tk", true }, + { "statik.space", true }, + { "statinfer.com", true }, { "stationa.ch", false }, { "stationary-traveller.eu", true }, { "stationaryengines.tk", true }, { "stationcharlie.co.za", true }, + { "stationmedia.tk", true }, { "stationstuinenbarendrecht.nl", true }, - { "statisticalsurveys.com", true }, { "statistician-online.com", false }, { "statistik-seminare.de", true }, - { "statistikian.com", false }, + { "statistikian.com", true }, { "statnevlajky.sk", true }, { "statnivlajky.cz", true }, { "stats-co.eu", true }, + { "stats-mailtracker.com", true }, { "stats.g.doubleclick.net", true }, + { "stats.moe", true }, { "statscrew.com", true }, { "statsit.ga", true }, - { "statsnite.com", true }, { "statspolicy.gov", true }, - { "status.care", true }, { "status.events", true }, + { "status.im", true }, { "status.vg", true }, - { "statuscode.ch", true }, + { "statuscast.com", true }, + { "statuscode.ch", false }, { "statusforward.com", true }, + { "statushero.com", true }, { "statusmachine.com", true }, { "statusmantra.tk", true }, { "statuswatch.io", true }, + { "statxperts.com", true }, { "statz.pl", true }, - { "stau-a.de", true }, { "stauffer-media.net", true }, { "stavanger.kommune.no", true }, + { "stavgp2.ru", true }, + { "stavinchains.tk", true }, { "stavnager.net", true }, + { "stavropol-news.ga", true }, + { "stavros.ovh", true }, { "staxflax.tk", true }, { "stay-curious.at", true }, + { "stay4all.nl", true }, { "stayby.me", true }, { "staycurrent.eu", true }, { "staycurrent.nl", true }, { "staydryohio.com", true }, + { "stayglam.com", true }, { "staygold.blog", true }, + { "staygoldenphotobooth.com", true }, + { "stayinbusiness.nl", true }, { "staylovely.tk", true }, { "stayme.cz", true }, { "stayokay.com", true }, @@ -114108,14 +130912,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stb-schefczyk.info", true }, { "stb-schefczyk.net", true }, { "stb-timmler.de", true }, + { "stb.gov", true }, + { "stbarnabashealthsystem.com", true }, { "stbartholomewmanchester.org", true }, + { "stbk.link", true }, { "stbl.org", true }, + { "stblaw.com", true }, { "stc-istok.com.ua", true }, - { "stcable.net", true }, + { "stc-knrm.nl", true }, + { "stcatharinesromawolves.tk", true }, + { "stcc.edu", true }, { "stccordoba.com", true }, { "stceciliakearny.org", true }, { "stcharlescountycsfamo.gov", true }, { "stcharlesparish.gov", true }, + { "stclairpa.gov", true }, { "stclairvet.co.uk", true }, { "stclementmatawan.org", true }, { "stclementreligioused.org", true }, @@ -114127,31 +130938,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stdev.org", true }, { "stdev.top", true }, { "stdnet.ru", true }, + { "stdssr.com", true }, { "ste2.de", true }, + { "stea-web.com", true }, { "steacy.tech", true }, { "steadfastagencies.com.au", true }, { "steadfastplacements.com.au", true }, + { "steak-kojiro.com", true }, { "steakovercooked.com", true }, + { "stealherhealth.com", true }, { "stealingheather.com", true }, { "stealsaga.net", true }, { "stealth.net", true }, { "stealthbinders.tk", true }, { "stealthmodel.fi", true }, + { "stealthseminar.com", true }, { "steam-rewards.tk", true }, { "steam-route-saxony.com", true }, { "steamcarddelivery.com", true }, + { "steamcardexchange.net", true }, { "steamcars.be", true }, { "steamcleaning.expert", true }, { "steamcn.info", true }, + { "steamcrack.ga", true }, { "steamdb.info", true }, { "steamdeckinfo.org", true }, { "steamerrors.com", true }, { "steamgifts.com", true }, { "steamid.net", true }, { "steamid.tools", true }, + { "steamkeyget.ga", true }, { "steamlevelmarket.com", true }, { "steamold.com", false }, { "steamosaic.com", true }, + { "steampoweredlawngnome.com", true }, { "steampress.io", true }, { "steamscore.info", true }, { "steamsprays.tk", true }, @@ -114164,17 +130984,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stecos.co.uk", true }, { "stedb.eu", true }, { "stedbg.net", true }, + { "stedelijkorkestpurmerend.nl", true }, { "steebel.com.au", true }, { "steeble.com.au", true }, { "steef389.eu", true }, + { "steeha.nl", true }, + { "steel-pc.fr", true }, + { "steel-pc.lu", true }, { "steel-roses.de", true }, - { "steelbeasts.org", true }, + { "steelbeasts.org", false }, { "steelecountymn.gov", true }, - { "steelehollowvintage.com", true }, { "steelephys.com.au", true }, { "steelfencestlouis.com", true }, { "steelfirm.ga", true }, { "steelfxpatinas.com", true }, + { "steelheadmetal.com", true }, { "steelhouse.com", true }, { "steelmounta.in", true }, { "steelpoint.com.pl", true }, @@ -114183,6 +131007,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steelshop.net", true }, { "steelsoldiers.com", true }, { "steelvortex.tk", true }, + { "steelway.biz", true }, { "steelzone.tk", true }, { "steemit.com", true }, { "steempeak.com", true }, @@ -114191,8 +131016,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steenkampskraal.com", true }, { "steenwijkerland.nl", true }, { "steering-wheel.tk", true }, - { "steeve-legal-photographie.fr", true }, { "steevels.nl", true }, + { "stefaanoyen.be", true }, { "stefamedia.com", true }, { "stefan-bayer.eu", true }, { "stefan-karstens.de", true }, @@ -114202,15 +131027,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stefan.de", true }, { "stefanbayer.de", true }, { "stefandesign.tk", true }, - { "stefanengineering.com", true }, { "stefanfriedli.ch", true }, { "stefangroothuis.tk", true }, { "stefania.tk", true }, { "stefaniepetermann.eu", true }, { "stefaniharvilla.tk", true }, + { "stefanini.com", true }, { "stefanknobel.ch", true }, - { "stefanorossi.it", false }, - { "stefanovski.io", true }, + { "stefano-wesel.de", true }, + { "stefanoiavarone.com", true }, + { "stefanolsdal.tk", true }, { "stefanrusie.ro", true }, { "stefanvd.net", true }, { "stefany.cloud", true }, @@ -114218,17 +131044,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stefchapman.tk", true }, { "stefcraps.tk", true }, { "steffenmeister.com", true }, - { "steffentreeservice.com", true }, { "steffi-in-australien.com", true }, { "steffi-knorn.de", true }, { "steffko.net", true }, - { "stefpastoor.nl", true }, + { "stefpastoor.nl", false }, + { "stegenevieve.gov", true }, { "steggemachine.com", true }, { "stehlik.co.uk", true }, { "stehlik.sk", true }, { "steigerlegal.ch", true }, { "steinbach.ai", true }, - { "steinbergmedia.de", true }, { "steiner-dominik.at", true }, { "steiner.do", true }, { "steiner.is", true }, @@ -114236,15 +131061,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steiner.sh", true }, { "steinerkovarik.de", true }, { "steiners.party", true }, + { "steingergreeneandfeiner.com", true }, + { "steingergreenefeiner.com", true }, + { "steinhartwatches.de", true }, { "steinibox.de", true }, { "steinmassl.org", true }, { "steinmetz.cloud", true }, { "stekelenburg.me", true }, - { "stekosouthamerica.com", true }, + { "steklein.de", true }, { "stelfox.net", true }, { "stelga.ca", true }, - { "stelios67pi.eu", true }, { "steliosmanousakis.gr", true }, + { "stella-it.com", true }, { "stella-shop.eu", true }, { "stellacinderella.net", true }, { "stellanova-planeten.de", false }, @@ -114255,16 +131083,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stellarium-gornergrat.ch", true }, { "stellarlumensnews.today", true }, { "stellarosa-clinic.net", true }, + { "stellarpurr.me", true }, { "stellen.ch", true }, { "stelleninserate.de", true }, { "stellenticket.de", true }, + { "steller.co", true }, { "stelletjeafgebeuktemongolen.tk", true }, - { "stelling.nl", true }, + { "stellexshop.ru", true }, + { "stelling.nl", false }, { "stellmacher.name", true }, { "stelovisual.pl", true }, + { "stels.ml", true }, + { "stels.tk", true }, + { "steltzer-scheidung.de", true }, + { "stelzl.co", true }, { "stem16plus.gent", true }, { "stematechnologies.ga", true }, + { "stembureau-nissewaard.nl", true }, { "stembureauledenindenhaag.nl", true }, + { "stembureaunijmegen.nl", true }, { "stemcellclinic.design", true }, { "stemcellclinic.live", true }, { "stemcellclinic.ltd", true }, @@ -114274,6 +131111,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stemcellclinic.tech", true }, { "stemcellclinic.vip", true }, { "stemcellclinic.world", true }, + { "stemcellsscotland.co.uk", true }, { "stemcellstherapynyc.com", true }, { "stemderbomen.tk", true }, { "stemgirls.co.za", true }, @@ -114282,21 +131120,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sten.photography", true }, { "stena.cf", true }, { "stenaro.ch", true }, + { "stencilsaustralia.com.au", true }, { "stenhojmedia.dk", true }, { "stening.co", true }, { "steno.nl", true }, { "stenvallmcclain.tk", true }, { "stenzhorn-cloud.de", true }, + { "steolo.com", true }, + { "step-lead.cc", true }, { "step2web-cms.info", true }, { "stepanvanek.cz", true }, { "steparovi.cz", true }, - { "steph.ninja", true }, + { "steph.ninja", false }, { "steph3n.me", true }, { "stephan-matthiesen.de", true }, { "stephanao.tk", true }, { "stephandriessen.tk", true }, { "stephaniecalahan.com", true }, { "stephaniedeady.ie", true }, + { "stephanielacroix.nl", true }, { "stephanieleonidasfan.tk", true }, { "stephanieschreiber.com", true }, { "stephenbakalian.com", true }, @@ -114304,10 +131146,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stephencreilly.com", true }, { "stephenhaunts.com", true }, { "stephenj.co.uk", true }, - { "stephenlam.ca", true }, { "stephenperreira.com", true }, + { "stephenplustwik.com", true }, { "stephenreescarter.net", true }, { "stephenschirle.gq", true }, + { "stephenschirle.ml", true }, { "stephenschrauger.com", true }, { "stephenschrauger.org", true }, { "stephenscity.gov", true }, @@ -114330,27 +131173,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stepplanning.com", true }, { "stepstone.dk", true }, { "stepupforeurope.eu", true }, + { "stepyz.com", true }, + { "stepzen.com", true }, { "ster-enzo.nl", true }, - { "sterchi-fromages.ch", false }, + { "ster.nl", true }, + { "stereo.com", true }, { "stereoamistadmomos.ga", true }, { "stereoamistadmomos.gq", true }, { "stereoamistadmomos.ml", true }, { "stereob.it", true }, { "stereochro.me", false }, { "stereoscopio.es", true }, + { "stereostudio.cf", true }, { "stereotyped.de", true }, { "sterilium.tk", true }, { "sterling.com", true }, { "sterlingheights.gov", true }, + { "sterlinginsurance.com.au", false }, { "sterlingtechnotrade.com", true }, { "sterlinx.de", true }, { "stern-freunde.de", true }, { "stern.koeln", true }, { "sternadel.pl", true }, + { "sternen-sitzberg.ch", true }, { "sternenbund.info", true }, + { "sternik-motorowodny.com.pl", true }, + { "sterno.cf", true }, { "sternplastic.com", true }, { "sternsinus.com", true }, - { "sterohouse.com", true }, { "steroids.ga", true }, { "steroidswiki.com", true }, { "sterretranen.tk", true }, @@ -114360,15 +131210,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stestena.eu", true }, { "stesti.cz", true }, { "stethostalk.com", true }, - { "stetsed.xyz", true }, { "stetson.edu", true }, { "steuerberater-bayreuth.com", true }, { "steuerberater-essen-steele.com", true }, { "steuerberater-hopfner.de", true }, + { "steuerberatungs-website.de", true }, { "steuerboard.org", true }, + { "steuerimgriff.de", true }, { "steuerkanzlei-edel.de", true }, { "steuern-recht-wirtschaft.de", true }, { "steuertipps-sonderausgaben.de", true }, + { "steve-mason.tk", true }, { "steve.kiwi", true }, { "stevebanks.info", true }, { "steveborba.com", true }, @@ -114386,6 +131238,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "steven-klix.de", false }, { "steven.photos", true }, { "stevenapate.com", true }, + { "stevenavaldez.tk", true }, { "stevenberg.net", true }, { "stevenbolgartersnakes.com", true }, { "stevendearstyne.com", true }, @@ -114395,12 +131248,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stevenjacobs.be", true }, { "stevenjacobs.eu", true }, { "stevenkendypierre.com", true }, + { "stevenkobes.com", true }, { "stevenlapere.co.za", true }, { "stevenmdriving.co.uk", true }, { "stevenroddis.com", true }, { "stevensautotopsandupholstery.com", true }, { "stevenscountymn.gov", true }, - { "stevenselectricllc.com", true }, + { "stevenshame.com", true }, { "stevenski.com", false }, { "stevenson.io", true }, { "stevensonal.gov", true }, @@ -114421,33 +131275,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stevezone.in", true }, { "steviate.com", true }, { "steviate.de", true }, + { "stevin.com", true }, { "stevinson.org", true }, + { "stewards.tk", true }, { "stewart.tk", true }, - { "stewonet.nl", true }, { "stewpolley.com", true }, - { "steyaert.be", false }, { "stfd-oh.gov", true }, { "stfrancisnaugatuck.org", true }, - { "stfw.info", true }, { "stg-0-con.com", true }, { "stgabrielstowepa.org", true }, { "stgeorgegolfing.com", true }, { "stgeorgeks.gov", true }, + { "stgeorgesbank.com.pa", true }, + { "stgermainwi.gov", true }, { "stghv.com", true }, { "stgiannanorthfieldnj.org", true }, + { "stgy.it", true }, { "sth.sh", true }, { "sthelen.eu", true }, { "sthelensoregon.gov", true }, { "sthenryrc.org", true }, { "sthetix.info", true }, { "sthpr.gr", true }, + { "sthreemarketing.com", true }, { "stibal.art", true }, + { "stichtingcompassroemenie.nl", true }, { "stichtingcoronaonderzoek.nl", true }, { "stichtingscholierenvervoerzeeland.nl", true }, { "stichtingsticky.nl", false }, + { "stichtingtwigadukina.nl", true }, { "stichtingwwtoegankelijk.nl", true }, + { "stichtsevecht.nl", true }, { "stick2bike.de", true }, { "stickandpoketattookit.com", true }, + { "stickerapp.com", true }, { "stickerparadise.me", true }, { "stickers-garage.com", true }, { "stickertrade.me", true }, @@ -114459,12 +131320,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stickstone.co", true }, { "stickswag.cf", true }, { "stickswag.eu", true }, - { "sticky.ai", true }, { "sticky.to", true }, { "stickypassword.com", true }, - { "stickyricelove.com", true }, { "stickywilds.com", true }, - { "sticomputadores.com.br", true }, + { "stidmobile-id.com", true }, { "stiebel-eltron.co.nz", true }, { "stiebel-eltron.com.au", true }, { "stiebel.co.nz", true }, @@ -114475,15 +131334,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stiebelservice.com.au", true }, { "stiebelstore.com.au", true }, { "stiehler-leipzig.tk", true }, + { "stiekemverliefdopjou.nl", true }, + { "stierheating.com", true }, { "stiff.wang", true }, + { "stifflersmom.ga", true }, { "stift-kremsmuenster.at", true }, { "stift-kremsmuenster.net", true }, { "stiftung-lq.ch", true }, { "stiftung-lq.com", true }, { "stiftung-lq.net", true }, + { "stiftungleostrauss.com", true }, { "stiftunglq.com", true }, - { "stigharder.com", true }, + { "stigaview.com", true }, { "stigviewer.com", true }, + { "stihiya.tk", true }, { "stijlvol-wonen.com", true }, { "stijndv.com", true }, { "stijnodink.nl", true }, @@ -114491,14 +131355,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stikkie.me", true }, { "stikkyikkys.com", true }, { "stikonas.eu", false }, - { "stil.dk", true }, { "stila.no", true }, { "stildate.de", true }, { "stileapp.com", true }, { "stilecop.com", true }, { "stilettobg.com", true }, + { "stilfoto.net", true }, { "stilingavonia.lt", true }, { "stilldrunkfromyesterday.com", true }, + { "stille-post.eu", true }, + { "stillpointmag.org", true }, + { "stillwatermn.gov", true }, { "stillwatertownshipmn.gov", true }, { "stillwell.me", true }, { "stillwhite.com", true }, @@ -114510,30 +131377,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stiltnerelectric.com", true }, { "stilus-patent.ru", true }, { "stimmgabel.lu", true }, + { "stimulants.uk", true }, { "stina-vino.hr", true }, - { "stinaspiegelberg.com", true }, + { "stinesvillein.gov", true }, { "stingraybook.com", true }, { "stinici.site", true }, { "stinkefingereinhorn.de", true }, + { "stinkintechnology.com", true }, { "stinkmemes.com", true }, - { "stinsky.com", true }, + { "stinter.cf", true }, { "stintup.com", false }, { "stipanama.com", true }, { "stiphosting.nl", true }, - { "stipsan.me", true }, { "stirblaut.de", true }, { "stirling.co", true }, + { "stirlingpoon.com", true }, + { "stirringphoto.com", true }, { "stisidores.org", true }, { "stitch.money", true }, - { "stitchinprogress.com", true }, + { "stitchersvillage.com", true }, + { "stitcheswyo.com", true }, + { "stitchfiddle.com", true }, + { "stitchlabs.com", true }, + { "stivesbouncycastlehire.co.uk", true }, + { "stiveschase.nsw.edu.au", true }, { "stjh.org.sg", true }, + { "stjlogistics.com", true }, + { "stjohnbjc.org", true }, { "stjohncamden.com", true }, { "stjohnin.com", true }, { "stjohnin.gov", true }, { "stjohnnepomucene.com", true }, { "stjohnpa.org", true }, { "stjohnsc.com", true }, - { "stjohnslutheran.net", true }, { "stjohnsmi.gov", true }, { "stjohnsottsville.org", true }, { "stjoseph-stcatherine.org", true }, @@ -114542,14 +131418,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stjosephspringcity.com", true }, { "stjosephtownship.com", true }, { "stjscatholicchurch.org", true }, + { "stjude-ettekkar.tk", true }, { "stjustin.org", true }, + { "stkc.win", true }, { "stkeverneparishcouncil.org.uk", true }, { "stkevin-stbenedict.org", true }, { "stkildaosteopathy.com.au", true }, { "stla.net", true }, { "stlautoenhancements.com", true }, - { "stlbosnians.com", true }, - { "stleismann.com", true }, + { "stlawco.gov", true }, { "stleismann.de", true }, { "stlfc.gov", true }, { "stlfence.com", true }, @@ -114563,23 +131440,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stlpassports.com", true }, { "stlpoolattendants.com", true }, { "stlu.de", true }, + { "stluciamirroronline.com", true }, { "stluciastar.com", true }, { "stlucieclerk.gov", true }, { "stlucievillagefl.gov", true }, { "stlueke.de", true }, { "stlukenh.org", true }, { "stlukesbrandon.org", true }, - { "stm-net.de", true }, { "stma.is", true }, + { "stmargs.us", true }, { "stmariagoretti.net", true }, { "stmarkcharlotte.org", true }, { "stmarkseagirt.com", true }, { "stmarthachurch.com", true }, - { "stmartinscatholicchurchlugbe.org", true }, { "stmaryextra.uk", true }, { "stmaryscountymd.gov", true }, { "stmaryskutztown.com", true }, - { "stmarysmumbra.com", true }, + { "stmarysmdsao.gov", true }, { "stmarysnutley.org", true }, { "stmarystfd.org", true }, { "stmaryswv.gov", true }, @@ -114589,56 +131466,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stmichaellvt.com", true }, { "stmichaelmn.gov", true }, { "stmichaelsmajors.tk", true }, + { "stmltn.com", true }, { "stmohrael.org", true }, - { "stmosesbookstore.org", true }, { "stmsolutions.pl", true }, { "stmsouthcoventry.com", true }, { "stn.me.uk", false }, - { "stnguyen.net", true }, + { "stnews.ga", true }, { "stnl.de", false }, { "stntrading.eu", true }, - { "sto-avtovo.com", true }, { "sto-garant.nl", true }, + { "stob-architekten.de", true }, { "stock-ai.com", true }, - { "stock-solution.de", true }, + { "stockageprive.net", true }, { "stockanalysis.com", true }, + { "stockbrain.co.jp", true }, { "stockbridge-ma.gov", true }, { "stockbridgevt.gov", true }, { "stockgraphicdesigns.com", true }, { "stockholm.ga", true }, + { "stockholm.se", true }, { "stockholmpride.org", true }, { "stockhuntertrading.com", true }, - { "stockmaquinas.com.br", true }, + { "stockideas.club", true }, + { "stockilluminati.com", true }, { "stockmarkettoday.news", true }, + { "stockmeta.jp", true }, { "stockpile.com", true }, + { "stockportny.gov", true }, + { "stocks-adviser.com", true }, { "stockslam.ga", true }, + { "stocksnews.tk", true }, + { "stockspy.ru", true }, { "stockstuck.com", true }, { "stockt-shirtdesigns.com", true }, { "stocktonengineering.co.uk", true }, { "stocktout.info", true }, { "stocktrader.com", true }, + { "stockway.tk", true }, { "stockx.com", true }, + { "stockx.io", true }, { "stockyards.com", true }, + { "stocorp.com", true }, { "stocp.org", true }, + { "stoddardcountyclerk.gov", true }, { "stodieck.com", true }, - { "stodrive.com", true }, + { "stodlinjen.se", true }, { "stoeckel.info", false }, - { "stoeco.net", true }, + { "stoeckl-schmaus.com", true }, { "stoemp.gent", true }, { "stoffelnet.de", true }, { "stoffhandwerk.tk", true }, { "stohrm.com", true }, { "stoianlawfirm.com", true }, { "stoicatedy.ovh", true }, + { "stoicnotaries.com", true }, { "stoicus.com.br", true }, - { "stoildaaliyski.com", true }, { "stoinov.com", true }, - { "stoketalent.com", true }, { "stokl.com.au", false }, { "stokrotkadelikatesy.pl", true }, { "stolarka.tk", true }, { "stolarstvi-jiriholy.cz", true }, { "stolbart.com", true }, + { "stolensun.tk", true }, { "stolin.info", true }, { "stolina.de", true }, { "stolkpotplanten.nl", true }, @@ -114647,6 +131536,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stollenwurm.de", true }, { "stolpe.tk", true }, { "stolpe5674.tk", true }, + { "stolpersteine-dithmarschen.tk", true }, { "stolpi.is", false }, { "stoltz-it.de", true }, { "stomaline.com.ua", true }, @@ -114654,10 +131544,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stomatolog-czestochowa.ga", true }, { "stomatolog-czestochowa.gq", true }, { "stomatolog.cf", true }, + { "stomatolog.ga", true }, { "stomatologiya.gq", true }, + { "stomatologiya.ml", true }, { "stomproced.ro", true }, { "stomt.com", true }, { "stoneagehealth.com.au", true }, + { "stonebriarpropertyinspections.com", true }, { "stonechatjewellers.ie", true }, { "stonecore.co", true }, { "stonecountyar.gov", true }, @@ -114671,16 +131564,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stonegatewealth.com", false }, { "stonegray.ca", true }, { "stonehammerhead.org", true }, + { "stonehillpace.com", true }, + { "stonehillstrategiccapital.com", true }, { "stonehurstcap.com", true }, { "stonemain.eu", true }, { "stonemanbrasil.com.br", true }, { "stoneocean.net", true }, { "stoneproperty.ie", true }, + { "stonerwitch.tk", true }, + { "stonesfamilyrestaurant.com", true }, { "stonesgarden.pl", true }, { "stonetribute.tk", true }, { "stonewallwcidtx.gov", true }, + { "stoneworld.ga", true }, { "stonewuu.com", true }, { "stoningtonboroughct.gov", true }, + { "stonkslab.com", true }, + { "stonsil.com", true }, { "stonystratford.org", true }, { "stoom-stichting.nl", true }, { "stoomstichting.be", true }, @@ -114701,14 +131601,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stop-activ.ga", true }, { "stop-bankrotstvu.ru", true }, { "stop-microsoft.org", true }, + { "stop-nikotin.tk", true }, { "stop-russia.tk", true }, + { "stop-tihange.eu", true }, + { "stop-tihange.org", true }, { "stop.pe", true }, { "stopaggressivedriving.com", true }, + { "stopautoshop.bg", true }, { "stopbullying.gov", true }, + { "stopever.com", true }, { "stopforumspam.com", true }, { "stopfraud.gov", true }, { "stoph.at", true }, + { "stopka.tk", true }, { "stopkadr-studio.ru", true }, + { "stopklopam.ru", true }, { "stoplossoff.tk", true }, { "stopmetbellen.be", true }, { "stopmoustic.fr", false }, @@ -114718,17 +131625,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stoprat.fr", true }, { "stopsmoke.gq", true }, { "stopssherdenking.tk", true }, + { "stopsvet.ml", true }, { "stopthemoss.com", true }, { "stoptheperio.com", true }, { "stopthethyroidmadness.com", true }, { "stopthinkconnect.jp", true }, { "stoptrading.co.uk", true }, + { "stopves.tk", true }, { "stopvirus.in", true }, { "stor-guard.com", true }, { "storage-base.de", true }, - { "storage-in-motion.com", true }, + { "storage-books.gq", true }, { "storageideas.uk", true }, + { "storagenewsletter.com", true }, { "storageshedsnc.com", true }, + { "storck.com", true }, { "stordbatlag.no", true }, { "store-en-stock.com", true }, { "store10.de", false }, @@ -114739,8 +131650,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "storebusy.nz", true }, { "storecard.tk", true }, { "storecove.com", false }, - { "storedaway.co.uk", true }, - { "storeday.ro", true }, { "storedieu.com", true }, { "storedsafe.com", true }, { "storeforward.email", true }, @@ -114749,12 +131658,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "storeforward.nl", true }, { "storeforward.org", true }, { "storefront.gq", true }, - { "storeinstallieren.com", true }, + { "storefrontcleaningchicago.com", true }, { "storeisrael.co.il", true }, { "storeit.co.uk", true }, { "storemax.com.au", true }, + { "storepaperoomates.co.bw", true }, + { "storepaperoomates.com", true }, + { "storepaperoomates.net", true }, + { "storephotovoltaique.com", true }, { "storeplus.ml", true }, + { "storepy.com.mx", true }, { "storesonline.fr", true }, + { "storewebshop.com", true }, { "storgaarddieu.com", true }, { "stori.press", true }, { "storiadellarte.com", true }, @@ -114766,37 +131681,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "storin.nl", true }, { "storipress.com", true }, { "storipress.pro", true }, + { "storistalker.com", true }, + { "storiyaan.com", true }, + { "storj.io", true }, { "storjar.com", true }, { "storm-news.tk", true }, { "stormairsoft.tk", true }, + { "storman.com", true }, { "stormboost.cz", true }, + { "stormchile.cl", true }, { "stormdamages.claims", true }, + { "stormestudios.tk", true }, { "stormfest.tk", true }, { "stormhub.ml", true }, { "stormi.io", true }, + { "stormininnorman.com", true }, { "stormlab.tk", true }, { "stormrider.tk", true }, + { "stormsglass.com", true }, { "stormwatcher.org", true }, { "stormylegions.tk", true }, { "storspillercasino.com", true }, { "storungssuche.com", true }, { "storvann.net", true }, { "storvann.no", true }, + { "storvault.co.za", true }, + { "story.be", true }, + { "story.nl", true }, { "storyark.de", true }, { "storyark.eu", true }, + { "storyboardmedia.cl", true }, { "storybuilder.me", true }, + { "storyclash.com", true }, { "storycollective.film", true }, { "storycollective.nl", true }, + { "storycopy.org", true }, + { "storycycle.tk", true }, { "storyland.ie", true }, { "storyliebe.de", true }, { "storymalayalam.com", true }, { "storyoneforty.com", true }, { "storysift.news", true }, { "storytea.top", true }, + { "storytel.net", true }, { "storytell.com", true }, { "storytellingforbusiness.com.au", true }, + { "storytellingsales.com", true }, { "storytime.hu", true }, + { "stotranidhi.com", true }, { "stoumann.dk", true }, + { "stourstreet.com", true }, { "stoutassociates.com", true }, { "stouter.nl", true }, { "stoverepairaustin.com", true }, @@ -114815,35 +131749,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stpatsschool.org", true }, { "stpaulcatholicchurcheastnorriton.net", true }, { "stpaulsbullville.org", true }, + { "stperseo.tk", true }, { "stpetersresidence.org", false }, - { "stphilipneripreschool.com", true }, { "stpioparish.com", true }, { "stpip.com", true }, { "stpip.net", true }, + { "stps.dk", true }, { "str8hd.com", true }, { "str92.com", true }, { "straalatelier.com", true }, - { "straat.net", true }, { "straatderzotten.nl", true }, { "stradedelvino.ch", true }, { "stradsolutions.ga", true }, { "strafe-muss-sein.at", true }, { "strafensau.de", true }, - { "strafvollzugsgesetze.de", false }, + { "straffordpub.com", true }, { "strahlende-augen.info", true }, { "strahovanienet.tk", true }, { "straightcurlyhair.tk", true }, { "straightedgebarbers.ca", true }, - { "straightlinediscgolf.com", true }, { "straightlinetutoring.com", true }, { "straightnude.com", true }, { "strail-english.jp", true }, { "strajnar.si", true }, { "straka.name", true }, + { "strakertranslations.com", true }, + { "strakh.tk", true }, { "strakonak.cz", true }, + { "stralau.kicks-ass.net", true }, { "stralenpoedercoaten.nl", true }, { "stralingsonzin.com", true }, + { "strana-snov.tk", true }, { "strana.ga", true }, + { "strananaladoni.ru", true }, { "strandedinotter.space", true }, { "strandfuif.tk", true }, { "strandhaus-claassen.de", true }, @@ -114851,8 +131789,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "strandhousedingle.com", true }, { "strandkorb-jentzsch.de", true }, { "strandom.ru", true }, - { "strandschnuppern.de", true }, { "strange.ga", true }, + { "strangecharmlabs.com", true }, { "strangeelectricdreams.com", true }, { "strangelandrecording.com", true }, { "strangelandrecordingstudios.com", true }, @@ -114864,10 +131802,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "strangemusichollywood.com", true }, { "strangemusicinc.com", true }, { "strangemusicinc.net", true }, + { "strangeonline.tk", true }, + { "strangers-team.fr", true }, { "strangerthanusual.de", true }, + { "strangerthingsmerch.co", true }, { "strangestfacts.cf", true }, { "strangevip.com", true }, - { "strangeways.ca", false }, { "strangeworksinc.com", true }, { "strangeworldmerch.com", true }, { "strangeworldmerchandising.com", true }, @@ -114877,40 +131817,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "strappazzon.xyz", true }, { "strashtrading.com", true }, { "strass-sur-mesure.fr", true }, - { "strata-gallery.com", true }, + { "strassberger.tk", true }, + { "strasweb.fr", true }, + { "stratahealth.com", true }, { "strate.io", true }, { "strategery.io", true }, { "strategia.tk", true }, { "strategicemailservices.com", true }, { "strategicenvironmentalassessment.gov.scot", true }, { "strategiclivingblog.com", true }, - { "strategicmedconsult.com", true }, + { "strategicmanagementinsight.com", true }, + { "strategicmind.com", true }, { "strategicpartnersmedia.com", true }, { "strategie-zone.de", true }, { "stratego-belgie.tk", true }, + { "strategy.it", true }, + { "strategy66.com", true }, { "strategybusiness.ga", true }, { "stratejm.com", true }, + { "stratekispiel.at", true }, { "stratfordct.gov", true }, { "stratfordnh.gov", true }, { "stratfordwi.gov", true }, + { "stratforge.com", true }, { "strathspeycrown.com", true }, - { "stratik.com.co", true }, + { "strati.com.br", true }, + { "stratible.com", false }, { "stratinator.com", true }, { "stratlibs.org.uk", true }, { "stratmann-b.de", true }, { "stratocumulus.legal", true }, - { "stratorisk.com", true }, { "stratreg.com", true }, { "stratsoftware.com", true }, { "strattera.ga", true }, { "strattonapps.com", true }, { "strattonhats.com", true }, { "stratuscloud.co.za", true }, + { "stratuscloud.group", true }, { "stratuscloudconsulting.net", true }, + { "stratuspayments.net", true }, { "stratussc.com", true }, { "straubis.org", true }, { "straubs.eu", true }, - { "strauser.com", true }, + { "strauss-advisor.de", true }, { "strauss.eu.com", true }, { "strauss.tirol", true }, { "stravato.com", true }, @@ -114918,17 +131867,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stravers.shoes", true }, { "strawberries.tk", true }, { "strawberry-laser.gr", true }, + { "strawberry-melon.com", true }, + { "strawberry.dk", true }, + { "strawberry.fi", true }, + { "strawberry.no", true }, + { "strawberry.se", true }, { "strawberry.tw", true }, { "strawberrydreadlocks.tk", true }, + { "strawberryhotels.com", true }, + { "strawberryplants.org", true }, { "strawpoll.fi", true }, { "stray-soul.com", true }, { "straydio.co.uk", true }, + { "straylight.tk", true }, { "strcat.ga", true }, { "strd.co", true }, + { "stream-box.tk", true }, + { "stream.cz", true }, { "stream.gifts", true }, + { "stream.ru", false }, { "streamblur.net", true }, { "streamchan.org", true }, { "streamcoh.com", true }, + { "streamcraft.net", true }, { "streamelements.com", true }, { "streameo.tk", true }, { "streamfood.tv", true }, @@ -114936,18 +131897,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "streamgifter.com", true }, { "streamgoalandres.ml", true }, { "streaming-download.net", true }, - { "streaming.jetzt", true }, - { "streaminginternacional.com", false }, { "streamliner.fr", true }, + { "streamlinerg.com", true }, { "streamlineverify.com", true }, { "streamodz.com", true }, { "streamonline.fi", true }, { "streampanel.net", true }, { "streams.dyndns.org", true }, { "streamside.tk", true }, + { "streamsoft.pl", true }, { "streamspouredout.com", true }, { "streamtelly.com", true }, { "streamurl.link", true }, + { "streamz.be", true }, + { "streamzilla.com", true }, { "streathamfoodfestival.com", true }, { "streekproducten.tk", true }, { "streekwinkelkatlijk.nl", true }, @@ -114957,12 +131920,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "streengis.tk", true }, { "streepjesenstipjes.nl", true }, { "street-clic.tk", true }, + { "street-hoops.tk", true }, + { "street-legal.tk", true }, { "street-medics.fr", true }, { "street-race.tk", true }, { "street-racing.tk", true }, - { "street-tek.com", true }, { "streetart.tk", true }, + { "streetartcities.com", true }, { "streetballromania.tk", true }, + { "streetcheck.co.uk", true }, { "streetdancecenter.com", true }, { "streetdreamz.tk", true }, { "streetforceteam.tk", true }, @@ -114975,14 +131941,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "streetshirts.co.uk", true }, { "streetspirit.tk", true }, { "streetspotr.com", true }, - { "streetvendors.africa", true }, + { "streetstunters.tk", true }, { "streetview.wien", true }, { "streetwitnessing.org", true }, + { "streetwitnessingchurch.com", true }, { "strefapi.com", true }, { "strefapi.pl", true }, + { "strefarysunku.pl", true }, { "strehl.tk", true }, { "stremio.com", true }, - { "strengthnutrition.es", true }, + { "strenge-zucht.schule", true }, + { "strength-secure.com", true }, { "strengthroots.com", true }, { "stress-mess-punkte.de", true }, { "stressdown.ml", true }, @@ -114991,62 +131960,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "streszczenia.pl", true }, { "stretchpc.com", true }, { "striae.cf", true }, + { "striata.biz", true }, { "striata.com", true }, + { "striata.info", true }, { "striata.mobi", true }, { "striata.org", true }, - { "striatadev.com", true }, - { "strick-welt.de", true }, { "stricken.gq", true }, { "stricted.net", true }, - { "strictlyguitar.de", true }, { "strictlynormal.com", true }, { "strietwaelder-blaettche.de", true }, { "strijdmeevoorvrede.gent", true }, { "strijkkraal.tk", true }, { "strijkshop.be", true }, + { "strikeone.io", true }, { "strikeout.ga", true }, { "strikers.cf", true }, { "strikers.futbol", true }, { "strikevectorex.com", true }, { "strikezonesalessystems.com", true }, + { "strings.cf", true }, { "stringtoolbox.com", true }, { "stripe.com", true }, { "stripe.network", true }, { "stripecdn.com", true }, { "striped.horse", true }, - { "stripehype.com", true }, { "striperite.com", true }, { "stripped-anarchy.xyz", true }, + { "strippersinthehoodxxx.com", true }, { "striptizer.tk", true }, + { "stritai.ru", true }, { "strixmusic.com", true }, { "strl-tunis.tk", true }, { "strm.pl", true }, - { "strmgt.com", true }, - { "strn.pl", true }, { "strobe.cool", true }, { "strobel.cl", true }, + { "strobotti.com", true }, { "stroccounioncity.org", true }, + { "stroeck.at", true }, { "stroeder.com", true }, { "stroeder.de", true }, { "stroeerdigital.de", true }, + { "stroginopk.ga", true }, { "strogov.me", true }, { "strogova.me", true }, { "stroifenix.ru", true }, { "stroigid.tk", true }, + { "stroimsami.tk", true }, { "stroimvse.ml", true }, { "stroiproect.tk", true }, { "strojmaster.tk", true }, - { "stroke-of-luck.com", true }, { "strokesb.store", true }, + { "strokesurvivor.nz", true }, { "strom.family", true }, { "stromak.cz", false }, { "stromectol.gq", true }, { "stromkomfort.cz", true }, + { "stromvergleichgaspreis.de", true }, { "stromzivota.sk", true }, { "strona-na-medal.pl", true }, + { "strong-game.com", true }, + { "strong-iptv.online", true }, + { "strongblock.com", true }, { "strongdm.com", true }, + { "strongencryption.org", true }, + { "stronger-communities.org.uk", true }, + { "strongercommunity.org.uk", true }, + { "strongergateway.com", true }, { "strongervision.net", true }, - { "stronghermoney.com", true }, + { "stronghermoney.com", false }, { "strongholdinc.co.nz", true }, { "strongmind.be", true }, { "strongohio.gov", true }, @@ -115054,26 +132035,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "strongprorealty.com", true }, { "strongrandom.com", false }, { "strongsalpinesucculents.com", true }, + { "strongtomorrow.tk", true }, + { "strongtoto.com", true }, { "strongtowerpc.com", true }, { "stroomacties.nl", true }, + { "strooming.nl", false }, { "stroopwafel.ch", true }, { "stropek.eu", true }, + { "strophicmusic.com", true }, { "stropkova.eu", true }, - { "strosemausoleum.com", true }, + { "strosebelmar.com", true }, { "stroseoflima.com", true }, { "strotmann.de", true }, - { "stroudtimes.com", true }, { "strousberg.net", true }, { "stroy-klg.ru", true }, + { "stroyca.tk", true }, + { "stroydvor.tk", true }, { "stroyka-iz-brusa.ru", true }, { "stroykomi.tk", true }, - { "stroylandiya.ru", true }, { "stroymart.bg", true }, + { "stroymex.online", true }, + { "stroynet.ml", true }, { "stroyservice-tver.ru", true }, { "strozik.de", true }, { "strrl.com", true }, { "strtrade.com", true }, - { "structrz.com", true }, { "structurally.net", true }, { "structure.gov.au", true }, { "strugee.net", true }, @@ -115083,10 +132069,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "struxureon.com", true }, { "strydom.me.uk", true }, { "strypsteen.me", true }, + { "strzelcy.org.pl", true }, { "sts-consulting.it", true }, { "stsen.de", true }, { "stsolarenerji.com", true }, { "ststanislaus.com", true }, + { "ststanstrans.org", true }, { "ststephensc.gov", true }, { "sttammanyurology.com", true }, { "sttelemediagdc.in", true }, @@ -115095,7 +132083,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sttl-topographie.com", true }, { "sttpk.id", false }, { "sttrv.ru", true }, - { "stuartalexander.com.au", true }, { "stuartbeard.com", true }, { "stuartbell.co.uk", true }, { "stuartbell.uk", true }, @@ -115106,15 +132093,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stuartmorris.me", true }, { "stuartmorris.name", true }, { "stuartmorris.tel", true }, + { "stuartmoving.com", true }, { "stuartparsons.com", true }, - { "stuartryanmusic.com", true }, { "stuartwilsonhair.co.uk", true }, { "stubbings.de", false }, { "stubbingsmail.de", true }, { "stubbmail.de", true }, { "stubentiga.de", true }, + { "stuc-groep.nl", true }, + { "stuccokingsfl.com", true }, { "stuckateur-bruno.de", false }, { "stucki-bagger.ch", true }, + { "stuckwithme.tk", true }, { "stucydee.nl", true }, { "stud-lib.ml", true }, { "studay.fr", true }, @@ -115123,6 +132113,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studentaid.gov", true }, { "studentenmobiliteit.be", true }, { "studentenplaza.tk", true }, + { "studentenwerk.sh", true }, { "studenterguiden.dk", true }, { "studentforums.biz", true }, { "studenti.tk", true }, @@ -115135,13 +132126,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studentnep.tk", true }, { "studentpop.com", true }, { "studentproject.be", true }, + { "studentquickpay.com", true }, { "studentrightsadvocate.org", true }, + { "studentrobotics.org", true }, + { "students4sports.org", true }, { "studentse.fr", true }, { "studentsfirstnb.com", true }, { "studentstc.cz", true }, { "studenttenant.com", true }, { "studi-luar-negeri.tk", true }, - { "studi.com", true }, { "studiedeals.dk", true }, { "studiekort.se", true }, { "studiekortet.com", true }, @@ -115151,7 +132144,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studiekortet.org", true }, { "studiekortet.se", true }, { "studienportal.eu", true }, - { "studienservice.de", true }, { "studierttomnoch.de", true }, { "studio-54.tk", true }, { "studio-637.com", true }, @@ -115159,16 +132151,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studio-architetto.com", true }, { "studio-fotografico.ru", true }, { "studio-impress.com", true }, - { "studio-jaguar.ru", true }, + { "studio-mir.tk", true }, { "studio-n.pl", true }, { "studio-np.ru", true }, + { "studio-one.ru", true }, + { "studio-satellite.com", true }, + { "studio32.tk", true }, { "studio4101.ga", true }, { "studio413.net", true }, { "studio54.tk", true }, { "studio678.com", false }, { "studio91.tk", true }, + { "studioabq.com", true }, { "studioadevents.com", true }, - { "studioamai.be", true }, + { "studioamoureus.nl", true }, + { "studioandrew.tk", true }, { "studioavvocato.milano.it", true }, { "studioavvocato.roma.it", true }, { "studioavvocato24.it", true }, @@ -115179,14 +132176,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studiodentisticomasi.com", true }, { "studiodentisticosanmarco.it", false }, { "studiodoprazer.com.br", true }, - { "studiodpe.com", true }, + { "studiodpe.com", false }, { "studiodriban.com", false }, - { "studioelo.com.br", true }, + { "studioelo.com.br", false }, + { "studioevent.tk", true }, { "studiofpvet.it", true }, + { "studiofutbol.com.ec", true }, { "studiogears.com", true }, { "studiograou.com", true }, + { "studiogronda.it", true }, { "studiohelder.fr", false }, { "studiohomebase.amsterdam", true }, + { "studiolegalemarchi.tk", true }, { "studiolegalepaternostro.it", true }, { "studiolu.tk", true }, { "studiolupotti.it", true }, @@ -115194,6 +132195,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studiomenfis.com", true }, { "studiomko.com", true }, { "studionowystyl.pl", true }, + { "studiopanamaitalia.com", true }, { "studiopirrate.com", true }, { "studioproapp.com", true }, { "studioriehl.com", true }, @@ -115204,31 +132206,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studiosuracidenunzio.it", true }, { "studiotheatrestains.fr", true }, { "studiotolsta.com", true }, - { "studiovalore.com", true }, { "studiovaud.com", false }, - { "studioxii.com", true }, + { "studiowildverband.nl", true }, { "studiozef.tk", true }, - { "studiozelden.com", true }, + { "studiozes.nl", true }, { "studipad.de", true }, { "studipro-formation.fr", true }, { "studipro-marketing.fr", true }, { "studipro.fr", true }, { "studisys.net", true }, { "studium.cz", true }, + { "studius.gq", true }, { "studiweb.pro", true }, - { "studlan.no", true }, { "studport.rv.ua", true }, { "studsovet.cf", true }, { "studsovet.tk", true }, { "studuj.digital", true }, { "studujdigital.cz", true }, { "studujdigital.eu", true }, - { "study-support-beans.com", true }, + { "studwebs.ml", true }, { "studyarabic.info", true }, { "studyarch.tk", true }, { "studybay.com", false }, + { "studybeans.org", true }, + { "studyclerk.com", true }, { "studyero.com", true }, { "studyhacker.jp", true }, + { "studyhacker.net", true }, { "studyhub.cf", true }, { "studyin.jp", true }, { "studying-neet.com", true }, @@ -115236,19 +132240,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "studylish.com", true }, { "studyme.ml", true }, { "studynoun.com", true }, + { "studyosepeti.com", true }, { "studyportal.net", true }, { "studyservice.net", true }, { "studysive.com", true }, { "studyspanish-lapaz-bolivia.tk", true }, + { "studystack.ml", true }, { "studytactics.com", true }, { "studytour.ml", true }, - { "studytube.nl", true }, + { "studytube.nl", false }, { "stuermer.me", true }, { "stuetzredli.ch", true }, { "stuff-fibre.co.nz", true }, { "stuffi.fr", true }, { "stuffiwouldbuy.com", false }, - { "stuka-art.de", true }, + { "stuffsearth.com", true }, + { "stuka-art.de", false }, { "stulda.cz", true }, { "stumeta.de", true }, { "stumeta2018.de", true }, @@ -115257,7 +132264,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stumpblog.com", true }, { "stunnel.org", true }, { "stunner.watch", true }, + { "stunning-dresses.com", true }, + { "stunningafricandresses.com", true }, { "stunningautos.com", true }, + { "stunningbikecotours.com", true }, { "stunninggdansk.com", true }, { "stunningkrakow.com", true }, { "stunningpoland.com", true }, @@ -115267,15 +132277,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stunningwroclaw.com", true }, { "stunov.ga", true }, { "stunov.gq", true }, + { "stuntman.ga", true }, { "stuntman.tk", true }, { "stuntmen.xyz", true }, { "stuntx-server.ga", true }, { "stupendousproduce.com", true }, + { "stuphid.tk", true }, { "stupidcupid.tk", true }, { "stupidest.org", true }, { "stupidstatetricks.com", true }, { "stupidthoughts.tk", true }, { "stupino-stroy.cf", true }, + { "sturdybusiness.com", true }, + { "sturents.com", true }, + { "sturgeonbaywi.gov", true }, { "stut.tk", true }, { "stutelage.com", true }, { "stutsmancounty.gov", true }, @@ -115289,22 +132304,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "stuudium.net", true }, { "stuudium.org", true }, { "stuudium.pro", true }, + { "stuut.info", true }, { "stuvel.eu", true }, { "stuvus.de", true }, { "stuvus.uni-stuttgart.de", true }, { "stuyvesantoutdoor.com", true }, { "stview.me", true }, + { "stvrainsdco.gov", true }, { "stwcforum.tk", true }, - { "stwola.eu", true }, + { "stwcreation.com", true }, { "stworzwirusa.tk", true }, { "stx.ie", true }, { "stygium.net", false }, - { "stylaq.com", true }, + { "styilishdress.tk", true }, + { "style-style.com", true }, { "stylearray.com", true }, { "stylebajumuslim.com", true }, { "styleban.com", true }, { "stylebeat.tk", true }, - { "stylebymax.com", true }, { "styleci.io", true }, { "styleclub.tk", true }, { "stylecollective.us", true }, @@ -115312,80 +132329,109 @@ static const nsSTSPreload kSTSPreloadList[] = { { "styleelite.tk", true }, { "styleetvieperfumes.com", true }, { "styleflow.nl", true }, + { "stylemall.tk", true }, { "stylepixo.com", true }, { "stylerecap.com", true }, { "stylesaag.com", true }, { "stylesinmotion.co", true }, { "stylesound.tk", true }, + { "styletheweb.cf", true }, { "styletron.org", true }, { "stylett.ru", true }, + { "styletyx.com", true }, { "stylewe.com", true }, { "stylewish.me", true }, { "stylezutra.com", true }, { "stylidafm.gr", true }, + { "stylight.co.uk", true }, + { "stylight.com", true }, + { "stylight.de", true }, + { "stylight.fr", true }, + { "stylight.it", true }, + { "stylight.nl", true }, + { "stylingstudio.ga", true }, { "stylistbazaar.com", false }, { "stylle.me", true }, { "styllussports.com.br", true }, { "stylodessens.fr", true }, - { "styloeart.com", true }, { "stylspire.com", true }, + { "styplon.cf", true }, { "stypr.com", true }, + { "styriswaste.com", true }, { "styxxx.de", true }, - { "stzur.com", true }, + { "su-kacagi.istanbul", true }, + { "su.org", true }, { "su1ph3r.io", true }, { "suachuanha365.com", true }, { "suagent.com", false }, { "sualkuchionline.tk", true }, { "suamicowi.gov", true }, - { "suan2005.com", true }, - { "suaraangin.com", true }, + { "suatdautu.com", true }, { "suaudeau.fr", true }, { "suaudeau.org", true }, { "suayslim.com", true }, + { "sub-health.org", true }, { "sub-net.at", true }, - { "sub.media", false }, + { "sub-topia.de", true }, + { "subahankamal.tk", true }, { "subalert.com", true }, { "subanelvolumen.tk", true }, + { "subaru.pl", true }, + { "subarudev.pl", true }, { "subarupartsdeal.com", true }, + { "subarus.tk", true }, + { "subaruxv.pl", true }, { "subastasdecarros.net", true }, - { "subbl.co", true }, + { "subastatutraslado.com.mx", true }, + { "subbacultcha.tk", true }, { "subdev.org", true }, + { "subdimension.org", true }, { "subdivider.tk", true }, { "subestan.tk", true }, + { "subgirl.ga", true }, + { "subiaco-physiotherapy.com.au", true }, + { "subiblia.com", true }, { "subic.ga", true }, - { "subilarch.net", true }, + { "subject-barred.cf", true }, { "subject-barred.ga", true }, { "subjecto.com", false }, - { "subjekty.tk", true }, { "subjektzentrisch.de", true }, + { "sublettecountywy.gov", true }, { "sublimated.tk", true }, - { "sublimesecurity.com", false }, + { "sublimedigitals.com", true }, { "sublimesurface.fr", true }, { "sublimetours.com", true }, { "sublimigeek.fr", true }, { "subliminalrecorder.com", true }, { "subliminalrecordingsystem.com", true }, - { "submedia.tv", false }, { "submeet.vet", true }, { "submelon.tech", true }, + { "submit-link.cf", true }, { "submiteads.tk", true }, { "submityou-rlink.tk", true }, + { "submityour-link.tk", true }, { "subology.co", true }, { "suborbital.io", true }, { "subpage.tk", true }, { "subrad.io", true }, + { "subrosa.io", false }, { "subscription-list.com", true }, + { "subscription-plus.uk", true }, + { "subscriptionplus.uk", true }, { "subserv.tk", true }, + { "subsidioalempleo.cl", true }, { "subsistence.wiki", true }, { "subsitude.tk", true }, { "subsoft.tk", true }, + { "substanceandprogram.info", true }, { "substances.be", true }, { "substitutealert.com", true }, { "substore.co.il", true }, + { "subteen.gq", true }, { "subterra.tk", true }, { "subtitry.ru", true }, { "subtituleros.tk", true }, - { "subtlelonging.com", false }, + { "suburb.social", true }, { "suburban-landscape.net", true }, { "suburbaninfinitioftroyparts.com", true }, { "suburbanprojects.com.au", true }, @@ -115394,30 +132440,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "suburbanweldingandsteel.com", true }, { "suburbass.tk", true }, { "suburbservice.net", false }, + { "subversionnews.tk", true }, { "subvetcustoms.com", true }, - { "succ.in", true }, + { "subway.co.id", true }, + { "subwaysurfers.tk", true }, + { "subwaytrain.tk", true }, { "succesprojekter.dk", true }, { "successbox.vn", true }, + { "successclicker.tk", true }, { "successdeliv.com", true }, { "successemails.ml", true }, - { "successful-online-business.com", true }, + { "successive.tech", true }, { "successminds.com", true }, + { "successrice.com", true }, + { "succmy.wang", true }, { "succorfish.net", true }, { "succubus.network", true }, { "succubus.xxx", true }, { "succulentplantguru.com", true }, + { "succulenty.ru", true }, { "sucessclick.gq", true }, { "suche.org", true }, { "suchhire.com", true }, { "suchhunde.wien", true }, { "suchmaschinen-werkstatt.de", true }, + { "suckerberg.gay", true }, + { "suckerpunch.com", true }, { "suckmyan.us", false }, + { "sucomaga.jp", true }, { "sucretown.net", true }, + { "sucro.us", true }, { "sucsses.cf", true }, { "sucsses.ga", true }, { "sucsses.gq", true }, - { "sucyshop.fr", true }, { "sudabaus.com", true }, + { "sudak-turizm.tk", true }, { "sudametrica.tk", true }, { "sudanell.tk", true }, { "sudanindependent.com", true }, @@ -115425,37 +132482,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sudaraka.org", false }, { "sudcalifornianos.me", true }, { "suddenlysavvy.com", true }, + { "sudeleycastle.co.uk", true }, { "sudmotor-occasions.be", true }, { "sudo.li", true }, { "sudo.ws", true }, { "sudoash.com", true }, { "sudocat.me", true }, + { "sudoctor.co", true }, { "sudoku-insight.tk", true }, { "sudoku.org.ua", true }, + { "sudoless.com", true }, + { "sudoless.eu", true }, + { "sudoless.net", true }, { "sudosaveclimate.com", true }, { "sudoschool.com", true }, { "sudosu.fr", true }, + { "sudrania.com", true }, { "sudtirol.com", true }, - { "sudya-dredd.ru", true }, { "suecaunitedfc.tk", true }, { "suedtirolerhotels.it", true }, + { "sueletricidade.pt", true }, { "suelyonjones.com", true }, { "suempresa.cloud", true }, { "suenotek.com", true }, { "sueperclean.com", true }, { "suerteloteria.com", true }, - { "suetreweeke.com", true }, + { "suessenbecker.de", true }, + { "suessundbitter.de", true }, { "suevia-ka.de", true }, { "suff.co", true }, { "suffix.ru", true }, { "sufix.cz", true }, { "sufleu.ro", true }, { "sufleuri.ro", true }, + { "sug.hr", true }, { "sugarbrother.com", false }, { "sugarcube.ml", true }, { "sugarcube.tk", true }, { "sugardaddy.network", true }, { "sugardating.network", true }, + { "sugarfans.com", true }, { "sugarfetch.com", true }, { "sugargrant.gq", true }, { "sugarhillsfarm.com", true }, @@ -115464,26 +132530,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sugaropencloud.eu", true }, { "sugaropencloud.uk", true }, { "sugarpiano.com", true }, + { "sugarroll.ml", true }, { "sugarsalted.com", true }, { "sugarshin.net", true }, { "sugartownfarm.com", true }, { "sugaru.pe", true }, { "sugatime.tk", true }, + { "sugattor.ga", true }, { "sugawara-soroban.com", true }, { "suggea.com", true }, { "suggestim.ch", false }, { "sugoicraft.tk", true }, { "sugos.cf", true }, + { "sugos.ga", true }, { "sugos.gq", true }, { "sugos.ml", true }, - { "suhaildawood.com", true }, + { "suhaiseguradora.com", true }, { "suhost.com.br", true }, + { "suhost.site", true }, { "suicide.gq", true }, + { "suicidegirls.cf", true }, { "suicidepreventioncenter.tk", true }, { "suike.com", true }, { "suikerspinnetje.nl", true }, { "suisui.stream", true }, + { "suite360sel.org", true }, { "suiteassured.com", true }, + { "suitecrm.com", true }, { "suitesapp.com", true }, { "suitocracy.com", true }, { "sujal.com", true }, @@ -115492,32 +132565,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sujoydhar.in", true }, { "sukamusik.tk", true }, { "suke3.jp", true }, - { "sukherchador.org", false }, + { "sukhumvit-psycho.com", true }, { "suki.moe", true }, { "sukirastore.com", true }, { "sukiu.net", true }, { "sukker-oaxaca.com", true }, - { "sukoyaka-labo.com", true }, { "sukoyakapp.com", true }, { "sukrie.net", true }, + { "sukruarslan.tk", true }, { "suksit.com", false }, { "sulabs.org", true }, + { "sulakskii-canyon.ru", true }, { "sulavius.tech", true }, { "sulawesi-adventure.tk", true }, { "suleeka.tk", true }, { "sulek.eu", true }, + { "sulemanmalik.tk", true }, + { "sulemanquotes.tk", true }, + { "suleri.tk", true }, { "sulfegate.org", true }, - { "sulishospital.com", true }, + { "sulkmen.tk", true }, { "sullivancountypa.gov", true }, { "sulman4paf.tk", true }, { "sulphurspringsar.gov", true }, { "sultans.tk", true }, { "sulytics-tool.com", true }, { "sum1.tk", true }, + { "suma.coop", true }, { "sumac.is", true }, { "sumakola.space", true }, { "sumanai.gq", true }, { "sumanai.tk", true }, + { "sumantv.com", true }, { "sumaque.com", true }, { "sumatogroup.com", true }, { "sumatphoto.com", true }, @@ -115529,6 +132608,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sumatraselatan.cf", true }, { "sumatraselatan.ga", true }, { "sumatraselatan.gq", true }, + { "sumatraselatan.ml", true }, { "sumatraselatan.tk", true }, { "sumatrautara.cf", true }, { "sumatrautara.ga", true }, @@ -115536,41 +132616,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sumatrautara.ml", true }, { "sumatrautara.tk", true }, { "sumatriptan365.tk", true }, + { "sumbur.ga", true }, { "sumcrevillent.tk", true }, { "sumecho.com", true }, + { "sumguy.com", true }, + { "sumhost.ml", true }, + { "sumiko.moe", true }, + { "sumill.com", true }, + { "sumire.ne.jp", true }, + { "sumisa.cf", true }, { "sumit.blog", true }, { "sumit.sh", true }, + { "sumitbot.ga", true }, { "sumitchahal.blog", true }, { "sumitchahal.com", true }, { "sumiyakimatsu.com", true }, { "sumkunado.ru", true }, + { "summa.es", true }, { "summa.eu", false }, { "summarized.gq", true }, + { "summaryexecution.com", true }, + { "summaryexecution.net", true }, + { "summaryexecution.org", true }, { "summer.ga", true }, { "summer.today", true }, { "summerbo.at", true }, { "summercampthailand.com", true }, { "summerdance.tk", true }, + { "summerfieldtwpmonroemi.gov", true }, + { "summerjam.de", true }, { "summermc.cc", true }, { "summermovies.nyc", true }, { "summerslandingwr.com", true }, { "summerstylessalon.com", true }, + { "summing.ga", true }, { "summit-humanpotential.com", true }, { "summit-level.ru", true }, + { "summit-research.org", true }, { "summitcountyboe.gov", true }, - { "summitcountyrealestate.com", true }, + { "summitcustomsbrokers.com", true }, { "summitdentistry.nl", true }, - { "summitescorts.com", true }, { "summiteyekc.com", true }, { "summitlighthousela.org", true }, + { "summitms.gov", true }, { "summitseodesign.com", true }, + { "sumner-jc-wi.gov", true }, + { "sumochki.tk", true }, { "sumppumpchicagoil.com", true }, { "sumran.in", true }, { "sumter.info", true }, { "sumtercountysc.gov", true }, + { "sumterhousecleaning.com", true }, { "sumthing.com", true }, + { "sumtotal.host", true }, + { "sumtotallab.host", true }, { "sumutoday.com", true }, + { "sumzero.com", true }, { "sun-beach.com.ua", true }, + { "sun-host.ml", true }, { "sun-lounge.be", true }, { "sun-studio.tk", true }, { "sun-wellness-online.com.vn", true }, @@ -115581,18 +132684,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sun1378.com", true }, { "sun668.asia", true }, { "sun668.co", true }, - { "sunbake.co.za", true }, { "sunbeltasphalt.com", true }, { "sunbeltsolomon.com", true }, { "sunbike-driver.com", true }, { "sunbirdgrove.com", true }, { "sunbit.com", true }, + { "sunblind.tk", true }, + { "sunbnice.com", true }, { "sunburstdata.com", true }, { "sunbury.xyz", true }, + { "sunby.jp", true }, { "sunby.org", true }, { "suncanary.tk", true }, { "suncat.tk", true }, { "sunchasercats.com", true }, + { "sunchild.ml", true }, { "suncity288.com", true }, { "suncity288.net", true }, { "suncity8118.cn", true }, @@ -115607,76 +132713,98 @@ static const nsSTSPreload kSTSPreloadList[] = { { "suncity8668.com", true }, { "suncity8998.com", true }, { "suncitycinemas.com", true }, - { "suncloud.ch", true }, { "suncoastdisplays.com", true }, { "suncoastrebuilding.com", true }, { "suncomegrain.ga", true }, { "sundanceusa.com", true }, { "sunday.pm", true }, { "sundayfundayjapan.com", true }, + { "sundaysky.com", true }, + { "sunderland.ac.uk", true }, + { "sunderlandmoneyman.com", true }, + { "sundhedsdatastyrelsen.dk", true }, { "sundhedsvejen.dk", true }, + { "sundialpowdercoating.com", true }, + { "sundiel.tk", true }, + { "sundoctors.com.au", false }, { "suneilpatel.com", true }, { "sunfeathers.net", true }, { "sunfiregold.com", true }, { "sunfireshop.com.br", true }, { "sunflare.tk", true }, - { "sunflyer.cn", false }, + { "sunflowercircuitclerk.gov", true }, + { "sunflyer.cn", true }, { "sunfox.cz", true }, { "sunfulong.blog", true }, { "sunfulong.me", true }, + { "sungalsses.ml", true }, { "sunglassstyle.co.nz", true }, { "sungreen.info", true }, { "sunhaoxiang.net", true }, { "sunhills23.ru", true }, + { "sunho.net.tw", true }, { "suniru.com", false }, { "sunjiutuo.com", true }, { "sunjob.tk", true }, + { "sunkar.tk", true }, { "sunkavallymd.com", true }, { "sunkimurology.com", true }, { "sunlit.cloud", true }, + { "sunmeiren.com", true }, { "sunn.ie", true }, { "sunnuslight.com", true }, { "sunny.co.uk", true }, + { "sunnyhome.tk", true }, { "sunnylyx.com", true }, { "sunnynetworks.net", true }, { "sunnyoxygen.xyz", true }, { "sunnyside-jazzclub.com", true }, + { "sunnysideinc.ca", true }, { "sunnysin.net", true }, { "sunnyssingh.tk", true }, - { "sunnyvalesuites.com", true }, { "sunnyx3m.com", true }, { "sunokuran.tk", true }, + { "sunoven.com", true }, { "sunpax.ga", true }, { "sunpig.com.my", true }, { "sunpig.com.sg", true }, { "sunpig.my", true }, { "sunpig.sg", true }, { "sunplay.host", true }, + { "sunpower.id", true }, { "sunradio.tk", true }, { "sunred.info", true }, { "sunred.org", true }, { "sunrichtec.com", true }, { "sunrise.tk", true }, + { "sunrisebeachmo.gov", true }, + { "sunrisebeachtx.gov", true }, + { "sunrisecovelodge.com", true }, + { "sunrisesolutionsutah.com", true }, { "sunrisewhen.com", true }, { "sunroof.ga", true }, { "sunroomsbywoodland.com", true }, { "sunroomsbywoodlandwindows.com", true }, { "sunroomschicagoil.com", true }, + { "sunsafe.se", true }, { "sunsetfire.de", true }, { "sunsetmusic.tk", true }, { "sunsetnelson.com", true }, + { "sunsetservicecentre.ca", true }, { "sunsetweb.fr", true }, { "sunsetwx.com", true }, { "sunshilin.tk", true }, { "sunshine-cleaners.com.au", true }, + { "sunshinefrontier.tk", true }, { "sunshinelife.tk", true }, { "sunshinelocksmith.com", true }, - { "sunshinelogix.vn", true }, { "sunshineoilstop.com", true }, { "sunshinerequest.com", true }, { "sunshinesf.org", true }, + { "sunshinesramblings.com", true }, { "sunskyview.com", true }, { "sunsong.org", true }, + { "sunsparksolar.co.uk", true }, { "sunsquare.cz", true }, { "sunstar.bg", true }, { "sunstaroptical.com", true }, @@ -115691,35 +132819,67 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sunsunjewelry.net", true }, { "sunsunjewelry.org", true }, { "sunticschool.org", true }, + { "sunvillas.vn", true }, { "sunwahpanama.com", true }, + { "sunwayxfarms.com", true }, { "sunwei-proxy.tk", true }, { "sunwolf.studio", true }, { "sunyanzi.cf", true }, { "sunyanzi.tk", true }, { "suomensotilas.fi", true }, + { "suomentilitoimistot.fi", true }, { "suomiheraa.com", true }, { "suomika.pl", true }, { "suourl.com", false }, + { "sup-net.de", true }, { "supa.sexy", true }, + { "supasomsak.de", true }, + { "supazena.com", true }, + { "supdajuice.tk", true }, { "supedio.com", true }, { "supedium.com", true }, { "supedium.link", true }, - { "supedium.shop", true }, { "supel.cf", true }, { "supel.ga", true }, + { "supel.gq", true }, { "supel.ml", true }, + { "super-60.ag", true }, + { "super-60.biz", true }, + { "super-60.com", true }, + { "super-60.de", true }, + { "super-60.eu", true }, + { "super-60.info", true }, + { "super-60.net", true }, + { "super-60.org", true }, { "super-baik.tk", true }, - { "super-erotica.ru", true }, + { "super-boy.tk", true }, { "super-gs.jp", true }, + { "super-knighki.gq", true }, + { "super-lolitas.tk", true }, { "super-net.tk", true }, { "super-o-blog.com", true }, + { "super-puper.su", false }, + { "super-silicon.com", true }, { "super-trophy.de", true }, { "super11.nl", true }, { "super365.info", true }, + { "super365aa.com", true }, + { "super60.ag", true }, + { "super60.biz", true }, + { "super60.de", true }, + { "super60.eu", true }, + { "super60.info", true }, + { "super60.net", true }, + { "super60.org", true }, + { "super60plus.de", true }, { "superaficionados.com", true }, { "superalem.org", true }, + { "superb.games", true }, + { "superb.net", true }, { "superbart.nl", true }, + { "superbaskirskij-med.tk", true }, { "superbdistribute.com", true }, + { "superbe.com", true }, { "superbestpalsclub.tk", true }, { "superbir.net", true }, { "superbomber.tk", true }, @@ -115738,7 +132898,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "supercastlessunshinecoast.com.au", true }, { "supercentenarian.com", true }, { "supercharged.co.uk", true }, - { "supercima.com", false }, { "supercinebattle.fr", true }, { "supercontent.cf", true }, { "supercontent.ga", true }, @@ -115747,9 +132906,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "supercorp.cf", true }, { "supercours.net", true }, { "supercraft.shop", true }, - { "supercursosonline.store", true }, { "superdaddy.club", true }, { "superdeals.cf", true }, + { "superdevtools.com", true }, + { "superdolly.cf", true }, { "superdolly.ga", true }, { "superdolly.gq", true }, { "superdolly.ml", true }, @@ -115760,58 +132920,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "superfaktura.at", true }, { "superfaktura.cz", true }, { "superfaktura.sk", true }, + { "superfans.top", true }, { "superfastpress.com", true }, + { "superfastquintessentially.co.uk", true }, { "superfavorite.tk", true }, { "superfilmgeldi.com", true }, { "superfluous.tk", true }, { "superfly.tk", true }, { "superfoodsexplained.com", true }, - { "superform-staging.herokuapp.com", true }, - { "superglidewardrobes.co.uk", true }, + { "superfury.tk", true }, { "supergmtransport.com.au", true }, { "supergood.ga", true }, + { "supergoods.tk", true }, + { "supergoop.com", true }, { "supergrandmasternetwork.com", true }, - { "supergreentonik.com", true }, + { "supergroup.tk", true }, { "superguide.com.au", true }, { "superhappiness.com", true }, - { "superhappyfun.club", true }, { "superherba.cz", true }, { "superherofactory.hu", true }, + { "superhits.gq", true }, { "superhome.com.au", true }, { "superhumanendurance.ga", true }, + { "superhyp.de", true }, { "superidea.in", true }, { "superidropulitrice.com", true }, + { "superiorairservices.com", true }, { "superiordetail.tk", true }, { "superiorinnercore.game-host.org", true }, { "superiorinngrandmarais.com", true }, { "superiormanifestations.com", true }, + { "superiormusic.tk", true }, { "superioroptical.com", true }, { "superioropticalva.com", true }, { "superiorseamlessinc.com", true }, { "superiorseating.com", true }, + { "superiorvision.com", true }, { "superis.eu", true }, + { "superkakdoma.ru", true }, { "superklima.ro", false }, { "superkonsult.se", true }, + { "superkrasota.tk", true }, + { "superlevel.de", true }, { "superlight.tk", true }, { "superlisa.nl", true }, { "superlog.tk", true }, + { "superlol.tk", true }, { "supermae.pt", true }, { "supermagna.tk", true }, + { "supermanera.tk", true }, { "supermarkets.ga", true }, + { "supermart.tk", true }, { "supermarx.nl", true }, { "supermedia.cool", true }, + { "supermeitw.com", true }, { "supermercadosdia.com.ar", true }, { "supermercato24.it", true }, { "supermil.ch", true }, + { "supermini-games.tk", true }, { "supermustang.tk", true }, { "supern0va.net", false }, { "supernatural-fans.tk", true }, { "supernaturalbrand.com", true }, { "supernaut.info", true }, + { "supernogi.ga", true }, { "supernovicebaker.com", true }, { "superops.ai", true }, + { "superpaczka24.pl", true }, { "superpase.com", true }, { "superpi.noip.me", true }, + { "superpollo.com.ec", true }, { "superpowerexperts.com", true }, { "superraclette.fr", true }, { "supersahnetorten.de", true }, @@ -115819,6 +132997,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "superseguros.gob.do", true }, { "superservers.ml", true }, { "supershrooms.nl", true }, + { "supersisi.cf", true }, + { "supersisi.ml", true }, + { "superskidki.cf", true }, + { "supersmashflash.com", true }, { "supersocial.net", true }, { "supersole.net", false }, { "supersolenoid.tk", true }, @@ -115826,21 +133008,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "superspeller.ng", true }, { "superstargossip.com", true }, { "superstarhost.tk", true }, + { "superstart.tk", true }, { "supersteosbouncycastles.com", true }, { "superstone.diamonds", true }, { "superstropdas.nl", true }, { "supersu.kr", true }, { "superswingtrainer.com", true }, - { "supertasker.org", true }, - { "supertoc.com", true }, + { "supertape.com", true }, + { "supertape.site", true }, { "supertrade.tk", true }, { "supertrophy.de", true }, { "supertutorial.com.br", true }, + { "superunion.com", true }, + { "superuser.one", true }, { "supervasan.se", true }, { "supervets.com.au", true }, + { "supervisorbullying.com", true }, { "superway.es", true }, { "superwhoopi.tk", true }, + { "superworks.com", true }, + { "superzaim.ga", true }, { "supfood.cz", true }, + { "suphelper.ru", true }, { "supioka.com", true }, { "suplementasi.com", true }, { "suplments.co.uk", true }, @@ -115850,18 +133039,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "suplments.it", true }, { "suplments.pt", true }, { "supmil.net", true }, + { "suppchat.ru", true }, { "suppdeals.eu", true }, { "supperclub.net", true }, + { "suppernova.com", true }, + { "supplement.cf", true }, { "supplementaanbiedingen.nl", true }, { "supplementalconditions.com", true }, { "supplementpolice.tk", true }, + { "supplements101.net", true }, { "supplementwarehouseonline.com", true }, + { "supplhi.com", true }, { "suppliersession2021.com", true }, { "supplies24.at", true }, { "supplies24.es", true }, { "supplychainriskmanagement.com", true }, { "supplynation.org.au", true }, + { "supplyoutlook.com", true }, { "support-ticino.ch", true }, + { "support.it", true }, { "support.mayfirst.org", false }, { "support1448.com", true }, { "support1448.org", true }, @@ -115869,22 +133065,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "supportal.one", true }, { "supportericking.org", true }, { "supportfan.gov", true }, + { "supportiv.com", true }, { "supportivecare.org", true }, + { "supportlafd.org", true }, + { "supportme123.com", false }, { "supportmeindia.com", true }, { "suppos-net.tk", true }, { "supra.tf", true }, { "supracube.com", true }, { "supraelco.com", true }, + { "suprax365.tk", true }, { "suprem.biz", false }, { "suprem.ch", false }, { "supremaa.com", true }, { "supremacrypt.com", true }, { "supreme-council.me", true }, + { "supreme-court.tk", true }, { "suprememale.tk", true }, { "supremestandards.com", true }, + { "suprintbot.xyz", true }, { "supriville.com.br", true }, { "supropionegocio.tk", true }, { "supweb.ovh", false }, + { "supwoman.site", true }, + { "supya.co", true }, { "suranganet.tk", true }, { "surasak.org", true }, { "surasak.tk", true }, @@ -115892,8 +133096,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "suraya.online", true }, { "sure-it.de", true }, { "surebets.bet", true }, + { "surecloud.com", true }, + { "surefire.org.uk", true }, { "surefit-oms.com", true }, { "surefleet.com.au", true }, + { "surelyhired.com", true }, + { "suresi.com.tr", true }, + { "suresi.gen.tr", true }, + { "surest.com", false }, { "surf1969.tk", true }, { "surfacespots.ga", true }, { "surfenergy.tk", true }, @@ -115904,32 +133114,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "surfocal.com", false }, { "surfocal.net", true }, { "surfoleon.tk", true }, + { "surfrating.xyz", true }, + { "surfseo.ml", true }, { "surfseo.tk", true }, { "surfsm2.ddns.net", true }, + { "surgatekno.com", true }, { "surgeholdinggroup.com", true }, { "surgeongeneral.gov", true }, - { "surgerylifeenhancement.com", true }, + { "surgicalassociates.sg", true }, { "surgicalassociateswny.com", true }, { "surgicalresourcesgroup.com", true }, { "surgispa.net", true }, + { "surgoinsvilletn.gov", true }, { "surialternat.tk", true }, - { "suricate.ru", true }, + { "surik.de", true }, { "surikov.tk", true }, + { "suriname.tk", true }, + { "surivracht.nl", true }, { "surl.win", true }, { "surma.tk", true }, - { "surmoms.com", true }, - { "surnet.io", true }, { "surnganet.tk", true }, { "suroil.com", true }, { "suroot.moe", true }, + { "surpassexam.com", true }, + { "surpasshosting.com", true }, { "surplusdirectory.ml", true }, + { "surplusrecord.com", true }, { "surpreem.com", true }, + { "surprisepubliclibrary.gov", true }, { "surpriz-net.tk", true }, - { "surprizeme.ru", true }, { "surrealdb.com", true }, + { "surrealistas.tk", true }, + { "surreycyclingclub.co.uk", true }, { "surreyheathyc.org.uk", false }, + { "surreysportspark.co.uk", true }, { "surrogacyaccount.com", true }, { "surrycountync.gov", true }, + { "surrycountyncvotes.gov", true }, { "surthriveak.com", true }, { "suruifu.com", true }, { "suruifu.tk", true }, @@ -115942,27 +133163,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "surveyorcloud.com", true }, { "surveyremover.tk", true }, { "surveyspy.net", true }, + { "surveytester.com", true }, { "surveyviet.com", true }, { "survicate.com", true }, - { "survivalfitnessplan.com", true }, + { "survival-mastery.com", false }, + { "survivalgearideas.com", true }, + { "survivalknivar.se", true }, { "survivebox.fr", true }, { "survivebox.net", true }, { "survivingmesothelioma.com", true }, { "suryayurveda.com", true }, + { "sus.zone", true }, { "susajja.com", true }, + { "susanacruzdesign.com", true }, + { "susanagomez.tk", true }, { "susanbpilates.co", true }, { "susanbpilates.com", true }, { "susanmmeyersauthor.com", true }, { "susann-kerk.de", true }, { "susanna-komischke.de", true }, + { "susannaridge.com", true }, { "susanvelez.com", true }, { "susbit.com", true }, { "susconam.org", true }, + { "susdomicilios.co", true }, + { "suse.com", true }, { "suseki.ga", true }, + { "sushi-sakura.tk", true }, { "sushi.roma.it", true }, { "sushibesteld.nl", true }, { "sushifrick.de", true }, { "sushikatze.de", true }, + { "sushikiosk.co.id", true }, + { "sushilmedicos.tk", true }, + { "sushiprints.com", true }, { "susiestoddart.tk", true }, { "suska.tk", true }, { "susoft.tk", true }, @@ -115972,48 +133206,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "suspiciousdarknet.xyz", true }, { "suss.be", true }, { "sussexheart.com", true }, + { "sussexsecurityinstallations.co.uk", true }, + { "sussexwi.gov", true }, { "sustain.software", true }, { "sustainability.gov", true }, { "sustainabilityknowledgegroup.com", true }, { "sustainabilitysociety.hk", true }, { "sustainableweb.dk", true }, + { "sustainalytics.com", true }, { "sustained.tk", true }, { "sustainoss.org", true }, { "sustc.ac.cn", true }, { "sustekova.eu", true }, { "susthx.com", true }, { "susumulus.ml", true }, + { "suswhw.top", true }, { "sut-b.de", true }, + { "sutabi.tk", true }, + { "suter.au", true }, + { "suter.id.au", true }, { "suternetwork.ch", true }, { "suth.jp", true }, { "sutherlinoregon.gov", true }, { "sutinenmatthews.tk", true }, + { "sutmar-anwaltskanzlei.de", true }, { "sutore.com", true }, - { "suts.co.uk", true }, { "suttacentral.net", true }, - { "suttonbouncycastles.co.uk", true }, + { "suttonbank.com", true }, { "sutty.nl", true }, { "suurhelsinki.cf", true }, { "suuria.de", true }, { "suutaripaivat.fi", true }, { "suv4.net", true }, + { "suvalor.com", true }, { "suvari.com.tr", true }, { "suvidhaapay.com", true }, { "suvirink.lt", true }, + { "suvisioninc.com", true }, { "suwanneecountyfl.gov", true }, { "suwanya.cn", true }, { "suwcountyfl.gov", true }, { "suwebcreativa.com", true }, - { "suzannecooper.com", true }, + { "suyati.com", true }, { "suzannejauchius.com", true }, + { "suzansalem.nl", true }, + { "suzdalgrad.cf", true }, { "suzi3d.com", true }, - { "suziekovner.com", true }, { "suziepachecoart.com", true }, { "suzikogsm.tk", true }, + { "suzuki.com", true }, { "suzukiarindo.co.id", true }, { "suzukibali.id", true }, { "suzukicintadamai.co.id", true }, - { "suzukikenichi.com", true }, + { "suzukicycles.com", true }, { "suzukimarinepress.com", true }, { "suzukinjs.co.id", true }, { "suzukinozomu.tk", true }, @@ -116027,7 +133272,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sv-ec-ditzingen.de", true }, { "sv-schody.cz", true }, { "sv-turm-hohenlimburg.de", true }, + { "sv-webdesign.com", true }, { "sv.search.yahoo.com", false }, + { "sv1862ruesselsheim.de", false }, { "sv1880-lichtenau.de", false }, { "sv443.net", true }, { "svager.cz", true }, @@ -116043,28 +133290,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "svatba.cf", true }, { "svatba.ml", true }, { "svatbamisiaviti.tk", true }, + { "svatyjur.tk", true }, { "svauto.ks.ua", true }, + { "svc-sitec.com", true }, { "svc-sitec.com.mx", true }, - { "svc-sitec.mx", true }, { "svc-sitec.org", true }, { "svc-studioslive-api-dev.azurewebsites.net", true }, + { "svc-tools.ru", true }, { "svc.bike", true }, { "svc1.xyz", true }, { "svdb.co", false }, - { "svdesign.su", true }, { "sve-hosting.nl", true }, { "svealandsgruppen.tk", true }, + { "svecbeton.cz", true }, { "svedalataxi.com", true }, { "svedorszag.tk", true }, { "sveikas.info", true }, { "sven-erik.org", true }, - { "sven.ai", true }, { "svenbacia.me", true }, + { "svendgram.com", true }, { "svendubbeld.nl", true }, { "sveneckelmann.de", true }, { "svenhammond.com", true }, - { "svenjaundbenni.de", true }, { "svenjaundchristian.de", true }, + { "svenmuller.com", true }, { "svenmuller.nl", true }, { "svennd.be", false }, { "svenpeter.eu", true }, @@ -116072,39 +133321,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "svenpeter.me", true }, { "svenpeter.net", true }, { "svenpeter.org", true }, + { "svenska.events", true }, + { "svenskakyrkansunga.tk", true }, { "svenskapsalmer.se", true }, { "svenskarnaochinternet.se", true }, { "svenskdam.se", true }, { "svenskmediabevakning.se", true }, { "svensson-generators.be", true }, { "sverdlov.spb.ru", true }, + { "sverdlovsk.gq", true }, { "sverdlovsk.ml", true }, + { "sverdlovsk.tk", true }, + { "sverlo.cf", true }, + { "svet.tk", true }, { "svetandroida.cz", true }, - { "svetapublic.com", true }, + { "svetbank.cz", true }, { "svetila.com", true }, + { "svetix.ch", true }, + { "svetlanamamedova.tk", true }, { "svetlayarus.tk", true }, { "svetlilo.com", true }, + { "svetlograd.tk", true }, { "svetoch.ga", true }, { "svetoch.tk", true }, { "svetodiod.gq", true }, { "svetonaushniki.tk", true }, { "svetplast.spb.ru", false }, { "svetrelaxu.cz", true }, + { "svetserialov.to", true }, { "svetzitrka.cz", false }, + { "svfitness.ru", true }, { "svg-board.ml", true }, + { "svgdesigns.com", true }, { "svge.ms", true }, { "svgems.xyz", true }, + { "svgwg.org", true }, { "svgzone.tk", true }, + { "svh.nl", true }, { "svhni.nl", true }, { "svia.nl", true }, { "sviatzoo.com", true }, - { "svijet-medija.hr", true }, + { "svin.loan", true }, { "svirel.ga", true }, { "sviz.pro", true }, { "svj-stochovska.cz", true }, { "svjvn.cz", true }, - { "svkatarina.hr", true }, + { "svkpk.cz", true }, { "svm-basketball.de", true }, + { "svmedia.be", true }, + { "svn-yokaiispirit.ddns.net", true }, + { "svnty2.dedyn.io", true }, { "svobodny.fr", true }, { "svobodnyblog.cz", true }, { "svodjapan.info", true }, @@ -116114,10 +133380,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "svorkmofotball.tk", true }, { "svpe.de", true }, { "svpe.eu", true }, + { "svportalframe.com", true }, + { "svrtech.com.tr", true }, { "svrx.one", true }, { "svse.global", true }, { "svseglobal.com", true }, + { "svsewerut.gov", true }, { "svswebmarketing.com", true }, + { "svtl.ch", true }, { "svtr.de", true }, { "svtv.org", true }, { "svwissel.tk", true }, @@ -116129,88 +133399,104 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swabifoundation.tk", true }, { "swacash.com", true }, { "swacp.com", true }, + { "swacu.org", true }, + { "swag.live", true }, { "swag.pw", true }, { "swagat.tk", true }, { "swagger.io", true }, { "swagger.london", true }, + { "swaglookbook.com", true }, { "swagmoney.enterprises", true }, - { "swagsocial.net", true }, + { "swagsocial.net", false }, { "swahili-dictionary.com", true }, { "swain.tk", true }, { "swallowforum.tk", true }, - { "swallowgateway.com", true }, { "swallsoft.co.uk", true }, { "swallsoft.com", true }, - { "swamiclub.ru", true }, { "swanbitcoin.com", true }, { "swansdoor.org", true }, - { "swanseajobs.net", true }, { "swanseama.gov", true }, + { "swantonvt.gov", true }, { "swanvinylworks.com", true }, { "swap-ict.nl", true }, { "swap.gg", true }, { "swap.ly", true }, { "swapbox.tk", true }, - { "swapcard.com", true }, + { "swapfiets.com", true }, + { "swapfiets.de", true }, + { "swapfiets.nl", true }, { "swapfin.com", true }, + { "swappa.com", true }, + { "swapspace.co", true }, { "swarfarm.com", true }, { "swargvibha.tk", true }, { "swarlys-server.de", true }, - { "swarmation.com", true }, + { "swarmandsting.com", true }, { "swarovskijewelry.tk", true }, + { "swarozyca.pl", true }, { "swat.io", true }, { "swat4stats.com", true }, { "swataratwpauthority-pa.gov", true }, - { "swatch.com", true }, { "swatee.com", true }, { "swavedigest.com", true }, + { "swavlambancard.gov.in", true }, { "sway-cdn.com", true }, { "sway.com", true }, { "swayampaaka.com", true }, { "swc-cfc.gc.ca", true }, { "swcleanair.gov", true }, { "swd.agency", true }, - { "swdevteam.com", true }, { "swe77.com", true }, { "swe777.com", true }, { "sweak.net", true }, { "sweat-shirts.tk", true }, { "sweatercon.com", true }, { "swecha.org", true }, + { "swedbank.com", true }, { "swedbank.se", true }, { "swederica.tk", true }, { "swedish-saints.tk", true }, + { "swedish.so", true }, { "swedishforces.tk", true }, { "swedishhost.com", true }, { "swedishhost.se", true }, { "sweep-me.net", true }, - { "sweepay.ch", false }, + { "sweep-staging.com", true }, + { "sweep.net", true }, { "sweet-spatula.com", true }, + { "sweet64.fr", true }, { "sweetair.com", true }, { "sweetairlines.tk", true }, + { "sweetamoris.de", true }, { "sweetbabyjesus.com", true }, + { "sweetbasilscafe.com", true }, { "sweetcalculus.ru", true }, + { "sweetcoraline.eu.org", true }, { "sweetcorner.tk", true }, { "sweetdata.io", true }, { "sweetdeko.com", true }, { "sweeteleven.tk", true }, - { "sweetenedcondensed.com", true }, { "sweetgood.de", true }, { "sweetgracemarket.com", true }, { "sweetharvestfoods.com", true }, { "sweethearts.tk", true }, + { "sweetheartvideo.com", true }, { "sweethomesnohomishrenovations.com", true }, { "sweethorses.tk", true }, { "sweetintrigue.tk", true }, { "sweetlegs.jp", true }, - { "sweetlycakes.com", false }, + { "sweetlycakes.com", true }, { "sweetologist.co", true }, { "sweetparis.cf", true }, { "sweetpinkpussy.org", true }, { "sweetpummelfee.com", true }, { "sweets-mimatsu.com", true }, + { "sweetsandlifestyle.com", true }, + { "sweetsinner.com", true }, { "sweetspot.co.kr", true }, + { "sweetsugarcakes.com", true }, { "sweetsusinrw.org", true }, + { "sweettreatscookiedough.com", true }, { "sweetvanilla.jp", true }, { "sweetwatercountywy.gov", true }, { "sweetwatertx.gov", true }, @@ -116218,29 +133504,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sweharris.org", true }, { "swelife.se", true }, { "swellnote.com", true }, + { "swentr.site", true }, { "swerve-media-testbed-03.co.uk", true }, { "swet.com.ua", true }, { "swetrust.com", true }, { "swey.net", false }, { "swfmax.com", true }, - { "swgenetx.com", true }, + { "swgoh4.life", true }, { "swha.xyz", true }, + { "swhi.net", true }, { "swhw.io", true }, { "swi.sytes.net", true }, { "swiatpilki.com", true }, { "swid.co.uk", true }, + { "swiezastrona.pl", true }, { "swift-devedge.de", true }, { "swiftbonds.com", true }, { "swiftcashforcars.com.au", true }, { "swiftcodetoday.com", true }, + { "swiftcom.co.za", true }, { "swiftcrypto.com", true }, { "swifteh.net", true }, - { "swiftfx.net", true }, { "swiftgram.ml", true }, { "swiftink.com", true }, { "swiftirc.net", true }, { "swiftmod.net", true }, { "swiftmodcdn.net", true }, + { "swiftopal.com", true }, { "swiftpak.co.uk", true }, { "swiftqueue.com", true }, { "swiftrecharge.com", true }, @@ -116249,8 +133539,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swilagod.be", true }, { "swilatag.be", true }, { "swilly.org", true }, + { "swim-play.ru", true }, { "swim-smart.com", true }, { "swim.aero", true }, + { "swimclubinsurance.com", true }, + { "swimhome.es", true }, + { "swimlane.com", true }, { "swimmingpoolaccidentattorney.net", true }, { "swimmingpoolpumpsbassonia.co.za", true }, { "swimpool.co.il", true }, @@ -116261,7 +133555,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swindontennisclub.azurewebsites.net", true }, { "swindontennisclub.org", true }, { "swineson.me", true }, - { "swing-belleville.de", true }, { "swing.berlin", true }, { "swingerclub.in", true }, { "swingers.com.pt", true }, @@ -116272,14 +133565,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swingwomenswellness.com", true }, { "swingz.com.au", true }, { "swipedon.com", true }, + { "swipelux.com", false }, { "swipetv.ie", true }, - { "swish-ict.com", false }, + { "swireshipping.com", true }, + { "swish-ict.com", true }, { "swishmail.com", true }, { "swiss-apartments.com", false }, { "swiss-connection.net", false }, + { "swiss-export-compliance.com", true }, { "swiss-vanilla.ch", true }, { "swiss-vanilla.com", true }, + { "swiss-watch.com.ua", true }, + { "swissaquashop.ch", true }, { "swissbearfoodservices.com", true }, + { "swissbit.com", true }, { "swissborg.com", true }, { "swisscannabis.club", true }, { "swisschat.tk", true }, @@ -116292,8 +133591,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swissfreshaircan.com", false }, { "swissgrid.ch", true }, { "swissinternationalva.com", true }, - { "swisslifestyletips.ch", true }, { "swisslinux.org", true }, + { "swissneutral.net", true }, + { "swissquawk.ch", true }, { "swisstechmap.ch", true }, { "swisstranslate.ch", false }, { "swisstranslate.fr", false }, @@ -116304,45 +133604,53 @@ static const nsSTSPreload kSTSPreloadList[] = { { "swissxperts.ch", true }, { "switch-defekt.de", true }, { "switch-trader.com", true }, + { "switch.pt", false }, + { "switch2osm.org", true }, { "switchassur.fr", true }, + { "switchbacksystems.com", true }, { "switchboard.lgbt", true }, { "switchbyte.nl", true }, - { "switcheo.exchange", true }, + { "switcheo.exchange", false }, { "switcheo.rocks", true }, { "switchinitiatives.com", true }, { "switchinitiatives.fr", true }, { "switchinitiatives.org", true }, { "switchur.com", true }, - { "swivells.com", true }, { "swizio.com", true }, { "swjen.com.sg", true }, { "swjtu.today", true }, { "swjz.art", true }, { "swkdevserver.tk", true }, { "swktestserver.tk", true }, - { "swmcfcu.org", true }, { "swmlink.com", true }, { "swn-nec.de", true }, { "swocaoh.gov", true }, { "swoop-qa.cloud", true }, { "swoop.cloud", true }, + { "swopre-appgallop.azurewebsites.net", true }, { "swordfeng.xyz", true }, { "swordfighting.net", true }, { "swordpop.cf", true }, { "swordpop.gq", true }, + { "sworkit.com", true }, { "sworn.ga", true }, { "swosplinter.nl", true }, { "swostik.com", true }, { "swot-digital.com", true }, { "swparegionalcad.gov", true }, + { "swpat.org", true }, { "swqa.hu", true }, { "swrelay.net", true }, { "swretail.ga", true }, + { "swtp-p-appsrv-coordination-backend-businessservices1.azurewebsites.net", true }, + { "swtp-p-appsrv-donorevaluation-api-businessservices1.azurewebsites.net", true }, + { "swtp-p-appsrv-protocol-api-businessservices1.azurewebsites.net", true }, { "swtrayssq.gq", true }, { "swtun.com", true }, + { "swvatoday.com", true }, { "swvaux.com", true }, { "swwc.com", true }, - { "swxtd.com", false }, + { "swxtd.com", true }, { "swy.cz", true }, { "swyn.net", true }, { "swynwyr.com", true }, @@ -116350,148 +133658,154 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sx6729.com", true }, { "sx8.ovh", true }, { "sxcvid.com", true }, + { "sxdi.org", true }, { "sxistolithos.gr", true }, { "sxmd99.com", true }, - { "sxtik.com", true }, { "sy-anduril.de", true }, { "sy24.ru", true }, { "syaeful12ips.tk", true }, - { "syagai-torisimariyaku.com", true }, { "syakeapps.net", true }, { "syakonavi.com", true }, { "syazli7.me", true }, + { "sybersense.com", true }, { "syc-rotterdam.tk", true }, { "sycamorememphis.org", true }, { "sycca.com", true }, { "sychov.pro", true }, { "sycorr.com", true }, + { "syd.catholic.edu.au", true }, + { "sydcatholicschools.nsw.edu.au", true }, { "sydgrabber.tk", true }, { "sydney.dating", true }, { "sydneyaustralia.tk", true }, + { "sydneybamboo.com.au", false }, { "sydneybusinessweb.com.au", true }, - { "sydneychillies.com.au", true }, { "sydneyhelicopters.com.au", true }, + { "sydneylawnandturf.com.au", false }, { "sydneylounge.ga", true }, { "sydneyshisha.com.au", true }, { "sydneysteinger.com", true }, + { "sydneyvangelder.com", true }, { "syds.xyz", true }, - { "sydsray.xyz", true }, { "syedmuhdadasgardezi.tk", true }, { "syenar.net", true }, - { "syezd.com.au", true }, { "sygnalista-24.pl", true }, - { "syhost.at", true }, - { "syhost.ch", true }, - { "syhost.de", true }, { "sykam.com", true }, { "sykepleien.no", false }, { "sykiotis.com", true }, { "sykorp.com", true }, - { "sylaps.com", true }, + { "sylaps.com", false }, + { "sylcon.es", false }, { "sylencegsm.com", true }, { "sylfie.net", true }, { "sylino.tk", true }, { "syllogi.xyz", true }, + { "sylnaukraina.com.ua", true }, { "sylvaindurand.fr", true }, { "sylvaindurand.org", true }, - { "sylvainpaley.cool", true }, { "sylvaloir.fr", true }, - { "sylvan.me", true }, { "sylvangarden.net", true }, { "sylvantownshipmi.gov", true }, - { "sylve.ch", false }, - { "sylwiaipiotr.pl", true }, + { "sylviaharke.de", true }, { "sylwiart.pl", true }, + { "sylwiaspychala.pl", true }, { "sylwiasun.com", true }, { "sym01.com", true }, { "symantec.com.ru", true }, { "symatrix.co.uk", true }, + { "symbility.net", true }, { "symbiose-com.ch", false }, { "symbiose-immobilier.ch", false }, { "symbiose.com", true }, { "symbiosecom.ch", false }, + { "symbiote.com.au", true }, { "symbioxr.com", true }, { "symbolics.digital", true }, { "symbolnodes.org", true }, - { "symbridge.com", true }, { "symdevinc.com", true }, { "symeda.de", true }, { "symeonchen.com", true }, { "symetrix.tk", true }, { "symetryk.tk", true }, { "symflower.com", true }, + { "symfoninews.com", true }, { "symfora-meander.nl", true }, { "syminsight.tk", true }, { "symlink.io", true }, { "symlnk.de", true }, - { "symmetrysolar.com.au", true }, { "symoteb.ir", true }, { "sympletrade.com", true }, { "symplexia.com.br", true }, { "symplyos.tk", true }, { "sympmarc.com", true }, + { "symposit.com", true }, { "symposium.beer", true }, { "symptome-erklaert.de", true }, - { "symvolik.ru", true }, + { "symvolik.ru", false }, { "syna.dev", true }, { "syna.site", true }, { "synabi.com", false }, { "synackrst.net", true }, + { "synapse.pe", true }, + { "synapsemedical.com.au", true }, { "synapsepain.com", false }, - { "synapseretailing.com", false }, { "synaptickz.me", true }, - { "sync-it.no", true }, { "synccentre.com", true }, - { "synccore1.com", true }, { "syncevolution.org", true }, - { "syncflare.com", true }, { "syncgal.com", true }, + { "synchrocity.no", true }, { "synchrocube.com", true }, + { "synchronic.pl", true }, { "synchronicity.cz", true }, + { "synchronicity.one", true }, { "synchronyse.com", true }, - { "syncios.com", true }, { "synclio.com", true }, { "syncmylife.net", false }, - { "syncoffice.com", true }, - { "synconlinemedia.com", true }, { "syncplay.pl", true }, + { "syncresis.com", true }, + { "syncrony.com", true }, + { "syncsci.com", true }, { "syncspace.live", true }, - { "synd.io", true }, - { "synda.nu", true }, - { "syndic-discount.fr", false }, - { "syndicate.vip", true }, + { "syndigo.com", true }, + { "syndika.co", true }, { "syndikalismus-im-laendle.tk", true }, { "syneart.com", true }, { "synecek11.cz", true }, { "synedat.com", true }, - { "synergenxhealth.com", true }, + { "synergiamedicalcare.es", true }, { "synergiedenken.de", true }, { "synergisticsoccer.com", true }, { "synergy-logistics.tk", true }, { "synergyfitness.com.au", true }, + { "synergyofserra.com", true }, + { "synergytherm.com", true }, { "synergyzone.tk", true }, { "synerio.com", true }, { "synerionagile.com", true }, - { "synfac.com", true }, - { "syniah.com", true }, + { "synfrait.com", true }, { "synitsa.tk", true }, - { "synobook.com", false }, + { "synlab.es", true }, { "synology-distribution.de", true }, { "synology.com", false }, { "synonimluksusu.pl", true }, + { "synony.me", true }, + { "synonym24.at", true }, { "synonymedeutsch.com", true }, { "synonyymisanakirja.com", true }, + { "synoptek.com", true }, { "synotna.eu", true }, { "synrelay.com", true }, { "syntaxnightmare.com", true }, { "syntaxsociety.se", true }, { "syntech.co.za", true }, { "synth.no", true }, + { "synthax.codes", true }, { "synthesis.ru", true }, { "syntheticgrassliving.com.au", true }, { "synthetictrading.com", true }, + { "synthetis.com", true }, { "synthezis.tk", true }, - { "synthv.fun", false }, + { "synthgularity.net", true }, { "syntia.tk", true }, { "syntric.io", true }, { "syo-ryuga.jp", true }, @@ -116520,27 +133834,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sys-stat.de", true }, { "sys-state.de", true }, { "sys-tm.com", true }, - { "sys.pub", false }, + { "sys001-homenet.duckdns.org", true }, { "sysadmin.pm", true }, - { "sysadmin.xyz", true }, + { "sysadmin.xyz", false }, { "sysadmin21.tk", true }, { "sysadmins.ro", true }, { "sysadvisors.pl", true }, + { "sysaid.com", true }, { "sysbert.de", true }, + { "syscap.co.uk", true }, + { "syscap.com", true }, + { "syscap.uk", true }, + { "syscapassetfinance.uk", true }, + { "syscaponline.co.uk", true }, + { "syscom.be", true }, + { "sysconautomation.com", true }, { "syscoon.com", true }, { "sysctl.se", true }, { "syscurve.com", true }, + { "sysdams.com", true }, { "sysdb.io", true }, { "syselg.com", true }, { "sysert.tv", false }, { "sysgap-gsci.com", true }, { "sysin.org", true }, - { "syskit.com", true }, + { "syska.com", true }, { "syslogic.io", true }, { "sysmike.de", true }, { "sysmike.net", true }, { "sysnet.cz", true }, - { "sysoon.net", true }, { "sysoons.com", true }, { "sysopworld.cf", true }, { "sysopworld.ga", true }, @@ -116549,13 +133871,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "sysrigar.com", true }, { "sysrq.in", true }, { "sysrq.tech", false }, - { "sysstat.de", true }, + { "syssolindia.com", true }, { "sysstate.de", true }, { "systea.fr", true }, { "systea.net", true }, { "system-admin-girl.com", true }, { "system-design.tk", true }, + { "system-erp.com.pl", true }, { "system-fehler.tk", true }, + { "system-informer.com", true }, { "system-m.de", false }, { "system.is", true }, { "system.md", true }, @@ -116565,29 +133889,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "systematic-momo.dk", true }, { "systematik.nu", true }, { "systemausfall.org", true }, + { "systemb.ch", true }, { "systemblog.tk", true }, - { "systemchile.com", true }, - { "systemd.ch", false }, + { "systemc.com", true }, { "systemd.eu.org", true }, - { "systemd.info", true }, { "systemerka.pl", true }, { "systemerr.tk", true }, - { "systemintegra.ru", true }, + { "systemhaus.saarland", true }, + { "systeminformer.com", true }, + { "systemintegra.ru", false }, { "systemisbusy.info", true }, - { "systemische-praxis-darmstadt.de", false }, { "systemlead.pl", true }, { "systemli.org", true }, { "systemlinkcloud.com", true }, { "systemonthego.com", true }, + { "systems-thinking.eu", true }, { "systems.fail", true }, { "systemsense.com.au", true }, { "systemsinblue.tk", true }, + { "systemsltd.com", true }, + { "systemswizard.io", true }, { "systemtoto.ml", true }, { "systemysportowe.pl", true }, { "systemzeit.info", true }, { "systime.dk", true }, { "systoolbox.net", true }, - { "systrax.com", true }, { "syswap.fr", true }, { "syswiki.org", true }, { "sysystems.cz", true }, @@ -116597,16 +133923,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "syunpay.cn", true }, { "syuumi.eu", true }, { "syuumi.me", true }, - { "sywnthkrawft.tk", true }, { "syzdev.com", true }, { "syzygy-tables.info", true }, { "syzygycareers.com", true }, { "sz-ideenlos.de", true }, { "sz-lessgym-kamenz.de", true }, + { "szabadpingvin.eu", true }, + { "szachowaprzygoda.pl", true }, { "szadeczky.com", true }, { "szafkirtv.pl", true }, { "szalaiterko.hu", true }, { "szamitogepdepo.com", true }, + { "szamlarobot.hu", true }, { "szasz.me", true }, { "szaszm.tk", false }, { "szclsya.me", true }, @@ -116615,18 +133943,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "szegediszobafestok.hu", true }, { "szelagnes.com", true }, { "szelagnes.hu", true }, + { "szemuvegtrend.hu", true }, { "szentistvanpt.sk", true }, { "szepsegbennedrejlik.hu", true }, { "szerbnyelvkonyv.hu", true }, { "szerelem.love", true }, - { "szetoesq.com", true }, { "szhighsun.com", true }, { "szih.org.pl", true }, { "szilaghi.com", true }, + { "sziluett.xyz", true }, + { "szimpla.hu", true }, { "szinezdmagad.hu", true }, + { "szklarnia.pro", true }, { "szkolajazdykaleta.pl", true }, { "szkolenia-dron.pl", true }, - { "szkolenie-wordpress.pl", true }, { "szlovaknyelv.hu", true }, { "szlovennyelv.hu", true }, { "szmidtinwest.pl", true }, @@ -116637,40 +133967,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "szpro.ru", true }, { "szs-arbeitssicherheit.de", true }, { "szs.space", true }, + { "szsyidc.cf", true }, { "sztfh.hu", true }, { "sztoriboljeles.hu", true }, { "sztuanzi.top", true }, { "sztyup.com", true }, { "szuecs.net", true }, { "szuflady.pl", false }, - { "szw-hessen.de", true }, { "szwrc.co", true }, { "szww99.cc", true }, { "szybkiebieganie.pl", true }, - { "szyldmax.pl", true }, { "szyndler.ch", true }, { "szyszkowitz.at", true }, { "szzsivf.com", true }, + { "t-10.nz", true }, { "t-cophony.com", true }, { "t-dent.com", true }, { "t-fischer.net", true }, { "t-hawk.com", true }, { "t-inn.tk", true }, { "t-m.me", true }, + { "t-moon.hr", true }, { "t-network.nl", true }, - { "t-nice.com", true }, + { "t-op1.com", true }, + { "t-op10.com", true }, { "t-op2.com", true }, - { "t-opcs.com", true }, - { "t-opcs.info", true }, + { "t-op6.com", true }, + { "t-op7.com", true }, + { "t-op8.com", true }, + { "t-op9.com", true }, { "t-pc.org", true }, { "t-rink.com", true }, { "t-shirt-template.com", true }, - { "t-shirts4less.nl", false }, + { "t-shirts4less.nl", true }, { "t-shirty.tk", true }, { "t-unit.ru", true }, { "t-wirth.de", true }, + { "t.ar", true }, { "t.facebook.com", false }, { "t.net.co", true }, + { "t.pe", true }, { "t00228.com", true }, { "t08.co", true }, { "t09.cc", true }, @@ -116686,31 +134022,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "t22.uk", true }, { "t2data.com", true }, { "t2i.nl", true }, - { "t2kc.com", true }, + { "t2informatik.de", true }, + { "t2tea.com", true }, + { "t33.eu", true }, { "t36533.com", true }, + { "t3concrete.my", true }, { "t3hty.fr", true }, { "t3rror.net", true }, { "t3terminal.com", true }, + { "t4-wiki.de", true }, { "t404.de", true }, { "t47.io", true }, { "t4c.link", true }, - { "t4cc0.re", true }, { "t4gh.com", true }, - { "t4w.me", true }, { "t5118.com", true }, { "t51365.com", true }, { "t5197.co", true }, + { "t630.nl", true }, { "t6729.co", true }, { "t6957.co", true }, { "t7035.com", false }, { "t776633.com", true }, - { "t7e.de", false }, + { "t7e.de", true }, { "t7tech.net", true }, { "t8.software", true }, - { "t81365.com", true }, { "t82365.com", true }, { "t8803.com", false }, - { "t8805.com", true }, + { "t8805.com", false }, { "t8807.com", false }, { "t8809.com", false }, { "t8815.com", false }, @@ -116723,14 +134061,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "t88nn.com", false }, { "t88oo.com", false }, { "t88ss.com", false }, - { "t88vip0.com", true }, - { "t88vip1.com", true }, - { "t88vip2.com", true }, - { "t88vip3.com", true }, - { "t88vip4.com", true }, - { "t88vip5.com", true }, - { "t88vip6.com", true }, - { "t88vip7.com", true }, + { "t88vip0.com", false }, + { "t88vip1.com", false }, + { "t88vip2.com", false }, + { "t88vip3.com", false }, + { "t88vip4.com", false }, + { "t88vip5.com", false }, + { "t88vip6.com", false }, + { "t88vip7.com", false }, { "t88ww.com", true }, { "t88yy.com", true }, { "t8software.cn", true }, @@ -116741,18 +134079,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "t9297.co", true }, { "t9721.com", true }, { "t9728.co", true }, - { "t9i.in", true }, + { "ta-maison.fr", true }, + { "ta-nehisicoates.com", true }, { "ta-nuth.nl", false }, + { "ta-server.nl", true }, { "ta-soest.nl", false }, + { "ta2deem7arbya.com", true }, { "ta65.com", true }, { "taabe.net", true }, { "taaltaal.nl", true }, { "taanishsaifu.gq", true }, { "taapk.com", true }, + { "taarnby.dk", true }, { "taartbesteld.nl", true }, { "taartenvankoenie.tk", true }, + { "taartenvanmireille.nl", true }, { "taartenvanthea.nl", true }, { "taat.edu.ee", true }, + { "tab.com", true }, { "tabacarika.tk", true }, { "tabacundo.tk", true }, { "tabacundolindo.tk", true }, @@ -116776,63 +134120,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tabira.tk", true }, { "tabisuta.com", true }, { "tabiteollisuus.tk", true }, + { "tabitha.org", true }, { "tablamatica.tk", true }, + { "tablascreek.com", true }, { "tableandhearth.com", true }, + { "tableconvert.com", true }, { "tabledown.ga", true }, { "tabledusud.be", true }, { "tabledusud.nl", true }, - { "tablepadcolors.com", true }, { "tablepaddie.com", true }, { "tablepaddies.com", true }, { "tableres.com", true }, { "tablerocksbestrealtors.com", true }, - { "tablescraps.com", true }, { "tablet.facebook.com", false }, { "tablet4me.de", false }, { "tabletd.com", true }, + { "tabletennis-reference.com", true }, { "tabletennis-tt.tk", true }, + { "tablethotels.com", true }, { "tabletkinamase.ga", true }, { "tabletkinatradzik.ga", true }, { "tabletopwealth.reviews", false }, { "tabletsandlaptops.com", true }, { "tablettes-tactiles.tk", true }, + { "tableturnrms.com", true }, + { "tablosec.com", true }, { "tablotv.com", false }, { "tablyrics.com", true }, { "tabordaadvogados.ga", true }, { "taborsky.cz", true }, { "tabpanelwidget.com", true }, { "tabrizbiology.tk", true }, - { "tabtap.shop", true }, + { "tabserectilecheap.com", true }, + { "tabular.tools", true }, + { "tabulartools.com", true }, + { "taburetka.ua", true }, { "tac-performance.net", true }, { "tac-sys.net", true }, { "tache.cc", true }, { "tachikawa-saisyuusyou.com", true }, + { "tachikoma.social", true }, { "tachoplus.pl", true }, { "tachtien.nl", true }, { "tachyonapp.com", true }, { "taciso.com", true }, - { "tackle.io", true }, - { "tackleyourfeelings.com", true }, + { "tackleundies.com", true }, { "tackn.jp", true }, { "tacoma-dui-attorneys.com", true }, { "tacoma-massage.com", true }, { "tacomaautomobile.tk", true }, { "tacomaclassifieds.net", true }, { "tacomaescorts.net", true }, - { "tacomafia.net", true }, { "tacomarugby.com", true }, { "tacomarugby.org", true }, { "tacotown.tk", true }, + { "tactful.ai", true }, { "tactical.zone", true }, { "tacticalavocado.com", true }, { "tacticalsquare.com", false }, { "tacticalvote.co.uk", true }, { "tacticalwebmedia.com", true }, + { "tactile.love", true }, + { "tactportal.com", true }, + { "tactus.nl", true }, { "tad.ua", true }, + { "tadabase.io", true }, { "tadalafil-tablets.tk", true }, + { "tadalafilbtab.com", true }, { "tadalafilindia.gq", true }, + { "tadalafilr.com", true }, { "taddiestales.com", true }, - { "tadinfos.fr", true }, { "tadj-mahalat.com", false }, { "tadjiki.tk", true }, { "tadjikistan.tk", true }, @@ -116844,20 +134201,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taekwondo-berlin.tk", true }, { "taekwondo-hochwald.de", true }, { "taetomeister.de", true }, + { "tafcares.org", true }, + { "tafdi.net", true }, + { "taffcat.fr", true }, { "taffe-elec.com", true }, { "tafnervotacao.com.br", true }, { "tafp3.ga", true }, + { "tafs.com", true }, + { "tafttx.gov", true }, { "tafusu-support.com", true }, + { "tag-insights.com", true }, { "tagabrand.co.uk", true }, { "tagalliances.com", true }, { "tagalog.com", true }, { "tagana-anindustrialpark.tk", true }, - { "tagasi.ee", true }, { "tagat.top", true }, { "tagaytayhighlands.com", true }, { "tagboards.tk", true }, + { "tagcorp.ca", true }, { "tagderinspiration.ch", true }, - { "tagdocumentary.com", true }, { "tagesmutter-in-bilm.de", true }, { "taggedpdf.com", false }, { "taggermedia.com", true }, @@ -116867,6 +134229,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tagid.ga", true }, { "tagid.tk", true }, { "taginet.com", true }, + { "tagliando.it", true }, { "taglioepiega.com", true }, { "taglioepiega.eu", true }, { "taglioepiega.it", true }, @@ -116874,20 +134237,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tagram.net", true }, { "tagstationen.se", true }, { "tagstatravel.com", true }, + { "tagsweekly.com", true }, { "tagtoys.com", true }, { "taguette.com", true }, { "taguette.fr", true }, { "taguette.org", true }, - { "taguiginfo.com", true }, - { "tagungsraum-usedom.de", true }, - { "tagungsraum-zinnowitz.de", true }, - { "tagungsstaette-usedom.de", true }, - { "tagungsstaette-zinnowitz.de", true }, + { "tahalimited.com", true }, { "tahaonline.tk", true }, { "tahitiodoo.com", true }, { "tahlequah.gov", true }, { "tahlilsonuclari.site", true }, - { "tahmintr.com", true }, { "tahnee.tk", true }, { "tahosa.co", false }, { "tahribat.tk", true }, @@ -116895,28 +134254,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tahugocilebut.com", true }, { "tahvienovin.ir", true }, { "tahynatozzi.tk", true }, - { "tai-in.com", true }, { "taiaro.tk", true }, { "taibachicken.com", true }, { "taichi-jade.com", true }, - { "taichichuanyang.com", false }, { "taidu.news", true }, { "taifun-software.de", true }, { "taiga-aikidojo.tk", true }, { "taigalaloca.net", true }, { "taihesy.tk", true }, { "taijul.tk", true }, - { "taikhoanfree.com", true }, { "taikodom.tk", true }, { "tail.id.lv", true }, - { "tail.lv", true }, { "tail.ml", true }, { "tail.wtf", true }, { "taildb.com", true }, - { "tailor.com.au", true }, + { "tailorbrands.com", true }, + { "tailored.health", true }, { "tailoring.tk", true }, { "tailpuff.net", false }, - { "tails.boum.org", true }, + { "tails.net", true }, { "tailsteak.tk", true }, { "tailwindapp.com", true }, { "tainiesonline.tk", true }, @@ -116927,8 +134283,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taishokudaiko.com", true }, { "taishon.nagoya", true }, { "taitlinstudio.com", true }, + { "taittowers.com", true }, { "taiwan-kitchen.com", true }, - { "taiwan.dating", true }, + { "taiwanbible.com", true }, + { "taiwanbible.com.tw", true }, { "taiwanhotspring.net", true }, { "taiwania.capital", true }, { "taiwania.vc", true }, @@ -116938,10 +134296,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taiwanteama.com.tw", true }, { "taiwantechtrek.tk", true }, { "taiwantour.info", false }, - { "taiyouko-hatuden.net", true }, { "taizegroep.nl", true }, { "taj-portal.tk", true }, { "tajbrighton.tk", true }, + { "tajcitymnhd.com", true }, { "tajilamagazine.com.br", true }, { "tajmisreg.com", true }, { "tajniy-smisl.cf", true }, @@ -116951,70 +134309,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tajniy-smisl.tk", true }, { "tajper.pl", true }, { "tajr.shop", true }, - { "tajtower-tajmisr.com", true }, { "tajtowereg.com", true }, { "tak-it.nl", true }, { "takano-recruit.com", true }, { "takano-takuhai.com", true }, { "takanogroup.co.jp", true }, { "takao-hs.com", true }, + { "takao.ga", true }, { "takarabrig.com", true }, + { "takase.buzz", true }, { "takayaindustries.ml", true }, + { "take-a-screenshot.org", true }, { "take1give1.com", false }, { "takeaction.ml", true }, - { "takeaimnow.org", true }, + { "takeatumble.com.au", true }, { "takebackyourstate.com", true }, { "takebackyourstate.net", true }, { "takebackyourstate.org", true }, + { "takecarebnb.org", false }, { "takechargetexas.gov", true }, { "takecommunity.com", true }, { "takedownthissite.com", true }, { "takehomepay.uk", true }, { "takeitback.tk", true }, - { "takeiteasyy.com", true }, { "takemydodgecoins.com", true }, { "taken.cf", true }, { "taken.pl", true }, + { "takenote.co", true }, { "takeomi.jp", true }, { "takepicturesleavefootprints.com", true }, { "takeshi.cz", true }, + { "takeshotclasses.com", true }, { "takestars.tk", true }, { "takethatspainfanclub.tk", true }, { "takeyourpic.co.uk", true }, { "takezo.tk", true }, + { "takhfifeirani.ir", true }, { "taki.sh", true }, { "taki.sk", true }, { "taki.to", true }, { "takinet.kr", true }, + { "takipavm.com", true }, { "takipcikutusu.com", true }, { "takiplekazan.ga", true }, - { "takito.net", true }, + { "takito.net", false }, { "takk.pl", true }, { "takkaaaaa.com", true }, { "takkguitar.net", true }, + { "takkyu-navi.jp", true }, { "takosuke.net", true }, { "taksaft.tk", true }, + { "taksimax.ru", true }, + { "taksometry.pl", true }, { "taktak.co.uk", false }, { "taktika.tk", true }, + { "taktraneh.com", true }, { "takuhai12.com", true }, - { "takuma.com", true }, { "takumi-s.net", true }, + { "takumikougyou.co.jp", true }, { "takusan.ru", true }, { "takuse.cf", true }, - { "takuto.de", false }, { "takysoft.tk", true }, - { "takzetak.sk", true }, { "talado.gr", false }, + { "talahnewplan.com", true }, { "talakacaruli.tk", true }, + { "talalaok.gov", true }, { "talcualdigital.com", true }, + { "taldia.es", true }, { "taleatherworks.com", true }, { "talendipank.ee", true }, + { "talengo.com", true }, + { "talent-safari.com", true }, { "talentbazi.com", true }, { "talentcast.nl", true }, { "talentcast.org", true }, { "talenteam.com", true }, { "talented.ga", true }, { "talentedagents.ga", true }, + { "talentexcellence.com", true }, { "talentguru.ml", true }, { "talenthubmpi.com", true }, { "talentis.net", true }, @@ -117023,7 +134395,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "talentplatform.com", true }, { "talentplatform.eu", true }, { "talentplatform.us", true }, - { "talentsearchpeople.com", true }, { "talentsplit.com", true }, { "talentstimuleren.nl", true }, { "talentuar.com", true }, @@ -117037,26 +134408,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "talideon.com", false }, { "talikotang.tk", true }, { "talis-bs.com", true }, + { "talisadesign.fi", true }, + { "taliskerwhiskyatlanticchallenge.com", true }, { "talisman-amulet.ga", true }, { "talk.google.com", true }, + { "talkappin.com.au", true }, { "talkbasket.net", true }, - { "talkbitz.com", true }, + { "talkbitz.com", false }, { "talkeducation.com", true }, { "talkgadget.google.com", true }, { "talki.tk", true }, { "talkinators.tk", true }, { "talking12.com", true }, - { "talkingband.org", true }, { "talkingbittersweet.com", true }, - { "talkingmoose.net", true }, + { "talkingmoose.net", false }, { "talkingtodrake.tk", true }, { "talkingtoteapots.tk", true }, + { "talkischeap.co.za", true }, { "talkischeap.tk", true }, - { "talklee.com", false }, { "talklikeyodaday.tk", true }, { "talkmojang.club", true }, { "talknetwork.ru", true }, { "talkreal.net", true }, + { "talks.run", true }, { "talkscope.cf", true }, { "talkscope.ml", true }, { "talksileby.tk", true }, @@ -117070,23 +134444,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tallahatchiecountysheriffofficems.gov", true }, { "tallcraft.com", true }, { "tallcraft.net", true }, - { "talldude.net", true }, { "tallercommercial.com", true }, { "tallercs.tk", true }, { "talleresluse.com", true }, - { "talleyupconsult.com", true }, { "tallgrasslegal.com", true }, { "tallinn-airport.ee", false }, - { "tallinnsec.ee", true }, { "tallinnsex.ee", true }, { "tallship.cz", true }, + { "tallulahbernard.com", true }, + { "tallwoodmedical.com", true }, { "tallyfy.com", true }, + { "tallylights.com", true }, { "talmischleather.com", true }, + { "taloman.fi", true }, { "talonro.com", true }, { "talos-app.io", true }, { "talos-staging.io", true }, + { "talpanetwork.com", true }, { "talpurwadalions.tk", true }, - { "talroo.com", true }, { "taltech.ee", true }, { "talun.de", true }, { "talusan.tk", true }, @@ -117095,14 +134470,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tam-safe.com", true }, { "tam7t.com", false }, { "tama.ga", true }, - { "tamamo.cat", true }, + { "tamalcloud.com", true }, + { "tamamlayici.com.tr", true }, { "tamarac.gov", true }, + { "tamarasoft.com", true }, { "tamareverson.tk", true }, { "tamarind.by", true }, - { "tamayahousing.com", true }, { "tambayology.com", true }, { "tambo.es", true }, { "tamboa.com", true }, + { "tambola.live", true }, + { "tambosi-odeonsplatz.de", true }, { "tambov.cf", true }, { "tambov.tk", true }, { "tambovcity.tk", true }, @@ -117110,27 +134488,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tamchunho.com", true }, { "tamdaotravelvi.tk", true }, { "tamdidpay.tk", true }, + { "tamedia.ch", true }, + { "tamerx.com", true }, + { "tamgaturk.com", true }, { "tami.co.uk", true }, { "tamilentertainment.tk", true }, + { "tamilfunda.com", true }, + { "tamilglitz.in", true }, { "tamilrokers.tk", true }, { "tamilsms.blog", true }, { "tamiltax.tk", true }, + { "tamim.io", true }, { "tamimmalik.ml", true }, { "tamindir.com", true }, { "tamistuff.com", true }, { "tammie.ga", true }, { "tammiku.edu.ee", true }, + { "tammvee.ee", true }, { "tammy.pro", true }, { "tamoxifen-citrate.gq", true }, { "tamoxifen-citrate.ml", true }, { "tamoxifenformen.ga", true }, { "tampa.gov", true }, - { "tampabaybusinesslistings.com", true }, + { "tampabaybusinesslistings.com", false }, + { "tampabayhistorycenter.org", true }, { "tampabayhometours.info", true }, { "tampacific.net", true }, { "tampacific.vn", true }, { "tampaexplorer.ml", true }, { "tampereenliberaalit.tk", true }, + { "tamracapital.sa", true }, { "tamriel-rebuilt.org", true }, { "tamrielcraft.tk", true }, { "tamronhallshow.com", true }, @@ -117139,56 +134526,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tamylove.net", true }, { "tan90.tw", true }, { "tanabekensetsu.co.jp", true }, - { "tanacebu.com", true }, { "tanacio.com", true }, { "tanatos.ga", true }, { "tanchynski.com", true }, { "tancredi.nl", false }, { "tancuongtea.tk", true }, + { "tand-teknik.dk", true }, { "tandarts-ict.nl", true }, { "tandartsen-ict.nl", true }, { "tandartspraktijkreddingius.nl", true }, { "tandartszilverschoon.nl", true }, { "tandblekningidag.com", true }, + { "tandcr.com", true }, { "tandem-trade.ru", false }, { "tandemexhibits.com", true }, - { "tandempartnerships.com", true }, - { "tandemwise.net", true }, + { "tandempartnerships.com", false }, + { "tandemtransport.ca", true }, { "tandhoutdoors.com", true }, + { "tandtroomtransformations.ca", true }, { "tandzorg.link", true }, + { "taneytownmd.gov", true }, { "tangai.tk", true }, { "tangas.tk", true }, { "tangel.me", true }, - { "tangentnet.online", true }, + { "tangentnet.tech", true }, + { "tangentnetworks.tech", true }, + { "tangerangkota.go.id", true }, { "tangiblesnft.com", true }, { "tangier.tk", true }, { "tangipahoa.gov", true }, { "tangle-teezer.net", true }, { "tangledmeditations.com", true }, + { "tanglepatterns.com", true }, { "tango-cats.de", true }, - { "tango-ouest.com", false }, + { "tango-networks.com", false }, { "tango-querida.tk", true }, { "tango.berlin", true }, + { "tango.info", true }, { "tangoalpha.co.uk", true }, - { "tangovolcaniqueduvelay.fr", true }, - { "tangsisi.com", true }, + { "tangoanalytics.com", true }, + { "tangofoxi.com", true }, + { "tangosix.rs", true }, + { "tangs.com", true }, + { "tangub.today", true }, { "tangyue.date", true }, { "tangzhao.net", true }, { "tanhaa.tk", true }, - { "tanhongit.com", true }, - { "taniafitness.co.uk", false }, - { "taniafitness.com", false }, { "taniawizualizacja.pl", true }, { "tanie-obraczki-szczecin.tk", true }, { "tanie-uprawnienia-sep.pl", true }, { "tanie-uslugi-ksiegowe.pl", true }, { "taniku-succulent.com", true }, - { "taninmislazer.com", true }, { "tanjaradovic.tk", true }, { "tanjasavicmusic.tk", true }, - { "tank-scorecard.herokuapp.com", true }, + { "tankardstownhouseonline.com", true }, { "tankdoggear.tk", true }, - { "tanknotes.com", true }, + { "tanknology.ca", true }, { "tankos.tk", true }, { "tankpassen-vergelijken.nl", true }, { "tanks.je", true }, @@ -117197,12 +134590,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tannenhof-moelln.de", true }, { "tanner.sh", true }, { "tanneradvisorysolutions.com.au", true }, - { "tannercorporation.com", true }, { "tannerdewitt.com", true }, { "tannerryan.ca", true }, { "tannerwilliamson.com", true }, { "tannerwj.com", true }, { "tannextcloud.cf", true }, + { "tanningroom.co.uk", true }, + { "tannlegenityrkia.no", true }, + { "tanomimaster.com", true }, { "tanovar.com", true }, { "tanphu.tk", true }, { "tanpopo.io", true }, @@ -117214,20 +134609,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tantravoorlichting.nl", true }, { "tantrum-rocks.tk", true }, { "tantso.com", true }, + { "tanuki.army", true }, { "tanushka.tk", true }, { "tanveersingh.tk", true }, { "tanweerkhan.tk", true }, { "tanya-avdeeva.cf", true }, { "tanyanama.com", true }, - { "tanyatate.xyz", true }, { "tanz-kreativ.de", false }, { "tanz.info", true }, { "tanzania-chameleon.ga", true }, { "tanzanianfilms.tk", true }, + { "tanzaniauk.org.uk", true }, + { "tanzhijun.com", true }, { "tanzpartner.tk", true }, { "tao-energie.tk", true }, { "taoaworld.com", true }, { "taoburee.com", false }, + { "taodung.com", true }, { "taogames.net", true }, { "taoismus.eu", true }, { "taokystrong.com", true }, @@ -117235,13 +134633,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taolu168.com", true }, { "taolubdsm10.com", true }, { "taoofbeauty.tk", true }, + { "taoscountynm.gov", true }, + { "taoshu.in", true }, { "taosnm.gov", true }, { "taotic.eu", true }, { "taowa.ca", true }, { "taoways.com", false }, { "taoyingchang.tk", true }, { "tap.az", true }, - { "tapahtumakauppa.fi", true }, + { "tap.bio", true }, { "tapbutdao.com", true }, { "tapchiphaidep.info", true }, { "tapcloud.com", true }, @@ -117253,18 +134653,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taplemon.at", true }, { "taplemon.com", true }, { "tapmat.com", true }, + { "tapparellemessina.it", true }, { "tappezzeria.roma.it", true }, { "tappezziere.milano.it", false }, { "tappezziere.roma.it", true }, - { "tappyshop.com.br", true }, { "tapquad.com", true }, { "taprix.org", true }, - { "taqeemi.com", true }, + { "tapsnapp.co", true }, + { "taqamorocco.ma", true }, { "taquilla.com", true }, { "taqun.club", true }, + { "tara.ru", true }, { "tarabici.tk", true }, - { "tarabooks.com", true }, - { "tarahancenter.com", true }, + { "taraiid.com", true }, { "tarakan-klopik.tk", true }, { "taraksarkar.tk", true }, { "taranagar.tk", true }, @@ -117276,28 +134677,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tarasecurity.co.uk", true }, { "tarasecurity.com", true }, { "tarasevich.by", true }, + { "tarasoles.com", true }, + { "taravancil.com", false }, { "tarbsong.ml", true }, + { "tarcode.ru", true }, { "tardics.com", true }, { "tardics.eu", true }, { "tardics.net", true }, { "tardis.cloud", true }, { "tardis.io", true }, + { "tardishomelab.com", true }, { "tarek.wtf", true }, { "tarekfadel.com", true }, { "tarfand-pc.tk", true }, - { "tarfandgram.com", true }, + { "tarfandgram.com", false }, { "tarfin.com", true }, { "targaryen.house", true }, + { "target.com", true }, { "targetbuilding.com", true }, - { "targeteffect.ru", true }, { "targetlonglife.tk", true }, { "targetmarc.com", true }, + { "targetsportsworld.com", true }, + { "targettrend.com", true }, { "targeturl.ru", true }, { "targetx.pl", true }, { "targimieszkaniowe.net", true }, { "targoncavasarlas.hu", true }, + { "tarif-pellets.fr", true }, { "tarife.at", true }, { "tariff.cc", true }, + { "tarihpedia.com", true }, { "tarihvakti.com", true }, { "tarija.tk", true }, { "tarik.io", true }, @@ -117312,32 +134721,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tarkari.tk", true }, { "tarkasparrows.org.za", true }, { "tarketmedia.com", true }, - { "tarkov-database.com", true }, + { "tarkett-group.com", true }, { "tarkov.tk", true }, + { "tarnkappe.info", true }, { "tarocchi.blog", true }, { "taroe.org", true }, { "taron.top", true }, - { "taroot-rangi.com", true }, { "tarot-online-app.com", true }, { "tarot-online-app.de", true }, + { "tarot-online.cn", true }, { "tarot-online.com.pl", true }, + { "tarot-online.fr", true }, + { "tarot-online.it", true }, { "tarot.vn", true }, { "tarotgratis.vip", true }, - { "tarotistasvidentes.es", true }, { "tarotreadingexplained.com", true }, - { "tarotsgratuits.com", true }, { "tarper24.net", true }, + { "tarpsnow.com", true }, { "tarragondigital.com", true }, { "tarrantandharman.com", true }, { "tarrasque.io", true }, { "tarrytownny.gov", true }, { "tarsan.cz", true }, - { "tarsashaz-biztositas.hu", true }, + { "tarsusdistribution.co.za", false }, + { "tarsusrx.com", true }, + { "tartablu.it", true }, { "tartaneagle.org.uk", true }, { "tartanhamedshop.com.br", true }, - { "tartu.ee", true }, + { "tartu.ee", false }, { "tartufomajella.it", true }, - { "tarugo.net.br", true }, { "taruntarun.net", true }, { "tarus.gq", true }, { "tarvoo.com", true }, @@ -117345,6 +134757,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tas.best", true }, { "tas2580.net", false }, { "tasarimgazetesi.com", true }, + { "tasarimrehberi.com", true }, { "tasawehala.com", true }, { "tascas.ga", true }, { "tascout.com", true }, @@ -117364,25 +134777,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taskulu.com", true }, { "taskulu.ir", true }, { "taskus.com", true }, - { "taskussa.net", true }, { "taskwise.cf", false }, { "taskworld.com", true }, - { "tasline.com.au", true }, { "tasogarenoinori.net", true }, { "tasonoken.tk", true }, + { "tasports.com.au", true }, { "tasports2043.com.au", true }, - { "tassio.eti.br", true }, - { "tastebudsmarketing.com", true }, { "tastenewwines.com", true }, { "tasteville.com.au", true }, { "tastic.com", true }, - { "tasticfilm.com", true }, + { "tastingtheatreteam.it", true }, { "tastycake.net", false }, { "tastycool.io", true }, + { "tastyplacement.com", true }, { "tastystakes.com", true }, { "tastyworksreview.co", true }, { "tasvideos.org", true }, - { "tatahealth.com", true }, { "tatamypa.gov", true }, { "tatar-bashqort.tk", true }, { "tatara.ne.jp", true }, @@ -117397,99 +134807,123 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tatary.cf", true }, { "tatary.tk", true }, { "tate.com", true }, + { "tatecountyms.gov", true }, + { "tateesq.com", false }, { "tateishi-ip.com", true }, + { "tatemode.com", true }, { "tatercraft.org", true }, { "taters.org", true }, + { "tatewake.com", true }, { "tatfan.com", true }, { "tathanhson.com", true }, { "tatiana-kpb.tk", true }, - { "tatildukkani.com", true }, + { "tatilsepeti.com", true }, { "tatjana-young.net", true }, + { "tatjanayoung.net", true }, { "tatler.com", true }, { "tato.noip.me", false }, { "tatoo-shop.ca", true }, + { "tatooine.club", true }, { "tatort-fanpage.de", true }, { "tatsidou.gr", true }, { "tatsumi-air.com", true }, { "tatsuya.tk", true }, { "tatteredatlastales.com", true }, { "tattoo-art.tk", true }, - { "tattoo.dating", true }, { "tattoo.roma.it", true }, { "tattoocorina.tk", true }, { "tattooidee.nl", true }, { "tattoomotive.net", true }, - { "tattoonhamon.ru", true }, { "tattoopiercing-wien.at", true }, { "tatu-love.tk", true }, { "tatuaggi.roma.it", true }, { "tatuaggio.co", true }, { "tatuering.net", true }, + { "tatuhagu.gov", true }, { "taturukav.tk", true }, { "taubenartikel.de", true }, { "taubin.cc", true }, { "tauedu.org", true }, { "taufers.info", true }, { "tauntongolf.co.uk", true }, + { "tauntonpdma.gov", true }, { "taunusstein.net", true }, + { "taura.vn", true }, { "tauran.net", true }, { "tauriscia.tk", true }, { "taurusgaming.com", true }, { "tauschen.info", true }, { "tava.tk", true }, + { "tavanahost.com", false }, { "tavda.info", true }, { "tavelbutiken.com", true }, { "taverne.tk", true }, { "taverns.tk", true }, + { "tavex.bg", true }, + { "tavex.dk", true }, + { "tavex.eu", true }, + { "tavex.fi", true }, + { "tavex.hu", true }, + { "tavex.lt", true }, + { "tavex.lv", true }, + { "tavex.no", true }, + { "tavex.pl", true }, + { "tavex.ro", true }, + { "tavex.rs", true }, + { "tavex.se", true }, + { "tavexbullion.co.uk", true }, + { "tavid.ee", true }, + { "tavola-cescato.club", true }, { "tavolaquadrada.com.br", true }, + { "tavolartegusto.it", true }, { "tavoseimai.lt", true }, { "tavsiyeforumu.com", true }, { "tavsys.net", true }, - { "tawjihi21.azurewebsites.net", true }, + { "tavukdiyari.net", true }, { "tawzea.com", true }, { "tax-brain.net", true }, { "tax-guard.com", true }, { "taxadvantagellc.com", true }, + { "taxandor.com", true }, + { "taxassist.co.uk", true }, { "taxationweb.co.uk", false }, { "taxboard.gov.au", true }, - { "taxborn.com", true }, + { "taxborn.com", false }, { "taxdispute.win", true }, + { "taxesreclaimed.com", true }, + { "taxfunder.co.uk", true }, + { "taxfunder.uk", true }, { "taxglobalizers.com", true }, { "taxhawk.com", true }, { "taxhunter.com.au", true }, + { "taxi-5plus.ru", true }, { "taxi-chamonix.fr", false }, + { "taxi-christian.de", true }, { "taxi-collectif.ch", false }, { "taxi-domzale.tk", true }, { "taxi-doudoune.fr", true }, { "taxi-edessas.gr", true }, - { "taxi-jihlava.cz", true }, { "taxi-legroux.com", true }, { "taxi-meridian.ru", true }, { "taxi-puck.pl", true }, { "taxi-tienen.com", true }, { "taxi-zakaz.ml", true }, { "taxi24.ml", true }, - { "taxi2opo.com", true }, + { "taxi2opo.com", false }, { "taxibiz.ga", true }, - { "taxibudapest.com", false }, - { "taxibudapest.de", false }, - { "taxibudapest.fr", false }, - { "taxibudapest.nl", false }, { "taxicollectif.ch", false }, { "taxid-k.be", true }, - { "taxihungary.com", false }, { "taxikraken.tk", true }, { "taximinvody.ml", true }, { "taximovies.gq", true }, + { "taxinhanhphanthiet24h.vn", true }, { "taxipool.co.il", true }, + { "taxirostova.ru", true }, { "taxis-collectifs.ch", false }, { "taxisafmatosinhos.pt", true }, - { "taxisantandreudelabarca.es", true }, { "taxiscollectifs.ch", false }, { "taxiseek.ga", true }, - { "taxiservicedenbosch.nl", false }, { "taxiunion.info", true }, - { "taxjusticeafrica.net", true }, { "taxlab.co.nz", true }, { "taxly.kr", true }, { "taxmadras.com", true }, @@ -117501,6 +134935,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tayar2u.my", true }, { "taybee.net", true }, { "tayebbayri.com", true }, + { "tayho24h.com", true }, + { "taylorandfrancis.com", true }, { "tayloraz.gov", true }, { "taylorburton-porn.com", true }, { "taylorcountyhdwv.gov", true }, @@ -117509,19 +134945,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "taylored.ga", true }, { "taylorelectionsfl.gov", true }, { "taylorfarms.com", true }, + { "taylorfrancis.com", true }, { "taylorfry.au", true }, { "taylorfry.co.nz", true }, { "taylorfry.com", true }, { "taylorfry.com.au", true }, { "taylorfry.nz", true }, - { "taylorpearson.me", false }, { "taylors-castles.co.uk", true }, { "taylorshillsamoan.org", true }, { "taylorstauss.com", true }, - { "taytaytiangge.ph", true }, { "tazamobile.ga", true }, - { "tazarcorp.com", true }, { "tazarelax.es", true }, + { "tazefiltre.com", true }, + { "tazefirsat.com", true }, { "tazemama.biz", true }, { "tazenda.tk", true }, { "tazendaforever.tk", true }, @@ -117532,24 +134968,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tb-bolshevik.tk", true }, { "tb-devel.de", true }, { "tb-itf.de", true }, + { "tb.org.tw", true }, { "tbahn.de", true }, { "tbatr.tk", true }, - { "tbbank.gov.tm", true }, + { "tbbank.gov.tm", false }, { "tbcinteriorismo.com", true }, { "tbcloud.site", false }, { "tbejos.com", true }, { "tbfbay.org", true }, { "tbfocus.com", true }, - { "tbgtools.ru", true }, { "tbi.equipment", true }, { "tbi.systems", true }, + { "tbid.gov", true }, { "tbird-q.com", true }, { "tbitc.ch", true }, { "tbksp.org", true }, + { "tbkwatch.co.za", true }, + { "tbkwatch.com", true }, + { "tbkwatch.org.za", true }, { "tbld.gov", true }, { "tblflip.de", true }, + { "tblnk.de", true }, { "tbonejs.org", true }, - { "tboxfit.com", true }, { "tbpchan.cz", true }, { "tbq-s.com", true }, { "tbq-s1.com", true }, @@ -117564,29 +135004,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tbun.de", true }, { "tbunews.com", true }, { "tbunews.info", true }, - { "tbwa.com.au", true }, + { "tbwa.com", true }, + { "tbwa.com.au", false }, { "tbyi.gov", true }, { "tbys.us", true }, { "tbz-pariv.de", true }, - { "tc-st-leonard.ch", false }, - { "tc-triathlon.com", true }, + { "tc-solutions.be", true }, + { "tc-tsc.com", true }, { "tc.nz", true }, + { "tc2.hu", true }, { "tcacademy.co.uk", true }, { "tcade.co", true }, + { "tcapws-dev.azurewebsites.net", true }, + { "tcapws-prod.azurewebsites.net", true }, { "tcb-a.org", true }, - { "tcb-b.org", true }, { "tcbdarts.nl", true }, - { "tccb.gov.tr", true }, { "tccc.org.tw", true }, + { "tcckonsult.com", true }, { "tccmb.com", true }, { "tccportal.com", true }, + { "tcddtrensaatleri.com", true }, { "tcdn.tech", true }, - { "tcdw.net", true }, { "tcdww.cn", true }, + { "tcepc.com", true }, { "tcf.org", true }, + { "tcgcardcare.com", true }, + { "tcglobal.com", true }, { "tcgpraktijk.nl", true }, { "tcgrepublic.com", true }, { "tch-forum.com", true }, + { "tchak.be", true }, { "tchaka.top", true }, { "tchalian-boulonnerie.store", true }, { "tchannels.tv", true }, @@ -117598,45 +135045,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tchebb.me", true }, { "tchncs.de", true }, { "tchnics.de", true }, + { "tcholet.com", true }, { "tchoukball.ch", false }, { "tchouktchouk-baroum.fr", true }, { "tchverheul.nl", true }, { "tci-style.pl", true }, + { "tci-thaijo.org", true }, + { "tci-thailand.org", true }, { "tciit.pl", true }, { "tcit.fr", false }, { "tcj.ir", true }, - { "tcksolutions.com", false }, { "tcl.sh", true }, { "tcmk-tomsk.ru", true }, + { "tcmskarate.fr", true }, { "tcnapplications.com", true }, + { "tcnewhk.com", true }, { "tco.zapto.org", true }, { "tcoa.tk", true }, { "tcpdf.org", true }, { "tcpride.org", true }, { "tcptun.com", true }, + { "tcr-ees.com", true }, + { "tcrecord.org", true }, { "tcsemotion.com", true }, { "tcspartner.eu", true }, + { "tcspartner.net", true }, { "tcuprs.com", true }, { "tcvanbuuren.tk", true }, { "tcvonline.vic.gov.au", true }, { "tcvvip.com", true }, { "tcvw.org", true }, { "tcwis.com", true }, + { "tcwsites.com.br", true }, { "tcybert.com", true }, { "tcyoung.co.uk", true }, - { "td-bambini.ru", true }, + { "td-bambini.com", true }, { "td-magellan.ru", true }, { "td-olymp.ru", true }, + { "td-zolotoy.ru", true }, { "tda-werbetechnik.de", true }, { "tda.de", true }, { "tdchrom.com", false }, { "tddos.pw", true }, { "tdeaqua.com", true }, + { "tdeecalculator.org", true }, { "tdelmas.ovh", true }, { "tdev.team", true }, - { "tdlconexion.com", true }, + { "tdk-ventures.com", true }, + { "tdk.eu", true }, { "tdlesovik.ru", true }, { "tdln.tk", true }, + { "tdn.com", true }, { "tdolar.com", true }, { "tdr.today", true }, { "tdrcartuchos.com.br", true }, @@ -117646,32 +135105,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tdsb.cf", true }, { "tdsb.ml", true }, { "tdsbhack.tk", true }, + { "tdse.de", true }, { "tdsf.io", true }, { "tdstoragebay.com", true }, + { "tdtf.eu", true }, { "tdtf.hk", true }, { "tdtf.nl", true }, { "tdude.co", true }, { "tdvg.nl", true }, { "tdxexpedited.com", true }, - { "tdyx-china.com.cn", true }, + { "tdyx-china.com.cn", false }, + { "te-an.tw", true }, { "tea.codes", true }, { "tea.in.th", true }, { "teablr.com", true }, + { "teach.com", true }, { "teach.gq", true }, + { "teachbase.ru", true }, { "teachbiz.net", true }, + { "teacher.org", true }, { "teachercall.kr", true }, - { "teachercreatedmaterials.com", true }, - { "teacherfrancis.com", true }, { "teachermommylife.com", true }, + { "teachernewsbd.com", true }, { "teacherph.com", true }, { "teacherph.net", false }, - { "teacherpowered.org", true }, + { "teacherpics.com", true }, { "teacherquinten.com", true }, { "teacherquotes.gq", true }, { "teachersasap.info", true }, + { "teachertoolsgpt.com", true }, + { "teaching-certification.com", true }, { "teachinginhighered.com", true }, { "teachingtoday.education", true }, + { "teachjam.org", true }, { "teachking.tk", true }, + { "teachnowprogram.com", true }, + { "teachonmars.com", true }, { "teachpeople.org", true }, { "teachwithouttears.com", true }, { "teacuppersiancats.com", true }, @@ -117683,8 +135152,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teaine.com", true }, { "teainside.ga", true }, { "teaks.nl", true }, - { "tealdotsinanorangeworld.com", true }, - { "tealdrones.com", true }, + { "tealegrar.com.br", true }, { "tealium.com", true }, { "team-17.tk", true }, { "team-a.tk", true }, @@ -117693,11 +135161,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "team-atomic.tk", true }, { "team-azerty.com", true }, { "team-bbd.com", true }, + { "team-building.madrid", true }, { "team-building.tirol", true }, { "team-cut.tk", true }, { "team-darkness.tk", true }, { "team-eklund-motorsport.tk", true }, - { "team-igmetall-atos-muenchen.de", true }, { "team-io.net", true }, { "team-royal.tk", true }, { "team-russia.tk", true }, @@ -117709,8 +135177,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "team3.au", true }, { "team3.io", true }, { "team3482.com", true }, + { "team7-home.com", true }, { "team957.co.uk", true }, { "teamarasensas.tk", true }, + { "teamasea.com", true }, + { "teamassists.com", false }, { "teamawesome.ga", true }, { "teamb.nl", true }, { "teambalinge.tk", true }, @@ -117726,8 +135197,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teambeam.ru", false }, { "teambee.tk", true }, { "teambim.eu", true }, - { "teambition.com", false }, + { "teamcg.ru", true }, { "teamclean.bg", true }, + { "teamcoco.com", true }, { "teamcode.tk", true }, { "teamcodeorange.tk", true }, { "teamcollins.org.nz", true }, @@ -117740,7 +135212,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teamdumondelibre.fr", true }, { "teamengland.tk", true }, { "teamfriet.nl", true }, - { "teamhinkleyc.com", true }, + { "teamhd.org", true }, + { "teamhealth.com", true }, + { "teamhinkleyc.com", false }, { "teamhybrid.com", true }, { "teamhybridforums.com", true }, { "teamjiradia.tk", true }, @@ -117759,11 +135233,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teammojo.org", true }, { "teamninjaapp.com", true }, { "teamnissannorthparts.com", true }, + { "teamnutrition.fr", true }, { "teamos.tk", true }, { "teampaddymurphy.ch", true }, { "teampaddymurphy.ie", true }, { "teampages.com", true }, + { "teampassword.com", true }, { "teampatat.nl", true }, + { "teamphotonetwork.com", true }, { "teampoison.tk", true }, { "teampz.com", true }, { "teamr3set.com", true }, @@ -117791,7 +135268,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teamsignia.com", true }, { "teamsomeday.tk", true }, { "teamsudan.cf", true }, - { "teamto.do", true }, + { "teamtheory.io", true }, { "teamtomorrow.tk", true }, { "teamtotal.com", true }, { "teamtrack.uk", true }, @@ -117802,10 +135279,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teamusec.de", true }, { "teamwolf.tk", true }, { "teamwork-bad-wurzach.de", true }, + { "teamworld.blog", true }, { "teamwpsekure.com", true }, { "teamx-gaming.de", false }, { "teaparty.id", true }, - { "teardown.band", true }, + { "teara.govt.nz", true }, + { "teararia.com", true }, { "teardrop.tk", true }, { "tearihome.com", true }, { "tearoomlints.be", true }, @@ -117814,13 +135293,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teaser-trailer.com", true }, { "teasers.ga", true }, { "teatrarium.com", true }, + { "teatrebarcelona.com", true }, { "teatroutopia.tk", true }, + { "teatruastra.org.mt", true }, { "teazer.tk", true }, { "teb-akademia.pl", true }, + { "teb-x-1.com", true }, { "tebebo.com", true }, + { "teber.av.tr", true }, { "tebian.tk", true }, { "tebieer.com", true }, - { "tebis-consulting.my-router.de", true }, { "tebodental.com", true }, { "tebodentalgroup.com", true }, { "tebodentistryatlanta.com", true }, @@ -117829,37 +135311,45 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tebokidsstore.com", true }, { "teboorthodontics.com", true }, { "tebothetooth.com", true }, - { "tebsa.org", true }, { "tebsonati.tk", true }, - { "tebuscotrabajo.com", false }, + { "tebx-1.com", true }, + { "tebx1.com", true }, { "tec24.ga", true }, - { "tec3000.ch", false }, { "tecart-cloud.de", true }, { "tecart-system.de", false }, { "tecart.de", true }, { "tecartcrm.de", true }, - { "teccozed.com", true }, + { "tecatebeerusa.com", true }, + { "tece.com", true }, + { "tece.de", true }, { "tecfix.com", true }, { "tecfleet.com", true }, { "tech-clips.com", false }, - { "tech-doc.tk", true }, + { "tech-dempaz.com", true }, { "tech-essential.com", true }, { "tech-guru.ml", true }, { "tech-idea.com", false }, { "tech-ideas.tk", true }, { "tech-leaders.jp", true }, + { "tech-my.biz", true }, { "tech-ninja.de", false }, + { "tech-post.net", true }, { "tech-professor.ir", true }, { "tech-rat.com", true }, { "tech-seminar.jp", true }, + { "tech-stat.com", true }, + { "tech-story.net", true }, { "tech-urdu.tk", true }, { "tech-value.eu", true }, { "tech-zealots.com", true }, + { "tech-zoom.com", true }, + { "tech3599.com", true }, { "tech3araby.com", true }, + { "tech4cancer.com", true }, { "tech4founders.co", true }, - { "tech4founders.com", true }, + { "tech4greece.gr", true }, { "tech506.com", true }, - { "techacad.net", false }, + { "techalert.net", true }, { "techangel.tk", true }, { "techanit.de", true }, { "techarab.ga", true }, @@ -117870,18 +135360,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techarkansas.tk", true }, { "techask.it", true }, { "techassist.io", false }, - { "techaulogy.com", true }, + { "techatt.com", true }, + { "techava.ru", true }, { "techbayleaf.com", true }, { "techbelife.com", true }, { "techbin.org", true }, - { "techbonaza.info", true }, + { "techbizidea.com", true }, + { "techbmc.com", true }, { "techbrawl.org", true }, - { "techbumper.info", true }, + { "techbuz.net", true }, + { "techbuzzonly.com", true }, { "techcavern.ml", true }, { "techcentral.ml", true }, { "techcenturion.com", true }, { "techchip.com", true }, - { "techchump.com", true }, { "techclan.ga", true }, { "techcluster.tk", true }, { "techcm.com", true }, @@ -117900,13 +135392,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techday.com", true }, { "techday.com.au", true }, { "techday.network", true }, + { "techdhanush.com", true }, { "techdirt.com", true }, { "techdoms.tk", true }, { "teched-creations.com", true }, - { "techendeavors.com", true }, { "techexpert.tips", true }, - { "techexplorist.com", true }, { "techfibian.tk", true }, + { "techfinancials.co.za", true }, { "techfishnews.com", true }, { "techformator.pl", true }, { "techforthepeople.org", true }, @@ -117914,16 +135406,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techframework.com", true }, { "techfreepro.ml", true }, { "techfuturae.com", true }, - { "techfuze.com", true }, - { "techfuze.io", true }, { "techgama.org", true }, + { "techgara.com", false }, { "techgearlab.com", true }, { "techgo.re", true }, + { "techgrance.com", true }, { "techguidereview.com", true }, { "techguides.tk", true }, { "techhackhome.tk", true }, { "techhappy.ca", true }, - { "techideations.com", true }, + { "techhh.ca", true }, + { "techhubs.gov", true }, { "techie-show.com", true }, { "techiecomputers.com", true }, { "techiehall.com", true }, @@ -117931,6 +135424,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techieshideaway.com", true }, { "techiesmart.tk", true }, { "techiestalk.in", true }, + { "techikoma.social", true }, { "techindiana.tk", true }, { "techindo.cf", true }, { "techinet.pl", true }, @@ -117941,11 +135435,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techitsol.tk", true }, { "techiwant.com", true }, { "techjobplaybook.nyc", true }, - { "techjoe.co", true }, + { "techjury.net", true }, + { "techkalture.com", true }, + { "techkapitan.com", true }, { "techkeep.tk", true }, { "techkentucky.tk", true }, { "techkilla.tk", true }, - { "techlab.co.il", true }, + { "techland.net", true }, { "techlandgg.com", true }, { "techlearningcollective.com", true }, { "techlit.pk", true }, @@ -117957,18 +135453,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techmaish.com", true }, { "techmammal.de", true }, { "techmanstan.com", true }, - { "techmasters.io", true }, { "techmatter.tk", true }, { "techmatters.org", true }, - { "techmayosi.in", true }, - { "techmepro.com", true }, + { "techmayhem.net", true }, + { "techmen.net", true }, + { "techmeout.io", true }, { "techmerch.ru", false }, { "techmusea.com", true }, { "technamin.com", true }, { "technavio.com", true }, - { "technewera.com", true }, { "technewsetc.tk", true }, { "technewyork.tk", true }, + { "technic-piscines.fr", true }, { "technic3000.com", true }, { "technicabv.nl", true }, { "technicalbikram.tk", true }, @@ -117977,15 +135473,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "technicalforensic.com", true }, { "technicalhelps.org", true }, { "technicalhub.tk", true }, + { "technicalities.ca", true }, { "technicallyeasy.net", true }, { "technicalmarine.solutions", true }, { "technicalproblem.tk", true }, + { "technicalsouvick.in", true }, { "technicaltrainer.co.za", true }, { "technicalustad.com", true }, + { "technick.net", true }, { "technicodelabels.com", true }, - { "techniqueelevage.ddns.net", false }, + { "technicus.nl", true }, + { "technikoma.com", true }, + { "technikoma.eu", true }, + { "technikoma.net", true }, + { "technikoma.org", true }, + { "technikoma.social", true }, + { "technikplanet.de", true }, + { "techniqueelevage.ddns.net", true }, { "technisys.com", true }, + { "techno-utopia.com", true }, + { "techno360.in", true }, { "technochat.in", true }, + { "technocracy.works", true }, { "technodance.tk", true }, { "technodemarkt.bg", true }, { "technodevelopmentera.tk", true }, @@ -117996,12 +135505,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "technohonks.tk", true }, { "technohram.tk", true }, { "technoids.tk", true }, - { "technokicks.com", true }, { "technoledge.jp", true }, { "technolink.cf", true }, { "technolink.ga", true }, { "technologie-innovation.fr", true }, - { "technology-shopping.com", true }, { "technology.cx", true }, { "technologyabundant.ga", true }, { "technologyandroid.tk", true }, @@ -118024,6 +135531,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "technologylittle.ga", true }, { "technologymessenger.ga", true }, { "technologynewss.tk", true }, + { "technologyrest.com", true }, { "technologyscience.tk", true }, { "technologysi.com", true }, { "technologysnapshot.ga", true }, @@ -118033,7 +135541,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "technologysugar.ga", true }, { "technologyvisual.ga", true }, { "technologywaterfront.ga", true }, + { "technologywt.com", true }, { "technolution.tk", true }, + { "technolux.net", false }, { "technomagia.tk", true }, { "technomix.tk", true }, { "technopedia.gq", true }, @@ -118050,43 +135560,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "technotronikcanada.ca", false }, { "technovisioneng.com", true }, { "technoweb.ga", true }, + { "technoweightloss.com", true }, { "technowikis.com", true }, { "technowise.tk", true }, { "technowiz.tk", true }, { "technoyl.com", true }, - { "technuggets.io", true }, + { "techonline.com", true }, + { "techorbit.co", true }, { "techorbiter.com", true }, + { "techorganism.com", false }, { "techpartes.com.br", true }, + { "techpedia.it", true }, { "techpilipinas.com", true }, - { "techpit.us", true }, { "techpoint.org", true }, + { "techpp.com", true }, + { "techpressable.com", true }, { "techprom.tk", true }, { "techraptor.net", true }, - { "techreek.com", true }, { "techrek.pl", true }, { "techreportforall.tk", true }, { "techrevolution.lt", true }, + { "techround.co.uk", true }, { "techs.cf", true }, { "techsalot.com", true }, { "techsat.tk", true }, { "techsaviours.online", true }, { "techsaviours.org", true }, { "techsecrets.tk", true }, + { "techsee.me", true }, { "techserve.ml", true }, { "techsharetx.gov", true }, { "techshift.eu", true }, { "techshift.nl", true }, { "techshift.se", true }, + { "techshout.com", true }, { "techsite.tk", true }, { "techsmartstore.com", true }, - { "techsocial.nl", true }, + { "techsna.com", true }, { "techsolvency.com", true }, + { "techsoup.net.nz", true }, { "techstackjournal.com", true }, - { "techstreamlab.com", true }, + { "techstation.co.il", true }, { "techsys.cz", true }, + { "techtaalk.com", true }, { "techtastic.tk", true }, + { "techteam.id", true }, { "techtexas.tk", true }, + { "techthorne.com", true }, { "techto.date", true }, + { "techtodayinfo.com", true }, + { "techtolia.com", true }, { "techtouch.tk", true }, { "techtoydeveloper.tk", true }, { "techtrader.ai", true }, @@ -118094,78 +135617,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "techtrendnews.tk", true }, { "techtrozan.ga", true }, { "techunit.org", true }, + { "techvaz.com", true }, { "techvel.pl", true }, { "techview.link", true }, { "techviewforum.com", true }, { "techvigil.org", true }, - { "techvillian.com", true }, { "techvision.tk", true }, { "techvoice.tk", true }, { "techwalker.cf", true }, { "techwallet.tk", true }, + { "techwestsolutions.com.au", true }, + { "techwin.systems", true }, { "techwithcromulent.com", true }, { "techwolf12.nl", true }, { "techwords.io", true }, + { "techyhint.com", true }, { "techzant.com", true }, { "techzero.cn", true }, - { "techzhou.com", true }, { "techzjc.com", false }, { "tecit.ch", true }, { "tecke.tk", true }, { "teckgeekz.com", true }, { "tecknobox.fr", true }, { "tecknologg.website", true }, + { "teckprojects.com", true }, { "tecmarkdig.com", true }, { "tecne.ws", true }, { "tecnewsnow.com", true }, - { "tecnicapotiguar.com.br", false }, + { "tecnicainnovacion.com.mx", true }, + { "tecnicapotiguar.com.br", true }, { "tecnicasapinzon.com", true }, { "tecnick.com", true }, { "tecnicman.com", true }, { "tecnicman.it", true }, + { "tecnicoadomicilio.com.mx", true }, { "tecnicoelettrodomestici.roma.it", true }, - { "tecnikan.com.ar", false }, + { "tecnikan.ar", true }, { "tecnimas.com.mx", false }, { "tecnimotos.com", true }, - { "tecnipuntoseguridad.com", true }, { "tecnitool.es", true }, { "tecno-block.ru", true }, { "tecno-pack.net", true }, { "tecnoarea.com.ar", true }, { "tecnoblog.net", true }, + { "tecnoboxchile.cl", true }, { "tecnobrasilloja.com.br", true }, { "tecnocomp-systems.com", true }, { "tecnodritte.it", true }, + { "tecnoempleo.com", true }, { "tecnogazzetta.it", true }, { "tecnogestionsas.com", true }, { "tecnograficaimpresos.com", true }, + { "tecnoimp.it", true }, { "tecnoimpianti.bz.it", true }, { "tecnologiahdv.com", true }, - { "tecnologiasurbanas.com", true }, { "tecnoloop.es", true }, { "tecnomagazine.net", true }, { "tecnonews.cf", true }, { "tecnonews.tk", true }, { "tecnopiniones.com", true }, - { "tecnosa.es", true }, { "tecnoticiasdigitales.tk", true }, + { "tecnotrattamenti.it", true }, + { "tecnovernicisrl.com", true }, { "tecnyal.com", true }, + { "tecob.com", true }, { "tecon.co.at", true }, { "tecorrs.tk", true }, + { "tecparsnet.ir", true }, { "tecpartnership.com", true }, { "tecra.com", true }, { "tecroxy.com", true }, { "tecsar.cn", true }, + { "tecsar.org", true }, { "tecscipro.de", true }, + { "tectas.co.jp", true }, + { "tecumsehmi.gov", true }, { "tecwolf.com.br", true }, { "tecyt.com", true }, { "teczero.co.uk", true }, { "ted.do", false }, + { "tedamos.at", true }, + { "tedamos.ch", true }, + { "tedamos.com", true }, + { "tedamos.de", true }, { "tedankara.k12.tr", true }, { "teddax.com", true }, { "tedder.cc", true }, { "teddit.net", true }, - { "teddy.ch", true }, + { "teddybearsnextadventure.com", true }, { "teddykatz.com", true }, { "teddyss.com", false }, { "teddywayne.com", true }, @@ -118174,49 +135713,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tedirgin.tk", true }, { "tedroche.com", true }, { "tedsdivingsystem.com", true }, + { "tedulearning.com", true }, + { "tedxencgf.com", true }, { "tedxyalesecondaryschool.com", true }, { "tedyst.ro", true }, + { "tee-suche.de", true }, { "teecketing.com", true }, + { "teedinsiam.com", true }, { "teehaus-shila.de", true }, { "teekaymedia.tk", true }, + { "teeken-and-teeken.com", true }, { "teektalk.org", true }, - { "teemill.com", true }, + { "teemo.gg", true }, { "teemulintula.fi", true }, { "teen-club.tk", true }, { "teen-porno-video.ru", true }, + { "teencounseling.com", true }, { "teengamer.tk", true }, { "teengamingnights.net", true }, + { "teengirlpics.com", true }, { "teenmissions.org", true }, { "teenmoviesgallery.ga", true }, { "teenpussypornvid.com", true }, { "teenringen.nl", true }, { "teensexgo.com", true }, + { "teensifynews.tk", true }, { "teenslesbian.com", true }, + { "teenslikeitbig.com", true }, + { "teenslovehugecocks.com", true }, + { "teentinytits.com", true }, + { "teenusernames.com", true }, { "teenviet.ga", true }, { "teenwebcams.ml", true }, { "teenwolfturkey.tk", true }, { "teenworlds.tk", true }, + { "teenxxx-tube.com", true }, + { "teenxy.com", true }, { "teepak.ml", true }, - { "teeqq.com", true }, { "teerer.tk", true }, - { "teeshirtspace.com", true }, { "teestore.ru", true }, + { "teesypeesy.com", true }, { "teeters.in", true }, + { "teethtalkgirl.com", false }, { "teetje-doko.de", true }, { "teetoptens.com", true }, { "teeverse-photography.com", true }, { "teeworlds-friends.de", true }, - { "teextee.com", true }, { "tefek.cz", true }, { "tefinet.sk", true }, + { "tefly-frhaty.com", true }, { "tefwin.cf", true }, - { "tegamisha.com", true }, + { "teg6.com", true }, { "teganlaw.ca", true }, { "teganlaw.com", true }, { "tege-elektronik.hu", true }, { "tegel-schoonmaken.nl", true }, + { "teh1xbet.com", true }, { "tehillimforall.com", true }, { "tehnicari-za-racunalstvo.tk", true }, + { "tehnikarechi.studio", true }, { "tehniss.rs", true }, { "tehno-kip.ru", true }, { "tehno-trust.tk", true }, @@ -118224,35 +135779,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tehnoklubi.ee", true }, { "tehnolove.ru", true }, { "tehnomagija.tk", true }, + { "tehosmotravto.ru", true }, { "tehplace.club", true }, { "tehrankey.ir", true }, { "tehrantamirgah.com", true }, { "teichroeb.net", true }, + { "teier.eu", true }, + { "teier.net", true }, + { "teigtascherlfabrik.net", true }, { "teigukitty.tk", true }, + { "teilenapp.com", true }, { "teiqui.com", true }, { "teiron.ml", true }, { "teiseken.tk", true }, - { "teixidorquartet.com", true }, { "teixobactin.com", true }, - { "tejas1835.com", true }, - { "tejaswi.biz", true }, { "tejo.tk", true }, { "tejomaya.net", true }, { "tek-el.ru", true }, { "teka.ro", true }, { "tekanswer.com", true }, { "tekcafe.vn", true }, - { "tekcan.av.tr", true }, + { "tekchoiceelectronics.com", true }, + { "tekdt.com", true }, { "tekila.cf", true }, { "tekila.ga", true }, { "tekila.tk", true }, { "tekinfo.co.id", true }, { "tekingb.com", false }, { "tekirdagemlak.tk", true }, - { "tekiro.com", false }, + { "tekiro.com", true }, + { "tekittak.com", true }, { "tekkenzone.net", true }, { "tekme.pt", true }, - { "tekmoloji.com", true }, { "teknashop.com", true }, { "teknik-sipil.tk", true }, { "teknikaldomain.me", true }, @@ -118260,41 +135818,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teknisetdemarit.fi", true }, { "tekniskakustik.se", true }, { "tekno-dream.com", true }, - { "teknoamca.com", true }, { "teknodaim.com", true }, { "teknofara.com", false }, { "teknoforums.com", true }, { "teknogeek.id", true }, { "teknoharekat.com", true }, - { "teknomarko.com", true }, + { "teknoinfo.id", true }, + { "teknomarko.com", false }, { "teknon.tk", true }, { "teknorix.com", true }, { "teknosa.com", false }, { "teknotiq.com", true }, { "teknow.tk", true }, - { "tekshrek.com", true }, + { "teko.se", true }, + { "tekpon.com", true }, + { "tekshrek.com", false }, { "teksol-boat.ru", true }, - { "tekstenzo.com", true }, { "tekstover.tk", true }, { "tekstpesni.tk", true }, + { "tektorg.ru", true }, { "tektouch.net", true }, { "tektuts.com", true }, { "telamon.eu", true }, { "telangananews.ml", true }, + { "telanganatoday.com", true }, { "telani.net", true }, { "telaviv.estate", true }, + { "telaviva.com.br", true }, { "telco-motor.fr", true }, { "telco.si", true }, { "telcodb.net", true }, { "telcu.com", true }, { "teldak.pt", true }, + { "teldoop.my.id", true }, { "tele-alarme.ch", true }, { "tele-assistance.ch", false }, { "tele-points.net", true }, + { "tele-teen.ru", true }, { "tele.wiki", true }, + { "tele2vaxel.se", true }, { "teleafrica.ga", true }, { "telealarme.ch", false }, { "telealarmevalais.ch", true }, + { "teleassistance-telealarme.com", true }, { "teleblog.gq", true }, { "telebugs.tk", true }, { "telecablenostima.tk", true }, @@ -118302,28 +135868,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "telecamera.pro", false }, { "telecharger-itunes.com", true }, { "telecharger-open-office.com", true }, + { "telecharger-videos.com", true }, { "telecharger-winrar.com", true }, { "telechirkut.xyz", true }, { "telecomhelp.ru", true }, + { "telecommande-express.com", true }, { "telecommunications.cf", true }, { "telecommutejobs.com", true }, { "telecomwestland.nl", true }, { "teledatos.tk", true }, { "teledivi.com", true }, - { "telefisk.org", true }, { "telefon.report", true }, { "telefonabonnement.dk", true }, { "telefoncek.si", true }, + { "telefonicatech.com", true }, { "telefonkort.tk", true }, { "telefonni-ustredna.cz", true }, { "telefonseelsorge-paderborn.de", true }, { "telefoon.nl", true }, { "telefunk.tk", true }, + { "telefusion.de", true }, { "telega.gq", true }, { "telegashop.cf", true }, { "telegra.ph", true }, { "telegram-gp.ml", true }, - { "telegram-sms.com", false }, { "telegram.org", true }, { "telegram.poker", true }, { "telegramlearn.tk", true }, @@ -118337,6 +135905,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "telelog.ml", true }, { "telema.tk", true }, { "telemaco.tk", true }, + { "telemetr.io", true }, + { "telemind.net", true }, { "telemitra.com", true }, { "telenco-datacenter.com", true }, { "telenco-networks.com", true }, @@ -118346,26 +135916,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "telephonedirectories.us", true }, { "telephoni-cdma.tk", true }, { "telepilote-academy.fr", true }, + { "telepizza.com", true }, + { "telepizza.es", true }, { "telepok.com", true }, { "telepons.com", true }, { "teleport.com.br", true }, { "teleport.sh", true }, - { "teleport.video", true }, { "teleportart.gq", true }, + { "teleportpink.com", true }, { "teleportweb.com.br", true }, { "teleradio.ga", true }, { "teleradio.tk", true }, { "telesales.guru", true }, + { "teleserce.com", true }, { "teleshkronja.ml", true }, { "teleshop.be", true }, { "teleskell.org", true }, { "telesoftware.tk", true }, { "telesonicengineering.com.my", true }, + { "telestepina.ru", true }, { "teletaxe.fr", true }, + { "teleteen.ru", true }, { "teleteleei.ml", true }, { "teletexto.com", true }, { "teletime.com.br", true }, + { "teleton.org", true }, { "teletxt.me", true }, + { "teleum.net", true }, { "televentabelcorp.com", true }, { "televisioncontests.ga", true }, { "televisionesendirecto.tk", true }, @@ -118375,21 +135952,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "telework.gov", true }, { "teleworkouts.com", true }, { "teleyal.blog", true }, - { "telford.codes", true }, + { "telezon.ru", true }, + { "telfas.de", true }, + { "telhai.ac.il", true }, { "telhatelite.com.br", true }, - { "telite.com.br", false }, + { "teligram.ru", true }, + { "telk.kr", true }, { "telka-online.tk", true }, + { "telking.com", true }, { "telkom.co.id", true }, { "telkomakses.co.id", true }, { "tellaresdo.com", true }, - { "tellerify.com", true }, + { "tellercounty.gov", true }, { "tellet.tel", true }, + { "tellimer.com", true }, { "telling-voices.tk", true }, { "telling.xyz", true }, { "tellingua.com", true }, { "tellme.tk", true }, { "tellusaboutus.com", true }, { "telly.site", true }, + { "telly.wtf", true }, { "tellygames.com", true }, { "tellyourtale.com", true }, { "telnet.dk", true }, @@ -118410,42 +135993,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tematonline.pl", true }, { "tembusulaw.com", true }, { "temdu.com", false }, + { "temeculaoliveoil.com", true }, { "temertysimcentre.com", true }, { "temirgaliev.tk", true }, { "temizlik.ml", true }, { "temizmama.com", true }, { "teml.in", true }, + { "temmyzplace.com", true }, { "temnacepel.cz", true }, - { "temnhan24h.com", false }, { "temnikova.tk", true }, - { "temogrp.com", true }, + { "temoclub.com", true }, + { "temofoundation.com", true }, + { "temogroup.com", true }, + { "temogroup.net", true }, + { "temogroup.org", true }, + { "temogroupe.com", true }, { "temoinfidele.fr", true }, + { "temoinfo.com", true }, + { "temomelvin.com", true }, + { "temonews.com", true }, { "temp-lars.army", true }, { "temp.pm", true }, { "temp37c.com", true }, { "tempa.com.ua", true }, - { "tempdatalogger.com", true }, { "tempdomain.ml", true }, { "tempdomain.tk", true }, + { "tempefestivalofthearts.com", true }, + { "temperedglassncase.com", true }, { "temperodojuca.com.br", true }, { "tempestsoft.com", true }, { "tempfiles.ninja", true }, { "templars.army", true }, { "template-help.fr", true }, { "templated.ga", true }, + { "templatetrip.com", true }, { "templeandalucia.tk", true }, + { "templeoverheaddoors.com", true }, { "templete.tk", true }, { "tempmail.ninja", true }, { "tempo.co", true }, + { "tempo.com.ph", true }, { "tempocams.com", true }, { "tempocams.net", true }, { "tempocams.org", true }, - { "tempoprimo.com", true }, + { "temporada.icu", true }, + { "temporada.tk", true }, { "temporal.tk", true }, { "temporalmotivation.com", true }, { "temporaris.com", true }, { "temporaryair.com", true }, + { "temporaryfencehire.net.au", true }, { "temporarysanity.tk", true }, + { "temporarytattoosguru.com.au", true }, { "tempsdexpo.com", true }, { "tempsoundsolutions.tk", true }, { "tempus-aquilae.de", true }, @@ -118455,16 +136054,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ten-ki-saiyo.online", true }, { "tena.ml", true }, { "tena.tk", true }, - { "tenable.com.au", true }, { "tenangjiwaku.tk", true }, + { "tenantacademy.co.za", true }, + { "tenantoptions.com.au", true }, { "tenber.ge", true }, { "tenberg.com", true }, { "tenbookclub.org", true }, { "tencent.xn--vuq861b", true }, + { "tencur.com", true }, { "tendanceaumasculin.fr", true }, + { "tendanceouest.com", true }, + { "tendaqu.com", true }, { "tende.roma.it", true }, { "tendergrupp.ru", false }, { "tendermaster.com.ua", true }, + { "tenderned.nl", true }, { "tenderstem.co.uk", true }, { "tenderstem.ie", true }, { "tendiestown.com", true }, @@ -118473,7 +136077,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tendmed.com.br", true }, { "tendomag.com", true }, { "tendure.tk", true }, - { "tenelco.net", true }, { "tenens.ru", true }, { "tenenz.com", true }, { "tenerifeautohuur.nl", true }, @@ -118492,11 +136095,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tenma.pro", true }, { "tennaxia.com", true }, { "tenncare.gov", true }, + { "tennesseejeepsters.com", true }, + { "tennis-academy-weserbergland.de", true }, { "tennis-agesc.fr", true }, { "tennis-altai.tk", true }, { "tennis-hameln.de", true }, { "tennisadmin.com", true }, { "tennisapp.de", true }, + { "tenniscourtsjoburg.com", true }, { "tenniscritic.ga", true }, { "tennismania.tk", true }, { "tennismindgame.com", true }, @@ -118509,6 +136115,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tennisweb.cf", true }, { "tenno.tools", true }, { "tenon-backup.com", true }, + { "tenryo.work", false }, { "tenshindo.ne.jp", true }, { "tenshoku-hanashi.com", true }, { "tenshokudo.com", true }, @@ -118523,22 +136130,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tenthdimensions.com", true }, { "tenthirtyonepictures.com", true }, { "tenthousandcoffees.com", true }, + { "tentinger.co", true }, + { "tentoo.nl", true }, { "tentq.com", true }, { "tentries.com", true }, + { "tenutachianchizza.it", false }, { "tenyx.de", true }, { "tenzer.dk", true }, + { "teoassessoria.com.br", true }, { "teodorpravicky.com", true }, { "teodw.com", true }, { "teodw.net", true }, - { "teoleonie.com", false }, { "teoletextsq.tk", true }, + { "teologia.promo", true }, { "teomahk.de", true }, { "teoskanta.fi", true }, + { "tep.com", true }, + { "tepaard.ddns.net", true }, { "tepautotuning.com", true }, + { "tepco2021.com", true }, { "tepid.org", true }, - { "tepitus.de", true }, + { "tepitus.de", false }, { "teplici-crimea.ru", true }, - { "teplicy-rt.ru", true }, { "teplo-russia.ru", true }, { "teplo-unit.ru", true }, { "teplofom.ru", true }, @@ -118553,6 +136166,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teq-automotive.com", true }, { "teqip-pms.gov.in", true }, { "tequenikality.net", true }, + { "tequilaavion.com", true }, { "tequilazor.com", true }, { "terabyte-computing.com", true }, { "terabyte.services", true }, @@ -118563,9 +136177,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "teradatta.gq", true }, { "teradatta.tk", true }, { "teramind.co", true }, + { "teramundi.com", true }, + { "teran.me", true }, + { "teran.pw", true }, + { "teran.ru", true }, { "teranacreative.com", true }, { "terapeuticaenalza.es", true }, { "terapiaradial.tk", true }, + { "terapower.com.tw", true }, + { "teraren.com", true }, { "teraservice.eu", true }, { "teraservice.ml", true }, { "terass.com", false }, @@ -118573,13 +136193,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "terborg600.nl", true }, { "tercelonlinelat.tk", true }, { "tercosdemaria.com.br", true }, + { "teremopt.ru", true }, { "terence2008.info", true }, { "terengganudaily.tk", true }, { "terenska-edinica.tk", true }, { "terento.org", true }, - { "tereotech.net", true }, - { "teriiphotography.com", true }, { "teritwarsj.org", true }, + { "teriva.ua", true }, { "teriyakisecret.com", true }, { "term-master.ru", true }, { "terma.ml", true }, @@ -118591,20 +136211,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "termeh-store.com", true }, { "termi.tk", true }, { "termifree.tk", true }, - { "termin-online.com", true }, + { "termin-online.com", false }, { "terminalyouth.tk", true }, { "terminationsremembered.com", true }, + { "termine.tel", true }, { "termino.eu", true }, { "terminsrakning.se", true }, { "termitinitus.org", true }, + { "termius.com", true }, { "termografiranje.si", true }, { "termoidraulica.roma.it", true }, { "termoidraulico.milano.it", true }, { "termoidraulico.roma.it", true }, { "termopares.tk", true }, { "termux.com", true }, + { "ternakbisnis.id", true }, { "ternex.ru", true }, { "ternitoday.it", true }, + { "terobait48.ru", true }, { "teronia.net", true }, { "terovania.com", true }, { "terovania.de", true }, @@ -118621,6 +136245,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "terracloud.de", false }, { "terraco.ga", true }, { "terracom.gr", true }, + { "terracycle.com", true }, { "terraesencial.com", true }, { "terrafinanz.de", true }, { "terraform.io", false }, @@ -118631,30 +136256,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "terramineira.com.br", true }, { "terraneesens.fr", true }, { "terranimo.re", true }, - { "terranoclub.pt", false }, - { "terranova.fi", true }, - { "terranovadesignbuild.com", false }, - { "terrapay.com", true }, + { "terranova.fi", false }, + { "terranovadesignbuild.com", true }, { "terrapinstationmd.com", true }, { "terraquercus.tk", true }, { "terrariatr.tk", true }, { "terrarium.tk", true }, { "terrasandcooking.nl", true }, + { "terrasandcookingoutdoor.nl", true }, { "terrasearcher.tk", true }, { "terraso.org", true }, { "terrasoverkappingvillage.be", true }, { "terrasoverkappingvillage.nl", true }, + { "terratruehq.com", true }, { "terraweb.net", true }, { "terrax.net", true }, + { "terredeshommes.nl", true }, { "terrelltx.gov", true }, { "terremoto.com.br", true }, { "terrenal.tk", true }, { "terrenasparadise.com", true }, { "terres-et-territoires.com", true }, { "terresmagiques.com", false }, + { "terrexllc.com", true }, + { "terrischeer.com.au", true }, + { "territoriesredress.gov.au", true }, { "territoriocuchero.tk", true }, { "territoriya.tk", true }, { "territory.cf", true }, + { "terroinsect.com.mx", true }, { "terrorbilly.com", true }, { "terrorblast.tk", true }, { "terrorism.lol", true }, @@ -118666,6 +136296,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ters.ga", true }, { "terudon.com", true }, { "terumoindia.com", true }, + { "terumoindiaskilllab.com", true }, + { "terumomedical.com", true }, { "tervelde.com", true }, { "terviseamet.ee", false }, { "tervolina.tk", true }, @@ -118674,40 +136306,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tescoludia.sk", true }, { "tesdrole.tk", true }, { "tesharp.com", true }, - { "teskaassociates.com", true }, + { "teshuzi.com", true }, { "teskalabs.com", true }, { "tesla-fire.com", true }, { "tesla-tula.tk", true }, { "tesladeaths.com", true }, + { "teslam.in", true }, { "teslamagician.com", true }, { "teslamate.ca", true }, { "teslasuit.io", true }, + { "tesorion.nl", true }, { "tespent.cn", true }, + { "tesseract.wiki", true }, { "tesseractinitiative.org", true }, { "tessierashpool.de", true }, { "tessla.org", true }, { "test-coz.online", true }, - { "test-do.space", true }, + { "test-deployment.xyz", true }, { "test-eligibilite-isolation.com", true }, { "test-iq.gq", true }, { "test-my.tk", true }, { "test-na-beremennost.tk", true }, { "test-online.tk", true }, + { "test-privacyportal-ui.azurewebsites.net", true }, { "test-school.ml", true }, - { "test-sev-web.pantheonsite.io", true }, { "test-textbooks.com", true }, - { "test-zahnzusatzversicherung.de", true }, { "test.de", true }, + { "test.io", true }, { "test1-isrewards.com", true }, + { "test2-isrewards.com", true }, { "test4pro.ga", true }, { "testable.org", true }, { "testadren.com", true }, { "testadron.com", true }, { "testapfnxg.com", true }, + { "testaustime.fi", true }, { "testbed.fi", true }, { "testbirds.cz", true }, { "testbirds.sk", true }, + { "testcase.me", true }, { "testcoz.tk", true }, + { "testdatagovernancetool.azurewebsites.net", true }, { "testdemoweb.tk", true }, { "testdevelocidad.com", true }, { "testdomens.ga", true }, @@ -118721,11 +136360,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "testermerch.pl", true }, { "testeveonline.com", true }, { "testforce.tk", true }, + { "testfort.com", true }, { "testfra.me", true }, { "testgeomed.ro", true }, + { "testgroup.nl", true }, + { "testheat.org", true }, { "testic.com", true }, { "testikel.be", true }, - { "testing-grounds.site", true }, { "testing-server.tk", true }, { "testingbot.com", true }, { "testingtask.tk", true }, @@ -118745,35 +136386,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "testosteronedetective.com", true }, { "testovaci.ml", true }, { "testpinoy.com", true }, + { "testplant.com", true }, { "testpool.gq", true }, { "testpornsite.com", true }, { "testprep.online", true }, + { "testprepinsight.com", true }, { "testpsicotecnicos.com.es", true }, { "testq.se", true }, { "tests-and-tips.info", true }, { "tests-und-tipps.info", true }, { "tests.pp.ru", true }, { "tests.school", true }, - { "testsab.com", true }, { "testscript.ml", true }, { "testservice.nl", true }, { "testsitefortask.xyz", true }, { "testsity.tk", true }, { "testsnelcovid.nl", true }, { "testspsicotecnicos.org", true }, - { "testsuite.org", true }, { "testsweb.ml", true }, { "testthis.cf", true }, + { "testvision.nl", true }, { "testyonline.tk", true }, { "tetangers.tk", true }, - { "tetedelacourse.ch", true }, { "tetete-no-te.com", true }, + { "tether.com", true }, { "tethercasinos.io", true }, { "tetherqr.com", true }, - { "tethys-invest.fr", true }, { "tethys.fr", true }, { "teto.nu", true }, { "tetonas.tk", true }, + { "tetontherapypc.com", true }, { "tetorix.gq", true }, { "tetovaweb.tk", true }, { "tetovo.tk", true }, @@ -118787,33 +136429,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tetrarch.co", true }, { "tetrimus.com", true }, { "tetrisponse.io", true }, - { "tetsua.com", true }, { "tetsudo.jp.net", true }, - { "tetsufan.com", true }, + { "tetsumaki.net", true }, { "tetweb.ir", true }, { "teu-fel.com", true }, { "teufel-cloud.ddns.net", true }, + { "teufel.de", true }, + { "teufelaudio.nl", true }, { "teufelswerk.net", true }, { "teulon.eu", true }, { "teungedj.de", true }, { "teunmulder.tk", true }, { "teunstuinposters.nl", true }, + { "teupholstery.com", true }, { "teusink.eu", true }, + { "teuton.io", true }, { "teutonia-grossenlueder.de", true }, { "teutonia08.de", true }, + { "teva.com", true }, + { "teveblad.be", true }, + { "teverzamelen.nl", true }, { "tewarilab.co.uk", true }, { "tewkesburyyoga.com", true }, { "tex-izol.ru", true }, { "texaport.co.uk", true }, + { "texarkanatexas.gov", true }, { "texarkanatherapycenter.com", true }, { "texasbluesalley.com", true }, + { "texascarauctions.com", true }, { "texascharterbuscompany.com", true }, + { "texascoffee.co", true }, { "texascommunitypropane.azurewebsites.net", true }, + { "texasconcretereadymix.com", true }, { "texascountymo911.gov", true }, + { "texascredit.com", true }, { "texasdivorceforall.com", true }, { "texasgynecomastia.com", true }, { "texashealthtrace.gov", true }, - { "texashomesandland.com", true }, + { "texasintegratedservices.com", true }, { "texasnewsusa.tk", true }, { "texasonesource.com", true }, { "texasonlinedivorce.com", true }, @@ -118822,18 +136475,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "texasparkinglotstriping.com", true }, { "texasready.gov", true }, { "texasteam.tk", true }, - { "texastwostepdivorce.com", false }, { "texasurodoc.com", true }, { "texasvolunteerattorneys.org", true }, { "texaswinetrail.com", true }, { "texby.com", true }, - { "texcolors.com.co", true }, + { "texdot.gov", true }, { "texel.es", true }, { "texel.tk", true }, - { "texhnolyze.net", true }, + { "texfunding.com", true }, { "texican.nl", true }, { "texicopolicenm.gov", true }, { "texier.mx", true }, + { "texkey.com", true }, + { "texkings.com", true }, { "texnogu.ru", true }, { "texnoguru.tk", true }, { "texnolog.tk", true }, @@ -118842,7 +136496,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "texpresspainting.com", true }, { "textadventure.tk", true }, { "textassistant.ga", true }, - { "textbrawlers.com", true }, { "textcleaner.net", true }, { "textcounter.tk", true }, { "texteditor.co", true }, @@ -118850,7 +136503,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "texter.at", true }, { "texterseo.at", true }, { "texterseo.de", true }, - { "textgen.pl", true }, + { "textieldiscounter.nl", true }, { "textil-kyoto.tk", true }, { "textiles.tk", true }, { "textinmate.com", true }, @@ -118860,18 +136513,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "textpattern.com", true }, { "textpro.xyz", true }, { "textprotocol.org", true }, + { "textron.com", false }, + { "textscout.io", true }, { "textsite.tk", true }, { "textualapp.com", true }, { "textundblog.de", true }, { "textura.bg", true }, + { "textura.gr", true }, + { "textura.ro", true }, + { "textures-resource.com", true }, + { "textus.com", true }, { "textzformatter.com", true }, { "texus.me", true }, { "texy.info", true }, { "teycos.com", true }, + { "teyit.org", true }, { "teysens.com", true }, + { "teyyib.com", true }, { "tezcam.tk", true }, + { "tezgoal.com", true }, { "teztarama.com", true }, - { "tezwifi.com", true }, { "tf-network.de", true }, { "tf2b.com", true }, { "tf2calculator.com", true }, @@ -118879,32 +136540,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tf2pickup.de", true }, { "tf2pickup.fi", true }, { "tf2pickup.it", true }, - { "tf2pickup.nl", true }, { "tf2pickup.org", true }, { "tf2pickup.pl", true }, { "tf2pickup.se", true }, { "tf2pickup.web.tr", true }, { "tf7879.com", true }, { "tfadictivo.com", true }, + { "tfaforms.com", true }, { "tfb.az", true }, { "tferdinand.net", true }, { "tfg-bouncycastles.com", true }, + { "tfiglobalnews.com", true }, { "tfiik.com", true }, + { "tfinfo.fr", true }, + { "tfipost.com", true }, + { "tfk-installatieservice.nl", true }, { "tfk.fr", true }, { "tfle.xyz", true }, { "tflite.com", true }, { "tfnapps.de", true }, { "tfok.ml", true }, - { "tfscreener.com", true }, + { "tfrei.de", true }, { "tfsound.cz", true }, { "tfsrcymru.org.uk", true }, { "tft-cheat-sheet.com", true }, { "tfus.co", true }, { "tfw-a.com", true }, { "tfx.com.br", true }, - { "tfx.pt", true }, { "tfxstartup.com", true }, { "tfxstartup.com.br", true }, + { "tfyre.co.za", true }, { "tg2sclient.com", true }, { "tgb.org.uk", true }, { "tgbyte.de", true }, @@ -118916,37 +136581,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tgmarketingusa.com", true }, { "tgo1111.com", false }, { "tgo6688.com", false }, - { "tgo789.com", true }, + { "tgo789.com", false }, { "tgo8899.com", true }, { "tgoaa.com", true }, { "tgoall.com", true }, { "tgod.co", true }, { "tgrade.finance", false }, - { "tgt.co.il", true }, + { "tgt.co.il", false }, { "tgtw.cc", true }, { "tgu15.com", true }, { "tgui.eu", true }, { "tgui.net", true }, { "tgw.com", true }, { "tgwork.com", true }, - { "tgymj.gov.tm", true }, + { "tgx.rs", true }, + { "th-1x.com", true }, + { "th-1xbet.com", true }, { "th-bl.de", true }, { "th-fanlist.tk", true }, - { "th-nuernberg.de", true }, { "th.search.yahoo.com", false }, + { "th2eco.de", true }, { "thablubb.de", true }, + { "thabomakhele.co.za", true }, { "thackert.myfirewall.org", true }, - { "thaf.fr", true }, { "thai-massage.tk", true }, { "thai-ridgeback.tk", true }, - { "thai.dating", true }, { "thai.land", true }, { "thai369.com", true }, { "thaibizsingapore.com", true }, { "thaiboystory.ga", true }, { "thaibrokersfx.com", true }, { "thaicurry.net", true }, - { "thaicyberpoint.com", true }, { "thaiforest.ch", false }, { "thaiforexfamily.com", true }, { "thaifriendly.com", true }, @@ -118955,6 +136620,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thaihong.co.th", true }, { "thaihong.com", true }, { "thaihotmodels.tk", true }, + { "thailande-fr.com", true }, { "thailandguru.properties", true }, { "thailandhotel.tk", true }, { "thailandpropertylisting.ga", true }, @@ -118966,6 +136632,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thaiportal.gq", true }, { "thairad.com", true }, { "thais.tk", true }, + { "thaislots.online", true }, + { "thaisolarexpert.com", true }, { "thaisurveys.com", true }, { "thaitonic.de", true }, { "thaiwrestling.tk", true }, @@ -118973,45 +136641,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thajske-masaze-brno.cz", true }, { "thajske-masaze-olomouc.cz", true }, { "thajske-masaze-vyskov.cz", true }, - { "thajskyraj.com", true }, { "thakurmarjhuli.tk", true }, { "thalamus.nz", true }, { "thalan.fr", true }, - { "thalgo-cz.cz", true }, { "thalgott.net", false }, { "thalhammer.it", true }, { "thalia.nu", true }, { "thalikkunushivatemple.tk", true }, + { "thallesmitchell.com", true }, { "thalliman.com", true }, - { "thallinger.me", true }, { "thalmann.fr", false }, - { "thambaru.com", true }, { "thamesfamilydentistry.com", true }, { "thamesvalleybuses.com", true }, { "thammachartconnect.com", true }, { "thammysen.vn", true }, { "thanatoid.net", true }, + { "thancon.com", true }, { "thanhtrungmobile.vn", true }, - { "thankyou.bg", true }, { "thantra.tk", true }, { "thapduoc.com", true }, - { "tharuka-app.de", true }, { "tharuka.com", true }, { "tharuka.de", true }, { "thaserv.de", true }, { "thassos-world-web.tk", true }, { "thassos.tk", true }, { "that.host", true }, + { "thatch.ai", true }, + { "thatchhealth.com", true }, { "thatdaria.com", true }, { "thatdarkplace.com", true }, { "thatdirtyd.com", true }, - { "thatguy.rocks", true }, { "thatmy.com", true }, { "thatshayini-sivananthan.fr", true }, { "thatssodee.com", true }, { "thaumaturgian-national-university.tk", true }, { "thavmacode.gr", true }, + { "thaw.systems", true }, { "thawte.com.ru", true }, + { "thaxton.xyz", false }, { "thc-stadvdzon.nl", true }, { "thca.ca", true }, { "thda.org", true }, @@ -119020,14 +136687,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "the-archive.io", true }, { "the-archive.ml", true }, { "the-azad.com", true }, - { "the-bermanns.com", true }, { "the-big-bang-theory.com", true }, + { "the-brandidentity.com", true }, + { "the-buildersyard.com", true }, { "the-burtons.xyz", true }, { "the-busbys.com", true }, - { "the-club.fr", true }, + { "the-carshop.com", true }, + { "the-crypto-syllabus.com", true }, { "the-deep.tk", true }, + { "the-digital-insurer.com", true }, { "the-digitale.com", false }, + { "the-doorman.co.uk", true }, { "the-dream.tk", true }, + { "the-ear.net", true }, { "the-earth-yui.net", false }, { "the-egotronic.tk", true }, { "the-farm.tk", true }, @@ -119036,41 +136708,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "the-gdn.net", true }, { "the-gist.io", true }, { "the-glitch.network", true }, - { "the-jeuxflash.com", true }, + { "the-ken.com", true }, { "the-lfb.tk", true }, - { "the-little-home.com", true }, + { "the-mechanics.co.uk", true }, { "the-mermaid.tk", true }, { "the-metropolitans.tk", true }, { "the-muddy-trophy-team.tk", true }, { "the-mudmen.tk", true }, - { "the-mystery.org", false }, { "the-naked.com", true }, { "the-nash-education-program.com", true }, + { "the-northfacejackets.net.co", true }, { "the-opposites.tk", true }, { "the-pcca.org", true }, - { "the-rates.ru", true }, + { "the-pressoffice.com", true }, { "the-red.pp.ua", true }, { "the-small-dick-club.com", true }, { "the-spellcaster.com", true }, { "the-spoonfeed.club", true }, { "the-storm.tk", true }, + { "the-tech-trend.com", true }, { "the-tg.com", true }, + { "the-top.net", true }, { "the-trophy-company.com", true }, { "the-wandering-midget.tk", true }, { "the-winx.tk", true }, { "the-woods.org.uk", true }, - { "the-word-smith.com", true }, { "the-world.tk", true }, { "the-zenti.de", true }, + { "the1.wiki", true }, { "the12by12.com", true }, { "the13thtribe.tk", true }, - { "the3musketeers.biz", true }, { "the51news.ga", true }, { "the5th.nl", true }, + { "the7eye.org.il", true }, { "the8rules.co.uk", true }, + { "thea-meditation.com", true }, { "thea-team.net", true }, - { "theablemind.com", true }, - { "theacademicpapers.co.uk", true }, { "theaccountingcompanyleeds.co.uk", true }, { "theaceblock.space", true }, { "theactivationfunction.com", true }, @@ -119081,6 +136754,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theafleo.ga", true }, { "theafleo.gq", true }, { "theagencywithoutaname.com", true }, + { "theaidigitalmarketingblog.com", true }, { "thealchemistatelier.com", true }, { "theallmanteam.com", true }, { "thealmoners.com", true }, @@ -119096,43 +136770,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theangelgivingtree.info", true }, { "theangelgivingtree.net", true }, { "theangelgivingtree.org", true }, + { "theangelushouse.com", true }, + { "theanimalskingdom.com", true }, { "theanswerexperts.com", true }, { "theantarticx.com", true }, { "theantisocialengineer.com", true }, { "theantnetwork.tk", true }, { "theapj.com", true }, { "theapplewiki.com", true }, - { "theappliancedepot.co.uk", true }, { "theapriltears.tk", true }, { "theaps.net", false }, { "theaquila.tk", true }, { "thearcheryguide.com", true }, + { "thearches.co.uk", true }, { "thearchimag.tk", true }, { "thearizonatribune.com", true }, - { "theartofe.fr", true }, + { "thearkfamily.org", true }, + { "thearmchairtrader.com", false }, + { "thearmypainter.com", false }, { "theasianshooters.com", true }, { "theastrocoach.com", true }, { "theataraxia.tk", true }, { "theataraxiazine.tk", true }, { "theater.cf", true }, - { "theaterbyte.com", true }, { "theaterfrederik.tk", true }, { "theatergroep-o.nl", true }, { "theaterreichenhall.tk", true }, - { "theatersydney.com", true }, { "theatheistbook.com", true }, { "theathletic.com", true }, { "theatre-schools.com", true }, + { "theatrefolk.com", true }, { "theatrepremol.com", true }, { "theatresocietyguts.tk", true }, { "theatresuite.tk", true }, - { "theatresydney.com", true }, { "theaus.xyz", true }, { "theaustinbulldog.org", true }, { "theaustinsevenworkshop.com", true }, - { "theaviationagency.com", true }, { "theawesomemuse.com", true }, - { "thebaa.tk", true }, { "thebabelog.cf", true }, { "thebabelog.ga", true }, { "thebabelog.gq", true }, @@ -119143,35 +136817,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thebakersbuddy.co.uk", true }, { "thebakery2go.de", true }, { "thebannerstore.com", true }, + { "thebarclay.org", true }, { "thebarkofhinkle.com", true }, { "thebarrens.nu", true }, - { "thebasebk.org", true }, { "thebasementdefender.com", true }, { "thebasementdefender.net", true }, { "thebasicstudio.com", true }, { "thebathroomexchange.ga", true }, { "thebcm.co.uk", true }, { "thebeatyard.nl", true }, + { "thebeaulife.co", true }, { "thebeautyqueen.tk", true }, + { "thebedfordcitizen.org", true }, { "thebeeyard.org", true }, { "thebeginningviolinist.com", true }, + { "thebenefitcalculator.com", true }, { "thebengalinews.tk", true }, + { "thebenstore.com", true }, { "theberries.tk", true }, { "thebestfun.co.uk", true }, { "thebestlaos.ga", true }, { "thebestnews.ga", true }, { "thebestofthesprings.com", true }, { "thebestpersonin.ml", true }, + { "thebestproducts.info", true }, { "thebestshopping.tk", true }, + { "thebetterfit.com", true }, + { "thebettermagazine.com", true }, + { "thebhc.org", true }, { "thebigbigworld.tk", true }, - { "thebigbitch.nl", true }, { "thebigdatacompany.com", true }, { "thebigdig.xyz", true }, { "thebiglaskowski.com", true }, - { "thebignow.it", true }, { "thebigslow.com", true }, - { "thebikeinsurer.co.uk", true }, { "thebillingtongroup.com", true }, + { "thebillu.com", true }, { "thebinarys.com", true }, { "thebiopoetist.eu.org", true }, { "thebirchwoods.com", true }, @@ -119183,12 +136863,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theblackcat.ga", true }, { "theblackknightsings.com", true }, { "theblackravens.com", true }, + { "theblankenshipfirm.com", true }, { "theblink.com", true }, { "theblisters.tk", true }, { "theblog.cn", true }, + { "theblogstarter.com", true }, { "theblondeabroad.com", false }, { "theblue.tk", true }, - { "theblueground.com", true }, { "theblueinnovations.com", true }, { "thebluered.net", false }, { "theblueroofcottage.ca", true }, @@ -119201,7 +136882,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theboats.de", true }, { "theboats.online", true }, { "theboats.pro", true }, - { "theboats.site", true }, { "thebobcoin.io", true }, { "thebodylanguageguide.tk", true }, { "thebodyshop.bg", true }, @@ -119209,12 +136889,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thebonerking.com", true }, { "thebook.pro", true }, { "thebosshub.net", true }, + { "thebot.net", true }, { "theboulders.com", true }, { "thebouncedepartment.co.uk", true }, - { "thebouncyman.co.uk", true }, { "theboxofcarlos.com", true }, { "theboxoutofthebox.com", true }, { "theboysrepublic.tk", true }, + { "thebrag.com", true }, { "thebrainfactory.eu", true }, { "thebraininitiative.gov", true }, { "thebrainwash.tk", true }, @@ -119224,22 +136905,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thebridalcollection.com", true }, { "thebrightons.co.uk", true }, { "thebrightons.uk", true }, + { "thebritishlibraryinstallation.com", true }, { "thebroadcastknowledge.com", true }, { "thebrookeb.com", true }, - { "thebsclub.com", true }, { "thebsl.ca", true }, { "thebss.tk", true }, { "thebte.com", true }, { "thebucklandreligion.tk", true }, - { "thebucknetwork.com", true }, { "thebuffalotavern.com", true }, + { "thebugmanfraservalley.com", true }, + { "thebull.com.au", true }, { "thebulletin.io", true }, + { "thebunnyhutch.org", true }, { "theburst.tk", true }, + { "thebus.top", true }, { "thebusinessofgoodfilm.com", true }, { "thebutterflyencounters.com", true }, - { "thebutterflypig.com", true }, { "thebuttongame.io", true }, - { "thecache.io", true }, + { "thebuttonpost.com", true }, { "thecakeboxhampton.co.uk", true }, { "thecalifornias.tk", true }, { "thecalmnessofblankspace.tk", true }, @@ -119248,60 +136931,79 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thecanadarace.com", true }, { "thecandidforum.com", true }, { "thecandystore.tk", true }, + { "thecanuckway.com", true }, { "thecardcloset.com", true }, { "thecarolingconnection.com", true }, { "thecarpenters.tk", true }, { "thecarphunter.tk", true }, { "thecarriagerooms.com", true }, + { "thecatanddogbowl.au", true }, { "thecatbowl.com.au", true }, { "thecats.tk", true }, { "thecavedistro.tk", true }, { "thecaveofsatyr.tk", true }, { "thecavepeople.is", true }, + { "thecdev.com.br", true }, + { "thecelticbhoys.com", true }, { "thecelticfiles.tk", true }, { "theceocollective.com", true }, + { "thecfef.org", true }, + { "thechaikinreport.com", true }, { "thechallenge.fit", true }, { "thechandigarhcity.com", true }, - { "thechargertimes.com", true }, { "thechatlinenumbers.com", true }, { "thechavs.xyz", true }, - { "thecheapairlinetickets.com", true }, { "thecheat.tk", true }, { "thecheese.co.nz", true }, { "thechelseadrugstore.ie", true }, { "thechemistryisdead.tk", true }, { "thecherryship.ch", false }, + { "thechfdietitian.com", true }, { "thechicanos.tk", true }, + { "thechinaguide.com", true }, { "thechoice.tk", true }, { "thechosenones.tk", true }, - { "thecigarlibrary.com", true }, + { "thecigarlibrary.com", false }, { "theciso.com", false }, - { "thecityofrefugemin.com", true }, { "thecitywarehouse.clothing", true }, { "theclarke.house", true }, { "theclarke.wedding", true }, { "theclearingnw.com", true }, + { "thecleverhost.co.uk", true }, + { "theclimbingunit.com", true }, + { "theclockdepot.com", true }, { "theclonker.de", false }, + { "thecloroxcompany.com", true }, { "thecloudadmin.eu", true }, { "thecluster.xyz", true }, { "thecnstore.com", true }, { "thecodeninja.net", true }, { "thecoffeecamp.com", true }, + { "thecognitivequest.com", true }, + { "thecolorbarph.com", true }, + { "thecolorrun.hu", true }, { "thecolourbox.in", true }, { "thecolourcloset.ca", true }, { "thecombustionway.com", false }, + { "thecomedystore.co.uk", true }, { "thecommonmen.tk", true }, + { "thecommunityguide.org", true }, { "thecommunitymakers.club", true }, { "thecompany.pl", true }, + { "thecompliancepeople.co.uk", true }, { "theconcordbridge.azurewebsites.net", true }, { "thecondemned.tk", true }, + { "theconductsoflife.com", true }, { "theconsultant.jp", true }, { "theconsultingpeople.tk", true }, { "thecontentcloud.com", true }, { "theconversation.com", true }, + { "theconverter.net", false }, { "thecook.com.co", true }, + { "thecookiewriter.com", true }, { "thecoredublin.tk", true }, { "thecorianderkitchen.com", true }, + { "thecorrectblogger.com", true }, { "thecostymusic.tk", true }, { "thecotsworth.com", true }, { "thecoverlot.com", true }, @@ -119312,29 +137014,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thecraftingstrider.net", true }, { "thecrazybrains.tk", true }, { "thecrazytravel.com", true }, - { "thecreativeedgeinc.com", true }, + { "thecreativeshour.com", true }, { "thecrew-exchange.com", true }, { "thecrimson.tk", true }, { "thecrochetcottage.net", true }, + { "thecronosgroup.com", true }, { "thecrypt.game", true }, { "thecskr.in", true }, { "thecstick.com", true }, { "thecubepsych.com", true }, + { "thecup.us", true }, { "thecureplainsong.tk", true }, { "thecuriousdev.com", true }, { "thecurvyfashionista.com", true }, { "thecurvyrentalboutique.co.nz", true }, { "thecustomdroid.com", true }, { "thecustomizewindows.com", true }, + { "thecyberwire.com", true }, { "theda.co.za", true }, { "thedaac.org", true }, { "thedailybloon.tk", true }, { "thedailyprosper.com", false }, { "thedailyreporteronline.com", true }, - { "thedailyshirts.com", true }, { "thedailyupvote.com", true }, + { "thedaimon.cn", true }, { "thedanceacademybuckscounty.com", false }, - { "thedanielswedding.com", true }, { "thedark.ga", true }, { "thedark1337.com", true }, { "thedarkages.tk", true }, @@ -119343,6 +137047,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thedarkfusion.tk", true }, { "thedarksidesoftwaresecurity.ga", true }, { "thedarkteam.tk", true }, + { "thedataexaminer.com", true }, { "thedave.link", true }, { "thedave.me", true }, { "thedave.photos", true }, @@ -119351,25 +137056,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thedeathofannakarina.tk", true }, { "thedebug.life", true }, { "thedefiled.tk", true }, - { "thedefiningdifference.com", true }, + { "thedelaunay.com", true }, + { "thedelightfuldiet.com", true }, + { "thedemocraticstrategist.org", true }, { "thedermdetective.com", true }, - { "thederminstitute.com", true }, + { "thedesk.net", true }, { "thedev.id", true }, { "thedevastatedrealm.tk", true }, { "thedevilsbrigade.com", true }, { "thedevilwearswibra.nl", true }, { "thedevrycommonsbrasil.com", false }, + { "thediamondapp.com", true }, { "thedietsolutionprog.tk", true }, + { "thedigitalcurator.art", true }, { "thedigitalparadox.tk", true }, + { "thediligentwoman.com", true }, { "thedinnerdetective.com", true }, { "thediscforum.tk", true }, { "thediscovine.com", true }, + { "thedistance.co.uk", true }, + { "thedivineforce.com", true }, { "thediyvibe.com", true }, { "thedjhookup.com", true }, { "thedoc.eu.org", true }, { "thedocumentrefinery.com", true }, + { "thedomains.co.uk", true }, { "thedonaldarchive.tk", true }, { "thedotcom.tk", true }, + { "thedowlinggroup.com", true }, { "thedrakesdebut.com", true }, { "thedrawbacks.tk", true }, { "thedriftuniversity.com", true }, @@ -119382,9 +137096,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thedysfunctionalangel.ga", true }, { "thedysfunctionalangel.gq", true }, { "thedysfunctionalangel.ml", true }, + { "theeagle.com", true }, { "theebookkeepers.co.za", true }, + { "theeducationalequalityinstitute.org", true }, + { "theeducatoronline.com", true }, { "theeffingyogablog.com", true }, - { "theeftacademyuk.com", true }, { "theegyptblog.tk", true }, { "theeighthbit.com", false }, { "theel0ja.info", true }, @@ -119396,24 +137112,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theeliteneet.com", true }, { "theemeraldmagazine.com", true }, { "theemptyvault.com", true }, - { "theenchantedannex.co.uk", true }, { "theender.net", true }, - { "theendofzion.com", true }, + { "theendlesssixties.com", true }, + { "theendpoem.com", true }, { "theentropyofdelicatewonders.com", true }, { "theepankar.com", true }, - { "theepiclounge.com", true }, { "theepicsponge.co.uk", true }, { "theequinepractice.com", true }, + { "theescapegame.com", true }, + { "theestateplanninggroup.com", true }, { "theeuropeanlibrary.org", true }, { "theevergreen.me", false }, { "theeverydayprepper.com", true }, { "theexodus.tk", true }, { "theexpatriate.de", true }, + { "theexplorer.ro", true }, { "theextract.co.uk", true }, { "theeyeopener.com", true }, + { "theeyewearshop.com.au", true }, { "thefabricator.com", true }, { "thefabulouslifestyles.com", true }, { "thefabulouswomen.com", true }, + { "thefaceshop.ca", true }, { "thefaircottage.com", true }, { "thefairieswantmedead.com", true }, { "thefairytale.tk", true }, @@ -119425,17 +137145,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thefarleys.ca", true }, { "thefashiondistrict.tk", true }, { "thefashionpolos.com", true }, + { "thefasthire.org", true }, { "thefastmode.com", true }, + { "thefatduck.co.uk", true }, { "thefatlosspuzzle.com", false }, { "thefbstalker.com", true }, { "theferrarista.com", false }, { "thefibreapp.com", true }, + { "thefieldservicecompany.nl", true }, { "thefinalconflict.tk", true }, - { "thefireandthefreaks.com", true }, + { "thefinx.io", true }, { "thefishshop.ga", true }, { "thefitcare.com", true }, { "thefitcareerist.com", true }, - { "thefixhut.com", true }, { "theflashback.co.uk", true }, { "theflesh.tk", true }, { "theflexerzone.ga", true }, @@ -119446,25 +137168,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thefnafarchive.org", true }, { "thefoodcops.com", true }, { "thefooddictator.com", true }, - { "thefoodellers.com", true }, { "thefoodieblogger.com", true }, { "thefoot.tk", true }, { "theforkedspoon.com", true }, { "theformtool.com", true }, { "thefox.com.fr", true }, - { "thefoxstrousers.co.nz", false }, - { "thefoxtalk.com", false }, + { "thefranklinnewspost.com", true }, { "thefreebay.tk", true }, + { "thefreemail.com", true }, { "thefreethinker.tk", true }, + { "thefrenchbeautyacademy.edu.au", true }, { "thefrenchconnection.tk", true }, { "thefridaycinema.com", true }, { "thefriedzombie.com", true }, { "thefriedzombie.nl", true }, { "thefriedzombie.online", true }, - { "thefrk.pw", true }, + { "thefriendlyplant.co.za", true }, { "thefrontend.agency", true }, { "thefrugalvegan.tk", true }, { "thefuckingtide.com", false }, + { "thefulcrum.us", true }, { "thefunfirm.co.uk", true }, { "thefunzone.tk", true }, { "thefurnitureco.uk", true }, @@ -119475,15 +137198,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thegadget.tk", true }, { "thegadgetflow.com", true }, { "thegallery-restaurant.co.uk", true }, + { "thegamecave.co.uk", true }, { "thegamecollector.tk", true }, + { "thegamesroom.tv", true }, { "thegantars.tk", true }, { "thegasshop.co.uk", true }, { "thegasshop.uk", true }, + { "thegatewaydigital.com", true }, { "thegatewaytoanewworld.com", true }, { "thegeekdiary.com", true }, + { "thegeekguy.eu", true }, { "thegeeklab.de", true }, + { "thegeektools.com", true }, { "thegemriverside.com.vn", true }, - { "thegenesisshop.com", true }, { "thegeniusdz.tk", true }, { "thegentleman.tk", true }, { "thegeriatricdietitian.com", true }, @@ -119494,18 +137221,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thegiantsdream.tk", true }, { "thegildedthistle.com", true }, { "thegingersnapbaker.co.za", true }, - { "theginnylee.com", true }, { "thegioibanca.tk", true }, { "thegioidulich.com.vn", true }, - { "thegioiruoupro.com.vn", true }, { "theglencoetorah.com", true }, { "theglossymusings.com", true }, { "thego2swatking.com", true }, + { "thegoaescort.com", true }, { "thegoldandsilverexchange.com", true }, { "thegolden.com", true }, { "thegoodveggie.com", true }, { "thegoodvybe.ml", true }, { "thegospell.tk", true }, + { "thegotbiz.com", true }, + { "thegpbox.com", true }, + { "thegradient.pub", true }, { "thegraduatesalon.co.uk", true }, { "thegrandline.tk", true }, { "thegrandtour.tk", true }, @@ -119515,27 +137244,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thegreatgonzo.uk", true }, { "thegreatplains.com", true }, { "thegreatsouthernburgerco.ga", true }, + { "thegreendigest.com", true }, { "thegreenfields.se", true }, + { "thegreenlawreport.com", true }, { "thegreenmanpottery.com", true }, - { "thegrio.com", true }, { "thegroovecartel.com", true }, { "thegrotto.tk", true }, - { "thegrowhouse.ca", true }, { "thegrs.com", false }, { "theguerrilla.agency", false }, - { "theguitarcompany.nl", true }, + { "thegundogaffair.com", true }, { "thegvoffice.net", true }, { "thehabitat.com", true }, { "thehackerblog.com", true }, { "thehackers.cf", true }, { "thehadicks.com", true }, { "thehairrepublic.net", true }, - { "thehairstandard.com", true }, + { "thehalchal.com", true }, { "thehamiltoncoblog.com", true }, { "thehammerfund.com", true }, { "thehamptonsvegan.com", true }, { "thehappeny.com", true }, { "thehappyxwife.ga", true }, + { "thehardgame.top", true }, { "thehasanyildirim.tk", true }, { "thehashagency.com.au", true }, { "thehassanmusic.tk", true }, @@ -119549,41 +137279,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thehiltonfirm.tk", true }, { "thehivedesign.org", true }, { "thehoff.ddnss.de", true }, - { "thehollandfam.com", true }, + { "thehollandfam.com", false }, { "theholloways.tk", true }, { "thehomebakery.ie", true }, + { "thehomebarista.com", true }, { "thehomemademasks.com", true }, { "thehomeofthefuture.com", true }, { "thehoney.ga", true }, { "thehoneyfactory.de", true }, { "thehonorguard.org", true }, - { "thehonoursystem.com", true }, { "thehookup.be", true }, { "thehopefuture.com", true }, { "thehopper.io", true }, { "thehorsesadvocate.com", true }, { "thehosmers.com", true }, + { "thehotcasinos.com", true }, { "thehotfix.net", true }, { "thehotness.tech", true }, { "thehotrocks.tk", true }, - { "thehouseofchronic.com", true }, - { "thehouseofcode.com", true }, { "thehowlinwolfcafe.ga", true }, + { "thehudsonindependent.com", true }, + { "thehumancondition.com", true }, { "thehumanizer.tk", true }, { "thehumanjoint.com", true }, { "thehumorist.tk", true }, + { "thehunky.com", true }, { "thehuskyhaul.com", true }, { "theideaskitchen.com.au", true }, { "theidiotboard.com", true }, { "theig.co", true }, - { "theilluminatisociety.org", false }, { "theimagefile.com", true }, { "theimaginationagency.com", true }, { "theinboxpros.com", true }, + { "theindependent.ca", false }, + { "theindependent.com", true }, { "theindiangraph.tk", true }, { "theindiantimes.in", true }, { "theindiemood.com", true }, - { "theinflatables-ni.co.uk", true }, { "theinfoblog.com", true }, { "theinitium.com", false }, { "theinnerprism.com", true }, @@ -119591,7 +137323,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theinsightsfamily.com", true }, { "theinstitute.cf", true }, { "theintentionalgolfer.com", true }, - { "theintercept.com", true }, { "theinternationalgeekconspiracy.eu", true }, { "theinventory.com", true }, { "theinvisibleman.tk", true }, @@ -119600,18 +137331,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theislandwellness.com", true }, { "theissen.io", true }, { "theitaliantimes.it", true }, - { "thej.academy", true }, + { "theitsage.com", false }, { "thejacksoninstitute.com.au", true }, + { "thejc.com", true }, + { "thejewelhut.co.uk", true }, { "thejkdrebel.com", true }, - { "thejobauction.com", true }, + { "thejnotes.com", true }, + { "thejoaustralia.com", true }, + { "thejollyguest.com", true }, { "thejoneshub.com", true }, { "thejonsey.com", false }, { "thejourneydesignstudio.com", true }, { "thejoykiller.tk", true }, { "thejsmodel.com", true }, { "thejukebox.tk", true }, - { "thejump.live", true }, - { "thejunctionstudios.com", true }, { "thejunkfiles.com", true }, { "thekalakriti.tk", true }, { "thekapi.xyz", true }, @@ -119621,48 +137354,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thekidszone.in", true }, { "thekillertoxin.de", true }, { "thekingofhate.com", false }, + { "thekitchendoor.co.nz", true }, { "thekitchenfarnborough.co.uk", true }, { "thekitchenprofessor.com", true }, { "thekitchngic.com", true }, + { "thekitsunesden.com", true }, { "thekittivibe.com", true }, { "thekliniquehotdeal.com", true }, + { "theknittingnetwork.co.uk", true }, { "theknockout.tk", true }, { "theknowitguy.com", true }, { "thekonsulthub.tk", true }, - { "thekovnerfoundation.org", true }, { "thekuwayama.net", true }, { "thelafayettecompany.com", true }, { "thelaimlife.com", true }, { "thelakedistrict.tk", true }, + { "thelancergroup.com", true }, + { "thelandsite.co.uk", true }, + { "thelangfords.au", true }, + { "thelangfords.id.au", true }, { "thelanscape.com", true }, { "thelansingjournal.com", true }, { "thelapine.ca", true }, + { "thelasallenetwork.com", true }, { "thelastsurprise.com", true }, { "thelastvikings.tk", true }, + { "thelatinbrothers.ch", true }, + { "thelaunchbay.com", true }, { "thelaurelchiropractor.com", true }, + { "thelawyermag.com", true }, { "thelazyfox.xyz", true }, { "thelazysre.com", true }, { "thelbc.io", false }, + { "thelearninggardener.com", true }, { "theleaves.tk", true }, - { "thelegaldirector.co.uk", true }, { "thelegionshirley.co.uk", true }, { "thelematics.com", true }, { "thelemonlawcalifornia.com", true }, { "thelencystore.com", true }, { "thelevelman.com", true }, { "thelibertinephilosophy.ga", true }, + { "thelicensecompany.com", true }, { "thelifevison.com", true }, { "thelightbulbproject.tk", true }, { "thelightingstore.co.uk", true }, { "thelightpoints.eu", true }, { "thelimitededition.in", true }, - { "thelimitlessman.co.uk", true }, { "thelinuxspace.com", true }, { "thelittlepeartree.eu", true }, + { "thelivinggod.online", true }, { "thelocals.ru", true }, { "thelockerroom.ie", true }, { "thelocxresearch.tk", true }, { "thelodgeonlakedetroit.com", true }, + { "thelondonflorist.com", true }, { "thelonelyones.co.uk", true }, { "thelonious.nl", true }, { "theloop.ai", true }, @@ -119671,21 +137416,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thelordofthewing.ga", true }, { "thelordofthewing.gq", true }, { "thelordofthewing.ml", true }, + { "thelordsofthefallen.com", true }, + { "thelosangelesconservative.com", true }, { "thelostfreighter.com", true }, { "thelostyankee.com", true }, { "thelotter.club", true }, { "thelounge.chat", true }, + { "theloves.com", true }, { "thelwallrangers.tk", true }, - { "themacios.com", true }, + { "themacateam.com", true }, { "themadlabengineer.co.uk", true }, { "themagazine.my", true }, + { "themagazinetimes.com", true }, { "themagician.tk", true }, + { "themakers.ie", true }, { "themallards.info", true }, { "themallrats.tk", true }, { "themandogs.tk", true }, { "themaniaks.tk", true }, { "themarkup.org", true }, { "themarshallproject.org", true }, + { "themassageguy.capetown", true }, { "themaster.site", true }, { "themaster.tk", true }, { "themasterplan.com.au", true }, @@ -119695,15 +137446,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "themathscentre.com", true }, { "themattresswarehouse.co.za", true }, { "thematyper.tk", true }, - { "themealpantry.com.au", true }, + { "themayanah.com", true }, { "themeapps.ga", true }, - { "themeaudit.com", true }, { "themeccagroupllc.com", true }, { "themecraft.studio", false }, - { "themediationclinic.com", true }, + { "themediaframe.com", true }, { "themedictips.com", true }, { "themegatones.tk", true }, - { "themegteam.com", true }, { "thememory.tk", true }, { "thementornetwork.com", true }, { "themenzentrisch.de", true }, @@ -119716,27 +137465,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "themetropreneur.com", true }, { "themexicos.tk", true }, { "themexx.at", true }, + { "themiamimarathon.com", true }, { "themiddle.co", true }, + { "themify.me", true }, + { "themify.org", true }, + { "themightykeypad.com", true }, { "themigraineinstitute.com", true }, { "themilanlife.com", true }, + { "themilfmovies.com", true }, + { "themindcollection.com", true }, { "theminiacs.com", true }, { "themiracle.tk", true }, { "themirc.tk", true }, { "themizellbrothers.tk", true }, { "themlmsuccessnow.tk", true }, + { "themodel.ie", true }, { "themodernreviewer.ga", true }, + { "themologroup.com", true }, { "themomentratchada19.com", true }, { "themomstudio.tk", true }, { "themoneyconverter.com", true }, { "themonthly.com.au", true }, + { "themood.site", false }, { "themorningpodcast.tk", true }, + { "themortgagereports.com", true }, { "themostexpensiveworkofart.com", true }, { "themoviepreview.ga", true }, + { "themovingchoice.com", true }, + { "themprojects.com", true }, { "themurrayfamily.me.uk", true }, { "themusecollaborative.org", true }, - { "themusicalsafari.com", true }, + { "themusicgalaxy.com", true }, + { "themusicnetwork.com", true }, { "themusicofchrisbulman.tk", true }, { "themusicthatnobodylikes.tk", true }, + { "themusketeerslodge.com", true }, { "themusthaves.de", true }, { "then.icu", true }, { "thenamingcommission.gov", true }, @@ -119746,33 +137509,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thenational.academy", true }, { "thenaturalpath.co.nz", true }, { "theneatgadgets.com", true }, + { "thenerdic.com", true }, { "thenest.se", true }, { "thenetw.org", true }, { "thenew3rs.org", true }, + { "thenewamericanright.com", true }, { "thenewclassics.com", true }, { "thenewissue.tk", true }, - { "thenewoil.org", true }, - { "thenewsmill.com", true }, + { "thenewsmill.com", false }, + { "thenewsvortex.com", true }, { "thenewtoy.net", true }, { "thenextweb.com", true }, { "thenexwork.com", true }, { "thenichecast.com", true }, { "thenine.info", true }, { "theninenine.com", true }, - { "thenitintech.com", true }, + { "theninjasedge.com", true }, + { "thenitintech.com", false }, + { "thenobullshit.coach", true }, { "thenocman.com", true }, { "thenolank.com", true }, - { "thenova.me", true }, + { "thenorthschool.org.uk", false }, { "thenovaclinic.com", true }, + { "thenovicechefblog.com", true }, { "thenowheremen.com", true }, { "thenrdhrd.nl", true }, + { "thenudge.com", true }, + { "thenullpointer.net", true }, { "thenutritionalreset.ca", true }, - { "thenviews.com", true }, { "theo-andreou.org", true }, + { "theo.agency", true }, { "theo.me", true }, { "theo546.cloud", true }, { "theo546.fr", true }, { "theo546.ovh", true }, + { "theoakageexperiment.com", true }, + { "theoaksatlanier.com", true }, + { "theoasis.co.nz", true }, { "theobg.co", true }, { "theobora.fr", true }, { "theobromos.fr", false }, @@ -119780,12 +137553,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theocharis.org", true }, { "theocjournal.tk", true }, { "theocoffee.com", true }, + { "theocourt.com", true }, { "theocracy.tk", true }, { "theocratic.cf", true }, { "theocratic.tk", true }, { "theocrazzolara.tk", true }, { "theodorahome.co", true }, { "theodorahome.com.br", true }, + { "theodoreroosevelt.org", true }, + { "theodorojr.com.br", true }, + { "theofficeofangelascott.com", true }, { "theofleck.com", false }, { "theojellis.com", true }, { "theojones.name", true }, @@ -119793,11 +137570,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theoldbrewhouse.info", true }, { "theoldmill.tk", true }, { "theoldnews.net", true }, - { "theoldsewingfactory.com", true }, + { "theoldschoolgamevault.com", true }, { "theolodewijk.nl", true }, { "theologique.ch", false }, + { "theome.ga", true }, { "theomegagroup.co.uk", true }, - { "theomg.co", true }, { "theonegroup.co.uk", false }, { "theonethaimassage.de", true }, { "theonikage.tk", true }, @@ -119809,48 +137586,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theopera.tk", true }, { "theoperators.tk", true }, { "theophil.tk", true }, + { "theorchestranow.com", true }, + { "theorchestranow.org", true }, { "theoriecheck.de", true }, { "theoriginalassistant.com", true }, { "theoriginalcandid.com", true }, { "theoriginalmarkz.com", true }, { "theoriginalworkshop.com", true }, { "theorioncorrelation.com", true }, + { "theorlandocriminaldefense.com", true }, { "theory-test-online.co.uk", true }, { "theory.org", true }, { "theoryofmind.tk", true }, { "theoscure.eu", true }, - { "theosforum.org", true }, { "theosophic.ga", true }, { "theosophie-afrique.org", true }, - { "theotherconcept.be", false }, { "theotherside.tk", true }, { "theoverfly.co", true }, { "theoverground.tk", true }, - { "theowlclub.net", true }, - { "thepaffy.de", true }, + { "thepaffy.de", false }, { "thepaleodiettips.tk", true }, { "thepandacustom.com", true }, + { "thepaperstore.com", true }, { "theparachafamily.tk", true }, { "theparallelrevolution.com", true }, { "theparklane-sukhumvitbearing.com", true }, { "theparkwoodmanor.com", true }, { "theparoxetine.gq", true }, + { "theparthub.com", true }, { "theparticipants.tk", true }, { "thepartner.co.uk", true }, { "thepartydoctors.co.uk", true }, { "thepathsofdiscovery.com", true }, { "thepaul.tk", true }, { "thepaulagcompany.com", false }, - { "thepavilionbanbury.co.uk", true }, + { "thepaulygroup.de", true }, + { "thepavilionbanbury.co.uk", false }, { "thepaymentscompany.com", true }, { "thepcweb.tk", true }, { "thepeak.com", true }, { "thepenguinconspiracy.tk", true }, { "thepennyjar.com", true }, + { "thepennymatters.com", true }, { "thepeoplesdata.com", true }, { "thepeoplesdata.org", true }, + { "theperfectmediagroup.com", true }, + { "theperformanceblog.com", true }, { "thepharm.co.nz", true }, - { "thephmp.com", true }, + { "thephoenixdg.com", true }, { "thephp.cc", true }, { "thepiabo.ovh", false }, { "thepieslicer.com", true }, @@ -119861,31 +137644,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thepilotwoman.ml", true }, { "thepinecones.tk", true }, { "thepinfluencers.com", true }, - { "thepioneers.nl", true }, + { "thepioneersgame.com", true }, { "thepiratebay.cf", true }, { "thepiratebay.net", true }, { "thepiratesociety.org", true }, { "thepitsurfhire.co.uk", true }, { "thepixel.tk", true }, - { "theplasticsurgerycenterofnashville.com", true }, { "theplaydaysbus.co.uk", true }, { "theploughharborne.co.uk", true }, - { "theplusfc.com", true }, { "thepodcastreviewshow.com", true }, { "thepoetryclub.tk", true }, + { "thepoetryofperfume.com", true }, { "thepokerbank.com", true }, + { "thepokerpeople.com", true }, + { "thepollitochicken.com", true }, { "thepool.tk", true }, + { "thepopcornfactory.com", true }, { "thepowerboys.tk", true }, { "thepressleygirls.com", true }, + { "thepressurewashingdirectory.com", true }, { "thepriceisright.tk", true }, + { "theprideoflondon.com", true }, + { "theprimegroup.ca", true }, + { "theprimepr.in", true }, { "theprimetalks.com", false }, { "theprincegame.com", true }, { "theprinceshort.tk", true }, + { "theprinterjam.com", true }, + { "theprintrepublic.com", true }, { "thepriorybandbsyresham.co.uk", true }, { "theprivacysolution.com", true }, + { "theprodigaljournal.com", true }, { "theproject.cf", true }, { "theprojectx.tk", true }, { "thepromisemusic.com", true }, + { "thepsi.com", false }, { "theptclist.tk", true }, { "theptpractitioner.com.au", true }, { "thepulpit.tk", true }, @@ -119893,18 +137686,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thepureplan.com", true }, { "thepurplechickens.tk", true }, { "thepuzzles.eu.org", true }, - { "thepxhubclientportal.co.uk", true }, { "thepyre.tk", true }, + { "thepyrographytool.com", true }, + { "theqrl.org", true }, + { "theqtree.com", true }, { "thequillmagazine.org", true }, { "theradiojudge.com", true }, - { "theragran.co.id", true }, { "theralino.de", true }, - { "therandombits.com", false }, + { "theramo.re", true }, + { "theranch.com", true }, + { "therandombits.com", true }, { "therankkings.org", true }, + { "therap-up.fr", true }, + { "therapeiacosmetics.de", true }, + { "therapie-fricktal.ch", true }, { "therapie-psycho-emotionnelle.fr", true }, + { "therapiemi.ch", true }, { "therapiepraxis-westbezirk.de", true }, + { "therapists.com", true }, { "therapyclient.com", true }, { "therapyconnects.co.uk", true }, + { "therapyforblackmen.org", true }, { "therapyglobe.com", true }, { "therapynotes.com", true }, { "therapypartner.com", true }, @@ -119922,8 +137724,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "therealcomp.ga", true }, { "therealcost.gov", true }, { "therealcountrydancers.tk", true }, + { "therealestatesolutionsguy.com", true }, { "thereaper.net.au", true }, { "thereaper.tk", true }, + { "theredhouse.org", true }, { "theredsgazette.tk", true }, { "thereisnocloud.fr", true }, { "thereload.com", true }, @@ -119931,18 +137735,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "therenegade.tk", true }, { "thereptiles.tk", true }, { "theresa-mayer.eu", true }, + { "theresapolicewi.gov", true }, { "theresingles.tk", true }, { "therestaurantstore.com", true }, - { "theresumeapp.com", true }, + { "theretirementincomecalculator.com", true }, { "theretro.ru", true }, { "therevenge.me", true }, { "therevolutionist.tk", true }, { "therewill.be", false }, { "therhetorical.ml", false }, + { "therhodesresidences.com", true }, { "therichardsfamily.tk", true }, { "therisk.global", true }, - { "therivercrosswarwick.co.uk", true }, + { "theriverspecialist.com", true }, { "thermalbad-therme.de", true }, + { "thermalitowsca.gov", true }, { "thermia.co.nz", true }, { "thermia.com.au", true }, { "thermique.ch", false }, @@ -119950,26 +137757,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thermolamina.nl", true }, { "thermorhythm.com", true }, { "thermostat.gq", true }, + { "thermostatsolutions.com", true }, { "thermowood-bkh.ru", true }, { "therniakov.tk", true }, { "theroadrunners.tk", true }, { "theroams.co.uk", true }, - { "theroccos.us", true }, + { "therobertcoffeeshow.com", true }, + { "theroccos.us", false }, { "therockawaysny.com", false }, { "theroguestormtrooper.com", true }, { "therokasshow.tk", true }, - { "theroks.com", false }, + { "theroks.com", true }, { "theromexchange.com", true }, { "theroot.com", true }, + { "therootdental.com", true }, { "therootshive.com", true }, - { "therowdyrose.com", true }, + { "theros.org.uk", true }, + { "therowlinglibrary.com", true }, { "theroyal.tk", true }, - { "therra.eu", true }, { "therugswarehouse.co.uk", true }, { "theruleslawyer.net", true }, { "therumfordcitizen.com", true }, { "therunawayspremiere.tk", true }, { "theruncibleraven.com", true }, + { "theruraltrust.com", true }, { "therusnews.tk", true }, { "therustyspoon.net", true }, { "therworth.com", true }, @@ -119977,21 +137788,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "therworth.net", true }, { "therworth.org", true }, { "thesacreds.com", true }, + { "thesafetymag.com", true }, { "thesage.cf", true }, { "thesage.ga", true }, { "thesagresapartments.com", true }, { "thesalonthing.com", false }, - { "thesanta.biz", true }, + { "thesaltsanctuaryfl.com", true }, { "thesarogroup.com", true }, { "thesatriantoshow.tk", true }, { "thesaturdaypaper.com.au", true }, - { "thesaurus.net", true }, { "thescienceofdeduction.tk", true }, { "thescientists.nl", true }, + { "thescriptinc.com", true }, { "thescriptzone.tk", true }, { "theseal.tk", true }, { "thesearch.com.tw", true }, { "thesecondsposts.com", false }, + { "thesecularparent.com", true }, { "thesecurityvault.com", false }, { "theseed.io", true }, { "theseedbox.xyz", true }, @@ -120002,17 +137815,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theseofarm.com", true }, { "theseoframework.com", true }, { "theseosystem.com", true }, - { "thesepticgroup.com", true }, + { "theseotool.site", true }, + { "theseparationguide.com.au", true }, { "theserpent.tk", true }, { "theserver.ml", true }, { "theserver201.tk", true }, { "theserviceyouneed.com", true }, { "thesession.org", true }, + { "thesettravelgroup.com", true }, { "thesetwohands864.com", true }, { "theshaker.com.au", true }, { "thesharedbrain.ch", false }, { "thesharedbrain.com", false }, - { "theshine.pl", true }, + { "theshesuite.com", true }, { "theshopally.com", true }, { "theshots.cz", true }, { "theshroomery.org", true }, @@ -120024,6 +137839,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thesilentplanet.tk", true }, { "thesilverdaisy.com", true }, { "thesimons.family", true }, + { "thesimplehelp.com", true }, { "thesimplewebcompany.com", true }, { "thesimplifiers.com", false }, { "thesimsbrasil.tk", true }, @@ -120036,19 +137852,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thesissurvey.gq", true }, { "thesistraffic.com", true }, { "thesiterank.com", true }, + { "thesixersense.com", true }, + { "theskepticalreviewarchive.com", true }, { "theskingym.co.uk", true }, + { "theskiweek.com", true }, { "thesled.net", true }, - { "thesleepdoctor.com", true }, + { "thesocialitefamily.com", true }, { "thesocialmediacentral.com", true }, + { "thesoftwareshub.com", true }, { "thesomepeople.org", true }, { "thesoundproofwindows.co.uk", true }, { "thesoundstageatstrangeland.com", true }, + { "thesouthern.com", true }, { "thespacegame.tk", true }, + { "thespanishcollection.com", true }, { "thespiritfm.tk", true }, - { "thesslstore.com", true }, + { "thespoiler.co.il", true }, + { "thesponsorshipguy.com", true }, + { "thesportsroom.tv", true }, { "thesslstore.in", true }, - { "thestable.com", true }, - { "thestachelfisch.me", true }, { "thestandards.tk", true }, { "thestatementjewelry.com", true }, { "thestationatwillowgrove.com", true }, @@ -120067,6 +137889,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thestreamable.com", true }, { "thestreet.cz", true }, { "thestudioslucan.com", true }, + { "thestudylink.com", true }, { "thestyle.city", true }, { "thestylebouquet.com", true }, { "thesubstitute.nl", true }, @@ -120074,23 +137897,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thesunshinecoasttourcompany.com.au", true }, { "thesupersunday.tk", true }, { "thesuppercircle.com", true }, + { "thesupremacyg.com", true }, { "thesurgeons.sg", true }, { "theswanstation.tk", true }, { "theswanwindsor.co.uk", true }, { "theswimdoctors.com", false }, - { "theswissbay.ch", true }, - { "theswitch.club", true }, + { "theswissbay.ch", false }, { "thetablehuff.com", true }, { "thetakeout.com", true }, + { "thetampariverwalk.com", true }, + { "thetandd.com", true }, { "thetapirsmouth.com", true }, { "thetassos.com", true }, { "thetattooedpreacher.com", true }, - { "thetaylorreachgroup.com", true }, { "theteaaffair.com", true }, { "theteaguemovie.tk", true }, { "thetebodifference.com", true }, { "thetechdude.ga", true }, - { "thetechsite.net", true }, + { "thetechnicaldost.com", true }, { "thetfordvt.gov", true }, { "thetherapist.tk", true }, { "thethinktankpodcast.co", true }, @@ -120100,7 +137924,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thetinylife.com", true }, { "thetinymom.com", true }, { "thetipo.rocks", true }, - { "thetipo01.cf", true }, { "thetipo01.tk", true }, { "thetogbox.cf", true }, { "thetomharling.com", true }, @@ -120108,23 +137931,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thetopmovie.gq", true }, { "thetopsecretepisode.tk", true }, { "thetorlock.com", true }, + { "thetorturedman.com", true }, { "thetotalemaildelivery.com", true }, { "thetoto.tk", true }, { "thetownehub.com", true }, { "thetradinghall.com", false }, { "thetrafficgeek.com", true }, + { "thetransformingchurch.org", true }, { "thetravel.com", true }, { "thetravelczar.com", true }, { "thetravelhack.com", false }, { "thetravelinstitute.com", true }, { "thetravelstylist.nl", true }, + { "thetrendingarticle.com", true }, { "thetrendspotter.net", true }, { "thetropics.tk", true }, - { "thetrove.is", true }, - { "thetrulycharming.com", true }, + { "thetrulycharming.com", false }, + { "thetrustai.com", true }, + { "thetruthabouthemp.com", true }, + { "thetubecopenhagen.com", true }, { "thetuxkeeper.de", false }, { "thetvtraveler.com", true }, { "thetwistedrabbit.com", true }, + { "theuhlesteam.com", true }, + { "theultimateshave.net", true }, { "theunbox.com", true }, { "theunconventionalconventionists.tk", true }, { "theundefeated.com", true }, @@ -120132,15 +137962,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theunitehistoryproject.org", true }, { "theuniversallover.tk", true }, { "theuniversitiesofasia.ga", true }, - { "theunknownfilmcompany.com", true }, { "theunleashedpet.com", true }, { "theunwrittenletters.tk", true }, { "theupslady.cf", true }, { "theupslady.ga", true }, + { "theurbandecor.com", true }, { "theuucc.org", false }, { "thevacuumpouch.co.uk", true }, { "thevacweb.com", true }, - { "thevalentineconstitution.com", true }, { "thevalleybucketeers.tk", true }, { "thevalueofarchitecture.com", true }, { "thevanishedvoyager.ml", true }, @@ -120150,29 +137979,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thevelvetlove.tk", true }, { "thevenueofhollywood.com", true }, { "thevern.co.za", true }, - { "theverybusyoffice.co.uk", true }, { "thevetstop.co.uk", true }, + { "thevillageok.gov", true }, { "thevillasatparkaire.com", true }, + { "thevine.one", true }, { "thevintagenews.com", false }, { "theviolenceofdevelopment.com", true }, { "thevirajshelke.com", true }, { "thevirgin.tk", true }, { "thevirtualbookkeepers.com", false }, { "thevirtualdetective.games", true }, + { "thevirtualhealingroom.ca", true }, + { "thevirtualhealingroom.com", true }, { "thevirtuousdog.com", true }, { "thevisasofoz.com", true }, - { "thevisioncenterpa.com", true }, { "thevoga.com", true }, - { "thevoice4you.tk", true }, { "thevoid.one", true }, { "thevolte.com", true }, { "thevoya.ga", false }, { "thewagesroom.co.uk", true }, { "thewalkerz.tk", true }, + { "thewalkingdeadfrance.org", true }, { "thewallet.today", true }, - { "thewanderersclub.co.za", true }, { "thewarehousefellowship.org", true }, { "thewatchdog.com.br", true }, + { "thewaterfront.org.au", true }, + { "thewaterfrontpoole.com", true }, { "thewave.tk", true }, { "thewaxhouse.academy", true }, { "thewayofislam.ml", true }, @@ -120181,10 +138013,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "theweakandthestrong.tk", true }, { "thewebbogan.com.au", true }, { "thewebcully.com", true }, - { "thewebdexter.com", true }, - { "thewebflash.com", true }, { "thewebguru.net", true }, - { "thewebhut.com.au", true }, { "thewebmasters.tk", true }, { "thewebsitemarketingagency.com", true }, { "theweed.tk", true }, @@ -120205,15 +138034,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thewisdomtrust.org.uk", true }, { "thewish.ml", true }, { "thewish.tk", true }, + { "thewolseley.com", true }, { "thewombatsict.com.au", true }, { "thewomen.tk", true }, + { "thewomensbusinesscenter.com", true }, { "thewoodkid.com.au", true }, { "thewoods.earth", true }, { "thewoolroom.com.au", true }, { "thewoosh.me", false }, { "theworkingeye.nl", true }, + { "theworksboulder.com", true }, + { "theworksheets.com", true }, { "theworkshop.tk", true }, + { "theworld.org", true }, { "theworld.tk", true }, + { "theworldaccordingtocathers.com", true }, { "theworldexchange.com", true }, { "theworldexchange.net", true }, { "theworldexchange.org", true }, @@ -120225,25 +138060,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thewrenchmonkey.ca", true }, { "thewrightflyer.com", true }, { "thewritegrl.com", true }, + { "thewriteress.com", true }, { "thexalla.tk", true }, { "thexme.de", true }, { "thexpert.ml", true }, { "theyacht.ga", true }, + { "theyachtweek.com", true }, { "theyakshack.co.uk", true }, { "theyarnhookup.com", false }, { "theycallmesnail.tk", true }, { "theyear199x.org", true }, { "theyearinpictures.co.uk", true }, { "theyellow.fish", true }, - { "theyellowfish.mu", true }, { "theyosh.nl", true }, - { "theyourbittorrent.com", true }, { "theysocial.tk", true }, - { "theyucatantimes.com", true }, - { "thezero.org", true }, { "thezillersathenshotel.com", true }, + { "thezone.bg", true }, { "thfaid.org", true }, { "thgstardragon.com", true }, + { "thhomes.vn", true }, { "thhost.tk", true }, { "thiagohersan.com", true }, { "thiagolosneves.com.br", true }, @@ -120253,7 +138088,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thibaultbaheux.com", false }, { "thibaultwalle.com", true }, { "thibautcharles.net", true }, + { "thibierge-associes.notaires.fr", true }, { "thichson.vn", true }, + { "thickassporn.com", true }, { "thieme-it.de", true }, { "thienduongthoitrang.vn", true }, { "thiepcuoidep.com", true }, @@ -120261,14 +138098,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thierryhayoz.ch", true }, { "thierrymazue.com", true }, { "thierrymazue.fr", false }, - { "thiesketelsen.de", true }, + { "thiesketelsen.de", false }, { "thietbithoathiem.net", true }, { "thietkegianhangtttm.com", true }, { "thietkenamcuong.com", true }, { "thijmen.xyz", true }, - { "thijmendevalk.nl", true }, + { "thijmendevalk.nl", false }, { "thijmenmathijs.nl", true }, - { "thijmenverveeltzich.nl", true }, + { "thijmenverveeltzich.nl", false }, { "thijs.amsterdam", true }, { "thijs.fr", true }, { "thijsenarjan.nl", true }, @@ -120294,9 +138131,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thingsivesaid.com", true }, { "thingsof.org", true }, { "thingswithleaves.co.uk", true }, - { "thingswithstuff.llc", false }, { "think-ai.eu", true }, - { "think-asia.org", true }, { "think-positive-watches.de", true }, { "thinkaheadcomix.com", true }, { "thinkbigdobig.tk", true }, @@ -120304,6 +138139,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thinkbrands.co.uk", true }, { "thinkcash.nl", true }, { "thinkcoconut.com.au", true }, + { "thinkd2s.com", true }, { "thinkdata.com.br", true }, { "thinkdigital.co.id", true }, { "thinkdigital.tk", true }, @@ -120315,38 +138151,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thinkforyourself.tk", true }, { "thinkheaddesign.com", true }, { "thinkhealing.co.uk", true }, + { "thinkific.com", true }, { "thinkindifferent.net", true }, + { "thinkingfaith.org", true }, { "thinkingliberty.com", true }, { "thinkingnull.com", false }, { "thinkingplanet.net", true }, + { "thinkinitalian.com", true }, + { "thinkittech.com", true }, { "thinkmaking.org", true }, { "thinkmarketing.ca", true }, { "thinkprocedural.com", true }, { "thinksmartersolutions.com", true }, { "thinktux.net", true }, - { "thinkunparalleled.com", true }, { "thinkwisesoftware.com", false }, { "thinkwits.com", true }, + { "thinwildmercury.com", true }, { "thinxtream.com", true }, - { "thirdbearsolutions.com", true }, + { "thirdbearsolutions.com", false }, { "thirdgenphoto.co.uk", true }, { "thirdman.auction", false }, { "thirdwave.tk", true }, { "thirdwaverevenue.com", true }, { "thirdworld.moe", true }, - { "thirstyjourneys.com", true }, { "thirteen.pm", true }, { "thirtysixseventy.ml", true }, - { "thirtyspot.com", true }, { "thiruvarur.org", true }, { "thiry-automobiles.net", true }, { "thisbowin.com", true }, { "thiscloudiscrap.com", false }, { "thisdayinhockey.tk", true }, { "thisdot.site", true }, - { "thise.dk", true }, { "thisfreelife.gov", true }, + { "thishousedoesnotexist.org", true }, + { "thisis.id", true }, { "thisisacompletetest.ga", true }, + { "thisisamericansoccer.com", true }, { "thisisarecording.com", true }, { "thisisart.ie", true }, { "thisisbenwoo.com", true }, @@ -120355,11 +138195,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thisisrapt.com.au", false }, { "thisisreno.com", true }, { "thisistechtoday.com", true }, + { "thisistina.nl", true }, { "thisistwice.tk", true }, { "thisiswhywemom.com", true }, { "thismatter.com", true }, { "thismumdoesntknowbest.com", true }, { "thisserver.dontexist.net", true }, + { "thissimplifiedhome.com", true }, { "thistleandleaves.com", true }, { "thistom.de", true }, { "thisuniverse.tk", true }, @@ -120367,6 +138209,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thn.la", true }, { "thoenesfamilierecht.nl", true }, { "thok.de", true }, + { "tholab.io", true }, { "tholcomb.com", true }, { "thole.org", true }, { "thom4s.info", true }, @@ -120374,6 +138217,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thomaner.de", true }, { "thomas-bronniart.com", true }, { "thomas-grobelny.de", true }, + { "thomas-leplus.com", true }, { "thomas-sammut.com", true }, { "thomas-schmittner.de", true }, { "thomas-steel.com", true }, @@ -120384,10 +138228,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thomasbeckers.be", true }, { "thomasboosman.com", true }, { "thomasbreads.com", false }, - { "thomascauquil.fr", true }, + { "thomascountyne.gov", true }, { "thomasdbrown.com", true }, { "thomasduerlund.dk", true }, { "thomasebenrett.de", true }, + { "thomasecookedds.com", true }, { "thomaseikel.de", true }, { "thomaseyck.com", true }, { "thomasfoster.co", true }, @@ -120395,17 +138240,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thomasgriffin.io", true }, { "thomashunter.name", false }, { "thomaskaviani.be", true }, + { "thomasleplus.com", true }, { "thomasmeester.nl", false }, { "thomasmerritt.de", true }, { "thomaspic.com", true }, { "thomaspluschris.com", true }, + { "thomasrichter.de", true }, { "thomass.tk", true }, { "thomasstevensmusic.com", false }, { "thomastestor.tk", true }, { "thomastimepieces.com.au", true }, { "thomastonmaine.gov", true }, + { "thomasvanlaere.com", true }, { "thomasverhelst.be", true }, { "thomasvochten.com", true }, + { "thomaswicklaw.com", true }, { "thomaswoo.com", true }, { "thomien.de", true }, { "thompsonfamily.cloud", true }, @@ -120421,40 +138270,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thor.re", true }, { "thorbes.ga", true }, { "thorbiswebsitedesign.com", true }, + { "thorborg.dk", true }, { "thoreau.tk", true }, { "thoreauskalendar.org", true }, { "thorntonnh.gov", true }, + { "thorntonshvacservice.com", true }, { "thoroquel.org", true }, - { "thoroughbreddiesel.com", true }, { "thors-hearth.tk", true }, { "thorsten-schaefer.com", true }, { "thorstenschaefer.name", true }, + { "thost3.de", true }, { "thotcomputed.com", true }, - { "thoth.art", true }, { "thotpublicidad.com", true }, { "thots.org", true }, { "thoughtexchange.ca", true }, { "thoughtexchange.com", true }, { "thoughtexchange.net", true }, + { "thoughtleadersnetwork.nl", true }, { "thoughtlessleaders.online", true }, { "thoughtspot.com", true }, { "thoughtsynth.com", true }, { "thoughtsynth.net", true }, { "thoughtsynth.org", true }, { "thoughtworthy.info", true }, - { "thouqi.com", true }, + { "thousandoaksca.gov", true }, { "thousandoakselectrical.com", true }, { "thousandoaksexteriorlighting.com", true }, { "thousandoakslandscapelighting.com", true }, { "thousandoakslighting.com", true }, { "thousandoaksoutdoorlighting.com", true }, + { "thowzzy.be", true }, { "thoxyn.com", true }, { "thpatch.net", true }, { "thpay.com", true }, { "thprd.gov", true }, { "thr-kurd.tk", true }, - { "thrashed.tk", true }, + { "threadabead.com", true }, { "threadingcentral.com", true }, + { "threads.net", true }, + { "threadscircle.com", true }, + { "threadsdownloader.com", true }, + { "threadspecification.com", true }, { "threadtrails.com", true }, { "threadythready.com", true }, { "threatcentral.io", true }, @@ -120462,15 +138318,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "threatcon.blog", true }, { "threatcon.ch", true }, { "threatcon.de", true }, + { "threatcon.email", true }, { "threatcon.eu", true }, { "threatcon.io", true }, { "threatcon.link", true }, + { "threatcon.live", true }, { "threatcon.media", true }, { "threatcon.net", true }, { "threatcon.network", true }, { "threatcon.online", true }, + { "threatcon.org", true }, { "threatcon.shop", true }, - { "threatdetection.info", true }, + { "threatcon.tv", true }, { "threatint.at", true }, { "threatint.be", true }, { "threatint.blog", true }, @@ -120497,9 +138356,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "threatint.org", true }, { "threatint.pl", true }, { "threatint.pt", true }, - { "threatint.shop", true }, + { "threatint.tv", true }, { "threatint.uk", true }, { "threatjammer.com", true }, + { "threatlabs.eu", true }, + { "threatlabs.nl", true }, { "threatmonitor.io", true }, { "threatnix.io", true }, { "threatutic.gq", true }, @@ -120507,14 +138368,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "three-wheels.cf", true }, { "threedpro.me", true }, { "threefantasy.com", true }, + { "threefisheswebdesign.com", true }, { "threefours.net", false }, { "threelions.ch", true }, { "threeluck.sg", true }, { "threema.ch", true }, + { "threema.id", true }, { "threenorth.com", true }, { "threeper.org", true }, { "threepoint.tk", true }, - { "threerivers.edu", true }, { "threeriversopenhouse.com", true }, { "threesixteen.com.au", true }, { "threethirty.gq", true }, @@ -120525,50 +138387,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thriftywp.com", true }, { "thrillernyc.com", true }, { "thrillkill.tk", true }, + { "thriva.co", true }, + { "thriveansanm.org", true }, + { "thriveondev.com", true }, { "thrivetours.ca", false }, + { "thrivetracker.com", true }, + { "thrivingsmart.com", true }, + { "throckmortoncountytx.gov", true }, { "throneofmolok.tk", true }, { "throopny.gov", true }, { "throttlerz.in", true }, { "throughout.ga", true }, { "throughtheglass.photo", true }, - { "throwable.website", true }, { "throwaway.link", true }, { "throwmails.com", true }, { "throwpass.com", true }, { "thrustrules.tk", true }, - { "thrw.ml", true }, + { "ths.li", true }, { "thsc.us", true }, + { "thsclothing.com", true }, { "thsconstructors.com", true }, { "thscpac.org", true }, { "thsecurity.cz", true }, - { "thterrain.com", true }, + { "thtcmaps.com", true }, + { "thtcmaps.sa", true }, { "thuenhapho.com", true }, { "thues.eu", true }, { "thugcityrecords.tk", true }, { "thuisverplegingvandermeiren.be", true }, + { "thuiswinkel.org", true }, { "thullbery.com", true }, + { "thumbnail-download.com", true }, { "thumbsnap.com", true }, { "thumbsupcandy.com", true }, { "thumbtack.com", true }, + { "thumbzilla.com", true }, { "thummer.net", true }, { "thunderbase.tk", true }, { "thunderbolt.tk", true }, - { "thunderboltlaptop.com", true }, { "thundercloud.onthewifi.com", true }, { "thunderfield-boat.co.uk", true }, - { "thunderfox.nl", true }, + { "thunderhead.com", false }, { "thunderheadjtc.tk", true }, { "thunderkeys.net", true }, + { "thunderousintentions.com", true }, + { "thunderstruckfestival.nl", true }, { "thundr.eu", true }, { "thunktank.org", true }, { "thunraz.com", true }, + { "thuongluu.vn", true }, { "thurmanny.gov", true }, { "thurn.net", true }, { "thurstonauditor.gov", true }, + { "thurstoncountyne.gov", true }, { "thurstoncountysheriffne.gov", true }, { "thurstonwavotes.gov", true }, + { "thusa.co.za", true }, { "thusoy.com", true }, - { "thuthuatios.com", true }, { "thuthuatmac.com", true }, { "thutm.com", true }, { "thutucxuatnhapkhau.net", true }, @@ -120576,10 +138451,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "thuviensoft.net", true }, { "thuyetphapmoi.com", true }, { "thvideo.tv", true }, - { "thw-bernburg.de", true }, - { "thw-jugend-muenchen-west.de", true }, + { "thw-messenger.de", true }, { "thwebdesigns.com", true }, { "thwiki.cc", true }, + { "thwitt.de", true }, { "thxandbye.de", true }, { "thycotic.ru", true }, { "thynx.io", true }, @@ -120597,6 +138472,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tiagoneves.tk", true }, { "tiagonunes.pt", true }, { "tiagosimao.com", true }, + { "tiai.cf", true }, + { "tiai.gq", true }, + { "tiai.ml", true }, + { "tiaki.org", false }, { "tiamabi.tk", true }, { "tiamarcia.com.br", true }, { "tian123.com", true }, @@ -120612,6 +138491,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tianeptine.com", true }, { "tianjiaxi.com", true }, { "tianjinair.com", true }, + { "tianle.sh", true }, { "tianshili.me", true }, { "tiantangbt.com", true }, { "tianwen.tk", true }, @@ -120620,18 +138500,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tianxicp.com", true }, { "tianyis.net", true }, { "tianyou-ecjtu.com", true }, + { "tiarap.org", true }, { "tiaria.id", true }, { "tiaskipin.tk", true }, { "tib1.com", true }, { "tibber.com", true }, { "tibberdev.com", true }, { "tibbitshall.ca", true }, + { "tibc.ch", true }, { "tiberian.tk", true }, { "tibiarock.tk", true }, { "tibicinagarricola.com", true }, + { "tibinonest.me", true }, { "tibipg.com", true }, + { "tible.com", true }, { "tibovanheule.site", true }, { "tibovanheule.space", false }, + { "tibox.cl", true }, { "tiburgundysi.ga", true }, { "ticalcgames.tk", true }, { "ticfleet.com", true }, @@ -120640,103 +138525,102 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ticinoscout.ch", true }, { "tickertable.com", false }, { "tickertoolkit.com", true }, + { "ticket-time.es", true }, { "ticketassist.nl", true }, { "ticketbahia.com", true }, { "ticketcity.com", true }, + { "ticketfan.es", true }, { "ticketix.com", true }, { "ticketmaze.com", false }, { "ticketpro.ca", true }, + { "ticketrestaurant.us", true }, { "ticketrunway.com", true }, { "tickets2004.tk", true }, { "ticketslover.com", true }, + { "ticketsolve.com", true }, { "ticketsource.co.uk", true }, { "ticketsource.eu", true }, { "ticketsource.io", true }, { "ticketsource.us", true }, { "ticketsourcebeta.co.uk", true }, - { "ticketswap.at", true }, - { "ticketswap.be", true }, - { "ticketswap.ch", true }, { "ticketswap.co", true }, { "ticketswap.co.nz", true }, - { "ticketswap.com", true }, - { "ticketswap.com.au", true }, - { "ticketswap.com.br", true }, - { "ticketswap.cz", true }, - { "ticketswap.de", true }, { "ticketswap.dk", true }, - { "ticketswap.es", true }, { "ticketswap.fi", true }, - { "ticketswap.fr", true }, - { "ticketswap.hu", true }, - { "ticketswap.ie", true }, { "ticketswap.in", true }, - { "ticketswap.it", true }, - { "ticketswap.nl", true }, - { "ticketswap.no", true }, - { "ticketswap.pl", true }, { "ticketswap.pt", true }, { "ticketswap.ru", true }, - { "ticketswap.se", true }, - { "ticketswap.uk", true }, { "tickettailor.com", true }, { "ticketunity.com", true }, { "ticketure.com", true }, - { "ticketyn.com", true }, { "tickit.ca", false }, + { "ticktbox.com", true }, { "ticnom.com", true }, { "ticotech.com.br", true }, { "tictac.tk", true }, + { "tictail.com", true }, { "tid.jp", true }, { "tidal.ninja", true }, - { "tide.com", false }, + { "tidal.zone", true }, + { "tide.com", true }, { "tidecommunity.tk", true }, { "tidehunter.ml", true }, + { "tideritter.de", true }, { "tidimension.tk", true }, + { "tidit.nl", true }, { "tidlook.co.il", true }, { "tidy.chat", true }, { "tidych.at", true }, { "tidycustoms.net", true }, + { "tidydiary.com", true }, + { "tie.pub", true }, { "tiederavintola.fi", true }, + { "tieffeservice.it", true }, { "tiekoetter.com", true }, { "tielectric.ch", true }, { "tielsebakkers.tk", true }, + { "tiempo3.com", true }, { "tiempoalegria.com", true }, { "tiempolibre.nl", true }, { "tiendabna.com.ar", true }, { "tiendacanper.com", true }, + { "tiendacomprasegura.com", true }, { "tiendadeperros.com", true }, { "tiendadolca.com", true }, { "tiendaengeneral.com", true }, { "tiendafetichista.com", true }, - { "tiendagamer.co", true }, { "tiendamacoco.com.ar", true }, - { "tiendamaspatchwork.com", true }, + { "tiendanube.com", true }, + { "tiendaregalos.eu", true }, { "tiendatecnologica.net", true }, { "tiener-herentals.be", true }, { "tienerdienst-johanneskapel.tk", true }, + { "tiengtrungquoc.net", true }, { "tienic.com", true }, { "tiens-ib.cz", true }, { "tier5industries.com", true }, { "tierarzt-karlsruhe-durlach.de", true }, { "tierarztpraxis-illerwinkel.de", true }, - { "tierarztpraxis-weinert.de", true }, + { "tieredaccess.com", true }, + { "tierfaszienation.de", true }, { "tiergear.com.au", true }, - { "tiernanx.com", true }, { "tieronegraphics.com", true }, { "tierparadies-muhrielle.org", true }, { "tierra-indomables.tk", true }, { "tierracenter.com", true }, { "tierradeayala.com", true }, { "tierrahost.com", true }, + { "tierramarca.com", true }, { "tierraprohibida.net", true }, { "tierschutz-niederrhein.de", true }, { "tiestofan.tk", true }, + { "tiete.be", true }, { "tietew.jp", true }, { "tietew.net", true }, { "tietotori.fi", true }, + { "tieulinh.com", true }, { "tiew.pl", false }, - { "tifa-233.xyz", true }, + { "tifa-233.com", true }, { "tifan.net", true }, { "tifaware.com", true }, { "tifenn.eu", true }, @@ -120746,17 +138630,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tiffany-remixed.tk", true }, { "tiffany.moe", true }, { "tiffanyblooms.ru", true }, + { "tiffanychristie.ca", true }, { "tiffanywatson.xyz", true }, - { "tiffinohio.net", true }, { "tiffnix.com", true }, { "tiflonet.tk", true }, { "tifokaos.tk", true }, + { "tiftonga.gov", true }, + { "tig.mr", true }, { "tiga-design.com", true }, - { "tiger-seo.com", true }, { "tigercam.cl", true }, - { "tigerdile.com", true }, + { "tigerconnect.com", true }, { "tigerfm.tk", true }, { "tigerforce.tk", true }, + { "tigergraph.com", true }, { "tigergroup.tk", true }, { "tigernero.duckdns.org", true }, { "tigernode.com", true }, @@ -120765,9 +138651,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tigerupload.tk", true }, { "tigerzplace.tk", true }, { "tiggeriffic.com", true }, + { "tiggertracks.com", true }, { "tiggi.pw", true }, + { "tightassanal.com", true }, + { "tightasspics.com", true }, { "tightassporntube.com", true }, { "tightenthisshitup.com", true }, + { "tightpussysex.com", true }, { "tigit.co.nz", true }, { "tiglitub.com", true }, { "tigreblanco.tk", true }, @@ -120777,21 +138667,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tii.party", true }, { "tiihosen.fi", true }, { "tiim.technology", true }, - { "tiinside.com.br", true }, + { "tiindia.com", true }, { "tijden.nu", true }, { "tijdvoorgeschiedenis.nl", true }, + { "tijerascreek.com", false }, { "tijerasnm.gov", true }, { "tijo.ch", true }, { "tijoe.net", true }, { "tik.edu.ee", true }, + { "tik.porn", true }, { "tiki-god.co.uk", true }, + { "tiki.id", true }, { "tikitak-o-rama.tk", true }, - { "tikkertickets.ee", true }, + { "tikkio.com", true }, + { "tikklik.nl", true }, { "tikona.ga", true }, { "tiktak.su", true }, { "tiktok-download.io", true }, + { "tiktok.com", true }, + { "tiktokdownloader.com", true }, { "tiktokgirls.live", true }, - { "tiktokoff.com", true }, + { "tiktokshop.com", true }, + { "tiktokv.com", true }, { "tikun.tk", true }, { "tikuter.me", true }, { "tilcra.de", true }, @@ -120799,46 +138696,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tilde.institute", true }, { "tilde.link", true }, { "tildes.net", true }, - { "tilecenters.com", true }, + { "tilecleaningservicepros.com", true }, { "tileco.ga", true }, { "tileflooringideas.gq", true }, { "tileflooringideas.ml", true }, { "tilellit.pro", true }, - { "tiler-costablanca.com", true }, { "tilers-world.com", true }, - { "tiles-for-facing.tk", true }, { "tilesbay.com", true }, { "tilietu.com", true }, { "tilikum.io", true }, { "tilipalvelutuominen.fi", true }, { "tilisi.ga", true }, { "tilitoimistokota.fi", true }, + { "tilitoimistopaiva.fi", true }, { "tilitop.tk", true }, { "till-grossmann.de", true }, + { "till.fyi", true }, { "till.im", true }, { "tillamookcounty.gov", true }, { "tillberg.us", true }, { "tillehus.frl", true }, { "tilleysbouncycastles.co.uk", true }, + { "tillinger.sk", true }, { "tillseasyscore.com", true }, { "tillwalldrug.com", true }, { "tillydesign.com", true }, + { "tiloschroeder.space", true }, { "tilosp.de", true }, { "tiltedscalescollective.org", true }, { "tiltedwindmillcrafts.com", true }, { "tiltedwindmillpress.com", true }, + { "tilvids.com", true }, + { "tilyexpress.ug", true }, { "tilysthings.com", true }, { "tim-demisch.com", true }, { "tim-demisch.de", true }, { "tim-demisch.email", true }, { "tim-demisch.eu", true }, - { "tim-demisch.online", true }, { "tim-lawrence.cf", true }, { "tim-niclas-demisch.de", true }, { "tim-niclas-demisch.eu", true }, - { "tim427.net", true }, + { "tim.org.tr", true }, + { "tim427.net", false }, { "timacdonald.me", true }, - { "timatooth.com", true }, { "timawesomeness.com", true }, { "timbarlotta.com", true }, { "timbercreekcanyontx.gov", true }, @@ -120848,11 +138748,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timbers.space", true }, { "timbishopartist.com", true }, { "timbrust.de", true }, + { "timbuktutimber.com", true }, { "timcamara.com", true }, { "timchanhxe.com", false }, { "timco.cloud", true }, { "timdebruijn.nl", true }, - { "timdemisch.com", true }, { "timdemisch.de", true }, { "timdemisch.email", true }, { "timdemisch.eu", true }, @@ -120866,10 +138766,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "time.ly", true }, { "time.sh", true }, { "time2060.ru", true }, + { "time22.com", true }, { "time2choose.com", true }, { "time4writing.com", true }, { "timeai.io", true }, { "timeauction.hk", true }, + { "timeblog.org", true }, { "timebomb.tk", true }, { "timebookings.cf", true }, { "timebox.tk", true }, @@ -120886,16 +138788,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timelapsetv.tk", true }, { "timeless-photostudio.com", true }, { "timeless-spirit.com", true }, + { "timelesstopiary.com", true }, { "timelesstreasures.tk", true }, + { "timelettings.com", true }, { "timelimit.io", true }, { "timelost.tk", true }, { "timely.fun", true }, - { "timelyapp.com", true }, + { "timely.md", true }, + { "timelybookkeeper.com", true }, + { "timelycare.com", true }, + { "timelyprovider.com", true }, + { "timemuzz.com", true }, + { "timeneye.com", true }, + { "timentask.com", true }, + { "timeout.co.il", true }, { "timeoutdoors.com", true }, { "timepassengers.tk", true }, { "timeprison.tk", true }, { "timepro.sk", true }, - { "timer.fit", false }, { "timerace.ml", true }, { "timeroll.ml", true }, { "timersuite.com", true }, @@ -120906,11 +138816,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timeserver1.de", true }, { "timeserver2.de", true }, { "timeserver3.de", true }, + { "timesheet-plugin.herokuapp.com", true }, { "timesheetcomics.com", true }, { "timeslive.co.ke", true }, { "timesloth.io", true }, + { "timesmarket.org", true }, + { "timesofisrael.com", true }, + { "timesofmalta.com", true }, { "timespace.eu.org", true }, { "timespreader.com", false }, + { "timeswath.uk", true }, { "timeswiki.org", true }, { "timetab.org", true }, { "timetastic.co.uk", true }, @@ -120921,6 +138836,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timetrade.com", true }, { "timetravelforum.tk", true }, { "timetreeapp.com", true }, + { "timeular.com", true }, + { "timewall.de", true }, { "timewasters.nl", true }, { "timewasters.tk", true }, { "timeweb.io", true }, @@ -120933,31 +138850,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timilion.tk", true }, { "timing.com.br", true }, { "timjk.de", false }, + { "timm404.de", true }, + { "timmcclure.ca", true }, { "timmerbedrijfpauel.nl", true }, { "timmermansadministratie.nl", true }, { "timmy.ws", true }, { "timmyrs.de", true }, { "timnash.co.uk", true }, + { "timnegocia.com.br", true }, { "timniclasdemisch.de", true }, { "timniclasdemisch.eu", true }, { "timo-viveen.nl", true }, + { "timochan.cn", true }, { "timomontalto.de", true }, { "timonenko.cf", true }, { "timonline.tk", true }, + { "timoschlingmann.de", true }, { "timosfoodbar.nl", true }, { "timoso.de", true }, { "timotheeduran.com", true }, { "timothy.tk", true }, { "timothybjacobs.com", true }, + { "timothyyip.photography", true }, { "timowi.de", true }, - { "timoxbrow.com", true }, + { "timoxbrow.com", false }, { "timqueen.com", true }, { "timroes.de", true }, { "timsayedmd.com", true }, { "timscheuermann.ddns.net", true }, { "timseverien.com", true }, { "timstoffel.net", false }, - { "timstruction.com", true }, + { "timsys.de", true }, { "timtaubert.de", true }, { "timtelfer.com", true }, { "timtj.ca", true }, @@ -120969,22 +138892,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "timwhite.io", false }, { "timx.uk", true }, { "timysewyn.be", false }, - { "tina-zander.de", false }, + { "tin-bao.com", true }, { "tina.media", true }, { "tinaarenaweb.tk", true }, { "tinakay-photography.com", true }, { "tinamajorino.tk", true }, { "tinandthyme.uk", true }, { "tinapoethe.com", false }, + { "tinastouchmassage.com", true }, { "tinclip.com", true }, { "tindallriley.co.uk", true }, { "tinder.wiki", true }, { "tinderphotos.ga", true }, { "tineb.be", true }, + { "tinevogel.dk", true }, { "tinf.de", true }, { "tinf15b4.de", true }, + { "tinfoilsecurity.com", true }, { "tinfoleak.com", true }, + { "tingalpakindy.com.au", true }, { "tingriev.gq", true }, + { "tinh.work", true }, { "tinhchattrangda.vn", true }, { "tinhlai.gq", true }, { "tinint.com", true }, @@ -121000,47 +138928,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tinkuscochabamba.tk", true }, { "tinky.tk", true }, { "tinlc.org", true }, - { "tinlook.com", true }, { "tinmarin.org", true }, - { "tinminnow.me", true }, { "tinneke.tk", true }, { "tinnhanhvietnam.tk", true }, { "tinnitus.tirol", true }, + { "tinobeth.com", true }, + { "tinonawall.co.uk", true }, { "tintamas.tk", true }, { "tinte24.de", true }, { "tintenfix.net", true }, { "tintiger.com", true }, + { "tintop.xyz", true }, { "tintoria.roma.it", true }, { "tintuonmobile.tk", true }, { "tinturanaturale.it", true }, { "tiny-house.ro", true }, { "tiny-img.com", true }, { "tiny-tattoos.tk", true }, + { "tiny.ee", true }, { "tiny777.com", true }, { "tinychen.com", true }, { "tinycrm.pl", true }, + { "tinydogllc.com", false }, { "tinydogs.ga", true }, { "tinyemily.com", true }, { "tinyfont.cf", true }, { "tinyfont.ml", true }, { "tinyguitars.tk", true }, + { "tinyhouse-bimify.fr", true }, { "tinyhousebarat.com", true }, { "tinyhousebarat.de", true }, { "tinyhousefinance.com.au", true }, + { "tinyhouseprojects.be", true }, + { "tinyhouseturkiye.com.tr", true }, { "tinylan.com", true }, { "tinylink.cf", true }, + { "tinylotta.com", true }, + { "tinypic.host", true }, { "tinyppt.com", true }, { "tinyproxy.cf", true }, { "tinyproxy.ga", true }, - { "tinysol.com.au", true }, { "tinyspeck.com", true }, { "tinyssh.com", true }, { "tinyssh.org", true }, + { "tinytanuki.com", true }, { "tinytownsoftplay.co.uk", true }, - { "tinyurl.com", true }, + { "tinytwitter.io", true }, { "tinyvpn.org", true }, { "tio.run", true }, { "tiogacountyny.gov", true }, + { "tiogatours.nl", true }, + { "tiolou.com.br", true }, { "tipe.io", false }, { "tipi.jp", true }, { "tipiakers.club", true }, @@ -121053,11 +138991,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tipoftheday.tips", true }, { "tipplist.com", true }, { "tipps-fuer-den-haushalt.de", true }, - { "tippytoad.com", true }, { "tipranks.com", true }, { "tips4gamers.com", true }, { "tips4india.tk", true }, - { "tipsavvy.ca", true }, + { "tipsacademicos.com", true }, { "tipsfinal.tk", true }, { "tipsforgamers.com", true }, { "tipskanalen.cf", true }, @@ -121068,9 +139005,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tipsplants.com", true }, { "tipstersweb.com", true }, { "tipsypresent.com", true }, + { "tiptop.cloud", true }, + { "tiptoptransmissions.com", true }, { "tipulnagish.co.il", true }, - { "tipwho.com", true }, - { "tiqets.com", true }, + { "tipydokasina.cz", true }, + { "tiqets.com", false }, { "tir-mauperthuis.fr", true }, { "tiraloche.com", true }, { "tirana-chat.tk", true }, @@ -121078,24 +139017,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tiraspol.tk", true }, { "tircentrale.net", false }, { "tirebichon.eu", true }, - { "tiremoni.com", true }, + { "tiremart.com", true }, { "tirflesia.it", true }, + { "tirgar.org", true }, { "tirgul-vertiujeni.tk", true }, { "tirion.network", false }, { "tirion.org", false }, { "tirionnetwork.de", true }, { "tirlins.com", true }, { "tiroler-kupferschmiede.com", true }, - { "tirs4ne.ch", false }, + { "tirtalawoffice.com", true }, { "tirteafuera.tk", true }, { "tirupatinightwear.co.in", true }, - { "tis-mark.ru", true }, - { "tischlerei-geher.at", true }, { "tischlerei-klettke.de", true }, { "tisec.info", true }, + { "tiski-shop.ru", true }, { "tism.in", true }, { "tisparking.com", true }, - { "tisph.com", true }, { "tissot-mayenfisch.com", false }, { "tissus-paris.com", true }, { "tisvapo.it", true }, @@ -121104,30 +139042,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tit-dns.de", true }, { "tit-mail.de", true }, { "tit.systems", true }, - { "titan-clinic.ru", false }, { "titanandco.com", true }, { "titandirect.co.uk", true }, { "titanfile.com", true }, { "titanicauto.ro", true }, { "titaniumangel.com", true }, { "titaniumconsulting.co.uk", true }, - { "titansized.com", true }, { "titantax.com", true }, + { "titantrades.com", true }, + { "titantrading.com.au", true }, { "titanwaterproofing.com.au", true }, + { "titanyumkaplama.com", true }, { "titelseite.ch", true }, { "titiansgirl.com", true }, { "titiansgirlphotography.com", true }, { "titina.tk", true }, { "titivoot.tk", true }, - { "titleboxing.com", true }, { "titli.fr", true }, { "titouan.co", false }, { "titser.ph", true }, { "tittelbach.at", true }, + { "titulares.ar", false }, + { "titularizadora.com", true }, { "titulosuniversitariosalaventa.com", true }, { "titusetcompagnies.net", false }, { "titusvillepapd.gov", true }, { "tivido.nl", true }, + { "tivit-chill.partners", true }, + { "tivit-focus-partners.com", true }, { "tiwilandcouncil.com", true }, { "tixeconsulting.com", true }, { "tixel.com", true }, @@ -121137,20 +139079,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tiyee.net", true }, { "tizen-ru.tk", true }, { "tizimin.tk", true }, + { "tizreu.xyz", true }, { "tjampoer.com", true }, { "tjebben.tech", true }, + { "tjgrant.com", true }, { "tjian.info", true }, - { "tjl.rocks", true }, + { "tjkebayi.com", true }, + { "tjl.rocks", false }, { "tjmarron.co.uk", true }, { "tjongeling.tk", true }, { "tjp.ch", false }, { "tjpiezo.com", true }, + { "tjplabs.com", true }, { "tjrapid.sk", true }, { "tjsky.net", false }, { "tjtechofficial.ga", true }, { "tju.me", true }, { "tjupt.org", true }, { "tjurun.ga", false }, + { "tjxcanada.ca", true }, { "tjxxzy.com", true }, { "tjzzz.com", true }, { "tk-its.net", true }, @@ -121158,18 +139105,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tk-smart.ru", true }, { "tk2net.com", true }, { "tkacz.pro", true }, + { "tkafinearts.net", true }, { "tkanemoto.com", false }, { "tkanix.ru", true }, { "tkarstens.de", true }, { "tkcafe.net", true }, + { "tkcaninetraining.com", true }, { "tkd-itf.tk", true }, { "tkgpm.com", true }, { "tkhirianov.tk", true }, + { "tkhsurgery.com", true }, + { "tki.jp", true }, { "tkiely.net", true }, { "tkirch.de", true }, + { "tklist.us", true }, + { "tklm.pl", true }, { "tkmr-gyouseishosi.com", true }, { "tkn.me", true }, { "tkonstantopoulos.tk", true }, + { "tkpayrollsolutions.com", true }, { "tksainc.com", true }, { "tkts.cl", true }, { "tkwataneya.tk", true }, @@ -121178,41 +139132,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tlach.cz", true }, { "tlanyan.pp.ua", true }, { "tlca.org", true }, - { "tlcbynature.com.au", true }, + { "tlcinteriors.com.au", true }, { "tlctrades.com", true }, { "tld-list.com", true }, + { "tldata.co", true }, { "tldplaza.com", true }, { "tldrtips.com", true }, { "tldtattoo.com", true }, { "tldus.com", false }, { "tlehseasyads.com", true }, { "tleng.de", true }, + { "tleplus.com", true }, + { "tlercher.de", true }, { "tlicycling.com", true }, + { "tlingitandhaida.gov", true }, + { "tlmedia.online", true }, + { "tlmicorp.com", true }, + { "tln.lib.ee", true }, { "tlo.xyz", true }, { "tloschinski.de", true }, { "tloxygen.com", true }, - { "tloxygen.uk", true }, { "tloxygen.us", true }, { "tlpn.eu", true }, { "tlroadmap.io", true }, { "tls-proxy.de", true }, { "tls.builders", true }, - { "tls.care", true }, + { "tls.care", false }, { "tls.support", true }, { "tlsbv.nl", true }, + { "tlsdane.com", true }, { "tlsinspector.com", true }, + { "tlsmail.cc", true }, { "tlsrobot.se", true }, { "tlumaczenie.com", true }, { "tlv77.net", true }, { "tlyphed.net", true }, { "tlys.de", false }, - { "tm-sports.net", true }, + { "tm-its.com", true }, + { "tm-sydney.au", true }, { "tm-t.ca", true }, + { "tm2ts.com", true }, { "tm80plus.com", false }, { "tmachinery.cz", true }, { "tmadev.com.au", true }, - { "tmamontreal.ca", true }, - { "tmas.dk", true }, + { "tmamontreal.ca", false }, + { "tmartravel.com", true }, + { "tmatrack.com", true }, { "tmbcloud.duckdns.org", true }, { "tmberg.cf", true }, { "tmberg.eu.org", true }, @@ -121231,47 +139196,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tmc.com.mt", true }, { "tmcjobs.com", true }, { "tmcreationweb.com", true }, + { "tmcrew.org", true }, { "tmdb.biz", true }, + { "tmdmotorhomes.com", true }, { "tmeoworld.tk", true }, { "tmf.ru", true }, - { "tmf22.ru", true }, { "tmhanoi.com", true }, - { "tmheatingcooling.com", true }, { "tmhr.moe", true }, { "tmi-products.eu", true }, { "tmi-produkter.se", true }, - { "tmi.news", true }, { "tmin.cf", true }, { "tmirz.ml", true }, + { "tmj4.com", true }, { "tmm.cx", true }, - { "tmn.io", true }, { "tmobilethuis.nl.eu.org", true }, { "tmp.sx", true }, { "tmpcdn.xyz", true }, { "tmpraider.net", true }, { "tmpsantos.com.br", true }, + { "tmpwn.com", true }, { "tmredondela.tk", true }, - { "tms-menagerie.com", false }, - { "tmsdiesel.com", true }, + { "tmryan.co.uk", true }, { "tmstats.fr", true }, { "tmtopup.com", false }, { "tn-bb.com", true }, + { "tn.nic.in", true }, { "tn0.club", true }, { "tnb-plattform.de", true }, + { "tncrtinfo.com", true }, { "tnd.kz", false }, { "tndagc.gov", true }, { "tndentalwellness.com", true }, { "tnes.dk", true }, - { "tnonline.net", false }, + { "tnonline.net", true }, { "tnosha.gov", true }, { "tnpds.org.in", true }, { "tnrealid.gov", true }, { "tnrf.eu", true }, { "tnskvi.tk", true }, { "tnsolutions.ro", true }, + { "tnsos.gov", true }, + { "tnt-21.com", true }, { "tnt.construction", false }, { "tnt2k.de", true }, + { "tntbooks.ca", true }, { "tntmobi.com", true }, + { "tntuservices.com", true }, { "tntware.com", true }, { "tnurocancer.com", true }, { "tnusedoil.gov", true }, @@ -121280,17 +139250,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tnwgrc.com", true }, { "tnwildlandfire.gov", true }, { "tnwioa.gov", true }, - { "tny.link", false }, { "to-med.ru", true }, { "to-ya.jp", true }, + { "to.cm", true }, { "to.gt", true }, { "to.md", true }, - { "to.sb", true }, { "to4ka.md", false }, { "toabr.de", true }, { "toad.ga", true }, - { "toast.al", false }, + { "toadox.com", true }, { "toastmasters.tk", true }, + { "toastrye.com", true }, { "toaw.de", true }, { "tob-rulez.de", true }, { "tobacco-shop.co.uk", true }, @@ -121298,8 +139268,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tobaccolocker.com", true }, { "tobbro-trans.de", true }, { "tobedo.net", true }, + { "toberdyne.net", true }, { "tobevictorious.com", true }, - { "tobeyvorus.com", true }, { "tobi-mayer.de", true }, { "tobi-server.goip.de", true }, { "tobi-videos.goip.de", true }, @@ -121317,13 +139287,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tobias-weidhase.de", true }, { "tobias.gr", true }, { "tobias4.ddns.net", true }, - { "tobiasbergius.se", true }, { "tobiasbrunner.net", true }, { "tobiasconradi.com", true }, { "tobiase.de", true }, { "tobiasfischer.info", true }, { "tobiashorvath.com", true }, { "tobiashorvath.de", true }, + { "tobiashorvath.net", true }, + { "tobiashorvath.org", true }, { "tobiaskorf.de", true }, { "tobiaspahlings.de", true }, { "tobiaspreis.com", true }, @@ -121338,6 +139309,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tobiaswiese.org", true }, { "tobiaswiese.work", true }, { "tobiefornerod.ch", true }, + { "tobiichi3227.ddns.net", true }, + { "tobiichi3227.eu.org", true }, + { "tobinc.ddnss.de", true }, { "tobis-rundfluege.de", true }, { "tobis.cloud", true }, { "tobischo.de", true }, @@ -121348,7 +139322,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toby3d.me", true }, { "tobyalden.com", true }, { "tobyschrapel.com", false }, - { "tobyslawn.com", true }, { "tobyx.cc", true }, { "tobyx.co", true }, { "tobyx.com", true }, @@ -121360,24 +139333,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tobyx.org", true }, { "tobyx.xyz", true }, { "tocasoft.co.uk", true }, - { "toccoig.com", true }, + { "tocco.ch", true }, { "tochi-urikata.net", true }, { "tochified.com", true }, { "tochinoki.co.jp", true }, + { "tocomtulio.com", true }, + { "toconnect.me", true }, { "todacarreira.com", true }, { "todaciencia.com", true }, + { "todamateria.com", true }, { "todamateria.com.br", true }, { "todapolitica.com", true }, { "todaslascafeteras.com", true }, { "today.it", true }, - { "today.ng", true }, { "todayer.ru", true }, { "todayfinance.news", true }, { "todayfinancial.news", true }, + { "todayhap.net", true }, + { "todayjobs.pk", false }, { "todaylearn.tk", true }, + { "todaymagazine.net", true }, { "todaymeow.com", true }, { "todayprice.ga", true }, { "todaysbestinsurance.com", true }, + { "todaysparent.com", true }, { "todayupdates.ga", true }, { "toddcullumresearch.com", true }, { "toddexler.com", true }, @@ -121391,16 +139370,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toddvbanks.com", true }, { "todeva.com", true }, { "todo-securitywerkstuk.azurewebsites.net", true }, - { "todobien.club", true }, + { "todo.is", false }, { "todobus.tk", true }, { "todobuscadores.tk", true }, { "todocracy.com", true }, { "todocruces.com", true }, - { "tododecorazon.com", true }, { "tododescarga.tk", true }, { "todoescaperooms.com", true }, { "todoescine.com", true }, { "todofadingsuns.tk", true }, + { "todofiesta.com.ar", true }, { "todoinfo.tk", true }, { "todoist.com", true }, { "todoist.help", true }, @@ -121416,7 +139395,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "todosquerem.uno", true }, { "todosrv.com", true }, { "todotiendas.tk", true }, - { "todotpvs.com", true }, { "toeglhofer.at", true }, { "toeightycountries.com", true }, { "toekomstperspectief.be", true }, @@ -121429,29 +139407,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tofilmhub.com", true }, { "tofinovacationrentals.ca", true }, { "tofliving.nl", true }, + { "toftered.se", false }, { "tofu.cf", true }, { "tofu.kim", true }, { "tofuixi.com", true }, - { "tog.pw", true }, { "together.gov", true }, + { "togetherprice.com", true }, { "togetter.com", true }, { "togglename.ml", true }, { "togoweed.co", true }, - { "togruta.com", true }, { "togtider.dk", true }, { "toh25unblocked.tk", true }, { "toheb.de", false }, { "tohevn.tk", true }, - { "tohfalaya.com", true }, { "toho-tk.com", true }, { "tohofc.co.jp", true }, - { "tohokinemakan.tk", true }, { "tohoku-fukushi.com", true }, { "tohokufd.com", true }, { "toila.best", true }, { "toileobscure.fr", true }, + { "toilet-guru.com", true }, + { "toimitaax.fi", true }, { "toipa.org", true }, - { "toirereform.com", true }, { "toiture-78.fr", true }, { "tojeit.cz", true }, { "tojevune.cz", true }, @@ -121464,7 +139441,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tokdeccor.com.br", true }, { "tokelaunso.tk", true }, { "token.im", true }, + { "tokenizedhq.com", true }, { "tokenlon.im", false }, + { "tokenoftrust.com", true }, { "tokens.net", true }, { "tokfun.com", true }, { "toki-doki.tk", true }, @@ -121482,37 +139461,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tokke.dk", true }, { "tokkee.org", true }, { "tokky.be", true }, - { "tokky.cards", true }, { "tokky.eu", true }, { "tokky.fr", true }, + { "tokoangga.com", true }, + { "tokoangga.id", true }, + { "tokobungaasryflorist.com", true }, { "tokobungadilampung.com", true }, { "tokocuan.id", true }, { "tokoindo.top", true }, { "tokokujogja.com", true }, { "tokomoto-w.com", true }, { "tokopedia.ga", true }, - { "tokotimbangandigitalmurah.web.id", false }, - { "toku.co", true }, + { "toku.co", false }, { "tokugai.com", true }, + { "tokusatsunetwork.com", true }, + { "tokyo-city.ru", false }, + { "tokyo-co2down.jp", true }, { "tokyo-hotel.tk", true }, { "tokyo-onkyo.jp", true }, { "tokyo-powerstation.com", true }, - { "tokyo.dating", true }, { "tokyoadultguide.com", true }, { "tokyodenmarkweek.com", true }, { "tokyomakino.com", true }, { "tokyotalk.tk", true }, { "tokyotimeline.com", true }, - { "tokyotoptentravel.com", true }, { "tolas.lt", true }, { "tolboe.com", true }, { "toldos-en-stock.es", true }, - { "toldos.curitiba.br", true }, { "toldosecoberturasbh.com.br", true }, - { "toldosemcuritiba.com", true }, { "toledo.tk", true }, { "toledoclassifieds.net", true }, { "toledoescorts.net", true }, + { "toledohydraulic.com", true }, { "toledotrainday.org", true }, { "tolerance-zero.tk", true }, { "toleressea.fr", true }, @@ -121529,7 +139509,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tollfreeproxy.com", true }, { "tollmanz.com", false }, { "tolls.eu", true }, - { "tollsjekk.no", false }, + { "tollsjekk.no", true }, { "tollywood.ga", true }, { "tolmaidis.com", true }, { "tolman.nl", true }, @@ -121542,25 +139522,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tom-kunze.de", true }, { "tom-kurka.cz", true }, { "tom.je", true }, + { "tom0907.eu", true }, { "tomabrafix.de", true }, { "tomacino.de", true }, { "tomaempleo.com", true }, + { "tomahawkwi.gov", true }, { "tomahwi.gov", true }, - { "toman-vzv.cz", true }, { "toman.rs", true }, { "toman.sk", true }, { "toman.su", true }, { "tomandmara.com", true }, { "tomandshirley.com", true }, + { "tomarlacalle.com", true }, { "tomarnarede.pt", true }, + { "tomartv.pt", true }, + { "tomasa.cc", true }, { "tomasdrtina.cz", true }, { "tomashejatko.cz", true }, { "tomashouzvicka.pl", true }, { "tomasjacik.cz", true }, { "tomaskavalek.cz", false }, + { "tomaskopa.cz", true }, { "tomasmatulevicius.lt", true }, { "tomasmoberg.org", true }, - { "tomaspatera.cz", true }, { "tomasvecera.cz", false }, { "tomaszdwornicki.net", true }, { "tomatenaufdenaugen.de", true }, @@ -121568,6 +139552,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomatofrogs.com", true }, { "tomatohq.com", true }, { "tomaz.eu", true }, + { "tomba.io", true }, { "tombaker.me", false }, { "tombclan.ga", true }, { "tombeantx.gov", true }, @@ -121579,20 +139564,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tombu.info", false }, { "tombu.org", false }, { "tombu.xyz", false }, + { "tomcat.ml", true }, { "tomchen.org", true }, { "tomco-corporation.tk", true }, { "tomcort.com", true }, { "tomd.ai", true }, + { "tomdapice.com", true }, { "tomdougiamas.com", true }, + { "tomdudfield.com", true }, { "tomend.es", true }, { "tomfelton.tk", true }, + { "tomff.com", true }, { "tomfisher.eu", true }, + { "tomfun.co", true }, { "tomgaddis.com", true }, { "tomgaechter.ch", true }, { "tomget.tk", true }, { "tomharling.co.uk", true }, { "tomharling.uk", true }, - { "tomhiddlestonspain.tk", true }, { "tomi.ai", true }, { "tomi.cc", true }, { "tomica.me", true }, @@ -121601,6 +139590,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomik.fun", true }, { "tomikoyco.com", true }, { "tomiler.com", true }, + { "tominysun.com", true }, + { "tomjans.nl", true }, { "tomjepp.uk", true }, { "tomjn.com", true }, { "tomkempers.nl", true }, @@ -121609,34 +139600,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomkunze.de", true }, { "tomkwok.com", false }, { "tomli.blog", true }, - { "tomlowenthal.com", true }, { "tomm.yt", true }, { "tomma.tk", true }, { "tommic.eu", true }, { "tommihynynen.com", true }, { "tommy-bordas.fr", false }, + { "tommybrown.ru", true }, { "tommycarrauto.com", true }, { "tommyemo.com", true }, { "tommyemo.net", true }, + { "tommygunnpornstar.com", true }, { "tommymoya.tv", true }, { "tommypa.se", true }, { "tommypalarsson.com", true }, { "tommypalarsson.se", true }, { "tommyphotographie.com", false }, + { "tommys.com", true }, { "tommytran.io", true }, { "tomnatt.com", true }, { "tomo.gr", false }, { "tomoarigato.com", true }, { "tomodachi.tk", true }, - { "tomofsweden.com", true }, { "tomoko-clinic.jp", true }, { "tomorrow-traxx.tk", true }, { "tomosm.net", true }, { "tomoveornot.de", true }, { "tomphenix.com", true }, { "tomphill.co.uk", false }, - { "tomposer.de", true }, - { "tomradtke.de", true }, { "tomravinmd.com", true }, { "tomrei.com", true }, { "tomrichards.net", true }, @@ -121644,7 +139634,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toms.ovh", true }, { "tomschlick.com", true }, { "tomsdevsn.me", true }, - { "tomsick.it", true }, { "tomsk.cf", true }, { "tomsk.ml", true }, { "tomsk24.tk", true }, @@ -121671,6 +139660,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tomwassenberg.nl", true }, { "tomwellington.design", true }, { "tomwilson.io", false }, + { "tomwither.com", true }, { "tomyork.net", true }, { "tonabor.ru", true }, { "tonage.de", true }, @@ -121678,14 +139668,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tonarinoliusan.com", true }, { "tonarinoliusan.net", true }, { "tonasketwa.gov", true }, + { "tonaton.com", true }, { "tonazo.tk", true }, { "tonburi.jp", false }, { "toncusters.nl", true }, { "tondles.com", true }, - { "tone.tw", true }, - { "tonebuildingsupplies.com", true }, + { "tone-town.com", true }, { "toneelaccent.tk", true }, { "tonegidoarchief.nl", true }, + { "tonemadison.com", false }, { "toner24.at", true }, { "toner24.co.uk", true }, { "toner24.es", true }, @@ -121703,11 +139694,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toners.ro", true }, { "tonex.de", true }, { "tonex.nl", true }, + { "tongjistudents.org", true }, + { "tongkhothanhly.com", true }, { "tongli.eu.org", true }, { "tonguetechnology.com", true }, { "toni-dis.ch", false }, { "toniduarte.tk", true }, + { "tonies.com", true }, { "tonifarres.net", true }, + { "tonifix.fi", true }, { "tonight.de", true }, { "tonik.tk", true }, { "tonimorena.net", true }, @@ -121717,22 +139712,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tono.us", true }, { "tonorosario.tk", true }, { "tonshaiza.tk", true }, - { "tonsit.com", true }, + { "tonsil-stone.com", true }, + { "tonsillar-stones.com", true }, { "tonsit.org", false }, { "tonton.cf", true }, { "tontonan.gq", true }, { "tontonnews.net", true }, { "tontonroger.org", true }, - { "tony-morelli.com", true }, { "tonyandskye.com", true }, { "tonyarcieri.com", true }, { "tonydaquin.com", true }, { "tonyfanningphotography.co.uk", true }, { "tonygallo.tk", true }, { "tonyhagerlund.tk", true }, + { "tonykadleck.com", true }, { "tonykarbo.tk", true }, { "tonymanning.com", true }, { "tonyonsecurity.com", true }, + { "tonypolecastro.com", true }, { "tonysantos.tk", true }, { "tonytan.cn", true }, { "tonytan.io", true }, @@ -121742,30 +139739,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tonywebster.com", true }, { "too.com.ua", true }, { "too.gy", true }, - { "too.tl", true }, + { "tooadalsauda.kz", true }, { "toobi.co.uk", true }, - { "toobug.net", true }, + { "toobug.net", false }, { "tooelecountyvotes.gov", true }, { "toofab.com", true }, + { "tooij.com", true }, { "tookan.tech", true }, { "tookhan.tk", true }, { "tool.lu", true }, { "toolbox.ninja", false }, { "toolboxsoftware.tk", true }, + { "toolecountysheriffmt.gov", true }, { "toolineo.de", true }, { "toolip.gr", true }, { "toolkits.design", true }, { "toolminer.com", true }, { "toolroomrecords.com", true }, + { "tools-services.com.co", true }, { "tools.pro", true }, - { "tools4me.win", true }, + { "tools4me.win", false }, + { "toolsa.bg", true }, { "toolsbit.com", true }, + { "toolsego.com", true }, { "toolsense.io", true }, { "toolset.com", true }, { "toolsforbiblestudy.com", true }, { "toolspain.tk", true }, { "toolsu.com", true }, - { "tooltot.com", true }, { "toolzone.cz", true }, { "toom.io", true }, { "toomy.ddns.net", true }, @@ -121773,6 +139774,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toon.at", true }, { "toon.style", true }, { "tooncastle.tk", true }, + { "toondah.com.au", true }, + { "toondahjobs.com.au", true }, { "toondergroup.com", true }, { "toonetcreation.com", true }, { "toonict.nl", true }, @@ -121786,9 +139789,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toool.org", true }, { "toopita.com", true }, { "toopopular.ga", true }, - { "toot.center", true }, + { "toot.community", false }, + { "toot.haus", true }, { "tootbitco.ml", true }, - { "toothdoc.ca", true }, { "toothimplantsydney.com.au", true }, { "toothless.tk", true }, { "toothpique.tk", true }, @@ -121797,10 +139800,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tootl.org", true }, { "tootsi.edu.ee", true }, { "toowoombajazz.com", true }, + { "toowoombawebdesign.com.au", true }, { "top-aanbiedingen.nl", true }, { "top-avis.fr", true }, + { "top-azia.ru", true }, + { "top-b.com", true }, + { "top-b.net", true }, { "top-beauty.cf", true }, - { "top-cena.ru", true }, + { "top-bev.com", true }, { "top-credit.tk", true }, { "top-dance.pl", true }, { "top-drop.tk", true }, @@ -121821,40 +139828,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "top-russian.tk", true }, { "top-schools.tk", true }, { "top-secret.tk", true }, + { "top-seminaire.com", true }, { "top-service.ml", true }, { "top-shashlik.com.ua", true }, { "top-skins.ml", true }, + { "top-super-60.ag", true }, + { "top-super-60.biz", true }, + { "top-super-60.com", true }, + { "top-super-60.de", true }, + { "top-super-60.eu", true }, + { "top-super-60.info", true }, + { "top-super-60.net", true }, + { "top-super-60.org", true }, { "top-verhandlungstraining.de", true }, { "top-zdrave.bg", true }, { "top-zentr.tk", true }, { "top.ax", true }, + { "top1.com.vn", false }, { "top10-casinosites.net", true }, { "top10.tk", true }, { "top100games.ml", true }, { "top10antivirus.review", true }, { "top10directory.tk", true }, { "top10list.tk", true }, + { "top10llcformationsites.com", true }, { "top10media.tk", true }, { "top10mountainbikes.info", true }, + { "top1health.com", true }, { "top4shop.de", true }, - { "top6casinos.com", true }, - { "top9.fr", true }, + { "top5ones.com", true }, { "topa.tk", true }, - { "topacademy.shop", true }, + { "topagrar.com", true }, { "topan.tk", true }, + { "topandtrending.com", true }, { "topanimecharacters.com", true }, { "topanlage.de", true }, { "toparkinfo.hu", true }, { "topas.tk", true }, - { "topask.ru", true }, - { "topaxi.codes", true }, - { "topbestsellerproduct.com", true }, + { "topaxi.codes", false }, { "topbloc.com", true }, { "topbookmarking.cf", true }, { "topbouncycastles.co.uk", true }, - { "topbrainscience.com", true }, { "topbrasilnews.tk", true }, { "topbrunchspots.com", true }, + { "topbuild.com", true }, { "topbusiness.tk", true }, { "topbusinessnews.today", true }, { "topbussines.tk", true }, @@ -121868,10 +139885,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topclassfun.ie", true }, { "topcoffee.cf", true }, { "topcompany.be", true }, + { "topconteudos.com.br", true }, + { "topconteudos.shop", true }, { "topcover.cz", true }, - { "topdeerantlerspray.com", true }, + { "topda.xyz", true }, + { "topdesignfirms.com", true }, { "topdesk.net", true }, + { "topdetal.ru", true }, { "topdetoxcleanse.com", true }, + { "topdoctors.co.uk", true }, + { "topdoctors.es", true }, + { "topdoctors.it", true }, { "topdocumentaryfilms.com", true }, { "topdogsinflatables.co.uk", true }, { "topdomainsandhosting.com", true }, @@ -121880,12 +139904,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topechelon.com", true }, { "topeducationhelp.co", true }, { "topekafoundationpros.com", true }, + { "topemlak.com", true }, { "topendcamphire.com.au", true }, { "toperadigital.com", true }, + { "topesdegama.com", true }, + { "topessaywritingbase.com", true }, + { "topeyechang.com.tw", true }, { "topfd.net", true }, { "topferta.com", true }, + { "topfiremedia.com", true }, { "topfivepercent.co.uk", true }, { "topfood.club", true }, + { "topfreeporn.com", true }, { "topgallant.gq", true }, { "topgevelbekleding.nl", true }, { "topgrading.com", true }, @@ -121895,6 +139925,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tophat.studio", true }, { "tophatpuffin.com", false }, { "tophighnorldiet.gq", true }, + { "tophomeappliancerepair.com", true }, { "tophr.kz", true }, { "topicalnet.de", true }, { "topicdesk.com", true }, @@ -121903,13 +139934,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topicpulse.tk", true }, { "topicv.com", true }, { "topideipodarkov.ru", true }, - { "topirishcasinos.com", true }, + { "topitalianscientists.org", true }, { "topjeans.ga", true }, { "topjobs.ch", true }, { "topknot.gq", true }, { "topkorea.ml", true }, { "toplevel.mx", true }, - { "toplifesaudaveis.com.br", true }, + { "toplevel.nl", true }, { "topline.com.sa", true }, { "toplink.co.il", true }, { "toplist.cz", true }, @@ -121918,9 +139949,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topliste.tk", true }, { "toplistforum.tk", true }, { "toplockshop.com", true }, + { "topluxitalia.com", true }, + { "topmachstudios.com", true }, { "topmanitas.es", true }, { "topmarketplace.com.br", true }, - { "topmejores.org", true }, + { "topmaxstore.com", true }, + { "topmba.com.au", true }, { "topmmogames.org", true }, { "topmoods.com", true }, { "topmotoric.com", true }, @@ -121933,19 +139967,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topnews333.cf", true }, { "topnews333.tk", true }, { "topnlist.com", true }, + { "topnotch-fitness.com", true }, { "topnotchendings.com", true }, { "topo.com.ro", true }, { "topodin.com", true }, + { "topofart.com", true }, { "topofertas.tk", true }, { "topofficesupplies.tk", true }, - { "topofmind.co.za", true }, { "topofthefreegames.ml", true }, { "topographic.tk", true }, { "toponlinecasino.be", true }, - { "toponlinecasinonederland.nl", true }, { "toponlinecasinosites.co.uk", true }, { "toponlinemarketing.tk", true }, { "topophile.net", true }, + { "topoptics.com.ua", true }, { "topotom.tk", true }, { "toppercan.es", true }, { "toppillars.com", true }, @@ -121953,7 +139988,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topppinfo.com", true }, { "topprice.ua", true }, { "topproductsanalysis.com", true }, + { "topprogaragedoor.com", true }, + { "toppsnfts.com", true }, + { "toppstugansundbyberg.se", true }, { "topradiosbrasil.tk", true }, + { "toprating.casino", true }, { "toprci.com.br", true }, { "topreit.ru", true }, { "toprelatos.com", true }, @@ -121961,16 +140000,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "topsailtechnologies.com", true }, { "topseo.gq", true }, { "topservercccam.com", true }, + { "topservercccam.tv", true }, { "topservers.ga", true }, { "topsexik.cz", true }, - { "topshelfcommercial.com", true }, + { "topshelf.tech", false }, { "topshop.tk", true }, { "topshoptools.com", true }, + { "topsights.org", true }, { "topsnow.ru", true }, { "topspace.tk", true }, { "topspani.cz", true }, { "topspin.tk", true }, + { "topsport.bg", true }, { "topsteroidsonline.com", true }, + { "topsuper60.ag", true }, + { "topsuper60.biz", true }, + { "topsuper60.de", true }, + { "topsuper60.info", true }, + { "topsuper60.net", true }, { "topsvet.ru", true }, { "toptapety.cz", true }, { "toptec.net.br", true }, @@ -121978,28 +140025,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toptechnews.tk", true }, { "topteen.tk", true }, { "topten.com.co", true }, - { "toptenthebest.com", true }, { "toptexture.com", true }, { "toptheto.com", true }, { "toptiernetworks.tk", true }, - { "toptilebathrooms.co.nz", false }, + { "toptilebathrooms.co.nz", true }, + { "toptotosite.com", true }, { "toptour.tk", true }, { "toptracks.tk", true }, { "toptranslation.com", true }, { "toptravel.tk", true }, { "toptravelgram.com", true }, { "toptur.tk", true }, - { "topupandearn.com", true }, { "topurls.tk", true }, { "topvertimai.lt", true }, { "topviet.ga", true }, { "topvision.es", true }, - { "topvision.se", true }, { "topvpn.pl", true }, { "topwin.la", true }, { "topwindowcleaners.co.uk", true }, { "topwonders.tk", true }, - { "topwoodltd.co.uk", true }, + { "topworkplaces.com", true }, { "topyachts-shop.com.ua", true }, { "topyachts.com.ua", true }, { "topzarabotok.ml", true }, @@ -122007,7 +140052,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tor.taxi", true }, { "tor2web.org", true }, { "tor4.cf", true }, - { "toracon.org", false }, { "toranjchap.com", true }, { "torb.com", true }, { "torba.tk", true }, @@ -122016,18 +140060,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "torbe.es", true }, { "torch-fan.site", true }, { "torchantifa.org", true }, + { "torchbankz.com", true }, { "torchbearer.tk", true }, + { "torchmc.ru", true }, { "tordenskjold.de", true }, + { "tordo.net", true }, { "toreni.us", true }, { "toretame.jp", true }, { "toretfaction.net", true }, { "torfbahn.de", true }, { "torg-room.ru", true }, - { "torg-ug.ru", true }, { "torgoborud.tk", true }, { "torgopt.tk", true }, { "torgovaya.tk", true }, - { "torgyug.ru", true }, + { "toricafe.com", true }, { "torigaoka-dc.com", true }, { "toriko-official.ml", true }, { "torino.fi", true }, @@ -122036,25 +140082,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tork.news", true }, { "torkel.se", true }, { "torkware.com", true }, + { "torlock.blog", true }, { "torlock.com", true }, { "torlock2.com", true }, { "tormentedradio.com", false }, + { "tormentgame.com", true }, { "tormox.ml", true }, + { "tornadica.by", true }, { "tornado-map.de", true }, { "tornadoarchiv.ml", true }, { "tornadoautos.com", true }, { "tornadodetector.ga", true }, - { "tornadotwistar.com", true }, { "torngalaxy.com", true }, - { "tornos.site", true }, { "tornyosbbq.hu", true }, { "torocatala.tk", true }, + { "toroguapo.com", true }, { "torondor.tk", true }, { "toronto-escorts.com", true }, { "torontoaccesscontrol.com", true }, { "torontocorporatelimo.services", true }, { "torontogid.cf", true }, { "torontohealthcare.tk", true }, + { "torontolife.com", true }, { "torontonews.tk", true }, { "torontoplumbinggroup.ca", true }, { "torontopostcardclub.com", true }, @@ -122063,7 +140112,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "torontostarts.com", true }, { "torontotransit.tk", true }, { "toropova.tk", true }, - { "toros.co", true }, + { "toros2.com", true }, { "torproject.org", false }, { "torproject.ovh", true }, { "torprojects.com", true }, @@ -122073,8 +140122,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "torrecilladelaabadesa.tk", true }, { "torreconta.pt", true }, { "torrededonmiguel.tk", true }, - { "torremarsalou.com", false }, - { "torremocha.eu", true }, + { "torrelorenzo.com", true }, + { "torremarsalou.com", true }, { "torrent.fedoraproject.org", true }, { "torrent.is", true }, { "torrent.tm", true }, @@ -122085,18 +140134,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "torrentdownload.gq", true }, { "torrentfunk.com", true }, { "torrentfunk2.com", true }, + { "torrentgalaxy.mx", true }, + { "torrentgalaxy.su", true }, { "torrentgalaxy.to", true }, + { "torrenttop100.net", true }, { "torrentz2.al", true }, { "torrero.tk", true }, { "torresdealbanchez.tk", true }, - { "torresdocaribe.com.br", true }, - { "torresdocariberesidence.com.br", true }, { "torresjaen.tk", true }, - { "torresshop.es", true }, + { "torresshop.es", false }, { "torretzalam.com", true }, { "torsdammen.se", true }, { "torservers.net", false }, - { "torsten-frenzel.de", true }, { "torsten-schmitz.net", true }, { "torsten-werner.info", true }, { "torstens-buecherecke.de", true }, @@ -122108,6 +140157,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tortillas-duras.ga", true }, { "tortillas-duras.gq", true }, { "tortillas-duras.ml", true }, + { "tortimes.com", true }, { "tortocan.com", true }, { "tortoises-turtles.com", true }, { "tortuga.ga", true }, @@ -122117,13 +140167,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tosatopsicologabologna.com", true }, { "tosbourn.com", true }, { "toscanaecommerce.it", true }, - { "toscer.me", false }, + { "toscanaeconomy.it", true }, { "toschool.com.br", true }, { "toshen.com", true }, { "toshicar.com", true }, { "toshik.tk", true }, { "toshiroz.com", true }, { "toshkov.com", true }, + { "toshl.com", true }, { "toskavista.de", true }, { "tosolini.info", true }, { "tosostav.cz", true }, @@ -122133,22 +140184,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tot.money", true }, { "totaku.ru", false }, { "total-chaos.tk", true }, + { "total-deco.eu", true }, { "total-destruction.tk", true }, { "total-electric.com", true }, { "total-privacy.tk", true }, { "total-security.tk", true }, - { "totalabogados.cl", true }, { "totalaccessnicaragua.co", true }, { "totalbike.com.br", true }, + { "totalbyverizon.com", true }, { "totalcarcheck.co.uk", true }, + { "totalcare.co.nz", true }, { "totalcarpetcare.co.uk", true }, - { "totalchecklist.com", true }, - { "totalconceptnh.com", true }, { "totalcontrols.eu", true }, { "totalemaildelivery.com", true }, { "totalenergies.ca", true }, + { "totalenergies.com", true }, + { "totalenergies.de", true }, + { "totalenergies.do", true }, { "totalengineering.club", true }, { "totalenterprise.pl", true }, + { "totalexpert.net", true }, + { "totalfitnessandmassage.com.au", true }, { "totalforcegym.com", true }, { "totalfoundationpros.com", true }, { "totalhost.gq", true }, @@ -122171,15 +140227,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "totalofficeclean.co.uk", true }, { "totalpackers.com", true }, { "totalparts.com.au", true }, - { "totalproductivity.nl", false }, { "totalsport-bg.com", true }, { "totaltriathlon.com", true }, { "totalwebmedia.nl", true }, { "totalwebpartners.com", true }, { "totalzen.ga", true }, { "totch.de", true }, + { "tote.co.uk", true }, { "totemgames.tk", true }, { "tothetopmentoring.com", true }, + { "totheweb.com", true }, { "totlan.tk", true }, { "totnastic.tk", true }, { "totnhatvina.com", false }, @@ -122187,12 +140244,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "totobetty.com", true }, { "totodil.es", true }, { "totolabs.com", true }, - { "totoland16.cc", true }, - { "totoland17.cc", true }, - { "totoland18.cc", true }, - { "totoland19.cc", true }, + { "totolink.tw", true }, { "totora.tk", true }, + { "totstraksonline.nl", true }, { "tottoya.com", true }, + { "totuus.sk", true }, { "totvs.com", true }, { "toucan-informatique.fr", true }, { "touch-up-net.com", true }, @@ -122201,36 +140257,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "touch2ship.com", true }, { "touchable.gq", true }, { "touchanddraw.tk", true }, + { "touchbasesm2.ca", true }, { "touchboobs.ml", true }, { "touchdown.co", true }, + { "touchfoundation.org", true }, + { "touchfromtheheartmassagetherapyandreflexology.com", true }, { "touchka.ga", true }, { "touchmark.tk", true }, + { "touchofjapan.com", true }, { "touchoflife.in", true }, { "touchscreentills.com", true }, - { "touchspeak.nl", true }, + { "touchspeak.nl", false }, { "touchtable.nl", true }, { "touchweb.be", true }, { "touchweb.ch", true }, { "touchweb.fr", true }, - { "touchwoodtrees.com.au", true }, - { "tougetu.com", true }, - { "tough.email", true }, { "toughcodes.com", true }, - { "toughvps.com", true }, + { "toughcoding.net", true }, + { "toughguyswyo.com", true }, { "touhidur.ru.com", true }, { "touhidur.sa.com", true }, + { "touhidur.studio", true }, { "touhidur.tech", true }, { "touhidur.tk", true }, + { "touhidur.xyz", true }, { "touhidur.za.com", true }, + { "touhidurrr.me", true }, { "touhou.ac.cn", false }, { "touhou.cc", true }, { "touhou.tw", true }, { "touhouwiki.net", true }, { "toujour.top", true }, { "toulis.net", true }, + { "toulouscope.fr", true }, { "toulouselautrec.com.br", true }, { "toumeitech.com", true }, { "toupcreative.com", true }, + { "touquet-volley.com", false }, + { "tour-de-franz.bike", true }, { "tour-japan.ml", true }, { "tour-vietnam.tk", true }, { "touray-enterprise.ch", true }, @@ -122240,6 +140304,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tourdewestwoud.nl", true }, { "tourfunnels.com", true }, { "tourgest.net", true }, + { "tourify.me", false }, { "touringinmorocco.com", true }, { "tourism-exegetai.tk", true }, { "tourisme-castillonpujols.fr", true }, @@ -122247,15 +140312,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tourisme-fronsadais.com", true }, { "tourismpskov.tk", true }, { "tourismtrain.tk", true }, - { "tourispo.com", true }, { "touristanalyst.ga", true }, + { "touristmaker.com", true }, + { "touristsense.com", true }, + { "tourmaster.com", true }, { "tournamentmgr.com", true }, { "tournaments.tk", true }, - { "tournevis.ch", false }, + { "tournation.info", true }, { "touroogle.com", true }, { "tours-in-petersburg.tk", true }, - { "toursandtransfers.it", true }, + { "tours.co.th", true }, + { "toursaindia.com", true }, + { "toursandtransfers.it", false }, { "toursencancun.com", true }, + { "tourshopfresno.com", true }, + { "toursmontessori.com", true }, { "tourteller.com", true }, { "tourtransferitaly.it", true }, { "tourtrektrip.com", true }, @@ -122271,9 +140342,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tout-art.ch", true }, { "toutankamon.tk", true }, { "toutart.ch", true }, - { "toutelathailande.fr", true }, { "toutenmusic.fr", true }, - { "touteslestherapies.fr", false }, { "toutmonexam.fr", true }, { "toutvendre.be", true }, { "toutvendre.ch", true }, @@ -122293,61 +140362,96 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tovarypochtoj.tk", true }, { "toverland-tickets.nl", true }, { "tovp.org", false }, - { "towandalibrary.org", true }, { "towardsthecloud.com", true }, { "towaway.ru", true }, { "towellconstruction.ca", true }, { "tower.land", true }, + { "towerdefen.se", true }, { "towerdefence.tk", true }, { "towers-kolomna.tk", true }, + { "towersstreet.com", true }, { "towessi.tk", true }, { "town-night.jp", true }, { "townforge.net", true }, { "townfremontwi.gov", true }, + { "townhouseregister.com.au", true }, { "townifi.ga", true }, { "townlaretsota.gq", true }, + { "townnews.com", true }, + { "townoconomowoc-wi.gov", true }, + { "townofadamsgreencountywi.gov", true }, { "townofadamswi.gov", true }, { "townofavonwi.gov", true }, + { "townofbalsamlakewi.gov", true }, { "townofbarneswi.gov", true }, + { "townofbayfieldwi.gov", true }, { "townofbeavermarinettewi.gov", true }, { "townofbeecherwi.gov", true }, + { "townofbelgiumwi.gov", true }, { "townofbeloitwi.gov", true }, { "townofbridgewater.ca", true }, + { "townofbrillionwi.gov", true }, { "townofbrinybreezes-fl.gov", true }, { "townofbrooklynwi.gov", true }, { "townofbrookwoodal.gov", true }, { "townofbrothertownwi.gov", true }, { "townofbrunswickwi.gov", true }, + { "townofbutlerwi.gov", true }, { "townofbyronwi.gov", true }, { "townofcadizwi.gov", true }, + { "townofcaledoniacolumbiawi.gov", true }, { "townofcampbellwi.gov", true }, + { "townofcanandaigua.gov", true }, + { "townofcantonct.gov", true }, { "townofcaponbridgewv.gov", true }, + { "townofcarthagetn.gov", true }, + { "townofcedarburgwi.gov", true }, + { "townofchenangony.gov", true }, + { "townofcherrycreekny.gov", true }, { "townofchesterwi.gov", true }, + { "townofclarnowi.gov", true }, + { "townofclaytonny.gov", true }, { "townofclearfieldwi.gov", true }, { "townofclearlakewi.gov", true }, { "townofclevelandnc.gov", true }, { "townofclymanwi.gov", true }, + { "townofcohoctonny.gov", true }, { "townofcoldspringny.gov", true }, + { "townofcooperstownwi.gov", true }, { "townofcranmoor.gov", true }, + { "townofdane.gov", true }, { "townofdecaturwi.gov", true }, + { "townofdepositny.gov", true }, + { "townofdewhurstwi.gov", true }, + { "townofdexterwi.gov", true }, { "townofdrammen-wi.gov", true }, { "townofdraperwi.gov", true }, { "townofdrummondmt.gov", true }, { "townofdunbarwi.gov", true }, { "townofeaugallewi.gov", true }, { "townofedenwi.gov", true }, + { "townofemmetwi.gov", true }, + { "townofevansny.gov", true }, { "townofexcelsiorwi.gov", true }, + { "townoffairfieldwi.gov", true }, { "townoffonddulacwi.gov", true }, { "townofforestvernonwi.gov", true }, + { "townofgalewi.gov", true }, + { "townofgardenvalleywi.gov", true }, { "townofgardnerwi.gov", true }, { "townofgermantownwi.gov", true }, { "townofgibsonwi.gov", true }, + { "townofgoldenmeadow-la.gov", true }, + { "townofgoreok.gov", true }, { "townofgraftonwi.gov", true }, { "townofgrantsburgwi.gov", true }, { "townofgrantshawanowi.gov", true }, + { "townofgreengrovewi.gov", true }, { "townofgreenlake.gov", true }, { "townofhamburgny.gov", true }, { "townofhamiltonny.gov", true }, + { "townofharrisonmcwi.gov", true }, + { "townofhartfordwi.gov", true }, { "townofherman-wi.gov", true }, { "townofhollandwi.gov", true }, { "townofhulbertok.gov", true }, @@ -122357,39 +140461,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "townofjacksonwi.gov", true }, { "townofjanesvillewi.gov", true }, { "townofjohnsonwi.gov", true }, + { "townofjohnstonsc.gov", true }, + { "townofjordanwi.gov", true }, + { "townofkewaskumwi.gov", true }, { "townofkeystonewi.gov", true }, + { "townoflagrangemcwi.gov", true }, + { "townoflakecityco.gov", true }, { "townoflakemarinettewi.gov", true }, + { "townoflakeviewor.gov", true }, + { "townoflamartinewi.gov", true }, { "townoflandisnc.gov", true }, { "townoflebanonny.gov", true }, { "townoflebanonwi.gov", true }, + { "townoflenrootwi.gov", true }, + { "townofleonmocowi.gov", true }, { "townofleroywi.gov", true }, { "townoflibertyocwi.gov", true }, + { "townoflincolnforestwi.gov", true }, + { "townoflindenwi.gov", true }, { "townoflomira.gov", true }, + { "townoflucas-wi.gov", true }, { "townofluskwy.gov", true }, { "townoflyndonwi.gov", true }, { "townoflynneoneidactywi.gov", true }, { "townofmackfordwi.gov", true }, + { "townofmarionwausharawi.gov", true }, { "townofmarshfieldwi.gov", true }, + { "townofmecanwi.gov", true }, + { "townofmentorwi.gov", true }, + { "townofmerrillwi.gov", true }, { "townofmertonwi.gov", true }, { "townofmiltonwi.gov", true }, { "townofmineral.net", true }, { "townofminocqua.gov", true }, { "townofmontereytn.gov", true }, + { "townofmosineewi.gov", true }, { "townofmtpleasantwi.gov", true }, { "townofnasewaupeewi.gov", true }, { "townofnecedahwi.gov", true }, { "townofneenahwi.gov", true }, { "townofnevawi.gov", true }, + { "townofnewdenmarkwi.gov", true }, { "townofnewglaruswi.gov", true }, + { "townofnewhavendunnwi.gov", true }, + { "townofnewpaltzny.gov", true }, { "townofnilesny.gov", true }, { "townofnorwaywi.gov", true }, { "townofnorwichny.gov", true }, { "townofomro.gov", true }, { "townofonalaskawi.gov", true }, { "townofonondaga.gov", true }, + { "townoforegonwi.gov", true }, { "townofpolk-wi.gov", true }, + { "townofpoygan.gov", true }, { "townofprincessannemd.gov", true }, + { "townofredriverwis.gov", true }, + { "townofreseburgwi.gov", true }, { "townofriblakewi.gov", true }, + { "townofrichfordwi.gov", true }, { "townofrichlandwi.gov", true }, { "townofrichmond-walworthwi.gov", true }, { "townofrichmondwi.gov", true }, @@ -122397,21 +140526,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "townofrudolphwi.gov", true }, { "townofrussellwi.gov", true }, { "townofruthnc.gov", true }, + { "townofrutlandwi.gov", true }, + { "townofsalemny.gov", true }, + { "townofsananselmoca.gov", true }, + { "townofsandcreekwi.gov", true }, + { "townofsasserga.gov", true }, + { "townofscottbrownwi.gov", true }, + { "townofscottsheboyganwi.gov", true }, + { "townofsenecawoodcowi.gov", true }, + { "townofsevastopolwi.gov", true }, { "townofsheboyganfallswi.gov", true }, + { "townofsheboyganwi.gov", true }, { "townofsigelwoodwi.gov", true }, + { "townofspiderlakewi.gov", true }, + { "townofstanley-wi.gov", true }, { "townofstarmandny.gov", true }, { "townofstockbridge.gov", true }, { "townofsturgeonbay-wi.gov", true }, + { "townofsumrallms.gov", true }, + { "townofsweetwater.com", true }, + { "townofsylvesterwi.gov", true }, { "townoftaycheedahwi.gov", true }, { "townoftheresawi.gov", true }, { "townofthomsonmn.gov", true }, + { "townofthorpwi.gov", true }, { "townofthreelakeswi.gov", true }, { "townoftroupsburgny.gov", true }, { "townofturtlewi.gov", true }, { "townofulyssesny.gov", true }, { "townofuniondoorwi.gov", true }, + { "townofuticawi.gov", true }, { "townofvarnamtown.gov", true }, { "townofvermontwi.gov", true }, + { "townofveteranny.gov", true }, + { "townofvinlandwi.gov", true }, { "townofwalworthwi.gov", true }, { "townofwarrensccwi.gov", true }, { "townofwatertownwi.gov", true }, @@ -122421,17 +140569,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "townofwescott-wi.gov", true }, { "townofwestfieldsaukwi.gov", true }, { "townofwestfordwi.gov", true }, + { "townofwestportin.gov", true }, + { "townofweyauwega-wi.gov", true }, + { "townofwhitewaterwi.gov", true }, + { "townofwinfieldwi.gov", true }, { "townofwinneconne.gov", true }, + { "townofwittenbergwi.gov", true }, { "townofwoodruffwi.gov", true }, { "townofwoodvillewi.gov", true }, + { "townofwordenwi.gov", true }, { "townofwrightstownwi.gov", true }, + { "townofwyomingwi.gov", true }, { "townresults.ga", true }, + { "townsendsecurity.com", true }, + { "townshendvt.gov", true }, { "townshipofthenorthshore.ca", true }, { "townswalker.com", true }, { "towolabs.com", true }, { "towsonpediatrics.com", true }, - { "towsonroofers.com", true }, - { "towtruck.website", false }, { "towywebdesigns.uk", true }, { "towzone.co.uk", true }, { "tox21.gov", true }, @@ -122439,15 +140594,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toxicip.com", true }, { "toycu.de", true }, { "toyduck.ga", true }, - { "toymagazine.com.br", true }, + { "toyfight.co", true }, { "toymania.de", true }, { "toymarket.tk", true }, - { "toyokawa-fan.com", true }, - { "toyonut.co.jp", true }, + { "toyonut.co.jp", false }, { "toyopac.com", true }, - { "toyota-gabelstapler.info", true }, { "toyota-kinenkan.com", true }, - { "toyota.com.my", true }, { "toyota.com.sg", true }, { "toyotaconnected.co.th", true }, { "toyotapartsdeal.com", true }, @@ -122455,9 +140607,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toyotasp.ru", true }, { "toyouiv.net", true }, { "toyouiv.org", true }, - { "toypoodlepet.com", true }, { "toys-robots.cf", true }, { "toys4education.com.au", true }, + { "toyscenter.it", true }, { "toyschina.cf", true }, { "toysearcher.ml", true }, { "toyshowappeal.ie", true }, @@ -122469,15 +140621,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "toystory3.ga", true }, { "toyventure.ga", true }, { "tozdev.com", true }, + { "tp-events.co.uk", true }, { "tp-genie.com", true }, - { "tp-law.jp", true }, + { "tp-properties.co.uk", true }, + { "tp-shipping.co.uk", true }, + { "tp-technology.co.uk", true }, + { "tpa.or.th", true }, { "tpala-pg.fr", true }, { "tpark.jp", true }, + { "tpbseries.com", true }, { "tpcbf.cn", true }, { "tpccf.cn", true }, { "tpcff.cn", true }, { "tpci.biz", true }, { "tpcof.cn", true }, + { "tpcrestorationllc.com", true }, { "tpdaniel.fr", true }, { "tpedu.eu", true }, { "tpedu.hk", true }, @@ -122485,113 +140643,134 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tpeducation.cn", true }, { "tpetrov.com", true }, { "tpf.hk", true }, + { "tpgozd.si", true }, { "tpiada.tk", true }, { "tpk-parma.ru", true }, { "tpk.quest", true }, - { "tpnky.com", true }, + { "tplak.com", true }, + { "tpldevsg-mythiess-dev.azurewebsites.net", true }, + { "tplprodsg-mythiess.azurewebsites.net", true }, + { "tpltestsg-mythiess-test.azurewebsites.net", true }, { "tpolemis.com", true }, { "tpp-tpc.ga", true }, - { "tpp.chat", true }, - { "tpplanning.fr", true }, { "tppleague.me", false }, { "tpr.hk", true }, { "tpress.tk", true }, { "tprk.pl", true }, { "tpro.rocks", true }, { "tproger.ru", true }, - { "tpsolution.ge", true }, - { "tptlive.ee", true }, + { "tpu.gay", true }, { "tpue.de", true }, { "tpx.com", true }, { "tqdev.com", false }, + { "tqdn.cn", true }, { "tql.plus", true }, - { "tqm1.sk", true }, { "tqnx.link", false }, + { "tqsintegration.com", true }, { "tr.search.yahoo.com", false }, { "tr0n.net", true }, - { "tr34.ro", true }, { "tr3fit.xyz", true }, { "tra-tra.be", true }, { "traas.org", true }, + { "trabaja.xyz", true }, + { "trabajadormigrante.gov", true }, { "trabajaenvitamina.cl", true }, - { "trabajarenremoto.com", true }, { "trabajarytrabajar.com", true }, { "trabajoenmx.com", false }, + { "trabajoreal.com", true }, { "trabajouniversitario.tk", true }, + { "trabalance.com", true }, { "trabbel.org", true }, { "trabia.com", true }, + { "traccxs.com", true }, { "trace.guru", true }, { "trace.moe", true }, { "traceflix.com", true }, + { "tracefy.com", true }, { "traceheatinguk.co.uk", true }, - { "tracemed.com.br", true }, + { "tracelight.io", false }, { "tracer.gg", true }, { "traceroute.guru", true }, { "traceroute.link", true }, { "traceroute.network", true }, + { "tracery.jp", true }, { "tracesteps.ga", true }, { "tracetracker.com", true }, { "tracetracker.no", true }, { "traceur-france.fr", true }, { "tracewind.top", true }, + { "traceyjsvorusphd.com", true }, { "trachtenwolf.de", true }, { "tracinglineage.com", true }, + { "tracinsurance.com", true }, { "track.plus", true }, + { "trackadblock.com", true }, { "trackballs.gq", true }, { "trackchair.com", true }, + { "trackdays4fun.com", true }, + { "trackdz.com", true }, { "tracker-knigi.gq", true }, { "tracker.com.ar", true }, { "trackerx.ga", true }, { "trackeye.dk", true }, { "trackify.tk", true }, + { "trackimo.ca", true }, { "tracking-app.tk", true }, { "tracking.best", true }, { "trackingencomendas.com", true }, + { "trackinsight.com", true }, { "tracklist4u.com", true }, { "tracknetsports.com", true }, { "trackntack.com", true }, { "trackrecord.net", true }, - { "trackrecordpro.co.uk", true }, { "trackshun.tk", true }, { "trackulo.us", true }, { "trackyourlogs.com", true }, { "tractariauto.tk", true }, { "tractarimvbcluj.ro", true }, + { "tractive.com", true }, { "tractor-pulling.fr", true }, { "tractor-pulling.tk", true }, { "tractorfan.nl", true }, { "tractorpumps.com", true }, + { "tracxn.com", true }, { "tracyhaze.net", true }, - { "tracyhonda.com", true }, - { "tracymazda.com", true }, { "tracyrobbinsking.com", true }, { "trad-n-vo.com", true }, - { "tradavenue.com", true }, + { "tradagars.se", true }, { "trade-arcade.com", true }, { "trade-bot.cf", true }, + { "trade-foods.com", true }, { "trade-platform.tk", true }, { "trade.gov", true }, + { "trade.mn", true }, { "trade247.exchange", true }, { "trade360solutions.com", true }, + { "tradeandindustrydev.com", true }, { "tradebot.cf", true }, { "tradebotcompany.ml", true }, + { "tradebuilders.com.au", true }, { "tradedesk.co.za", true }, { "tradedigital.co", true }, + { "tradeeasy.com", true }, { "tradees.com", true }, + { "tradefxp.com", true }, { "tradeinvent.co.uk", true }, + { "tradeline.vn", true }, { "tradelink.cf", true }, { "trademarkregistration-coimbatore.com", true }, { "trademen.ga", true }, + { "trademotion.com", true }, { "tradeonfx.com", true }, { "tradeplotter.com", true }, - { "traderepublic.com", true }, + { "traderfox.de", true }, { "traderinside.ga", true }, - { "traderjoe-cloud.de", true }, - { "traderoots.com", true }, + { "traderlion.com", true }, { "tradersclub.com.br", true }, { "tradersport.tk", true }, { "tradersrank.ga", true }, { "tradesafe.co.za", true }, + { "tradesecretslaw.com", true }, { "tradeshift.com", true }, { "tradeshowfreightservices.com", true }, { "tradesrenovations.ca", true }, @@ -122599,34 +140778,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tradeview.eu", true }, { "tradewithestonia.com", false }, { "tradezlist.tk", true }, + { "tradgardsmart.eu", true }, + { "tradgardsmart.se", true }, { "tradie.com", true }, { "tradik.com", true }, { "tradinews.com", true }, { "tradinews.fr", true }, { "trading-academy.cf", true }, + { "tradingdeer.io", true }, + { "tradingfacile.eu", true }, { "tradinghelper.be", true }, { "tradingtag.ga", true }, { "tradingview.com", true }, { "tradition-immobilier.com", true }, + { "tradition.ch", true }, + { "tradition.com", true }, + { "traditional.kz", true }, { "traditions.nl", true }, { "traditionskapperscollege.nl", true }, { "traditionsvivantesenimages.ch", true }, { "tradreams.com", true }, - { "traducir.win", true }, { "tradymoney.com", true }, - { "traegerbox.com", true }, + { "traegerbox.com", false }, { "traegergrills.com", true }, { "traf-bonus.tk", true }, { "trafarm.ro", true }, { "traffic.az", true }, { "trafficdirection.tk", true }, - { "trafficgazelles.com", true }, + { "trafficgazelles.com", false }, { "trafficgenerator.ga", true }, { "trafficmanager.com", true }, { "trafficmanager.ltd", true }, { "trafficmanager.xxx", true }, { "trafficmgr.net", true }, - { "trafficologyblueprint.com", true }, { "trafficpixel.tk", false }, { "trafficsafetymarketing.gov", true }, { "trafficsale.cf", true }, @@ -122644,31 +140828,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tragmi.ch", true }, { "traha.org", true }, { "trahnisoseda.tk", true }, - { "traiectum.es", true }, { "trail-alps.ch", true }, { "trail-alps.com", true }, { "trail.pink", true }, { "trailblazercommunitygroups.com", true }, + { "trailblazers.tk", true }, { "trailcloud.ink", true }, { "trailerparty.com", true }, { "trailforks.com", true }, { "trailrider.tk", true }, { "trailrighttraining.com", true }, { "trailrunbern.ch", true }, - { "trainalda.pt", true }, + { "trails-end.com", true }, + { "trainable.cf", true }, + { "trainbusferry.com", true }, { "traineeshipplaza.nl", true }, { "trainex.org", true }, { "trainhornforums.com", false }, { "trainiac.com.au", true }, - { "training.com", true }, { "trainingcentral.cf", true }, { "trainingfitstudio.fr", true }, + { "trainingflow.com", true }, { "traininghamburg.de", true }, { "traininglife.org", true }, { "trainingminds.nl", true }, { "trainingproviderresults.gov", true }, { "trainings-handschuhe-test.de", true }, { "trainingsalicante.tk", true }, + { "trainingscatalogus.nl", true }, { "trainingsecke.de", true }, { "trainingstore.fish", true }, { "trainingswiese.at", true }, @@ -122690,7 +140877,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "traintimes.lu", true }, { "traintimes.nl", true }, { "traintimes.se", true }, + { "traintoday.ca", true }, { "traintowin.tv", true }, + { "trainwiki.tk", true }, { "trainyourtribe.com.au", true }, { "traista.ru", true }, { "traitement-arthrose.fr", true }, @@ -122701,6 +140890,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trajectvideo.nl", true }, { "trakid.com", true }, { "trakkr.tk", false }, + { "trakmd.com", true }, { "trakteershop.tk", true }, { "trakteren.tk", true }, { "traktor-troubadour.tk", true }, @@ -122712,11 +140902,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tramikshop.ml", true }, { "tramitelegal.com.ar", true }, { "tramplin.tk", true }, + { "tramway.org", true }, { "tran.pw", true }, { "trance-heal.com", true }, { "trance-heal.de", true }, { "trance-heal.me", true }, { "trance-nation.tk", true }, + { "trance-zone.tk", true }, { "tranceattic.com", true }, { "tranceheal.com", true }, { "tranceheal.me", true }, @@ -122724,26 +140916,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trancendances.fr", true }, { "tranceparadise.tk", true }, { "tranceptortechnology.com", true }, - { "trancity.nl", true }, { "trandanhland.com", true }, { "trangcongnghe.com", true }, { "trangell.com", true }, { "tranhlavender.com", true }, { "tranhmonalisa.vn", true }, { "tranhvenus.com", true }, - { "tranmao.vn", true }, { "tranmerelectric.com", true }, - { "tranquilityselfcatering.co.za", true }, + { "trannysurprise.com", true }, { "tranquillity.se", true }, { "tranquillum.tk", true }, - { "tranquilpet.com", true }, { "trans-aliyans.tk", true }, + { "trans.eu", true }, + { "transacid.de", false }, { "transact-online.co.uk", true }, + { "transactpaymentsltd.com", true }, { "transaminasas.com", true }, + { "transangels.com", true }, + { "transangelsnetwork.com", true }, + { "transanglo.pl", true }, { "transappealrights.com", true }, + { "transav.ru", true }, { "transbella.com", true }, { "transcend.org", true }, { "transcendmotor.sg", true }, + { "transcendretirement.net", true }, + { "transco.com.tr", true }, { "transcoalition.net", true }, { "transcontrol.com.ua", true }, { "transcricentro.pt", true }, @@ -122753,17 +140951,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transdyne.com", true }, { "transes.com.tr", true }, { "transeshairtransplant.com", true }, + { "transfair.sh", true }, + { "transfer-sheregesh.com", true }, + { "transfer-v-sheregesh.ru", true }, + { "transfer-vsheregesh.ru", true }, { "transfer.pw", true }, + { "transfera-sheregesh.ru", true }, { "transferagent.co", true }, { "transferbags.com", true }, - { "transferbudapestairport.com", false }, { "transferistan.com", true }, + { "transfermate.com", true }, + { "transfero-sheregesh.ru", true }, + { "transfers-sheregesh.ru", true }, { "transferserver.at", true }, - { "transfersummit.com", true }, { "transferwiseturkiye.com.tr", true }, + { "transfery-sheregesh.ru", true }, { "transfigurewizard.com", true }, { "transforleren.nl", true }, { "transformaniatime.com", true }, + { "transformation.gouv.fr", true }, + { "transformersmmdb.tk", true }, { "transforumation.com", true }, { "transfurrmation.town", true }, { "transgendergedenkdag.nl", true }, @@ -122772,7 +140979,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transgendernetwerk.org", true }, { "transglobaltravel.com", true }, { "transglobelogistiques.com", true }, + { "transharder.com", true }, { "transhumanism.co.uk", true }, + { "transhumanism.com", true }, + { "transhumanism.org", true }, { "transhumanist.co.uk", true }, { "transhumanist.com", true }, { "transhumanist.net", true }, @@ -122781,21 +140991,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transinbeeld.nl", true }, { "transit.my.id", true }, { "transitables.tk", true }, - { "transitenergy.com", true }, + { "transitllc.ru", true }, { "transito.tk", true }, { "transitownplaza.com", true }, { "transitpoint.us", true }, + { "translab.ir", true }, { "translate-polish.com", true }, { "translate.googleapis.com", true }, + { "translatedict.com", true }, + { "translation-services.ga", true }, + { "translation.ca", true }, { "translationge.com", true }, + { "translations.com", true }, { "translationsfirm.tk", true }, + { "translationsnz.com", true }, { "translatorall.tk", true }, { "translatorglobal.tk", true }, { "translatoruk.co.uk", false }, { "transliar.com.br", true }, + { "translink.com.au", true }, + { "translit-net.tk", true }, + { "translit.ga", true }, { "translit.ru", true }, + { "transliterature.org", true }, { "transmarttouring.com", true }, - { "transmisjeonline.pl", true }, { "transmitit.pl", true }, { "transmitrecordings.com", true }, { "transmoni.io", true }, @@ -122804,28 +141023,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "transnexus.com", true }, { "transon.tk", true }, { "transpak-cn.com", true }, - { "transparency.org.pk", true }, + { "transparency.cf", true }, { "transparencyinadmissions.org", true }, { "transparencynj.com", true }, { "transparent.cf", true }, - { "transparentpng.com", false }, + { "transparentpng.com", true }, + { "transperfect.com", true }, { "transport-gura-portitei.com", true }, { "transport-gura-portitei.contact", true }, { "transporta.it", true }, { "transportdebateauxmp.ca", true }, { "transporterlock.com", false }, - { "transportesdye.cl", true }, + { "transporteselsol.com", true }, + { "transportnews.tk", true }, + { "transporttalent.com", true }, + { "transsensual.com", true }, { "transservice.net.ua", true }, { "transsexualpantyhose.com", true }, + { "transsrit.tk", true }, { "transtaboo.com", true }, { "transtrack.net", true }, { "transtur.tk", true }, { "transumption.com", true }, + { "transvault.com", true }, { "transwank.com", true }, + { "transwestern.com", true }, + { "transwestern.net", true }, { "trantrongtri.info", true }, { "tranvia.info", true }, { "tranzact.net", true }, + { "tranzron.ga", true }, + { "trapay.net", true }, + { "trapcall.com", true }, + { "trapichelaesperanza.com", true }, { "trapkitchen.ml", true }, + { "trappednerve.org", true }, { "trappersoutfitters.tk", true }, { "traproulette.com", true }, { "trapsdirect.com", true }, @@ -122834,72 +141066,80 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trapsexy.org", true }, { "trapz.xyz", true }, { "trarch.com", true }, + { "trasandino.tk", true }, { "trasatsatelital.com.ar", true }, { "trash2treasurecreations.co.za", true }, { "trashcanheroes.tk", true }, { "trashcraft.tk", true }, { "trashexpert.ru", true }, + { "trashmail.com", true }, { "trashnothing.com", true }, { "trashpanda.website", true }, { "trashwagon.club", true }, + { "trashy-gypsy.com", true }, + { "trashylingerie.ga", true }, { "trask.no", true }, { "traslocare.roma.it", true }, { "traslocatore.roma.it", true }, { "traslochi-trasporti-facchinaggio.it", true }, { "traslochi.napoli.it", true }, + { "traslochiinternazionali.it", true }, { "trasloco.milano.it", true }, { "trasloedil.it", true }, { "trasportatori.it", true }, { "trasportoambulanzaprivata.it", true }, { "trastornoevitacion.com", true }, { "trastornolimite.com", true }, - { "trata.in", true }, { "tratamentoparacelulite.net", true }, - { "tratamientodelvitiligo.es", true }, - { "tratho.com.br", true }, + { "tratt.net", true }, { "trattamenti.biz", true }, { "trattamento-cotto.it", true }, { "trattamentocotto.roma.it", true }, { "trauerbegleitung-kudla.de", true }, { "trauertexte.info", true }, { "traumaberatung-lindner.de", true }, + { "traumahealing.com", true }, { "traumarecoverysupport.com", true }, { "traumfaenger.tk", true }, { "traumobjekte.com", true }, { "traumobjekte.info", true }, { "traumschwingen.de", true }, { "traumtrauringe.de", true }, - { "traumwerker.com", true }, { "traut.cloud", true }, { "travador.com", true }, { "trave.africa", true }, - { "travel-and-cache.de", true }, + { "travel-and-cache.de", false }, + { "travel-cube.ml", true }, { "travel-dealz.de", true }, { "travel-rus-club.tk", true }, + { "travel-to-cuba.tk", true }, { "travel-trek.tk", true }, - { "travel.co.za", false }, + { "travel101.tk", true }, { "travel2macedonia.com", true }, { "travel2macedonia.com.mk", true }, { "travel2macedonia.mk", true }, + { "travel2next.com", true }, + { "travel2you.ru", true }, { "travel365.it", true }, { "travel4history.nl", true }, + { "travel4news.at", true }, { "traveladdiction.tk", true }, { "traveladventure.ml", true }, { "travelamm.com", true }, { "travelanchor.ga", true }, { "travelandtourism.tk", true }, - { "travelandtourismy.us", true }, { "travelarmenia.org", true }, { "travelaround.tk", true }, { "travelassist.us.com", true }, { "travelastscom.ga", true }, { "travelback.ga", true }, - { "travelbags.be", true }, - { "travelbags.nl", true }, + { "travelbangladesh.ga", true }, + { "travelbiz.cf", true }, { "travelbiz.ga", true }, { "travelbiz.gq", true }, { "travelbuddiesperu.com", true }, { "travelbunny.ga", true }, + { "travelbyprice.com", true }, { "travelcellar.ga", true }, { "travelcenter.tk", true }, { "travelchannel.ml", true }, @@ -122915,11 +141155,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travelcrown.ga", true }, { "traveldir.ga", true }, { "traveldodge.ga", true }, + { "traveldoo.com", true }, { "traveldragon.ga", true }, { "travelecho.ga", true }, { "traveleets.com", true }, { "travelepoch.com", true }, { "travelera.tk", true }, + { "travelerspress.com", true }, { "travelersuniverse.com", true }, { "travelescape.tk", true }, { "traveleurope.ml", true }, @@ -122931,41 +141173,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travelfiesta.ga", true }, { "travelfoot.com", true }, { "travelfriend.tk", true }, + { "travelfusion.com", true }, { "travelgang.ga", true }, { "travelgirlsclub.com", true }, { "travelglamour.ga", true }, { "travelgratis.ga", true }, { "travelhands.ga", true }, { "travelholicworld.com", true }, - { "travelhub.ie", true }, - { "travelhuge.com", false }, + { "travelhoppers.com", true }, { "travelhusky.ga", true }, { "traveling-thailand.info", true }, { "travelingagency.tk", true }, + { "travelingbagsmke.com", false }, { "travelingthevortex.com", true }, { "travelinsurance.co.nz", true }, { "travelinsurance.ga", true }, - { "travelix.io", true }, + { "travelinsured.com", true }, + { "travelist.co.nz", true }, { "traveljunkie.tips", true }, { "travelkatta.in", true }, { "travelknowledge.org", true }, { "travellegacy.ga", true }, { "travellets.tk", true }, + { "travellifetoday.com", true }, { "travellinginmorocco.com", true }, + { "travellingplanetearth.com", true }, + { "travellings.cn", true }, { "travellingwithflipflops.com", true }, { "travellinks.tk", true }, { "travellittle.ga", true }, { "travellovers.fr", true }, + { "travelmap.net", true }, { "travelmate.cf", true }, { "travelmember.ga", true }, { "travelmexico42.com", true }, + { "travelmindsets.com", true }, { "travelmontenegro.tk", true }, { "travelnano.ga", true }, { "travelnatural.ga", true }, { "travelnetwork.tk", true }, { "travelnews.cf", true }, { "travelni.com", true }, + { "travelnotoria.com", true }, { "travelnumber.ga", true }, + { "travelodge.co.uk", true }, { "traveloffline.ga", true }, { "travelogue.jp", true }, { "travelomega.ga", true }, @@ -122993,9 +141244,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travelraven.ga", true }, { "travelrefund.com", true }, { "travelreviews.tk", true }, - { "travelround.io", true }, - { "travelservicesportal.com", true }, - { "travelsets.com", true }, + { "travelriny.com", true }, { "travelshelper.com", true }, { "travelshopbooking.com", true }, { "travelsignature.ga", true }, @@ -123012,15 +141261,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travelsurprise.ga", true }, { "traveltains.com", true }, { "traveltalk.tk", true }, - { "travelthisweekend.com", true }, + { "travelthing.io", true }, { "travelthunder.ga", true }, + { "traveltimeagency.com", true }, { "traveltomachupichu.com", true }, { "traveltourist.tk", true }, { "traveltovietnam.ga", true }, + { "traveltruster.com", true }, { "travelturbo.ga", true }, { "travelultra.ga", true }, { "travelunicorns.com", true }, { "travelunique.ga", true }, + { "travelup.com", true }, { "travelurban.ga", true }, { "travelus.nl", true }, { "travelvacancy.tk", true }, @@ -123028,33 +141280,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "travelvisit.cf", true }, { "travelways.ml", true }, { "travelwithbender.com", true }, - { "travely.nl", true }, + { "travelwithjack.com", true }, { "travelzoneshop.com", true }, + { "traverse.com.ua", false }, { "travi.org", true }, { "travianbattleplanner.com", true }, { "travin.tk", true }, { "travis.nl", true }, + { "traviscoesd1tx.gov", true }, { "travisf.net", true }, + { "travisflix.com", true }, { "travisforte.io", true }, { "travisfranck.com", true }, { "travishenning.com", true }, + { "travislord.xyz", true }, { "travkolyl.gq", true }, { "travler.net", true }, { "travnik24.tk", true }, { "travotion.com", true }, { "travuscka.ru", true }, + { "trawox.com", true }, + { "traws.cymru", true }, + { "traxpayroll.com", true }, { "traxstage.com", true }, { "tray.io", false }, { "trayinc.com", true }, + { "trayport.com", true }, + { "traza.cl", true }, { "trazodoneonline.tk", true }, { "trazodononline.gq", true }, { "trazs.com", true }, { "trbanka.com", true }, { "trcollaborative.com", true }, + { "trcont.com", true }, + { "trdepoist.net", true }, + { "treadmillrepair.co.nz", true }, { "treaslockbox.gov", true }, + { "treasureboxgreetings.com", true }, { "treasureislandbeads.ga", true }, { "treasurejewelry.shop", false }, + { "treasuremountainmining.com", true }, { "treasuretrooperguide.tk", true }, + { "treasury.gov.lk", true }, { "treasurydirect.gov", true }, { "treasuryhunt.gov", true }, { "treasuryofgreatchildrensbooks.com", true }, @@ -123064,29 +141331,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trebek.club", true }, { "trebilfoundationsystems.com", true }, { "trebnie.nl", true }, + { "trecebits.com", true }, + { "trecobox.com.br", true }, { "tredegar.com", true }, { "tredegarsurfaceprotection.com", true }, { "tredto.com", true }, { "tree.gdn", true }, { "tree0.xyz", true }, { "treebaglia.xyz", true }, + { "treecycle.com.au", true }, + { "treedoctornearme.com", true }, { "treefarms.net.au", true }, - { "treefeelingsandton.co.za", true }, - { "treefellingcenturion.co.za", true }, { "treehorn.nl", true }, { "treehousebydesign.com", true }, { "treehouseresort.nl", true }, + { "treeliss.com.br", true }, { "treemadeiras.com.br", true }, + { "treeremovalfourways.co.za", true }, { "treeremovalsboksburg.co.za", true }, - { "treeremovalsgermiston.co.za", true }, { "treeremovalspretoria.co.za", true }, + { "treesonthemove.com", true }, { "treestarmarketing.com", true }, { "treevectors.com", true }, - { "treeworkbyjtec.com", true }, { "treexy.com", true }, { "treezone.net", true }, - { "trefle.io", true }, { "trefpuntdemeent.nl", true }, + { "treier.xyz", true }, { "treinmagazine.be", true }, { "treinmagazine.nl", true }, { "treinonerd.com", true }, @@ -123099,24 +141369,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trekkertrek.tk", true }, { "trekkertrekharpel.tk", true }, { "trekking-friends.ch", true }, + { "trekkinglab.org", true }, { "trekonbh.com", true }, { "trekosecia.com.br", true }, { "trekscaper.tk", true }, - { "trell.co.in", true }, + { "trelki.de", true }, + { "trelleborg.se", true }, + { "trelliscompany.org", true }, { "trembler.org", true }, { "treml-sturm.com", true }, { "tremol-spedition.com", true }, { "tremontil.gov", true }, { "tremors.tk", true }, { "trempcountywi.gov", true }, + { "trenchapps.com", true }, { "trend-calendar.com", true }, { "trend-shop.ga", true }, { "trendegypt.ml", true }, + { "trendier.com.co", true }, + { "trendier.mx", true }, { "trendingaffords.com", true }, { "trendingdeals.ga", true }, { "trendingeducation.tk", true }, { "trendingknow.tk", true }, + { "trendingnewswala.online", true }, { "trendingstory.tk", true }, + { "trendingxxl.nl", true }, { "trendkraft.de", true }, { "trendme.ga", true }, { "trendnews.cf", true }, @@ -123127,39 +141405,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trendocracy.gq", true }, { "trendocracy.ml", true }, { "trendpanel.tk", true }, - { "trendpara.net", true }, { "trendparty.net", true }, + { "trendpie.com", true }, { "trendreportdeals.com", true }, { "trends-news.tk", true }, { "trends2day.com", true }, - { "trendsettersre.com", true }, - { "trendsuites.co", true }, - { "trendtesettur.com", true }, + { "trendsce.com.br", true }, + { "trendtesettur.com", false }, { "trendus.no", true }, { "trendware.de", true }, { "trendycrowds.com", true }, { "trendydips.com", true }, { "trendyindi.com", true }, - { "trendykids.cz", true }, + { "trendyolgo.com", true }, { "trendzilla.ga", true }, { "trenorario.it", true }, { "trenta.fr", true }, - { "trentinogenealogy.com", true }, { "trentonmakesnews.com", true }, { "trentonoh.gov", true }, { "trentotoday.it", true }, { "trenujskutecznie.com", true }, { "trenztec.ml", true }, - { "trepare.com", false }, { "tresen-demo.com", true }, + { "treshermanasshop.com", true }, { "tresmaistres.com.br", true }, { "tresor.it", true }, { "tresorit.com", true }, - { "tresorsecurity.com", true }, - { "trespassing.com", true }, + { "tresoro.at", true }, + { "tresoro.de", true }, { "trespedia.com", true }, { "tresredatores.tk", true }, { "tressallure.com", true }, + { "tresscabelos.com.br", true }, { "tretail.net", true }, { "tretinoin.gq", true }, { "treurtransport.tk", true }, @@ -123169,16 +141446,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trevorkay.tk", true }, { "trevormarron.co.uk", true }, { "trevsanders.co.uk", true }, - { "trewdistributors.com", true }, { "trexweb.tk", true }, - { "trez.wtf", true }, { "trezor.io", true }, { "trezy.me", true }, { "trezy.net", true }, + { "trfmn.gov", true }, { "trhastane.com", true }, { "trhknih.cz", true }, { "tri.gg", true }, - { "triage.ai", true }, + { "triad.earth", true }, + { "triadtool.com", true }, { "triage.clinic", true }, { "triage.com", true }, { "triage.md", true }, @@ -123187,9 +141464,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trial-server.tk", true }, { "trialandsuccess.nl", true }, { "trialbyfire.tk", true }, - { "trialcentralnet.com", true }, { "trialmaaskant.tk", true }, { "trials.tk", true }, + { "trialweb.com.br", true }, { "triangela.com", true }, { "triangela.se", true }, { "triangle-energie.com", true }, @@ -123197,19 +141474,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trianglelawngames.com", true }, { "trianglepwh.com", true }, { "trianglewaverecords.tk", true }, + { "triathlon.org", true }, + { "trib.com", true }, { "tribac.de", true }, { "tribaldos.com", false }, { "tribaljusticeandsafety.gov", true }, { "tribalwarsstyles.tk", true }, { "tribalzone.tk", true }, { "tribe.rs", true }, + { "tribeca-it.com", true }, { "tribecalawsuitloans.com", true }, { "tribefanaticsunited.tk", true }, { "tribesofneurot.tk", true }, + { "tribetokes.com", true }, { "tribetrails.com", true }, { "tribinary.tk", true }, { "tribistovo.tk", true }, - { "tribly.de", true }, { "tribunatv.ml", true }, { "tribunesia.ga", true }, { "tribut.de", true }, @@ -123223,10 +141503,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tricare.mil", true }, { "tricefy4.com", true }, { "tricetirisad.me", true }, + { "tricherenligne.com", true }, { "triciaree.com", true }, { "tricityhelpline.com", true }, { "trickedguys.com", true }, { "trickle.works", true }, + { "tricksforgreeks.com", true }, { "trico-pigmentazione.it", true }, { "tricolortotal.tk", true }, { "tricordmedia.ca", true }, @@ -123236,6 +141518,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tridena.com", true }, { "trident-online.de", true }, { "trident1000logoi.gr", true }, + { "tridentdiagnostics.com", true }, + { "tridentfreightinc.com", true }, { "tridentmedia.gq", true }, { "tridnice.eu", true }, { "triedandtruebytrista.com", true }, @@ -123248,11 +141532,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trifence.eu", true }, { "trifence.net", true }, { "trifence.org", true }, + { "trifiro.it", true }, { "trigardon-rg.de", true }, { "trigate.io", true }, { "triggeredpaintz.com", true }, { "triggertraders.com", true }, - { "trigi.net", true }, + { "trigirlpainting.com", true }, + { "triglovian-clades.com", true }, { "trigraph.net", true }, { "trigueros.tk", true }, { "trigular.de", true }, @@ -123263,31 +141549,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trik.es", false }, { "triker.tk", true }, { "trikeweb.com", true }, - { "trilithsolutions.com", true }, + { "trikuj.cz", true }, { "trillian.im", true }, + { "trilliux.me", true }, { "trilogyforce.com", false }, { "trilogymp.com", true }, { "trim21.cn", true }, { "trimage.org", true }, { "trimarix.de", true }, + { "trimatrikbd.com", false }, + { "trimblenetworks.com.au", true }, + { "trimbletl.com", false }, { "trimental.de", true }, + { "trimill.xyz", true }, { "trimsalon.tk", true }, { "trimsalonelst.nl", true }, { "trimtone.com", true }, - { "trimyourbushforallah.com", true }, + { "trimyourbushforallah.com", false }, { "trinary.ca", false }, { "trinary.tk", true }, { "trindonball.com", true }, { "trineco.cloud", true }, { "trineco.com", true }, { "trineco.fi", true }, + { "tringle.org", true }, + { "trinhhoangtien.vn", true }, { "trinhtrongson.tk", true }, { "trini.tk", true }, - { "trinirawk.tk", true }, { "trinitasgyor.hu", true }, { "trinitatis-leipzig.de", true }, { "trinitatiskindergarten.de", true }, { "trinitatiskirche-leipzig.de", true }, + { "trinity.fr.eu.org", true }, + { "trinity.one", true }, { "trinitycore.org", true }, { "trinitycorporateservices.com", true }, { "trinityny.org", true }, @@ -123297,6 +141591,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trinityyardgreetings.com", true }, { "trink-und-partyspiele.de", true }, { "trinnes.net", true }, + { "trintocpenalcu.com", true }, { "trio.online", true }, { "triollo-rural.tk", true }, { "triomedspa.com", true }, @@ -123310,32 +141605,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "triperapp.com", true }, { "tripguide.is", true }, { "tripisland.tk", true }, - { "triplapalma.com", true }, + { "triple1.net", true }, + { "tripleblossom.com", true }, + { "triplecrownsports.com", true }, { "triplefork.com.ua", true }, { "triplejprints.com", true }, { "triplekeys.net", true }, { "tripleone.co.uk", true }, - { "tripleone.uk", true }, - { "triplepointliquidity.com", true }, { "triplesixdesigns.com", true }, { "triplethreatband.tk", true }, { "triplevision.nl", true }, { "triplicate.gq", true }, - { "triploqal.com", true }, { "tripmakery.com", true }, - { "tripoffice.com", true }, - { "tripoffice.pl", true }, + { "tripoli.org", true }, { "tripolinews.tk", true }, { "tripomanija.tk", true }, { "tripout.tech", true }, + { "tripozo.com", true }, { "tripp.xyz", true }, { "trippati.com", true }, + { "tripport.com.do", true }, { "tripsided.com", true }, - { "tripsinc.com", true }, + { "tripspoint.com", true }, { "tripsweet.com", true }, { "triptravels.tk", true }, { "tripwire.io", true }, - { "trisaranasejati.com", true }, { "trisect.uk", true }, { "trish-mcevoy.ru", true }, { "trisha.tk", true }, @@ -123343,35 +141637,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trissiethehusky.rocks", true }, { "tristan.moe", true }, { "tristanfarkas.one", true }, + { "tristatechess.com", true }, { "trit.pro", true }, { "tritium.cf", true }, { "tritiumdisposal.com", true }, { "triumc.org", true }, - { "trivarfertilizer.com", true }, + { "triumph-duesseldorf.com", true }, + { "triumph-gera.de", true }, + { "triumph-hannover.de", true }, + { "triumph-rheinhessen.de", true }, + { "triumph-schongau.de", true }, + { "triumph-stuttgart.de", true }, { "trixiebooru.org", true }, { "trixietainted.net", true }, + { "trixy.com.br", true }, { "triz.co.uk", false }, - { "trizen.xyz", true }, - { "trizone.com.au", true }, + { "trizettoprovider.com", true }, { "trkhosting.ga", true }, + { "trkmakine.com.tr", true }, { "trkpuls.tk", true }, { "trmgo.de", true }, { "troc.co.il", true }, + { "trocaire.org", true }, { "trochoi.net", true }, { "trockendock.ch", true }, { "trodat.cf", true }, { "trodniescis.gq", true }, { "troedel-trolle.de", true }, { "troedelhannes.at", true }, - { "troee.org", true }, { "trofeosylogros.com", true }, { "trogloditas.tk", true }, { "troi.de", true }, { "troiaconsultoria.com.br", true }, { "troianet.com.br", true }, - { "troisiemeoeil.digital", true }, { "trojanchronicles.tk", true }, { "trojanherring.com", true }, + { "trojanrecords.com", true }, { "trok.co.il", true }, { "trolebusesdevalparaiso.tk", true }, { "troll-gaming.tk", true }, @@ -123398,8 +141699,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trollscave.xyz", true }, { "trom.tf", true }, { "trommelwirbel.com", true }, - { "trondelan.no", true }, + { "trommstone.de", true }, { "trongkhanh.com", true }, + { "tronglu.com", true }, { "tronika.no", true }, { "tronlaserarena.cz", true }, { "tronmeo.com", true }, @@ -123415,15 +141717,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tronxh.me", true }, { "troomcafe.com", true }, { "troopaid.info", true }, + { "troopers.de", true }, { "trophcomplewin.ml", true }, { "trophy-discount.com", true }, { "trophykoi.tk", true }, { "trophyshopinc.com", true }, { "tropicalf.com", true }, + { "tropicalhurricanetracker.com", true }, { "tropicalislands.tk", true }, + { "tropicalstandard.com", true }, { "tropicalticket.cf", true }, { "tropicalticket.ml", true }, { "tropicaltravelco.com", true }, + { "tropicpet.vn", true }, { "tropikdeniz.com.tr", true }, { "tropiki.tk", true }, { "tropiweb.tk", true }, @@ -123449,10 +141755,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trousers.co.uk", true }, { "trouvenet.tk", true }, { "trouver-son-chemin.com", true }, + { "trouvetonbusiness.com", true }, + { "trouvetonplancul.fr", true }, { "trouvez.tk", true }, { "trouvons.org", true }, - { "trouweninoverijssel.nl", true }, + { "trouw.nl", true }, { "trovaprezzi.it", true }, + { "trovas.ch", true }, + { "trove.com", true }, { "troxal.com", true }, { "troyanos.uy", true }, { "troyfawkes.com", true }, @@ -123462,12 +141772,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "troyhuntsucks.com", true }, { "troyjanda.com", true }, { "troykao.com", true }, + { "troytn.gov", true }, + { "troytwpdelawareoh.gov", true }, + { "troywalworthwi.gov", true }, { "troywistcroix.gov", true }, { "trpa.gov", true }, - { "trpl.host", true }, { "trs.tn", true }, + { "trtadalafilone.com", true }, + { "trtadalafilone.net", true }, { "trtasarim.tk", true }, { "tru.ltd", true }, + { "truasset.com", true }, { "trubapro.com", false }, { "trubmet.tk", true }, { "trubos.com.ua", true }, @@ -123475,11 +141790,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trucchibellezza.com", true }, { "trucchibellezza.it", true }, { "truckcord.com", true }, + { "truckdeal.com.ph", true }, + { "truckercheckin.com", true }, { "truckerjobusa.com", true }, { "truckersdatabase.cf", true }, { "truckersmp.com", true }, { "truckersworld.tk", true }, { "truckingks.gov", true }, + { "truckkss.com", true }, { "truckscout24.at", true }, { "truckscout24.be", true }, { "truckscout24.bg", true }, @@ -123502,24 +141820,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "truckscout24.se", true }, { "truckscout24.si", true }, { "truckshina-plus.com.ua", true }, + { "truckspring.com", true }, + { "trucockpit.ch", true }, + { "trucockpit.com", true }, { "trucosparaelbruto.tk", true }, + { "trucoswindows.net", true }, + { "trudicollus.com", true }, { "trudyblackcrow.tk", true }, { "true-colors.tk", true }, { "true-itk.de", true }, { "trueachievements.com", true }, + { "trueamateurs.com", true }, { "trueasia.ga", true }, + { "truebarbershopinc.com", true }, + { "trueccu.com", true }, + { "truechimer.com", true }, { "truecircumcision.tk", true }, { "truecosmos.com", true }, + { "truecrimedaily.com", true }, { "truedarkness.tk", true }, { "trueduality.net", true }, + { "trueflowplumbing.com", true }, + { "trueformroofing.co.nz", true }, + { "truegether.com", true }, { "truegunvalue.com", true }, { "truehealth.tk", true }, - { "truehealthreport.com", false }, { "truekey.com", true }, + { "truelist.co", true }, { "truelovesakuya.info", true }, - { "truemedieval.cz", true }, { "trueminecraft.com", true }, - { "truenet.xyz", true }, { "truenorthartcollektive.com", true }, { "truenorthseedbank.com", true }, { "truentumvet.it", true }, @@ -123578,9 +141907,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "truepartnertechnology.com", true }, { "truepartnertechnology.nl", true }, { "truepartnertechnology.sg", true }, - { "truepestcontrol.com.au", true }, { "truereligionjeanstore.tk", true }, { "truerizm.ru", true }, + { "truescreen.io", true }, { "trueseeing.com", true }, { "truessl.shop", true }, { "truesteamachievements.com", true }, @@ -123591,6 +141920,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trueweb.es", true }, { "truewinter.net", true }, { "truework.com", true }, + { "trueworlds.net", true }, + { "truffe.uk", true }, { "trufflemonkey.co.uk", true }, { "trufflepig-forensics.com", true }, { "truhlarstvi-fise.cz", true }, @@ -123609,10 +141940,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trumptragedy.com", true }, { "trumptragic.com", true }, { "trumpwhitehouse.gov", true }, + { "trumtruyen.vn", true }, { "truncus-encephali.co.uk", true }, { "trundr.com", true }, { "trunix-forum.tk", true }, { "trunk-show.net", true }, + { "truong.fi", true }, + { "truonganhdecor.com", true }, { "truongnguyen.live", true }, { "truongthanhaudio.com", true }, { "truqu.com", true }, @@ -123626,65 +141960,69 @@ static const nsSTSPreload kSTSPreloadList[] = { { "trussgenius.com", true }, { "trussville.gov", true }, { "trust-btc.ml", true }, + { "trust-s.ru", true }, { "trust-ted.co.uk", true }, + { "trust.com", true }, { "trust.zone", true }, { "trust2protect.de", true }, { "trustarc.com", true }, + { "trustarts.org", true }, { "trustcert.net", true }, { "trustcert.org", true }, { "trustednetworks.nl", true }, { "trustedpropertymanagement.net", true }, { "trustedtoolbox.com", true }, { "trustee.deals", true }, - { "trustees.org", true }, { "trusthook.tk", true }, { "trusthub.com", true }, + { "trustmymail.org", true }, { "trustnet.co.il", false }, { "trustology.io", true }, + { "trustpixel.com", true }, + { "trustpoint.one", true }, + { "trustpost.xyz", true }, { "trustreview.tk", true }, { "trustserv.de", true }, { "trustswiftly.com", true }, { "trustvox.com.br", true }, { "trustycloud.net", true }, + { "trustzone.com", true }, { "truten.tk", true }, - { "truth.onl", true }, + { "truth.com", true }, { "truth.tk", true }, { "truthdancer.com", true }, { "truthmessages.pw", true }, + { "truthre.org", true }, { "truthsayer.tk", true }, { "truthsocial.com", true }, + { "trutrip.co", true }, { "truvayangin.tk", true }, - { "truvisory.com", true }, { "trux.tk", true }, { "truxton.tk", true }, + { "truyen-hentai.co.uk", true }, { "truyen-hentai.com", true }, { "truyen-hentai.de", true }, { "truyen-hentai.fr", true }, { "truyen-hentai.ru", true }, { "truyenfull.vn", true }, { "truyenkiemhiep.com.vn", true }, - { "truyenmoii.com", true }, { "truyentienhiep.com.vn", true }, + { "trveled.com", true }, { "trw-reseller.com", true }, { "trxnews.today", true }, { "try2admin.pw", true }, { "try2hack.it", true }, - { "try2services.at", true }, - { "try2services.de", true }, - { "try2services.vc", true }, { "trybabyschoice.com", true }, { "trybooking.com", true }, { "trycaviar.com", true }, { "trychameleon.com", true }, + { "tryckpa.se", true }, { "trydoggo.com", true }, { "tryfabulousdiet.com", true }, { "tryfabulousskincream.com", true }, { "tryfabulousskinserum.com", true }, { "tryfrontline.cloud", true }, - { "tryfunky.com", true }, - { "tryhard.cz", true }, { "tryhexadecimal.com", true }, - { "tryin.cz", true }, { "tryingtotakeoversweden.tk", true }, { "tryingtotakeovertheworld.tk", true }, { "tryitonline.net", true }, @@ -123706,58 +142044,76 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tryptamine.tk", true }, { "tryramp.com", true }, { "tryreason.com", true }, + { "tryrebooting.tech", true }, + { "tryrfsfirst.co.uk", true }, + { "trystagency.com", true }, { "tryti.me", true }, { "trytivi.com", true }, { "tryupdates.com", true }, { "trywesayyes.com", true }, { "trz.cz", true }, + { "ts-farm.ru", true }, { "ts-folienmontage.de", true }, { "ts-pro-consulting.de", true }, { "ts-projects.tk", true }, { "ts-public.tk", true }, - { "ts-publishers.com", true }, { "ts3-legenda.tech", true }, { "ts3.ink", false }, { "ts3frei.eu", true }, + { "ts4rent.eu", true }, { "ts5server.eu", true }, { "tsacareer.com", true }, { "tsacasa.com", true }, { "tsacbttest.com", true }, { "tsachs.eu", true }, { "tsacloud.ml", true }, + { "tsahf.com", true }, { "tsai.com.de", true }, { "tsakanakis.tk", true }, { "tsaro.io", true }, { "tsatestprep.com", true }, + { "tsatsalashvili.com", true }, + { "tsb.co.uk", true }, + { "tsbg.com", true }, + { "tsbraz.com", true }, + { "tsbraz.com.br", true }, + { "tsc.gov", true }, { "tsc.tax", true }, { "tscampus.online", true }, { "tschuermans.be", false }, { "tscinsurance.com", true }, - { "tscripts.com", true }, { "tsedryk.ca", true }, { "tsem.bt", true }, { "tseng.dedyn.io", true }, { "tsentrobuv.tk", true }, { "tsenv.net", true }, + { "tsfempleos.com", true }, + { "tsg0o0.com", true }, + { "tsg0o0.net", true }, + { "tsgbcs.org", true }, { "tsgbit.net", true }, - { "tsgkc1.com", true }, + { "tsgserviciosglobales.com", true }, { "tshirtgenerator.ga", true }, - { "tshirtmemoryquilts.com", true }, { "tshirtscapetown.com", true }, { "tshirtsforsale.co.za", true }, + { "tsia.com", true }, + { "tsico.com", true }, { "tsicons.com", true }, { "tsig.nl", true }, { "tsigaradiko.com", true }, + { "tsimg.space", true }, { "tsiolakisfurs.com", true }, { "tsironis-olivenoel.de", true }, { "tsja.tk", true }, { "tsk.ovh", true }, + { "tskikoh.com", true }, { "tskimwagner.com", true }, { "tsla.nu", true }, { "tslcontractors.co.uk", true }, + { "tsmasseur.com", true }, { "tsmgroup2.biz", true }, { "tsmost.cz", true }, - { "tsng.co.jp", true }, + { "tsp.gov", true }, { "tspdrits.xyz", true }, { "tsproesasac.com", true }, { "tsr.best", true }, @@ -123769,7 +142125,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tsu.re", true }, { "tsueri.cloud", true }, { "tsukhani.com", true }, - { "tsuki.link", true }, + { "tsukikoh.com", true }, + { "tsukikoh.jp", true }, { "tsukuba-it.net", true }, { "tsukuba.style", false }, { "tsumegumi.com", true }, @@ -123787,40 +142144,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tsurimap.com", true }, { "tsuruhime.tk", true }, { "tsutawal.com", true }, + { "tsutaya-ai.com", true }, { "tsutsumi-kogyo.jp", true }, { "tsuyuzakihiroyuki.com", true }, { "tsv-1894.de", false }, { "tsv-hittfeld.de", true }, - { "tsvit.com.ua", true }, + { "tsvit.com.ua", false }, + { "tsw.ovh", true }, { "tsxxlangel.com", true }, { "tsybanov.com", true }, { "tt-aepfingen.tk", true }, - { "tt-bentley.com", true }, { "tt-hardware.com", true }, - { "tt0766.com", true }, - { "tt0966.com", true }, - { "tt2866.com", true }, - { "tt2966.com", true }, + { "tt.gt", true }, + { "tt0766.com", false }, + { "tt0966.com", false }, + { "tt2866.com", false }, + { "tt2966.com", false }, { "tt3666.com", true }, - { "tt3699.com", true }, - { "tt3766.com", true }, - { "tt3999.com", true }, + { "tt3699.com", false }, + { "tt3766.com", false }, + { "tt3999.com", false }, { "tt5197.co", true }, { "tt6729.co", true }, { "tt6729.com", true }, { "tt6957.co", true }, - { "tt7199.com", true }, - { "tt7299.com", true }, - { "tt7399.com", true }, - { "tt8166.com", true }, - { "tt8266.com", true }, - { "tt8366.com", true }, + { "tt7199.com", false }, + { "tt7299.com", false }, + { "tt7399.com", false }, + { "tt8166.com", false }, + { "tt8266.com", false }, + { "tt8366.com", false }, { "tt9297.co", true }, { "tt9397.com", false }, { "tt9721.com", true }, { "tt9728.co", true }, { "tt9799.com", true }, { "ttb.gov", true }, + { "ttbonline.gov", true }, { "ttc-birkenfeld.de", true }, { "ttcak.ddns.net", true }, { "ttcf.ca", true }, @@ -123828,35 +142188,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ttclub.fr", true }, { "ttdrive.ru", true }, { "ttfin.ch", true }, + { "tthomes.vn", true }, { "ttill.de", true }, - { "ttja.ee", true }, + { "ttkiel.de", true }, { "ttlet.com", true }, { "ttlg.io", true }, { "ttluoli.com", true }, + { "ttm.jp", true }, { "ttnmpls.org", true }, - { "ttouch4dich.de", true }, { "ttp-shop.com.ua", true }, { "ttpwned.com", true }, { "ttr-home.com", true }, { "ttr3.eu", true }, { "ttrade.ga", true }, + { "ttrecms.com", true }, { "tts-assessments.com", true }, { "tts.co.nz", false }, + { "ttshapn.org", true }, { "ttsoft.pl", true }, { "ttspttsp.com", true }, { "ttsteel.co", true }, { "ttt-networks.com", true }, { "ttug.co.uk", true }, + { "ttunda.com", true }, { "ttuwiki.ee", true }, { "ttuwiki.org", true }, { "ttv-bernisse80.tk", true }, - { "ttwoee.com", true }, { "ttwtrader.com", true }, { "tty.space", true }, { "tty1.net", true }, { "ttyystudio.com", true }, - { "tu-immoprojekt.at", true }, + { "tu-muenchen.de", true }, { "tu6.pm", true }, + { "tuacar.pt", true }, + { "tuaflor.com.br", true }, { "tualiadaenlimpieza.com", true }, { "tuamipartanna.it", true }, { "tuang-tuang.com", true }, @@ -123864,23 +142229,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tubach.org", true }, { "tubanten.nl", true }, { "tubao.com.br", true }, + { "tubator.com", true }, { "tube.tools", true }, + { "tube8vip.com", true }, { "tubebegana.com", true }, { "tubedesire.com", true }, + { "tubehall.com", true }, { "tubejack.nl", true }, { "tubeju.com", true }, + { "tubemilf.com", true }, + { "tubeporn.tv", true }, { "tubepornmovies.net", true }, - { "tubepro.de", true }, { "tubeview.cf", true }, { "tubeview.ga", true }, + { "tubexxxone.com", true }, { "tubing.cf", true }, { "tubs4fun.co.uk", true }, + { "tubsof.fun", true }, { "tubuenpedido.com", true }, { "tubul.net", true }, { "tubuscador.tk", true }, - { "tubuscadordeempleo.com", false }, { "tucarora.tk", true }, - { "tucasacanadevi.com.mx", true }, + { "tucarroycasa.com", true }, { "tucepihotelalga.com", true }, { "tucidi.net", true }, { "tuck2000.com", true }, @@ -123889,6 +142259,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tuckmeintebo.com", true }, { "tucnak.eu", true }, { "tucny.com", true }, + { "tucson.com", true }, { "tucsonfcu.com", true }, { "tucsonpcrepair.com", true }, { "tucuatro.com", true }, @@ -123896,16 +142267,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tudinerito.tk", true }, { "tudinhoparasuacasa.com.br", true }, { "tudodebompresentes.com.br", true }, + { "tudonoticiadigital.com", true }, { "tudorproject.org", true }, { "tudorrosesamplerguild.com", true }, { "tudosobrehost.com.br", true }, - { "tuempleosolucion.com", false }, + { "tudoxwallprinter.com", true }, + { "tuencuestafavorita.com", true }, { "tueplay.host", true }, + { "tueri.eu", true }, { "tuerkei-immobilien.tk", true }, { "tuespr.com", true }, { "tuestilo.nl", true }, { "tuev-hessen.de", true }, - { "tufashionista.com", true }, { "tufelicitacion.info", true }, { "tuffclassified.com", true }, { "tuffmail.com", true }, @@ -123914,23 +142287,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tufilo.com", false }, { "tuftonboronh.gov", true }, { "tugadar.com", true }, + { "tugafm.com", true }, { "tugesha.com", true }, { "tugnut.tk", true }, + { "tugrul.blog", true }, { "tuhoctainha.net", true }, - { "tuimprenta.com.ar", true }, { "tuinaportugal.com", true }, { "tuincentersnaet.be", true }, - { "tuinen-wylo.be", true }, { "tuinenhullebroek.be", true }, { "tuinenvermeiren.be", true }, { "tuingereedschappen.net", false }, { "tuinieren.tk", true }, + { "tuinmeubelkorting.nl", true }, { "tuitle.com", true }, { "tuja.hu", true }, { "tujardin.casa", true }, { "tujunfang.com", true }, - { "tukaraokeonline.com", true }, - { "tukdesigns.com", true }, { "tukebab.com", true }, { "tuketicidergisi.com", true }, { "tuketicihaklari.net", true }, @@ -123941,6 +142313,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tulafarms.gq", true }, { "tulalip.gov", true }, { "tulana.ga", true }, + { "tuleap.net", true }, { "tuleap.org", true }, { "tulevaisuusdemarit.fi", true }, { "tuliha.ga", true }, @@ -123952,14 +142325,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tulisan.tk", true }, { "tull.tk", true }, { "tuller.tk", true }, - { "tully.co.uk", true }, { "tulocura.tk", true }, { "tulpawiki.org", true }, { "tulsa.tech", true }, { "tulsameetingroom.com", true }, { "tulsaworkshop.org", true }, - { "tulumplayarealestate.com", true }, + { "tulsaworld.com", true }, + { "tulup.io", true }, + { "tum.de", true }, { "tumagiri.net", true }, + { "tumanishvili.com", true }, { "tumarcafe.com", true }, { "tumblenet.tk", true }, { "tumblr.com", true }, @@ -123971,28 +142346,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tumen.ml", true }, { "tumen.tk", true }, { "tumentorweb.com.mx", true }, + { "tumpicon.org", true }, { "tumult-productions.tk", true }, { "tun.bible", true }, - { "tunaut.com", true }, + { "tuna.be", true }, + { "tunad.io", true }, { "tunbiya.com", true }, + { "tuncelimezaryapimi.com.tr", true }, + { "tunda.it", true }, { "tunder.tk", true }, { "tundermadar.hu", true }, + { "tundrawear.ru", true }, { "tune-web.de", true }, - { "tunegociowb.com", false }, - { "tunen.cf", true }, { "tunenet.ml", true }, { "tuner.cloud", true }, - { "tuneserver.tk", true }, - { "tungstenworld.com", true }, + { "tunescoot.site", true }, + { "tuneserver.tk", false }, + { "tungstenworld.com", false }, { "tuning-parts24.de", true }, { "tuning-werkstatt-nuernberg.de", true }, - { "tuning.energy", true }, { "tuningblog.eu", false }, { "tunisia-tech.tk", true }, { "tunisiadefnews.ga", true }, { "tunisiana.tk", true }, { "tunisiangamers.tk", true }, { "tunisiapress.tk", true }, + { "tunisieconcours.tn", true }, + { "tunix-openair.de", true }, + { "tunktwppolice.gov", true }, { "tunnel-staging.googlezip.net", true }, { "tunnel.googlezip.net", true }, { "tunnel53.net", true }, @@ -124011,31 +142392,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tuol-sleng.tk", true }, { "tuomiset.com", true }, { "tuoni.ga", true }, + { "tuotromedico.com", true }, { "tuotteet.org", true }, { "tuou.xyz", false }, { "tupahost.net.br", true }, { "tupass.pw", true }, { "tupatane.gq", true }, + { "tupbebekklinigi.com", true }, { "tupeuxpastest.ch", false }, { "tupi.fm", true }, - { "tupianku.com", true }, { "tupizm.com", true }, { "tuppenceworth.ie", true }, + { "tuppennysfireplace.com", true }, { "tupperwaresalamanca.com", true }, { "tupsicoayuda.com", true }, { "tupugoya.org", true }, + { "tur17.com", true }, { "turadio.tk", true }, { "turadionline.cf", true }, { "turalt.com", true }, { "turanga.tk", true }, + { "turanlawoffice.com", true }, + { "turanogluoptik.com", true }, { "turbaza.tk", true }, + { "turbestilling.dk", true }, { "turbinadordigital.tk", true }, { "turbinaonline.tk", true }, + { "turbineaero.com", true }, { "turbinelectricity.ga", true }, { "turbo.az", true }, { "turbo24.com", true }, + { "turbocourses.net", true }, + { "turbodata.no", true }, + { "turbodata.org", true }, { "turbohost.co.mz", false }, - { "turbohostingcolombia.com", true }, { "turbomag.pl", true }, { "turbomodz.com", true }, { "turbomodz.es", true }, @@ -124044,9 +142434,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turbowheels.biz", true }, { "turboworld.tk", true }, { "turc.church", true }, + { "turcan.de", true }, { "turciya.cf", true }, { "tures-aurina.it", true }, - { "turf-experts.com", true }, + { "turf-experts.com", false }, { "turfirm.tk", true }, { "turgut46.tk", true }, { "turi.space", true }, @@ -124058,13 +142449,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turismoeviagens.com", true }, { "turismogdl.com", true }, { "turismoliliana.tk", true }, + { "turismomagdalena.com", true }, + { "turitzadr.com", true }, { "turizm.gq", true }, { "turizm.tk", true }, + { "turizm21.ru", true }, { "turizmsektoru.ga", true }, { "turizmsektoru.tk", true }, { "turkana.tk", true }, + { "turkanime.co", true }, { "turkcechat.tk", true }, { "turkcedizin.tk", true }, + { "turkceingilizce.gen.tr", true }, { "turkcoder.tk", true }, { "turkdevs.net", true }, { "turkey-portal.tk", true }, @@ -124072,16 +142468,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turkeymistress.tk", true }, { "turkeysforlife.com", true }, { "turkeysms.com.tr", true }, + { "turkgiller.com", true }, { "turkgrafik.tk", true }, { "turkhacks.com", true }, { "turkhalkmuzigi.tk", true }, { "turkiet.guide", true }, - { "turkish.dating", true }, { "turkishhackers.tk", true }, { "turkishyatirim.com", true }, { "turkist.tk", true }, { "turkistan-rap.tk", true }, - { "turkiye.ai", true }, + { "turkiye.ai", false }, { "turkkarate.tk", true }, { "turkman.ml", true }, { "turkman.tk", true }, @@ -124111,15 +142507,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turkutitans.tk", true }, { "turl.pl", true }, { "turlewicz.pl", true }, + { "turlockca.gov", true }, { "turm-umzuege.de", true }, { "turn-sticks.com", true }, { "turnali.tk", true }, { "turnalikoyu.tk", true }, + { "turnaroundinsights.com", true }, + { "turnbacktogod.com", true }, { "turncircles.com", true }, + { "turneragsupply.com", false }, { "turneroregon.gov", true }, { "turnet.tk", true }, { "turnierplanung.com", true }, { "turnkey-ips.com", true }, + { "turnkeycybersecurityandprivacysolutions.com", true }, { "turnningpoint.xyz", true }, { "turnoffthelights.com", true }, { "turnoffthelights.video", true }, @@ -124127,24 +142528,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "turnosinscripcionchascomus.site", true }, { "turnout.rocks", true }, { "turnover.cf", true }, + { "turnto23.com", true }, { "turobot.casa", true }, { "turoktv.org", true }, { "turpinpesage.fr", true }, + { "turquoisetassel.com", true }, + { "turretlabs.io", true }, + { "tursa.com.au", false }, + { "tursiae.org", true }, { "turteka.com", true }, { "turtle.ai", false }, { "turtleduckstudios.com", true }, { "turtlehead.tk", true }, { "turtles.ga", true }, + { "turtleteam.fr", true }, { "turtunis.ml", true }, { "turul.tk", true }, { "turuncu-sepet.com", true }, { "turunculevye.com", true }, - { "turyserra.com", true }, { "tus-kikishinkyo.jp", true }, + { "tus.si", true }, + { "tusar.cf", true }, { "tusar.ga", true }, - { "tusatonline.com", true }, { "tuscanyleather.it", false }, { "tusconsultorex.com", true }, + { "tusdtapi.com", true }, { "tusfinanzas.ec", true }, { "tusharwalaskar.com", true }, { "tusi.co", true }, @@ -124157,14 +142565,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tustin.tk", true }, { "tusuri.tk", true }, { "tut-kino.tk", true }, + { "tuta.io", true }, { "tuta.pm", true }, { "tutamail.com", true }, + { "tutamon.net", true }, { "tutanota.com", true }, { "tutanota.de", true }, { "tutarot.club", true }, { "tutdevki.tk", true }, - { "tutiendabancor.com.ar", true }, - { "tutiendadebdsm.com", true }, + { "tuteepdf.com", true }, { "tutiendard.ga", true }, { "tutierra.net", true }, { "tutima.com", true }, @@ -124186,14 +142595,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tutorialphotoshop.tk", true }, { "tutorials.vg", true }, { "tutorialseo.com.br", true }, + { "tutoriel-arduino.com", true }, { "tutoringindustry.tk", true }, { "tutorio.ga", true }, - { "tutorme.com", true }, { "tutormedia.net", false }, { "tutorsploit.com", true }, { "tuts4you.com", true }, + { "tutteo.com", true }, { "tuttimundi.org", false }, { "tuttleok.gov", true }, + { "tuttoandroid.net", true }, + { "tuttonotizie.eu", true }, { "tutu.green", true }, { "tutu.ro", true }, { "tutucos.com", true }, @@ -124204,10 +142616,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tuvingaynay.com", true }, { "tuwaner.com", true }, { "tuxamca.com", true }, + { "tuxcare.com", true }, + { "tuxcloud.duckdns.org", true }, { "tuxcloud.net", true }, { "tuxflow.de", false }, { "tuxforums.com", true }, - { "tuxgeo.com", false }, { "tuxhound.org", true }, { "tuxie.com", true }, { "tuxito.tk", true }, @@ -124215,11 +142628,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tuxlinux.tk", true }, { "tuxmobil.cf", true }, { "tuxpeliculas.com", true }, + { "tuxphones.com", true }, { "tuxpi.com", true }, { "tuxplace.nl", true }, { "tuxsoul.com", true }, { "tuxsrv.com", true }, { "tuyetchieuwebsite.tk", true }, + { "tuz-es-munkavedelem.hu", true }, { "tuza.com.au", true }, { "tuzaginside.com", true }, { "tuzagtcs.com", true }, @@ -124231,37 +142646,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tv-online.ml", true }, { "tv-programme.be", true }, { "tv-programme.com", true }, + { "tv-radio.com", true }, { "tv-sports.fr", true }, { "tv-tuners.cf", true }, { "tv-zone.tk", true }, { "tv.kg", true }, { "tv2vie.org", false }, + { "tv9gujarati.com", true }, { "tvabullarbro.tk", true }, { "tvaerialsmanchester.com", true }, + { "tvatomic.com", true }, { "tvbracketman.co.uk", true }, { "tvcal.net", true }, { "tvchannelslive.tk", true }, { "tvcmarketing.com", true }, { "tvdate.ru", true }, { "tvdates.info", true }, - { "tvdenevar.net", true }, + { "tvdenevar.net", false }, + { "tvears.com", true }, { "tvenligne.tk", true }, { "tver-msk.ru", true }, { "tver2000.tk", true }, { "tver69.tk", true }, { "tveronline.tk", true }, { "tves.gob.ve", true }, + { "tvfamilie.be", true }, { "tvfans.ga", true }, { "tvfans.tk", true }, { "tvfcu.com", true }, + { "tvfr.gov", true }, { "tvgsc.sg", true }, + { "tvguide.com", true }, { "tview.co.uk", true }, { "tvindia.tk", true }, { "tvipper.com", true }, { "tvk.tirol", true }, + { "tvkaista.com", true }, + { "tvkaista.net", true }, + { "tvkaista.org", true }, { "tvkaren.tk", true }, { "tvlanguedoc.com", true }, { "tvleaks.se", true }, + { "tvlplus.net", true }, { "tvmice.tk", true }, { "tvmounting-houston.com", true }, { "tvnow.de", true }, @@ -124269,9 +142695,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tvoia-dietka.tk", true }, { "tvoistatusy.tk", true }, { "tvoistili.ml", true }, + { "tvojeucetnictvi.cz", true }, + { "tvorog.dedyn.io", true }, + { "tvos.eu", true }, { "tvoyaknighka.ga", true }, { "tvoysad.ru", false }, - { "tvplusiptv.com", true }, { "tvquot.es", true }, { "tvrestyler.eu", true }, { "tvreviewer.tk", true }, @@ -124282,43 +142710,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tvsscs.com", true }, { "tvtj.ml", true }, { "tvtorcedor.com.br", true }, + { "tvtsvod.com", true }, { "tvvlconnect.nl", true }, { "tvzahist.com.ua", true }, - { "tvzr.com", true }, + { "tw-louis.com", false }, + { "tw.edu.pl", true }, { "tw.search.yahoo.com", false }, { "twa.travel", true }, - { "twaddler.cf", true }, { "twainhartehotels.com", true }, { "twaka.com", true }, { "twakkensi.cf", true }, { "twatspot.com", true }, { "twb.berlin", true }, + { "twcgcm.com", true }, { "twd2.me", true }, { "twd2.net", false }, { "twdreview.com", true }, { "twdtulelo.hu", true }, - { "tweak.group", true }, { "tweakers.com.au", true }, { "tweakers.net", true }, { "tweakersbadge.nl", true }, + { "tweaking4all.com", true }, { "tweaktown.com", true }, { "tweaktownforum.com", true }, { "tweaky.tk", true }, { "tweedagenextravakantie.nl", true }, { "tweedandtalon.co.uk", true }, + { "tweedehandskledij.be", true }, + { "tweedehandsmerkkledij.be", true }, + { "tweedekamer.nl", true }, { "tweekshow.tk", true }, { "tweemaster.tk", true }, { "tweeple.ga", true }, + { "tweetadder.fr", true }, { "tweetfinity.com", true }, { "tweetfinityapp.com", true }, { "tweetyconnect.com", true }, { "twelve-inch-classics.tk", true }, { "twelve.rocks", true }, - { "twelve.today", true }, { "twelvecolonies.tk", true }, { "twelvecornerspediatrics.com", true }, { "twem.ddns.net", true }, - { "twenty.so", true }, { "twerk.tk", true }, { "twfwd.email", true }, { "twiddlebugdesigns.com", true }, @@ -124331,7 +142763,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twilightningzone.tk", true }, { "twilite.co.uk", true }, { "twilite.uk", true }, - { "twilleys.com", true }, { "twilo-host.de", true }, { "twilo.de", true }, { "twincap-first.de", true }, @@ -124340,6 +142771,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twincitynissantxparts.com", true }, { "twindii.com", true }, { "twinfield-apps.nl", true }, + { "twinflame.tf", true }, { "twinkseason.com", true }, { "twinlakeestates.in", true }, { "twinlakeswi.gov", true }, @@ -124348,12 +142780,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twinztech.com", true }, { "twist.com", true }, { "twistapp.com", true }, + { "twistbets.com", true }, + { "twistedoakonline.com", true }, { "twistedwave.com", true }, + { "twistersolutions.com", true }, { "twistertech.com.br", true }, { "twistfix.co.uk", true }, + { "twistgeschenken.nl", true }, + { "twistmc.net", true }, { "twisto.cz", true }, { "twisto.pl", true }, { "twistopay.com", true }, + { "twistpedia.com", true }, + { "twistys.com", true }, + { "twistysnetwork.com", true }, { "twit-guide.com", true }, { "twitchplaysleaderboard.info", true }, { "twitchy.tk", true }, @@ -124363,22 +142803,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twitter.ax", true }, { "twitter.com", false }, { "twitterdriver.io", true }, - { "twitteroauth.com", true }, + { "twittervid.com", true }, { "twittpr.com", true }, { "twizzle.net", true }, { "twk95.com", true }, { "twl-clan.tk", true }, { "twlan.org", true }, { "twlitek.com.tw", true }, - { "twmanager.tk", true }, { "twmartin.codes", true }, { "two-step-verification.solutions", true }, + { "twoam.ph", true }, { "twoandahalfvan.eu", true }, { "twobitbusker.com", true }, { "twobrothersbbq.com", false }, + { "twocatsinacaravan.xyz", true }, { "twocornertiming.com", true }, { "twodadsgames.com", true }, { "twoef.co.uk", true }, + { "twofestivaltower.au", true }, + { "twofestivaltower.com", true }, + { "twofestivaltower.com.au", true }, { "twohuo.com", true }, { "twojapogoda.pl", true }, { "twojfaktum.pl", true }, @@ -124386,25 +142830,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "twolittlefleas.co.uk", true }, { "twoninersix.com", true }, { "twonodes.games", false }, - { "twopipes.com", true }, { "twopipes.net", true }, { "twopipes.org", true }, { "twoqi.com", false }, { "tworaz.net", true }, - { "tworzeniesklepu.pl", true }, + { "twoseven.xyz", true }, + { "twospirits.org", true }, { "twotravel.world", true }, - { "twotube.ie", true }, - { "twrmotion.org", true }, + { "twr.org", true }, + { "twslots.online", true }, { "twtr.email", true }, { "twwd.de", true }, - { "tx299.com", true }, + { "tx299.com", false }, { "tx577.com", true }, + { "txbooster.com", true }, { "txcap.org", true }, { "txferretrescue.org", true }, + { "txhb.gov", true }, { "txi.su", true }, { "txlocksmiththewoodlands.com", true }, { "txlrs.org", true }, - { "txm.pl", true }, + { "txryan.com", true }, { "txtd.io", true }, { "txtdb.com", true }, { "txtdirect.com", true }, @@ -124417,6 +142863,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "txtfile.eu", false }, { "txtnovel.me", true }, { "txtnovel.net", true }, + { "txtpower.org", true }, { "txurologist.com", true }, { "txwriterstudio.com", true }, { "ty0m.com", true }, @@ -124429,6 +142876,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ty593.com", true }, { "ty5998.com", true }, { "ty613.com", true }, + { "ty632.com", true }, { "ty637.com", true }, { "ty650.com", true }, { "ty679.com", true }, @@ -124438,7 +142886,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ty723.com", false }, { "ty736.com", true }, { "ty739.com", true }, - { "ty756.com", true }, + { "ty750.com", true }, { "ty7788.cc", true }, { "ty785.com", true }, { "ty791.com", true }, @@ -124450,44 +142898,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ty927.com", true }, { "ty935.com", true }, { "ty937.com", true }, - { "ty953.com", true }, + { "ty953.com", false }, { "ty962.com", false }, { "ty965.com", true }, { "ty980.com", true }, + { "tyan.com", true }, { "tybox.ca", true }, { "tyc001.cc", true }, { "tyc009.cc", true }, - { "tyc923.com", true }, + { "tycaa.org", true }, { "tycho.org", true }, { "tycho.tk", true }, { "tychoverstraete.be", true }, { "tycyc88.com", true }, - { "tyedyeforever.com", true }, - { "tygochrum.se", true }, + { "tyg3r.com", true }, + { "tygochrum.se", false }, { "tyinnovations.com", true }, - { "tykeplay.com", true }, - { "tykoon.com", true }, + { "tyk.io", true }, { "tyl.io", true }, { "tyler.rs", true }, { "tylerdavies.net", true }, - { "tylerdt.com", true }, { "tylerdurden.ml", true }, { "tylergordonhill.com", true }, - { "tylerharcourt.com", false }, + { "tylerharcourt.com", true }, { "tylerharcourt.net", true }, { "tylerharcourt.org", true }, { "tylermade.net", true }, + { "tylermn.gov", true }, { "tylerobrien.org", true }, { "tyleromeara.com", true }, { "tylerpayne.tk", true }, - { "tylerschmidtke.com", true }, - { "tylertysdal.com", true }, + { "tylerschmidtke.com", false }, { "tylervigario.com", true }, { "tylko-wazne.tk", true }, { "tymoch.pl", true }, { "tymyrddin.space", true }, - { "tymyrddin.wiki", true }, + { "tyndalehouse.com", true }, { "tynefm.tk", true }, + { "tynesidecinema.co.uk", true }, { "tyni-goc.gq", true }, { "tyni-gof.gq", true }, { "tynki-maszynowe.tk", true }, @@ -124520,6 +142968,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "typingcheck.ga", true }, { "typist.tech", true }, { "typo3.com", true }, + { "typosphere.fr", true }, + { "typr.com", true }, { "tyr0wl.com", true }, { "tyrael.eu", true }, { "tyraga.ga", true }, @@ -124529,6 +142979,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tyree.tech", true }, { "tyres-mechanical.com.au", true }, { "tyres-price.com", true }, + { "tyrkey.tk", true }, + { "tyrocity.com", true }, { "tyronega.gov", true }, { "tyroola.co.id", true }, { "tyroola.co.nz", true }, @@ -124547,29 +142999,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "tyrulez.tk", true }, { "tysukakorrekt.ga", true }, { "tysye.ca", true }, + { "tytixazo.tk", true }, + { "tytocare.com", true }, { "tytod.com", true }, { "tyumen.ga", true }, { "tyuning-avto.tk", true }, { "tyva.gq", true }, { "tyva.ml", true }, + { "tyva.tk", true }, + { "tz.mn", true }, { "tz9.co", true }, { "tzchz.pp.ua", true }, - { "tzhsoj.com", false }, + { "tzdn.gq", true }, + { "tzeribi.fr", true }, + { "tzgo.at", true }, { "tzifas.com", true }, { "tzinsurance.com", true }, { "tziyona.net", true }, - { "tzki.ru", true }, { "tzonevrakis.gr", true }, - { "tzortzis.eu", true }, { "tzsec.com", true }, + { "tzsrv.cf", true }, + { "tzsrv.com", true }, + { "tzsrv.de", true }, + { "tzsrv.tk", true }, { "tzstamp.io", true }, + { "tzunami.tk", true }, + { "tzunamiblog.tk", true }, { "tzwe.com", true }, - { "tzyingshi.com", false }, { "u-chan.com", false }, { "u-he.com", true }, + { "u-olymp.ru", true }, { "u-page.nl", true }, { "u-watch.it", true }, - { "u-zoloto.ru", true }, { "u.nu", true }, { "u.sb", true }, { "u00228.com", false }, @@ -124577,8 +143038,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "u0070.com", true }, { "u0080.com", false }, { "u03.fr", true }, + { "u05.cn", true }, { "u1100.com", true }, { "u1144.com", true }, + { "u12buy.com", true }, { "u15.info", true }, { "u15b1.com", true }, { "u15b2.com", true }, @@ -124596,7 +143059,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "u2co.de", true }, { "u2croatia.tk", true }, { "u2fanlife.com", true }, - { "u2fsecuritykeys.com", true }, { "u2galicia.tk", true }, { "u32i64.cf", true }, { "u36533.com", true }, @@ -124610,23 +143072,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "u6729.com", false }, { "u6957.co", true }, { "u6957.com", false }, + { "u6a5hqf.top", true }, + { "u7ae.com", true }, { "u81365.com", true }, { "u82365.com", true }, { "u9297.co", true }, { "u9397.com", true }, { "u9721.com", false }, { "u9728.co", true }, - { "u9yy.net", true }, + { "ua-1x-bet.com", true }, { "ua-autonews.tk", true }, + { "ua-fediland.de", false }, + { "ua-news.tk", true }, { "ua.search.yahoo.com", false }, + { "ua1xbet.com", true }, + { "ua1xbet1967.com", true }, + { "ua577.com", true }, { "ua5v.com", true }, { "uab.tv", true }, { "uachemlabs.com", true }, + { "uae-auto.ru", true }, { "uae-company-service.com", true }, { "uaefiu.gov.ae", true }, { "uaemegadeals.com", true }, + { "uafinance.net", true }, { "ualove.tk", true }, { "uamxsociologia.tk", true }, + { "uanews.tk", true }, { "uapp.win", true }, { "uareferat.tk", true }, { "uasaumur.com", true }, @@ -124634,14 +143106,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uasmi.com", true }, { "uasonics.tk", true }, { "uat-activesg.com", true }, - { "uat-indego.azurewebsites.net", true }, { "uat-mypfp.co.uk", true }, + { "uateach.tk", true }, { "uatgootax.ru", false }, { "uathq.com", true }, { "uatuning.com.ua", true }, { "uatx.mx", true }, { "uavis.com.au", true }, - { "uawoptout.com", false }, { "ub3rk1tten.com", true }, { "ub889.com", true }, { "uba-tra.tk", true }, @@ -124650,17 +143121,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ubanks.com.ua", true }, { "ubanquity.com", false }, { "ubcani.com", true }, + { "uber-work.tk", true }, { "uberactivist.com", true }, { "uberalles.live", true }, { "uberboxen.net", true }, + { "ubereatspos.com", true }, { "ubergamingworld.tk", true }, { "uberhorny.tk", true }, { "uberi.fi", true }, { "ubermail.me", true }, { "uberpromocodes.us", true }, { "ubersmith.com", true }, - { "uberstrategist.com", true }, - { "ubertt.org", true }, { "uberwald.ws", true }, { "ubezpieczeniaonline.pl", true }, { "ubezpieczeniazyciowe.pl", true }, @@ -124675,35 +143146,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ubezpieczeniezyciowe.pl", true }, { "ubezpieczonamama.pl", true }, { "ubezpieczonedziecko.pl", true }, - { "ubi.gg", true }, { "ubicaciones-vitamina.cl", true }, { "ubicv.com", true }, { "ubill.ge", true }, + { "ubimail.org", true }, { "ubiminds.com", false }, + { "ubiqubit.it", true }, { "ubis.group", true }, { "ubiurbe.com", true }, + { "ubn-speed.fr", true }, { "ubntleaks.com", true }, - { "ubonforageseeds.com", true }, { "ubonit.pl", true }, { "uborcare.com", true }, { "uborka-812.ru", true }, { "uborka-kvartir-moskva.gq", true }, - { "ubsolutions.hu", true }, + { "uborka-snega.ga", true }, + { "ubr.ua", true }, { "ubun.kr", true }, { "ubun.net", true }, + { "ubuntu-es.org", true }, { "ubuntu-tr.net", true }, + { "ubuntu-tutorials.com", true }, { "ubuntu.marketing", true }, { "ubuntu18.com", true }, + { "ubutovo.ga", true }, { "ubytovanihyncice.cz", true }, + { "ubytovnastrazske.sk", true }, { "ubzoo.tk", true }, + { "uc-developmentseg.com", true }, { "uc4h.com", true }, { "ucabinet.ru", true }, { "ucac.nz", false }, - { "ucamind.com", true }, { "ucangiller.com", true }, - { "ucartz.com", true }, { "ucaskernel.com", true }, - { "ucatchemguideservice.com", true }, + { "ucayim.com", true }, + { "ucb.com", true }, + { "ucbostad.se", true }, { "ucch.be", false }, { "uccisme.net.ua", true }, { "ucdap.com", true }, @@ -124714,24 +143192,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uchargeapp.com", true }, { "ucheba.cf", true }, { "ucheba.ga", true }, + { "ucheba.gq", true }, { "ucheba.tk", true }, + { "uchicagomedicine.org", true }, { "uchuumontreal.com", true }, { "ucibt.com", true }, + { "ucih.ru", true }, { "ucinvest.com.au", true }, { "uciplasticsurgery.com", true }, { "uclf.de", true }, { "uclip.club", true }, { "ucmatedeveloper.gq", true }, { "ucmjlawyers.com", true }, + { "ucmultrasuoni.it", false }, { "ucngame.com", true }, + { "ucnprod.fr", true }, { "ucphotography.net.au", true }, { "ucplusdansk.dk", true }, { "ucppe.org", true }, + { "ucraft.ai", true }, + { "ucrdatatool.gov", true }, + { "ucretleri.net", true }, { "ucsi.link", true }, { "uctarna.online", true }, - { "ucu.ac.ug", true }, { "ucybodyinc.com", true }, { "udaap.org", true }, + { "udaipurescortsservice.in", true }, { "udancy.com", true }, { "udaneprzepisy.pl", true }, { "udb.kr", true }, @@ -124740,28 +143226,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uddate-linthdcp-567app.com", true }, { "uddi.ng", true }, { "uddin.io", true }, - { "udecora.com.br", true }, { "udemons.be", true }, { "udenlandskecasinoer.dk", true }, { "udenlandskeonlinecasino.com", true }, + { "udenrigspolitik.dk", true }, { "udi.no", true }, { "udid.fyi", true }, { "udien.tk", true }, { "udigital.nl", true }, { "udik.tk", true }, - { "udilicitana.com", true }, { "udinetoday.it", true }, - { "udiutv.no", true }, { "udla.edu.ec", true }, { "udmarbella.tk", true }, { "udmddn.ru", true }, + { "udmurtia.tk", true }, { "udo-luetkemeier.de", true }, { "udomain.net", true }, + { "udp.pw", true }, { "udp.sh", false }, { "udrivingschool.com.ph", true }, - { "udrop.com", true }, { "udruga-point.hr", true }, { "udsocial.com", true }, + { "udtonline.com", true }, { "udvoukocek.eu", true }, { "ue30.fun", true }, { "ueba1085.jp", true }, @@ -124771,58 +143257,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uedaviolin.com", true }, { "uefeng.com", false }, { "uel-thompson-okanagan.ca", true }, + { "uesaz.com", true }, { "uesc.org", true }, { "uesociedadlimitada.com", true }, { "uestc.icu", true }, - { "uevan.com", false }, + { "uevan.com", true }, { "uf-ace.com", true }, { "ufa-soft.tk", true }, { "ufacesign.in", true }, { "ufanet.id", true }, { "ufanisi.mx", true }, + { "ufar-ntds.org", true }, { "uffserver.ml", true }, + { "ufh.com.cn", true }, { "ufindme.at", true }, + { "ufirst.ro", true }, { "ufo.moe", false }, { "ufocentre.com", true }, { "ufoch.com", false }, + { "ufoet.cn", false }, { "ufologiahistorica.tk", true }, + { "ufologiaweb.tk", true }, { "ufone.com", true }, { "ufone.net", true }, { "ufopaedia.org", true }, { "ufos.tk", true }, { "ufplanets.com", true }, - { "ufroo.com", true }, - { "ugameclub.com", true }, + { "ufsupersport.com", true }, + { "ug.gg", true }, + { "ugarte-zestoa.com", true }, { "ugb-verlag.de", false }, + { "ugc.fr", true }, { "ugcdn.com", true }, { "ugeek.tk", true }, + { "ugg.com", true }, { "uggedal.com", true }, { "ugirlx.com", true }, + { "ugis.info", true }, + { "uglypeople.com", true }, { "ugmtc.org", true }, + { "ugolovnyj-advokat.cf", true }, { "ugolsibiri.ru", true }, { "ugrod.ru", true }, { "ugsonline.tk", true }, { "ugtdigiteldocumentos.es", true }, + { "uguragdas.com.tr", true }, + { "ugurkorkmazyurek.com", true }, { "ugurnakliyat.com.tr", true }, + { "uguu.se", true }, { "ugx-mods.com", true }, { "ugy.es", true }, { "uhasseltctf.be", true }, { "uhasseltctf.ga", true }, { "uhc.gg", true }, + { "uhcuhcas.cf", true }, + { "uhcuhcas.ga", true }, + { "uhcuhcas.gq", true }, { "uhcuhcas.ml", true }, { "uhcuhcas.tk", true }, - { "uhingaro.com", true }, + { "uhes.com.sg", true }, + { "uhingaro.com", false }, { "uhl.site", true }, { "uhlhosting.ch", true }, - { "uhlturf.com", true }, - { "uhm.io", false }, { "uhnwarfarinedu.ca", true }, { "uhost.cyou", true }, - { "uhrdal.com", true }, { "uhrenlux.de", true }, - { "uhtcle.com", true }, { "uhuc.de", true }, { "uhurl.net", true }, + { "ui.com", true }, { "ui.gov", true }, { "ui8.net", true }, { "uiberlay.cz", true }, @@ -124835,80 +143337,97 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uinvest.tk", true }, { "uiop.link", true }, { "uirysa.pl", true }, + { "uisd.net", true }, { "uitdeoudekoektrommel.com", true }, { "uiterwijk.org", true }, { "uitgeverij-deviant.nl", true }, { "uitingent.be", true }, - { "uitliefde.shop", true }, { "uitvaartgoessens.be", true }, + { "uitvaartverzekeringwijzer.net", false }, { "uitvaartvrouwenfriesland.nl", true }, { "uiuo.de", true }, + { "uizard.io", true }, { "uj2008.com", true }, + { "ujam.com", true }, + { "ujeb.link", true }, { "ujiyasu.com", true }, + { "ujjivan.com", true }, { "ujob.com.cn", true }, + { "ujober.com", false }, { "ujotthon.hu", true }, { "ujvary.eu", true }, - { "ujyalonetwork.com", true }, - { "uk-bmvg.de", true }, - { "uk-cbdoils.com", true }, + { "uk-staff.co.uk", true }, { "uk.dating", true }, - { "uk.kg", true }, { "uk.search.yahoo.com", false }, { "ukari.hokkaido.jp", false }, { "ukb.sch.id", false }, { "ukbc.london", true }, { "ukc2.com", true }, + { "ukcarers.tk", true }, + { "ukcdn.xyz", true }, { "ukdefencejournal.org.uk", true }, - { "ukeuniverse.co.uk", true }, { "ukfoodbox.co.nz", true }, + { "ukforum.net", true }, { "ukhas.net", true }, { "ukimmigration.law", true }, { "ukitbs.com", true }, + { "ukiuki.photography", true }, { "ukkeyholdingcompany.co.uk", true }, { "uklawfirm.tk", true }, { "uklidgaraze.fun", true }, - { "ukliveradio.com", true }, { "uklizim.fun", true }, { "ukmalls.co.uk", true }, { "ukmeetandgreet.com", true }, + { "ukmerges-vaikyste.lt", true }, { "ukmortgagecompare.co.uk", true }, - { "uknew.co", true }, + { "uknew.co", false }, + { "uknews.ga", true }, { "uknews.ml", true }, { "uknewsroom.tk", true }, { "ukooku.com", true }, + { "ukosystudio.com", true }, { "ukozliku.cz", true }, + { "ukpass.co", true }, { "ukpr.group", true }, + { "ukprice.xyz", true }, { "ukpropertyrescue.com", true }, { "ukpts.org", true }, + { "ukraflora.ua", true }, { "ukrahost.com", true }, - { "ukraine.com.ua", true }, + { "ukrainci.com.ua", true }, + { "ukraine-standart.com.ua", true }, { "ukrainians.ch", true }, + { "ukrainianwall.com", true }, { "ukrainskie-konstrukcii.com.ua", true }, { "ukrapak.com.ua", true }, { "ukrcredit.net", true }, - { "ukriate.com", true }, { "ukrn.io", true }, { "ukrnames.com", true }, { "ukrnet.co.uk", true }, - { "uksb.net", true }, + { "ukrtabletki.tk", true }, + { "ukrzoloto.ua", true }, { "ukseafood.co.uk", true }, - { "uksv.co.uk", true }, + { "ukshg.org", true }, + { "uksv.co.uk", false }, { "ukta.tk", true }, { "uktw.co.uk", false }, + { "uku.lt", true }, + { "ukulele.co.nz", true }, { "ukunlocks.com", true }, { "ukutabs.com", true }, - { "ukvoipforums.com", true }, { "ukwct.org.uk", true }, { "ul-fluglehrer.de", true }, - { "ulabox.com", true }, { "ulax.org", true }, + { "ulax.tk", true }, + { "ulbr.dnshome.de", true }, + { "ulconnect.com", true }, { "uldsh.de", true }, { "uleenucks.de", true }, { "ulement.com", true }, { "ulen.me", true }, { "ulet.tk", true }, { "ulezcar.com", true }, - { "ulfsciences.com", true }, + { "ulfmikaelmattsson.se", true }, { "ulgaipbox.online", true }, { "uli-eckhardt.de", true }, { "ulickaprozivot.cz", true }, @@ -124916,38 +143435,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ulitroyo.com", true }, { "ullah.se", true }, { "ulli.ml", true }, + { "ullrich-group.de", true }, { "ulm-eurofox.fr", true }, { "ulmer-schneesport.de", true }, + { "ulnesshealth.com", true }, { "ulobby.eu", true }, + { "uloztoasdilej.cz", true }, + { "ulprospector.com", true }, { "ulrichracing.com", true }, { "ulrik.moe", true }, { "ulrike-sichert-schuster.de", true }, - { "uls.by", true }, + { "ulrikethiele.de", true }, + { "ulsterbank.co.uk", true }, + { "ulsterbank.ie", true }, { "ulsters.cf", true }, - { "ultherasaopaulo.com", true }, + { "ulstersheriffny.gov", true }, + { "ultahost.com", true }, + { "ultalabtests.com", true }, { "ultima-ratio.at", true }, { "ultimadivisao.com.br", true }, + { "ultimasword.tk", true }, { "ultimate-fireworks.tk", true }, - { "ultimate-uk.com", true }, { "ultimateappreviews.co", true }, { "ultimatebabyshowergifts.ga", true }, { "ultimatebattle.tk", true }, + { "ultimatebattles.club", true }, + { "ultimatecheerleaders.com", true }, { "ultimateclub.tk", true }, { "ultimatefilmpromotion.com", false }, + { "ultimatefxtools.com", false }, + { "ultimategamechair.com", true }, { "ultimategaming.tk", true }, + { "ultimatehalo.tk", true }, { "ultimatelifesupport.ga", true }, { "ultimatemafia.be", true }, { "ultimatemafia.de", true }, { "ultimatemafia.net", true }, { "ultimatemafia.nl", true }, + { "ultimatemapping.tk", true }, { "ultimatemotherfuckingwebsite.com", true }, + { "ultimateout-sourcing.com", true }, + { "ultimateoutsourcing.co.uk", true }, { "ultimatepaleoguide.com", true }, { "ultimateparts.nl", true }, { "ultimatepatrol.de", true }, { "ultimatepower.ga", true }, { "ultortech.com", true }, - { "ultra-pet.co.za", true }, + { "ultra-fast.net", true }, { "ultra-pro.ga", true }, + { "ultra.gen.tr", true }, { "ultra.law", true }, { "ultrabkk.com", true }, { "ultracentr.ml", true }, @@ -124955,19 +143491,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ultralife.cf", true }, { "ultraman.tk", true }, { "ultramax.biz", true }, - { "ultramcworld.ml", true }, - { "ultramookie.com", true }, + { "ultramookie.com", false }, { "ultraonline.ml", true }, + { "ultrapedic.com", true }, { "ultrarare.space", true }, { "ultras-venlo.tk", true }, { "ultrasbet.com", true }, { "ultrasite.tk", true }, { "ultrasocial.ml", true }, + { "ultrasoundtechnicianschools.com", true }, { "ultrastar-es.org", true }, { "ultrasvargon.tk", true }, { "ultratechlp.com", true }, { "ultratress.com", true }, - { "ultravendas.com.br", true }, { "ultraviolence.tk", true }, { "ultravip.com.br", true }, { "ultreya.tk", true }, @@ -124976,28 +143512,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ulyanovsk-73.tk", true }, { "ulyanovsk73.tk", true }, { "ulyanovskcity.tk", true }, - { "ulys.ch", true }, { "ulyssesenergy.it", true }, { "um-sachsen-pictures.de", true }, { "um.es", false }, { "umagoyal.com", true }, - { "umaimagazine.com", true }, + { "umami.vercel.app", true }, + { "umamibbqsushi.com", true }, + { "umamibites.com", true }, { "umanews.net", true }, { "umanityracing.com", true }, { "umanupszn.gov.ua", true }, { "umap.uz", true }, { "umaru.gq", true }, + { "umarysi.fun", true }, { "umas.tk", true }, { "umashev.ru", true }, { "umasoda-tohoku.com", true }, + { "umassfive.coop", true }, { "umasstransit.org", true }, { "umatillacounty.gov", true }, { "umbertheprussianblue.com", true }, + { "umbrellamediagroup.com", true }, { "umbrellaye.online", true }, + { "umbria.network", true }, { "umbricht.li", true }, - { "umcpc.org", false }, + { "umeligence.cz", true }, { "umenlisam.com", true }, { "umisonoda.com", true }, + { "umitribe.gov", true }, { "umity.com.ua", true }, { "umkomaaslodge-aliwalshoal.co.za", true }, { "umlcode.com", true }, @@ -125005,82 +143547,94 @@ static const nsSTSPreload kSTSPreloadList[] = { { "umniy-dom.tk", true }, { "umnugobi.tk", true }, { "umo.ci", true }, + { "umojacloud.io", true }, + { "umojo.com", true }, + { "umoman.ru", true }, { "umount.net", true }, { "umsapi.com", true }, - { "umton.cz", true }, + { "umtactivation.com", true }, + { "umtactivation.in", true }, + { "umutdemir.com", true }, { "umv.gov.co", true }, { "umwandeln-online.de", true }, { "umweltgalerie.de", true }, { "umzuege-hannover.net", true }, - { "umzug-fuer-muenchen.de", true }, { "umzugsunternehmenberlin.eu", true }, { "un-box.org", true }, { "un-framed.co.za", true }, - { "un-nft.org", true }, { "un-zero-un.fr", true }, - { "unae.fr", true }, { "unaffectedsound.tk", true }, { "unai-yus.tk", true }, + { "unaligned.net", true }, + { "unalignment.com", true }, { "unanaciounaseleccio.tk", true }, { "unangelturbio.tk", true }, + { "unaone.net", true }, { "unapp.me", true }, { "unasim.gq", true }, { "unataly.gq", true }, { "unataz.tk", true }, { "unatbeaubrid.cf", true }, { "unatco.noip.me", true }, + { "unausa.com.br", true }, { "unautreregard.tk", true }, { "unaware.tk", true }, + { "unbanked.com", true }, + { "unbankman.com", true }, + { "unbankmanyourself.com", true }, { "unbelievableplaces.de", true }, + { "unbelievaboat.com", true }, { "unblock-zh.org", true }, { "unblockat.tk", true }, - { "unblocked.at", true }, { "unblocked.cx", true }, { "unblocked.lat", true }, { "unblocked.one", true }, { "unblocked.vet", true }, - { "unblocked.win", true }, + { "unblockit.asia", true }, { "unblockit.bet", true }, + { "unblockit.bio", true }, { "unblockit.blue", true }, - { "unblockit.buzz", true }, - { "unblockit.bz", true }, - { "unblockit.ca", true }, + { "unblockit.cat", true }, { "unblockit.ch", true }, - { "unblockit.club", true }, + { "unblockit.click", true }, { "unblockit.how", true }, + { "unblockit.ink", true }, { "unblockit.ist", true }, { "unblockit.kim", true }, - { "unblockit.li", true }, - { "unblockit.link", true }, { "unblockit.llc", true }, - { "unblockit.ltd", true }, { "unblockit.me", true }, { "unblockit.name", true }, - { "unblockit.onl", true }, - { "unblockit.uno", true }, + { "unblockit.nz", true }, + { "unblockit.pet", true }, + { "unblockit.vegas", true }, { "unblockit.ws", true }, { "unbolt.cf", true }, + { "unbonavocat.fr", true }, { "unboundmoney.com", true }, { "unboxed.cf", true }, { "unboxinspector.com", true }, - { "unboxyou.com", true }, { "uncarved.com", true }, { "uncensoreddns.dk", true }, { "uncensoreddns.org", true }, { "uncentodecousas.tk", true }, + { "unchex.com", true }, { "unchile.com", true }, { "uncinema.cf", true }, { "uncivserver.xyz", true }, + { "unclaimedretirementbenefits.com", true }, { "unclebens-specials.gr", true }, { "uncontrollablegas.com", true }, + { "uncorporate.cf", true }, + { "uncoveringnarcolepsy.ca", true }, + { "uncut.wtf", true }, { "uncuteyes.tk", true }, + { "uncuttype.wtf", true }, { "uncuut.com", true }, { "undawns.tk", true }, - { "undeadbrains.de", true }, { "undeadwalking.com", true }, { "undecidable.de", true }, { "undeductive.com", true }, - { "undeductive.media", true }, + { "undegasesc.net", true }, { "undelightfully.tk", true }, { "undemocracy.cf", true }, { "undemocracy.ga", true }, @@ -125088,8 +143642,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "undemocracy.ml", true }, { "under-wears.tk", true }, { "under15.ml", true }, - { "underbridgeleisure.co.uk", true }, { "undercliff.tk", true }, + { "underconsideration.com", true }, { "undercoverxp.tk", true }, { "undercucho.tk", true }, { "underdestruction.tk", true }, @@ -125099,8 +143653,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "undergrounder.ga", true }, { "undergroundiron.tk", true }, { "undergroundmusic.tk", true }, - { "underlilith.com", true }, { "underlined.fr", true }, + { "undernet.org", true }, { "undernet.uy", false }, { "undershoping.tk", true }, { "underskatten.tk", true }, @@ -125122,8 +143676,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "une-femme-dhonneur.tk", true }, { "uneaimages.com", true }, { "unece-deta.eu", true }, - { "unefleur.be", true }, { "unefuite.ch", false }, + { "unej.org", true }, { "unemployment.ga", true }, { "unemployment.gov", true }, { "unepierrepourlui.fr", true }, @@ -125132,39 +143686,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unexcited.tk", true }, { "unexpected.nu", true }, { "unexplored-belarus.tk", true }, + { "unexplored-moscow.tk", true }, + { "unf.dk", true }, { "unfabulous.tk", true }, { "unfallrechtler.de", true }, + { "unfamousrecords.tk", true }, { "unfathomable.blue", true }, { "unfc.nl", true }, { "unferno.tech", true }, - { "unfettered.net", false }, - { "unfilterednews.info", true }, { "unfixed-soul.tk", true }, { "unfollow.today", true }, { "unfriend.tk", true }, { "unga.dk", true }, { "ungaeuropeer.se", true }, { "ungainlybeast.com", true }, + { "ungedient.de", true }, { "unghie.com", false }, { "ungnyo.org", true }, { "ungolianth.tk", true }, { "ungooglize.org", true }, + { "ungovernable.men", true }, { "ungrafakta.cf", true }, { "ungrafakta.gq", true }, { "ungrafakta.tk", true }, + { "unhabitat.org", true }, { "unhappy.tk", true }, + { "unhub.ru", true }, + { "uni-chem.rs", true }, { "uni-cleaner.com", true }, { "uni-watch.com", true }, { "uni2share.com", true }, - { "unian.info", true }, + { "unia.es", true }, { "uniaofraternalraulcury.com.br", true }, { "unibaby.com", true }, { "unibet.bz", true }, { "unibet.ltd", true }, { "unibev.net", true }, + { "unibh.br", true }, { "unibolsit.com", true }, - { "unibounty.com", true }, { "unibuses.co.uk", true }, + { "unibusreputation.com", true }, + { "unicarioca.edu.br", true }, { "unicef.pl", true }, { "unicefcards.cz", true }, { "unicefcards.gr", true }, @@ -125178,58 +143740,70 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unicioushop.com", true }, { "unicode.gq", true }, { "unicode.link", true }, - { "unicodeplus.com", true }, + { "unicodeagentur.de", true }, { "unicolabo.jp", true }, { "unicomergiraygana.com", true }, + { "unicool.tk", true }, { "unicorn-systems.net", true }, { "unicorn.melbourne", true }, - { "unicorndesign.ninja", true }, + { "unicorndesign.ninja", false }, { "unicornheaven.net", true }, { "unicornmusic.tk", true }, { "unicornsoft.tk", true }, { "unicorntooling.eu", true }, + { "unicrack.cf", true }, { "unicreditbulbank.info", true }, { "unicul.tk", true }, { "unicycle.ga", true }, { "unicycle.show", true }, { "unidadvirtual.com", true }, - { "unidevgroup.ru", true }, - { "unidostransportes.com.br", true }, + { "unidata.ca", true }, + { "unideb.hu", true }, { "unieducar.org.br", true }, { "uniekglas.nl", true }, { "uniex.ch", true }, { "uniex.pw", true }, { "unifashion.ro", true }, { "unifestal.com", true }, - { "unified.show", true }, { "unifiednetwork.me", true }, + { "unifiedwellness.ca", true }, { "uniforcele.com", true }, { "uniformebateriasheliar.com.br", true }, + { "uniforms.com.au", true }, { "unify.id", true }, { "unik.bg", true }, { "unikainfocom.in", true }, + { "unike.tech", true }, + { "unikimages.com", true }, + { "unikon.su", true }, { "unikos.tk", true }, { "unikrn.com", true }, + { "unikrn.space", true }, + { "unikrn.tech", true }, { "unikrnb2b.com", true }, - { "unila.edu.br", true }, + { "unilab.com.ph", true }, + { "unilinkbus.co.uk", true }, { "unilinkgroup.com", true }, { "unimarijo.com", true }, { "unimarvel.tk", true }, { "unimax.com.tw", true }, { "unimbalr.com", true }, - { "unimed.zp.ua", false }, { "unimeias.com.br", true }, { "unimex.edu.mx", true }, { "unimexver.edu.mx", true }, + { "unimus.net", true }, { "unimusica.tk", true }, + { "uninatural.com.br", true }, { "unine.fun", true }, - { "union.moe", false }, { "unionciclistabinefar.tk", true }, + { "unioncountyilcourts.gov", true }, { "unioncountyiowa.gov", true }, { "unioncountyncelections.gov", true }, { "unioncountyor.gov", true }, + { "unioncr.uk", true }, { "uniondeterapeutas.com", true }, { "unionflpa.gov", true }, + { "unionhoster.ml", true }, { "unionlacalera.tk", true }, { "unionlife-net.com", true }, { "unionmagdalena.tk", true }, @@ -125243,11 +143817,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unipart.digital", false }, { "unipass.ga", true }, { "unipig.de", false }, + { "uniq.moe", true }, + { "uniqclothing.co.za", true }, + { "uniqleen.com.au", true }, + { "uniqopter.com", true }, { "uniqsys.eu", true }, + { "unique-app.com", true }, + { "unique-news.tk", true }, { "unique-punk.tk", true }, - { "unique-tutorials.info", true }, { "unique-urls.tk", true }, - { "uniqueblingautospa.com", true }, { "uniquedollz.tk", true }, { "uniqueexpression-coaching.de", true }, { "uniquehardware.ca", true }, @@ -125255,21 +143833,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uniquemode.nl", true }, { "uniquepathways.ch", false }, { "uniquepress.biz", true }, - { "uniquequilts.co.uk", true }, + { "uniquest.com.au", true }, { "uniquestlye.ga", true }, + { "uniqueworks.tk", true }, { "uniqweb.ga", true }, { "uniresbajdas.ml", true }, { "unis-pour-la-planete.com", true }, { "unis-pour-le-climat.com", true }, { "uniselectweb.com", true }, - { "uniservarabia.com", true }, + { "uniserve.com", true }, + { "unisight.com", true }, + { "unisnu.ac.id", true }, { "unison-d.com", true }, { "unisontech.org", true }, - { "unisunvn.com", true }, + { "unisplendour.com", true }, + { "unistude.com", true }, + { "unisul.br", true }, + { "unisupdi.com", true }, + { "unisys.net.nz", true }, { "unisyssecurity.com", true }, + { "unit-linked.ru", true }, { "unit-soft.com", false }, { "unit15.net", true }, - { "unit3d.site", true }, { "unit7jazz.org", true }, { "unitanzania.com", true }, { "unite-ka.de", true }, @@ -125279,54 +143864,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "united-dm.ml", true }, { "united-schools.net", true }, { "united-trackmaniacs.tk", true }, + { "united-trainers-league.tk", true }, { "united.com", false }, { "unitedadmins.com", true }, { "unitedarmyofentropia.tk", true }, + { "unitedaviate.com", true }, { "unitedbaby.fr", true }, - { "unitedbeautysupply.com", true }, { "unitedbusinessbank.com", true }, { "unitedcarremoval.com.au", true }, { "unitedcyberdevelopment.com", true }, - { "unitedea-ph.com", true }, { "unitedfitness.com.au", true }, - { "unitedforwildlife.org", true }, + { "unitedforwildlife.org", false }, + { "unitedhomeservices.com.au", true }, + { "unitedhoseinc.com", true }, { "unitedkingdoms-guild.com", true }, { "unitedlisbon.school", true }, { "unitedpsychological.com", true }, { "unitedrestorationfl.com", true }, + { "unitedsiteservices.com", false }, { "unitedstables.tk", true }, { "unitedstudents.tk", true }, { "unitedstudios.ru", true }, + { "unitedvalve.com", true }, + { "unitedweb.com", true }, + { "unitedwestand.gov", true }, { "uniteforrecovery.govt.nz", true }, { "unitefortherecovery.govt.nz", true }, { "unitehelivy.be", true }, { "uniteinhealth.org", true }, { "unitel2000.de", false }, + { "unitencup.tk", true }, + { "unither.com", true }, + { "unitil.com", true }, + { "unitingwa.org.au", true }, { "unitir.gq", true }, { "unitizer.com", true }, + { "unitop.bg", true }, + { "unity-lepetitshop.com", true }, + { "unitycardiology.com.au", true }, { "unityconsciousnessbooks.com", true }, { "unityor.gov", true }, { "unitysavannah.org", true }, + { "unityseguros.com", true }, { "unitysyndicate.tk", true }, { "unityvox.com", true }, - { "unium.cloud", false }, { "uniuni.info", true }, { "uniup.tk", true }, - { "univ-monteescalier.fr", true }, { "univ-segou.ml", true }, { "univalence.me", true }, { "univaservizi.academy", true }, { "univate.berlin", true }, + { "univdatos.com", true }, { "univercite.ch", false }, { "univeril.com", false }, { "univerkeys.com", true }, { "universal-credit.com", true }, { "universal-happiness.com", true }, - { "universal-techno.com", true }, + { "universal-mail.ml", true }, { "universal-tutorial.com", true }, { "universal-village.org", true }, { "universal.at", true }, { "universalcircus.tk", true }, + { "universaldriveshafts.com", true }, { "universalecology.tk", true }, { "universalmedia.tk", true }, { "universalmusic.pl", false }, @@ -125334,53 +143933,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "universalplant.com", true }, { "universalspf.org", true }, { "universalstars.com.au", true }, - { "universalvulnerabilityidentifier.org", true }, { "universalwebcommunity.tk", true }, { "universdejeff.com", true }, { "universe.horse", true }, { "universe.la", true }, { "universe.wtf", true }, + { "universehistory.net", true }, + { "universehk.tk", true }, { "universeinform.com", true }, { "universeit.mx", true }, { "universellafredsdanser.se", true }, { "universellesleben.tk", true }, + { "universemasterplan.com", true }, { "universen.tk", true }, + { "universereligion.com", true }, + { "universevision.com", true }, { "universidadean.edu.co", true }, { "universidadperu.com", true }, { "universitapopolaredeglistudidimilano.wiki", true }, { "universiteplatformu.com", true }, { "universitepourlavie.tk", true }, { "universitesegou.ml", true }, - { "universiteye.org", true }, { "universityadmissions.se", true }, { "universitycentre.co.uk", true }, + { "universityhealthplans.com", true }, { "universityhousemates.co.uk", true }, { "universityhousemates.uk", true }, { "universityinmaryland.com", true }, - { "universityintexas.com", true }, { "universityofedinburgh.org.uk", true }, { "universityofnarowal.ga", true }, - { "universitypark.com.tr", true }, { "universitywafer.com", true }, + { "universoagropets.com.br", true }, { "universocaballo.top", true }, + { "universodelasaludanimal.com", true }, { "universogay.com", true }, - { "universoscuola.it", true }, - { "universovalve.net", true }, + { "universrumbacongolaise.com", true }, { "universus.tk", true }, { "univim.edu.mx", true }, { "univitale.fr", false }, + { "unix.family", true }, { "unix.lu", true }, { "unixadm.org", true }, { "unixapp.ml", true }, - { "unixattic.com", true }, { "unixauto.com", true }, { "unixauto.de", true }, { "unixauto.hu", true }, { "unixauto.ro", true }, { "unixauto.sk", true }, { "unixer.tk", true }, + { "unixery.de", true }, { "unixforum.org", true }, { "unixfox.eu", true }, + { "unixgeeks.net", true }, { "unixhost.ga", true }, { "unixteam.de", true }, { "unixtime.date", true }, @@ -125388,6 +143992,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unkn0wncat.net", true }, { "unknown-player.com", true }, { "unknown.kyoto", false }, + { "unknownhacks.tk", true }, { "unknownmasses.tk", true }, { "unknownnet.tk", true }, { "unknowntrailsrider.tk", true }, @@ -125401,6 +144006,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unlimiteddsl.ga", true }, { "unlimitedheatingcooling.com", true }, { "unlimitedzone.tk", true }, + { "unlocator.com", true }, { "unlock-my-sprint.mobi", true }, { "unlockauthority.com", true }, { "unlockblackberryfree.co.uk", true }, @@ -125408,29 +144014,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unlocken.nl", true }, { "unlockerboss.com", true }, { "unlocks.co.uk", true }, + { "unlockscheveningen.nl", false }, { "unlocktalent.gov", true }, - { "unlocktechs.com", true }, + { "unlocktoolactivation.com", true }, + { "unlocktoolactivation.in", true }, { "unluco.com", true }, + { "unm-ye.com", true }, { "unmanaged.space", true }, { "unmarkdocs.co", true }, { "unmask.earth", true }, - { "unmediodigital.com", true }, + { "unmaskingtech.com", true }, + { "unmetric.com", true }, { "unminutomami.com", true }, { "unmo.com", true }, { "unn-edu.info", true }, - { "unnamed.download", true }, { "unnamed.tk", true }, { "unnas.ca", true }, + { "unniehallyu.co.uk", true }, { "uno-express.de", true }, { "uno.fi", true }, { "uno.uk", true }, { "unobrindes.com.br", true }, { "unoccupyabq.org", true }, + { "unocha.org", true }, + { "unofficialbpb.tk", true }, { "unoodostoques.tk", true }, + { "unope.ml", true }, + { "unope.ru", true }, + { "unope.tk", true }, { "unoptional.tk", true }, { "unoriginal.tk", true }, { "unosconotros.com", true }, + { "unovosti.tk", true }, { "unp.me", true }, + { "unpar.ac.id", true }, + { "unparenting.com", true }, { "unpkg.com", true }, { "unpleasant.tk", true }, { "unpluggedjuice.dk", true }, @@ -125440,22 +144058,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unpossible.xyz", true }, { "unpost.net", true }, { "unpr.dk", true }, + { "unreal-estate.cz", true }, + { "unreal-estate.pl", true }, { "unreal.dk", true }, { "unrealircd.org", true }, { "unrelated.net.au", true }, + { "unrepentant.cf", true }, { "unrepentant.ga", true }, { "unrepentant.ml", true }, { "unrestricted.ga", true }, { "unri.de", true }, { "unric.org", true }, - { "unripple.com", true }, + { "uns.com", true }, { "unsee.cc", true }, { "unseeliefilms.com", true }, { "unseeliepress.com", true }, { "unseen.is", true }, { "unseen.tw", true }, { "unser-gartenforum.de", true }, - { "unsharpen.com", true }, { "unsigcrazy.art", true }, { "unsourirealecole.fr", true }, { "unstable.fun", true }, @@ -125469,29 +144089,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "unstoppableever.com.br", true }, { "unstoppableunits.com", true }, { "unsupervised.ca", true }, + { "untarget.ai", true }, { "unterfrauner.it", true }, { "unterhaltungsbox.com", true }, + { "unternehmensberater-website.de", true }, { "unternehmensbewertung.pro", true }, - { "unternehmer-radio.de", true }, { "unternehmerrat-hagen.de", true }, { "unternimmteam.de", true }, { "untethereddog.com", true }, { "unti.me", true }, { "unti.tk", true }, + { "untidybits.com", true }, { "untitled-home-storage.cyou", true }, + { "untrading.org", true }, { "untro.xyz", true }, { "untvweb.com", true }, { "unufoundation.com", true }, { "unusedrooms.com", true }, { "unusualhatclub.com", true }, - { "unusualworldd.com", true }, - { "unveiledanatolia.com", true }, + { "unusualplaces.org", true }, { "unveiledgnosis.com", true }, { "unveilturkey.com", true }, + { "unviajedesabor.com", true }, { "unvired.com", true }, + { "unwa.tk", true }, { "unwire.com", true }, { "unwiredbrain.com", false }, { "unwishingmoon.com", true }, + { "unworldoceansday.org", true }, { "unworthy.ml", true }, { "unx.dk", true }, { "unxicdellum.cat", true }, @@ -125502,16 +144127,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uomo.com.ar", true }, { "uopeople.reviews", true }, { "uoui.de", true }, + { "up-obmen.ml", true }, + { "up-schaltanlagen.de", true }, { "up-stage.jp", true }, { "up.com.au", true }, + { "up.nic.in", true }, { "up1s.tk", true }, { "up2date.com.ua", true }, { "up2mark.com", false }, { "up2staff.com", true }, + { "up2tech.fr", true }, + { "up4cash.com", true }, + { "upahminimum.com", true }, { "upakovka-podarkov.tk", true }, - { "upakweship.ca", true }, - { "upakweship.eu.com", true }, - { "upakweship.uk.com", true }, { "upandatom.biz", true }, { "upandrunningtutorials.com", true }, { "upar.org", true }, @@ -125524,58 +144152,73 @@ static const nsSTSPreload kSTSPreloadList[] = { { "upbeatrobot.net", true }, { "upbeatrobot.nl", true }, { "upbeatrobot.org", true }, + { "upbeatrobot.social", true }, { "upbtrbt.com", true }, { "upbtrbt.eu", true }, { "upbtrbt.net", true }, { "upbtrbt.nl", true }, { "upbtrbt.org", true }, { "upcambio.com", true }, + { "upclinic.ru", true }, { "upcloud.cz", true }, { "upcwifikeys.com", true }, + { "upcycleandcompany.com", true }, { "upd.jp", true }, + { "updata.com", true }, { "update-linthdcp-567app1.com", true }, { "update287.org", true }, + { "updatemedia.or.id", true }, { "updefense.io", true }, { "updoze.com", true }, + { "upenergy.co.uk", true }, { "upengo.com", true }, { "uperne.ro", true }, { "upestudios.tk", true }, { "upex.tk", true }, + { "upfield.com", true }, { "upflow.io", true }, - { "upfreshfranchise.com", true }, + { "upforshare.com", true }, { "upfurniture.tk", true }, { "upgamerengine.com", true }, { "upgamerengine.com.br", true }, { "upgamerengine.net", true }, + { "upgintl.com", true }, { "upgrade.com", true }, + { "upgradeguru.de", true }, { "upgradeit.dk", true }, { "upgradeloans.com", true }, { "upgrades-and-options.com", true }, { "upgraid.ru", true }, + { "upguard.com", true }, { "upguard.org", true }, { "uphabit.io", true }, { "uphold-15-party.com", true }, { "upholsterycleanerslondon.co.uk", true }, { "upholsterydesign.com.au", true }, { "uphost.be", true }, + { "uphshrine.com", true }, { "upitnik.rs", true }, { "upjong.co.kr", true }, - { "uplab.gr", true }, - { "uplan.com.ua", true }, - { "uplandsnacks.com", true }, { "uplandsparkmo.gov", true }, { "uplaqui.com.br", true }, { "uplead.com", true }, + { "upleveled.io", true }, + { "uplexis.com.br", true }, { "upliftingappalachia.org", true }, { "uplinkgame.tk", true }, { "uplinklabs.net", true }, + { "uplinkrev.com", true }, + { "uplinks24.com", true }, { "upload.facebook.com", false }, + { "uploadbaz.me", true }, { "uploadbeta.com", true }, - { "uploadbro.com", true }, { "uploadcare.com", true }, + { "uploadingsite.com", true }, { "uploads.su", true }, + { "uploadscript.tk", true }, { "uploadtokiosk.com", true }, { "uplr.it", true }, + { "upmail.ml", true }, { "upmchealthsecurity.us", true }, { "upmediaclick.com", true }, { "upmediaclick.net", true }, @@ -125583,43 +144226,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "upmls.com", true }, { "upmon.com", true }, { "upnetwork.ml", true }, + { "upnext.tk", true }, + { "upnfm.edu.hn", true }, + { "upnorth.solutions", true }, { "uponsel.com", true }, { "uportal.tk", true }, - { "upped.com.my", true }, + { "upp.com", true }, + { "uppercloud.cf", true }, + { "upperglass.co.uk", true }, + { "upperinc.com", true }, { "upperskagittribe-nsn.gov", true }, { "uppfinnarenc.tk", true }, + { "upplands-bro.se", true }, { "upplevelse.com", true }, { "uppsala.tk", true }, { "upr.com.ua", true }, + { "upr.edu", true }, { "upr.llc", true }, { "upr.si", true }, { "upr.ua", true }, + { "uprawnienia-1kv.pl", true }, { "uprawnienia-dronowe.pl", true }, { "uprawnienia-drony.pl", true }, { "uprawnienia-g1.pl", true }, + { "uprawnienia-motorowodne.pl", true }, + { "uprawnienia-pomiary.pl", true }, { "uprawnienia-sep-1kv.pl", true }, { "uprawnienia-sep.com.pl", true }, + { "uprep.lol", true }, + { "uprep.ml", true }, + { "uprighttrades.com", true }, { "uprint.it", true }, + { "uprisehigh.com", true }, { "upropay.com", true }, + { "upschreven.blog", false }, { "upscope.io", true }, { "upsdelperu.com.pe", true }, { "upsettunnel.com", true }, { "upsihologa.com.ua", false }, { "upsilonsigmaphi.us", true }, + { "upsiteseo.com", true }, + { "upskilllearning.ml", true }, + { "upskirtmania.tk", true }, { "upsocial.ga", true }, { "upsocial.pp.ua", true }, { "upstairs.one", true }, { "upstart.com", true }, + { "upstatesc.net", true }, + { "upstream.auto", true }, { "uptech.biz.id", true }, - { "uptech.vn", true }, { "uptechbrasil.com.br", true }, { "uptimed.com", true }, - { "uptimesonar.com", true }, + { "uptimeradar.com", true }, { "uptimeuno.com", true }, + { "uptional.gq", true }, + { "upto.se", true }, { "uptodateinteriors.com", true }, { "uptoplay.ovh", true }, { "uptownbabe.com", true }, - { "uptownlocators.com", true }, { "uptrends.com", true }, { "uptrends.de", true }, { "uptrex.co.uk", true }, @@ -125627,13 +144291,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "upupming.site", false }, { "upupor.com", true }, { "upviews.tk", true }, - { "upvoted.net", true }, { "upwardcreative.com", true }, + { "upwardflourish.com", true }, { "upwardtraining.co.uk", true }, { "upwork.com", true }, + { "upyourfinances.com", false }, { "uq1k.com", true }, { "uqschool.com", true }, { "uquid.com", true }, + { "uquidcoin.com", true }, { "ur-lauber.de", true }, { "ur.nl", true }, { "ur2.pw", true }, @@ -125645,9 +144311,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ural-emal.ga", true }, { "ural-travel.ml", true }, { "ural.cf", true }, + { "ural.ga", true }, + { "ural.tk", true }, + { "uralec.tk", true }, { "uralscoin.ml", true }, + { "uralsite.cf", true }, + { "uralsk.ml", true }, + { "uralskaya-garmon.tk", true }, + { "uralspravka.cf", true }, { "urandom.co.uk", true }, + { "urang-kurai.tk", true }, { "uraniborg.net", true }, + { "uraniumhost.ga", true }, { "uranius.eu", true }, { "uranmoney.ml", true }, { "uranus.cf", true }, @@ -125655,15 +144330,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urbalex.ch", false }, { "urban-culture.fr", true }, { "urban-lounge.tk", true }, + { "urban-news.tk", true }, { "urban.melbourne", true }, + { "urbanagriculturesummit.cf", true }, + { "urbanail.gov", true }, { "urbanarcana.tk", true }, { "urbanartisan.cf", true }, { "urbanbageecha.com", true }, + { "urbanbikeweamr.ga", true }, + { "urbanbooks.tk", true }, { "urbancoffee.com.mx", true }, + { "urbancoyoteresearch.com", false }, { "urbancreators.dk", true }, { "urbane-narrationen.de", true }, - { "urbanemc.net", false }, { "urbanesecurity.com", true }, + { "urbanevielfalt.de", true }, + { "urbanface.photography", true }, { "urbanfineart.ro", true }, { "urbanfoodmarket.nl", true }, { "urbanfun.ga", true }, @@ -125671,35 +144353,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urbangardening.ga", true }, { "urbanguerillas.de", true }, { "urbangymfirenze.com", true }, + { "urbanhost.tk", true }, { "urbanhotbed.eu", true }, { "urbanietz-immobilien.de", true }, - { "urbanility.com", true }, { "urbanindustriecoiffure-auray.fr", true }, { "urbanism.xyz", true }, { "urbanized.tk", true }, { "urbanizedrecords.tk", true }, - { "urbanjunior.com", true }, + { "urbanlounge.tk", true }, + { "urbanlymodern.com", true }, { "urbanmic.com", true }, + { "urbanmuslim.tk", true }, { "urbannewsservice.com", true }, { "urbanology.tk", true }, { "urbanon.cz", true }, + { "urbanovich.net", true }, { "urbanpiraten.tk", true }, { "urbanpromisetrenton.org", true }, + { "urbansketchers.org", true }, { "urbansoundwave.tk", true }, { "urbanspitz.tk", true }, { "urbanstylestaging.com", true }, - { "urbansurvival.com", true }, - { "urbantech.ws", true }, { "urbantecno.com", true }, + { "urbantrafficschool.com", true }, { "urbantrail.tk", true }, { "urbanusonline.tk", true }, { "urbanwaters.gov", true }, { "urbanwave.co.za", true }, { "urbanxdevelopment.com", false }, + { "urbarberjerry.com", true }, { "urbest.io", true }, + { "urbex.link", true }, { "urbexdk.nl", true }, - { "urbexing.eu", true }, - { "urbizoroofing.com", true }, + { "urburb.social", true }, { "urbv.eu", true }, { "urbv.net", true }, { "urbv.org", true }, @@ -125708,13 +144394,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urcentral.net", true }, { "urcentral.nl", true }, { "urcentral.org", true }, + { "urcommunitytimebanking.org.au", true }, { "urdoverie.com", true }, + { "ureed.com", true }, { "ureka.org", true }, { "urfreecon.tk", true }, { "urge55.com", true }, { "urgences-valais.ch", true }, { "urgencesolidarite.fr", true }, + { "urgent-notice.ml", true }, { "urgentcaresouthaven.com", true }, + { "urgrafix.com", true }, { "urion.com.br", true }, { "uriport.com", true }, { "uriports.com", true }, @@ -125728,8 +144418,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urkult.se", false }, { "url.fm", true }, { "url.ht", true }, - { "url.kg", true }, - { "url.rw", true }, { "urlakite.com", true }, { "urlaub-busreisen.de", true }, { "urlaub-leitner.at", true }, @@ -125750,38 +144438,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "urlauthority.uk", true }, { "urlbox.tk", true }, { "urlcitr.us", true }, + { "urlcitrus.com", true }, { "urlendecoder.tk", true }, { "urlfly.tk", true }, { "urlgoo.ga", true }, { "urlive.ga", true }, + { "urljournal.tk", true }, + { "urlrating.com", true }, { "urlscan.io", true }, { "urlsimple.tk", true }, { "urltell.com", true }, { "urltodomain.com", true }, { "urluno.com", true }, + { "urlwing.tk", true }, { "urlz.ml", true }, + { "urlz.tk", true }, { "urmikron.tk", true }, - { "urnenexpert.nl", true }, { "urnes.org", true }, + { "urocentre.ga", true }, { "urogen.com", true }, - { "urokoff.net", true }, + { "uroki.tk", true }, { "urology.wiki", true }, { "urologyoklahoma.com", true }, { "urologyspecialistspc.com", true }, { "urologywi.com", true }, + { "uromeeme.com", true }, { "uronlinestreams.ga", true }, { "urown.net", true }, + { "urpost.xyz", true }, { "urrestarazuserranoabogados.com", true }, { "ursa-minor-beta.org", true }, { "ursae.co", true }, + { "ursonatefanzine.tk", true }, { "urspringer.com", true }, { "urspringer.de", true }, + { "urstore.ga", true }, + { "ursula-gadalka.tk", true }, + { "ursulahadasch.de", true }, { "ursuslibris.hu", true }, + { "urt.fm", true }, { "uruguay-experience.com", true }, + { "urukproject.org", true }, { "uruslugi.tk", true }, { "urvastekool.edu.ee", true }, { "us-10.cc", true }, { "us-10.com", true }, + { "us-accountant.com", true }, { "us-films.com", true }, { "us-igloopreview.com", true }, { "us-immigration.com", true }, @@ -125789,6 +144491,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "us.gov", true }, { "us.kg", true }, { "us.marketing", true }, + { "us.nl.eu.org", true }, { "us10.net", true }, { "us2uplumbing.com.au", true }, { "usa-10.com", true }, @@ -125800,18 +144503,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usa250.gov", true }, { "usaa.com", false }, { "usabackground.com", true }, + { "usabilis.com", true }, { "usability.com.gr", true }, { "usability.gov", true }, + { "usabusinessdirectories.com", true }, + { "usabynumbers.com", true }, + { "usacarry.com", true }, { "usacrime.com", true }, { "usadba.net.ru", true }, { "usadf.gov", true }, { "usadirectory.tk", true }, { "usaestaonline.com", true }, + { "usafootball.com", true }, { "usage.be", true }, { "usagexchange.com", true }, + { "usagi-ku.ga", true }, { "usagm.gov", true }, { "usagov.gov", true }, { "usahealthwebapps.com", true }, + { "usaherald.com", true }, + { "usaisilanlari.com", true }, { "usait.org", true }, { "usajobs.com", true }, { "usajobs.gov", true }, @@ -125819,22 +144530,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usamale.cf", true }, { "usamdt.com", true }, { "usamultimeters.com", false }, - { "usap.gov", false }, + { "usanamiru.cz", true }, + { "usanewsposts.ga", true }, + { "usanewstrends.ga", true }, { "usapel.com.br", true }, { "usaprimecredit.org", true }, { "usapublicrecords.com", true }, { "usarp.org", true }, + { "usascripthelpers.com", true }, { "usaseanconnect.gov", true }, { "usastaffing.gov", true }, + { "usatiuk.com", true }, { "usatodaynetworkservice.com", true }, { "usatodaysportsplus.com", true }, + { "usavingsbank.com", true }, + { "usaweblist.tk", true }, { "usawireguard.com", true }, - { "usb-lock-rp.com", true }, { "usbcompatible.com", true }, - { "usbcraft.com", true }, { "usbevents.co.uk", true }, { "usbr.gov", true }, { "uscc.org.ua", true }, + { "uscdn.xyz", true }, { "uscis.gov", true }, { "uscitizenship.info", true }, { "uscloud.nl", true }, @@ -125842,8 +144558,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usctt.org", true }, { "uscurrency.gov", true }, { "uscveteranspark.org", true }, + { "usda.gov", true }, { "usdailyhealth.tk", true }, { "usdfc.gov", true }, + { "usdirectory.com", true }, { "usdirectory.tk", true }, { "usdoj.gov", true }, { "usdoscloud.gov", true }, @@ -125852,84 +144570,104 @@ static const nsSTSPreload kSTSPreloadList[] = { { "use.be", true }, { "usebosin.gq", true }, { "usecamisetas.com", true }, + { "used-laptop.in", true }, { "used255.xyz", true }, { "useful-thing.ru", true }, + { "usefuldiy.com", true }, { "usefulinsight.com", true }, + { "usefultravelsite.com", true }, { "usehonk.com", true }, { "usemergencyservices.com", true }, { "usenet.tk", true }, { "usenethd.li", true }, + { "usenetreviewz.com", true }, { "useon.com", true }, { "useon.ru", false }, + { "user-agent.ml", true }, { "user-daitron.jp", true }, { "userbase.com", true }, { "usercentrics.com", true }, { "usercompare.tk", true }, + { "useresponse.com", true }, + { "userflow.com", true }, { "userhelp.tk", true }, - { "userify.com", true }, { "username.nz", true }, + { "userpizza.com", true }, { "userra.gov", true }, { "userstation.de", true }, { "userstyles.world", true }, { "usetypo3.com", true }, { "useworkshop.com", true }, { "useyourloaf.com", true }, + { "usgamesinc.com", true }, { "usgeneralhealth.tk", true }, + { "usgovernmentnews.com", true }, + { "usgs.gov", true }, { "ushandbookapp.com", true }, { "ushare.ch", true }, { "ushealthprovider.ga", true }, { "usherwoodexecutivetravel.com", true }, - { "ushi808.com", true }, { "usicecenter.gov", true }, { "usidfc.gov", true }, { "usintimate.com.br", true }, - { "usitcolours.bg", true }, + { "usjt.br", true }, { "usjunkyardsnearme.com", true }, + { "usk-clan.tk", true }, + { "uskaonline.tk", true }, { "uskaria.com", true }, { "uskostadariksi.fi", true }, { "uslab.io", false }, - { "usleep.net", true }, { "usleravnekrog.dk", true }, + { "uslugi-advokata.ga", true }, { "uslugi-advokata.tk", true }, { "uslugi-online.pl", true }, { "uslugi-voronezh.tk", true }, { "uslugikoparkalodz.gq", true }, { "usmammy.com.tw", true }, + { "usmanaziz.tech", true }, { "usmantrader.gq", true }, { "usmiddleclass.net", true }, { "usmint.gov", true }, + { "usmoneyreserve.com", true }, { "usmrecycles.com", true }, { "usnews-new.tk", true }, { "usnews.ga", true }, { "usninosnikrcni.eu", true }, { "usnti.com", true }, { "usodesu.ga", true }, + { "usoog.com", true }, { "usoptical.com", true }, { "uspaacc.com", true }, { "uspanglish.com", true }, { "usparklodging.com", true }, { "uspeh62.tk", true }, { "uspeli.ml", true }, - { "uspesnyprvnacek-demo.herokuapp.com", true }, - { "uspesnyprvnacek-staging.herokuapp.com", true }, - { "uspesnyprvnacek-testing.herokuapp.com", true }, { "uspesnyprvnacek.cz", true }, - { "uspesnyprvnacek.herokuapp.com", true }, { "usphs.gov", true }, { "uspib.info", true }, { "usplate.com", true }, { "uspon.tk", true }, { "usportsgo.com", true }, + { "uspory.cz", true }, { "uspreventiveservicestaskforce.org", true }, + { "uspsblog.com", true }, + { "uspsoig.gov", true }, { "usr.nz", false }, { "usrspace.at", true }, { "uss-atlas.de", true }, + { "uss-electro.ru", true }, { "ussemiquincentennial.gov", true }, + { "ussfcu.org", true }, { "ussm.gov", true }, + { "ussm.tk", true }, + { "ussnoorinayatkhan.com", true }, { "ussst.org", true }, { "ussst.org.in", true }, + { "ustabor.uz", true }, { "ustaywell.com", true }, + { "ustc.fun", true }, { "ustensiles-cuisine.boutique", true }, + { "ustoy.com", true }, { "ustr.gov", true }, { "ustugov.kiev.ua", true }, { "ustugova.kiev.ua", true }, @@ -125941,34 +144679,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "usuwanie-wirusow-wordpress.pl", true }, { "usvisallc.com", true }, { "uswitch.com", true }, + { "uswritemyessay.com", true }, { "usyfawovad.gq", true }, { "usygov.ga", true }, { "ut-addicted.com", true }, { "ut-jobs.net", true }, { "ut5s.com", true }, { "utafutbol.tk", true }, + { "utagawavtt.com", true }, + { "utageno.jp", true }, { "utahblackplate.com", true }, { "utahblackplates.com", true }, { "utahcanyons.org", true }, { "utahcountydjcompany.com", true }, { "utahdebtcare.com", true }, { "utahfanclub.org", true }, + { "utahfireinfo.gov", true }, + { "utahlake.gov", true }, { "utahmotors.ru", true }, { "utahonlinedivorce.com", true }, + { "utahphotogs.com", true }, { "utahtravelcenter.com", true }, { "utaindoradio.cf", true }, { "utangard.net", true }, { "utaowan.com", false }, + { "utarn.icu", true }, { "utavatu.mk", true }, { "utazas-nyaralas.info", true }, { "utbabogados.com", true }, { "utbosbeekhuuske.tk", true }, { "utcast-mate.com", true }, { "utduc.com", true }, - { "uteasybooki.com", true }, + { "utec.edu.pe", true }, { "utensil.org", true }, { "utevai.tk", true }, { "uthavi.org", true }, + { "utiao.net", true }, { "utiars.com", true }, { "uticagravel.com", true }, { "utilajexpert.ro", true }, @@ -125980,23 +144726,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "utilitarian.org", true }, { "utilitarianism.com", true }, { "utilitarianism.org", true }, + { "utilitarianism.uk", true }, { "utilitarismo.com", true }, + { "utilitiesconstructionsettlement.com", true }, + { "utilitronium-shockwave.com", true }, { "utilitronium.com", true }, { "utilityapi.com", true }, { "utilitybot.in", true }, - { "utitreatment.com", true }, + { "utilityconcierge.com", false }, { "utleg.gov", true }, { "utloperadora.com.br", true }, - { "utmel.com", true }, + { "utodyg.ga", true }, { "utonia.ch", true }, + { "utopia-ecosystem.com", true }, + { "utopiahsa.com", true }, { "utopialgb.org.uk", true }, + { "utopian-institute.tk", true }, + { "utopian-surgery.com", true }, + { "utopiancapitalism.tk", true }, { "utopians.dk", false }, { "utopiasmart.city", true }, { "utopiatech.tk", true }, { "utopicestudios.com", true }, { "utopique.net", true }, { "utopyaforum.tk", true }, - { "utos.ws", true }, + { "utp.edu.pe", true }, { "utrace.me", true }, { "utrantor.org", true }, { "uttama.ga", true }, @@ -126004,6 +144758,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "utterberry.io", true }, { "utterman.se", true }, { "uttnetgroup.fr", false }, + { "utube.ai", true }, + { "utural.tk", true }, + { "utusan.com.my", true }, { "utvbloggen.se", true }, { "utw.me", true }, { "utwente.io", true }, @@ -126019,14 +144776,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uu9721.com", false }, { "uu9728.co", true }, { "uubb.top", true }, + { "uuin.top", true }, { "uuit.nl", true }, { "uulu.edu.ee", true }, { "uurl.cf", true }, { "uurl.ga", true }, - { "uuzsama.me", true }, + { "uuuu.loan", true }, { "uv.uy", true }, - { "uvcbyefsen.com", true }, + { "uvarov.pw", false }, + { "uvb.com.co", true }, { "uvenuse.cz", true }, + { "uvesco.es", true }, { "uvlamp.ee", true }, { "uvocorp.com", true }, { "uvomaltiv.ch", true }, @@ -126035,71 +144795,83 @@ static const nsSTSPreload kSTSPreloadList[] = { { "uvsar.com", true }, { "uvt.com.co", true }, { "uvtcinemas.com", true }, + { "uvx.io", true }, { "uwac.co.uk", false }, + { "uwalumni.com", true }, { "uwat.cc", true }, { "uwat.cf", true }, + { "uwdigitaleboekhouder.nl", true }, { "uwe-arzt.de", true }, { "uwe-r.com", true }, { "uwe-reimold.com", true }, { "uwe-reimold.de", true }, { "uwe.training", true }, { "uwe.wtf", true }, + { "uweeze.com", true }, + { "uwefreund.com", true }, + { "uweier.com", true }, { "uwereimold.de", true }, { "uwesander.de", true }, { "uwfreelanceopticien.nl", true }, + { "uwiventuresltd.com", true }, { "uwsalonboot.nl", true }, - { "uwu.lgbt", true }, + { "uwtd.me", true }, + { "uwu.lgbt", false }, { "uwu.nu", true }, + { "uwu.tw", true }, { "uwwsb.com", true }, { "ux-designers.nl", true }, { "ux-solution.de", false }, + { "ux.pub", true }, { "uxdesignerjobs.nl", true }, { "uxg.ch", true }, - { "uxlinux.com", true }, { "uxpressia.com", true }, { "uxteam.com", true }, { "uy.search.yahoo.com", false }, { "uyen.party", true }, { "uygindir.ml", true }, - { "uyz.me", true }, + { "uz-yulduzlar.tk", true }, { "uz.search.yahoo.com", false }, - { "uzay.org", true }, + { "uz1xbet.com", true }, + { "uzagmozemunk.ga", true }, + { "uzagmozemunk.ml", true }, { "uzayliyiz.biz", true }, + { "uzbaza.tk", true }, { "uzbek-soft.tk", true }, + { "uzbekistan24.tk", true }, { "uzbekkizlari.cf", true }, { "uzbekkizlari.gq", true }, + { "uzbekkizlari.ml", true }, { "uzbekkizlari.tk", true }, { "uzbektumblers.tk", true }, - { "uze-mobility.at", true }, - { "uze-mobility.ch", true }, - { "uze-mobility.co", true }, - { "uze-mobility.com", true }, - { "uze-mobility.group", true }, - { "uze-mobility.info", true }, - { "uze-mobility.io", true }, - { "uze-mobility.net", true }, + { "uzbwap.tk", true }, { "uze-store.com", true }, - { "uze.mobi", true }, - { "uzemobility.de", true }, - { "uzemobility.eu", true }, - { "uzemobility.org", true }, { "uzhas-uzhasny.ml", true }, { "uzhits.cf", true }, { "uzidesign.com", true }, { "uziregister.nl", false }, { "uzkalip.com", true }, { "uzmansorusu.com", true }, - { "uzmoveis.com.br", true }, - { "uzone.uk", true }, + { "uznaychtotakoe.ru", true }, + { "uzoic.com", true }, + { "uzone.uk", false }, + { "uzparimatch.com", true }, { "uzsvm.cz", true }, + { "uztop.ml", true }, { "uzzamari.com", true }, { "uzzamari.com.br", true }, { "v-d-p.net", true }, + { "v-empower.com", true }, + { "v-gornom.ga", true }, { "v-horus.cloud", true }, { "v-jo.com", true }, { "v-kurgane.tk", true }, + { "v-media.tk", true }, + { "v-news.tk", true }, { "v-novosibirske.tk", true }, + { "v-ogorode.info", true }, { "v-phoenix.tk", true }, + { "v-platinum.ru", true }, { "v-spin.cz", true }, { "v-tek.fi", true }, { "v-u-z.ru", true }, @@ -126115,6 +144887,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "v139.com", true }, { "v1r2zz.tk", true }, { "v1sit0r.ru", true }, + { "v2.digital", true }, { "v2.pw", true }, { "v2bv.net", true }, { "v2bv.win", true }, @@ -126122,13 +144895,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "v2mcdev.com", true }, { "v2raytech.com", true }, { "v2x.sk", true }, + { "v2xtls.org", true }, { "v2yes.com", true }, { "v3025.com", false }, { "v33v33.com", true }, { "v36533.com", true }, { "v44v44.com", true }, { "v5017.com", false }, - { "v5075.com", true }, { "v51365.com", true }, { "v5197.co", true }, { "v55565.com", false }, @@ -126146,6 +144919,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "v6729.co", true }, { "v6752.com", true }, { "v6957.co", true }, + { "v6ss.com", true }, { "v700a.com", true }, { "v700bb.com", true }, { "v700cc.com", true }, @@ -126153,22 +144927,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "v700ee.com", true }, { "v700w.com", true }, { "v7090.com", false }, - { "v800y.com", false }, { "v81365.com", true }, { "v82365.com", true }, { "v88158.com", true }, { "v88511.com", false }, { "v8abc.com.br", true }, { "v8builder.com", true }, - { "v9037.com", true }, { "v9285.com", false }, { "v9297.co", true }, { "v9728.co", true }, { "v9728.com", false }, - { "v9820.com", true }, { "va-11-hall-a.cafe", true }, - { "va-reitartikel.com", true }, { "va.gov", false }, + { "va.ua", true }, { "va11hal.la", true }, { "va11halla.ddns.net", true }, { "vaabogados.legal", true }, @@ -126180,6 +144951,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vabusinesses.org", true }, { "vacacionesenlinea.com", true }, { "vacacionestours.com", true }, + { "vacaf.org", true }, { "vacanze-in-montagna-dolomiti.com", true }, { "vacanze-merano.org", true }, { "vacatecleaning.melbourne", true }, @@ -126187,9 +144959,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vacation-croatia.com", true }, { "vacation-in-pisak.tk", true }, { "vacationfund.co", true }, + { "vacationrentals.com.co", true }, + { "vacaturesonline.nl", true }, { "vaccantcorner.ml", true }, { "vaccinateiowa.gov", true }, - { "vaccinatiespecialist.nl", true }, + { "vaccination-info.eu", true }, { "vaccine.gov", true }, { "vaccines.gov", true }, { "vaccineskill.biz", true }, @@ -126197,27 +144971,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vacine.gov", true }, { "vacines.gov", true }, { "vackor.tk", true }, + { "vackradetaljer.se", true }, + { "vaclan.tk", true }, { "vaclavambroz.eu", true }, { "vaclavkocum.com", true }, { "vacome.com", true }, { "vacuna.gov", true }, { "vacunas.gov", true }, - { "vacuumpump.co.id", false }, + { "vacuumpump.co.id", true }, { "vacuumsealers.ml", true }, + { "vacuumsupplystore.com", true }, + { "vadeainterior.com", true }, { "vademekum.com", true }, { "vader.news", true }, { "vaderochvind.se", true }, { "vaderqkcloud.ddns.net", true }, { "vadiar-angola.tk", true }, + { "vadidanismanlik.com", true }, { "vadik.me", true }, + { "vadillodelasierra.tk", true }, { "vadis.tk", true }, + { "vadivudaiamman.org", true }, { "vado.li", true }, { "vadras.rs", true }, - { "vaeplatform.com", true }, { "vaew.com", true }, { "vagabond.film", true }, { "vagabond.fr", true }, { "vagabond.tk", true }, + { "vagabondages.tk", true }, + { "vagabondgal.com", true }, + { "vagabundos.tk", true }, { "vagaerg.com", true }, { "vagaerg.net", true }, { "vaganciatechnology.com", false }, @@ -126230,36 +145013,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vagrantbits.com", true }, { "vagrantcloud.com", true }, { "vagrantup.com", false }, + { "vague-normande.com", true }, { "vahak.in", false }, { "vahl.blue", true }, { "vahoshop.cz", true }, { "vaibhavchatarkar.com", false }, { "vaidikapriya.pub", false }, - { "vailrealestate.com", true }, - { "vainavainilla.com", true }, + { "vail.gov", true }, + { "vaildcrack.com", true }, { "vaindil.com", true }, { "vaioswolke.xyz", false }, { "vairuok.lt", true }, { "vak-pobeda.ru", true }, + { "vakanser.se", true }, { "vakantiedetective.nl", true }, { "vakantiehuisschellinkhout.nl", true }, { "vakantiehuisverzekeringen.nl", true }, + { "vakantieinfo.tk", true }, { "vakantieverblijfalgarve.nl", true }, + { "vakat.eu", true }, { "vakifuniver.ru", true }, - { "vakilik.com", true }, { "vakita.fi", true }, { "vakrebella.no", true }, { "vakuutuskanava.fi", true }, { "vakwinkeldemo.nl", true }, { "val-casies.net", true }, { "val-sec.com", true }, + { "valach.cz", true }, { "valagrovoce.com", true }, + { "valant.io", true }, { "valaphee.com", true }, { "valariejenkins.com", true }, { "valasi.eu", true }, { "valassis.com", true }, + { "valasskyregion.cz", true }, + { "valbon.pl", true }, { "valcano-krd.ru", true }, - { "valcano.ru", true }, + { "valdecaballeros.tk", true }, { "valdega.org", true }, { "valdelcubo.tk", true }, { "valdifunes.com", true }, @@ -126273,6 +145063,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valemountmuseum.ca", true }, { "valencia-s-vikoy.ru", true }, { "valenciadevops.me", true }, + { "valenciaescatala.tk", true }, { "valencianisme.tk", true }, { "valencianistas.tk", true }, { "valencraft.ca", true }, @@ -126284,11 +145075,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valentin-ochs.de", true }, { "valentin-weibel.com", true }, { "valentin.app", true }, + { "valentinabelluccipornstar.com", true }, + { "valentinanappipornstar.com", true }, { "valentinaquino.com", true }, { "valentinarosamilia.com", true }, { "valentinberclaz.com", false }, - { "valentineapparel.com", true }, - { "valentineforpresident.com", true }, { "valentinemom.cf", true }, { "valentinemom.ga", true }, { "valentinemom.gq", true }, @@ -126297,10 +145088,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valentinesongs.com", true }, { "valentinoduval.fr", true }, { "valentinog.com", true }, - { "valentinritz.com", false }, + { "valentinstag.ga", true }, { "valentinstag.ml", true }, { "valentinvesa.ro", true }, - { "valeravi.tk", true }, { "valerian.tk", true }, { "valeriansaliou.name", true }, { "valeriapanarina.com", true }, @@ -126312,17 +145102,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valgardsempornium.pw", true }, { "valgavesi.ee", true }, { "valhallastrengthsthbne.com.au", true }, + { "valiakhmetov.tk", true }, { "valiant.finance", true }, + { "valid.com", true }, + { "validation.link", true }, { "validatis.com", true }, { "validator.nu", true }, { "validbot.com", true }, { "validius.fi", true }, { "validius.net", true }, + { "validptr.zone", true }, + { "validus.sg", true }, + { "validvent.com", true }, { "valigate.com", true }, { "valigrama.ro", true }, { "valika.ee", true }, + { "valimail.com", true }, { "valimised.ee", false }, - { "valisevoyage.fr", false }, + { "valisevoyage.fr", true }, { "valitsus.ee", false }, { "valivalcoach.com", true }, { "valivalcommerce.com", true }, @@ -126333,46 +145130,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valkoi-konyvtar.tk", true }, { "valkoi-ksk.tk", true }, { "valkova.net", true }, - { "valkyriecloud.com", true }, { "valladolidlempira.tk", true }, + { "vallansuunta.net", true }, { "vallartense.tk", true }, { "valledeleresma.tk", true }, + { "valledeloso.com", true }, { "valledibraies.org", true }, + { "valleesenlutte.org", true }, { "vallei-veluwe.nl", true }, + { "vallejo.gov", true }, { "vallejoca.gov", true }, + { "vallen.com", true }, + { "vallenar.tk", true }, { "valleyautofair.com", true }, + { "valleycom.com", true }, { "valleycountyne.gov", true }, { "valleydalecottage.com.au", true }, + { "valleyofdeath.tk", true }, + { "valleyofthesuns.com", true }, { "valleyradiologypad.com", true }, { "valleyradiologyufe.com", true }, { "valleyshop.ca", true }, { "valleystories.ga", true }, + { "valleysupply.biz", true }, { "valleywaste.ca", true }, { "valleywidetvrepair.ml", true }, { "vallutaja.eu", true }, + { "valnetcdn.com", true }, { "valoan.me", true }, { "valopv.be", true }, + { "valor-host.ml", true }, { "valorantpicker.com", false }, { "valorantpornhentai.com", false }, { "valordolarblue.com.ar", true }, { "valordotrabalho.com.br", true }, - { "valorem-tax.ch", false }, - { "valoremtax.ch", false }, - { "valoremtax.com", false }, + { "valoriashard.tk", true }, { "valorizofficial.com", true }, + { "valparaiso.tk", true }, + { "valparaisoin.gov", true }, { "valpareso.tk", true }, { "valphenn.blue", true }, + { "valpovo-online.tk", true }, + { "valsa.mx", true }, { "valsenales.it", true }, { "valshamar.is", true }, { "valskis.lt", true }, - { "valsorey.ch", true }, + { "valsorey.ch", false }, + { "valtech.de", true }, + { "valtech.io", true }, { "valtherperron.nl", true }, { "valtlai.fi", true }, { "valtoaho.com", true }, { "valtool.uk", true }, { "valudo.st", true }, - { "valuechain.me", true }, - { "valuehost.com.br", true }, + { "valueaddedonline.com", true }, + { "valuelinksoftware.com", true }, { "valuemyhome.co.uk", true }, { "valuemyhome.uk", true }, { "valueng.com", true }, @@ -126380,9 +145192,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valueourmind.com", true }, { "valueourminds.com", true }, { "valueourminds.org", true }, + { "valueresearchonline.com", true }, + { "values.com", true }, { "valueseed.net", true }, - { "valum.nl", true }, { "valunet.co.za", true }, + { "valuoo-legal.com", true }, { "valuskills.co.za", true }, { "valuta-tools.nl", true }, { "valutienda.com", true }, @@ -126390,28 +145204,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "valvulasvaneo.com", true }, { "valx.jp", true }, { "vam-podarok.tk", true }, + { "vam3.com", true }, { "vami.tk", true }, { "vamoneysearch.gov", true }, { "vamonospaportugal.tk", true }, + { "vamosalvaiazere.pt", true }, { "vamosargentina.tk", true }, + { "vamoscurarsintra.pt", true }, { "vamosfalardesaude.pt", true }, { "vampire-studios.tk", true }, { "vampire142.fr", true }, { "vampireapocalypsesurvival.com", true }, { "vampiresdawn.org", true }, { "vampirzine.tk", true }, - { "vampluderdd.com", true }, { "vampyrium.com", false }, { "vampyrium.net", false }, + { "vamsucai.com", true }, + { "vamziyuan.com", true }, { "van-assen.com", true }, + { "van-brandevoort.tk", true }, + { "van-der-straeten.be", true }, + { "van.ddns.net", true }, { "van11y.net", true }, { "vanadrighem.eu", true }, + { "vanafhier.nl", true }, { "vanarok.xyz", false }, { "vanasperenschoenen.nl", true }, { "vanbalen.be", true }, { "vanbarel.tk", true }, { "vanboven.nl", true }, { "vanboyvital.tk", true }, + { "vanbruchem.tk", true }, { "vanburencounty-mi.gov", true }, { "vanburencountyiowa.gov", true }, { "vancityconcerts.com", true }, @@ -126420,137 +145243,161 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vancouverchess.com", true }, { "vancouvercosmeticsurgery.ca", true }, { "vancouverdriveband.com", true }, + { "vancouverok.com", true }, { "vancouverwademolition.com", true }, { "vancouverwaseo.org", true }, + { "vancubers.com", true }, { "vandaalen.email", true }, { "vandalfsen.me", true }, + { "vandals.ml", true }, { "vandam.io", true }, + { "vandanayellowpages.com", true }, + { "vande-walle.eu", true }, { "vandegriftplasticsurgery.com", true }, { "vandemeent.eu", true }, { "vandenbergfss.com", true }, { "vandenbroeck-usedcars.be", true }, { "vandenbroekwi.gov", true }, - { "vandenheuvelzwembaden.nl", true }, + { "vandeput.be", true }, + { "vander-bugenne.fr", true }, + { "vanderbeek.be", true }, { "vanderbeekonline.nl", true }, { "vanderbiltcisa.org", false }, { "vanderkley.it", true }, { "vanderkrieken.org", true }, { "vanderleeden.servepics.com", true }, + { "vanderleiacorretora.com.br", true }, + { "vanderlinde.ml", true }, { "vandermeer.frl", true }, { "vanderrijt.nl", true }, + { "vandersmissen.lawyer", true }, { "vanderstraeten.dynv6.net", true }, { "vanderziel.org", true }, + { "vanderzwet.net", true }, { "vandi.tk", true }, - { "vandijkmaatwerk.nl", true }, + { "vandijkmaatwerk.nl", false }, { "vandommelenart.com", false }, { "vandoornmiddenzeeland.nl", true }, { "vandortgroep.nl", true }, { "vandrielschoenen.nl", true }, { "vandyhacks.org", true }, { "vanesaleiro.tk", true }, + { "vanessaamorosi.tk", true }, { "vanessabalibridal.com", true }, { "vanessaglendagarcia.tk", true }, { "vanessarivas.com", true }, - { "vanetv.com", true }, + { "vanessaskypornstar.com", true }, { "vaneurology.com", true }, { "vaneyckexpo.be", true }, { "vaneyckwashere.be", true }, { "vaneyckwashere.com", true }, { "vaneyckwashere.eu", true }, { "vaneyckwashere.gent", true }, + { "vangest.com", true }, { "vangest.pt", true }, { "vangoghcoaching.nl", true }, { "vanguards.tk", true }, { "vanhaos.com", true }, { "vanhatten.com", true }, - { "vanheede.com", true }, { "vanhelsing.ml", true }, + { "vanhelsing.tk", true }, { "vanherle-dakdichting.be", true }, { "vanhoudt-usedcars.be", true }, { "vanhoutte.be", false }, { "vanhove.biz", true }, + { "vaniamgroup.com", true }, + { "vanier.gc.ca", true }, + { "vanilla-official.jp", true }, { "vanillacoder.co.za", true }, + { "vaninsure247.co.uk", true }, { "vaniola.com", true }, { "vanisha.co", true }, { "vanished.tk", true }, - { "vanitybiss.es", true }, + { "vanitas.xyz", false }, { "vanityestetik.com", true }, { "vanityfairnapkins.com", false }, { "vanivi.ml", true }, { "vanjeveren.nl", true }, { "vanlierdezottegem.be", true }, { "vanlong.com.vn", true }, + { "vanmalland.com", true }, { "vanna-mechti.tk", true }, + { "vanna-original.ru", true }, + { "vanna5.ru", true }, + { "vannabardotpornstar.com", true }, { "vannaos.com", true }, { "vannaos.net", true }, { "vanndigital.com", true }, + { "vanner.com", true }, { "vannoordgouda.nl", true }, { "vanouwerkerk.net", true }, { "vanquish.tk", true }, { "vanral.com.br", true }, { "vanrichie.nl", true }, { "vanspa.vn", true }, - { "vanss.org", true }, { "vanstoftotleven.nl", true }, { "vantagepointpreneed.com", true }, - { "vante.me", true }, + { "vantagesfa.com", true }, { "vantien.com", true }, { "vantru.is", true }, { "vanuithartenziel.nl", true }, { "vanvanlines.com", true }, - { "vanveenendaaladvies.info", true }, + { "vanwa.ch", true }, { "vanwertcountyohio.gov", true }, { "vanwoensei.xyz", true }, - { "vanwoensel.cloud", true }, { "vanwoensel.directory", true }, { "vanwoensel.xyz", true }, { "vanwort.de", true }, { "vanwunnik.com", true }, + { "vanya.click", true }, { "vanyavpn.com", true }, - { "vanylou.com", true }, + { "vaoig.gov", true }, { "vap.llc", false }, { "vapebhd.com", true }, { "vapebuddy.ch", true }, + { "vapeclub.co.uk", true }, { "vapecom-shop.com", true }, { "vapecraftinc.com", false }, { "vapecrunch.com", true }, - { "vapehour.com", true }, { "vapeking.co.za", true }, - { "vapekingusa.com", true }, - { "vapemania.eu", true }, { "vapemate.co.uk", true }, { "vapensiero.co.uk", true }, { "vapesense.co.uk", true }, + { "vapeshoppos.com", true }, { "vapetaclope.cf", true }, { "vapevine.ca", true }, { "vapex.pl", true }, - { "vapezone.com.au", true }, { "vapingdaily.com", true }, { "vapocial.com", true }, { "vapolik.fr", true }, + { "vapoo.de", true }, { "vapor.cloud", false }, { "vapordepot.jp", true }, + { "vaporquest.tk", true }, + { "vapotank.com", true }, { "vapoteuse.fr", true }, { "vapourtown.com", true }, { "vapteke.ru", true }, + { "var.cc", true }, { "varaani.tk", true }, { "varalaval.com", true }, + { "varb.in", true }, { "varcare.jp", true }, { "varda.nl", true }, { "vardakeio.gov.gr", true }, { "vardenafilhcl.gq", true }, - { "vareillefoundation.fr", false }, - { "vareillefoundation.org", false }, { "varela-electricite.fr", true }, { "varelaloca.tk", true }, { "varghese.de", true }, - { "variable.agency", false }, { "variable.dk", true }, { "variablyconstant.com", true }, { "variance.pl", true }, - { "variasdesign.com", true }, + { "varianteespiritual.gal", true }, { "variatesonline.tk", true }, + { "variatkowo.pl", true }, + { "varied.ga", true }, { "varierchairs.com", true }, + { "variohyp.de", true }, { "variomedia.de", true }, { "variusunum.com", true }, { "varizh.by", true }, @@ -126558,12 +145405,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "varjuring.tk", true }, { "varlex.cl", true }, { "varlin.tk", true }, + { "varmaz.men", true }, { "varna-airport.bg", true }, { "varney.tk", true }, + { "varnish.ga", true }, { "varonahairrestoration.com", false }, - { "varoscak.de", false }, - { "varrogepcentrum.hu", false }, + { "varrogepcentrum.hu", true }, { "varshathacker.com", true }, + { "varun-rajeshwari.tk", true }, + { "varuniyer.info", true }, + { "varvitra20mg.ga", true }, { "varvy.com", true }, { "varyrentacar.com", true }, { "varztupasaulis.com", true }, @@ -126571,16 +145422,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "varztupasaulis.lt", true }, { "varztupasaulis.net", true }, { "vas-webmaster.cz", true }, - { "vas.ae", true }, + { "vas.com", true }, { "vasaconsulting.com", true }, + { "vasaivirarnews.com", true }, { "vasankari.fi", true }, { "vasanth.org", false }, { "vasaprilezitost.eu", true }, { "vascomm.co.id", true }, { "vasconcellos.casa", true }, { "vasconcellos.xyz", true }, + { "vascularlaser.com.br", true }, { "vase-dovolena.cz", true }, - { "vasectomie-pierre-boucher.ca", false }, { "vasel.de", true }, { "vasel.eu", true }, { "vaselin.cf", true }, @@ -126590,34 +145442,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vaselin.tk", true }, { "vases.tk", true }, { "vasficelik.com", true }, + { "vash-doctor.tk", true }, + { "vash-dom.tk", true }, + { "vashdohod.ml", true }, { "vashel.us", true }, { "vasheradio.tk", true }, { "vashmatrass.ru", true }, - { "vasileruscior.ro", true }, + { "vashprazdnik.tk", true }, { "vasilev.wtf", true }, + { "vasilevo.tk", true }, { "vasilijeojdanic.ml", true }, { "vasilijeojdanic.tk", true }, { "vasilikieleftheriou.com", true }, + { "vasilisa-volodina.cf", true }, + { "vasilisa-volodina.ga", true }, + { "vasilisa-volodina.gq", true }, + { "vasilisa-volodina.ml", true }, { "vaskulitis-info.de", true }, - { "vasogroup.com", true }, - { "vastenotaris.nl", true }, + { "vasp.at", true }, + { "vassalengine.org", true }, + { "vastdata.com", false }, { "vastgoed-lidl.nl", true }, { "vastgoedcert.nl", true }, { "vastgoedfaculteit.be", true }, + { "vastu.co.il", true }, { "vasya-com.tk", true }, { "vasya-odyag.tk", true }, { "vasyaka.cf", true }, { "vasyaka.ga", true }, { "vasyharan.com", true }, { "vat-eu.com", true }, + { "vat-funding.com", true }, { "vat.direct", true }, { "vatav.eu", true }, { "vatav.tk", true }, { "vatazhok.com", true }, + { "vatikantour.tk", true }, + { "vatlieuhay.com", true }, { "vatman.tk", true }, + { "vatnik.info", true }, { "vato.nl", true }, { "vats.im", true }, - { "vatsalyagoel.com", true }, { "vattulainen.fi", true }, { "vauban-ip.com", true }, { "vauceri.hr", true }, @@ -126630,9 +145495,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vault12.io", true }, { "vault182.xyz", true }, { "vault81.de", true }, + { "vaultdoma.in", true }, { "vaultlabs1226.com", true }, { "vaultproject.io", false }, { "vaur.fr", true }, + { "vaurio.tk", true }, { "vavada.com", true }, { "vave.men", true }, { "vavel.com", true }, @@ -126644,33 +145511,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vayaprecio.es", true }, { "vayavotarcolorado.gov", true }, { "vaygren.com", true }, - { "vb.media", true }, + { "vb.com.br", true }, { "vba.rest", true }, + { "vbanu.com.ua", true }, { "vbazile.com", true }, - { "vbestseller.com", true }, + { "vbelgorode.tk", true }, { "vbetcn.com", true }, + { "vbezhenar.com", true }, { "vbhelp.org", true }, + { "vbl.co.th", true }, { "vbql.me", true }, { "vbsoft.cz", true }, { "vbttc.com", true }, + { "vburyatii.ml", true }, { "vbwinery.com", true }, + { "vc123.xyz", true }, { "vcacursus.nl", true }, { "vcanederland.nl", true }, { "vcard.mx", true }, { "vcare.group", true }, + { "vccload.com", true }, { "vccmurah.net", true }, { "vccv.cc", false }, + { "vcdspro.de", true }, { "vcebookclub.com.au", true }, { "vcelin-na-doliku.cz", true }, { "vcf.gov", true }, { "vchelyabinske.tk", true }, + { "vclobby.com", true }, { "vcloudways.com", true }, { "vcm.ru", true }, { "vcmi.download", true }, - { "vcmuae.ae", true }, + { "vcockpit.de", true }, { "vconcept.ch", true }, { "vconcept.me", true }, { "vconstruct.com", true }, + { "vcot.info", true }, + { "vcpa.gov", true }, { "vcraftaudio.com", true }, { "vcross.cf", true }, { "vcs-steuern.de", true }, @@ -126679,11 +145556,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vcsjones.com", true }, { "vcsource.tk", true }, { "vcti.cloud", true }, - { "vctor.net", true }, { "vcz.fr", true }, { "vczk.me", true }, - { "vd42.net", true }, + { "vd42.net", false }, { "vda.li", true }, + { "vdagestan.tk", true }, { "vdb-it.com", true }, { "vdbongard.com", true }, { "vdcomp.cz", false }, @@ -126694,53 +145571,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vdisk24.de", true }, { "vdmeij.com", true }, { "vdmeta.com", true }, - { "vdocapp.com", true }, + { "vdolg2000rub.ga", true }, { "vdolg2000rub.ml", true }, + { "vdolg8000rub.cf", true }, + { "vdolg8000rub.ga", true }, { "vdolg8000rub.gq", true }, + { "vdolg8000rub.ml", true }, + { "vdolg8000rub.tk", true }, { "vdownloader.com", true }, + { "vdrei.at", true }, + { "vdslux.eu", true }, { "vdstc.com", true }, { "vdw-instruments.com", true }, - { "ve-mi.com", true }, + { "vdw.ovh", true }, + { "vdwaart.synology.me", true }, + { "vdzwan.net", true }, + { "ve-1xbet.com", true }, { "ve.search.yahoo.com", false }, { "ve3oat.ca", true }, - { "ve3zsh.ca", true }, { "veadoscomfome.tk", true }, { "veast.network", true }, { "vebbankir-zajm-onlajn.gq", true }, + { "vebdengi.tk", true }, + { "vebeco.de", true }, { "veber.bg", true }, + { "veca.tk", true }, { "vecara.es", true }, { "vecchiofornobarletta.it", true }, { "vechainstats.com", true }, { "vecherka.tk", true }, + { "vechersky.tk", true }, { "vectomatic.org", true }, { "vectops.com", false }, + { "vector.express", true }, + { "vectorcardiometry.tk", true }, { "vectordtg.com", false }, { "vectormagnetics.com", true }, { "vectortrack.com.au", true }, { "vectorwish.com", true }, + { "vectrum.cf", true }, { "vedeneev.tk", true }, { "vedev.io", true }, { "vedma-praktik.com", true }, - { "vedobakancs.hu", true }, + { "vedom.ru", true }, + { "vedran-zulin.from.hr", true }, + { "veebill.com", true }, { "veebiveski.ee", true }, + { "veefna.com", true }, { "veegish.com", true }, + { "veekshanam.com", true }, { "veerleklinge.nl", true }, { "veessen.tk", true }, - { "vefald.no", true }, + { "veethi.com", true }, + { "veeva.com", true }, + { "veeva.link", true }, + { "vefagas.com", true }, { "veg-leiden.nl", true }, { "veg.lv", false }, { "vega-diva.com", true }, { "vega-rumia.com.pl", true }, { "vega-rumia.pl", false }, { "vega.education", true }, - { "vega.games", true }, { "vegalanguageacademy.ca", true }, - { "vegalitarian.org", true }, { "vegan-essen.tk", true }, { "vegan-kochen.tk", true }, { "vegan-pratique.fr", true }, - { "veganantics.co.uk", true }, - { "vegandelivery.cz", true }, { "vegane-proteine.com", true }, { "veganenumbers.com", true }, { "veganfamiliesclub.com", true }, @@ -126751,11 +145646,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veganitos.tk", true }, { "veganlinguists.org", true }, { "veganmasterrace.com", true }, + { "veganplace.it", true }, { "veganrecipereviews.com", true }, { "veganuary.com", true }, { "veganvisboer.nl", true }, + { "veganz.de", true }, { "vegardit.com", true }, { "vegascasino.news", true }, + { "vegasconcepts.com", true }, { "vegasluxuryestates.com", true }, { "vegasrock.tk", true }, { "vegavio.com", true }, @@ -126764,7 +145662,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vegekoszyk.pl", true }, { "vegepa.com", true }, { "vegetablegrowing.co.uk", true }, - { "vegetarianfastfood.com", true }, { "vegetariantokyo.net", true }, { "vegetarier-sind-moerder.tk", true }, { "veggie-einhorn.de", false }, @@ -126773,6 +145670,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veguillas.tk", true }, { "vegvor.com", true }, { "vehicleenquiry.service.gov.uk", true }, + { "vehiclehistory.gov", true }, + { "vehicleinfozone.com", true }, { "vehiclematsuk.com", true }, { "vehicletax.service.gov.uk", true }, { "vehicletransportservices.co", true }, @@ -126781,45 +145680,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veikkosimpanen.fi", true }, { "veil-framework.com", true }, { "veilofsecurity.com", true }, - { "veinaestheticstampa.com", true }, { "veincenterbrintonlake.com", true }, + { "veintidos.com.ar", true }, { "vejanoticias.com.br", true }, { "vejas2004.tk", true }, { "vejersferie.de", true }, - { "vejersferie.dk", true }, + { "vek.com.br", true }, { "vekashka.gq", true }, { "vekenz.com", true }, { "vektlofting.tk", true }, { "vektor.tk", true }, { "vektorparts.ru", true }, { "velacartagena.tk", true }, - { "velassoltas.com", true }, { "velassoltas.pt", true }, { "veldadvies.nl", true }, + { "veldhovenactief.nl", true }, { "velen.io", true }, + { "veles-moto.ru", true }, { "velesnet.ml", true }, { "velforo.com", true }, { "veli.ee", true }, - { "veliavidela.com", true }, { "velichkin.tk", true }, { "velika-balgaria.tk", true }, { "velikijhutir.cherkassy.ua", true }, + { "velis.tk", true }, { "velken.de", true }, { "vellingetaxi.se", true }, { "velmart.ua", true }, { "velmorra.id", true }, + { "velo-doktor.ch", true }, + { "velo-volga.tk", true }, { "velo24.tk", true }, { "velobar.plus", true }, + { "velociter.net", true }, { "velocitycu.com", true }, { "velocityelectronics.com", true }, { "velocityfiber.com", true }, { "velocitygames.tk", true }, + { "velocityhost.com.au", true }, + { "velocitytech.com", true }, { "velocompany.com", true }, { "velocompany.de", true }, { "velomap.org", true }, { "velonustraduction.com", true }, { "velopinion.fr", true }, - { "velorail01.fr", true }, { "veloroute.hamburg", true }, { "velosipedi.tk", true }, { "velostudio.com.ua", true }, @@ -126827,28 +145731,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "velotyretz.fr", false }, { "velovelo.gq", true }, { "veluwerally2002.tk", true }, + { "velvet-tarantula.tk", true }, + { "velvetempire.tk", true }, { "velvetia.no", true }, - { "vemoweb.com", true }, + { "vema-bg.com", true }, + { "vemoweb.com", false }, + { "venacifuentes.tk", true }, { "venali.tk", true }, { "venalytics.com", true }, { "venangocountypa.gov", true }, { "venasoft.systems", true }, { "venatorinc.tk", true }, { "venbot.tk", true }, + { "vendaapartamentomoema.com.br", true }, { "vendadopinheiro.com", true }, { "vendadopinheiro.net", true }, { "vendadopinheiro.org", true }, { "vendagora.tk", true }, + { "vendasdealbunsbrasil.tk", true }, { "vendee.tk", true }, { "vendela.tk", true }, - { "vendeproductos.online", true }, { "vendermicasarapido.com.mx", true }, { "vendi.it", true }, { "vendigital.com", true }, { "vendingmachines.tk", true }, { "venditorepoa.com.br", true }, + { "vendloop.com", true }, { "vendomicasaenserena.cl", true }, + { "vendor-finance.uk", true }, { "vendorconnect.nyc", true }, + { "vendorful.com", true }, + { "vendorleasing.uk", true }, { "vendorpedia.com", true }, { "vendreacheter.be", true }, { "vendreacheter.net", true }, @@ -126858,10 +145771,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "venegreco.com", true }, { "venenum.org", true }, { "venera-magik.tk", true }, + { "venesuela.cf", true }, { "venetkaarsenovart.com", true }, { "venev.com", true }, { "venev.name", true }, + { "venezia.ga", true }, { "veneziatoday.it", true }, + { "venezuelachat.tk", true }, { "venezuelalibre.tk", true }, { "venga.tk", true }, { "vengriya.tk", true }, @@ -126872,27 +145788,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "venicerealdeal.com", true }, { "venje.pro", false }, { "venlafaxine.gq", true }, - { "vennershipley.co.uk", true }, + { "venndy.com", true }, + { "vennet.fr", true }, { "vennprime.com", true }, { "venomxsecurity.com", true }, + { "venostech.com", true }, { "venstar.com", true }, { "ventaenlinea-bancoomeva.com", true }, { "ventajasdesventajas.com", true }, { "ventana.kz", true }, + { "ventanillaproveedorespit.com", true }, + { "ventasreit.com", true }, { "ventassantillan.com", true }, + { "vente-voiture.org", true }, + { "ventes-privees-flash.fr", true }, { "venti-athens.gr", true }, { "venti.eu.org", true }, { "ventilateurs-plafond.com", true }, + { "ventiques.com", true }, { "ventizo.com", true }, { "ventnose.com", true }, { "ventolin-hfa.tk", true }, { "ventolin.ga", true }, { "ventor.ml", true }, { "ventosport.nl", true }, - { "ventriloservers.biz", true }, { "ventuordici.org", true }, { "venturavwparts.com", true }, + { "venture.biz.id", true }, { "venturebanners.co.uk", true }, + { "ventureharbour.com", true }, + { "venturepointe.com", true }, { "ventures.lgbt", true }, { "ventureslgbt.com", true }, { "venturum.com", true }, @@ -126904,29 +145829,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "venus-erotic.com", true }, { "venus-football-giveaway.co.uk", true }, { "venusbeautyproducts.in", true }, - { "venzocrm.com", false }, + { "venusvprincess.com", true }, + { "venzeo.com", true }, { "veobas.com", true }, - { "veosvending.com", true }, - { "veovo.com", true }, + { "veonow.com", true }, { "vepein.ga", true }, { "vepein.gq", true }, { "veply.com", true }, + { "ver-television.online", true }, + { "ver-tv.online", true }, { "ver.ma", true }, { "ver.re", true }, - { "veracruzti.com.br", true }, + { "vera-1.ru", true }, { "verae.tk", true }, { "verafin.com", true }, { "verakoubova.net", true }, { "veramagazine.jp", false }, + { "veramark.cl", true }, { "verasani.ch", true }, { "verasani.com", true }, + { "verasoie.fr", true }, + { "verasoul.com", true }, + { "verasrvmobiledetail.com", true }, { "verata.co", false }, { "verberne.nu", true }, + { "verbert.be", true }, { "verbier-lechable.com", true }, { "verbierfestival.com", false }, { "verbio.com", true }, { "verbmaestro.com", true }, { "verboom.co.nz", true }, + { "verbundkredit.ag", true }, + { "verbundkredit.biz", true }, + { "verbundkredit.com", true }, + { "verbundkredit.de", true }, + { "verbundkredit.eu", true }, + { "verbundkredit.info", true }, + { "verbundkredit.org", true }, { "verbzilla.com", true }, { "vercel.co", true }, { "vercel.com", true }, @@ -126935,39 +145874,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vercel.sh", true }, { "vercopy.com", true }, { "vercountyil.gov", true }, - { "verdadesdointerior.com.br", true }, { "verdeandco.co.uk", true }, + { "verdecora.es", true }, { "verdensflag.dk", true }, { "verdeplus.net", true }, { "verdesfoundation.org", true }, { "verdict.gg", true }, { "verdict.ro", true }, - { "verduccies.com", true }, + { "verdonkadvocaten.nl", true }, + { "verduccies.com", false }, { "verdugosxerecistas.tk", true }, { "veredadelaestrella.tk", true }, { "verein-kiekin.de", true }, - { "vereinlandwege.de", true }, { "vereinscheck.de", true }, { "vereinswahl.online", true }, + { "veren-group.ua", true }, { "verena.gallery", true }, - { "verepeliculashd.com", true }, + { "vereshagino.tk", true }, { "verf.nu", true }, { "verfassungsklage.at", true }, + { "verge-solutions.com", true }, { "verge.capital", true }, { "vergeaccessories.com", true }, + { "vergehealth.com", true }, { "vergelijksimonly.nl", true }, { "vergelijkwitgoed.nl", true }, { "vergesense.com", true }, { "vergessen.cn", true }, + { "vergilioferreira.pt", true }, + { "vergraal.tk", true }, { "verhaltenstherapie-weiden.de", true }, { "verhaslaw.com", true }, { "verhave.net", true }, + { "verhoog.xyz", true }, { "veri2.com", true }, { "verifalia.com", true }, { "verificationlink.ga", true }, { "verified.eu", true }, - { "verifiedjoseph.com", true }, + { "verified.lu", true }, + { "verifiedcliq.com", true }, + { "verifiedjoseph.com", false }, { "verifiny.com", true }, + { "verify-365.com", true }, { "verify.gov.sg", true }, { "verifyos.com", true }, { "verifyyourip.com", true }, @@ -126980,19 +145928,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veritas-data.de", true }, { "veritashomeschoolers.org", true }, { "veritasinvestmentwealth.com", true }, - { "veriteliberte.com", true }, { "veriteliberte.fr", true }, { "veriteslibertes.com", true }, { "veriteslibertes.fr", true }, { "verizonconnect.com", false }, { "verkada.com", true }, + { "verkami.com", true }, { "verkeer.gent", true }, { "verkeersschoolrichardschut.nl", true }, { "verkeersschoolvanhouten.nl", true }, - { "verkiezingsuitslagen.nl", true }, + { "verkiezingsuitslagen.nl", false }, { "verkkovalmentajat.fi", true }, { "verkossa.tk", true }, - { "verksampsykologi.com", true }, { "verlag-lq.at", true }, { "verlag-lq.ch", true }, { "verlag-lq.com", true }, @@ -127000,20 +145947,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "verlag-lq.net", true }, { "verlagdrkovac.de", false }, { "verlaglq.com", true }, + { "verland.org", true }, { "verliebt-in-bw.de", true }, { "verliebt-in-niedersachsen.de", true }, { "verliefde-jongens.nl", true }, + { "verlocke.de", true }, + { "verloja.com", true }, { "verloskundigepraktijktolmiea.nl", true }, { "vermaeckbouw.nl", true }, { "vermageringsdieetpillen.ga", true }, + { "vermageringsdieetpillen.gq", true }, { "vermageringsdieetpillen.tk", true }, - { "vermeerdealers.com", true }, { "vermellcollection.com", true }, + { "vermo.at", true }, { "vermogeninkaart.nl", true }, { "vermont.builders", true }, + { "vermontbiz.com", true }, + { "vermontflannel.com", true }, { "vermouth.cf", true }, { "vermuetje.nl", true }, - { "vernaeve-usedcars.be", true }, + { "vern.cc", false }, + { "vernal.gov", true }, { "verndale.com", true }, { "vernis-marins.com", true }, { "vernonfigureskatingclub.com", true }, @@ -127022,61 +145976,91 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vernonsecureselfstorage.ca", true }, { "vernonspeedskatingclub.com", true }, { "vernonvt.gov", true }, - { "vernonwintercarnival.com", true }, { "veronasera.it", true }, { "veronic.hu", true }, + { "veronicaavluvpornstar.com", true }, + { "veronicasuperguide.nl", true }, + { "veronicca.com.br", true }, { "veronique-huon-photographe.fr", true }, { "veronique-schmitz.de", true }, + { "veropharm.ru", true }, { "veros-volejbal.tk", true }, + { "veros.com", true }, { "verrame.no", true }, { "verrerie-mousseline.org", false }, { "verry.org", true }, { "vers.one", true }, + { "versa-networks.com", true }, { "versagercloud.de", true }, + { "versahub.com", true }, + { "versaillestourisme.fr", true }, { "versalhost.nl", true }, { "versallesin.com", true }, + { "versanthealth.com", true }, + { "versata.pt", true }, { "versatek.com", true }, { "versbesteld.nl", true }, - { "verschoren.com", true }, { "verschurendegroot.nl", true }, { "verse.eu.org", true }, { "versfin.net", true }, + { "versicherung-website.de", true }, { "versicherungen-werner-hahn.de", true }, - { "verso.money", true }, - { "verspai.de", false }, + { "versifylabs.com", true }, + { "versionit.org", true }, + { "versium.net", true }, + { "verspai.de", true }, + { "versprite.com", true }, + { "versslun.com", true }, { "verstaanwiskunde.co.za", true }, { "verstka.cf", true }, { "verstka.ga", true }, { "verstka.tk", true }, { "verstraetenusedcars.be", true }, { "versus-hair.com", true }, + { "versus-sec.com", true }, { "versusforum.tk", true }, + { "versustexas.com", true }, { "vertanex.com", true }, { "vertaxaccountants.co.uk", true }, { "vertebrates.com", true }, + { "vertec-cloud.at", true }, + { "vertec-cloud.com", true }, + { "vertec-cloud.de", true }, + { "vertec-test.at", true }, + { "vertec-test.com", true }, + { "vertec-test.de", true }, + { "vertec.com", true }, { "verteilergetriebe.info", true }, + { "vertex-academy.com", true }, + { "vertexinc.com", true }, + { "vertexlife.ml", true }, { "vertexlife.tk", true }, + { "vertexsmb.com", true }, + { "vertextape.com", true }, { "vertexventures.co.il", true }, - { "vertexventures.sg", true }, + { "vertexventures.sg", false }, { "verticalmindventures.com", true }, { "verticals.tk", true }, + { "verticalstructure.com", true }, { "verticesedge.com", true }, { "vertichost.com", true }, { "vertichost.ro", true }, { "verticweb.com", true }, { "vertigo.name", false }, + { "vertigomassage.com", true }, { "vertikal.tk", true }, { "vertiko.de", true }, + { "vertip.net", true }, + { "vertragsfix.de", true }, { "vertrauen.site", true }, { "vertretungsplan.io", true }, { "vertrieb-strategie.de", true }, { "verustracking.com", true }, + { "verve.com", true }, { "vervewellness.co.nz", true }, { "verwandlung.org", true }, - { "verwarming-installateur.be", true }, { "verwarring.tk", true }, - { "verwayen.com", true }, - { "verwer-infra.nl", true }, + { "very-good.ru", true }, { "veryapt.com", true }, { "verybin.com", true }, { "veryestate.com", true }, @@ -127084,7 +146068,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "verygoodmarketing.nl", true }, { "verygoodwebsite.ca", true }, { "veryhome.com.pe", true }, - { "verylazy.com", true }, { "verymelon.de", true }, { "verymetal.nl", true }, { "verymetal.site", true }, @@ -127094,6 +146077,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "verzekeringsacties.nl", true }, { "verzekerjebeter.nl", true }, { "verzick.com", true }, + { "vesa.ro", true }, { "vesaviljanen.fi", true }, { "vescudero.net", true }, { "veseleruska.sk", true }, @@ -127101,24 +146085,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "veselyjpovar.gq", true }, { "vesen.tk", true }, { "vesinhcongnghiepttchome.com", true }, + { "vesiskitim.ru", true }, + { "veski.hr", true }, { "vesmail.biz", true }, { "vesmail.email", true }, { "vesna2011.tk", true }, { "vespacascadia.com", true }, + { "vesseldove.com", true }, { "vessentys.com", true }, { "vesta.us", true }, { "vestacp.top", true }, { "vestakassa-online.cf", true }, { "vestal.nl", true }, { "vestalny.gov", true }, - { "vestaplanet.com", true }, { "vestberry.com", true }, { "vestd.com", false }, + { "vestia.nl", true }, { "vestibtech.com", true }, { "vestibular.science", true }, { "vestibulartechnologies.com", true }, + { "vestiizhevska.cf", true }, { "vestingbar.nl", true }, + { "vestirnakaret.cz", true }, { "vestirsibene.shop", true }, + { "vestkyneonline.cz", true }, { "vestlundbolargen.tk", true }, { "vestnik24.cf", true }, { "vestum.ru", true }, @@ -127130,61 +146120,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vetbilgi.com", true }, { "vetbits.com", false }, { "vetcard.info", true }, - { "vetcoretech.com", true }, - { "vetcpd.co.uk", true }, + { "vetch.ga", true }, + { "vetclick.com", true }, { "veteranreservecorps.com", true }, { "veteransadvantage.com", true }, + { "veteranscrisisline.net", true }, + { "veteransfirstwatch.com", true }, { "veteransholidaylights.com", true }, { "veteransroofingllc.com", true }, + { "veteranticketsfoundation.org", true }, { "veterinanmnm.cz", true }, { "veterinanmnm.eu", true }, { "veterinarian-hospital.com", true }, + { "veterinarianedu.org", true }, { "veterinario.milano.it", true }, { "veterinario.roma.it", true }, - { "veterinarioaltea.com", true }, { "veterinary-colleges.com", true }, - { "veterinarylabsupply.com", true }, + { "veterinaryhelp.cf", true }, { "veterinaryvision.co.uk", true }, { "veteriner.name.tr", true }, { "veterquimica.pe", true }, + { "vethical.com", true }, { "vetikalender-berlin.de", true }, + { "vetinfo.pt", true }, { "vetinte.eu", true }, - { "vetlab.ee", true }, - { "vetmedstat.com", true }, + { "vetitus-teatro.tk", true }, + { "vetmedmosul.org", true }, { "vetmgmt.com", true }, { "vetnet.info", true }, { "veto.fish", true }, { "vetofish.com", true }, + { "vetosh.tk", true }, { "vetpraxis.de", true }, { "vetputten.nl", true }, { "vetren.tk", true }, { "vetreria.roma.it", true }, + { "vetres.net.au", true }, { "vets.gov", true }, { "vets24.ae", true }, { "vetscore.co.za", true }, { "vetsmarketing.co.za", true }, + { "vetsource.com", false }, { "vettenburg.eu", true }, { "vettix.org", true }, + { "vetuni.cz", true }, { "vetustainversion.com", true }, { "vetvim.com", true }, { "veules-les-roses.fr", true }, + { "vev.co", true }, + { "veve.com", true }, { "veverusak.cz", true }, + { "vexsh.com", true }, + { "vezettaksii.ru", true }, + { "veziaici.net", true }, + { "vezzo.one", true }, { "vf-bikes.be", true }, { "vfbikes.be", true }, + { "vfc.com", false }, { "vfdworld.com", true }, { "vfg.com.ua", true }, - { "vfmc.vic.gov.au", true }, + { "vfmseo.com", true }, { "vfn-nrw.de", true }, + { "vfnm.de", true }, { "vfwpost1.org", true }, { "vfxstudy.com", true }, - { "vg-store.ir", true }, + { "vg-resource.com", true }, { "vgatest.nl", true }, { "vgbf.tk", true }, { "vgchat.us", true }, { "vgcheat.com", true }, { "vgerak.com", true }, { "vglist.co", true }, - { "vgolos.zt.ua", true }, { "vgopilot.azurewebsites.net", true }, { "vgorcum.com", true }, { "vgpu.vladimir.ru", true }, @@ -127192,68 +146198,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vgxcontactcenter.com.br", true }, { "vgywm.com", true }, { "vhelio.org", true }, + { "vhg.org", true }, + { "vhiweb.com", true }, + { "vhosting-it.com", true }, + { "vhproductions.tk", true }, { "vhummel.nl", true }, { "vhumo.com", true }, - { "via-shire-krug.ru", false }, + { "via-tygo.com", true }, + { "via1buynow.com", true }, + { "viabenefitsaccounts.com", true }, { "viacation.co", true }, { "viacdn.org", true }, { "viacheslavpleshkov.com", true }, + { "viadennis.nl", true }, + { "viads.com", true }, { "viaelegancestore.com.br", true }, { "viaeth.io", true }, { "viafinance.cz", false }, + { "viafoura.com", true }, { "viaggioincoppia.com", true }, { "viaggivistos.com.br", true }, - { "viagozo.com", true }, - { "viagra4men.com", true }, + { "viagraam.com", true }, + { "viagraest.com", true }, + { "viagrafh.com", true }, + { "viagrahb.com", true }, + { "viagralb.com", true }, + { "viagralmed.com", true }, + { "viagramarketim.com", true }, + { "viagramarketim.org", true }, + { "viagratop.tk", true }, { "viagusto.pl", true }, { "viajantesturismo.com", true }, - { "viajessanandres.com", true }, + { "viajarconmascotas.pro", true }, { "vialibido.com.br", true }, + { "vialorran.com", false }, + { "vialto.com", true }, { "viamax.eu", true }, { "viamilitaris.net", true }, { "vianetplc.com", true }, { "vianetz.com", true }, + { "vianica.com", true }, + { "viaon.net.br", true }, { "viapajucara.com.br", true }, { "viaprinto.de", true }, { "viaprofit.tk", true }, { "vias-ferratas.tk", true }, { "viasinc.com", false }, - { "viasun.ru", true }, { "viato.fr", true }, { "viaura.biz", true }, - { "viavitas.com", true }, { "viawave.tk", true }, + { "viba-sweets.de", true }, { "vibaphoto.com", true }, { "vibaphoto.fr", true }, { "vibbslist.com", true }, { "vibcon.com", true }, + { "vibehire.co.uk", true }, { "vibeonline.tk", true }, { "vibetribe.co.za", true }, - { "vibgyorhigh.com", true }, - { "vibgyorrise.com", true }, { "vibgyyor.com", true }, { "vibioh.fr", true }, { "vibox.co.uk", true }, { "vibraagenciadigital.com.br", true }, - { "vibrant-america.com", true }, - { "vibratefashion.com", true }, + { "vibramycin100mg.tk", true }, { "vibrato1-kutikomi.com", true }, { "vibrolandia.com", true }, + { "vibromax.com", true }, + { "vibromax.net", true }, + { "vibromax.org", true }, + { "vicarious.cf", true }, { "vicenez.agency", true }, { "vicentaburon.tk", true }, - { "vicentediaz.mx", true }, - { "vicentejr.com.br", true }, { "vicenterodriguez81.tk", true }, { "vicentico.tk", true }, { "vicenzatoday.it", true }, { "vicescorts.ga", true }, { "vicesetcaprices.com", true }, { "vicete.tk", true }, - { "vichama.pe", true }, { "vichiya.com", true }, { "vichovska-vyhlidka.cz", true }, { "vician.cz", true }, { "vicicode.com", true }, + { "vicinityindustrial.com.au", true }, { "vicioanimal.pt", true }, { "viciousflora.com", true }, { "viciousracing.tk", true }, @@ -127261,14 +146286,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vickyflipfloptravels.com", false }, { "vickyhundt.com", true }, { "vickylarraz.tk", true }, + { "vickyoliver.tk", true }, { "vicmatus.com", true }, - { "vicoeo.com", true }, + { "vico.vn", true }, { "vicrea.nl", true }, { "vicsancab.com", true }, { "victimizer.tk", true }, - { "victor.co.uk", true }, { "victora.com", true }, { "victorblomberg.se", true }, + { "victorbuch.cf", true }, + { "victorc.net", true }, { "victorcalvez.com", true }, { "victorcanera.com", true }, { "victorcarrasco.tk", true }, @@ -127287,13 +146314,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "victoreriksson.xyz", true }, { "victorhawk.com", true }, { "victorhorta.tk", true }, + { "victoria-clinic.ru", true }, { "victoria-legis.ru", true }, { "victoria.associates", true }, { "victoriaartist.ru", true }, { "victoriabeckham.tk", true }, { "victoriacountytx.gov", true }, + { "victoriaharmandjieva.art", true }, { "victoriait.com", true }, { "victoriait.com.au", true }, + { "victoriamn.gov", true }, { "victorianosaez.tk", true }, { "victoriastudio.ru", true }, { "victoriavalente.net", true }, @@ -127305,94 +146335,118 @@ static const nsSTSPreload kSTSPreloadList[] = { { "victorpelletmill.com", true }, { "victorpericiales.com", true }, { "victorricemill.com", true }, + { "victorrodriguez.ml", true }, { "victorunix.com", true }, { "victory.radio", true }, { "victoryalliance.us", true }, + { "victorybellrings.com", true }, { "victorychurch.org.tw", true }, + { "victoryoutreach.org", true }, + { "victrays.com", true }, { "victusrp.gq", true }, { "vicugna.nl", true }, { "vicyu.com", true }, - { "vidaizamal.com", true }, + { "vidaliala.gov", true }, { "vidanuevaparaelmundo.net", true }, { "vidanuevaparaelmundo.org", true }, { "vidanuevaparaelmundo.plus", true }, { "vidaparalela.tk", true }, { "vidapositiva.tk", true }, { "vidarity.com", true }, - { "vidasanayfitness.com", true }, { "vidassemfronteiras.com", true }, { "vidatantrica.com", true }, + { "vidawichi.tk", true }, { "vidaxp.com", true }, + { "vidazoo.com", true }, { "vidb.me", true }, { "vidbooster.com", false }, { "vidbuchanan.co.uk", true }, + { "vidcruiter.com", true }, { "vide-dressing.org", false }, { "vide-greniers.org", false }, { "vide-maisons.org", false }, + { "videferre.tk", true }, + { "video-converter.com", true }, + { "video-lab.it", true }, { "video-oldenburg.de", true }, { "videoarcadia.cf", true }, { "videoarcadia.ml", true }, - { "videobola.win", true }, - { "videobrochuresmarketing.com", true }, { "videocall.guide", true }, + { "videochatv.com", true }, { "videochums.com", true }, { "videoclipsex.com", true }, { "videoclubhd.ga", true }, { "videoclubhd.ml", true }, { "videoconferencing.guide", true }, + { "videoebook.tk", true }, + { "videoeta.com", true }, { "videoface.ru", true }, { "videogameconsole.ir", true }, - { "videogamecoupons.com", true }, { "videogamer.com", true }, + { "videogamerreader.tk", true }, + { "videogamers.com.ar", true }, { "videogamesartwork.com", true }, { "videograb.ga", true }, { "videograb.ml", true }, { "videoha.ml", true }, { "videojet.com", true }, { "videojuegos.com", true }, - { "videokaufmann.at", true }, { "videoload.co", true }, { "videomail.io", true }, + { "videomaker.it", true }, + { "videomaniya.ml", true }, + { "videomarketermastery.com", true }, + { "videonika.tk", true }, { "videopediablogs.tk", true }, { "videopokerez.cf", true }, { "videopornoitaliana.com", true }, + { "videoprikol.cf", true }, + { "videoprikoly.ga", true }, + { "videoregion.ru", true }, { "videoremote.tk", true }, - { "videosdiversosdatv.com", true }, { "videosengracado.ga", true }, - { "videoseriesbiblicas.com", true }, { "videoseyred.in", true }, { "videoskaseros.com", true }, - { "videosparatodos.com", true }, + { "videoskazka.tk", true }, { "videospericos.tk", true }, { "videosporno.life", true }, + { "videosporno.org", true }, { "videostop.asia", true }, + { "videostory.com", true }, { "videot.tk", true }, { "videotehnika.tk", true }, { "videoueberwachung-set.de", true }, + { "videouroki.ml", true }, { "videov.tk", true }, { "videovt.tk", true }, { "videownload.com", true }, { "videozv.tk", true }, - { "viderma.com.br", true }, + { "videsk.io", true }, + { "videt-son.cf", true }, { "videt-son.ml", true }, { "videt-son.tk", true }, - { "vidiobokep.xyz", true }, + { "vidimte.eu", true }, { "vidiproject.com", true }, { "vidister.de", false }, { "viditour-golf.nl", true }, { "viditour-zorg.nl", true }, { "vidkovaomara.si", true }, + { "vidlen.com", true }, { "vidlyoficial.com", true }, { "vidmia.com", false }, - { "vidos-eu.com", true }, + { "vidooo.de", true }, + { "vidracariaembh.com", true }, { "vidracariaespelhosbh.com.br", true }, { "vidrop.me", true }, + { "vidtekno.com", true }, { "vidulo.com", true }, { "vidyamonk.com", true }, - { "vieaw.com", true }, + { "vieclam24h.vn", true }, + { "viedecelibataire.fr", true }, { "viega.at", true }, { "viega.be", true }, { "viega.ca", true }, + { "viega.ch", true }, { "viega.co.uk", true }, { "viega.com", true }, { "viega.com.au", true }, @@ -127421,90 +146475,110 @@ static const nsSTSPreload kSTSPreloadList[] = { { "viega.sk", true }, { "viega.us", true }, { "viekelis.lt", false }, + { "vielfalt.link", true }, { "vielleserin.de", true }, { "viemeister.com", true }, { "viemontante.be", false }, { "viennadancecrew.at", true }, { "viennawi.gov", true }, { "vientos.coop", false }, + { "vientosur.info", true }, + { "vieon.vn", true }, { "viepixel.at", true }, - { "viera.pe", true }, { "vierdaagsehotel.nl", true }, { "vieref.eu", true }, { "vierna.ga", true }, { "vierpfeile.de", true }, { "vierpluseins.wtf", true }, { "vietconghackz.tk", true }, - { "vietdungit.com", true }, - { "vietfoodsquad.xyz", true }, + { "vietdungit.vn", true }, + { "vietfes.asia", true }, { "vietforum.ml", true }, - { "viethotnews.com", true }, { "vietnam-fishing.com", true }, { "vietnam-lifer.com", true }, { "vietnam-tours.tk", true }, - { "vietnamese.dating", true }, { "vietnameselove.com", true }, { "vietnamhairs.com", true }, { "vietnamhost.vn", false }, { "vietnamphotoblog.com", false }, + { "vietnamphotographer.net", true }, { "vietnamtravelmart.com.vn", true }, { "vietnamvisa.cf", true }, { "vietnamvisa.ga", true }, - { "vietnamwomenveterans.org", true }, + { "vietquan.net", true }, + { "viettelstore.vn", true }, + { "vietzzaune.de", true }, { "vieux.pro", true }, + { "vievolution.tk", true }, { "view-page-source.com", true }, - { "viewbook.com", true }, - { "viewey.com", true }, + { "vieweb.tk", true }, + { "viewer.ga", true }, { "viewflix.win", true }, + { "viewfreescore.com", true }, { "viewgardencentre.co.uk", true }, { "viewing.nyc", true }, { "viewpointsfromfacebook.com", true }, { "viewsea.com", true }, + { "viewstub.com", true }, { "viewzipcode.com", true }, + { "viez.vn", true }, { "vifranco.cl", true }, { "vifsoft.com", true }, - { "vigerust.net", true }, { "vigilanciatotal.com", true }, { "vigilanciaysalud.com", true }, { "vigilantesporcolombia.org", true }, + { "vigilanza.milano.it", true }, { "vigilanza.roma.it", true }, + { "vigiles.nl", true }, { "vigilo.cf", true }, { "vigilo.ga", true }, { "vigira.com.ar", true }, + { "vigl.biz", true }, { "vigliano.com", true }, + { "viglobal.com", true }, { "vignaud.fr", true }, { "vigneshkumar.com", true }, { "vignobles-querre.com", true }, { "vignoblesdeletat.ch", true }, { "vigo-krankenversicherung.de", true }, { "vigo-select.de", true }, - { "vigoinvestments.com", true }, + { "vigoinvestments.com", false }, { "vigorspa.it", true }, { "vigoxatelier.tech", true }, - { "vigrey.com", true }, + { "vigrey.com", false }, { "vigridpartiet.tk", true }, + { "vihaainfosoft.com", true }, + { "vihtahousu.fi", true }, { "viikko.cf", true }, { "viikko.eu", true }, { "viikko.ga", true }, { "viikko.gq", true }, { "viikko.ml", true }, { "viilup.com", true }, - { "viirujateippi.fi", true }, { "viitanen.xyz", true }, - { "vijay-international.com", true }, + { "vijayam.ml", true }, + { "vijaymishra.tk", true }, + { "vijn.io", true }, { "vijoe.org", true }, { "vijverbenodigdheden.nl", true }, + { "vik.bio", true }, { "vik.im", true }, { "vikalpgupta.com", true }, { "vikapaula.com", true }, { "vikasinstitute.tk", true }, { "vikaviktoria.com", true }, + { "vikc.ca", true }, + { "vikcdn.com", true }, { "viki.com", true }, { "viking-style.ru", true }, + { "vikingconcretefloors.com", true }, + { "vikiwat.com", true }, { "viko.ai", true }, { "viko.co.uk", true }, + { "vikpage.com", true }, { "vikramkulkarni.com", true }, { "vikrantkakad.in", true }, + { "viksbergshr.se", true }, { "viktor-chin-kon-sung.com", true }, { "viktor-chin-kon-sung.nl", true }, { "viktor-chin.com", true }, @@ -127519,51 +146593,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "viktorchinkonsung.online", true }, { "viktorchinkonsung.site", true }, { "viktoria-goo.com", true }, + { "viktoria-stube.de", true }, { "viktorovi.cz", true }, { "viktorprevaric.eu", true }, { "viku.fi", true }, - { "vila-eden.cz", true }, { "vila-senov.cz", true }, + { "vila11.com.br", true }, { "vilabiamodas.com.br", true }, - { "vilablancasanxenxo.com", true }, + { "vilabin.com", true }, + { "viladelpingui.net", true }, { "vilafloridacapivari.com.br", true }, { "vilafrancaeagles.tk", true }, + { "vilamarija.tk", true }, + { "vilamoura-car-hire.com", true }, + { "vilans.nl", true }, { "vilantice.cz", true }, { "vilavilma.si", true }, { "vilavyhlidka.cz", true }, + { "vilawatt.cat", true }, { "vilaydin.com", true }, { "vildlaithailand.cf", true }, { "vildlaithailand.gq", true }, { "vildlaithailand.tk", true }, { "vilettecouvreur.fr", true }, + { "vilgain.at", true }, { "vilgain.com", true }, + { "vilgain.de", true }, + { "vilgain.hu", true }, + { "vilgain.it", true }, + { "vilgain.pl", true }, { "vilhe.com", true }, { "vilhe.fi", true }, { "vilhelmjunnila.fi", true }, + { "vilife.tk", true }, + { "viliko.com", true }, { "viliravnjak.tk", true }, { "viliv.com.co", true }, { "villa-christina.com", true }, { "villa-gockel.de", true }, { "villa-luna.it", true }, { "villa-ottone.net", true }, - { "villa-romantica-zillertal.at", true }, { "villa-toscana.berlin", true }, { "villablancaluarca.es", true }, { "villablino.tk", true }, + { "villaboavida.nl", true }, + { "villacarralon.tk", true }, { "villadelprado.tk", true }, { "villaditirano.tk", true }, + { "villaespanola.tk", true }, { "villafiore.com.br", true }, { "villafrancis.org.sg", true }, + { "villagebridalbyomnibus.com", true }, { "villagecardshop.co.uk", true }, { "villagecenterpediatrics.com", true }, { "villagemagazines.co.uk", true }, { "villagenscamuria.it", true }, + { "villageofalbionny.gov", true }, { "villageofallouezwi.gov", true }, { "villageofalmondwi.gov", true }, { "villageofarenawi.gov", true }, + { "villageofavocawi.gov", true }, + { "villageofbearlakemi.gov", true }, { "villageofbellevuewi.gov", true }, + { "villageofcallawayne.gov", true }, { "villageofcarbonhill-il.gov", true }, { "villageofcascadewi.gov", true }, + { "villageofcascowi.gov", true }, { "villageofcatskillny.gov", true }, { "villageofcazenoviany.gov", true }, { "villageofclaytonmi.gov", true }, @@ -127572,26 +146667,39 @@ static const nsSTSPreload kSTSPreloadList[] = { { "villageofcottagegrove.gov", true }, { "villageofdousman.gov", true }, { "villageofedenwi.gov", true }, + { "villageoffarwellmi.gov", true }, + { "villageofforestvillewi.gov", true }, { "villageoffremontwi.gov", true }, { "villageofgraftonwi.gov", true }, + { "villageofgrantsburg.gov", true }, + { "villageofhempsteadpdny.gov", true }, { "villageofjacksonwi.gov", true }, + { "villageoflagrangeohio.gov", true }, + { "villageoflaurensny.gov", true }, { "villageoflavallewi.gov", true }, { "villageoflomira.gov", true }, + { "villageoflonerock-wi.gov", true }, + { "villageofluxemburgwi.gov", true }, { "villageofmillerton-ny.gov", true }, { "villageofmuirmi.gov", true }, + { "villageofmukwonago.gov", true }, { "villageofnaponeene.gov", true }, { "villageofnecedahwi.gov", true }, + { "villageofnewberlinny.gov", true }, { "villageofoakdalewi.gov", true }, { "villageofoakfieldwi.gov", true }, { "villageofowegony.gov", true }, + { "villageofpalmyrailmacoupin.gov", true }, { "villageofpewaukeewi.gov", true }, + { "villageofsaukvillewi.gov", true }, + { "villageofsheldonwi.gov", true }, { "villageofsirenwi.gov", true }, { "villageofstetsonvillewi.gov", true }, { "villageofstockbridgewi.gov", true }, { "villageoftheresawi.gov", true }, { "villageoftikiisland.gov", true }, { "villageofwales.gov", true }, - { "villagephysicians.com", true }, + { "villageofwitheewi.gov", true }, { "villagesincrisis.tk", true }, { "villageunique.com.br", true }, { "villagevet.co.uk", true }, @@ -127604,6 +146712,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "villakiralik.com", true }, { "villalmanzo.tk", true }, { "villamenty.com", true }, + { "villanew.tk", true }, + { "villanyautosok.hu", true }, { "villapads.com", true }, { "villaparkil.gov", true }, { "villapiknik.tk", true }, @@ -127614,51 +146724,58 @@ static const nsSTSPreload kSTSPreloadList[] = { { "villasfinistere.fr", true }, { "villasforsale-bali.com", true }, { "villasintrabali.com", true }, + { "villasupport.it", true }, + { "villaumbrales.tk", true }, { "villavaltava.fi", true }, { "villaville.com", true }, { "villawirz.it", true }, { "ville-aime.fr", true }, + { "ville-nesle.fr", true }, { "villehardouin.fr", true }, { "villek.fi", true }, { "villekaaria.eu", true }, { "villekautto.com", true }, { "villenavedornon.fr", true }, - { "villenvinkit.com", true }, { "villerez.fr", true }, { "villeroy-immobilier-sete.fr", true }, { "villers-ecalles.fr", true }, { "villesalonen.fi", true }, { "villian.tk", true }, - { "villitalia.nl", true }, { "villnoesser-tal.com", true }, { "villu.ga", true }, { "villu.stream", true }, - { "vilony.com", true }, - { "vilonystore.my.id", true }, + { "viload.org", true }, { "vilostore.my.id", true }, { "viltsu.net", true }, { "vilvoordelaan.be", true }, - { "vim.ge", true }, { "vima.ch", false }, { "vimbom.tk", true }, + { "vimbowen.xyz", true }, { "vimeo.com", true }, { "vimeosucks.nyc", true }, { "vimexx.nl", true }, + { "vimium.com", true }, + { "vimka.gq", true }, { "vimoksa.com", true }, { "vimworld.com", true }, - { "vinacocha.com", false }, + { "vinacocha.com", true }, { "vinarstvimodryhrozen.cz", true }, + { "vinaygakhar.tk", true }, { "vinaygarg.com", true }, { "vinc.me", true }, { "vinc.name.tr", true }, + { "vincecima.com", true }, { "vincehut.top", true }, + { "vincemumford.com", true }, { "vincent-haupert.de", true }, { "vincentcox.com", false }, { "vincentdame.net", true }, { "vincenticosmeticsurgery.tk", true }, { "vincentiliano.tk", true }, { "vincentpancol.com", true }, + { "vincentpo.tk", true }, { "vincentsimon.de", true }, + { "vincentvdsluijs.nl", true }, { "vincentwolsink.nl", false }, { "vinceracing.tk", true }, { "vincexpertconsulting.fr", true }, @@ -127675,31 +146792,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vinci.lu", true }, { "vincible.space", true }, { "vinciconps4.it", true }, - { "vincie.net", true }, { "vinciladislessia.it", true }, { "vincitraining.com", true }, + { "vincour.info", true }, { "vindafrid.com", true }, { "vindafrid.nu", true }, { "vindafrid.se", true }, + { "vindelicum.eu", true }, + { "vindeurgent.ro", true }, { "vindipoker.dk", true }, { "vindnu.dk", true }, { "vinduesgrossisten.dk", true }, + { "vineeth.uk", true }, { "vineethavarma.com", true }, + { "vinehall.ie", true }, + { "vinelli.de", true }, { "vinepower.co.nz", true }, { "vineripenutrition.com", true }, { "vinesauce.info", true }, + { "vineta.tk", true }, { "vinetalk.net", true }, { "vinetech.co.nz", true }, { "vineyard-wash.com", true }, - { "vinga.ml", true }, + { "vingahiss.se", true }, { "vingt.me", true }, { "vingtsuncoach.tk", true }, { "vinhobros.de", true }, - { "vinhoscortem.com", true }, + { "vinhomes.tv", true }, + { "vinhomesonline.com", true }, + { "vinhosdoalentejo.pt", true }, { "vinicius.sl", true }, { "viniciuscosta.tk", true }, { "vinigas.com", true }, { "vinihk.com", false }, + { "vinilart.com", true }, { "vinilosdecorativos.net", true }, { "vinistas.com", true }, { "vinit.tk", true }, @@ -127709,16 +146835,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vinny.tk", true }, { "vinnyvidivici.com", true }, { "vinodoc.cz", true }, + { "vinoffice.vn", true }, + { "vinohradiv.tk", true }, { "vinokourovnet.tk", true }, { "vinokurov.tk", true }, { "vinolli.de", true }, + { "vinopan.de", true }, { "vinorossoconero.com", true }, { "vinoshipper.com", true }, - { "vinotec.net", true }, + { "vinothek-northeim.de", true }, { "vinovum.net", true }, + { "vinoxo.in", true }, { "vinsation.com", true }, { "vinsetchampagne.fr", false }, - { "vinsonconsulting.cl", true }, { "vinsonfinancials.tk", true }, { "vinstafood.com", true }, { "vintageaudio.tk", true }, @@ -127729,41 +146858,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vintagejeeps.net", true }, { "vintagemakeupguide.com", true }, { "vintageportgifts.co.uk", true }, + { "vintagestock.com", true }, { "vintagetoydepot.tk", true }, { "vintagetrailerbuyers.com", true }, { "vintagewedding.tk", true }, { "vintazh.net", true }, - { "vinticom.ch", false }, + { "vintizen.com", true }, { "vintom.com", true }, { "vintonia.gov", true }, { "vinumenu.com", true }, { "vinyl-digital.com", true }, { "vinylbasement.tk", true }, { "vinylfencestlouis.com", true }, + { "vinzer.tk", true }, { "vinzite.com", true }, - { "viocleannettoyage.com", true }, + { "violapiekut.com", true }, { "violarenate.com", true }, + { "violetfairy.tk", true }, + { "violetmyerspornstar.com", true }, { "violetraven.co.uk", true }, { "violettecleaning.be", true }, + { "violifefoods.com", true }, { "violin4fun.nl", true }, - { "viome.com", true }, { "vionicbeach.com", true }, { "vionicshoes.com", true }, { "vionity.co", true }, { "viosey.com", true }, + { "vioye.com", true }, { "vip-6132.com", true }, { "vip-agency-escort.com", true }, - { "vip-escort-agency.com", true }, + { "vip-banner.tk", true }, { "vip-it.pl", true }, { "vip-moda.ga", true }, { "vip-sauna.tk", true }, + { "vip-soski.tk", true }, { "vip-ssl.com", true }, { "vip-transfer.by", true }, - { "vip.de", true }, { "vip00228.com", false }, { "vip11018.com", false }, { "vip2132.com", true }, { "vip22884.com", false }, + { "vip33138.com", false }, { "vip4553.com", true }, { "vip45bet365.com", false }, { "vip5132.com", true }, @@ -127771,36 +146906,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vip6132.com", true }, { "vip77018.com", false }, { "vip8522.com", true }, + { "vipaairportsp3.gov", true }, { "vipdirektolog.ru", false }, { "vipenvia.com.br", true }, { "viper-drones.com", true }, { "viper-drones.shop", true }, - { "viperperformance.co.uk", true }, { "vipertechnology.com.br", true }, + { "vipesball.me", true }, { "vipesball.net", true }, { "vipfitter.com", true }, + { "vipframesandtrusses.co.nz", true }, { "vipgalant.ru", true }, { "viphackers.tk", true }, { "vipi.es", true }, { "vipkit.com", true }, { "vipku.ru", true }, + { "viplata-mgnovenno.ml", true }, { "viplc4.com", false }, { "viplc6.com", false }, { "viplc68.com", true }, { "viplc98.net", true }, + { "vipline.me", true }, { "viplive.tk", true }, { "vipllcnj.com", true }, { "vipmdh.com.ua", true }, { "vipmercedes.by", true }, { "viporiflame.tk", true }, - { "vippclub.be", false }, + { "vippclub.be", true }, + { "viprsolutions.com", true }, { "vips.pl", true }, + { "vipsauna.gq", true }, { "vipsexvault.com", true }, + { "vipshop.ga", true }, + { "vipsibir.cf", true }, { "vipstat.pl", true }, - { "viptamol.com", true }, { "viptravel.tk", true }, { "vipturismo-europa.com", true }, { "vipus.gq", true }, + { "vipuser.info", true }, { "vipw6600.com", false }, { "vipw6603.com", true }, { "vipw6606.com", false }, @@ -127808,25 +146951,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vir-tec.eu", false }, { "vir2.me", true }, { "virajtharinda.tk", true }, + { "viral-loops.com", true }, { "viral32111.com", true }, + { "virala.tk", true }, { "viralboombox.xyz", true }, - { "viralcreate.com", false }, { "viralhua.com", true }, { "viralinsurance.ga", true }, { "viraljobs.ga", true }, { "viraloffer.ga", true }, - { "viralpop.it", false }, + { "viralpagi.com", true }, + { "viralrakyat.com", true }, { "viralsv.com", true }, + { "viraltalky.com", true }, + { "viraltech.cf", true }, { "viralted.ml", true }, { "viraltobuzz.tk", true }, { "viraltube.my", true }, { "viralvids.gq", true }, + { "viraly.me", true }, { "viran-khodro.tk", true }, { "virazh58.tk", true }, { "vircloud.net", true }, + { "virga.pp.ua", true }, + { "virgi.tk", true }, { "virgil.gg", true }, + { "virgilsecurity.com", true }, { "virginiaabc.gov", true }, { "virginiabeachcoolsculpting.com", true }, + { "virginiagardens-fl.gov", true }, { "virginiahealth.tk", true }, { "virginiaisgoingsolar.com", true }, { "virginianreview.com", true }, @@ -127837,18 +146989,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "virgintears.tk", true }, { "virgontech.tk", true }, { "virgosecurity.com.au", true }, + { "virgulazero.com.br", true }, + { "virial.de", false }, { "viridis-milites.cz", true }, + { "virima.com", true }, { "viris.si", true }, + { "virkhost.com", true }, { "virostack.com", true }, + { "virot.eu", true }, { "virtasktic.com", true }, + { "virtbaza.cf", true }, { "virtit.fr", true }, { "virtlinux.eu", true }, - { "virtool.ca", true }, + { "virtola.ml", true }, { "virtua.com.tr", true }, + { "virtuaal.com", true }, { "virtual-assistant.ml", true }, + { "virtual-data-room.org", true }, + { "virtual-dba.com", true }, { "virtual-insanity.tk", true }, { "virtual-webcam.com", true }, - { "virtual.hk", false }, + { "virtualarkansas.org", true }, { "virtualbrands.com", false }, { "virtualbrestby.tk", true }, { "virtualbruges.tk", true }, @@ -127859,10 +147020,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "virtualcomputer.ml", true }, { "virtualdesign.tk", true }, { "virtualdesignmedia.com", true }, + { "virtualedge.org", true }, { "virtualgayhd.com", true }, { "virtualgovernance.tk", true }, + { "virtualgraffiti.com", true }, + { "virtualhawaii360.com", true }, { "virtualife.tk", true }, + { "virtualing.org", true }, { "virtuality4d.com", true }, + { "virtualization-online.org", true }, + { "virtuallanding.com", true }, { "virtuallifestyle.nl", true }, { "virtuallypilates.com", true }, { "virtualmachine.tk", true }, @@ -127870,6 +147037,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "virtualmt2.pl", true }, { "virtualnet.ec", true }, { "virtualpavilion.co", true }, + { "virtualpiano.net", true }, { "virtualprom.tk", true }, { "virtualroad.org", true }, { "virtualsanity.com", true }, @@ -127878,113 +147046,157 @@ static const nsSTSPreload kSTSPreloadList[] = { { "virtualshell.ml", true }, { "virtualspeech.com", true }, { "virtualtabletop.io", true }, - { "virtualvaults.com", true }, + { "virtualvaults.com", false }, { "virtualx.de", true }, { "virtubox.net", true }, { "virtubox.xyz", true }, { "virtubroker.com.mx", true }, + { "virtuele-dataroom.nl", true }, { "virtueturkey.ga", true }, + { "virtuology.com", true }, { "virtus-group.com", true }, - { "virtusaero.com", true }, + { "virtusaero.com", false }, { "virtwen.com", true }, { "virty.cz", true }, { "virus.pm", true }, { "virusah1n1.com", true }, - { "viruscare.info", true }, { "virusdelebola.com", true }, { "virusmousepads.tk", true }, { "virusprotect.ro", true }, { "virusquery.com", true }, { "visa-master.tk", true }, + { "visacentre.pk", true }, { "visadaifu.com", false }, - { "visadoparausa.com", true }, { "visafruit.com", true }, + { "visale.fr", true }, { "visalia.gov", true }, { "visaliafarmersmarket.com", false }, { "visalist.io", true }, { "visalogy.com", true }, { "visaop.com", true }, { "visapourailleurs.fr", false }, + { "visapro.com", true }, + { "visapro.me", true }, + { "visaprolaw.com", true }, { "visarewardprogramplatform.com", true }, { "visartdecor.com.ua", true }, { "visasofoz.com", true }, - { "visaster.com", true }, - { "visaster.ru", true }, { "visatime.info", true }, { "visatitans.ae", true }, { "visatitans.ca", true }, { "visatitans.co.uk", true }, { "visatitans.com", true }, + { "visavtodor.ru", true }, + { "visaxplorer.com", true }, { "visaya.com.co", true }, + { "visceralsound.ca", true }, { "viscoelastico.com.br", true }, - { "visconapp.com", true }, + { "visconde-de-maua.com.br", true }, { "viscondedemaua.com.br", true }, + { "viscondedemauapousadas.com.br", true }, { "viscopic.com", true }, { "vise.com", false }, { "visegradieskuvo.hu", true }, { "visegradtours.hu", true }, { "viseum.co.uk", true }, + { "visforvaccinated.gov", true }, + { "vishenka.tk", true }, { "vishnujyothi.co.uk", true }, { "vishwashantiyoga.com", true }, { "visibleone.com", true }, { "visiblethoughts.co.uk", true }, { "visikom.de", true }, + { "vision-du-net.com", true }, + { "vision-net.ie", true }, { "vision-painting.com", true }, { "vision2005.tk", true }, + { "visionamp.com", true }, { "visionations.com", true }, + { "visioncenter.org", true }, { "visioncloud.tk", true }, { "visioncraftinc.com", true }, { "visiondetails.ru", true }, { "visiondigitalpe.com", true }, { "visiondigitalsog.com", true }, + { "visiondrivers.com", true }, { "visionduweb.fr", true }, { "visioneducation.tk", true }, + { "visionexpress.com", true }, + { "visionexpress.ie", true }, { "visiongamestudios.com", true }, + { "visionlearning.com", true }, { "visionnissancanandaiguaparts.com", true }, + { "visionnocturne.tk", true }, + { "visionoscope.org", true }, { "visionpeak.net", true }, { "visionproductssoutheast.com", true }, - { "visionsmind.xyz", true }, + { "visionsc.co.uk", true }, + { "visionsofmysoul.com", true }, { "visionthroughknowledge.com", true }, { "visiontree-beta.eu", true }, + { "visionunit.ch", true }, { "visionwow.ai", true }, { "visionxcreative.gq", true }, { "visionzeroreporting.com", true }, + { "visiquate.com", true }, { "visit-sanbenedettodeltronto.it", true }, { "visit-thailand.tk", true }, { "visit.gent", true }, { "visit.natal.br", true }, - { "visitasguiadasalhambra.com", true }, + { "visitafuengirola.es", true }, + { "visitafuengirola.ru", true }, + { "visitaltai.info", true }, { "visitationbvm.net", true }, + { "visitazores.com", true }, { "visitbangkoktravel.com", true }, - { "visitbeulah.com", true }, + { "visitbelfast.com", true }, + { "visitbinghamton.org", true }, { "visitcambridgeshirefens.org", true }, { "visitcamden.com.au", true }, { "visitcaparica.com", true }, { "visitconwaysc.gov", true }, + { "visitdubai.com", true }, { "visiter-tunis.tk", true }, { "visitgaribaldi.gov", true }, { "visitgent.be", true }, { "visitgent.eu", true }, { "visitghent.be", true }, { "visitghent.eu", true }, + { "visithistoricbethlehem.com", true }, { "visithuntingtonwv.org", true }, + { "visitidaho.org", true }, + { "visitinvernesslochness.com", true }, { "visitislandpond.com", true }, { "visitkeralaadventure.org", true }, { "visitmaine.com", true }, + { "visitmexico.com", true }, { "visitmorelos.mx", true }, { "visitnamibia.net", true }, + { "visitnewcastle.com.au", true }, { "visitoractivities.com", true }, { "visitorguard.com", true }, { "visitorsguide.is", true }, { "visitorslist.com", true }, { "visitosalnes.com", true }, + { "visitpagosasprings.com", true }, + { "visitpare.com", false }, + { "visitperth.com", true }, { "visitrainscounty.com", true }, - { "visittartu.com", true }, + { "visits.ga", true }, + { "visits.tk", true }, + { "visitsights.com", true }, + { "visitsights.de", true }, + { "visitstegen.com", true }, + { "visittartu.com", false }, { "visittci.com", true }, { "visitthematrix.tk", true }, + { "visituzbekistan.tk", true }, { "visitvalenca.com", false }, + { "visitwv.com", true }, { "visitzug.ga", true }, { "visma-apps.com", true }, + { "vismaverzuim.com", true }, + { "visomdm.com", true }, { "visometry.com", true }, { "visor.ph", true }, { "visordown.com", true }, @@ -127993,12 +147205,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "visscher.codes", true }, { "vista-calculator.ru", true }, { "vista-research-group.com", true }, + { "vista.gov", true }, + { "vistaalegre.com", true }, { "vistaalmar.es", true }, + { "vistacampus.gov", true }, + { "vistadreams.org", true }, { "vistamatic.eu", true }, + { "vistapaket.com.ua", true }, { "vistapoquei.com.br", true }, { "vistastylebuilder.com", false }, { "vistb.me", true }, { "vistec-support.de", true }, + { "vistmagazine.com", true }, + { "visu.li", true }, { "visual-cockpit.com", false }, { "visual-concept.net", true }, { "visual-conversion.com", true }, @@ -128008,32 +147227,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "visualetiquetas.art.br", true }, { "visualforce.com", true }, { "visualgnome.com", true }, - { "visualideas.org", true }, { "visualizing.info", true }, { "visuall.be", true }, { "visualmarketingdeals.com", true }, { "visualmasters.nl", true }, { "visualstories.com", true }, + { "visualtec.host", true }, { "visualwebclick.com", true }, { "visudira.com", true }, + { "visunext.de", true }, { "visuri.de", true }, { "visware.com", true }, { "visyeva.hu", true }, { "vita-nova.cl", true }, + { "vita-transmr.de", true }, { "vitaalcheck.nl", true }, { "vitaalfitcoaching.nl", true }, + { "vitabrillanti.com", false }, { "vitacare.com.au", true }, + { "vitacellbiologics.com", true }, + { "vitacore.ru", true }, + { "vitaerotaksi.ru", true }, + { "vitafybrands.de", true }, { "vitahook.pw", true }, - { "vital-pack.com", true }, - { "vital-tel.co.uk", true }, + { "vitahost.ml", true }, + { "vitakov.tk", true }, + { "vital-heart.com", true }, + { "vital.help", true }, + { "vital7.tech", true }, { "vitalamin.at", true }, { "vitalamin.ch", true }, - { "vitalamin.com", true }, + { "vitalchoice.com", true }, { "vitalhealthandbeauty.co.uk", true }, { "vitalia.cz", true }, { "vitaline.uz", true }, { "vitalismaatjes.nl", true }, - { "vitalitymedcenters.com", true }, + { "vitalitymedcenters.com", false }, { "vitalityscience.com", false }, { "vitaliyshepotkov.tk", true }, { "vitallispsy.be", true }, @@ -128041,38 +147270,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vitallispsy.de", true }, { "vitallispsy.eu", true }, { "vitallispsy.nl", true }, + { "vitalpraxis-lietz.de", true }, { "vitalshop.tk", true }, { "vitalsolutions.ro", true }, { "vitalthings.de", true }, { "vitalware.com", true }, + { "vitalybook.com", true }, { "vitalyzhukphoto.com", true }, { "vitamaxxi.com.br", true }, { "vitamed.ca", true }, { "vitamina.cl", true }, { "vitamina.com", true }, + { "vitaminas.me", true }, + { "vitamine-info.nl", true }, + { "vitaminegeszseg.hu", true }, + { "vitaminka.tk", true }, { "vitaminmovie.ga", true }, { "vitaminoutlet.net", true }, { "vitamixromania.ro", true }, + { "vitanetonline.com", true }, { "vitapingu.de", true }, { "vitario.eu", true }, { "vitastic.nl", true }, { "vitavarese.tk", true }, { "vitavista.health", true }, { "vitavista.io", true }, + { "vitay.pl", true }, { "viteoscrm.ch", false }, + { "viterbio.com", true }, { "viterboonair.tk", true }, + { "viteuneexcuse.io", true }, { "vitikit.com", true }, { "vitkausk.as", true }, { "vitlproducts.com", true }, { "vitman.tk", true }, + { "vitoriafloricultura.com.br", true }, { "vitoye.com", true }, { "vitra-showrooms.co.uk", true }, { "vitra-vcare.co.uk", true }, { "vitrade.de", true }, { "vitrado.de", true }, + { "vitrinachasov.cf", true }, + { "vitrineenligne.com", true }, { "vitromex.tk", true }, { "vitron.ru", true }, { "vitsearch.link", true }, + { "vitta.me", false }, { "vitto.tk", true }, { "vittoria-conseil.com", true }, { "vittoria-web.com", true }, @@ -128088,9 +147331,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "viva.ua", true }, { "viva2000.com", true }, { "vivablogger.com", true }, + { "vivabraslav.ga", true }, { "vivace.parts", true }, { "vivachile.tk", true }, + { "vivaconagua.org", true }, { "vivaelmusculo.com", true }, + { "vivagy.com", true }, { "vivahome.tk", true }, { "vivaio.roma.it", true }, { "vivaiocolombo.com", true }, @@ -128099,17 +147345,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vivaldi.club", true }, { "vivaldi.com", true }, { "vivaldi.net", true }, + { "vivaleisure.com.au", true }, + { "vivaleisure.group", true }, { "vivamortgage.tk", true }, { "vivanosports.com.br", false }, - { "vivantstays.com", true }, - { "vivaocredito.com.br", true }, { "vivapharma.net", true }, { "vivas.cf", true }, + { "vivas.gq", true }, { "vivas.ml", true }, { "vivas.tk", true }, + { "vivat.de", true }, { "vivatbet.com.ee", true }, { "vivatbet.ee", true }, - { "vivatv.com.tw", true }, + { "vivatechnology.com", true }, + { "vivates.tk", true }, + { "vivavox.tk", true }, { "vive.com", false }, { "vive.link", true }, { "vivediabetes-sanamente.com", true }, @@ -128121,140 +147371,180 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vivemercadosaludable.com", true }, { "vivemontecarlo.tk", true }, { "vivendi.de", true }, + { "vivendoapalavra.org", true }, { "vivendoderendananet.com.br", true }, { "viveoriginals.com", true }, { "viveport.com", true }, { "viveportal.com", true }, { "viveras.ch", true }, { "viveremediglia.tk", true }, + { "viverse.com", true }, { "vivesaludableconomnilife.com", true }, { "vivetoluca.com", true }, { "vivezlaromate.com", true }, - { "vivi.fyi", true }, - { "vivi.zone", true }, + { "vivi.fyi", false }, + { "vivi.zone", false }, { "vivian.tk", true }, { "vivianaball.ro", true }, { "vivianadavila.com", true }, + { "vivianargiriou.gr", false }, { "vivianlms.ga", true }, { "vivianmaier.cn", true }, + { "vivianshultsart.com", true }, + { "vivichannel.tk", true }, { "vivid-academy.com", true }, { "vivide.re", true }, { "vividinflatables.co.uk", true }, + { "viviendacoomeva.com", true }, + { "viviennelinettevandenassem.tk", true }, { "viviennevandenbos.nl", true }, + { "vivimasverde.com.ar", true }, { "vivirenelmundo.com", true }, { "vivirenelpoblado.com", true }, { "vivo.cam", true }, - { "vivo.vn", true }, + { "vivo.vn", false }, { "vivoitaliankitchen.com", true }, { "vivoldi.com", true }, - { "vivoregularizafacil.com.br", true }, + { "vivos.co.il", true }, { "vivoseg.com", false }, - { "vivre-en-allemagne.com", true }, { "vivreenisrael.com", true }, + { "vivun.com", true }, + { "vivy.com", true }, { "viwsec.com.br", true }, + { "vixlum.com", true }, { "vixonline.com.br", true }, + { "vixra.org", true }, { "vixrapedia.org", true }, { "viyf.org", true }, + { "viyoga.co", true }, { "vizantia.tk", true }, { "vize.ai", false }, { "vizedia.ga", true }, { "vizierdata.ca", true }, - { "vizija-nepremicnine.si", true }, { "vizion.com", true }, { "vizional.com", false }, { "vizirinvestimentos.com", true }, + { "vizit-obmen.tk", true }, { "vizit.ml", true }, { "vizit.tk", true }, + { "vizitfree.ml", true }, { "vizitnik.tk", true }, { "vizmart.ml", true }, { "vizyonpara.com", true }, { "vizzarragrup.com", true }, { "vjeff.com", true }, { "vjeff.net", true }, + { "vjk.dk", true }, { "vjn.ee", true }, { "vjqlifestyle.com", true }, + { "vjshi.xyz", false }, + { "vjshop.vn", true }, { "vjuliano.net", true }, { "vk-agent.ru", true }, { "vk-group.com", true }, { "vk-k.com", true }, + { "vk-random.ml", true }, { "vk-srv.ru", true }, { "vk.group", true }, + { "vk.nl", true }, + { "vk09.ru", true }, { "vk1fj.net", true }, { "vk2.net", true }, { "vkarpaty.tk", true }, { "vkavkaz.tk", true }, { "vkb-remont.ru", true }, + { "vkcombo.ru", true }, { "vkennke.org", true }, + { "vkfaces.com", true }, { "vkfish.ga", true }, { "vkflac.tk", true }, + { "vkg.nl", false }, + { "vkgroup.az", true }, { "vkh-online.de", true }, - { "vkidsindia.com", true }, { "vkikaku.com", false }, { "vkino.com", false }, { "vkino.ml", true }, { "vkirichenko.name", true }, { "vkirienko.com", true }, { "vklikers.tk", true }, + { "vkolledzhe.tk", true }, + { "vkontakte-poisk.ru", true }, { "vkox.com", true }, - { "vkr2020.herokuapp.com", true }, + { "vkrutilca.tk", true }, { "vksportphoto.com", true }, + { "vkst-field-trials.dk", true }, { "vkstaticcdn.ru", true }, { "vkstaticcontent.ru", true }, { "vkstream.tk", true }, { "vkulagin.ru", true }, { "vkusercontent.ru", true }, { "vkusniy.shop", true }, + { "vkusnyashka.tk", true }, { "vkustradicii.com.ua", true }, + { "vkusvill.ru", true }, { "vl.cloudns.cc", true }, + { "vl9.de", true }, { "vlaamsegemeenschap.tk", true }, { "vlaamsetollers.tk", true }, { "vlaardingen-enzo.tk", true }, { "vlachoshome.com", true }, - { "vladcash.com", true }, + { "vladgazeta.gq", true }, + { "vladikavkaz-city.tk", true }, { "vladimir-chanaev.pro", true }, { "vladimir.ml", true }, + { "vladimirbatrakov.tk", true }, + { "vladimirchernyshov.ml", true }, + { "vladimirkarpets.tk", true }, { "vladimirovka.ml", true }, { "vladimirpenev.tk", true }, - { "vladislavstoyanov.com", true }, + { "vladimirwrites.com", true }, + { "vladislavstoyanov.com", false }, + { "vladivostok-city.tk", true }, { "vladivostok.cf", true }, + { "vladivostok.tk", true }, + { "vladivostokportal.tk", true }, { "vladmoraru.org", true }, { "vladreview.com", true }, { "vladsfads.com", true }, - { "vladwm.com", true }, { "vladwp.com", true }, { "vlaggen-landen.nl", true }, { "vlajo.org", true }, { "vlak.hr", true }, { "vlakem.net", true }, { "vlance.gq", true }, - { "vlaser.es", true }, + { "vlasov.ml", true }, + { "vlasova-sova.ml", true }, + { "vlccrussia.ru", true }, { "vlcentre.org", true }, + { "vlci-doupe.cz", true }, { "vldkn.net", true }, { "vldz.co", true }, + { "vle.lt", true }, { "vleague.tk", true }, { "vleesbesteld.nl", true }, { "vleij.com", false }, { "vleij.family", true }, { "vleij.se", true }, { "vleo.me", true }, + { "vliegendklokske.com", true }, { "vliegherrie.nl", true }, { "vlijmscherrup.tk", true }, + { "vlike.ml", true }, { "vlissingse-oratoriumvereniging.nl", true }, { "vlndc.org", true }, { "vlnv.ca", true }, { "vloeck.de", true }, { "vloggerfaire.com", true }, { "vloggerspace.tk", true }, + { "vlos.com.pl", true }, { "vlovgr.se", true }, { "vltonline.org", true }, { "vlzbazar.ru", true }, { "vm-0.com", true }, - { "vm-co.ch", false }, + { "vm.co.mz", false }, { "vm.ee", false }, { "vm0.eu", true }, - { "vma.community", true }, { "vmagadane.tk", true }, - { "vmahome.com", true }, { "vmath.my.id", true }, { "vmautorajkot.com", true }, { "vmaxleclub.com", true }, @@ -128264,31 +147554,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vmedia.ca", true }, { "vmf365.tk", true }, { "vmgirls.com", false }, - { "vmhomedesign.com", false }, { "vmhydro.ru", false }, { "vmis.nl", true }, { "vmlze.cz", true }, { "vmm.pw", true }, + { "vmninja.io", true }, { "vmoagents.com", false }, + { "vmock.com", true }, { "vmoe.info", true }, - { "vmonetke.ru", true }, + { "vmoffer.com", true }, { "vmotosoco.lv", false }, + { "vmst.io", true }, { "vmsurgery.org", true }, { "vmug.pl", true }, + { "vmurmanske.tk", true }, { "vn.search.yahoo.com", false }, + { "vnanet.vn", true }, + { "vnback.com", true }, { "vnctdj.fr", true }, { "vnd.cloud", true }, { "vndb.org", true }, { "vneftekamske.tk", true }, { "vnetboard.com", true }, + { "vnikolaev.tk", true }, { "vnlfrk.com", true }, { "vnministries.org", true }, { "vnovosibirske.tk", true }, - { "vnpay.vn", true }, - { "vnpem.com", true }, - { "vnpem.store", true }, - { "vnrebates.net", true }, - { "vns168.vip", true }, + { "vns168.vip", false }, { "vns377c.com", false }, { "vns377d.com", false }, { "vns377e.com", false }, @@ -128298,6 +147590,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vns377i.com", false }, { "vns377j.com", false }, { "vns3780.com", true }, + { "vns5020.com", false }, { "vns5151.com", false }, { "vns5353.com", false }, { "vns5656.com", true }, @@ -128307,7 +147600,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vns6161.com", false }, { "vns6262.com", false }, { "vns6363.com", false }, - { "vns6565.com", true }, + { "vns6565.com", false }, { "vns6767.com", false }, { "vns68611.com", false }, { "vns68655.com", true }, @@ -128318,20 +147611,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vns6969.com", false }, { "vnsc.org", true }, { "vnumngr.com", true }, - { "vnvisa.ru", true }, + { "vnxf.vn", true }, + { "vnya.loan", true }, + { "vo-vse-tyajkie.online", true }, + { "voatz.com", true }, + { "vobe.io", true }, + { "vobis.pl", true }, { "vocably.de", true }, { "vocaloid.my", true }, { "vocalviews.com", true }, { "vocationaujourdhui.fr", true }, { "vocationnetwork.org", true }, - { "vocescruzadasbcs.mx", true }, { "vocomo.de", true }, { "voctto.com.br", true }, { "vocus.aero", true }, { "vocustest.aero", true }, { "vod.uk.com", false }, - { "voda.org.ru", true }, - { "vodachile.cl", true }, { "vodadombay.cf", true }, { "vodafone.com.gh", true }, { "vodavoda.tk", true }, @@ -128358,55 +147653,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voffka.com", true }, { "vofwittenbergwi.gov", true }, { "vofy.cz", true }, + { "vogel-verhuizingen.nl", true }, { "vogelbus.ch", true }, { "vogelwereld.tk", true }, { "vogler.name", true }, + { "vogt.sh", true }, { "vogt.works", true }, { "vogue.co.uk", true }, { "vogue.cz", true }, + { "vogue.gr", true }, + { "voguefabricsstore.com", true }, + { "voguefrontier.tk", true }, { "voi.ch", true }, { "voice-of-design.com", true }, { "voice-pic.com", true }, + { "voice.gov.au", true }, { "voicedata.tk", true }, + { "voicemaker.in", true }, + { "voicenation.com", true }, + { "voiceofcricket.tk", true }, + { "voiceofserbia.tk", true }, { "voicesoflabor.com", true }, { "voicesofspirit.at", true }, { "voicesuk.co.uk", true }, { "voicu.ch", false }, { "voidancerecords.com", true }, { "voidbbs.com", true }, + { "voidbits.io", true }, { "voidbot.ai", true }, { "voidcore.org", true }, + { "voide.club", true }, { "voidge.cf", true }, + { "voidhacker.com", true }, { "voidi.ca", true }, { "voidma.in", true }, - { "voidnya.com", true }, - { "voidp.de", true }, + { "voidpay.com", true }, { "voidpay.net", true }, { "voidpay.org", true }, - { "voidptr.eu", true }, - { "voidshift.com", true }, { "voidx.top", true }, + { "voigt-it.solutions", true }, + { "voileux.org", true }, { "voinuocsago.com", true }, { "voinuocthienmy.com", true }, { "voipforbusiness.tk", true }, { "voiretmanger.fr", true }, + { "voiretrevu.ca", true }, + { "voirfilms.live", true }, + { "voitolla.com", true }, + { "voivoinfotech.com", true }, { "voix-bien-etre.com", false }, { "vojenshandicap.dk", true }, - { "vojkovic.xyz", true }, { "vojtat.cz", true }, { "vokabl.io", true }, + { "vokabula.com", true }, { "vokativy.cz", true }, { "vokieciupamokos.lt", true }, { "vokimberlywi.gov", true }, { "vokov.ml", true }, + { "vokrug.ga", true }, + { "vokurka.net", true }, + { "vokzalkursk.ru", true }, { "vokzalperm.ru", true }, - { "volant.digital", true }, + { "volant.digital", false }, { "volantinaggioaroma.it", true }, - { "volarewealth.com", true }, { "volarikcapital.eu", true }, { "volatile.pw", true }, { "volatilesystems.org", true }, { "volatilethunk.com", true }, + { "volatiliza.ga", true }, { "volatimer.com", true }, { "volcain.io", true }, { "volcanconcretos.com", true }, @@ -128414,21 +147728,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "volcano-spb.ru", true }, { "volcano-ug.ru", true }, { "volcano-vts.ru", true }, - { "volcano-x.ru", true }, { "volcano.lt", true }, { "volcano24.ru", true }, { "volcano75.ru", true }, { "volcanov.ru", true }, { "volchara.tk", true }, { "volebnipruzkum.eu", true }, - { "volga.us", true }, + { "volga.us", false }, { "volgar.name", true }, { "volgares.ru", true }, { "volgavibes.ru", false }, + { "volgograd-34.tk", true }, { "volgograd-privolzskiy.ga", true }, + { "volgograd34.tk", true }, { "volha.tk", true }, { "volichat.com", true }, + { "volin.tk", true }, { "volk.ga", true }, + { "volk.gq", true }, { "volkanyilmaz.com.tr", true }, { "volker-gropp.de", true }, { "volkergropp.de", true }, @@ -128438,10 +147755,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "volki.ml", true }, { "volkistore.ch", true }, { "volkov.ga", true }, + { "volksbaufi.de", true }, + { "volksbauzins.de", true }, + { "volkskrant.nl", true }, { "volkstuinwaregem.tk", true }, { "volksvorschlagpmar.ch", true }, { "volkswagen.io", true }, + { "volkswagengolf.tk", true }, { "volkswagenmiennam.com.vn", true }, + { "volkswagensaigon.com.vn", true }, { "volkswagensaigon.net", false }, { "volkswurst.de", true }, { "vollenberg.ca", true }, @@ -128450,6 +147772,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "volleyfreaks.tk", true }, { "volleypatos.tk", true }, { "vollmondstollen.de", true }, + { "volnamobile.ru", true }, { "volochaevskiy.tk", true }, { "volochisk.tk", true }, { "voloder.net", true }, @@ -128461,7 +147784,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voloskova.ru", true }, { "volqanic.com", true }, { "volreinsistemas.com", true }, - { "volta.io", false }, + { "volt.fm", true }, + { "volta.io", true }, { "voltageelectricity.tk", true }, { "voltahurt.pl", true }, { "voltainsite.com", true }, @@ -128470,35 +147794,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voltcloud.net", true }, { "voltekka.com.au", true }, { "voltfloyd.com", true }, + { "volthemes.com", true }, { "voltiac.ml", true }, { "volto.io", true }, { "voltrix.net", true }, { "volubilisplus.fr", true }, { "volunka.ml", true }, - { "voluntarist.dk", true }, { "volunteerham.com", true }, { "volunteerhere.ga", true }, { "volunteers.tk", true }, + { "volunteertherealuganda.com", true }, { "voluntourism.ga", true }, { "volusia.gov", true }, { "volusiaelections.gov", true }, { "volusiasheriff.gov", true }, { "volusiavotes.gov", true }, - { "volviers.nl", true }, { "volvo1800es.tk", true }, { "volvoconnect.com", true }, - { "vomitb.in", true }, + { "vom-achterhof.de", true }, { "vomitoxin.ga", true }, + { "vommu.be", true }, { "vomsee.eu", true }, + { "von-haselberg.de", true }, { "vonauw.com", false }, + { "vonborstelboerner.de", true }, { "vonckers.tk", true }, { "vondenstein.com", true }, + { "vonfurstenrechtstables.nl", true }, { "vonimus.com", true }, + { "vonitsanet.gr", true }, { "vonkuenheim.de", true }, { "vonniehudson.com", true }, - { "vonnu.edu.ee", true }, { "vonpawn.com", true }, { "vonski.pl", true }, + { "vonsponneck.tv", true }, { "vonsuri.com", true }, { "voodoobeginner.com", true }, { "voodoocat.cf", true }, @@ -128506,6 +147835,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vookstock.tk", true }, { "voolik.pw", true }, { "voorde.lol", true }, + { "voordewereldvanmorgen.nl", true }, { "vooreenveiligthuis.nl", false }, { "voornaam-at-achternaam.be", true }, { "vooruitmetjevereniging.nl", true }, @@ -128514,7 +147844,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vop.li", true }, { "voprosnik.gq", true }, { "voprosownet.tk", true }, - { "voragorn.com", true }, + { "voquent.com", true }, { "vorbrodt.blog", true }, { "vorderklier.de", true }, { "vorkbaard.nl", true }, @@ -128524,13 +147854,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vorlonempire.org", true }, { "vorm2.com", true }, { "vorona.tk", true }, + { "vort-x.com.my", true }, { "vortari.tk", true }, { "vorte.ga", true }, { "vortexhosting.ga", true }, { "vortix.tk", true }, { "vos-fleurs.ch", true }, { "vos-fleurs.com", true }, - { "vos-stages.fr", true }, { "vos-systems.com", true }, { "vos-systems.es", true }, { "vos-systems.eu", true }, @@ -128542,7 +147872,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voshod.org", true }, { "vosjesweb.nl", true }, { "vosk-cream.tk", true }, - { "vosky.fr", true }, { "vosn.de", true }, { "voss-klinik.com", true }, { "voss-zaehne.com", true }, @@ -128552,6 +147881,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vostok-zapad54.ru", true }, { "vostronet.com", true }, { "vot-tak-vot.tk", true }, + { "votajeffcoco.gov", true }, { "votan.cf", true }, { "vote.gov", true }, { "vote.nz", true }, @@ -128575,12 +147905,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "voteidaho.gov", true }, { "voteindianriver.gov", true }, { "votejacksonfl.gov", true }, + { "votejeffcoco.gov", true }, { "votekansas.gov", true }, { "voteks.gov", true }, { "votelevy.gov", true }, { "votemarion.gov", true }, { "votemate.org", true }, - { "votemoore.us", true }, + { "votemt.gov", true }, { "votenassaufl.gov", true }, { "voteokaloosa.gov", true }, { "voteokeechobee.gov", true }, @@ -128588,9 +147919,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "votepalmbeach.gov", true }, { "votepinellas.gov", true }, { "voter-info.uk", true }, + { "voterconnect.ie", true }, { "voterockfordil.gov", true }, { "votes-reu.ml", true }, { "votesantarosa.gov", true }, + { "votescotttn.gov", true }, { "voteseminole.gov", true }, { "votesjc.gov", true }, { "votetomgreencounty.gov", true }, @@ -128606,53 +147939,68 @@ static const nsSTSPreload kSTSPreloadList[] = { { "votrepolice.ch", false }, { "votresiteweb.ch", false }, { "votrespace.ca", true }, + { "voucher-express.fr", true }, { "vouchers4u.com", true }, { "voucherx.co.uk", true }, + { "vought-vip.com", true }, { "vous-etre-utile-ceidf.fr", true }, { "vous-les-jeunnes.tk", true }, + { "vousnousils.fr", true }, { "vov.furniture", true }, + { "vova.loan", true }, { "vovac.tk", true }, { "vovachka.tk", true }, { "vovkamagazine.tk", true }, { "vovladikavkaze.ru", true }, { "vovo4ka.tk", true }, { "vowsy.club", false }, - { "vowyboeq.duckdns.org", true }, { "vox.de", true }, + { "voxbras.com.br", true }, { "voxeaarecords.com", true }, { "voxel.cat", true }, { "voxel.sh", true }, { "voxelcat.de", true }, { "voxelcat.jp", true }, + { "voxeljet.com", true }, { "voxengo.com", true }, + { "voxfa.com", true }, { "voxfilmeonline.net", true }, + { "voxio.nl", true }, { "voxpopuli.com", true }, - { "voxsiren.net", true }, { "voxturba.com", false }, { "voxx1116.com", true }, { "voyage-martinique.fr", true }, + { "voyage2africa.com", true }, + { "voyagedeductible.com", true }, { "voyageforum.com", true }, { "voyageofyume.com", true }, { "voyagesparadis.ca", true }, + { "voyagesvoyages.net", true }, { "voyagewd.world", true }, { "voyagewiki.com", true }, { "voyagewiki.org", true }, - { "voyagewonders.com", true }, + { "voyainvestments.com", true }, { "voyaker.tk", true }, + { "voyance-direct.info", true }, { "voyancedanslenord.com", true }, + { "voyeurspyporn.com", true }, { "vozami.com", true }, { "vozbudim.tk", true }, { "vozdux.tk", true }, + { "vozelocucao.com.br", true }, { "vozhatik.cf", true }, { "vozhuo.cf", true }, + { "vozpopuli.com", true }, { "vp-arc.org", true }, { "vparilke.su", true }, - { "vpbuilds.com", true }, { "vpetkov.tk", true }, + { "vpn-suomi.fi", true }, + { "vpn-sverige.se", true }, { "vpn.ht", true }, { "vpn4free.ga", true }, { "vpnalert.com", true }, - { "vpnboss.com.au", true }, + { "vpnbrains.com", true }, + { "vpnclient.ru", true }, { "vpnemail.com", true }, { "vpnent.com", true }, { "vpnhongkong.gq", true }, @@ -128662,8 +148010,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vponline.com.br", true }, { "vporno.video", true }, { "vprotect.ga", true }, + { "vps-green.com", true }, + { "vps.auction", true }, + { "vps.chat", true }, + { "vps.discount", true }, { "vps.hosting", true }, { "vps.management", true }, + { "vps.tg", true }, { "vpsao.org", true }, { "vpsboard.com", true }, { "vpsce.com", false }, @@ -128679,11 +148032,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vpsvz.ninja", true }, { "vpswebs.tk", true }, { "vpsxhq.com", true }, + { "vpu-online.com", true }, { "vqcymsa.com", true }, { "vqebizconsulting.com", true }, { "vqeg.org", true }, { "vqn.se", true }, - { "vqporn.com", false }, + { "vr-immo-invest.biz", true }, + { "vr-immoexpress.biz", true }, + { "vr-payment.de", true }, + { "vr-re-bank.org", true }, + { "vr-realestate.co.uk", true }, { "vr-tops.ir", true }, { "vr3marcas.com.br", true }, { "vrac-drive.ch", true }, @@ -128692,12 +148050,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vractive.pl", true }, { "vragenvanproust.nl", true }, { "vrallart.com", true }, + { "vramoni.ru", true }, { "vran.ga", true }, { "vrandopulo.ru", true }, { "vravi.tech", true }, { "vrba.org", true }, + { "vrbangers.com", true }, + { "vrbl.pt", true }, { "vrbr.ch", false }, { "vrchat.community", true }, + { "vrconk.com", true }, + { "vrcosplayx.com", true }, { "vrcprofile.com", true }, { "vrcsearch.com", true }, { "vrdennis.tk", true }, @@ -128709,12 +148072,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vremyachko.tk", true }, { "vremyapervyih-hd.tk", true }, { "vresonline.gr", true }, + { "vresportal.co.uk", true }, { "vretmaskin.se", false }, - { "vreviewbestseller.com", true }, { "vrfoodchannel.com", true }, - { "vrfun18.com", true }, { "vrgamecritic.com", true }, - { "vrgametrailers.net", true }, + { "vrh.net.au", true }, { "vriendenkring-klassiekers.tk", true }, { "vriesdonkow.be", false }, { "vrifox.cc", true }, @@ -128722,21 +148084,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vrijekunst.tk", true }, { "vrijeradio.tk", true }, { "vrijgezellen-feest.com", true }, + { "vrijgezellen-feesten.nl", true }, { "vrijgezellenfeestzwolle.com", true }, - { "vrikshamindia.com", false }, - { "vrilliant.ch", true }, + { "vrikshamindia.com", true }, + { "vrimmoexpress.biz", true }, + { "vrimmoexpress.eu", true }, + { "vrimmoinvest.ag", true }, + { "vrimmoinvest.org", true }, + { "vrimmoworld.de", true }, + { "vriresorts.com", true }, { "vrisak-generacije.tk", true }, { "vrjetpackgame.com", true }, - { "vrlaid.com", false }, { "vrnhn.nl", true }, { "vroedvrouwella.be", true }, { "vros.co.id", true }, { "vrostove.tk", true }, + { "vrp.moe", false }, + { "vrre.ag", true }, + { "vrrebank.info", true }, { "vrsgames.com.mx", false }, { "vrsmash.com", true }, - { "vrsystem.com.br", true }, + { "vrsystem.com.br", false }, { "vrtak-cz.net", false }, + { "vrtidaho.gov", true }, { "vrtouring.org", true }, + { "vrumcar.com", true }, { "vrzas.net", true }, { "vrzl.pro", true }, { "vs1177.com", false }, @@ -128756,7 +148128,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vsaratove.tk", true }, { "vsatke.tk", true }, { "vsc-don-stocksport.de", true }, - { "vscale.io", false }, { "vscm888.com", false }, { "vscredconsultoria.online", true }, { "vsd.sk", true }, @@ -128764,11 +148135,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vse-dlya-fermera.tk", true }, { "vse-dlya-jinok.tk", true }, { "vse-dlya-texniki.tk", true }, + { "vse-dostavki.ru", true }, { "vse-novosti.tk", true }, { "vse-potolki.ml", true }, { "vse-prosto.tk", true }, { "vsean.net", true }, { "vsec.co.il", true }, + { "vsee.com", true }, { "vsekulinar.ru", true }, { "vsem-reiki.tk", true }, { "vsemrabota.ml", true }, @@ -128780,15 +148153,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vseserialy.tk", true }, { "vsesrazu-raiffeisen.ru", true }, { "vsestiralnie.com", false }, - { "vsestoki.com", true }, + { "vsestoki.com", false }, { "vsevkusno.tk", true }, { "vsevolod.tk", true }, { "vsgcommunity.nl", true }, + { "vsgd.co", true }, { "vshipit.com", true }, { "vshop.ir", true }, + { "vsimosvita.com", true }, { "vsl-defi.ch", false }, { "vsl.de", true }, + { "vsmcomunicacao.com.br", true }, + { "vsoflavors.com", true }, { "vsolovev.com", true }, + { "vsolvit.com", true }, + { "vsource-rsdv.azurewebsites.net", true }, { "vsoy.co.th", true }, { "vspin.cz", true }, { "vsportage.com", true }, @@ -128798,39 +148177,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vssnederland.nl", true }, { "vstavropole.tk", true }, { "vstrikovaci-lisy.cz", true }, - { "vsund.de", true }, { "vsure.com.au", true }, - { "vswitchnetworks.com", true }, { "vsx.ch", true }, { "vsz.me", true }, + { "vszp.sk", true }, { "vtanki.tk", true }, { "vtaxi.se", true }, { "vtbclub.xyz", true }, { "vtbs.moe", true }, { "vtc-bordeaux-gironde.fr", true }, + { "vtcourts.gov", true }, + { "vtech.com", true }, + { "vtescebu.com", true }, + { "vtexpayments.com.br", true }, { "vtipe-vylez.cz", false }, { "vtivision.com", true }, + { "vtjud.gov", true }, { "vtklan.tk", true }, { "vtler-glabbich.de", false }, + { "vtm.be", true }, + { "vtmgo.be", true }, { "vtoroy-kanal.ga", true }, + { "vtsmedia.com", true }, + { "vtsnetworks.com", true }, { "vttnordisere.fr", true }, { "vtuber-schedule.info", true }, { "vtuber.art", true }, { "vtul.io", true }, + { "vtulinkng.com.ng", true }, { "vtupro.com", true }, + { "vtvnetwork.org", true }, + { "vtwonen.be", true }, { "vtwonen.nl", true }, + { "vtwonenendesignbeurs.nl", true }, + { "vuagym.com", true }, { "vuakhuyenmai.vn", true }, - { "vuasinhly.com", true }, + { "vuasach.net", true }, + { "vuath.com", true }, { "vucdn.com", true }, + { "vue-sur-mer.com", true }, + { "vuefact.com", true }, { "vuelacaruru.com", true }, { "vuelosabajoprecio.net", true }, + { "vugt.me", true }, { "vuilelakens.be", true }, + { "vuitimig.com", true }, + { "vukhoidecor.com", true }, + { "vulcan-platinum.online", true }, + { "vulcan-russia.today", true }, { "vulcancycling.ga", true }, + { "vulcannow.ru", true }, + { "vulcanplatinum-best.com", true }, + { "vulcanplatinum777-vip.com", true }, + { "vulcanplatinum777club.com", true }, + { "vulcanplatinumplay.xyz", true }, + { "vulcanrussia-game.com", true }, + { "vulcanrussia24-pro.com", true }, + { "vulcanrussiagame.com", true }, { "vuldb.com", true }, { "vulgar-teens.tk", true }, + { "vulkan-24-platinum.ru", true }, + { "vulkan-platina.info", true }, + { "vulkan-platinum-101.ru", true }, + { "vulkan-platinum13.com", true }, + { "vulkan-platinumclub.ru", true }, + { "vulkan-platinumpro.com", true }, + { "vulkan-russia-pro.com", true }, + { "vulkan-russia.vip", true }, + { "vulkan-russiaklub.com", true }, + { "vulkan.org", true }, + { "vulkanmillioncasino.xyz", true }, + { "vulkano-online-casino.com", true }, + { "vulkanplatinacasino.xyz", true }, + { "vulkanplatinum-casino.xyz", true }, + { "vulkanplatinum-klub.com", true }, + { "vulkanplatinum22.com", true }, + { "vulkanplay-platinum.com", true }, { "vulkanprotektor.rs", true }, { "vulkanruhe.com", true }, { "vulkanruhe.de", true }, + { "vulkanrussia-avtomat.ru", true }, + { "vulkanrussia-casinos.com", true }, { "vullriede-multimedia.de", false }, { "vulndetect.com", true }, { "vulndetect.org", true }, @@ -128851,10 +148278,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vuotila.eu", true }, { "vuoto.fi", true }, { "vusdigital.com", false }, + { "vuse.com", true }, { "vutrox.com", true }, { "vutruso.com", true }, { "vux.li", true }, + { "vuze.camera", true }, { "vuzi.fr", true }, + { "vv066.com", false }, + { "vv1234.cn", true }, { "vv5197.co", true }, { "vv6729.co", true }, { "vv6729.com", false }, @@ -128864,7 +148295,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vv9721.com", false }, { "vv9728.co", true }, { "vvactivia.nl", true }, - { "vvave.net", false }, + { "vvave.net", true }, { "vvcasteren.nl", true }, { "vvd.bz", true }, { "vvdbronckhorst.nl", true }, @@ -128873,45 +148304,59 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vvlemmer.tk", true }, { "vvlen.com", true }, { "vvoip.org.uk", true }, + { "vvpn.loan", true }, { "vvs.spb.ru", true }, { "vvsummer.ml", true }, { "vvvvbrest.tk", true }, + { "vvvvvv.click", true }, { "vvvz0.gq", true }, + { "vvvzeeland.nl", true }, { "vvw-8522.com", true }, + { "vvwraca.gov", true }, { "vvzero.cf", true }, { "vvzero.com", true }, { "vvzero.xyz", true }, { "vw-touranclub.cz", true }, + { "vw-vnukovo.ru", false }, + { "vwcredit.com", true }, + { "vwforum.ro", true }, + { "vwfs.ru", true }, + { "vwfsfcp.com", true }, { "vwfsrentacar.co.uk", true }, { "vwh-kunden.de", true }, { "vwittich.de", true }, { "vwoforangeparts.com", true }, + { "vwp.su", true }, + { "vwpartsinternational.com", true }, { "vwsaigon.vn", false }, { "vwsoft.de", true }, { "vwt-event.nl", true }, { "vww-8522.com", true }, { "vx.hn", true }, { "vxapps.com", true }, - { "vxl.sh", true }, + { "vxl.sh", false }, + { "vxlabs.de", true }, { "vxm.se", true }, { "vxz.me", true }, { "vyacheslav.ml", true }, - { "vyaire.com", false }, { "vybavzahradu.cz", true }, { "vybeministry.org", true }, { "vyber-odhadce.cz", true }, { "vyberdomov.cz", true }, { "vyberodhadce.cz", true }, - { "vydelavejwebem.cz", true }, + { "vycius.lt", true }, { "vygeja.lt", true }, { "vygo.network", true }, { "vygo.one", true }, { "vyomoverseas.com", true }, { "vyorsa.com.mx", true }, + { "vypij.cz", true }, { "vyplnto.cz", true }, { "vyre.ovh", true }, { "vyresimeonline.cz", true }, { "vyroba.site", true }, + { "vyrubka-derevya.ru", true }, + { "vys.in", true }, { "vyshivanochka.in.ua", true }, { "vysko.cz", true }, { "vyskocil.com", true }, @@ -128924,14 +148369,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "vyturys.lt", true }, { "vyvod-iz-zapoya.online", true }, { "vyvozhlama24.ru", true }, - { "vyyer.com", true }, + { "vyvygen.org", true }, { "vyzner.cz", true }, { "vzce.cn", true }, { "vzducho-klima.cz", true }, { "vzemiseo.com", true }, { "vzemisite.com", true }, + { "vzr-garant.nl", true }, { "vzteam.ga", true }, - { "vztekloun.cz", true }, { "vzw-muzaik.tk", true }, { "vzwregent.be", true }, { "vzyatonlinezaim.ga", true }, @@ -128954,9 +148399,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w-ws.ga", true }, { "w.st", true }, { "w.wiki", true }, + { "w0.pw", true }, { "w00228.com", true }, { "w0102.com", true }, - { "w0fw.com", true }, + { "w03.cn", true }, { "w10club.com", false }, { "w1n73r.de", true }, { "w1nter.xyz", true }, @@ -128965,11 +148411,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w2ang.com", true }, { "w2design.eu", true }, { "w2n.me", true }, + { "w2w.com", true }, { "w33b.in", true }, { "w365.vip", false }, { "w36533.com", true }, { "w36594.com", true }, + { "w398.com", true }, { "w3app.nl", true }, + { "w3basic.com", true }, { "w3ctag.com", true }, { "w3ctag.org", true }, { "w3d.io", true }, @@ -128979,10 +148428,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w3n14izy.gq", true }, { "w3n14izy.ml", true }, { "w3n14izy.tk", true }, + { "w3protect.eu", true }, { "w3punkt.de", true }, { "w3scan.nl", true }, { "w3squad.com", true }, - { "w4.no", true }, { "w40faktory.tk", true }, { "w4b.in", true }, { "w4eg.de", true }, @@ -128997,20 +148446,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w5197.co", true }, { "w5gfe.org", true }, { "w60.co", true }, - { "w61516.com", true }, - { "w61518.com", true }, { "w61611.net", true }, { "w61616.com", false }, { "w66133.com", false }, - { "w66133.net", false }, { "w66136.net", false }, { "w66138.net", false }, { "w6616.com", true }, { "w661616.com", false }, { "w6619.com", true }, - { "w6648.com", true }, { "w668899.com", true }, - { "w66918.com", true }, { "w66938.com", true }, { "w6698.com", false }, { "w6729.co", true }, @@ -129018,21 +148462,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w6808.com", true }, { "w6829.com", true }, { "w6832.com", true }, - { "w6880.com", true }, { "w6886.com", true }, { "w6957.co", true }, { "w6957.com", false }, { "w7k.de", true }, { "w7n.ch", true }, - { "w80010.com", false }, { "w8094.com", true }, - { "w81365.com", true }, - { "w81519.com", true }, { "w82365.com", true }, { "w84.it", true }, { "w8605.com", true }, { "w8628.com", true }, - { "w8659.com", true }, { "w888022.com", false }, { "w888033.com", false }, { "w888044.com", false }, @@ -129041,18 +148480,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "w888088.com", false }, { "w889-line.com", true }, { "w889-line.net", true }, - { "w88info.com", true }, - { "w88info.win", true }, - { "w88soikeo.net", true }, + { "w88clubz.com", true }, + { "w88vna.com", true }, { "w8less.nl", true }, { "w8wat.com", true }, - { "w9196.com", true }, { "w9297.co", true }, { "w9297.com", false }, { "w9397.com", true }, { "w9721.com", false }, { "w9728.co", true }, { "w9nb.radio", true }, + { "wa-m-web-alpcustomer-portal-caixabank.azurewebsites.net", true }, + { "wa-m-web-alpcustomer-portal-timfin.azurewebsites.net", true }, { "wa-stromerzeuger.de", false }, { "wa.me", true }, { "waagen.tk", true }, @@ -129066,19 +148505,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waayz.fr", true }, { "wabbel.sa.com", true }, { "wabifoggynuts.com", true }, + { "wabuwa.com", true }, + { "wacht-auf.de", true }, { "wachter.biz", true }, { "wachtspoor.nl", true }, { "wachtspoor18.nl", true }, { "wacken666.com", true }, - { "wackerton.de", true }, - { "wackery.com", false }, - { "wackogecko.com", true }, + { "wackery.com", true }, { "wacky-science.com", true }, { "wacky.one", true }, + { "wackyblackie.eu.org", true }, { "wackyblackie.ml", true }, { "wackys.com", true }, + { "wacotrib.com", true }, + { "wacpericias.com.br", true }, { "wade.gdn", false }, { "wadebet.com", true }, + { "wadesboronc.gov", true }, { "wadidi.com", true }, { "wadleyga.gov", true }, { "wadsana.com", true }, @@ -129087,38 +148530,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waehlefamilie.de", true }, { "waeldertexas.gov", true }, { "waelisch.de", true }, - { "waelk.tech", true }, { "waelti.xxx", true }, - { "waermekabine.org", true }, { "waf.hk", true }, { "waf.ninja", true }, { "waf.sexy", true }, { "wafa4hw.com", true }, { "wafelland.be", true }, + { "waferscriber.com", true }, { "waffeln.jetzt", true }, { "waffle-backend-sanggyu.shop", true }, { "waffle-sanggyu.tk", true }, + { "wafflehacks.org", true }, { "waffleindex.com", true }, { "wafflemakers.ca", true }, { "wafni.com", true }, - { "wafuton.com", true }, { "wagcenter.com", true }, { "wage-feeg.gc.ca", true }, + { "wagepoint.com", true }, { "wagesweldandfab.com", true }, { "wageverify.com", true }, + { "waggybytes.com", true }, { "wagn3r.de", true }, - { "wagnerbrewing.com", true }, - { "wagnervineyards.com", true }, { "wagspuzzle.space", true }, { "waguramaurice.cf", true }, { "wahay.org", true }, + { "wahhoi.net", true }, { "wahine.gq", true }, { "wahl-co.de", true }, { "wahminda.tk", true }, + { "wahoo-ashland-waverly.com", true }, { "wahrnehmungswelt.de", true }, { "wahrnehmungswelten.de", true }, { "wai-in.com", true }, { "wai.run", true }, + { "waibit.io", true }, { "waidfrau.de", true }, { "waifu-technologies.com", true }, { "waifu-technologies.moe", true }, @@ -129127,17 +148572,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waikatowebdesigners.com", true }, { "wail.net", true }, { "waimanu.io", true }, - { "wains.be", true }, - { "waiomizik.re", true }, { "waisster.com", true }, - { "waistawayuk.co.uk", true }, + { "waistawayuk.co.uk", false }, { "waitabu.org", true }, { "waits.io", true }, { "waiwaisw.com", true }, + { "waiwei.ml", true }, { "waixingrenfuli.vip", true }, { "wajtc.com", true }, { "wak.io", true }, { "waka-mono.com", true }, + { "waka-vapes.de", true }, { "wakarandroid.com", true }, { "wakastream.cc", true }, { "wakatime.com", true }, @@ -129145,20 +148590,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wake.net", true }, { "wakecounty.gov", true }, { "wakecountynorthcarolina.ml", true }, + { "wakelet.com", true }, { "wakeofthepredator.tk", true }, + { "wakeupeire.com", true }, + { "wakeupplatform.com", true }, { "wakeupworld.ml", true }, - { "wakf456.com", true }, { "wakpamnilake-nsn.gov", true }, { "wakullaelectionfl.gov", true }, + { "wakullavotes.gov", true }, { "wakuwakustudyworld.co.jp", false }, { "walaa.com.co", true }, { "walaamohamed.com", true }, - { "walden-interiors.com", true }, { "waldenvt.gov", true }, { "waldenwritingcenter.ml", true }, { "waldgourmet.de", true }, { "waldo.tk", true }, + { "waldo.vn", false }, + { "waldorf-augsburg.de", true }, + { "waldorf-harduf.org", true }, + { "waldorfdiary.com", true }, { "waldparkerwoelfe.tk", true }, + { "waldpflegeverein.at", true }, { "waldportoregon.gov", true }, { "waldur.nl", true }, { "waldvogel.family", true }, @@ -129171,30 +148623,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "walkaround.tk", true }, { "walker-foundation.org", true }, { "walkera-fans.de", true }, + { "walkercorp.com.au", true }, + { "walkercountytx.gov", true }, + { "walkerfoundation.org.au", true }, + { "walkergroup.com.au", true }, { "walkermi.gov", true }, { "walkersplayground.tk", true }, - { "walking-algarve.tk", true }, + { "walkfree.org", true }, + { "walkhighlandsandislands.com", false }, { "walkingandcycling.org.uk", true }, - { "walkingforhealth.org.uk", false }, - { "walkingranada.com", true }, { "walkingrehabilitation.com", true }, { "walkinweb.com", true }, { "walklocal.be", true }, { "walklocal.gent", true }, { "walkman.cloud", true }, { "walkman.io", true }, + { "walkme.com", true }, { "walksedona.com", true }, { "walksfourpaws.co.uk", true }, { "wall-banners.tk", true }, - { "wallabag.org", true }, + { "wall-of-death.co.nz", true }, + { "wallabag.org", false }, { "wallabies.org", true }, - { "wallabywallaroo.com", true }, { "wallace-group.net", true }, { "wallacealvesdigital.com.br", true }, { "wallacecountyks.gov", true }, { "wallacehigh.org.uk", true }, { "wallada.tk", true }, - { "wallaralogistics.com.au", false }, + { "wallaralogistics.com.au", true }, { "wallartista.com", true }, { "wallbanksweb.net", true }, { "wallcs.eu", true }, @@ -129204,9 +148660,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wallers.com", true }, { "wallet.google.com", true }, { "wallet.pp.ua", true }, + { "walletconnect.com", true }, { "walletconnector.cz", true }, { "walletfox.com", true }, { "wallethub.com", true }, + { "walletory.com", true }, { "wallett.gq", true }, { "wallhack.ml", true }, { "wallhost.tk", true }, @@ -129214,46 +148672,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wallinvogue.com", true }, { "wallis-inside.ch", true }, { "wallisch.pro", true }, + { "walliscreek.com.au", true }, + { "wallix.com", true }, { "wallmanderstd.se", true }, { "wallmarketing.cz", true }, + { "wallmounttvinstallation.com", true }, + { "wallners.se", true }, + { "wallnj.gov", true }, { "wallnot.dk", true }, - { "wallpapersden.com", true }, + { "wallofclocks.com", true }, { "wallpaperstreet.tk", true }, + { "wallpapertag.com", true }, { "wallpaperup.com", true }, { "wallrgb.com", true }, { "walls.io", true }, { "wallsauce.com", true }, + { "wallstreetinsanity.com", true }, + { "wallstreetmojo.com", true }, { "walltech.tk", true }, { "walltime.info", true }, { "wallumai.com.au", true }, { "wally4000.tk", true }, - { "wallysmasterblaster.com.au", true }, { "wallytest.tk", true }, { "walma.re", true }, { "walnus.com", true }, - { "walnutgaming.com", true }, - { "walnutis.net", false }, + { "walnutcreekca.gov", true }, + { "walnutcreekpdca.gov", true }, + { "walnutgrovemo.gov", true }, + { "walnutvalleywater.gov", true }, { "walpu.ski", true }, { "walpuski.com", true }, { "walruscode.com", true }, { "walruses.org", true }, { "walrusntiny.com", true }, + { "walsermedia.com", true }, { "walshbanks.com", true }, { "walshy.fail", true }, { "walter-foerster.de", true }, { "walter-mooij-jazztrio.tk", true }, { "walter.lc", true }, - { "waltercedric.ch", true }, { "waltercedric.com", false }, { "waltermulders.be", true }, - { "waltervictor.com", false }, + { "walterswholesale.com", true }, + { "waltherarms.com", true }, { "waltravis.com", true }, { "waltthirion.com", true }, - { "waltzmanplasticsurgery.com", true }, { "walutomat.pl", true }, { "walvi.nl", true }, - { "wamm.chat", true }, + { "wamia.wa.gov.au", true }, { "wammu.eu", true }, + { "wamsi.net", true }, { "wanabka.tk", true }, { "wanashi.com", true }, { "wanda.ch", true }, @@ -129269,8 +148737,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wanderfullcoven.tk", true }, { "wanderinghiker.com", true }, { "wanderingincaptivity.com", true }, + { "wanderings.online", true }, { "wandervoll.ch", true }, - { "wanderzoom.co", true }, { "wandystan.eu", true }, { "wane.co", true }, { "wanekat.fr", true }, @@ -129280,6 +148748,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wangbangyu.gq", true }, { "wangbangyu.ml", true }, { "wangbangyu.tk", true }, + { "wangcanmou.com", true }, + { "wangcun.eu.org", true }, { "wangdaijin.com", true }, { "wangejiba.com", false }, { "wangjiatun.com.tw", true }, @@ -129298,13 +148768,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wangyue.blog", true }, { "wangzhe100.xyz", true }, { "wangzuan168.cc", true }, - { "wanlieyan.cc", true }, + { "wanjuhui.com", true }, { "wanlieyan.com", true }, { "wannabfit.nl", true }, { "wannaknow.tk", true }, - { "wannaparty.in", true }, + { "wannaparty.in", false }, { "wannapopularnews.cf", true }, { "wannaridecostarica.com", true }, + { "wanorthshoreny.gov", true }, + { "wanted.co.at", true }, { "wantocode.com", true }, { "wanybug.cf", true }, { "wanybug.ga", true }, @@ -129333,15 +148805,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wapnews.tk", true }, { "wapnik.tk", true }, { "wapo.ro", true }, - { "wapoolandspa.com", true }, { "wappie.tk", true }, { "wapplerbrewing.com", true }, { "wapresri.go.id", true }, - { "wapro.biz", true }, { "wapspaces.tk", true }, + { "wapsychiatry.com.au", true }, { "waptransfer.tk", true }, { "wapveil.ml", true }, - { "waqood.tech", true }, { "war-requiem.com", true }, { "war-team.com", true }, { "warbox.ga", true }, @@ -129361,15 +148831,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wardpieters.nl", true }, { "wardpieters.online", true }, { "wardpieters.xyz", true }, + { "wardsborovt.gov", true }, { "wardslager.com", true }, - { "warebouncycastles.co.uk", true }, { "warehost.de", false }, - { "warekit.io", true }, + { "warehouse-nantes.fr", true }, { "warekon.com", true }, { "warekon.dk", true }, { "waren.io", true }, { "waren.one", true }, { "warenghem.com", true }, + { "warengroup.eu", true }, { "warengroup.fi", true }, { "warengroup.net", true }, { "warengroup.org", true }, @@ -129383,8 +148854,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "warezoom.com", true }, { "warfarina.com", true }, { "warfield.org.uk", true }, + { "warfighters.de", true }, { "wargov.tk", true }, { "wargun.ml", true }, + { "warhaggis.com", true }, { "warhistoryonline.com", false }, { "warhut.cn", true }, { "warid.ga", true }, @@ -129395,9 +148868,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "warmestwishes.ca", true }, { "warmlyyours.com", true }, { "warmservers.com", true }, - { "warmsquirrel.com", true }, { "warmtepomp.express", true }, - { "warn-usa.com", true }, { "warnernh.gov", true }, { "waroengkopigazebo.net", true }, { "warofelements.de", true }, @@ -129409,14 +148880,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "warrantynowvoid.com", true }, { "warrencountyga.gov", true }, { "warrencountyia.gov", true }, + { "warrencountyil.gov", true }, { "warrencountynj.gov", true }, { "warrencountypa.gov", true }, { "warrencountyva.gov", true }, + { "warrenct.gov", true }, { "warrenfisher.net", true }, { "warrenhousevets.co.uk", true }, + { "warrenmi.gov", true }, { "warrenri.gov", true }, + { "warrentwpstjosephco-in.gov", true }, { "warringtonkidsbouncycastles.co.uk", true }, { "warringtonsownbuses.co.uk", true }, + { "warriorofmars.com", true }, { "warrioronewgw.com", true }, { "warrock-es.tk", true }, { "warrs.com", true }, @@ -129424,23 +148900,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "warschild.org", true }, { "warsh.moe", true }, { "warsonco.com", false }, + { "warspot.ru", true }, { "warszawa-pranie-dywanow.pl", true }, { "warszawa19115.pl", false }, { "wartabank.com", true }, - { "wartalika.id", true }, + { "warteg.com", true }, + { "warteg.net", true }, { "wartegseberangsana.com", true }, { "warthog.ml", true }, { "wartimecontracting.gov", true }, { "wartorngalaxy.com", true }, { "wartraining.com.br", true }, { "wartung.tk", true }, + { "warubbermate.co.th", true }, { "warungmini-vanwou.nl", true }, { "warupu.com", true }, { "warwickbucks.gov", true }, { "warworld.ml", true }, { "was.ch", true }, - { "wasafat.com", true }, + { "wasabiwallet.co", true }, + { "wasabiwallet.io", true }, { "wasatchconstables.com", true }, + { "wasatchcounty.gov", true }, { "waschmaschinen-dienst.de", true }, { "waschpark-hantschel.de", true }, { "wasd.ms", true }, @@ -129451,10 +148932,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wash-house.tk", true }, { "washa.tv", true }, { "washabich.ch", true }, + { "washabich.de", true }, { "washburnclarkwi.gov", true }, { "washburnenglishschool.tk", true }, { "washcowi.gov", true }, { "washcowisco.gov", true }, + { "washed-house.info", true }, + { "washedupmeathead.com", true }, { "washerrepairaustin.com", true }, { "washify.com", true }, { "washingmachinesguide.in", true }, @@ -129469,29 +148953,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "washingtoncountytx.gov", true }, { "washingtoncountywi.gov", true }, { "washingtonnewsz.com", true }, - { "washingtonregisteredagent.com", true }, - { "washingtonregisteredagent.io", true }, + { "washingtontwpacpa.gov", true }, { "washingtonviews.com", true }, { "washingtonwatchdog.org", true }, { "washoecounty.gov", true }, { "washroomcubicles.co.uk", true }, { "washsolucoesemlimpeza.com.br", true }, { "washtenaw.gov", true }, + { "washub.org.uk", true }, { "washup.tk", true }, { "wasi-net.de", true }, - { "wasido.com", true }, { "wasielewski.com.de", true }, { "wasistderunterschied.com", true }, { "wass.ga", true }, - { "wassenaar.org", true }, - { "wasserpflanzen-freunde.de", true }, - { "wassibauer.com", true }, + { "wassenaar.org", false }, { "wassim.is", true }, - { "wasteman.com", true }, { "wastewaterservicesltd.co.uk", false }, { "wastewise.com", false }, { "wasticker.ru", true }, { "wastrel.ch", true }, + { "wasys.com.br", true }, { "wat.sh", true }, { "wataclinic.com", true }, { "watari-bg.com", true }, @@ -129501,6 +148982,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "watch-host.ga", true }, { "watch-wiki.org", true }, { "watchamovie.ga", true }, + { "watchcom.co.za", true }, + { "watchcom.org", true }, + { "watchcom.org.za", true }, { "watchcow.org", false }, { "watchdogs.tk", true }, { "watchersrealm.tk", true }, @@ -129508,42 +148992,56 @@ static const nsSTSPreload kSTSPreloadList[] = { { "watchfreeonline.co.uk", true }, { "watchhentai.co", true }, { "watchinventory.com", true }, + { "watchjavidol.com", false }, { "watchmetech.com", true }, { "watchmode.com", true }, { "watchmoviesgallery.com", true }, + { "watchmoviesreel.com", true }, { "watchparts-and-tools-okayama.co.jp", true }, + { "watchpeopledie.tv", true }, { "watchporninpublic.com", true }, + { "watchpsllive.com", true }, { "watchstyle.com", true }, + { "watcht20worldcup.com", true }, + { "watchthis-svp.com", true }, { "watchtogether.ch", true }, { "watchtolearn.co", true }, + { "watchurdiet.com", true }, { "watchweasel.com", true }, - { "water-addict.com", true }, { "water-filters.tk", true }, + { "water-for-africa.org", true }, { "water-polo.tk", true }, { "water-valley.tk", true }, { "water.com", true }, + { "waterandhealth.org", true }, { "waterbassoon.eu.org", true }, { "waterborefiji.com", true }, + { "waterboromaine.gov", true }, { "watercold.cool", true }, { "waterdamagehouston.us", true }, { "waterdamageindiana.com", true }, - { "waterdogsmokedfish.com", true }, { "waterdownmedia.co.uk", true }, { "waterdrop.tk", true }, { "waterdropcultureproject.com", true }, { "waterest.tk", true }, { "waterfedpole.com", false }, + { "waterfordstoves.ie", true }, { "waterfordvt.gov", true }, { "waterfordwi.gov", true }, { "waterforlifecharity.org", true }, { "waterheaterleaguecity.com", true }, { "waterhouse.tk", true }, - { "waterlabeq.com", true }, + { "waterjet.com.ru", true }, + { "waterjet.my", true }, + { "waterjets.jp", true }, + { "waterjetsale.com", true }, { "waterlanders.tk", true }, + { "waterlandtuinen.be", true }, { "waterleeftinbeek.nl", true }, { "waterlemons2k.top", true }, { "waterlens.moe", true }, { "waterliteracy.tk", true }, + { "waterloo-abba-show.de", true }, { "waterloofaucets.com", true }, { "waterlootwpmi.gov", true }, { "watermarkly.com", false }, @@ -129553,6 +149051,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "waterpolosantona.tk", true }, { "waterpolospain.tk", true }, { "waterpumps.xyz", true }, + { "waterpurificationsupplies.com", true }, + { "watersb.org", true }, { "waterschaplimburg.nl", true }, { "waterside-inn.co.uk", true }, { "waterside-residents.org.uk", true }, @@ -129562,7 +149062,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "watersource.ga", true }, { "watersports.guru", true }, { "waterstreetloft.com", true }, - { "watersview.co.uk", true }, + { "watertaxi.com", true }, { "waterton.tk", true }, { "watertorenstraat.tk", true }, { "watertownmi.gov", true }, @@ -129576,65 +149076,90 @@ static const nsSTSPreload kSTSPreloadList[] = { { "watestsite.ovh", true }, { "watfordcyclehub.org.uk", true }, { "watfordjc.uk", true }, + { "wathory.com", true }, { "watisleukemie.tk", true }, { "watismijnbandenspanning.nl", true }, - { "watobi.jp", true }, { "watongaok.gov", true }, { "watoo.tech", true }, { "watsonsurplus.com", true }, { "watsontownshipmi.gov", true }, { "wattmaedchen.de", true }, + { "watto29.co.jp", true }, + { "wattpad.com", true }, { "watvindtnederland.com", true }, { "watzijnmijnkerntalenten.nl", true }, + { "waukee.gov", true }, { "waukeect.com", true }, - { "waukeshairon.com", true }, { "waupacacounty-wi.gov", true }, { "waupacawi.gov", true }, { "wausharacountywi.gov", true }, { "wauwatosa.gov", true }, - { "wauzaji.com", true }, { "wav-productions.com", true }, { "wav.tv", true }, + { "wave-cockpit.de", true }, + { "wave-electronics.com", false }, { "wave-inc.co.jp", true }, { "wave.is", true }, + { "wave.md", true }, + { "wave.ng", true }, { "wave.red", true }, + { "waveburst.net", true }, { "waveestetic.com", true }, - { "wavengine.com", false }, + { "waveletscreative.org", true }, + { "wavelifesciences.com", true }, + { "wavenetwork.com.au", true }, + { "wavengine.com", true }, { "waveous.com", true }, { "wavered.cf", true }, { "waverlypa.gov", true }, { "waverlytn.gov", true }, { "wavesboardshop.com", true }, { "wavesite.tk", true }, + { "wavin.com", true }, { "wawak.pl", true }, { "wawapuquy.com", true }, { "wawarsingny.gov", true }, { "wawshop.cz", true }, + { "waxcollectibles.com", true }, { "waxdramatic.com", true }, { "waxlrs.com", true }, + { "waxmelts.com.au", true }, + { "way2earning.com", true }, { "way2tech.de", true }, + { "waya0125.com", true }, + { "wayaberolodge.com", true }, + { "waybinary.com", true }, { "waycoolmail.tk", true }, { "waycraze.com", true }, - { "wayfairertravel.com", true }, + { "waycrossga.gov", true }, + { "wayfairertravel.com", false }, + { "wayleadr.com", true }, { "waylee.net", false }, + { "waynecountyil.gov", true }, { "waynecountymi.gov", true }, + { "waynecountymo.gov", true }, { "waynecountyne.gov", true }, { "waynecountyny.gov", true }, { "waynecountyoh.gov", true }, + { "waynefarms.com", false }, + { "wayneforeman.com", true }, { "waynefranklin.com", true }, { "waynehartman.com", true }, { "wayneo.tk", true }, + { "waynesboropa.gov", true }, { "waynescottlcsw.com", true }, + { "waynetworking.com", true }, + { "waynewashcowi.gov", true }, + { "wayofleaf.com", true }, { "wayohoo.net", true }, { "waysandlore.consulting", true }, { "waysandlore.fr", true }, - { "wayscript.com", true }, { "wayscript.io", true }, { "waysport.ua", true }, { "waytofreedom.tk", true }, { "waytt.cf", true }, { "wayuanma.com", false }, - { "waywardpathfinders.nz", true }, + { "wazdan.com", true }, { "waze.com", true }, { "wazefaher.tk", true }, { "wazeibra.com", true }, @@ -129650,43 +149175,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wbcasaverde.co", true }, { "wbci.us", false }, { "wbclink.io", true }, - { "wbcme.co.uk", false }, + { "wbeme2.com", true }, { "wbeuil.com", true }, { "wbg.li", true }, { "wbh.im", true }, - { "wbinnssmith.com", true }, + { "wbldc.in", true }, { "wblinks.com", true }, { "wbnet.eu", true }, + { "wbolt.com", true }, { "wbookcompany.com", true }, { "wbphed.gov.in", true }, { "wbsentinel.com", true }, { "wbsogids.nl", true }, { "wbt-solutions.ch", true }, { "wbt-solutions.net", true }, + { "wbtechnologie.nl", true }, + { "wbtenders.gov.in", true }, { "wbudd.com", true }, { "wbut.ml", true }, { "wby.by", true }, { "wby.tw", true }, - { "wc-is.com", true }, { "wc3modding.ml", true }, { "wc64.org", true }, { "wca.link", true }, { "wcally.com", true }, { "wcarc.ca", true }, + { "wcat.in", true }, { "wcatherinekendall.co.uk", true }, - { "wcbook.ru", false }, - { "wcei.com.au", false }, + { "wcei.com.au", true }, { "wcema-ok.gov", true }, { "wcfauth.de", true }, - { "wcit2010.com", true }, + { "wcfcourier.com", true }, { "wck.com", true }, { "wcl.govt.nz", true }, { "wcloud.pro", true }, { "wcn.life", false }, { "wcools.tk", true }, - { "wcrca.org", true }, + { "wcpo.com", true }, + { "wcpsd.org", true }, + { "wcrca.org", false }, { "wcru.one", true }, { "wcsoe.gov", true }, + { "wcss.com", true }, { "wctsite.tk", true }, { "wcwcg.net", true }, { "wd-api.com", false }, @@ -129695,25 +149225,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wd627.com", true }, { "wd976.com", false }, { "wdambv.nl", true }, + { "wdcvalencia2022.com", true }, { "wdesign.cl", true }, { "wdesk.com", true }, { "wdf.ink", true }, + { "wdgpublichealth.ca", true }, { "wdic.org", true }, { "wdmcheng.cn", true }, { "wdmg.com.ua", true }, { "wdmpa.org", true }, { "wdnmd.ac.cn", true }, - { "wdnmd.online", true }, { "wdntcr.com", true }, + { "wdo.org", true }, { "wdodelta.nl", false }, { "wdol.gov", true }, + { "wdophoto.com", true }, { "wdpapi.io", true }, { "wdpui.io", true }, { "wdrl.info", false }, { "wdsdownload.cf", true }, + { "wdstrings.com", true }, { "wdt.cz", false }, { "we-bb.com", true }, - { "we-id.nl", true }, + { "we-listen.org", true }, { "we-run-linux.de", true }, { "we-use-linux.de", true }, { "we.serveftp.net", true }, @@ -129725,55 +149259,63 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wealthadvisorsmf.com", true }, { "wealthadvisorstrust.com", true }, { "wealthcreationsolutions.ga", true }, + { "wealthprofessional.ca", true }, { "wealthprojector.com", true }, { "wealthprojector.com.au", true }, - { "wealthreport.com.au", true }, - { "wealthsetsyoufree.com", true }, + { "wealthsimple.com", true }, { "wealthsuccess.edu.vn", true }, + { "weapon.su", true }, { "wear-largesizes.tk", true }, { "wear-referrals.co.uk", true }, { "wear1015.ml", true }, { "wear2work.nl", true }, { "wearandcare.net", true }, - { "weare.fi", false }, { "weare.ie", true }, { "weare1inspirit.com", true }, { "wearebase.com", true }, { "wearebfi.co.uk", true }, { "wearecreator.uk", true }, + { "wearecrew.io", true }, { "wearedevs.net", true }, { "wearefestival.ml", true }, { "weareflo.com", true }, { "wearefrantic.com", true }, { "wearegenki.com", true }, { "wearehackerone.com", true }, + { "weareher.com", true }, { "weareincognito.org", true }, + { "wearemarketing.com", true }, { "wearemojo.com", true }, - { "weareoffstage.com", true }, + { "wearenh.gov", true }, { "wearepapermill.co", true }, { "wearepapermill.com", true }, { "wearepoo.com", true }, { "wearereasonablepeople.com", true }, { "wearereasonablepeople.nl", true }, + { "wearesilverbullet.com", true }, { "wearesuma.com", true }, { "wearetravellers.nl", true }, { "wearetuzag.com", true }, { "wearewithyou.org", true }, + { "weareworldtrippers.com", true }, { "wearewp.pro", true }, { "wearit.tk", true }, + { "wearmoi.com", true }, { "wearvintage.ml", true }, { "wearvr.com", true }, + { "wearwick.com", true }, { "wearwolf.tk", true }, { "weasyl.com", true }, { "weather-schools.com", true }, { "weather.gov", true }, { "weather.gov.mo", true }, - { "weathermelon.io", true }, - { "weathermyway.rocks", true }, + { "weather25.com", true }, + { "weatherguard.com", true }, { "weatherproduct.ga", true }, { "weavabel.com", false }, { "weaveral.gov", true }, { "weavers.space", true }, + { "weavile.art", true }, { "web-3.ru", true }, { "web-advisor.co.uk", true }, { "web-aps.tk", true }, @@ -129787,7 +149329,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "web-demarche.com", true }, { "web-design-india.com", true }, { "web-design.co.il", true }, - { "web-desing.com.ua", false }, + { "web-dev-qa-db-ja.com", true }, + { "web-direct.nl", true }, { "web-disaster.tk", true }, { "web-dl.cc", true }, { "web-format.tk", true }, @@ -129802,6 +149345,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "web-mastery.tk", true }, { "web-net.tk", true }, { "web-odyssey.com", true }, + { "web-one.net", true }, { "web-online.cf", true }, { "web-performance.ch", true }, { "web-privacy.tk", true }, @@ -129814,6 +149358,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "web-snadno.online", true }, { "web-space.design", true }, { "web-station.tk", true }, + { "web-stories.at", false }, { "web-studio-kzo.ml", true }, { "web-style.tk", true }, { "web-tcapwebsite-dev.azurewebsites.net", true }, @@ -129821,18 +149366,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "web-town.tk", true }, { "web-treff.de", true }, { "web-view.ml", true }, + { "web-wack.at", true }, { "web-warrior.de", true }, { "web-worker.cn", true }, - { "web.bzh", true }, + { "web.ca", true }, { "web.de", true }, + { "web.net", true }, { "web1212.top", true }, { "web1n.com", false }, - { "web2033.com", true }, + { "web20indexer.com", true }, { "web22.eu", true }, - { "web22.ro", true }, { "web2ldap.de", true }, { "web2screen.tv", true }, + { "web3mantra.com", true }, { "web404.net", true }, + { "web50aqui.es", true }, { "web74.ga", true }, { "web76.tk", true }, { "webaam.com", true }, @@ -129840,12 +149388,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webadiccion.net", true }, { "webadicta.net", true }, { "webadicto.net", true }, - { "webaeon.org", true }, + { "webadmit.org", true }, { "webagentur-flake.de", true }, { "webaholic.co.in", true }, { "webais.ru", true }, { "webal.co.uk", true }, { "webambacht.nl", true }, + { "webanalysissolutions.com", true }, { "webandmore.de", true }, { "webandsun.com", true }, { "webanet.eu", true }, @@ -129854,12 +149403,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webapky.cz", true }, { "webappky.cz", true }, { "webapplay.com", true }, + { "webappperformance.com", true }, + { "webapps-conception.fr", true }, { "webark.hu", true }, { "webart-factory.de", true }, { "webartex.ru", true }, { "webarxsecurity.com", true }, { "webasto-moscow.ru", true }, + { "webastra.fr", true }, + { "webauftritt.ch", true }, { "webauthnlogin.com", true }, + { "webawere.com", true }, { "webb.se", true }, { "webbankir.com", true }, { "webbanquyen.com", true }, @@ -129874,13 +149428,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webcafe.tk", true }, { "webcam-lisa.ml", true }, { "webcam-model.tk", true }, + { "webcam.ninja", true }, + { "webcamara.sytes.net", true }, { "webcamera-online.tk", true }, + { "webcamera.io", true }, + { "webcamromania.ro", true }, { "webcamrunetki.ga", true }, { "webcams4date.com", true }, { "webcamtoy.com", true }, { "webcamyoung.tk", true }, { "webcaptive.com", true }, { "webcaptive.net", true }, + { "webcarebox.com", true }, + { "webcargonet.com", true }, { "webcarlosmartin.tk", true }, { "webcarroseletricos.ga", true }, { "webcase.tk", true }, @@ -129888,29 +149448,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webcazip.com", true }, { "webce.de", true }, { "webcheck.pt", true }, - { "webclimbers.ch", false }, { "webclymber.com", false }, { "webcoder.cf", true }, { "webcoins.tk", true }, { "webcollect.org.uk", true }, { "webcollector.ga", true }, { "webcontrol.tk", true }, - { "webconverge.nl", true }, { "webcookies.org", true }, { "webcover.fr", true }, { "webcrazy.ga", true }, { "webcreaciones.net", true }, { "webcreativa.tk", true }, { "webcreative.tk", true }, + { "webcrial.com.br", true }, { "webcrm.com", true }, { "webcurtaincall.com", true }, { "webdaddyit.ga", true }, { "webdating.tk", true }, { "webdemaestrias.com", true }, { "webdesign-kall.de", true }, - { "webdesign-moellers.de", true }, { "webdesign-note.jp", true }, - { "webdesign.gs", true }, { "webdesignagency.cf", true }, { "webdesigncompanyindia.com", true }, { "webdesignersinchennai.tk", true }, @@ -129919,7 +149476,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webdesignplay.com", true }, { "webdesignplayground.io", true }, { "webdesignrodgau.de", true }, - { "webdesignsorange.com.au", true }, + { "webdesignsyourway.net", true }, { "webdev-cw.me", true }, { "webdev-cw.tk", true }, { "webdev.solutions", true }, @@ -129927,28 +149484,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webdevinsider.pl", true }, { "webdevoo.com", true }, { "webdevxp.com", true }, + { "webdgc.ro", true }, { "webdieta.tk", true }, - { "webdietrolequinte.it", true }, + { "webdietrolequinte.it", false }, { "webdig.pt", true }, { "webdl.org", true }, { "webdollarvpn.io", true }, { "webdoors.ge", true }, + { "webdrino.com", true }, + { "webdrops.nl", true }, { "webdushowcase.co.uk", true }, { "webeast.eu", true }, - { "webeau.com", true }, { "webeck-information-systems.at", true }, { "webelement.sk", false }, + { "webemployed.com", true }, + { "webengage.com", true }, { "webenglish.se", true }, - { "weber-it.ch", true }, { "weber911.gov", true }, { "webera.lt", true }, { "webera.pro", true }, + { "weberbasin.gov", true }, + { "weberbasinut.gov", true }, { "weberelections.gov", true }, { "weberl.com", true }, { "webers-webdesign.de", true }, { "webescucha.tk", true }, { "webest.pl", true }, { "webexample.win", false }, + { "webexapis.com", true }, { "webexp.biz", true }, { "webexperts.tk", true }, { "webexpertsdirect.com.au", true }, @@ -129965,11 +149528,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webforce.pt", true }, { "webformula.in", true }, { "webforthemasses.tk", true }, + { "webfrenz.com", true }, { "webfronten.dk", false }, { "webfun.tk", true }, { "webgadgets.tk", true }, + { "webgaku.net", true }, { "webgamex.ml", true }, - { "webgap.io", false }, + { "webgap.io", true }, { "webgarten.ch", true }, { "webgeneric.com", true }, { "webgeneric.in", true }, @@ -129977,6 +149542,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webgrow.co.za", true }, { "webhackspro.com", true }, { "webharvest.gov", true }, + { "webhelpmedica.com", true }, { "webhelpmedica.fr", true }, { "webhelyesarcu.hu", true }, { "webhoffmann.de", false }, @@ -129984,16 +149550,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webhopp.com", true }, { "webhosting-erfahrungen.de", true }, { "webhosting4u.email", false }, - { "webhosting4u.gr", true }, { "webhostingblackfriday.deals", true }, + { "webhostingempresas.com", true }, + { "webhostingmagic.com", true }, + { "webhostingmedia.net", true }, { "webhostingpros.ml", true }, { "webhostingshop.ca", true }, - { "webhostingspace.net", true }, { "webhostplan.info", true }, + { "webhostsg.net", true }, + { "webhotel24.se", true }, { "webhotelli.website", true }, { "webhotels.tk", true }, { "webhotelsoversigt.dk", true }, { "webhr.co", true }, + { "webi.ms", true }, + { "webi.sh", true }, { "webia.in.th", true }, { "webika.site", true }, { "webimagina.tk", true }, @@ -130006,24 +149577,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webionite.com", true }, { "webiroha.com", true }, { "webisle.com", true }, + { "webisoder.net", true }, { "webissues.de", true }, { "webitentwicklung.de", true }, { "webiz.ro", true }, + { "webizer.fr", true }, { "webjobposting.com", true }, - { "webka.online", true }, { "webkam-sex.com", true }, { "webkato.ru", true }, { "webkef.com", true }, { "webkeks.org", true }, - { "webkindergarten.net", true }, + { "webkolektiv.com", true }, { "webkorobka.tk", true }, - { "weblab.com.do", true }, { "weblagalera.tk", true }, { "weblate.com", true }, { "weblate.cz", true }, { "weblate.org", true }, { "weblead.vip", true }, - { "webleedpixels.com", false }, { "weblegion.tk", true }, { "weblian.ml", true }, { "webliberty.ru", true }, @@ -130032,6 +149602,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weblights.ml", true }, { "webline.ch", true }, { "weblinkcity.tk", true }, + { "weblinkpedia.com", true }, { "weblistposting.com", true }, { "weblocus.tk", true }, { "weblogia.tk", true }, @@ -130041,15 +149612,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webmail.ee", true }, { "webmail.gigahost.dk", false }, { "webmail.info", false }, + { "webmail.mayfirst.org", false }, { "webmail.onlime.ch", false }, { "webmail.schokokeks.org", false }, { "webmama.tk", true }, + { "webman.ng", true }, { "webmanagement.berlin", false }, { "webmandat.fr", true }, { "webmandesign.eu", true }, { "webmarcosmarquez.tk", true }, - { "webmarketingfestival.it", true }, - { "webmaster-infographiste-lyon.fr", false }, { "webmaster16.ml", true }, { "webmasterblog.tk", true }, { "webmasterhall.com", true }, @@ -130063,12 +149634,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webmetallica.tk", true }, { "webmetering.at", true }, { "webmethod.email", true }, - { "webmethod.ir", true }, { "webminders.it", true }, - { "webminidisc.com", true }, { "webmining.gq", true }, { "webministeriet.net", true }, - { "webmixseo.com", true }, { "webmonsters.tk", true }, { "webmore.fr", true }, { "webmotelli.fi", true }, @@ -130076,25 +149644,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webmyhealth.com", true }, { "webnames.ca", true }, { "webnancy.tk", true }, + { "webnestify.cloud", true }, { "webnetmail4u.com", true }, - { "webneuch.ch", false }, - { "webneuch.com", false }, - { "webneuch.eu", false }, - { "webneuch.fr", false }, - { "webneuch.info", false }, - { "webneuch.swiss", false }, { "webnexty.com", true }, { "webnm.com", true }, { "webnoob.net", true }, { "webo.agency", true }, { "webo.pl", true }, + { "webofisin.com", true }, { "weboflies.tk", true }, { "webofthingsmarwane.xyz", true }, { "weboke.nl", true }, { "weboperater.rs", false }, - { "webpakken.dk", true }, + { "webowell.fr", true }, + { "webpage.com.ua", true }, { "webpantry.ga", true }, + { "webparainmigrantes.com", true }, { "webparallax.cf", true }, + { "webpark.ch", true }, { "webpcstudio.com", true }, { "webperformance.io", true }, { "webpiar.tk", true }, @@ -130107,9 +149674,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webpostingmart.com", true }, { "webpostingpro.com", true }, { "webpostingreviews.com", true }, + { "webprato.it", true }, { "webpresence.tk", true }, { "webprice.ga", true }, { "webproject.rocks", true }, + { "webprom.net", true }, { "webprostitutki.tk", true }, { "webpublishing.tk", true }, { "webpubsub.com", true }, @@ -130119,8 +149688,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webrabbit.at", true }, { "webradio-maroc.tk", true }, { "webranko.tk", true }, - { "webrats.xyz", true }, { "webrebels.org", false }, + { "webregie.de", true }, { "webregion.tk", true }, { "webrentcars.com", true }, { "webrepresalia.tk", true }, @@ -130136,22 +149705,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webseitendesigner.com", false }, { "webseitenserver.com", false }, { "webserverindia.com", true }, - { "websfavourites.com", true }, { "websgroup.org", true }, { "webshaped.de", true }, + { "webshipper.com", true }, { "webshop.nl", true }, { "websika.com", true }, { "website-engineering.co.za", true }, { "website-traffic.shop", true }, { "website.builders", true }, + { "website999.in", true }, { "websitebakers.eu", true }, { "websiteboost.nl", true }, + { "websitebuilder.org", true }, { "websitecalifornia.cf", true }, { "websitecenter.tk", true }, { "websitecyber.com", true }, { "websitedesignersmalappuram.ga", true }, { "websitedesignprice.ga", true }, - { "websiteforyou.nl", true }, + { "websiteforengineers.com", true }, + { "websiteforyou.nl", false }, { "websiteirani.tk", true }, { "websitelearners.cf", true }, { "websiteleichtgemacht.de", true }, @@ -130161,18 +149733,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "websitepromotion.ml", true }, { "websiterent.ca", true }, { "websites4business.ca", true }, - { "websitesbybruce.com", true }, { "websitesbymark.co.uk", false }, { "websitesbywordpress.com", true }, { "websitesdallas.com", true }, { "websitesdemos.tk", true }, { "websiteservice.pro", true }, { "websitesthatwork.biz", true }, - { "websitestudio.fr", true }, { "websize.me", true }, - { "websmaniac.com", true }, + { "websktop.com", true }, { "websmartlink.tk", true }, { "websoftba.gq", true }, + { "websofts.co.in", true }, + { "websolid.be", true }, { "websolutionbd.tk", true }, { "websouthdesign.com", true }, { "websphere.tk", true }, @@ -130188,10 +149760,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webstaurantstore.com", true }, { "websteam.tk", true }, { "webstellung.com", true }, + { "webstercountymo.gov", true }, { "webstergrovesmo.gov", true }, { "websternytoday.gov", true }, { "webstop.tk", true }, { "webstore.be", true }, + { "webstreamworld.ae", true }, + { "webstreamworld.com", true }, + { "webstreamworld.sg", true }, { "webstu.be", true }, { "webstylemedia.com", true }, { "websubmissions.tk", true }, @@ -130199,15 +149775,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "websvetaines.lt", true }, { "webtalis.nl", true }, { "webtasarim.info.tr", true }, - { "webtasarim.pw", true }, { "webtasarimankara.name.tr", true }, { "webtasarimi.tk", true }, { "webtasarimostim.name.tr", true }, { "webtaxi.cf", true }, + { "webtechmantra.com", true }, + { "webtechnicom.net", false }, { "webtek.nu", true }, { "webtele.ga", true }, { "webtele.tk", true }, - { "webtex.limited", true }, + { "webtelegram.eu.org", true }, + { "webtematica.com", true }, + { "webter.de", true }, { "webtobesocial.de", true }, { "webtodito.tk", true }, { "webtomsk.tk", true }, @@ -130215,36 +149794,42 @@ static const nsSTSPreload kSTSPreloadList[] = { { "webtools-eqt.co.nz", true }, { "webtoolxl.net", true }, { "webtoolxl.nl", true }, + { "webtop.co.il", true }, { "webtoro.com", true }, { "webtorrent.io", true }, { "webtorrent.tk", true }, { "webtostore.fr", true }, { "webtransfers.ml", true }, - { "webtrek.ch", true }, { "webtrend.ch", true }, + { "webtrh.cz", true }, + { "webtribunal.net", true }, { "webtropia.com", false }, + { "webtrustcr.com", true }, { "webuildsite.ga", true }, { "webukhost.com", true }, { "webullreview.co", true }, { "webunika.com", false }, { "webuniverse.ml", true }, { "webunix.ga", true }, - { "webuyhousesingainesvillefl.com", true }, { "webuyhousestitletown.com", true }, + { "webuyloansfast.com", true }, { "webvampiro.tk", true }, + { "webvanced.nl", true }, { "webvenezuela.tk", true }, { "webverdienst.tk", true }, { "webviewcams.com", true }, + { "webwatchdogs.net", true }, { "webwatcher.tk", true }, - { "webwednesday.nl", true }, { "webwelearn.com", true }, { "webwinkelexploitatie.nl", true }, { "webwinkelkeur.nl", true }, { "webwinkelwestland.nl", true }, - { "webworkshop.ltd", true }, { "webwweb.com.pl", true }, + { "webx5.pro", true }, { "webyazilim.biz.tr", true }, - { "webyazilimankara.com", true }, + { "webycrea.eu", true }, + { "webyildiz.com", true }, + { "webyourself.eu", true }, { "webz.one", true }, { "webzanem.com", true }, { "webzarabotok.tk", true }, @@ -130253,16 +149838,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wecanvisit.com", true }, { "wecareplatform.nl", true }, { "weccode.com", true }, + { "wechange.de", true }, { "wechatify.com", true }, - { "wecheer.com", true }, { "wecleanbins.com", true }, { "wecoach.gg", false }, { "wecobble.com", true }, { "wecreate.ml", true }, - { "wed.pw", true }, { "wed13spain.tk", true }, { "weda.cf", true }, { "wedabout.com", true }, + { "wedatasolution.com.br", true }, { "wedceducation.com", true }, { "wedcha.com", true }, { "wedding-dress-hire.tk", true }, @@ -130272,23 +149857,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wedding-transportation.com", true }, { "wedding-ua.tk", true }, { "weddingalbumsdesign.com", true }, + { "weddingartist.ca", true }, + { "weddingbells.ca", true }, { "weddingcalculator.ga", true }, { "weddingdays.tv", true }, + { "weddingdressesguide.com", true }, { "weddingfantasy.ru", true }, { "weddinggoods.tk", true }, { "weddinggram.ga", true }, { "weddinghotographers.tk", true }, { "weddingideas.gq", true }, + { "weddingpainter.ca", true }, { "weddingplanner.tk", true }, + { "weddingpro.com", true }, { "weddingsbynoon.co.uk", true }, { "weddingtrunks.tk", true }, { "weddingwire.ca", true }, { "weddingwire.co.uk", true }, { "weddingwire.com", true }, { "weddingwire.in", true }, + { "weddingz.in", true }, { "wedefendcharities.org", true }, { "wedeliverdavao.com", true }, - { "wedg.uk", true }, + { "wedinspire.com", true }, + { "wedl.ru", false }, { "wedontca.re", true }, { "wedontcaregroup.com", true }, { "wedooper.com", true }, @@ -130307,24 +149899,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weedupdate.com", true }, { "weedworthy.com", true }, { "weedypedia.de", true }, + { "weeelive.com", true }, + { "weefriendskids.com", true }, { "weegshop.nl", true }, + { "week.report", true }, { "weekdone.com", true }, { "weekendbus.pl", true }, { "weekendcandy.com", true }, - { "weekendgolf.co", true }, + { "weekendcraft.com", true }, { "weekendinitaly.com", true }, { "weekendplayers.tk", true }, { "weekendstartup.ml", true }, + { "weekly-news.pl", true }, { "weekly-residence.com", true }, + { "weeklyads2.com", true }, { "weeklydcoupgen.com", true }, { "weektegenarmoede.be", true }, { "weemake.fr", false }, { "weemakers.fr", false }, { "weepycat.com", true }, { "weerda.fr", true }, + { "weernieuws.info", true }, { "weerstationgiethoorn.nl", true }, { "weerstatistieken.nl", true }, { "weetalksls.com", true }, + { "weethet.nl", true }, { "weetix.fr", true }, { "weewoo.net", true }, { "weezerosos.tk", true }, @@ -130333,13 +149932,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wefillgood.com", true }, { "wefitboilers.com", true }, { "wefixmd.com", true }, + { "wefloridafinancial.com", true }, { "weforgood.org.tw", true }, { "wefound.com.tw", true }, { "wefound.se", true }, { "weg-auwald.de", true }, { "wegethitched.co.uk", true }, - { "weggeweest.nl", true }, - { "wegiveloans.com", true }, { "wegner.no", true }, { "wego.ca", true }, { "wegonnagetsued.org", true }, @@ -130349,15 +149947,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wegrzynek.org", true }, { "wegrzynek.pl", true }, { "wegvielfalt.de", true }, + { "wehaa-server2.com", true }, + { "wehaaserver.com", true }, + { "wehamza.com", true }, { "wehealasone.gov.ph", true }, { "wehiremac.uk", true }, { "weho.gov", true }, { "wehostdnn.com", true }, + { "wei-mao.com.ua", true }, { "weibohan.com", true }, { "weibomiaopai.com", true }, { "weideheuvel.org", true }, { "weidmannfibertechnology.com", false }, { "weien.org", true }, + { "weig-karton.de", true }, { "weighed.ga", true }, { "weightlift.ml", true }, { "weightlosseasy.cf", true }, @@ -130365,6 +149968,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weightprogram.cf", true }, { "weihnachten-schenken.de", true }, { "weihua.life", true }, + { "weikai.net", true }, { "weike.tk", true }, { "weiling.clinic", true }, { "weils.net", true }, @@ -130374,14 +149978,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weimingsci.cn", true }, { "weimz.com", true }, { "wein.cc", true }, - { "wein.co.kr", true }, { "weinbergerlawgroup.com", true }, { "weinboxbuilders.co.nz", true }, { "weinfuse.com", false }, { "weingut-bernd-klein.de", true }, - { "weinholtzglass.com", true }, { "weinundsein.com", true }, - { "weinzeug.de", true }, + { "weinvestventures.com", true }, { "weinzierlweb.com", true }, { "weiran.org.cn", true }, { "weirdcompany.net", true }, @@ -130389,9 +149991,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weirdesigns.com", true }, { "weirdgloop.org", true }, { "weirdness.tk", true }, + { "weirdork.com", true }, + { "weirdork.eu", true }, + { "weirdork.net", true }, + { "weirdork.org", true }, + { "weirdork.social", true }, + { "weirdorks.eu", true }, + { "weirdorks.net", true }, + { "weirdorks.org", true }, + { "weirdorks.social", true }, { "weirdserver.com", true }, { "weirdware.tech", true }, { "weis.bz", true }, + { "weis.duckdns.org", true }, { "weisskircher.tk", true }, { "weissman.agency", true }, { "weiter.so", true }, @@ -130399,63 +150011,75 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weitergedacht.eu", true }, { "weitsolutions.nl", true }, { "weitundbreit.ch", true }, + { "weitz-porzellan.de", true }, { "weizenke.im", true }, { "wekan.hopto.org", true }, { "wekibe.de", true }, { "wekipedia.com", true }, { "weknowhowtodoit.com", true }, + { "wekurate.com", true }, + { "wel.com.br", true }, { "weladee.com", true }, + { "welby.cat", true }, { "welches-kinderfahrrad.de", true }, { "welcome-tahiti.com", false }, { "welcome-werkstatt.com", true }, { "welcome26.ch", false }, { "welcomepowayan.tk", true }, + { "welcometoohio.gov", true }, { "welcoop-logistique.com", true }, + { "welcorp.com", true }, { "weld.gov", true }, { "weldersnet.tk", true }, - { "weldonconstruction.com.au", true }, + { "weldingandwelder.com", true }, { "welfareness.icu", true }, + { "welivetogether.com", true }, { "well.bayern", true }, { "wella-download-center.de", true }, - { "wellandwealthy.org", true }, { "wellbalancedhealth.ie", true }, + { "wellbe.com", true }, { "wellbeing360.com.au", true }, { "wellbutrinxlgeneric.cf", true }, { "wellcom.co.il", true }, { "wellcomemdhealth.com", true }, + { "welldoc.com", true }, + { "welldocinc.com", true }, + { "welldressedwalrus.com", true }, + { "wellen-reiten.com", true }, { "wellensteyn.ru", true }, { "weller.pm", true }, + { "wellesleycosmeticsurgery.com", true }, { "wellesweb.net", true }, { "wellforlifenow.com", true }, - { "wellgora.com", true }, - { "wellgreece.com", true }, - { "wellington-fields.de", true }, + { "wellington.govt.nz", true }, { "wellist.com", true }, { "wellness-alto-adige.net", true }, - { "wellness-bonbon.de", true }, { "wellness-gutschein.de", true }, { "wellness-spa-suedtirol.com", true }, { "wellnesscheck.net", true }, - { "wellnessever.com", true }, - { "wellnesshotel-weimar.de", true }, + { "wellnesslifestyletravel.com", true }, + { "wellnessmama.com", true }, + { "wellnessmassage-eitorf.de", true }, + { "welloca.com", true }, + { "wellreceived.com", true }, + { "wellsbourne.co.uk", true }, { "wellsolveit.com", false }, { "wellspringsga.com", true }, { "wellsprung.net", true }, { "wellstonok.gov", true }, - { "wellti.com", true }, + { "wellthy.com", true }, { "wellzapness.com", true }, { "welmo.fr", true }, { "welom.tk", true }, { "welove.lk", true }, { "welove.tk", true }, { "welovecatsandkittens.com", true }, + { "welovegalicia.com", true }, { "welovelinks.com", true }, { "weloveliving.it", true }, { "welovemail.com", true }, { "welovemaira.com", true }, - { "welovemugs.co.uk", true }, { "welovestrawberries.com", true }, - { "welp-mail.de", true }, { "welpen-rucphen.tk", true }, { "welpo.me", true }, { "welshccf.org.uk", true }, @@ -130468,49 +150092,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "welteneroberer.de", true }, { "weltengilde.de", true }, { "weltenhueter.de", true }, + { "weltentanzer.com", true }, { "weltumradler.tk", true }, { "weltverschwoerung.de", true }, { "welty.cc", true }, { "welty.co", true }, { "welty.io", true }, { "welty.me", true }, - { "welzijnkoggenland.nl", true }, { "wemadegod.tk", true }, - { "wemajin.com", true }, { "wemakebookkeepingeasy.com", true }, - { "wemakemenus.com", false }, { "wemakemx.mx", true }, { "wemakeonlinereviews.com", true }, - { "wemediate.info", true }, + { "weme.eco", true }, { "wemissyou.tk", true }, { "wemovemountains.co.uk", true }, { "wenablog.pl", true }, { "wenaiwu.net", true }, + { "wenanmao.com", true }, { "wenceslas.org.uk", true }, { "wenchengchou.co", true }, { "wenchieh.com", true }, + { "wendkom.com", true }, { "wendlberger.net", true }, { "wendu.me", true }, + { "wenducation.nl", true }, { "wendy-david.tk", true }, - { "wendycityblossoms.com", true }, { "wendydarling.tk", true }, + { "wendys-careers.com", true }, { "wendysbeautyshop.co.za", true }, { "wenge-murphy.com", true }, { "wenger-shop.ch", true }, { "wengyep.com", true }, { "wenhelpdesk.tk", true }, - { "wenjs.me", true }, { "wenjulebu.cc", true }, { "wenlopleidingen.nl", true }, { "wenmilot.com", true }, { "wenoexchange.com", true }, + { "wensenboomaltrecht.nl", true }, { "wenta-computerservice.net", true }, { "wenta.de", true }, - { "wento.icu", true }, { "wentu.ml", true }, - { "wentworthconsultinggroup.com", true }, { "wentyl.tk", true }, { "wenzthewanderer.gq", true }, + { "weoneit.com", true }, + { "wep.pw", true }, { "wepa.pe", true }, { "wepay.com", true }, { "wepay.in.th", true }, @@ -130521,16 +150146,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "weplaynaked.dk", true }, { "weple.ga", true }, { "weple.gq", true }, + { "weprenup.com", true }, { "wer-kommt-her.de", true }, { "werbe-markt.de", true }, { "werbe-sonnenbrillen.de", false }, + { "werbeagentur-benningen.de", true }, + { "werbeagentur-website.de", true }, { "werbeagentur.de", true }, { "werbefotograf-leitner.de", true }, { "werbefotografie-leitner.de", true }, { "werbewelt-tv.de", true }, { "werbezentrum-stiebler.de", true }, { "werbik.at", true }, - { "wercat.net", true }, + { "werchangemakers.com", true }, { "werd.pw", false }, { "werehub.org", true }, { "wereldkoffie.eu", true }, @@ -130541,32 +150169,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "werk-34.de", true }, { "werk32.net", true }, { "werken-bij-inwork.nl", true }, - { "werkenbijavanade.nl", true }, { "werkenbijbejo.nl", false }, + { "werkenbijblokker.nl", true }, { "werkenbijbuvo.nl", true }, - { "werkenbijdata4.nl", true }, { "werkenbijdfzs.nl", false }, { "werkenbijejk.nl", true }, + { "werkenbijintertoys.nl", true }, { "werkenbijmagentazorg.nl", true }, { "werkenbijpromovendum.nl", true }, { "werkenbijsanitairwinkel.be", true }, { "werkenbijsanitairwinkel.nl", true }, { "werkenbijsherpa.nl", true }, - { "werkenbijsidekix.nl", true }, { "werkenbijvanderventions.com", true }, { "werkenbijvanderventions.nl", true }, { "werkeninwesterveld.nl", true }, { "werkgroepderdewereld.nl", true }, { "werkgroeppaleisparkhetloo.nl", true }, - { "werkinc.de", true }, { "werkkrew.xyz", true }, + { "werksalon.at", true }, { "werkslimreisslim.nl", true }, { "werkstattkinder.de", true }, - { "werkzeug-express.ch", true }, - { "werlabs.se", true }, + { "werktuigen.nl", true }, + { "werkzoeken.nl", true }, { "wermeester.be", true }, { "wermeester.com", true }, { "werner-ema.de", true }, + { "wernerco.com", true }, { "wernicke-it.de", true }, { "werpo.com.ar", true }, { "werranfehtan.org", true }, @@ -130577,12 +150205,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "werxa.cz", true }, { "werxus.eu", true }, { "weryfikacjapodatnika.pl", true }, + { "wesermarsch-bauelemente.de", true }, { "weserv.nl", true }, { "wesleyanbank.co.uk", true }, { "wesleyarcher.com", true }, { "wesleycabus.be", false }, { "wesleywarnell.com", true }, { "wesoco.de", true }, + { "wespath.org", true }, { "wespeakgeek.co.za", true }, { "wespeakk9.com", true }, { "wespringforward.com", true }, @@ -130591,43 +150221,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wessco.mx", true }, { "wesselius.tk", true }, { "wessner.co", false }, + { "wessner.org", false }, + { "wessobrunn.de", true }, + { "wessokind.de", true }, { "west-contemporary.com", true }, { "west-nerica.de", true }, { "west-raptors.tk", true }, + { "west-trans.com.au", false }, { "west-wind.net", true }, + { "west2.cn", false }, { "westaf-edit.com", true }, { "westappin.com.au", true }, { "westbathmaine.gov", true }, + { "westboroughma.gov", true }, { "westburlingtoniowa.gov", true }, + { "westburyfestival.org.uk", true }, { "westcarrollton.org", true }, + { "westcartilafdnc.gov", true }, { "westcentenaryscouts.org.au", true }, { "westcentralaor.org", true }, { "westcentralmls.com", true }, + { "westchester-il.gov", true }, { "westchesteranxietytreatment.com", true }, { "westcoastaggregate.com", true }, { "westcoastcastles.com", true }, - { "westcoastheatingair.com", true }, + { "westcoastdrones.io", true }, + { "westcoastdrones.net", true }, + { "westcoastfood.ca", true }, { "westcoastmarineadvisor.com", true }, { "westcoastmotors.co.uk", true }, { "westcode.de", true }, + { "westcountrydentalcrafts.uk", true }, { "westcountrystalking.com", true }, { "westcreekna.org", true }, { "westendwifi.net", true }, { "westerdraai.tk", true }, - { "westernfrontierins.com", true }, + { "westeremden.com", true }, + { "westergas.nl", true }, + { "westernalliancebancorporation.com", true }, { "westernpadermatologist.com", true }, { "westernparts.com", false }, - { "westernstairlifts.com", true }, - { "westeros.hu", true }, + { "westernpsychiatry.com.au", true }, + { "westernresourceadvocates.org", true }, + { "westernskydental.com", true }, + { "westernwaterca.gov", true }, { "westfairleevt.gov", true }, { "westfordwi.gov", true }, + { "westfund.com.au", true }, + { "westgatecruiseandtravel.com", true }, + { "westhamptonma.gov", true }, { "westhighlandwhiteterrier.com.br", true }, - { "westhillselectrical.com", true }, - { "westhotel.com.au", true }, { "westie.tk", true }, { "westjp-tetuke-hosyou.co.jp", true }, { "westlab.ch", true }, { "westlakehills.gov", true }, + { "westlaketx.gov", true }, { "westlakevillageelectric.com", true }, { "westlakevillageelectrical.com", true }, { "westlakevillageelectrician.com", true }, @@ -130637,10 +150285,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "westlakevillageoutdoorlighting.com", true }, { "westlandcultuur.tk", true }, { "westlander-nostalgie.tk", true }, + { "westlandinsurance.ca", true }, { "westlebanonpa.gov", true }, { "westlibertykypolice.gov", true }, { "westline.com.tr", true }, { "westlogistic.com", true }, + { "westmarlboroughpa.gov", true }, { "westmead.org", true }, { "westmeadapartments.com.au", true }, { "westmelbourne.gov", true }, @@ -130649,36 +150299,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "westmidlandslettings.com", true }, { "westmidlandsrailway.co.uk", true }, { "westmilwaukeewi.gov", true }, - { "westonaprice.london", true }, - { "westondenning.com", true }, + { "westminsterco.gov", true }, + { "westminsternational.com.au", true }, + { "westmodernclinic.com", true }, { "westonma.gov", true }, { "westonreed.com", true }, { "westoveral.gov", true }, { "westpennwire.com", true }, { "westplains.gov", true }, { "westpointne.gov", true }, - { "westportseaanglingfestival.eu", true }, - { "westrandgardeningservices.co.za", true }, - { "westrandmall.co.za", true }, + { "westportok.gov", true }, + { "westreet-store.com", true }, + { "westrydeldc.nsw.edu.au", true }, { "westsalemwi.gov", true }, { "westshoresrealty.com", true }, { "westside-pediatrics.com", true }, { "westsidechildrenstherapy.com", true }, + { "westsidewinemsp.com", true }, { "westskinlaser.com", true }, + { "westspace.org.uk", true }, + { "westvancouver.ca", true }, { "westviewpa.gov", true }, { "westvirginiahealth.tk", true }, + { "westwarwickri.gov", true }, { "westwingopenhouse.com", true }, { "westwings.tk", true }, { "westwoodhillsks.gov", true }, { "wesupportthebadge.org", true }, + { "wesystems.cloud", false }, { "wet-dry.world", true }, { "wet-international.com", true }, + { "wet1.com.au", true }, + { "wetdryvacs.co.uk", true }, + { "wetdryvacs.ie", true }, + { "weteachme.com", true }, { "wetheghosts.eu", true }, + { "wetleak.com", true }, { "wetofu.top", true }, { "wetpussylipsex.com", true }, + { "wetpussyporn.com", true }, { "wetravel.company", true }, { "wetrepublic.com", true }, - { "wettbonus.net", true }, + { "wettbuero.com", true }, + { "wettbuero.de", true }, { "wetter.de", true }, { "wetthost.com", true }, { "wetumpkaal.gov", true }, @@ -130687,17 +150350,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wevolver.com", false }, { "wew881.com", true }, { "wew882.com", true }, - { "wew888.com", true }, { "wewhydrogen.com", true }, { "wewin.com", true }, { "wewin889.com", true }, { "wewitro.de", true }, - { "wewitro.net", true }, { "weworkjpn.com", true }, { "wexfordbouncycastles.ie", true }, { "wexilapp.com", true }, { "weyhmueller.de", false }, { "weyland-yutani.org", true }, + { "weymouthslowik.com", true }, { "weyoui.de", true }, { "wezl.net", true }, { "wf-bigsky-master.appspot.com", true }, @@ -130711,18 +150373,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wf-training-master.appspot.com", true }, { "wf-trial-hrd.appspot.com", true }, { "wf336.com", true }, + { "wfbabfn.com", true }, { "wfbvillage.gov", true }, { "wfh.ovh", true }, { "wfh.se", true }, + { "wfigueiredo.com.br", true }, { "wforum.nl", true }, { "wfschicago.com", true }, { "wftbasis.nl", true }, + { "wfxs.com.tw", true }, { "wg-smue.de", true }, { "wg-tools.de", true }, + { "wg2023.com.br", true }, { "wg3k.us", true }, { "wgauthier.net", true }, { "wgcaobgyn.com", true }, - { "wgdp.gov", false }, + { "wgdp.gov", true }, { "wge-feg.gc.ca", true }, { "wgec-fegc.gc.ca", true }, { "wget.cool", true }, @@ -130737,33 +150403,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wgrlc.vic.gov.au", true }, { "wgrstudio.com", true }, { "wgsh.de", true }, - { "wgsmartsavings.com", true }, { "wgsuyi.cf", true }, { "wgtrm.com", true }, { "wgyt.tk", true }, + { "wgzdy.top", false }, { "wh-guide.de", true }, + { "wh-verwaltung.de", true }, { "wh.gov", true }, - { "wh0th.ink", true }, + { "wh0.re", true }, { "wh966.com", false }, { "whalecrew.com", true }, { "whaletail.ai", false }, { "whanau.org", false }, - { "whangareimusic.org.nz", true }, { "whanglaw.com", true }, { "whannell.net", false }, { "whaogirls.com", true }, + { "whapn.sg", true }, + { "wharfevalleywindows.co.uk", true }, { "what-do-kittens-need-to-eat.tk", true }, { "what-does-kittens-need.ml", true }, { "what-wood.servehttp.com", true }, - { "what.ink", true }, { "what.tf", true }, + { "what2see.today", true }, { "whatabout.ga", true }, { "whatabout.tk", true }, { "whataboutjonbuckland.tk", true }, { "whataboutjoshua.tk", true }, - { "whataeco.com", true }, - { "whatanime.ga", true }, + { "whatairdefencedoing.com", true }, { "whatarepatentsfor.com", true }, + { "whatcanyoudocampaign.org", true }, { "whatclinic.co.uk", true }, { "whatclinic.com", true }, { "whatclinic.com.ph", true }, @@ -130773,8 +150441,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whatdevotion.com", true }, { "whatdevshouldknow.pl", true }, { "whatevents.tk", true }, + { "whateveritworks.org", true }, { "whatevername.tk", true }, { "whateverzone.ml", true }, + { "whatfinger.com", true }, { "whatfontis.com", true }, { "whatimissed.news", true }, { "whatisapassword.com", true }, @@ -130789,23 +150459,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whatissflow.com", true }, { "whatisthe.cloud", true }, { "whatisthisapp.com", true }, + { "whatiswhatis.com", true }, { "whatnot.ai", true }, { "whatsapp.com", true }, { "whatsapp.net", true }, { "whatsapp.ru", true }, + { "whatsatienda.com", true }, { "whatsgood.tk", true }, { "whatsinmyjar.com", true }, { "whatsitsname.tk", true }, { "whatsmychaincert.com", true }, - { "whatsmysuggestion.com", true }, - { "whatsthisword.com", true }, - { "whatsupgold.com.tw", true }, - { "whatsupgold.net", true }, + { "whatstheirnetworth.com", true }, + { "whatsupindisability.org", true }, { "whatsupoutdoor.com", false }, { "whatsupyo.tk", true }, { "whatswrong.blog", true }, { "whatthefile.info", true }, - { "whatthequok.com", true }, { "whatthingsweigh.com", true }, { "whattimedoiwork.com", true }, { "whattominingrigrentals.com", true }, @@ -130817,31 +150486,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whdpc.gov", true }, { "wheatfieldtwpmi.gov", true }, { "wheatgra.in", true }, - { "wheelchair-mobility-scooter-rental-london.com", false }, + { "wheatland.com", true }, + { "wheatridge.gov", true }, + { "wheelchair-mobility-scooter-rental-london.com", true }, { "wheelchair.gq", true }, { "wheeler.kiwi.nz", false }, { "wheelhero.com", true }, + { "wheelingisland.com", true }, { "wheelspin.ga", true }, { "wheelwide.co.uk", true }, { "wheelwork.org", false }, + { "wheelworxrefinishing.com", true }, + { "wheely.com", true }, { "wheelycool.tech", true }, { "wheelycoolgear.com", true }, { "wheelyking.tk", true }, { "when-release.ru", true }, { "when.fm", false }, { "when.org.il", true }, + { "when2watch.live", true }, + { "whenisholiday.com", true }, + { "whenthenproject.org", true }, + { "whentowork.com", true }, { "whenwe.me", true }, + { "wheon.com", true }, { "where2trip.com", true }, { "whereapp.social", true }, + { "wherearethosemorgans.com", true }, { "wherecaniwatchanime.com", true }, { "wheredoi.click", true }, { "wheregoes.com", true }, { "whereicode.org", false }, - { "whereisjason.com", false }, { "whereismyorigin.cf", true }, { "whereisthekeep.com", true }, { "whereiszakir.com", true }, { "wheresbuzz.com.au", true }, + { "wheresthejump.com", true }, + { "wheretotravel.info", true }, + { "whereuare.se", true }, { "whereveryougo.space", true }, { "whexit.nl", true }, { "whey-protein.ch", true }, @@ -130849,20 +150531,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whichdoctor.com", true }, { "whichgender.today", true }, { "whichphish.com", true }, + { "whichwasfirst.com", true }, { "whiff-of-grape.ca", true }, { "whigfieldspain.tk", true }, { "whil.com", true }, { "whilsttraveling.com", true }, + { "whimsical.com", true }, { "whing.org", true }, - { "whipay.pe", true }, + { "whining.blue", true }, { "whipnic.com", true }, { "whirlpool-luboss.de", true }, { "whirlpool.net.au", true }, + { "whirr.org", true }, { "whishart.cf", true }, { "whishart.ga", true }, { "whishart.gq", true }, { "whishart.ml", true }, - { "whisho.com", true }, { "whiskersandtails.co.za", true }, { "whiskey.com.my", true }, { "whiskey.money", true }, @@ -130872,6 +150556,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whisky.my", true }, { "whiskydb.de", true }, { "whiskydrivers.tk", true }, + { "whiskyhammer.com", true }, { "whiskymy.com", true }, { "whiskyshop.com.my", true }, { "whiskyshop.my", true }, @@ -130880,12 +150565,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whisper-net.de", true }, { "whisperinghoperanch.org", true }, { "whisperlab.org", true }, + { "whistleblower.gov", true }, { "whistleblower.pl", true }, { "whistleblower.report", true }, { "whistleblowerordning.com", true }, + { "whistleblowers.org", true }, { "whistleblowersoftware.com", true }, { "whistler-transfers.com", false }, { "whistlingdog.media", false }, + { "whitbread.com.au", true }, { "whitdoit.tk", true }, { "white-hell.tk", true }, { "white-ibiza.com", true }, @@ -130900,12 +150588,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whitealps.de", false }, { "whitealps.fr", false }, { "whitealps.net", false }, + { "whiteantelopeinteriors.com", true }, { "whitebirdclinic.org", true }, { "whitebox.ga", true }, - { "whitecleatbeat.com", true }, { "whitefieldnhpd.gov", true }, - { "whitefm.ch", false }, + { "whitefordtownshipmi.gov", true }, { "whitehallal.gov", true }, + { "whitehatbrokers.com", true }, { "whitehathackers.com.br", true }, { "whitehats.nl", true }, { "whitehorse.ga", true }, @@ -130916,9 +150605,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whiteink.com", true }, { "whitejaguars.com", true }, { "whitekings.tk", true }, - { "whiteknightsafelockinc.com", true }, { "whitelabeltickets.com", false }, { "whitelist-crypto.io", true }, + { "whitelotto.com", true }, { "whitelotuscyp.com", true }, { "whitelynx.co", true }, { "whitemagic.ga", true }, @@ -130929,14 +150618,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whitepen.io", true }, { "whitepen.tk", true }, { "whitepinetn.gov", true }, + { "whiteprintnews.com", true }, { "whiterabbit.group", false }, { "whiterabbit.nl", true }, { "whiterabbit.org", true }, + { "whiterabbitcyber.space", true }, { "whiterose.goip.de", true }, { "whiteshadowimperium.com", true }, { "whiteshelf.org", true }, { "whitesoxbestteaminbaseball.com", true }, { "whitespace.se", true }, + { "whitespider.cf", true }, + { "whitespider.gq", true }, + { "whitespider.ml", true }, + { "whitespider.tk", true }, { "whitestarlegacy.tk", true }, { "whitesword.tk", true }, { "whitevpn.cz", true }, @@ -130944,10 +150639,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whiteweb.tk", true }, { "whitewebhosting.com", true }, { "whitewinterwolf.com", true }, + { "whiteyardcottage.com", true }, { "whitfieldcountyga.gov", true }, - { "whitkirk.com", true }, { "whitkirkchurch.org.uk", false }, { "whitlockconstruction.ca", true }, + { "whitmanarchive.org", true }, { "whittle.in", true }, { "whittome.com", true }, { "whitworth.nyc", true }, @@ -130963,35 +150659,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "whoagirls.org", true }, { "whoami.eu.org", true }, { "whoami.io", true }, + { "whoami.red", true }, { "whocalld.com", true }, { "whocalled.us", true }, - { "whocalledme.xyz", true }, { "whocrushonme.com", true }, - { "whodatdish.com", true }, { "whodiduexpect.com", true }, + { "whois.az", true }, + { "whoisamitsingh.com", true }, { "whoiscuter.ml", true }, { "whoiscutest.ml", true }, { "whoisdhh.com", false }, { "whoistheorchid.com", true }, { "whoiswho.tk", true }, { "wholebody.je", true }, + { "wholegrace.com", true }, { "wholesale.cf", true }, { "wholesalediamonds.tk", true }, + { "wholesalediscountsunglasses.com", true }, { "wholesalegrowersdirect.com", true }, + { "wholesalehosting.co.uk", true }, { "wholesaleimages.com", true }, - { "wholesomebuyers.com", true }, + { "wholesalewarehouses.net", true }, { "wholesomeharvestbread.com", false }, { "wholevood.com", true }, { "wholevood.de", true }, + { "wholewideworldtoys.com", true }, { "wholewildworld.de", true }, { "whoneedstobeprimaried.today", true }, + { "whong.media", true }, { "whonix.org", true }, - { "whoopee.my", true }, + { "whoopee.my", false }, { "whooshkaa.com", true }, + { "whoplusyou.com", true }, { "whoreofwallstreet.tk", true }, { "whorepresentsme.us", true }, { "whosapeach.tk", true }, { "whosneo.com", true }, + { "whosting.co.uk", true }, { "whosyourdaddy.ml", true }, { "whowherewhen.net", true }, { "whqmeps.org", true }, @@ -131004,23 +150708,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "why-brexit.uk", true }, { "why918.com", false }, { "whychoosebob.net.au", true }, - { "whyfeedthegreed.com", true }, + { "whydoeseverythingsuck.net", true }, + { "whyinsurance.me", true }, { "whymps.com", true }, { "whynohttps.com", true }, { "whyodindrinks.com", true }, { "whyopencomputing.ch", false }, { "whyopencomputing.com", false }, + { "whypowerbrush.com", true }, { "whysoslow.co.uk", true }, + { "whyteryan.com", true }, { "whytls.com", true }, { "whywa.com", true }, { "whywelive.me", true }, + { "whyworldhot.com", true }, { "whyy.eu.org", true }, - { "wi-fi.org", true }, - { "wi-portfolio.herokuapp.com", true }, + { "whyzeroturn.com", true }, { "wi-q.cloud", true }, { "wi-wi.co.jp", true }, { "wiadomosci-lodz.pl", true }, { "wiagencies.com", true }, + { "wiai.eu.org", true }, { "wiapply.com", true }, { "wibbe.link", true }, { "wiberg.nu", true }, @@ -131030,16 +150738,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wicamb.com", true }, { "wicca-witchcraft.com", true }, { "wiccansupplies.ga", true }, + { "wiccanwicks.ca", true }, { "wiccasima.fr", true }, + { "wicharypawel.com", true }, { "wichitafoundationpros.com", true }, + { "wichtel-umzuege.de", true }, { "wickedsick.tk", true }, { "wickedthings.co.za", true }, { "wickedvibes.tk", true }, - { "wickerliving.com", true }, { "wickersmith.com", true }, { "wickerwoman.com", true }, { "wickrath.net", true }, { "wicksandwonders.com.au", true }, + { "wicstunvetgroup.co.uk", true }, { "widado.com", true }, { "widatcp.gov", true }, { "widderplasticsurgery.com", true }, @@ -131047,9 +150758,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "widecontrol.it", true }, { "wideinfo.org", true }, { "widejeans.tk", true }, + { "wideline.com.au", true }, { "widememory.com", true }, { "widenews.org", true }, { "widescreenfixer.org", true }, + { "wideshoes.com", true }, { "widewebhost.net", true }, { "wideworks.agency", true }, { "widgetmaker.co.uk", true }, @@ -131063,42 +150776,47 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiebel.org", true }, { "wiebetaaltdat.nl", true }, { "wieckiewicz.org", true }, + { "wiederkehrvillagear.gov", true }, { "wiedmeyer.de", true }, { "wiedu.net", true }, { "wieesgeht.com", true }, { "wiegandt.org", true }, { "wiegedaten.de", true }, - { "wiehenkrug.de", true }, + { "wiek.net", true }, + { "wieldberis.ru", true }, { "wieloswiat.pl", true }, { "wielrenbond.ml", true }, { "wielrennen-in-zeeland.tk", true }, - { "wiemanapp.com", true }, { "wien52.at", true }, { "wiender.be", false }, { "wieneck-bauelemente.de", true }, { "wiener.hr", true }, { "wienergyjobs.com", true }, { "wieobensounten.de", true }, - { "wieseadr.com", true }, { "wiet2home.nl", true }, + { "wifesbank.com", true }, { "wifi-hack.com", false }, { "wifi-names.com", true }, + { "wifi-ooe.at", true }, + { "wifi.com.vn", true }, + { "wifi.id", true }, { "wificafehosting.com", true }, { "wificonnect.cc", true }, { "wifimb.cz", true }, - { "wifinube.com", true }, { "wifipineapple.com", true }, { "wifirst.net", true }, { "wifishing.tk", true }, - { "wifree.lv", true }, + { "wifiwizardofoz.com", true }, { "wigan.ovh", true }, { "wiganer.tk", true }, { "wigelsworth.consulting", true }, { "wigelsworth.io", true }, + { "wigger.one", true }, { "wigggle.it", true }, { "wigglestudio.com", true }, + { "wigglywisdom.com", true }, { "wigle.net", true }, - { "wigmore-hall.org.uk", true }, + { "wigmore-hall.org.uk", false }, { "wigsalon.ga", true }, { "wigwam.design", true }, { "wihiki.org", true }, @@ -131106,11 +150824,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiikipedia.com", true }, { "wiimotion.de", true }, { "wiin.co", true }, + { "wiingy.com", true }, { "wiire.me", false }, { "wiisas.fi", true }, { "wijaya.net", true }, { "wijaya2u.com", true }, - { "wijewick.com", true }, { "wijkbudget.gent", true }, { "wijkdezwaenebloeme.tk", true }, { "wijkstation.nl", true }, @@ -131122,6 +150840,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wijsvangent.be", true }, { "wijwillendit.nl", true }, { "wijzeweters.gent", true }, + { "wijzijnbrandstof.nl", true }, { "wijzijnwolf.nl", true }, { "wikalin.ski", true }, { "wikelia.com", true }, @@ -131130,7 +150849,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiki-iknownaught.ddns.net", true }, { "wiki-pedia.org", true }, { "wiki-play.ru", true }, + { "wiki-rostelecom.ru", true }, { "wiki.berlin", true }, + { "wiki.gallery", true }, { "wiki.python.org", true }, { "wiki.voyage", true }, { "wiki24.ru", true }, @@ -131141,23 +150862,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wikibulz.com", true }, { "wikibuy.com", true }, { "wikicooking.tk", true }, + { "wikicuida.pt", true }, { "wikidata.org", true }, { "wikidpedia.org", true }, - { "wikidsystems.com", false }, { "wikiepdia.com", true }, { "wikiepdia.org", true }, + { "wikifactory.com", true }, { "wikifamily.ga", true }, { "wikifamily.tk", true }, + { "wikifunctions.org", true }, + { "wikigta.org", true }, { "wikihelp.in", true }, { "wikihistory.tk", true }, + { "wikihow-fun.com", true }, { "wikihow.com", true }, { "wikihow.com.tr", true }, { "wikihow.cz", true }, { "wikihow.fitness", true }, + { "wikihow.health", true }, { "wikihow.it", true }, { "wikihow.jp", true }, { "wikihow.life", true }, { "wikihow.mom", true }, + { "wikihow.news", true }, { "wikihow.pet", true }, { "wikihow.tech", true }, { "wikihow.vn", true }, @@ -131165,8 +150892,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wikijunior.net", true }, { "wikijunior.org", true }, { "wikileaks.ch", true }, - { "wikileaks.com", true }, - { "wikileaks.org", true }, { "wikilibrary.tk", true }, { "wikilink.cf", true }, { "wikilink.tk", true }, @@ -131194,10 +150919,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wikimediafoundation.info", true }, { "wikimediafoundation.net", true }, { "wikimediafoundation.org", true }, - { "wikimho.com", true }, + { "wikimiasr.com", true }, { "wikimilk.org", true }, { "wikimir.tk", true }, { "wikimirror.org", true }, + { "wikinbiography.com", true }, { "wikinews.com", true }, { "wikinews.de", true }, { "wikinews.org", true }, @@ -131245,8 +150971,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wikitech.ga", true }, { "wikitech.gq", true }, { "wikitech.tk", true }, + { "wikitechsolutions.com", true }, { "wikitransporte.tk", true }, - { "wikitrek.org", true }, { "wikiutah.tk", true }, { "wikiversity.com", true }, { "wikiversity.org", true }, @@ -131276,34 +151002,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiktoriaflis.com", true }, { "wilane.org", true }, { "wilbrinkdesign.nl", false }, + { "wilburyvets.co.uk", true }, { "wilco-s.nl", true }, { "wilcodeboer.me", true }, - { "wild-emotion-events.de", true }, + { "wilcotx.gov", true }, { "wild-reels.com", true }, { "wild-turtles.com", true }, { "wild.at", true }, { "wildanalysis.ga", true }, - { "wildandisle.com", true }, - { "wildandwonderfulbodycare.com", true }, - { "wildandwonderfulketo.com", true }, - { "wildanfauzy.com", false }, { "wildbergh.tk", true }, - { "wildberries.cf", true }, - { "wildbirds.dk", true }, { "wildbirdsuets.com", true }, - { "wildboysafloat.com", true }, { "wildcard.hu", true }, { "wildcardfederal.net", true }, { "wildcatdiesel.com.au", true }, { "wildcatprotection.org", true }, { "wildcaves.co.za", true }, { "wildcove.ca", true }, - { "wildcraft.com", true }, + { "wildcraft.com", false }, { "wildcruisers.tk", true }, { "wildercerron.com", true }, { "wilderky.gov", true }, { "wilderoben.com", true }, - { "wildewood.ca", true }, { "wildfilm.tv", true }, { "wildfirechain.xyz", true }, { "wildflowers5.com", true }, @@ -131312,16 +151031,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wildglass.nl", true }, { "wildhelper.com", true }, { "wildlifeadaptationstrategy.gov", true }, + { "wildlifeforafrica.org", true }, { "wildmarsian.info", true }, { "wildmine.su", true }, { "wildowi.cz", true }, { "wildrideproject.tk", true }, { "wildsafety.com", true }, { "wildsense.tk", true }, + { "wildtattoo.ru", true }, { "wildtrip.blog", false }, { "wildvicky.net", true }, { "wildwildtravel.com", true }, { "wildwind.world", true }, + { "wildwnc.org", true }, { "wildwoodpolice-fl.gov", true }, { "wildwoodrockers.tk", true }, { "wildzap.ml", true }, @@ -131332,21 +151054,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wilfert.xyz", true }, { "wilfredswholesale.com.au", true }, { "wilfrid-calixte.fr", false }, - { "wilgo.ga", true }, { "wilhelm-nathan.de", true }, { "wilhelm-sattler-realschule.de", true }, + { "wilhelmhansenfonden.dk", true }, + { "wilhelmina.com", true }, { "wili.li", true }, { "wiliquet.net", true }, { "wilk.tech", false }, { "wilkebouwer.nl", true }, - { "wilkinsondigital.com", true }, + { "wilkes-barretownship.gov", true }, + { "wilkincounty.gov", true }, { "wilkipedia.org", true }, { "wilkushka.com", true }, { "wilkushka.net", true }, { "wilky44.com", true }, { "willalex.com", true }, + { "willardohio.gov", true }, { "willardwi.gov", true }, - { "willberg.bayern", true }, { "willcounty.gov", true }, { "willcounty911.gov", true }, { "willcountyclerk.gov", true }, @@ -131356,10 +151080,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "willenberg.family", true }, { "willerei.com", true }, { "willerei.de", true }, - { "willetlaw.com", true }, { "willfarrell.ca", true }, { "willflies.com", true }, - { "willi-graf-gymnasium.de", true }, + { "willhackett.com", true }, { "willi-graf-os.de", true }, { "willi-roth-holzbau.ch", true }, { "williamarias.tk", true }, @@ -131370,7 +151093,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "williamgoldberg.cf", true }, { "williamjohngauthier.net", true }, { "williamk.ga", false }, - { "williamle.com", false }, + { "williamle.com", true }, { "williamlong.info", true }, { "williammcgill.co", true }, { "williammcgill.com", true }, @@ -131380,31 +151103,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "williamscomposer.com", true }, { "williamscountyoh.gov", true }, { "williamsflintlocks.com", false }, + { "williamshomeheat.co.uk", false }, { "williamsigal.com", true }, - { "williamsonshore.com", true }, - { "williamsroom.com", true }, { "williamstonmipd.gov", true }, { "williamstownmi.gov", true }, + { "williamtai.moe", true }, { "williamtm.com", true }, - { "williamusherwood.com", true }, - { "williamvds.me", true }, { "willianchopin.tk", true }, { "willich.tk", true }, { "williejackson.com", true }, { "willighp.de", true }, + { "willistonpdvt.gov", true }, + { "willkie.com", true }, { "willlewis.co.uk", true }, { "willmage.com", true }, { "willnorris.com", true }, { "willocks.nl", true }, - { "willosagiede.com", false }, { "willow.technology", true }, + { "willowbrook.co.uk", false }, + { "willowchild.de", true }, + { "willowcreektrucking.com", true }, { "willowcundy.com", true }, { "willowdalechurch.ca", true }, { "willowmanorgroup.com", true }, + { "willowparktx.gov", true }, { "willowpassdentalcare.com", true }, { "willowpf.com", true }, { "wills.co.tt", true }, - { "willship.co.nz", true }, + { "willship.co.nz", false }, { "willsigal.com", true }, { "willspointtx.gov", true }, { "willstamper.name", true }, @@ -131414,6 +151140,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "willusherwood.com", true }, { "willvision.com", true }, { "willwilkins.com", true }, + { "willwoodworth.com", true }, { "willys.zone", true }, { "willywangstory.com.tw", true }, { "willywangstory.org", true }, @@ -131421,31 +151148,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wilmette.gov", true }, { "wilmingtonzen.tk", true }, { "wilmothgroup.com", true }, - { "wiloca.it", true }, { "wilomark.com", true }, { "wils.jp", true }, { "wilseyrealty.com", true }, + { "wilshirelawfirm.com", true }, { "wilson-lincoln-wi.gov", true }, { "wilsoncountync.gov", true }, + { "wilsonfire.com", true }, + { "wilsoninfanteadv.com.br", true }, + { "wilsonlanguage.com", true }, { "wilsonovi.com", true }, + { "wilsontnvotes.gov", true }, { "wilsonvilleoregon.gov", true }, { "wiltonmanors.gov", true }, + { "wiltonsandstonequarry.com.au", true }, { "wiltrovira.com", true }, - { "wilypumpkin.com", true }, + { "wiltshirefarmfoods.com", false }, { "wimachtendienk.com", true }, - { "wimarsport.it", true }, + { "wimbledon.com", true }, { "wimlanphen.nl", true }, + { "wimmer-informatik.eu", true }, + { "wimmer-musik.eu", true }, { "wimmer-software.de", true }, { "wimmer-software.eu", true }, + { "wimmer.green", true }, { "wimmer.software", true }, + { "wimmer.tel", true }, { "wimmersoftware.de", true }, { "wimmersoftware.eu", true }, - { "wimtec.net", true }, { "win-apuestas.com", true }, { "win-fortuna.ml", true }, { "win-rar.com", true }, { "win-the-1.com", true }, { "win11.ren", true }, + { "win365.com", true }, { "win7stylebuilder.com", false }, { "win7tips.tk", true }, { "win8.am", true }, @@ -131459,59 +151195,87 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wincasinosmoney.com", true }, { "wincasinowin.click", true }, { "winch-center.de", true }, + { "winch.expert", false }, { "winchat365.com", true }, { "winchendon-ma.gov", true }, + { "winchuan.com", true }, { "winckelmann2020.com", true }, { "wincoil.gov", true }, { "wind-riders.cf", true }, + { "wind.com.do", true }, { "wind.moe", false }, - { "windelnkaufen24.de", true }, { "windev.com", false }, { "windev.es", false }, { "windforme.com", true }, { "windgucker.de", true }, + { "windhamct.gov", true }, + { "windhamvillageoh.gov", true }, + { "windhamworks.com", true }, { "windia.me", true }, + { "windice1.io", true }, { "windictus.net", true }, { "windirect.tk", true }, + { "windirstat.net", true }, + { "windjetboats.com", true }, { "windmillart.net", true }, { "windmyroof.com", false }, { "windowcleaningexperts.net", true }, { "windowreplacement.net", true }, - { "windows101tricks.com", true }, + { "windows", true }, + { "windows101tricks.com", false }, { "windows11.com.br", true }, { "windows311.org", true }, + { "windowsblogitalia.com", true }, { "windowscult.com", true }, { "windowsdoors.it", true }, { "windowseatwanderer.com", true }, { "windowsforum.com", true }, { "windowsfreak.de", true }, + { "windowsindonesia.com", true }, { "windowsindonesia.id", true }, { "windowslatest.com", true }, { "windowsnerd.com", true }, + { "windowsru.com", true }, + { "windowsviet.com", true }, { "windowsworkstation.com", true }, { "windpay.ga", true }, + { "windr.win", true }, + { "windrawwin.com", true }, { "windrich-werkzeugmaschinen.de", true }, { "windriver.org", true }, + { "windriverpediatrics.com", true }, { "windroide.net", true }, { "windrunner.se", true }, { "windscribe.com", true }, { "windsock-app.com", true }, + { "windsorelectricalservice.com", true }, { "windsorite.ca", true }, - { "windsorrealtysvs.com", true }, + { "windsornc.gov", true }, + { "windsorrslsubbranch.com.au", true }, + { "windstreamhosting.com", false }, + { "windsurfercrs.com", true }, { "windturbine.tk", true }, { "windwoodmedia.com", true }, { "windwords.me", false }, { "windybank.net", true }, + { "windycitylawgroup.com", true }, + { "windycitypressurewashing.com", true }, { "wine-route.net", true }, - { "wine-tapa.com", true }, + { "wine-yoga.pl", true }, + { "wine.com.br", true }, { "wine.com.my", true }, + { "wine.money", true }, { "wine.my", true }, + { "wineandcheeseplace.com", true }, { "winebrasil.com.br", true }, { "winechapter.be", true }, { "winedineunwind.org", true }, + { "winedoor.com", true }, + { "wineexperience.com.au", true }, { "wineforhelp.cz", true }, { "winegadgets.ru", false }, { "winek.tk", true }, + { "winenews.it", true }, { "wineparis.com", true }, { "winerytoursanfrancisco.com", true }, { "winezja.pl", true }, @@ -131525,50 +151289,61 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wing-tsun.tk", true }, { "wingchun.edu.au", true }, { "wingchunboxtribe.com", true }, + { "wingertmd.com", true }, { "winghill.com", false }, { "wingify.com", true }, { "wingmin.net", true }, { "wings.com.pk", true }, { "wingsofacow.com", false }, { "wingspatagonia.com", true }, + { "wingstop.fr", true }, { "winhelp21.tk", true }, { "winhistory-forum.net", true }, + { "winkelbalans.nl", true }, { "winkelcentrumputten.nl", true }, { "winkelmanaz.gov", true }, { "winkelvanmorgen.nl", true }, { "winkelvansinkel.tk", true }, { "winkli.ddns.net", true }, { "winktonsibo.tk", true }, + { "winkyverse.io", true }, + { "winl-45774.club", true }, + { "winma.org", true }, + { "winmax.it", true }, { "winmix.nl", true }, { "winmodels.org", true }, { "winmodels.ru", true }, { "winnebagocountyiowa.gov", true }, { "winnebagocountywi.gov", true }, + { "winneconnesd3wi.gov", true }, { "winner.ua", true }, { "winnercivi.com", true }, { "winnersaffiliate.com", true }, + { "winnerschapelbelgium.be", true }, { "winnery.tk", true }, { "winning.gq", true }, { "winningattitudeawards.org", true }, { "winnipegcomputerguy.tk", true }, { "winnlandscaping.com", true }, { "winona-area-scum.tk", true }, + { "winonamn.gov", true }, { "winoptical.com", true }, { "winphonemetro.com", true }, + { "winpic.co", true }, + { "winpreso.com", true }, { "winrar.com", true }, { "winrss.com", false }, { "winsabayi.tk", true }, { "winserver.ne.jp", true }, { "winslowhomer.tk", true }, { "winslowslair.tk", true }, - { "winsposure.com", true }, { "winsufi.biz", true }, { "wint.global", true }, { "wintark.com", true }, { "wintechlab.com", true }, - { "winter-auszeit.de", true }, { "winter-elektro.de", true }, { "winter-leak.ml", true }, + { "winter.ae", true }, { "winterbergwebcams.com", true }, { "wintercam.nl", true }, { "winterco.org", true }, @@ -131578,17 +151353,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "winterhavenobgyn.com", true }, { "winterhillbank.com", true }, { "winteringent.be", true }, + { "winteriscoming.net", true }, { "winterlandbeverages.com", true }, { "wintermeyer-consulting.de", true }, { "wintermeyer.de", true }, { "winternacht14.tk", true }, { "winteromeo.tk", true }, { "winterset.gov", true }, - { "wintersport.nl", true }, { "winterstudies.ga", true }, + { "winterthur.ch", true }, { "winterzine.cf", true }, { "wintodoor.com", true }, - { "wintzenterprise.com", false }, + { "winup.org", true }, { "winvio.com", true }, { "winwares.com", true }, { "winwitharval.co.uk", true }, @@ -131611,8 +151387,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wir-pflegen-zuhause.it", true }, { "wirbsinglereview.com", true }, { "wire.com", true }, + { "wirebank.ru", true }, { "wired.co.uk", true }, + { "wiredcolony.com", true }, { "wiredmedia.co.uk", true }, + { "wiredrelease.com", true }, { "wiredroot.com", true }, { "wireheading.com", true }, { "wirekeep.com", true }, @@ -131620,8 +151399,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wireless-kill-switch.com", true }, { "wirelessbelgie.tk", true }, { "wirelesscctv.tk", true }, + { "wirelessfestival.co.uk", true }, { "wirelessleeuwarden.tk", true }, + { "wirelesslogic.com", true }, + { "wirelesslogicnordic.com", true }, { "wirelessthief.ga", true }, + { "wirelly.com", true }, { "wireshark.org", true }, { "wireshocks.com", true }, { "wiretap.cf", true }, @@ -131629,9 +151412,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiretoss.com", true }, { "wiretransaction.ga", true }, { "wirhabenspass.de", true }, + { "wiriamu.net", true }, + { "wirings-diagram.com", true }, { "wiris.be", true }, + { "wirkaufen.it", true }, { "wirkaufendeinau.to", true }, + { "wirken.info", true }, { "wirksportal.com", true }, + { "wirkstatt-lq.at", true }, + { "wirkstatt-lq.ch", true }, + { "wirkstatt-lq.de", true }, + { "wirkstatt-lq.net", true }, { "wirkstoffreich.de", true }, { "wirkungs-forschung.at", true }, { "wirkungs-forschung.ch", true }, @@ -131642,43 +151433,55 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wirsing.nl", true }, { "wirtanen.tk", true }, { "wirtcountywvsheriff.gov", true }, + { "wirtschaftsberater-website.de", true }, { "wis.no", true }, { "wisak.me", true }, { "wisal.org", true }, { "wisardcoin.tk", true }, { "wisatabagus.com", true }, { "wischu.com", true }, - { "wiscoinsulation.com", true }, { "wiscon.co", true }, { "wisconsinnet.tk", true }, + { "wisdoj.gov", true }, { "wisdom-nict.jp", true }, { "wisdomcue.com", false }, { "wisdomgarden-mr.com", true }, { "wisdomgeek.com", true }, + { "wisdomise.io", true }, { "wisdomize.me", true }, + { "wisdompills.shop", true }, { "wisdomteethonly.com", true }, { "wisdomteethsydney.com.au", true }, { "wisdotplans.gov", true }, + { "wise-parenting.com", true }, { "wise.jobs", true }, - { "wise.wtf", true }, { "wiseadvicetravelling.com", false }, + { "wisebarber.com", true }, + { "wisebuilders.org", true }, { "wisecountytx.gov", true }, - { "wiseflat.com", false }, { "wisegoldfish.com", true }, { "wisehome.dk", true }, { "wiseinternational.org", true }, + { "wiseitguys.com", true }, { "wiselectures.com.au", true }, + { "wisemans.us", true }, { "wisemen.digital", true }, { "wisemoney.com.vc", true }, { "wisenederland.nl", true }, { "wiseradiology.com.au", true }, + { "wisereducacao.com", true }, { "wisereshape.com", true }, { "wisersp.com", true }, + { "wisertp.com", true }, { "wisetechglobal.com", true }, { "wisetoken.net", true }, + { "wiseup.com", true }, { "wiseupcorp.com", true }, { "wiseuplive.com.br", true }, - { "wisewellusa.com", true }, + { "wisewaynutrition.com", true }, + { "wishesandquotes.com", true }, + { "wishfin.com", true }, + { "wishing3.com", true }, { "wishingyou.co.uk", true }, { "wishlisotr.cf", true }, { "wishlisotr.gq", true }, @@ -131695,16 +151498,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiska.lat", true }, { "wiskundeonderzoek.tk", true }, { "wism.io", true }, + { "wisniewskamakeup.pl", true }, + { "wisnz.co.nz", true }, { "wispmaeksmusic.tk", true }, { "wispsuperfoods.com", true }, { "wispyon.com", true }, - { "wiss.co.uk", true }, + { "wisr.com.au", true }, + { "wiss.co.uk", false }, { "wissamnr.be", true }, { "wisselink.tk", true }, { "wissen-a5.de", true }, { "wissena5.de", true }, { "wistaysafe.gov", true }, - { "wisv.ch", true }, { "wisweb.no", true }, { "wit-creations.fr", true }, { "wit.ai", true }, @@ -131717,7 +151522,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "witchhunt.tk", true }, { "witchthicktits.tk", true }, { "witeetam.com", true }, + { "with-environment.com", true }, + { "withamscouts.org.uk", true }, { "withdati.fr", true }, + { "withdcc.com", true }, { "wither.cf", true }, { "witheveryheartbeat.com.au", true }, { "withextraveg.net", true }, @@ -131725,26 +151533,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "withgentlent.com", true }, { "withgoogle.com", true }, { "withinsecurity.com", true }, - { "withlocals.com", false }, + { "withjoy.com", true }, { "withoutessence.io", true }, { "withpersona.com", true }, { "withprocess.com", true }, { "withsunglasses.co.uk", true }, + { "withthefirstpick.com", true }, { "withyoutube.com", true }, { "witneywaterpolo.org.uk", true }, { "witrey.com", true }, + { "witron.de", true }, + { "wits.uk", true }, { "witsvideo.com", true }, - { "witt-international.co.uk", true }, + { "witt.link", true }, { "wittamer.com", false }, { "wittebrug.nl", true }, { "wittepapaver.nl", true }, + { "witteveenbos.com", true }, { "wittgen-kfz-technik.de", true }, { "witting.co", false }, { "wittingtonventures.com", true }, { "wittu.fi", true }, - { "witway.nl", false }, + { "wittur.com", true }, { "witze-fun.de", true }, { "witzik.at", true }, + { "wiut.uz", true }, { "wivcfinancialservices.com", true }, { "wivoc.nl", true }, { "wiwi.nl", true }, @@ -131755,34 +151568,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wiz.biz", true }, { "wiz.farm", true }, { "wizadjournal.com", true }, - { "wizard.gov", true }, + { "wizard.gov", false }, { "wizardbouncycastles.co.uk", true }, { "wizardk.tk", true }, { "wizardkami.tk", true }, { "wizardmeow.xin", true }, { "wizardofhomes.com", true }, { "wizardschool.tk", true }, - { "wizardwiz.com", true }, { "wizathon.com", true }, - { "wizdomonwheels.com", true }, { "wizzair.com", true }, { "wizzley.com", true }, { "wizznab.tk", true }, { "wizzr.nl", true }, { "wjb.marketing", true }, + { "wjcainc.com", false }, { "wjci.com", true }, + { "wjdetailers.com", true }, { "wje-online.de", true }, + { "wjec.co.uk", true }, { "wjg.ca", true }, { "wjg.dk", true }, { "wjg.se", true }, + { "wjm2038.me", true }, { "wjr.io", true }, - { "wjsh.com", true }, { "wjtje.ga", true }, { "wjwieland.dvrdns.org", false }, { "wk-tk.com", true }, { "wk.pl", true }, { "wk577.com", true }, { "wkberg.nl", true }, + { "wkbw.com", true }, { "wkd.one", true }, { "wkennington.com", true }, { "wkitu-test.tk", true }, @@ -131790,16 +151605,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wkola.tk", true }, { "wkshp.link", true }, { "wkv.com", true }, + { "wkwsafetysolution.com", true }, { "wkymenshealth.com", true }, { "wkz.io", true }, + { "wl-bank.com", true }, + { "wl-bank.de", true }, + { "wl-bank.eu", true }, { "wlaws.com", true }, + { "wlbank.de", true }, { "wlci.gov", true }, { "wlcmedical.com.au", true }, { "wlf.is", true }, - { "wlmhtrecoverycollege.co.uk", true }, { "wlmq10086.cn", true }, - { "wlombard.ru", true }, + { "wlnk.cc", true }, + { "wloch.me", true }, + { "wlolo.com", true }, { "wlozku.pl", true }, + { "wlpc.com", true }, { "wlpvzfilmy-onlajnmlawq.tk", true }, { "wlt.ca", false }, { "wltix.com", false }, @@ -131807,36 +151629,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wm-access.com", true }, { "wm-access.de", true }, { "wm-referrals.com", true }, - { "wm-talk.net", false }, { "wmaccess.com", true }, { "wmaccess.de", true }, { "wmakemarketing.com", true }, + { "wmar2news.com", true }, { "wmasphaltservices.com", true }, { "wmataoig.gov", true }, + { "wmc.org", true }, { "wmccancercenter.com", true }, { "wmcns.net", true }, { "wmcpaphysicians.com", true }, - { "wmcroboticsurgery.com", true }, { "wmcuk.net", true }, { "wmfusercontent.org", true }, { "wmi4.com", true }, - { "wmie.it", false }, { "wmkowa.de", true }, + { "wmmi.org", true }, { "wmmkf.com", true }, { "wmmks.com", true }, { "wmnrj.com", true }, { "wmphonline.com", true }, { "wmphvacations.com", true }, + { "wmsenibong.com.my", true }, { "wmsndorgen.cf", true }, { "wmsndorgen.ga", true }, { "wmsndorgen.gq", true }, { "wmsndorgen.ml", true }, { "wmsndorgen.tk", true }, - { "wmspropertyportal.co.uk", true }, + { "wmtools.me", true }, { "wmustore.com", true }, { "wnark.com", true }, + { "wnc-frontend-alb-1765173526.ap-northeast-2.elb.amazonaws.com", true }, + { "wndrdtfd.com", true }, { "wnmed.com.au", true }, - { "wnokta.com", true }, { "wns68123.com", true }, { "wns6852.com", true }, { "wns6862.com", true }, @@ -131845,54 +151669,74 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wns68666.com", true }, { "wns6872.com", true }, { "wnsr3970.com", true }, + { "wnxt.in", true }, { "wo-ist-elvira.net", true }, { "wo25.net", true }, { "wo2forum.nl", true }, { "woadzs.com", true }, { "woah.how", true }, + { "woai.cf", true }, { "woaiuhd.com", true }, + { "woba.cf", true }, + { "woba.ml", true }, { "wobako.pl", true }, { "wobble.ninja", true }, { "wobblywotnotz.co.uk", true }, { "wobker.co", true }, { "woblex.cz", true }, + { "wobuwo.com", true }, { "woc.ao", true }, + { "wochenblatt.com", true }, { "wochennummern.de", true }, { "wocup.ga", true }, { "wod-stavby.cz", true }, { "wodax.dk", true }, { "wodboss.com", true }, + { "wodemo.com", true }, + { "wodi.cf", true }, + { "wodi.ml", true }, { "wodinaz.com", true }, { "wodka-division.de", true }, { "woeb.fr", true }, { "woelckner.com", true }, { "wofford-ecs.org", false }, - { "wogame.org", true }, + { "woffu.com", true }, + { "woge.cf", true }, + { "woge.ml", true }, { "wogo.org", true }, { "woh.org", true }, { "woheni.de", true }, - { "wohlgemuth.rocks", true }, - { "wohlpa.de", true }, + { "wohnberatung-wien.at", true }, { "wohnsitz-ausland.com", true }, - { "wohnungsbau-ludwigsburg.de", true }, + { "wohnungsaufloesung-berlin.net", true }, + { "wohnungsbaukredit.ag", true }, + { "wohnungsbaukredit.biz", true }, + { "wohnungsbaukredit.com", true }, + { "wohnungsbaukredit.de", true }, + { "wohnungsbaukredit.eu", true }, + { "wohnungsbaukredit.info", true }, + { "wohnungsbaukredit.org", true }, + { "wohnungsmarktbeobachtung.de", true }, + { "wohnzimmer-koch.de", true }, { "woi.vision", true }, { "wois.info", true }, { "wojak.xyz", true }, { "wojart.pl", true }, { "wojciechowka.pl", true }, + { "wojciechteichert.pl", true }, { "wojtekmaj.pl", true }, { "wojtekogrodnik.pl", true }, { "wokeanda.com", true }, + { "wokeupset.ru", true }, { "wokfilms.pt", true }, { "wokinghammotorhomes.com", true }, { "woktoss.com", true }, - { "wolf-advies.nl", true }, + { "woldars.com", true }, { "wolf-haven.tk", true }, { "wolf333.com", true }, { "wolfachtal-alpaka.de", true }, { "wolfarth.info", true }, { "wolfdig.com.br", true }, - { "wolfeco.net", true }, { "wolfermann.org", true }, { "wolfermans.com", true }, { "wolferstetterkeller.de", true }, @@ -131904,17 +151748,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wolfgang-kerschbaumer.net", true }, { "wolfgang-kloke.de", true }, { "wolfgang-ziegler.com", true }, - { "wolfgang.space", true }, + { "wolfgangkowar.de", true }, + { "wolfie.tv", true }, { "wolflabs.co.uk", true }, { "wolflambert.tk", true }, { "wolfsburgwest.com", true }, { "wolfsense.nl", true }, { "wolfshoehle.eu", true }, + { "wolfskymedia.com", true }, + { "wolfsmobile.com", true }, + { "wolfssl.com", true }, + { "wolfstreet.com", true }, { "wolfteam.tk", true }, { "wolfvideoproductions.com", true }, { "wolfwings.us", true }, { "wolfy.design", true }, { "wolfy1339.com", true }, + { "wolkanca.com", true }, { "wolkanca.com.tr", true }, { "wolke7.wtf", true }, { "wolkenputzer.com", true }, @@ -131926,6 +151776,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wollongongbaptist.hopto.org", true }, { "wollwerk.org", true }, { "wolrdwidessl.net", true }, + { "wolsing.dk", true }, { "wolszon.me", true }, { "woltauth.de", true }, { "woltlab-demo.com", true }, @@ -131933,31 +151784,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woltlab.de", true }, { "wolverine-obuv.ru", true }, { "wolvesbanemanor.com", true }, - { "womanbusinessnetwork.com", true }, + { "wolvostore.com", true }, + { "wom.de", true }, { "womb.city", true }, { "wombatnet.com", true }, + { "wombatpass.com", true }, + { "wombatpass.com.au", true }, { "wombats.net", true }, { "wombere.org", true }, - { "womcom.nl", true }, + { "womblesemporium.co.uk", true }, { "women-femmes.gc.ca", true }, { "women-only.net", false }, { "women.gc.ca", true }, + { "womenagainstviolence.org", true }, { "womenbrace.tk", true }, { "womenfashionshirt.tk", true }, { "womenofficersofindia.com", true }, { "womenofwhatcom.com", true }, { "womenonboardskenya.co.ke", true }, + { "womenridersnow.com", true }, { "womens-suits.tk", true }, { "womensbiz.tk", true }, { "womenscalltoaction.tk", true }, + { "womensenews.org", false }, { "womenshealth.gov", true }, { "womensmedassoc.com", true }, { "womensshelterofhope.com", true }, + { "womfs.com.au", true }, { "wompenriebler.tk", true }, { "womply.com", true }, { "woms.top", true }, { "womywomwoo.com", true }, - { "wondeerful.farm", false }, { "wonderbits.net", true }, { "wonderbox.ga", true }, { "wonderbox.gq", true }, @@ -131978,8 +151835,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wonderlangkawi.com", true }, { "wonderleaks.gq", true }, { "wondermags.com", true }, - { "wondersonlineshop.com", true }, - { "wonderzeal.com", true }, + { "wondermiles.com", true }, + { "wondermiles.org", true }, + { "wonderpages.com.br", true }, + { "wonderworksonline.com", true }, { "wondeur.ai", true }, { "wondium.nl", true }, { "wonewocwi.gov", true }, @@ -131989,28 +151848,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woning-verfspuiten.be", true }, { "woning-verfspuiten.com", true }, { "woning-verfspuiten.nl", true }, - { "woningent.gent", true }, { "woningonderhoud.tk", true }, - { "woningverfspuiten.be", true }, - { "woningverfspuiten.nl", true }, { "wonko-vs-trader.de", true }, { "wonksecurity.com", true }, + { "wonksecurityblog.com", true }, { "woo-jiho.tk", true }, { "woo.bi", true }, { "wooby.tk", true }, - { "wooc.org", true }, + { "wooc.org", false }, + { "woocommerce-b2b-plugin.com", true }, + { "woocommerce-multivendor.com", true }, { "woocommerce.academy", true }, { "wood-crafted.co.uk", true }, { "wood-crafted.uk", true }, + { "wood4heat.ca", true }, + { "woodandshop.com", true }, { "woodbornekitchens.com", true }, { "woodbridgegrp.com", true }, { "woodbury.io", true }, + { "woodburynj.gov", true }, { "woodcat.net", true }, + { "woodcentral.com", true }, { "woodcock.cloud", true }, - { "woodconditioningonline.com", true }, { "woodcountywi.gov", true }, { "woodcraftcompany.ru", true }, - { "woodcraftind.com", true }, { "woodenson.com", true }, { "woodentreasure.co.uk", false }, { "woodev.us", true }, @@ -132018,8 +151879,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woodfencestlouis.com", true }, { "woodfordcountyil.gov", true }, { "woodfordcountyky.gov", true }, - { "woodinvillesepticservice.net", true }, + { "woodhavenmi.gov", true }, + { "woodhullfoundation.org", true }, { "woodlandboys.com", true }, + { "woodlandcreekfurniture.com", true }, { "woodlandexterior.com", true }, { "woodlandgarden.fr", true }, { "woodlandsiding.com", true }, @@ -132028,39 +151891,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "woodlandsvale.uk", true }, { "woodlandwindows.com", true }, { "woodlandwindows.net", true }, + { "woodlawnky.gov", true }, + { "woodlineds.com", true }, + { "woodmaster23.ru", false }, { "woodminstermanagement.tk", true }, { "woodminsterrealty.com", true }, { "woodomat.com", true }, + { "woodomat.net", true }, + { "woodomat.org", true }, + { "woodpeckerhallacademy.org.uk", true }, { "woodridgeil.gov", true }, + { "woodrowandallen.com", true }, + { "woodruffcountyar.gov", true }, + { "woodsbagot.com", true }, + { "woodsconsulting.com", false }, + { "woodscountyok.gov", true }, { "woodshouse.ru", true }, { "woodsidepottery.ca", true }, - { "woodsmillparkapartmentsstl.com", true }, - { "woodstocksupply.com", true }, + { "woodstar.ro", true }, + { "woodstocknh.gov", true }, + { "woodstockva.gov", true }, + { "woodstone.nu", true }, { "woodtrust.com", true }, { "woodvibes.pl", true }, + { "woodvillems.gov", true }, + { "woodvillemspolice.gov", true }, { "woodward-vets.co.uk", true }, { "woodwicker.cl", true }, { "woodwo.se", true }, { "woodworkcare.com", true }, { "woodwormtreatment.com", true }, + { "woody-art.eu", true }, { "woodyallen.tk", true }, { "woodysinstalaciones.com", true }, { "woof.gq", true }, { "woofsbakery.com", true }, { "woohay.com", true }, + { "woohoo.in", true }, { "woohooyeah.nl", true }, { "wookstar.com", true }, { "woolfplumbing.com.au", true }, { "woolyss.com", true }, { "woomu.me", true }, + { "woonaval.eu", true }, + { "woonbedrijf.com", true }, { "woonboulevardvolendam.nl", false }, { "woonplein.tk", true }, { "woontegelwinkel.nl", true }, { "woonverkoop.be", true }, { "woopie.com", true }, + { "woopiq.com", false }, + { "wooplaces.com", true }, { "wooproducciones.tk", true }, { "woordvanvandaag.nl", true }, + { "woorkup.com", true }, { "woosk.de", true }, + { "wootality.com", true }, { "woothelpdesk.com", true }, { "wootkit.tk", true }, { "wootware.co.za", true }, @@ -132070,41 +151956,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worcade.com", true }, { "worcesterbouncycastlehire.co.uk", true }, { "worcesterbouncycastles.co.uk", true }, + { "worcestercu.com", true }, { "worcesterfestival.co.uk", true }, + { "worcestermd.gov", true }, { "worcesterpethydrotherapy.com", true }, { "worcestervets.co.uk", true }, { "worcestervetsreferrals.com", true }, { "word-grabber.com", true }, { "wordadmin.com", false }, { "wordbits.net", false }, - { "wordcharma.com", true }, { "wordcounter.net", true }, + { "wordfast.com", true }, { "wordher.com", true }, + { "wordindonesia.com", true }, { "wordindonesia.id", true }, { "wordlessecho.com", true }, { "wordnietvindbaar.nl", true }, - { "wordops.eu", true }, { "wordops.io", true }, { "wordops.net", true }, { "wordpress-crm-plugin.com", true }, { "wordpress-crm.pl", true }, { "wordpress-inc.ru", true }, - { "wordpress-malware-removal.com", true }, { "wordpress-szakerto.hu", true }, + { "wordpress-test.site", false }, { "wordpress.com", false }, - { "wordpressarequipa.com", true }, + { "wordpressadmin.ru", true }, { "wordpressbot.tk", true }, { "wordpressdevelopment.ml", true }, + { "wordpressguru.pro", true }, + { "wordpresspro.guru", true }, { "wordregistrar.ga", true }, + { "wordroid.net", true }, + { "words-are-pictures.com", true }, + { "words.codes", false }, { "wordsearchwhiz.com", true }, + { "wordsforellie.com", true }, { "wordsmart.it", true }, { "wordsofamaster.com", true }, { "wordspam.ga", true }, - { "wordspy.com", true }, + { "wordunscrambler.com", true }, { "wordwidessl.net", true }, { "wordxtra.net", true }, { "wordzite.com", true }, { "worf.in", true }, + { "wori.cf", true }, + { "wori.ga", true }, + { "wori.gq", true }, + { "wori.ml", true }, + { "wori.tk", true }, { "worio.co", true }, { "work-at-home.ga", true }, { "work-at-home.gq", true }, @@ -132123,7 +152022,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "workathomenoscams.com", true }, { "workathomeopportunities.tk", true }, { "workathomernjobs.tk", true }, + { "workcare.com", true }, { "workcelerator.com", true }, + { "workcenter.gov", true }, { "workcheck.bz", true }, { "workclaims.org", true }, { "workcloud.jp", true }, @@ -132148,27 +152049,37 @@ static const nsSTSPreload kSTSPreloadList[] = { { "workfromhomesites.ga", true }, { "workfromhomesites.ml", true }, { "workfromhometexas.tk", true }, + { "workhorsemkt.com", true }, { "workindia.ml", true }, { "workinestonia.com", false }, { "working-group-cloudsecurityalliance.org", true }, { "workingclassmedia.com", true }, + { "workingdogs.site", true }, + { "workingfamilies.org.uk", false }, { "workinghardinit.work", true }, { "workingmachine.info", true }, + { "workingnotworking.com", true }, + { "workingproductkeys.info", true }, + { "workingreels.com", true }, { "workingtalent.nl", true }, { "workinnorway.no", true }, { "workiva.com", true }, { "workjustice.com.au", true }, { "worklinepc.com", true }, { "worklizard.com", true }, + { "workmax.com", true }, + { "workmaxidenta.lt", true }, { "worknrby.com", true }, + { "workona.com", true }, { "workonit.cf", true }, + { "workoutdigital.com", true }, { "workplace.com", true }, { "workplace.tools", true }, { "workreap.tk", true }, { "workreveal.biz", true }, - { "workreview10.com", true }, { "works-ginan.jp", true }, { "worksheets-to-print.com", true }, + { "workshop-assets.com", true }, { "workshop-email-content.com", true }, { "workshop-email-tracking.com", true }, { "workshop-spf.net", true }, @@ -132181,14 +152092,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worksindev.com", true }, { "worksitevr.com", true }, { "workspace.pt", true }, + { "worksthatwork.com", true }, { "worktefa.tk", true }, - { "worktraining.com", true }, + { "workthings.de", true }, { "workupapp.com", true }, - { "workwelltoday.net", true }, { "workwithgo.com", false }, { "workwithusaid.gov", true }, { "worky.ph", true }, + { "workzly.in", true }, { "world-citizen-report.com", true }, + { "world-creator.se", true }, { "world-documentary.ml", true }, { "world-education-association.org", true }, { "world-ir.international", true }, @@ -132203,7 +152116,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "world-web.pro", true }, { "worldaccord.org", true }, { "worldarmy.tk", true }, - { "worldarticles.ru", true }, + { "worldatwork.org", true }, { "worldbelow.tk", true }, { "worldbirds.com", true }, { "worldbirds.org", true }, @@ -132214,11 +152127,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldcharteronline.ga", true }, { "worldchess.london", true }, { "worldcigars.com.br", true }, + { "worldcircuit.co.uk", true }, { "worldclassfriend.com", true }, { "worldconsultingchile.tk", true }, { "worldcrafts.org", true }, - { "worldcubeassociation.org", true }, + { "worldcrunch.com", true }, { "worldcup-odds.com", true }, + { "worlddataexchange.au", true }, + { "worlddataexchange.com", true }, + { "worlddataexchange.com.au", true }, { "worldessays.com", true }, { "worldeventscalendars.com", true }, { "worldexpo.ga", true }, @@ -132226,7 +152143,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldfinancenews.org", true }, { "worldfootball.tk", true }, { "worldgun.ml", true }, - { "worldhairtrends.com", true }, { "worldhealthcompany.tk", true }, { "worldhealthdepartment.tk", true }, { "worldhealthdiet.tk", true }, @@ -132254,21 +152170,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldhomeuk.tk", true }, { "worldhomeusa.tk", true }, { "worldhosting.cf", true }, + { "worldinfusedcandles.com.au", true }, { "worldintercontinental.cf", true }, { "worldix.cf", true }, { "worldix.gq", true }, { "worldix.ml", true }, { "worldix.tk", true }, { "worldjobs.tk", true }, + { "worldjusticeproject.org", true }, + { "worldlandtrust.org", true }, { "worldlanguage.tk", true }, { "worldluxuryhome.tk", true }, { "worldmarathons.tk", true }, { "worldmeetings.com", true }, - { "worldnetone.com", true }, { "worldnewsinbox.ga", true }, { "worldnewsphoto.tk", true }, { "worldofarganoil.com", true }, { "worldofbelia.de", true }, + { "worldofdiy.info", true }, + { "worldofgeekstuff.com", true }, { "worldofghibli.id", true }, { "worldofheroes.ml", true }, { "worldoflegion.ml", true }, @@ -132278,10 +152198,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldpayaccessories.com", true }, { "worldplayerx.com", true }, { "worldpolitics.cf", true }, + { "worldpool.com.au", true }, { "worldrallyforum.tk", true }, { "worldranking.tk", true }, { "worldrecipes.eu", true }, { "worldrism.com", true }, + { "worldsage.org", true }, { "worldsat.tk", true }, { "worldsaway.ca", true }, { "worldsbest.ga", true }, @@ -132294,14 +152216,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldsport.cf", true }, { "worldstone777.com", true }, { "worldstyles.cf", true }, - { "worldstyling.com", true }, { "worldsweet.ru", true }, { "worldsy.com", true }, + { "worldsystems.com.co", true }, { "worldtalk.de", true }, + { "worldtattooevents.com", true }, { "worldtourismgroup.com", true }, { "worldtrandingnews.ml", true }, { "worldtravelmagazine.tk", true }, - { "worldtreechocolate.ca", true }, { "worldturkmans.tk", true }, { "worldupdatereviews.com", true }, { "worldviews-debattieren.de", true }, @@ -132309,27 +152231,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worldvisionsummerfest.com", true }, { "worldwallstreet.tk", true }, { "worldwar2collector.tk", true }, + { "worldwatchmonitor.org", true }, + { "worldwideradiosummit.com", true }, + { "worldwidescience.org", true }, { "worldwidessl.net", true }, { "worldwinesweb.be", true }, + { "worley.com", true }, + { "worleyparsons.com", true }, { "worlich.tk", true }, - { "wormate.io", true }, { "wormburners.tk", true }, { "wormbytes.ca", true }, - { "wormdisk.net", true }, { "wormhol.org", true }, + { "wormhole.com", true }, { "wormhole.ga", true }, { "wormholevpn.net", true }, { "wormincorporated.tk", true }, { "wormpress.com", true }, { "worms-cowclan.tk", true }, + { "wormss9.org", true }, + { "worn.pl", true }, { "worongarymedical.com.au", true }, { "worpswede.eu", true }, { "worst.horse", false }, { "wort-suchen.de", true }, - { "wort.lu", true }, { "wortdestages.tk", true }, { "worthcountyiowa.gov", true }, { "worthenind.com", true }, + { "worthingtonindustries.com", true }, { "worthless.company", true }, { "worthlessingratitudecq.cf", true }, { "worthlessingratitudecq.gq", true }, @@ -132339,23 +152267,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "worthwritingfor.com", true }, { "worthyblog.com", true }, { "worthygo.com", true }, - { "worthygp.com", true }, { "worzo.tk", true }, { "woshiluo.com", true }, { "woshiluo.site", true }, { "wossl.com", true }, { "wossl.net", true }, + { "wot-life.com", true }, { "wot-tudasbazis.hu", true }, { "wot-zadrot.com", true }, { "wotaku.top", true }, { "wotcheats.ru", true }, { "woti.dedyn.io", true }, + { "wotlo.com", true }, + { "wotsunduk.ru", true }, + { "wotter.me", true }, { "wotzadrot.com", true }, { "woudenberg.nl", false }, - { "woudenbergsedrukkerij.nl", true }, { "woulaba.com", true }, { "wound-doc.co.uk", true }, + { "wouter.site", true }, + { "wouterbruijning.nl", true }, { "wouterkobes.nl", true }, + { "wouterpetri.com", true }, + { "wouterpetri.xyz", true }, { "wouterslop.com", true }, { "wouterslop.eu", true }, { "wouterslop.nl", true }, @@ -132366,13 +152300,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wow-foederation.de", true }, { "wow-screenshots.net", true }, { "wow-serbia.tk", true }, + { "wowa.ca", true }, { "wowaffixes.info", true }, { "wowarcaim.ml", true }, { "wowbouncycastles.co.uk", true }, + { "wowchemy.com", true }, { "wowcinema.tk", true }, { "wowdrive.ga", true }, { "wowede.com", false }, - { "wowgraphic.in", true }, + { "wowfare.com", true }, { "wowhampers.ie", true }, { "wowhelp.it", true }, { "wowi-ffo.de", true }, @@ -132381,14 +152317,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wowjs.uk", true }, { "wowlegacy.ml", true }, { "wowlove.tk", true }, + { "wownmedia.com", true }, { "wownskportal.tk", true }, { "wowpilates.com", true }, { "wowpolisa.pl", true }, { "wows-mods.tk", true }, { "wows.sb", true }, { "wowsosellout.com", true }, + { "wox.ac", true }, + { "woyao.ml", true }, { "woyzeck.org", true }, { "wozalapha.com", true }, + { "wozsun.com", true }, + { "wozwaardeloket.nl", true }, + { "wozwebdesign.com.br", true }, + { "wp-assistance.fr", true }, { "wp-bootstrap.org", true }, { "wp-bundle.co", false }, { "wp-cloud.fi", false }, @@ -132399,53 +152342,65 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wp-mix.com", true }, { "wp-ninja.tk", true }, { "wp-op.com", true }, + { "wp-rebuild.com", true }, { "wp-securehosting.com", true }, { "wp-stack.pro", true }, { "wp-tao.com", true }, { "wp-webagentur.de", true }, { "wp2static.com", true }, + { "wpa.org.uk", true }, { "wpac.de", true }, { "wpandup.org", true }, { "wpautolistings.com", true }, { "wpbeter.nl", true }, { "wpboot.com", true }, { "wpboys.com", false }, + { "wpbrigade.com", true }, { "wpcanban.com", true }, { "wpccu-cdn.org", true }, { "wpcdn.bid", true }, { "wpcepat.com", false }, + { "wpcgm.co.uk", true }, { "wpcharged.nz", true }, { "wpcheck.io", true }, + { "wpckraft.ro", true }, { "wpco.nl", true }, + { "wpco.se", true }, + { "wpconcepts.net", true }, + { "wpcoupons.io", true }, + { "wpcrs.org", true }, { "wpcs.pro", true }, - { "wpdepo.com", true }, { "wpdev.com.au", true }, - { "wpdublin.com", true }, - { "wpduta.com", true }, { "wpekspres.com", true }, - { "wpen.ru", true }, { "wpetri.nl", true }, + { "wpexpert.com.tr", true }, + { "wpexplainer.com", true }, { "wpexplorer.com", true }, { "wpformation.com", true }, { "wpforum.tk", true }, { "wpfunction.com", true }, - { "wpfy.org", false }, { "wpg-verwaltungen.de", true }, + { "wpginvest.com", true }, + { "wpguvenlik.com", true }, { "wphelpdesk.nl", true }, { "wphelpwithhomework.tk", true }, { "wphlive.tv", true }, + { "wphost.nl", false }, + { "wphostee.co.uk", true }, { "wphosting.ovh", true }, - { "wphostingblog.nl", true }, { "wpinabox.de", true }, { "wpinfos.de", false }, - { "wpjzb.com", true }, + { "wpinsides.com", true }, + { "wpjzb.com", false }, { "wpknol.com", true }, { "wpldn.uk", true }, { "wpletter.de", true }, { "wplibrary.net", true }, + { "wplicious.com", true }, { "wplistings.pro", true }, + { "wpmatik.com", true }, { "wpmeer.com", true }, - { "wpmeetup-berlin.de", true }, + { "wpmet.com", true }, { "wpml.org", true }, { "wpmu-tutorials.de", true }, { "wpnesia.id", true }, @@ -132455,15 +152410,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wpnews.ml", true }, { "wpnews.tk", true }, { "wpnovice.tk", true }, - { "wpnuvem.com", true }, - { "wpocs.com", true }, { "wpoptimalizace.cz", true }, + { "wppbki1.com", true }, { "wprank.net", true }, { "wprapide.com", true }, { "wpresscoder.com", true }, { "wpscholar.com", true }, { "wpsecured.net", true }, - { "wpsermons.com", true }, { "wpserp.com", true }, { "wpsharks.com", true }, { "wpsite.dk", true }, @@ -132473,46 +152426,57 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wpsmackdown.com", true }, { "wpspeedcare.com", true }, { "wpspeedking.com", true }, - { "wpspeedmatters.com", true }, { "wpsuites.com", true }, { "wptests.tk", true }, - { "wpthaiuser.com", true }, { "wpthemearchive.com", true }, - { "wpthemecloud.com", true }, - { "wptoolset.net", true }, - { "wptorium.com", true }, { "wptotal.com", true }, { "wptrigone.fr", true }, { "wptrigone.net", true }, { "wpturnedup.com", true }, + { "wptv.com", true }, { "wpuse.ru", true }, + { "wpwebshop.com", true }, { "wq.ro", true }, { "wqaw3.tk", true }, { "wr.su", true }, + { "wrallp.com", true }, { "wrap.in.ua", true }, + { "wrap.org.uk", true }, { "wrapit.hu", true }, { "wrapitup.co.uk", true }, + { "wrapping.spb.ru", true }, { "wrara.org", true }, { "wrathofgeek.com", true }, { "wrbunderwriting.com", false }, { "wrc-results.com", true }, { "wrd48.net", true }, { "wrdcfiles.ca", true }, + { "wrdf.org", true }, + { "wrdmrk.com", true }, { "wrecked.cf", true }, { "wrecked.tk", true }, + { "wreckeroo.com.au", true }, { "wreckingball.hu", true }, + { "wrecky.com.au", true }, { "wregni.com", true }, { "wrentham.gov", true }, { "wrenthamfire.gov", true }, { "wrenthampolice.gov", true }, + { "wrenwrites.com", true }, + { "wreo.org", true }, { "wresttmb.tk", true }, { "wrfalimentos.com.br", true }, { "wrglzd.com", true }, { "wrgms.com", true }, + { "wrhomedecor.com.br", true }, { "wrightcountymo911.gov", true }, + { "wrighthassall.co.uk", true }, { "wrightpattfss.com", true }, + { "wrightslawfirm.com", true }, + { "wrighttownshipottawami.gov", true }, + { "wrighttownshippa.gov", true }, { "wringer.ga", true }, - { "wristreview.com", true }, + { "wristler.eu", true }, { "write-right.net", true }, { "writeandedit-for-you.com", true }, { "writeaword.tk", true }, @@ -132525,40 +152489,44 @@ static const nsSTSPreload kSTSPreloadList[] = { { "writer24.ru", true }, { "writerecommendations.ga", true }, { "writerimranc.ca", true }, - { "writerimranc.com", true }, { "writers-club.tk", true }, { "writersblock.tk", true }, { "writesafer.com", true }, { "writestreak.team", true }, { "writeyoursmile.com", true }, - { "writing-arena.com", true }, { "writing-expert.com", true }, { "writingapps.ga", true }, + { "writingbee.com", true }, { "writingcities.net", true }, + { "writingillini.com", true }, { "writingiswork.ga", true }, { "writingontablets.com", true }, { "writingpapersonlineformoney.ga", true }, + { "writingservicesreviewsblog.net", true }, { "writingtoserve.net", true }, { "writtenandrecorded.com", true }, { "writtenworld.bg", true }, + { "wrm.sr", true }, { "wrmea.org", true }, { "wrmh343.org", true }, - { "wrn.sh", true }, { "wrnck.cloud", true }, - { "wrnmb.xyz", true }, { "wroclawguide.com", true }, { "wrong.wang", false }, { "wrozbyonline.pl", true }, { "wrozbyzkartklasycznych.pl", true }, { "wrp.gov", true }, + { "wrtv.com", true }, + { "wrytin.com", true }, + { "wrzalski.com", true }, { "ws159.com", true }, + { "ws88.top", false }, { "wsa.org.nz", true }, { "wsa.poznan.pl", true }, { "wsadek.ovh", true }, { "wsave.be", true }, - { "wsb-immo.at", true }, - { "wsb-immobilien.at", true }, { "wsb.pl", true }, + { "wsballc.com", true }, + { "wscad.com", true }, { "wscales.com", false }, { "wscauth.de", true }, { "wscore.me", true }, @@ -132567,15 +152535,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wsdeboer.nl", true }, { "wselektro.de", true }, { "wseo.pw", true }, - { "wsform.com", true }, { "wsgvet.com", true }, { "wsheffield.com", true }, - { "wsiaca.org", true }, + { "wshop24.biz", true }, { "wsl.sh", true }, { "wsldp.com", true }, { "wsm-naramowice.pl", true }, { "wsn.com", true }, { "wso01.com", true }, + { "wsodownloads.io", true }, + { "wsparcie.gov.pl", true }, { "wsrc.tk", true }, { "wsrn.de", true }, { "wsrv.nl", true }, @@ -132584,9 +152553,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wssv.ch", false }, { "wstudio.ch", false }, { "wstx.com", true }, + { "wsug.gq", true }, { "wsv-pfeffingen.de", true }, { "wszystkocokocham.com", true }, { "wt-server3.de", true }, + { "wtawi.org", true }, { "wtccc.org.uk", true }, { "wtdiw.com", true }, { "wtfbryan.com", false }, @@ -132596,11 +152567,20 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wth-security.nl", true }, { "wth.in", true }, { "wthproject.ru", true }, + { "wtkr.com", true }, + { "wtmarketing.com", true }, { "wtp.co.jp", true }, { "wtpdive.jp", true }, { "wtpmj.com", true }, + { "wtsh.de", true }, + { "wtvr.com", true }, { "wtw.io", true }, + { "wtxl.com", true }, + { "wu-y.com", true }, { "wuaffiliate.tk", true }, + { "wuast24.de", true }, + { "wubuwu.com", true }, + { "wuchipc.com", true }, { "wuchoamoveis.com.br", true }, { "wucke13.de", true }, { "wuellenweber.net", true }, @@ -132623,14 +152603,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wuki.li", true }, { "wuknet.com", true }, { "wuknet.net", true }, + { "wulai.cf", true }, + { "wulai.ml", true }, { "wulala.one", true }, - { "wulala.us", true }, + { "wulcan-platinum.com", true }, { "wulel.cn", false }, { "wulfrun-invicta.tk", true }, + { "wulkan-platinum.xyz", true }, { "wum.me", true }, + { "wuma.ml", true }, { "wumai-p.cn", true }, { "wumbo.cf", true }, - { "wumbo.co.nz", true }, + { "wumbo.co.nz", false }, { "wumbo.ga", true }, { "wumbo.gq", true }, { "wumbo.kiwi", true }, @@ -132642,37 +152626,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wunderbarespolen.de", true }, { "wunderkarten.de", true }, { "wunderlist.com", true }, + { "wundertraining.com.au", true }, { "wundi.net", true }, { "wunschpreisauto.de", true }, { "wunschzettel.de", true }, + { "wuoppy.com", true }, { "wuppertal-2018.de", false }, { "wuppertaler-frettchensitterin.tk", true }, { "wurm-sb.de", false }, { "wurmannsquick.bayern", false }, { "wurmannsquick.de", false }, { "wurstbrot.cf", true }, + { "wurstfest.com", true }, { "wurstmineberg.de", true }, + { "wurzelchaos.de", true }, { "wurzelkanal.de", true }, + { "wushka.com.au", true }, { "wusu.tk", true }, { "wuupz.com", true }, + { "wuw.moe", true }, { "wuxian.ml", false }, + { "wuy.me", true }, { "wuya.eu.org", true }, - { "wuyang.ws", false }, + { "wuyifan.ga", true }, { "wuyuan.io", true }, { "wuz.com.tw", true }, { "wuzhuiso.com", true }, - { "wuzigackl.de", false }, { "wv-n.de", true }, + { "wvbold.gov", true }, + { "wvbvm.gov", true }, { "wvdn.com", true }, + { "wvdnr.gov", true }, + { "wver.de", true }, { "wvg.myds.me", true }, - { "wvisser.nl", true }, { "wvpbs.ml", true }, { "wvpbs.tk", true }, + { "wvpebd.gov", true }, + { "wvrtboard.gov", true }, + { "wvstateparks.com", true }, + { "wvunclaimedproperty.gov", true }, { "wvv-8522.com", true }, { "wvw-8522.com", true }, - { "ww-design.ch", true }, - { "ww2onlineshop.com", true }, + { "wvzwollezuid.nl", true }, { "ww5197.co", true }, + { "ww6396.com", false }, { "ww6729.co", true }, { "ww6729.com", false }, { "ww6957.co", true }, @@ -132685,13 +152682,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wwads.cn", true }, { "wwbsb.xyz", true }, { "wwc.ren", true }, + { "wwcowa.gov", true }, + { "wwcut.com", true }, { "wwe.to", true }, { "wwgc2011.se", true }, - { "wwin818.com", true }, + { "wwilogistics.com", true }, { "wwjd.dynu.net", true }, { "wwlc.ch", true }, { "wwp-beauty.com", true }, { "wwpxbeauty.com", true }, + { "wws-energysolutions.de", true }, + { "wws.nu", true }, + { "wwtelenet.com", true }, + { "wwtelenet.net", true }, { "wwtg.gov", true }, { "wwv-8522.com", true }, { "wwv-8722.com", true }, @@ -132699,7 +152702,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www-33445.com", true }, { "www-38978.com", true }, { "www-49889.com", true }, - { "www-5287.com", true }, { "www-68277.com", true }, { "www-8225.com", true }, { "www-8522.am", true }, @@ -132727,12 +152729,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www.amazon.it", true }, { "www.amazon.nl", true }, { "www.banking.co.at", true }, + { "www.bbc.co.uk", false }, + { "www.bbc.com", false }, { "www.braintreepayments.com", false }, + { "www.calyxinstitute.org", true }, + { "www.capitainetrain.com", false }, + { "www.captaintrain.com", false }, { "www.cnet.com", true }, { "www.dm-drogeriemarkt.ba", true }, { "www.dm-drogeriemarkt.bg", true }, { "www.dm-drogeriemarkt.it", true }, - { "www.dm-drogeriemarkt.ro", true }, + { "www.dm-drogeriemarkt.ro", false }, { "www.dm.at", true }, { "www.dm.cz", true }, { "www.dm.de", true }, @@ -132754,7 +152761,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www.ft.com", true }, { "www.g.co", false }, { "www.gamesdepartment.co.uk", false }, - { "www.getcloak.com", false }, + { "www.getcloak.com", true }, { "www.gmail.com", false }, { "www.googlemail.com", false }, { "www.gov.pl", true }, @@ -132763,20 +152770,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www.govt.nz", true }, { "www.gpo.gov", true }, { "www.grc.com", false }, + { "www.gub.uy", true }, { "www.healthcare.gov", false }, { "www.heliosnet.com", true }, { "www.history.pe", true }, - { "www.honeybadger.io", false }, { "www.hyatt.com", true }, { "www.icann.org", false }, { "www.irccloud.com", false }, { "www.ki", true }, + { "www.lastpass.com", false }, + { "www.ledgerscope.net", false }, { "www.lookout.com", true }, { "www.messenger.com", true }, { "www.mojadm.sk", true }, + { "www.mygov.bd", true }, { "www.noisebridge.net", true }, { "www.opsmate.com", true }, - { "www.org.gg", true }, + { "www.org.gg", false }, { "www.paypal.com", true }, { "www.python.org", true }, { "www.re", true }, @@ -132804,16 +152814,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "www00228d.com", false }, { "www00228e.com", false }, { "www68277.com", true }, - { "wwwbox.nl", true }, { "wwwclan.tk", true }, { "wwweb.be", true }, - { "wwwebtime.com", true }, + { "wwwebdesignstudios.com", true }, { "wwwhackeronecom.com", true }, { "wwwindows.co.uk", true }, { "wwwithcarrie.com", true }, { "wwwn888.com", false }, - { "wwww.nz", true }, + { "wwwsberdahk.ru", true }, { "wwwwnews.tk", true }, + { "wwwwww.click", true }, { "wwx.duckdns.org", true }, { "wx37.ac.cn", true }, { "wx6688.cc", false }, @@ -132821,39 +152831,50 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wxdisco.com", true }, { "wxforums.com", true }, { "wxh.jp", true }, - { "wxhbts.com", false }, + { "wxhbts.com", true }, { "wxkxsw.com", true }, - { "wxlog.cn", false }, { "wxrlab.com", true }, { "wxservices.tk", true }, { "wxster.com", true }, { "wxw.cat", true }, + { "wxw.guru", true }, { "wxw.moe", true }, + { "wxw.ooo", true }, + { "wxyz.com", true }, { "wxzm.sx", true }, { "wy188.cc", false }, { "wy6.org", true }, { "wyam.io", true }, { "wyatttauber.com", true }, + { "wybar.co.uk", true }, { "wybar.uk", true }, { "wycena.ga", true }, + { "wyckoff.vip", true }, { "wyckoffspringmeadowcondos.com", true }, { "wycombetoday.com", false }, + { "wycoreconstruction.com", true }, { "wyczaruj.pl", true }, { "wyday.com", true }, + { "wydmy.com.pl", true }, + { "wygadani.online", true }, { "wygibanki.pl", true }, { "wygodnie.pl", true }, - { "wykop.pl", true }, + { "wykedways.com", true }, + { "wykop.pl", false }, { "wykopylodz.ga", true }, - { "wykorzystajto.pl", true }, + { "wylark.com", true }, { "wyldfiresignage.com", true }, - { "wylei.com", true }, { "wylog.ph", true }, { "wynajemautkrakow.cf", true }, { "wynajemautkrakow.ga", true }, + { "wynajmijkontener.pl", true }, { "wyndhamcapital.com", true }, { "wyngatepta.com", true }, { "wynlv.com", true }, { "wyo.cam", true }, + { "wyofitclubs.com", true }, + { "wyofitness.com", true }, + { "wyomingcountyny.gov", true }, { "wyomingcountypa.gov", true }, { "wyomingia.gov", true }, { "wyomingmi.gov", true }, @@ -132861,24 +152882,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "wypiska.pl", true }, { "wypozyczalniasamochodowkrakow.gq", true }, { "wypracowania.pl", true }, - { "wyregisteredagent.net", true }, { "wyrickstaxidermy.com", true }, { "wyrihaximus.net", true }, { "wyrimaps.net", true }, + { "wyriverton.com", true }, + { "wysa.io", true }, + { "wyspa.com.pl", true }, { "wyssmuller.ch", false }, { "wysz.com", true }, { "wywabmnie.pl", true }, { "wyydsb.cn", true }, { "wyydsb.com", true }, { "wyydsb.xin", true }, + { "wyzj.tv", true }, + { "wyzl.cc", true }, { "wyzphoto.nl", true }, { "wyzwaniemilosci.com", true }, + { "wz.lviv.ua", true }, + { "wz.my", false }, { "wz.pt", true }, - { "wz8.info", true }, { "wzajemnie.org.pl", true }, { "wzfou.com", true }, { "wzh.one", true }, { "wzrd.in", true }, + { "wzutti.com", false }, { "wzxaini9.com", true }, { "wzyboy.org", true }, { "x-6.pl", true }, @@ -132886,6 +152913,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x-embed.com", true }, { "x-files.tk", true }, { "x-iweb.ru", true }, + { "x-kamera.de", true }, { "x-lan.be", true }, { "x-net24.pl", true }, { "x-one.co.jp", true }, @@ -132895,12 +152923,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x.io", true }, { "x.sb", true }, { "x.st", true }, + { "x001.org", true }, { "x00228.com", true }, { "x00701.com", true }, { "x00708.com", false }, { "x00738.com", true }, { "x00776.com", true }, { "x00786.com", false }, + { "x0e.nl", true }, { "x0r.be", true }, { "x0r.link", true }, { "x0rg.org", true }, @@ -132908,6 +152938,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x13.net", true }, { "x1616.tk", true }, { "x17.cafe", true }, + { "x17.ink", false }, { "x2d2.de", false }, { "x2oe.com", true }, { "x2ox.com", true }, @@ -132916,13 +152947,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x3803.com", true }, { "x3816.com", true }, { "x3828.com", true }, - { "x3m.fr", true }, { "x3x.tc", true }, + { "x44.at", true }, + { "x500658.com", true }, { "x509.io", true }, { "x5197.co", true }, { "x58f.com", true }, { "x58p.com", true }, { "x58t.com", true }, + { "x58v.com", true }, { "x5901.com", false }, { "x5902.com", true }, { "x5903.com", false }, @@ -132932,13 +152965,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x5907.com", true }, { "x5908.com", false }, { "x5910.com", false }, - { "x59888.com", true }, - { "x59988.com", true }, + { "x59988.com", false }, { "x5x.host", true }, { "x6.nl", true }, + { "x61.sh", true }, { "x64architecture.com", true }, { "x6729.co", true }, - { "x69.biz", true }, { "x6957.co", true }, { "x7008.com", false }, { "x7713.com", false }, @@ -132957,11 +152989,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x77pp.com", false }, { "x77qq.com", false }, { "x77ww.com", false }, - { "x7plus.com", true }, - { "x81365.com", true }, + { "x7sevenusa.com", true }, { "x81vv.com", true }, { "x82365.com", true }, { "x86.co.kr", true }, + { "x90.im", true }, { "x9016.com", true }, { "x9297.co", true }, { "x9721.com", false }, @@ -132970,7 +153002,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "x98y.com", true }, { "x98z.com", true }, { "xa.search.yahoo.com", false }, - { "xa1.uk", true }, + { "xa1.uk", false }, + { "xa8.net", true }, { "xab199.com", true }, { "xab678.com", true }, { "xaba.tk", true }, @@ -132986,33 +153019,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xalima.gq", true }, { "xamax.co.uk", true }, { "xampusolid.cat", true }, - { "xanadu-auto.cz", true }, - { "xanadu-catering.cz", true }, - { "xanadu-golf.cz", true }, - { "xanadu-taxi.cz", true }, - { "xanadu-trans.cz", true }, + { "xanalys.org", true }, { "xanderbron.tech", true }, + { "xandercorvuspornstar.com", true }, + { "xanhdecor.com", true }, { "xanny.family", true }, { "xantec.com.my", true }, - { "xanthitoday.gr", true }, + { "xanthipolis.gr", true }, { "xanthopoulos.me", true }, { "xants.de", true }, { "xanyl.de", true }, { "xanzhu.com", true }, { "xarangallomangallo.tk", true }, + { "xarardheere.com", true }, { "xarmenta.tk", true }, - { "xashayar.ir", true }, + { "xarxanet.org", true }, { "xatr0z.org", false }, { "xav.ie", true }, { "xaver.cash", true }, - { "xaver.su", true }, + { "xaver.exchange", true }, { "xavi.re", true }, { "xavier.is", true }, { "xavierarroyo.tk", true }, { "xaviermalisse.tk", true }, - { "xavierxu.com", true }, { "xavio-design.com", true }, { "xavio.in", true }, + { "xavy.fr", true }, { "xaxax.ru", true }, { "xayah.net", true }, { "xaydungnamcuong.com", true }, @@ -133024,13 +153056,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xb058.com", true }, { "xb1001.com", true }, { "xb2002.com", true }, - { "xb201.com", true }, + { "xb201.com", false }, { "xb3008.com", true }, { "xb306.com", true }, - { "xb380.com", true }, { "xb3888.com", true }, { "xb6008.com", true }, - { "xb601.com", true }, + { "xb601.com", false }, { "xb6610.com", true }, { "xb6616.com", true }, { "xb6632.com", true }, @@ -133041,7 +153072,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xb6673.com", true }, { "xb6676.com", true }, { "xb6679.com", true }, - { "xb6680.com", true }, { "xb6683.com", true }, { "xb6692.com", true }, { "xb6696.com", true }, @@ -133056,51 +153086,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xb8006.com", true }, { "xb8018.com", true }, { "xb836.com", true }, - { "xb851.com", true }, + { "xb851.com", false }, { "xb852.com", true }, - { "xb853.com", true }, - { "xb859.com", true }, + { "xb853.com", false }, + { "xb859.com", false }, { "xb8606.com", true }, { "xb862.com", true }, { "xb865.com", true }, { "xb871.com", true }, - { "xb872.com", true }, + { "xb872.com", false }, { "xb873.com", true }, - { "xb8801.com", true }, - { "xb8806.com", true }, - { "xb8808.com", true }, + { "xb8806.com", false }, { "xb8861.com", true }, - { "xb891.com", true }, - { "xb893.com", true }, + { "xb891.com", false }, + { "xb893.com", false }, { "xb896.com", true }, { "xb9009.com", true }, - { "xb901.com", true }, + { "xb901.com", false }, { "xb906.com", true }, { "xb913.com", true }, - { "xb917.com", true }, { "xb925.com", true }, - { "xb927.com", true }, - { "xb935.com", true }, - { "xb936.com", true }, + { "xb927.com", false }, + { "xb935.com", false }, + { "xb936.com", false }, { "xb937.com", true }, - { "xb953.com", true }, + { "xb953.com", false }, { "xb957.com", true }, { "xb961.com", true }, { "xb962.com", false }, { "xb965.com", false }, { "xb967.com", true }, - { "xb971.com", true }, + { "xb971.com", false }, { "xb972.com", true }, - { "xb976.com", true }, + { "xb976.com", false }, { "xb980.com", true }, { "xb982.com", true }, - { "xb983.com", true }, + { "xb983.com", false }, { "xbanner.tk", true }, { "xbb.hk", true }, { "xbb.li", true }, { "xbc.nz", true }, + { "xbdm.fun", true }, { "xbdmov.com", true }, { "xbertschy.com", true }, + { "xbet104.com", true }, + { "xbet106.com", true }, + { "xbetkr.com", true }, { "xbigzmedia.tk", true }, { "xbjt11.com", true }, { "xbjt2.com", true }, @@ -133110,10 +153141,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xbjt666.com", true }, { "xbjt77.com", true }, { "xblau.com", true }, - { "xbookcn.com", true }, - { "xbookcn.net", true }, + { "xbortov.com", true }, + { "xbox", true }, { "xbox-mag.net", true }, { "xboxachievements.com", true }, + { "xboxdynasty.de", true }, + { "xboxplay.games", true }, { "xbrl.online", true }, { "xbrlsuccess.appspot.com", true }, { "xbros.cz", true }, @@ -133146,9 +153179,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xbyl86.com", true }, { "xbyl89.com", true }, { "xbyl91.com", true }, + { "xc01.co", true }, + { "xc02.co", true }, + { "xc03.co", true }, + { "xc06.co", true }, + { "xc07.co", true }, + { "xc08.co", true }, + { "xc09.co", true }, + { "xc12.co", true }, + { "xc15.co", true }, { "xc9988.cc", true }, + { "xcatalogo.com.mx", false }, + { "xce.pl", true }, { "xceedgaming.com", true }, - { "xcentricmold.com", false }, { "xchangeinfo.com", true }, { "xcharge.uk", true }, { "xchimera.com", true }, @@ -133159,7 +153202,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xcompany.one", true }, { "xcraftsumulator.ru", true }, { "xcspy.org", true }, - { "xcvb.xyz", true }, + { "xcupidon.com", true }, + { "xcw888.cc", true }, + { "xcw8886.net", true }, + { "xcw8888.net", true }, + { "xcw8889.net", true }, { "xcxmiku.com", false }, { "xd.cm", true }, { "xd.gd.cn", true }, @@ -133169,17 +153216,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xdos.io", true }, { "xdtag.com", true }, { "xdty.org", true }, + { "xduce.com", true }, { "xebeche.nl", true }, + { "xebecinc.com", true }, { "xecure.zone", true }, { "xecureit.com", true }, { "xedap24h.com", true }, + { "xeditpro.com", true }, { "xeerpa.com", true }, { "xeforce.com", true }, { "xeggex.com", true }, + { "xehopdongmuine.vn", true }, { "xehost.com", true }, { "xeiropraktiki.gr", true }, { "xelesante.jp", true }, - { "xemod.pl", true }, + { "xencrystal.me", true }, { "xenfo.ro", true }, { "xenical-online.ga", true }, { "xenical-online.tk", true }, @@ -133188,6 +153239,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xenicalorlistat.tk", true }, { "xenicalpills.tk", true }, { "xenocide.tk", true }, + { "xenomedia.nl", true }, { "xenomorph.tk", true }, { "xenon.cloud", true }, { "xenoncloud.net", true }, @@ -133201,20 +153253,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xenrox.net", true }, { "xentho.net", true }, { "xentox.com", true }, - { "xeonlab.com", true }, { "xeonlab.de", true }, - { "xeoxaz.net", true }, { "xerbisworks.com", true }, - { "xerbo.net", false }, { "xerdeso.tk", true }, { "xerezdeportivo.tk", true }, { "xerkus.pro", true }, - { "xerownia.eu", false }, + { "xerownia.eu", true }, { "xertainty.com", true }, { "xertainty.de", true }, { "xeryus.nl", true }, { "xess.co.uk", true }, - { "xetnghiemadndanang.vn", true }, { "xetown.com", true }, { "xevnet.com", true }, { "xevolkswagen.com", true }, @@ -133223,26 +153271,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xfd3.de", true }, { "xfinityapparel.com", true }, { "xfirma.pl", true }, - { "xfive.de", true }, { "xfix.pw", true }, { "xford.tech", true }, { "xfrag-networks.com", true }, + { "xftadalafil.com", true }, { "xftp.ml", true }, { "xfzhao.com", true }, { "xgadget.de", true }, { "xgame.com.tr", true }, - { "xgames.plus", true }, { "xgameshst.com", true }, { "xgclan.com", true }, { "xgeni.us", true }, { "xgn.es", true }, - { "xgndx.ru", true }, { "xgp.pl", true }, { "xgpu.deals", true }, + { "xgreatben.blog", true }, { "xgys.net", false }, { "xgzepto.cn", true }, + { "xh.ax", true }, { "xh.nu", false }, { "xh7eee.com", true }, + { "xhamiadituria.com", true }, { "xhanster.gq", true }, { "xhcmnews.com", true }, { "xhibitran.tk", true }, @@ -133250,9 +153299,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xhmikosr.io", true }, { "xho.me", true }, { "xi.ht", true }, + { "xia.com", true }, { "xia.de", true }, { "xia100.xyz", true }, { "xiahdeh.com", false }, + { "xiai.cf", true }, + { "xiai.ga", true }, + { "xiai.ml", true }, { "xiamenshipbuilding.com", true }, { "xiamuzi.com", true }, { "xiangblog.com", true }, @@ -133262,25 +153315,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xiao-sheng.gq", true }, { "xiaobai.pro", false }, { "xiaobude.cn", true }, - { "xiaocg.xyz", false }, + { "xiaocg.xyz", true }, { "xiaodingyi.cn", true }, - { "xiaofengsky.com", false }, { "xiaohui.love", true }, { "xiaojiyoupin.com", true }, { "xiaolanglang.net", true }, { "xiaolong.link", true }, - { "xiaolt.net", true }, { "xiaomao.tk", true }, { "xiaomibarato.com", true }, + { "xiaomihubs.com", true }, { "xiaomionline24.pl", true }, { "xiaoneijun.cn", true }, { "xiaoneimao.cn", false }, { "xiaoniaoyou.com", false }, { "xiaoqiang.blog", true }, + { "xiaowangshen.com", true }, { "xiaowutou.com", true }, { "xiaoxia.li", true }, { "xiaoyu.net", true }, - { "xiaoze.me", true }, + { "xiaoyy.org", true }, + { "xiaozonglin.cn", true }, { "xiarain.com", true }, { "xiashali.me", true }, { "xiaxuejin.cn", true }, @@ -133289,6 +153343,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xice.cf", true }, { "xice.wang", true }, { "xicreative.net", true }, + { "xido.online", true }, { "xiecongan.org", true }, { "xier.ch", true }, { "xif.at", true }, @@ -133298,13 +153353,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xilef.org", true }, { "xilegames.com", true }, { "xilkoi.net", true }, + { "xillimite.com", true }, + { "xilnex.com", true }, { "xilo.net", true }, { "ximes.com", true }, { "ximeshosted.com", true }, { "ximg.co", true }, - { "ximiko.eus", true }, { "ximware.com", true }, { "xin365.com", true }, + { "xinanwork.com", true }, { "xinbo010.com", true }, { "xinbo016.com", true }, { "xinbo018.com", true }, @@ -133417,10 +153474,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xinbo609.com", true }, { "xinbo610.com", true }, { "xinbo676.com", true }, - { "xinebf.com", true }, + { "xinebf.com", false }, { "xing.ml", true }, - { "xingyu1993.cn", true }, - { "xingzuozixun.com", true }, + { "xingai.ml", true }, { "xinlandm.com", true }, { "xinmeiti168.cn", true }, { "xinmeiti365.cn", true }, @@ -133429,58 +153485,64 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xinpujing200.com", false }, { "xinpujing518.com", false }, { "xinpujing918.com", false }, - { "xinsane.com", true }, { "xinshanla.com", true }, - { "xinu.xyz", true }, { "xinxeta.es", true }, { "xinxin.pl", true }, { "xinyazhang.com", true }, { "xinyezx.com", true }, { "xinyitour.tw", true }, { "xio.moe", true }, + { "xion.nu", true }, { "xiphwork.de", true }, { "xiqonline.com", true }, - { "xirion.net", true }, { "xisu.com", true }, { "xitin.tk", true }, + { "xiufe.ng", true }, { "xiufeng.de", true }, { "xiufeng.nl", true }, { "xiumu.org", true }, - { "xiuxiumh01.cc", true }, - { "xiuxiumh02.cc", true }, + { "xiurenwang.co", true }, + { "xiuxiu.cf", true }, + { "xiuxiu.ga", true }, + { "xiuxiu.gq", true }, + { "xiuxiu.ml", true }, + { "xiuxiumh01.cc", false }, + { "xiuxiumh02.cc", false }, { "xixi.com", true }, { "xiyu.com", true }, { "xjd.vision", true }, { "xjf6.com", true }, { "xjjeeps.com", true }, { "xjpvictor.info", true }, + { "xjtu.live", true }, + { "xjtu.love", true }, + { "xjtu.men", true }, { "xjtv.com", true }, { "xjysilicone.com", true }, { "xkblog.xyz", true }, { "xkcd.pw", true }, - { "xkeyc.com", true }, { "xkviz.net", true }, { "xkww3n.cyou", true }, { "xkwy2018.cn", true }, + { "xkwy2018.com", true }, { "xkylee.com", true }, + { "xl-porn.com", true }, { "xlan.be", true }, { "xlange.com", true }, { "xlaw.com.br", true }, + { "xlbnas.cafe", true }, { "xldl.ml", true }, { "xlem.cn", true }, - { "xlfblog.com", false }, - { "xlfilippou.com", true }, { "xlink.com.pl", true }, { "xlmnews.today", true }, + { "xlnaudio.com", true }, { "xloffice.se", true }, { "xloud.cf", true }, { "xloutdoor.se", true }, { "xlribbon.ml", true }, - { "xlshop.be", true }, + { "xlrsecurity.com", true }, { "xlstat.com", true }, { "xluxes.jp", true }, - { "xlyingyuan.com", false }, - { "xm.digital", true }, { "xm1s.life", true }, { "xmag.pl", true }, { "xmanshow.tk", true }, @@ -133489,64 +153551,77 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xmdhs.top", true }, { "xmediabigz.tk", true }, { "xmediazxy.tk", true }, - { "xmedius.ca", false }, - { "xmedius.eu", true }, { "xmenrevolution.com", true }, - { "xmgspace.me", true }, + { "xmessy.com", true }, { "xminds.net", true }, + { "xmisystems.com", true }, { "xmiui.com", true }, - { "xmlbeam.org", true }, { "xmlseo.ru", true }, - { "xmp3.net", true }, - { "xmpp.dk", false }, + { "xmnr.net", true }, { "xmr.wiki", true }, { "xmusic.live", true }, { "xmv.cz", true }, { "xmyy.com", true }, { "xn------7cdabibmbihbgykn8elfdbfgbeqxmlc3a.tk", true }, { "xn------7cdbfcbc0ab6akhadmzphmbibhebcc7b0ahshon.tk", true }, + { "xn-----6kcamlijegc9ea1aw4ivc.xn--p1ai", true }, { "xn-----6kcbb0cahbiskdv1bcj5c7g.tk", true }, { "xn-----6kcbjcgl1atjj7aadbkxfxfe7a9yia.xn--p1ai", true }, { "xn-----7kcbhdpr0asllefq0bjk.com", true }, { "xn-----7kcgqqeagtqecgbhc3aginaie1hwh.tk", true }, - { "xn-----7kckegeaw8apdfn0d9a0j.xn--p1ai", false }, + { "xn-----7kckegeaw8apdfn0d9a0j.xn--p1ai", true }, { "xn-----8kcdcb4bffibpgkpbdbcc5cedihs.tk", true }, { "xn-----8kcgbo2bmdgkdacthvjf.xn--p1ai", true }, { "xn-----elcblfoyosbv5mwb.xn--p1ai", true }, + { "xn----4tb0c.xn--p1ai", true }, { "xn----7sbabexseekfke3cifnf3b4r.tk", true }, { "xn----7sbabrwauchevq0ba.xn--p1ai", true }, { "xn----7sbagi4akcjwfceu2aoi5e0eh.xn--p1ai", true }, { "xn----7sbarcdvrtr1be.org", true }, { "xn----7sbbagp2bcfwdeee1afm.xn--p1ai", true }, { "xn----7sbbak4cyaoedjf3m.xn--p1ai", true }, + { "xn----7sbbfsshjvgyde8g3c.xn--p1ai", true }, { "xn----7sbbgbr0arxb4a4exa.com.ua", true }, { "xn----7sbbhzfbdo6dnf.tk", true }, { "xn----7sbbncaddj9a9b6am9p.tk", true }, { "xn----7sbbq5b0a1c.com", true }, + { "xn----7sbc3abak3afteia.xn--p1ai", true }, { "xn----7sbedlbhv2azb6a.xn--j1amh", true }, { "xn----7sbfl2alf8a.xn--p1ai", true }, { "xn----7sbkofbbj4akz.xn--80asehdb", true }, { "xn----7sblrfhjjgq8g.xn--p1ai", true }, { "xn----7sbmucgqdbgwwc5e9b.xn--p1ai", true }, - { "xn----7sbq4auch5b4b.xn--p1ai", true }, { "xn----8hcdn2ankm1bfq.com", true }, + { "xn----8sbadsuaby8bb4a7cwh.xn--p1ai", true }, + { "xn----8sbdo7cb0b.xn--p1ai", true }, + { "xn----8sbfkobhgmxahfmmhe8b8c6ff.xn--p1ai", true }, + { "xn----8sbggtw.xn--p1ai", false }, { "xn----dtbfemantkhdczc.tk", true }, { "xn----dtbfemmqjdddczc.tk", true }, { "xn----dtbhcpoeofgcvoic1s.xn--p1ai", true }, { "xn----etbqa2alia5i.tk", true }, - { "xn----itbkhngkr2a.xn--p1ai", false }, + { "xn----htbhdmyci.xn--p1ai", true }, + { "xn----itbanmp3ae.xn--p1ai", true }, + { "xn----itbkhngkr2a.xn--p1ai", true }, + { "xn----jtbiihtkil8b4e.xn--p1ai", true }, + { "xn----mtbckubhv.xn--p1ai", true }, { "xn----ncfb.ws", true }, + { "xn----otbabmp3ae.xn--p1ai", true }, { "xn----rtbbavlecj.xn--p1ai", true }, { "xn----ylba7abgd9bnh0e.xn--qxa6a", true }, + { "xn----ymcbah8a8de3hvarv.com", true }, { "xn---35-6cdk1dnenygj.xn--p1ai", true }, - { "xn--0iv967ab7w.xn--rhqv96g", false }, + { "xn--061az77a.xn--fiqs8s", true }, + { "xn--061az77a.xn--fiqz9s", true }, { "xn--0kq33cbsi8bk6d417b.com", true }, { "xn--0kq33cz5c8wmwrqqw1d.com", true }, + { "xn--1-9u7ey2dtz3c.com", false }, { "xn--12c3bpr6bsv7c.com", true }, { "xn--12carbp3gycugf9k9a.xn--o3cw4h", true }, { "xn--12cg9bnm5ci2ag9hbcs17a.com", true }, { "xn--13-6kc0bufl.xn--p1ai", true }, { "xn--15tx89ctvm.xn--6qq986b3xl", true }, + { "xn--1985-43d6eta0a4g2a.xn--p1ai", true }, { "xn--1yst51avkr.ga", true }, { "xn--1yst51avkr.xn--6qq986b3xl", true }, { "xn--230ap0xpa.com", true }, @@ -133556,35 +153631,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--24-glcia8dc.xn--p1ai", true }, { "xn--2sxs9ol7o.com", true }, { "xn--36-dlcdun7abo4a.xn--p1ai", true }, + { "xn--3bt625flzps8a.com", true }, + { "xn--3btta.xn--fiqs8s", true }, + { "xn--3btta.xn--fiqz9s", true }, { "xn--3js556addp80q.cn", true }, { "xn--3lqp21gwna.cn", true }, { "xn--3st814ec8r.cn", true }, { "xn--3stv82k.hk", true }, { "xn--3stv82k.tw", true }, + { "xn--41a.ml", true }, { "xn--43-6kc4be0fbz.xn--p1ai", true }, + { "xn--45i.tk", true }, + { "xn--4brt03c.xn--fiqs8s", true }, { "xn--4brt03c.xn--io0a7i", true }, { "xn--4gq45ay49m.com", true }, { "xn--4gq62f52gdss.com", true }, { "xn--4kro7fswi.xn--6qq986b3xl", true }, { "xn--4pv80kkz8auzf.jp", true }, + { "xn--4qs85t91oq9e.com", true }, { "xn--54-6kc3btfht.xn--p1ai", true }, + { "xn--55q36pba3495a.com", true }, { "xn--57h.ml", false }, { "xn--5dbkjqb0d.com", true }, { "xn--5dbkjqb0d.net", true }, + { "xn--6btn.xn--fiqs8s", true }, + { "xn--6btn.xn--fiqz9s", true }, { "xn--6kru6im1lczj.com", true }, - { "xn--6m1a86p.com", true }, { "xn--6o8h.cf", true }, { "xn--6qq52xuogcjfw8pwqp.ga", true }, { "xn--6qq62xsogfjfs8p1qp.ga", true }, - { "xn--6x6a.life", true }, { "xn--72c1ar3gd6fvd.xn--o3cw4h", true }, { "xn--78je2j8a.cafe", true }, - { "xn--79q87uvkclvgd56ahq5a.net", true }, { "xn--7ca.co", true }, + { "xn--7dvy22i.com", false }, { "xn--7or43h.jp", true }, + { "xn--7tq776cdf4a.xn--fiqs8s", true }, + { "xn--7tq776cdf4a.xn--fiqz9s", true }, { "xn--7tq798c.ml", true }, + { "xn--7tqp36c113a.xn--fiqs8s", true }, + { "xn--7tqp36c113a.xn--fiqz9s", true }, { "xn--7xa.google.com", true }, { "xn--80a1a8b.tk", true }, + { "xn--80a5ai3dd.xn--d1at.xn--90a3ac", true }, { "xn--80a6a1b.tk", true }, { "xn--80a6aq.tk", true }, { "xn--80aaa3bgsbbm.tk", true }, @@ -133593,18 +153681,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--80aaacqdkdv7b0a.tk", true }, { "xn--80aaagbtu3bfbullc1c.xn--80asehdb", true }, { "xn--80aaaptltzqd.tk", true }, - { "xn--80aabn5d9h.xn--90a3ac", true }, { "xn--80aacgbiy5akmx.xn--e1a4c", true }, { "xn--80aae7aeoh.xn--p1ai", true }, { "xn--80aafaxhj3c.xn--p1ai", true }, { "xn--80aahvz2a9a.xn--p1acf", true }, { "xn--80aanbkcescrdedmxzcl4pmc.xn--p1acf", true }, { "xn--80aapmgginxs3d.xn--p1ai", true }, + { "xn--80aayajj8aic.xn--p1ai", true }, { "xn--80ab1bse.tk", true }, { "xn--80abb4bp.tk", true }, { "xn--80abmghlx4ajd.tk", true }, { "xn--80ace6be.tk", true }, { "xn--80achgm7d.tk", true }, + { "xn--80ack7b.xn--p1ai", true }, { "xn--80acqgkhcn.tk", true }, { "xn--80acubre5k.tk", true }, { "xn--80adb4aeode.xn--p1ai", true }, @@ -133617,19 +153706,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--80aejhvi0at.xn--90ais", true }, { "xn--80aejljbfwxn.xn--p1ai", true }, { "xn--80affa6ai0a.tk", true }, + { "xn--80afvgfgb0aa.xn--p1ai", true }, { "xn--80ah4f.xn--p1ai", true }, - { "xn--80ahccom2a2c.xn--p1ai", true }, { "xn--80ahclcaoccacrhfebi0dcn5c1jh.xn--p1ai", true }, - { "xn--80ahcnlhmh.xn--p1ai", true }, { "xn--80ahjdhy.tk", true }, { "xn--80ahnefiifo0g.xn--p1ai", true }, { "xn--80aihgal0apt.xn--p1ai", true }, + { "xn--80ajuk.xn--p1ai", true }, { "xn--80akjfhoqm2h2a.xn--p1ai", true }, { "xn--80aknjgrv.tk", true }, + { "xn--80aleen8i.site", true }, { "xn--80ancacgircb8q.xn--p1ai", true }, { "xn--80anogxed.xn--p1ai", true }, { "xn--80aocgsfei.xn--p1ai", true }, { "xn--80aod6g.tk", true }, + { "xn--80apbaibrczvs.xn--p1ai", true }, { "xn--80axad8esa.tk", true }, { "xn--80azep.tk", true }, { "xn--8bi.gq", false }, @@ -133645,12 +153736,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--90aizn.tk", true }, { "xn--90amdjbi3c0ec.xn--p1ai", true }, { "xn--938h.st", true }, + { "xn--94q57lcvpw50b.com", true }, { "xn--95q32l0t6b9cb17l.cn", true }, + { "xn--95qy23o.xn--fiqs8s", true }, + { "xn--95qy23o.xn--fiqz9s", true }, { "xn--98jm6m.jp", true }, { "xn--9kq.eu.org", true }, { "xn--9kqw7o.com", true }, { "xn--9wy4jw3llnh.com", true }, { "xn--9xa.fun", true }, + { "xn--afd-brhl-c6a.de", true }, + { "xn--afd-hrth-b6a.de", true }, + { "xn--afdhrth-q2a.de", true }, { "xn--alcaiz-zwa.tk", true }, { "xn--allgu-biker-o8a.de", true }, { "xn--andre-is--yz4h8t9azf9596c4rigl8h.moe", true }, @@ -133671,21 +153768,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--berufsprfung-kinsthetik-b8b50d.ch", true }, { "xn--berwachungspaket-izb.at", true }, { "xn--betwinnerespaa-2nb.com", true }, + { "xn--bjugrd-lua.io", true }, { "xn--blusastlacotalpeas-20b.online", true }, { "xn--bm3bl9r.com", true }, { "xn--bognsroad-j3a.dk", true }, { "xn--brneruhr-0za.ch", true }, { "xn--bruno-hnel-kcb.de", false }, + { "xn--bwx.xn--fiqs8s", true }, + { "xn--bwx.xn--fiqz9s", true }, { "xn--c-xga.de", true }, { "xn--c1aaulbdc.tk", true }, { "xn--c1adqibibm8i.com", true }, { "xn--c1aehtaetb.xn--p1ai", true }, { "xn--c1aid4ap8e.tk", true }, { "xn--c1aolabgdj.tk", true }, + { "xn--c5w032d4vi.cn", true }, { "xn--c5w032d4vi.com", true }, { "xn--c5w032d4vi.xn--fiqs8s", true }, { "xn--c5w032d4vi.xn--fiqz9s", true }, { "xn--c5w27q.ml", true }, + { "xn--c5wy5c025b.cn", true }, { "xn--c5wy5c025b.xn--fiqs8s", true }, { "xn--c5wy5c025b.xn--fiqz9s", true }, { "xn--cck4ax91r.com", true }, @@ -133698,12 +153800,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--cisowcy-pjb5t.pl", true }, { "xn--contrasea-s6a.cl", true }, { "xn--crystal-9e7ua.icu", true }, + { "xn--cysy13an3a5z7c.xyz", true }, { "xn--d1aca2a5al.tk", true }, - { "xn--d1acalaltdk2d.xn--p1ai", true }, { "xn--d1acfdr6h.com.ua", true }, - { "xn--d1acj9c.xn--90ais", false }, + { "xn--d1acj9c.xn--90ais", true }, + { "xn--d1acmf9g.xn--p1ai", true }, { "xn--d1aczdsdn4d.tk", true }, + { "xn--d1afcjuch.xn--p1ai", true }, { "xn--d1awi.tk", true }, + { "xn--das-anhngerzentrum-rtb.at", true }, { "xn--dcko6fsa5b1a8gyicbc.biz", true }, { "xn--dckya4a0bya6x.com", true }, { "xn--dckya4a0bya6x.jp", true }, @@ -133724,21 +153829,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--e--4h4axau6ld4lna0g.com", true }, { "xn--e--ig4a4c3f6bvc5et632i.com", true }, { "xn--e--k83a5h244w54gttk.xyz", true }, + { "xn--e1aa7abbg.xn--p1ai", true }, { "xn--e1aaavheew.xn--p1ai", true }, { "xn--e1aaavheewr.xn--p1ai", true }, { "xn--e1aahuqbk6f.tk", true }, { "xn--e1aajhbc0amdp4byf.xn--p1ai", true }, + { "xn--e1aajkmzd.xn--p1ai", true }, { "xn--e1adlfhcdo7h.xn--p1ai", true }, + { "xn--e1afggpjhk3b1e.xn--p1ai", true }, { "xn--e1agokg6a9a.tk", true }, { "xn--e1aoahhqgn.xn--p1ai", true }, { "xn--e1aoddhq.gq", true }, + { "xn--e1awbbf4g.xn--p1ai", true }, { "xn--e1tvpw18d.com", true }, { "xn--e1tx9l9xc.xn--6qq986b3xl", true }, { "xn--ecki0cd0bu9a4nsjb.com", true }, + { "xn--ee-zja.de", true }, { "xn--eebao6b.com", true }, { "xn--eebao6b.net", true }, { "xn--eglujemy-23b.net", true }, + { "xn--ehq091c7jk8qq.com", true }, { "xn--ehqw04eq6e.jp", true }, + { "xn--ehqy0ag27f64i.xyz", true }, { "xn--elsignificadodesoar-c4b.com", true }, { "xn--eo5aaa.eu.org", true }, { "xn--erban-e9b.ro", true }, @@ -133748,6 +153860,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--ettbttreinternet-ynb.se", true }, { "xn--ex-1b4auld4fn3u3ck2069g.com", true }, { "xn--f1ai7a.tk", true }, + { "xn--f5q52dc2lgtg336a4xoyxh2oj.tw", true }, { "xn--f9jh4f4b4993b66s.tokyo", true }, { "xn--fakovcov-gza74b.eu", true }, { "xn--fakovec-k6a.eu", true }, @@ -133760,8 +153873,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--fp8hm6b.ws", true }, { "xn--frankierknig-djb.de", true }, { "xn--frauenrztin-wedel-vqb.de", true }, + { "xn--frderer-n2a.de", true }, { "xn--fretagsfinanser-8sb.se", true }, { "xn--fs5ak3f.com", true }, + { "xn--g1abhqbgs.xn--p1ai", true }, { "xn--gfrr-7qa.li", true }, { "xn--gfrrli-yxa.ch", true }, { "xn--ggle-qoaa.com", true }, @@ -133770,10 +153885,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--grnderlehrstuhl-0vb.de", true }, { "xn--grnstrm-r1ae.nu", true }, { "xn--gs8h.eu.org", true }, - { "xn--gstehaus-leipzig-vnb.de", false }, { "xn--gu1a.moe", true }, + { "xn--h-1ga.net", true }, + { "xn--h1aaahdlb4aki4h.xn--p1ai", true }, + { "xn--h1aaakmzd.xn--p1ai", true }, { "xn--h1aarew7ct.tk", true }, - { "xn--heilendehnde-ocb.de", true }, + { "xn--h1ahbcdb8g.xn--p1ai", true }, + { "xn--h7t906ca.xn--fiqs8s", true }, + { "xn--h7t906ca.xn--fiqz9s", true }, { "xn--helhetsframtrdande-xtb.se", true }, { "xn--hfk-allgu-schwaben-stb.de", true }, { "xn--hgbk4a00a.com", true }, @@ -133788,38 +153907,46 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--ionunica-29c.ro", true }, { "xn--irr.xn--fiqs8s", true }, { "xn--is8h6d.gq", false }, + { "xn--itt6x.xn--fiqs8s", true }, + { "xn--itt6x.xn--fiqz9s", true }, + { "xn--itts1a.xn--fiqs8s", true }, + { "xn--itts1a.xn--fiqz9s", true }, { "xn--j1afcdm4f.xn--p1ai", true }, - { "xn--j1agcso.xn--p1ai", true }, { "xn--j1aoca.xn--p1ai", true }, { "xn--j4h.cf", true }, { "xn--j8se.com", true }, { "xn--jkaappi-5waa.fi", true }, { "xn--jp8hx8f.ws", true }, + { "xn--jpqq82a3vsyhg.xyz", true }, { "xn--kckd0bd4a8tp27yee2e.com", true }, + { "xn--kcrx49b0jelsq.xyz", true }, { "xn--keditr-0xa.biz", true }, { "xn--kinsthetik-s5a.ch", true }, { "xn--kkcon-fwab.nz", true }, { "xn--kl-oja.is", true }, { "xn--klmek-0sa.com", true }, + { "xn--klschs-wxa.de", true }, { "xn--koabr-jra.de", true }, - { "xn--kryptowhrungen-cib.com", true }, { "xn--ksse-5qa.fi", true }, - { "xn--ktha-kamrater-pfba.se", true }, + { "xn--ktha-kamrater-pfba.se", false }, { "xn--l3cb0bbcf6ezc4a7e.th", true }, { "xn--l8j6d.com", true }, + { "xn--l8jer.moe", true }, + { "xn--l8js6h.moe", true }, { "xn--l8js6h476m.xn--q9jyb4c", true }, { "xn--labanskllermark-ftb.se", true }, - { "xn--lckwg.net", true }, { "xn--lfv405c.com", true }, + { "xn--lk1a.moe", true }, { "xn--ll-yka.de", true }, { "xn--lna-2000-9za.nu", true }, { "xn--lna-4000-9za.nu", true }, - { "xn--lnakuten-9za.com", true }, + { "xn--locaaomoema-p9a.com.br", true }, + { "xn--lodhs1ad.xn--node", true }, { "xn--losolivareos-jhb.com", true }, { "xn--love-un4c7e0d4a.com", true }, - { "xn--lsaupp-iua.se", true }, - { "xn--lskieradio-3gb44h.pl", true }, { "xn--lti-3qa.lv", true }, + { "xn--lzs398g.xn--fiqs8s", true }, + { "xn--lzs398g.xn--fiqz9s", true }, { "xn--m1aba.tk", true }, { "xn--m6t22d1b026i1odr9k.cn", true }, { "xn--m6to92j.xn--gmqw5a.xn--j6w193g", true }, @@ -133829,12 +153956,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--marn-8ra.eu", true }, { "xn--martnvillalba-zib.com", true }, { "xn--martnvillalba-zib.net", true }, + { "xn--mbius-jua.band", true }, { "xn--mein-kchenhelfer-ozb.de", true }, { "xn--mensenges-o1a8c.gq", true }, { "xn--mensengesss-t8a.gq", true }, { "xn--mentaltraining-fr-musiker-uwc.ch", true }, + { "xn--mercadonavideo-2nb.com", true }, + { "xn--mes55iczlylk.cc", true }, { "xn--mgbbh2a9fub.xn--ngbc5azd", false }, - { "xn--mgbg4a8cpdl.com", true }, { "xn--mgbmmp7eub.com", true }, { "xn--mgbpkc7fz3awhe.com", true }, { "xn--mgbqq.com", true }, @@ -133845,13 +153974,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--mitenlyttyt-s8aad6xg.fi", true }, { "xn--mitensaadatit-nfb1y.fi", true }, { "xn--mitensaadatyt-nfb2y.fi", true }, + { "xn--mlkky-jua.fr", true }, { "xn--mllerhesszimmerli-22b.ch", true }, + { "xn--mnich-7ua.de", true }, { "xn--mntsamling-0cb.dk", true }, { "xn--morrhret-e0a.se", true }, { "xn--myrepubic-wub.net", true }, { "xn--myrepublc-x5a.net", true }, - { "xn--n1aa2ab.com", true }, - { "xn--n1aeexs.net", false }, + { "xn--naade-dta.com", true }, { "xn--nbetcieczane-4ib.gen.tr", true }, { "xn--nicieri-b4a.ro", true }, { "xn--nidar-tib.org", true }, @@ -133860,7 +153990,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--niedlchelt-u5a.de", true }, { "xn--nordlicht-hrnum-jtb.de", true }, { "xn--nrrdetval-v2ab.se", true }, - { "xn--o-xfa.com", true }, + { "xn--nts.xn--fiqs8s", true }, + { "xn--nts.xn--fiqz9s", true }, { "xn--o38h.tk", true }, { "xn--o3ca2aced1cc7e5a1jc6h.com", true }, { "xn--o77hka.ga", true }, @@ -133868,6 +153999,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--oiqt18e8e2a.eu.org", true }, { "xn--oj-uu2c9c422w3mh.com", false }, { "xn--okra.xn--6qq986b3xl", true }, + { "xn--p2v.xn--fiqs8s", true }, + { "xn--p2v.xn--fiqz9s", true }, { "xn--p3t555glxhnwa.com", true }, { "xn--p8j9a0d9c9a.xn--q9jyb4c", true }, { "xn--pascal-klsch-cjb.de", true }, @@ -133877,17 +154010,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--pckl4ji.ml", true }, { "xn--pckqk6xk43lunk.net", true }, { "xn--pe-bka.ee", true }, + { "xn--petitetoile-gbb.com", true }, + { "xn--photovoltaik-berwachung-opc.de", true }, { "xn--pn1am9c.com", true }, { "xn--pq1a637b.xn--6qq986b3xl", true }, { "xn--prfontaine-c7a.name", true }, + { "xn--q2y08clzag4u.tw", true }, { "xn--q3cb3bxa0b7h.com", true }, { "xn--qckss0j.tk", true }, { "xn--qfun83b.ga", true }, + { "xn--qm1a.xn--fiqs8s", true }, + { "xn--qm1a.xn--fiqz9s", true }, { "xn--r77hya.ga", true }, { "xn--r8jzaf7977b09e.com", true }, + { "xn--rdiger-barney-wob.de", true }, { "xn--rdiger-kuhlmann-zvb.de", true }, { "xn--registriertesexualstraftter-ykc.de", true }, { "xn--rih.ml", true }, + { "xn--rl-wka.ch", true }, { "xn--rlcus7b3d.xn--xkc2dl3a5ee0h", true }, { "xn--roselire-60a.ch", false }, { "xn--roselire-60a.com", false }, @@ -133897,30 +154037,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--rt-cja.ie", true }, { "xn--rtter-kva.eu", true }, { "xn--ruanmller-u9a.com", true }, + { "xn--ruciski-6jb.pl", true }, { "xn--s-0fa.fi", true }, { "xn--s-1gaa.fi", true }, { "xn--s1r71tg0o30bxm52odlvspdop4b.cn", true }, - { "xn--saschamllers-bjb.de", true }, { "xn--sb-lka.org", true }, { "xn--schcke-yxa.de", true }, { "xn--schlerzeitung-ideenlos-ulc.de", true }, { "xn--schpski-c1a.de", true }, - { "xn--schsischer-christstollen-qbc.shop", true }, { "xn--schwedischezahnrztin-pzb.de", true }, + { "xn--seluksportshd-kgb.com", true }, { "xn--skmotoroptimering-zzb.site", true }, - { "xn--solidaritt-am-ort-yqb.de", true }, { "xn--spenijmazania-yhc.pl", true }, { "xn--spiraphnix-olb.xyz", true }, + { "xn--srbarhetsskanning-8qb.se", true }, { "xn--srenpind-54a.dk", true }, { "xn--strandhaus-hinter-der-dne-1wc.de", true }, + { "xn--stubbfrsning-uppsala-hzb.se", true }, { "xn--svezavaukuu-ulb08i.rs", true }, { "xn--sz8h.ml", true }, { "xn--t-oha.lv", true }, { "xn--t8j4aa4nkg1h9bwcvud.com", true }, { "xn--t8j4aa4nzg3a5euoxcwee.xyz", true }, { "xn--t8jo9k1b.com", true }, - { "xn--tagungssttte-usedom-owb.de", true }, - { "xn--tagungssttte-zinnowitz-84b.de", true }, + { "xn--t8qu4voqikh.com", true }, + { "xn--tatilgnleri-yhb.com", true }, { "xn--tftel-tom-q9a.de", true }, { "xn--tgstationen-x8a.se", true }, { "xn--thorme-6uaf.ca", true }, @@ -133932,7 +154073,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--u9jy16ncfao19mo8i.nagoya", true }, { "xn--uba.eu.org", true }, { "xn--ug8h.st", true }, - { "xn--uir160dxn2a.com", true }, + { "xn--uist1idrju3i.jp", true }, { "xn--ukasik-2db.pl", true }, { "xn--ukys-f6a.lt", true }, { "xn--underux-0za.eu", true }, @@ -133944,13 +154085,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--v6q426ishax2a.xyz", true }, { "xn--vck8crc010pu14e.biz", true }, { "xn--vck8crcu789ajtaj92eura.xyz", true }, + { "xn--vihrekeino-u5a.fi", true }, + { "xn--vwsv89g.xn--fiqs8s", true }, + { "xn--vwsv89g.xn--fiqz9s", true }, + { "xn--vwsw0b.xn--fiqs8s", true }, + { "xn--vwsw0b.xn--fiqz9s", true }, + { "xn--vwsw0b192f.xn--fiqs8s", true }, + { "xn--vwsw0b192f.xn--fiqz9s", true }, { "xn--w22a.jp", true }, { "xn--wby9t.xyz", false }, + { "xn--wcs69oyudj44b.xyz", true }, { "xn--whlefamilie-l8a.de", true }, + { "xn--wiateko-rjb3t.eu", true }, { "xn--woistdermlleimer-rzb.de", true }, { "xn--wp9ha.ws", true }, { "xn--wq9h.ml", false }, { "xn--xft85up3jca.ga", true }, + { "xn--xwqa8512b.eu.org", true }, { "xn--xz1a.jp", true }, { "xn--y-5ga.com", true }, { "xn--y3cac7d1d.xn--o3cw4h", true }, @@ -133970,40 +154121,48 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xn--zr9h.ga", true }, { "xn--zr9h.ml", true }, { "xn--zr9h.tk", true }, - { "xn5.de", true }, + { "xn--zsr042b.fun", true }, { "xnaas.info", true }, { "xnativi.pl", true }, { "xnet-x.net", true }, { "xnetwork.ml", true }, - { "xninja.xyz", true }, { "xniver.se", true }, { "xnix.tk", true }, - { "xno-sys.de", false }, + { "xnoe.moe", true }, + { "xnop.yt", true }, + { "xnopyt.com", true }, { "xnopyt.info", true }, + { "xnsir.com", true }, { "xntrik.wtf", true }, + { "xnu.kr", true }, + { "xnxxporns.com", true }, + { "xo.wtf", true }, { "xoan.cf", true }, { "xobotun.com", true }, { "xocc.cc", true }, { "xoda.pw", true }, - { "xogum.email", true }, { "xolotto.com", true }, { "xolphin.nl", true }, { "xombitgames.com", true }, { "xombitmusic.com", true }, { "xomyak.tk", true }, { "xone.cz", false }, - { "xonet.cz", true }, { "xonobixa.tk", true }, - { "xoommit.com", true }, + { "xoomenergy.com", true }, + { "xor.ai", true }, { "xor.cat", true }, + { "xor.tools", true }, + { "xorion.pl", true }, + { "xorm.io", true }, { "xormatic.com", true }, { "xosh.fr", true }, { "xotictrends.com", true }, { "xotika.tv", true }, + { "xoutpost.com", true }, { "xoxo.news", true }, + { "xp-ochrona.pl", true }, { "xp.ht", true }, { "xp.nsupdate.info", true }, - { "xpbytes.com", false }, { "xpd.se", true }, { "xpenology-fr.net", true }, { "xperiacode.com", true }, @@ -134015,6 +154174,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xpertmedia.ro", true }, { "xpertsunlimited.com", true }, { "xpetit.net", true }, + { "xpews.org", true }, { "xpg.jp", true }, { "xphelper.tk", true }, { "xpj090.com", true }, @@ -134041,11 +154201,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xploredundee.com", true }, { "xplozion.tk", true }, { "xpods.sg", true }, - { "xpornoizle.net", true }, { "xportxpert.com", true }, { "xposedornot.com", true }, - { "xposure.ae", true }, - { "xpremium.org", true }, + { "xpreflect.co.uk", true }, + { "xpremium.org", false }, { "xpressable.com", true }, { "xps-auto.com", true }, { "xps3dp.com", true }, @@ -134056,51 +154215,71 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xpsinnovation.com", true }, { "xpsnow.net", true }, { "xpsrobotics.com", true }, + { "xptrack.com", true }, + { "xptrackstaging.com", true }, { "xpwn.cz", false }, { "xq.com", true }, - { "xq55.com", true }, + { "xq6dtff.top", true }, + { "xqin.net", true }, { "xqk7.com", true }, { "xqwqx.com", true }, - { "xr1s.me", true }, - { "xrak.tk", true }, + { "xr5.exchange", true }, + { "xr5.me", true }, + { "xr5.mobi", true }, + { "xr5.systems", true }, + { "xr5.tech", true }, + { "xr5.technology", true }, + { "xr5exchange.com", true }, { "xrayreview.ml", true }, { "xrbox.me", true }, { "xrdd.de", true }, + { "xreverseporn.com", true }, { "xrg.cz", true }, { "xrippedhd.com", true }, + { "xrism.ro", true }, { "xrockx.de", true }, { "xrp.pp.ua", true }, { "xrpnews.info", true }, { "xrpscan.com", true }, - { "xrtasmania.earth", true }, { "xrwracing-france.com", true }, + { "xs2a.com", true }, { "xs2a.no", true }, { "xs4ever.org", true }, { "xsait.tk", true }, + { "xsave.ru", true }, { "xscancun.com", true }, { "xsden.info", true }, { "xsec.me", true }, { "xsenya74hram.tk", true }, { "xseries-forum.com", true }, { "xserownia.cloud", false }, - { "xserownia.com.pl", false }, - { "xserownia.eu", false }, + { "xserownia.com.pl", true }, + { "xserownia.eu", true }, { "xserownia.info", false }, - { "xserownia.net", false }, - { "xserownia.pl", false }, + { "xserownia.net", true }, + { "xserownia.pl", true }, + { "xsitedleads.com", true }, + { "xsmobile.de", true }, { "xsolla.com", true }, + { "xss.name", true }, { "xss.sk", true }, { "xssi.uk", true }, { "xsstime.nl", true }, { "xsteam.eu", true }, + { "xstorysnap.com", true }, { "xstreamable.com", true }, { "xsuper.net", true }, { "xsv.cn", true }, { "xsz.jp", true }, + { "xszys.com", false }, + { "xszys.pro", false }, { "xt.om", true }, { "xtaboo3d.com", true }, + { "xtalpi.com", true }, { "xtarget.ru", true }, { "xtechkr.com", true }, + { "xtechtecnologia.tec.br", true }, + { "xtianhe.com", false }, { "xtips.us", true }, { "xtom.africa", true }, { "xtom.al", true }, @@ -134162,14 +154341,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xtom.ru", true }, { "xtom.si", true }, { "xtom.sk", true }, + { "xtom.social", true }, { "xtom.su", true }, { "xtom.uk", true }, { "xtom.us", true }, { "xtom.wiki", true }, { "xtom.xyz", true }, - { "xtoob.com", true }, + { "xtorm.ro", true }, { "xtournois.com", true }, + { "xtra.net", true }, { "xtrainsights.com", true }, + { "xtralis.com", true }, { "xtravans.com", true }, { "xtreamfire.tk", true }, { "xtreme-cs.tk", true }, @@ -134184,28 +154366,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xts.bike", true }, { "xts3636.net", true }, { "xtspeeder.com", false }, + { "xttt.net", true }, { "xtu2.com", true }, { "xtzone.be", true }, { "xtzs6.vip", true }, { "xuab.net", true }, + { "xuan-hao.com", true }, + { "xuan.com.my", true }, { "xuancommagere.com", true }, { "xuanmeishe.net", false }, { "xuann.wang", true }, { "xubo666.com", true }, { "xuc.me", true }, { "xucha.ml", true }, + { "xueaiai.cf", true }, + { "xueaiai.com", true }, + { "xueaiai.ml", true }, { "xueanquan.com", true }, + { "xuecheng.com", true }, { "xuedianshang.com", true }, - { "xuehao.net.cn", true }, - { "xuehao.tech", true }, { "xuehuang666.cn", true }, { "xuesoska.ga", true }, + { "xuewen.ink", true }, + { "xuewen.me", true }, { "xuexi.icu", false }, { "xuexi.moe", true }, { "xuez.cc", true }, { "xujan.com", true }, { "xuming.studio", true }, { "xumm.me", true }, + { "xunmengdu.com", true }, { "xuntaosms.com", true }, { "xuntier.ch", true }, { "xurl.gq", true }, @@ -134217,7 +154407,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xvadimx.me", true }, { "xvaldezendocrino.com", true }, { "xvidyo.ga", true }, - { "xvii.pl", true }, { "xviimusic.com", true }, { "xvix.eu", true }, { "xvmmod.com", true }, @@ -134229,7 +154418,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xwfwrestling.tk", true }, { "xwm.ru", true }, { "xwndtq.xyz", true }, + { "xwnu.com", true }, { "xworder.tk", true }, + { "xwp.co", true }, { "xx.gl", true }, { "xx0r.eu", true }, { "xx6729.co", true }, @@ -134241,10 +154432,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xx9728.co", true }, { "xxdtl.com", true }, { "xxffo.com", true }, - { "xxiz.com", true }, { "xxl-bonus.tk", true }, + { "xxl.dk", true }, + { "xxl.fi", true }, + { "xxl.se", true }, { "xxl.tax", true }, - { "xxoo.best", true }, + { "xxlpen.eu", true }, + { "xxlsports.at", true }, + { "xxvv.loan", true }, { "xxx-fiction.com", true }, { "xxx-gays.com", true }, { "xxxarabgirls.com", true }, @@ -134252,43 +154447,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xxxfreepornclip.com", true }, { "xxxgr.net", true }, { "xxxite.me", true }, + { "xxxmoviesdot.com", true }, { "xxxomas.com", true }, { "xxxoopz.com", true }, + { "xxxporn-videos.com", true }, { "xxxpornohub.net", true }, { "xxxshades.com", true }, + { "xxxshemaleporn.com", true }, { "xxxsuper.net", true }, { "xxxteen.net", true }, + { "xxxtophd.com", true }, + { "xxxvideos-base.com", true }, + { "xxxvideos-tube.com", true }, { "xxxvids.mobi", true }, { "xxxvids.tv", true }, + { "xxxvv3.com", true }, + { "xxxvv8.com", true }, + { "xxxvv9.com", true }, + { "xxxx.com.au", true }, { "xxxxlol.com", true }, { "xy.ax", true }, - { "xy1919.com", true }, { "xy366.cc", true }, { "xy369.cc", true }, { "xy6161.com", true }, { "xy6262.com", true }, - { "xy6363.com", true }, { "xy6729.com", true }, { "xy6957.com", true }, { "xy7171.com", true }, { "xy7272.com", true }, { "xy7373.com", true }, { "xy96.top", true }, - { "xybabyshop.com", true }, + { "xyactive.com.au", true }, + { "xycommunication.com", true }, { "xyenon.bid", true }, { "xyfun.net", false }, + { "xyl.cool", true }, { "xylerfox.ca", true }, - { "xyloefarmoges.gr", true }, + { "xyloefarmoges.gr", false }, { "xylos.nl", true }, - { "xynolabs.com", true }, - { "xynonet.de", true }, { "xynta.ch", true }, { "xyquadrat.ch", true }, { "xyrexwolf-sebastien-izambard.tk", true }, { "xywing.com", false }, - { "xyz.blue", true }, - { "xyz.ng", true }, + { "xyz.vn", true }, { "xyzemails.com", false }, + { "xyzmedia.net", true }, + { "xyzmedia.rs", true }, { "xyzulu.hosting", true }, { "xyzxyx.com", true }, { "xyzyz.xyz", true }, @@ -134296,15 +154500,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "xyzzyyyz.com", true }, { "xz0.de", true }, { "xzclip.cn", true }, + { "xzib.com", true }, { "xzibits.com", true }, { "xzqy.net", true }, { "xztech.co", true }, - { "y-chung.com", true }, + { "y-erodoga.com", true }, { "y-erogazo.com", true }, { "y-nas.tk", true }, { "y.com.cm", true }, { "y.com.sb", true }, - { "y.gy", true }, { "y09a.com", false }, { "y09app.com", false }, { "y09app.vip", false }, @@ -134312,7 +154516,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "y0bet.com", true }, { "y11n.net", false }, { "y2bet.com", true }, + { "y2k22.com", true }, + { "y2k23.com", true }, { "y2s.pw", true }, + { "y2yoga.com", true }, { "y3451.com", true }, { "y3600.cc", true }, { "y3600.cz", true }, @@ -134361,9 +154568,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "y7091.com", true }, { "y7092.com", true }, { "y7093.com", true }, - { "y7bet.com", true }, - { "y81365.com", true }, - { "y82365.com", true }, { "y890000.com", false }, { "y891111.com", false }, { "y892222.com", false }, @@ -134437,61 +154641,62 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ya.mk", true }, { "yaay.com.br", true }, { "yaay.today", true }, + { "yaazhtech.com", true }, + { "yaballe.com", true }, { "yabbr.com.au", true }, { "yabbr.io", true }, { "yabo68.com", false }, { "yabuisha.jp", true }, { "yacca.co.uk", true }, { "yacg.asia", true }, + { "yachatshomesforsale.com", true }, { "yachigoya.com", true }, { "yachta.kiev.ua", true }, { "yachtbuyer.com", true }, { "yachtcharterfleet.com", true }, - { "yachtcita.com", true }, - { "yachtfolio.com", true }, + { "yachtcita.com", false }, + { "yachtcrafter.com", true }, { "yachtfolio1.com", true }, { "yachting-home.com", true }, { "yachtlettering.com", true }, { "yachtmarket.com.ua", true }, - { "yachts.rentals", true }, + { "yachtwaypoints.com", true }, { "yacostasolutions.com", true }, - { "yadakjo.ir", true }, { "yadnameh.ga", true }, { "yaebus.tk", true }, { "yaencontre.com", true }, { "yafull.com", true }, { "yafuoku.ru", true }, - { "yageys.com", true }, { "yaghoobi.tk", true }, { "yagihiro.tech", true }, { "yagizhan.me", true }, { "yagliyurt.com", true }, { "yagmursoft.tk", true }, { "yagoda-malina.tk", true }, + { "yagodigribi.guru", true }, { "yagotour.cf", true }, - { "yah-music.com", true }, - { "yahan.tv", true }, { "yaharu.ru", true }, { "yahav.co.il", true }, { "yahlab.de", true }, { "yahoo.ax", true }, + { "yahtzeemanifesto.com", true }, { "yahvehyireh.com", true }, { "yahvk.moe", true }, { "yahzah.com", true }, { "yaiho.com", true }, { "yaiho.de", true }, + { "yaina.in", true }, { "yak-host.tk", true }, { "yakbett.de", true }, { "yakiimo-sakura.com", true }, { "yakimono.ga", true }, { "yakimoshi.tk", true }, { "yakisakana.tk", true }, - { "yakitofisi.com", true }, { "yakkifamirie.tk", true }, { "yakmail.tech", true }, - { "yakmoo.se", true }, { "yakovmanshin.com", true }, - { "yakushima.io", true }, + { "yakshop.bg", true }, + { "yakupyilmazboru.com", true }, { "yakutia.tk", true }, { "yakutianews.tk", true }, { "yakutsk-city.tk", true }, @@ -134499,6 +154704,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yalb.tech", true }, { "yalcinkaya.ninja", false }, { "yalecleaners.com", true }, + { "yalla-kora.tv", true }, + { "yalla-shoots.tv", true }, + { "yalla-shootx.com", true }, { "yallamotor.com", true }, { "yalook.com", false }, { "yaltaarenda.tk", true }, @@ -134507,6 +154715,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yamacore.de", true }, { "yamadaya.tv", true }, { "yamagata-fujinka.jp", true }, + { "yamagata-healing.com", true }, { "yamaken.jp", true }, { "yamal-online.ml", true }, { "yamal159263.ml", true }, @@ -134524,18 +154733,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yamei98.com", true }, { "yamei99.com", true }, { "yamei9955.com", true }, - { "yami.world", true }, + { "yamhillcounty.gov", true }, + { "yami.fun", false }, { "yamm.io", true }, { "yamobila.tk", true }, + { "yamunaexpresswayplot.com", true }, { "yan.gg", true }, { "yan.lt", true }, - { "yan.net.cn", true }, + { "yan.net.cn", false }, { "yan3321.com", true }, { "yanaduday.com", true }, + { "yanagibashi.me", true }, { "yananikitina.site", true }, { "yanaya-k.jp", true }, + { "yanbohon.com", true }, + { "yandere.moe", true }, { "yandong.tk", true }, - { "yangcs.net", true }, + { "yang1963.com.tw", true }, + { "yangcs.net", false }, { "yangfamily.tw", true }, { "yangjingwen.cn", true }, { "yangjingwen.com", true }, @@ -134544,42 +154759,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yangmi.blog", true }, { "yangrq.org", true }, { "yangruixin.com", true }, - { "yangshangzhen.com", true }, + { "yangshangzhen.com", false }, { "yangwang.tk", true }, { "yangxi.tech", true }, { "yangyi.ml", true }, + { "yangzi.ml", true }, { "yanhongming.net", true }, { "yanik.info", true }, + { "yanisvaroufakis.eu", true }, { "yanivboost.com", true }, { "yanjicg.com", false }, - { "yanlongli.com", true }, { "yann.tw", true }, { "yanngraf.ch", false }, { "yannic.world", false }, - { "yannick.cloud", true }, { "yannickkordel.de", true }, { "yannickkordel.eu", true }, { "yannickvdvelde.tk", true }, { "yanniclandsmann.de", true }, + { "yannik-buerkle.de", true }, + { "yannikbloscheck.com", true }, + { "yannsalmon.fr", true }, { "yannyann.com", true }, - { "yanovich.net", true }, { "yanovosibirsk.ml", true }, { "yanservices.be", true }, { "yansurachman.web.id", true }, { "yantarniy.tk", true }, { "yantox.com", true }, { "yanwo.com.tw", true }, - { "yao28.com", true }, { "yaodownload.com", true }, { "yaoge123.com", true }, - { "yaoibank.org", false }, + { "yaourtiere.info", true }, + { "yaoyorozu.eu", true }, + { "yaoyorozu.re", true }, { "yap26.cc", true }, { "yapan008.com", true }, - { "yapan1.com", true }, - { "yapan10.com", true }, - { "yapan11.com", true }, - { "yapan2.com", true }, - { "yapan22.com", true }, { "yapan222.com", true }, { "yapan3.com", true }, { "yapan33.com", true }, @@ -134602,15 +154815,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yapan99.com", true }, { "yapan999.com", true }, { "yapanwang.com", true }, - { "yapeal.ch", true }, + { "yapaytech.com", true }, + { "yapdentalsurgery.com", true }, { "yapmaz.com", true }, - { "yaporn.tv", false }, - { "yapperapp.co.za", true }, + { "yapper.fr", true }, { "yappy.com", true }, + { "yappy.media", true }, { "yaraab.my.id", true }, { "yarahmad.ir", true }, { "yaravidasana.com", true }, - { "yarcevostom.ru", true }, { "yarcom.ru", false }, { "yardandgardenguru.com", true }, { "yardesign.tk", true }, @@ -134621,13 +154834,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yaren-it.de", true }, { "yaren.it", true }, { "yarlesac.com", true }, + { "yarmarka-megamarket.ru", true }, { "yarnandy.com", true }, { "yarnsub.com", true }, { "yarogneva.ru", true }, { "yarokuk.com", true }, + { "yaroslavia.eu.org", true }, { "yaroslavova.tk", true }, { "yarowork.jp", true }, { "yarplast.tk", true }, + { "yarr.pt", true }, { "yarracitta.tk", true }, { "yarravilletownhouses.com.au", true }, { "yaru.one", true }, @@ -134636,12 +154852,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yaseen.ae", true }, { "yaseiblog.org", true }, { "yash.com", true }, + { "yashik.tv", false }, { "yashinstore.com", true }, { "yashu.store", true }, { "yasic.net", true }, { "yasikish.com", true }, { "yaslihastabakici.com", true }, - { "yaslink.ir", true }, { "yasmeencreative.com", true }, { "yasmin-apartments.cz", true }, { "yasmin.ml", true }, @@ -134653,18 +154869,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yasudaseiki.cn", true }, { "yasukevicious.com", true }, { "yatai18.com", true }, - { "yataland.com", true }, + { "yatax.fr", true }, { "yateam.cc", true }, + { "yates.com.au", true }, { "yatescountyny.gov", true }, - { "yatesun.com", true }, + { "yatescountysheriff.gov", true }, { "yatorie.net", true }, { "yatriindia.tk", true }, { "yatsat.com", true }, + { "yatserver.com", true }, { "yatstudios.com", true }, { "yatsuenpoon.com", true }, { "yauatcha.com", true }, { "yaucy.win", true }, { "yaup.tk", true }, + { "yaustal.com", true }, { "yavapaiaz.gov", true }, { "yavapaivotes.gov", true }, { "yavar.nl", true }, @@ -134677,8 +154896,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yaws.cf", true }, { "yaxim.org", true }, { "yay-btcl.work", true }, - { "yay.cam", true }, + { "yay.space", true }, { "yayart.club", true }, + { "yayginegitim.net", true }, { "yayl888.com", true }, { "yaymaker.com", true }, { "yayou.ag", true }, @@ -134687,10 +154907,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yazilim.tk", true }, { "yba-lier.tk", true }, { "ybexalev.ga", true }, - { "ybin.me", true }, - { "yblaccounting.com", true }, { "ybos.nl", true }, + { "ybr.ch", true }, + { "ybr.com", true }, { "ybresson.com", true }, + { "ybrfrance.fr", true }, { "ybscareers.co.uk", true }, { "ybsul.com", true }, { "ybti.net", true }, @@ -134706,20 +154927,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ycherbonnel.fr", true }, { "ycl.org.uk", true }, { "yclan.net", true }, - { "ycnexp.eu.org", true }, { "ycnrg.org", true }, + { "ycnxp.com", true }, { "ycodendauteradio.net", true }, { "ycsgo.com", false }, + { "ycylf.cc", true }, { "yd.io", true }, { "yd163.cc", true }, { "yd169.cc", true }, - { "ydiversa.com", true }, - { "ydraulikos.top", true }, + { "ydetc.es", true }, + { "ydt.am", true }, { "ydyy99.com", true }, { "ydyydy.ml", true }, + { "ye.ax", true }, + { "yeadonboroughpa.gov", true }, { "yeah-shop.com.ua", true }, - { "yeapdata.com", true }, - { "yearend.com", true }, { "yearinviewcalendars.com", true }, { "yearli.com", true }, { "yeartracker.ga", true }, @@ -134728,12 +154950,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yecdn.com", true }, { "yecl.net", true }, { "yedeksubay.tk", true }, + { "yeechie.nl", true }, { "yeecord.com", true }, { "yeecord.tk", true }, { "yeesker.com", true }, { "yekaterinburg-city.tk", true }, + { "yellcosheriffar.gov", true }, + { "yellcountyar.gov", true }, + { "yello.co", true }, { "yellow.ai", true }, + { "yellow.place", true }, + { "yellowball.fm", true }, + { "yellowbrick.co", true }, + { "yellowcanary.com.au", true }, { "yellowcar.website", true }, + { "yellowfolder.com", true }, { "yellowhawk.nl", true }, { "yellowmessenger.com", true }, { "yellowpages.ee", true }, @@ -134742,10 +154973,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yellowstone.nsupdate.info", true }, { "yellowstonecountymt.gov", true }, { "yellowstrips.com", true }, + { "yellowsubmarinebook.com", true }, { "yellowtaillasvegas.com", true }, { "yellowtails.co.jp", true }, { "yellowtrace.net.au", true }, - { "yellowtree.co.za", true }, + { "yellsystem.co.jp", true }, { "yelp.at", true }, { "yelp.be", true }, { "yelp.ca", true }, @@ -134785,7 +155017,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yemekfirmalari.tk", true }, { "yemekfirmasi.tk", true }, { "yemeksirketleri.tk", true }, - { "yemektarifleri.com", true }, { "yemenat.tk", true }, { "yemenlink.tk", true }, { "yenbainet.tk", true }, @@ -134795,37 +155026,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yennhi.co", true }, { "yenpape.com", true }, { "yep-pro.ch", false }, - { "yep.co.za", true }, - { "yepaa.be", true }, { "yepbitcoin.com", true }, { "yephy.com", false }, - { "yeptechnology.store", true }, { "yepu.cc", true }, { "yepu.ga", true }, - { "yeram.org", true }, { "yerbasbuenas.tk", true }, - { "yert.pink", true }, + { "yerf.eu", true }, + { "yeri.com", true }, { "yes-money.cf", true }, { "yes-money.ga", true }, { "yes-money.gq", true }, { "yes.com", true }, { "yesapp.tk", true }, + { "yesasia.com", true }, { "yescareer.ga", true }, { "yescool.cn", false }, { "yesfone.com.br", true }, { "yesglasses.com", true }, + { "yesh.lk", true }, { "yesiammaisey.me", true }, { "yesichat.com", true }, - { "yesilfindik.com", true }, + { "yesileczam.com", true }, + { "yesileczam.net", true }, { "yesilliforum.tk", true }, { "yesjobs.ga", true }, { "yesleaks.com", true }, { "yesmirov.ga", true }, - { "yesmsp.com", false }, + { "yesmsp.com", true }, { "yesod.in", true }, { "yesogovinpetcare.com", true }, { "yesolo.tk", true }, { "yespornfree.com", true }, + { "yespornplease.com", true }, { "yessirgear.com", false }, { "yeste.tk", true }, { "yestees.com", true }, @@ -134833,8 +155065,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yesterplay.net", false }, { "yesteryear-chronicle.cf", true }, { "yeswecan.co.bw", true }, - { "yeswehack.com", true }, - { "yetahost.com", true }, { "yeti.ca", true }, { "yeti.com", true }, { "yeti.gq", true }, @@ -134842,17 +155072,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yetivisite.ch", true }, { "yetkiliservisrehberi.com", true }, { "yeu.io", true }, + { "yewan.cf", true }, + { "yewan.ml", true }, { "yewtu.be", true }, { "yex.nz", true }, { "yex.trade", true }, - { "yeyi.site", true }, + { "yezhan.ml", true }, + { "yezhong.cf", true }, + { "yezhong.ml", true }, { "yezi.ga", true }, { "yezishurb.site", true }, { "yf128.cc", true }, - { "yfeer.com", true }, - { "yfengs.moe", true }, + { "yfcampus.com", true }, + { "yfeer.com", false }, + { "yfh.me", true }, { "yflix.xyz", false }, - { "yg-crew.eu", true }, { "yggdar.ga", true }, { "yggdrasildice.com", true }, { "ygm.org.uk", true }, @@ -134867,9 +155101,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yh98768.com", true }, { "yhanthydech.com", false }, { "yhaupenthal.org", true }, + { "yhclinic.com.tw", true }, { "yhe.me", true }, { "yhenke.de", false }, - { "yhfou.com", true }, { "yhhvi.cf", true }, { "yhn.sh", true }, { "yhndnzj.com", true }, @@ -134878,33 +155112,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yhrd.org", true }, { "yhsh.xyz", true }, { "yhwj.top", false }, - { "yibaochina.com", true }, + { "yiai.cf", true }, + { "yiai.ga", true }, + { "yiai.gq", true }, + { "yiai.ml", true }, + { "yiai.tk", true }, { "yibaoweilong.top", true }, { "yibei-original.com", true }, { "yibin0831.com", false }, - { "yicipick.com", true }, { "yicivideo.com", true }, { "yicknam.my", true }, + { "yieldguild.io", false }, { "yifanbian.me", true }, - { "yiff.bar", true }, - { "yiff.buzz", true }, + { "yifansun.net", true }, { "yiff.forsale", true }, { "yiff.media", true }, { "yiff.rest", true }, { "yiff.rocks", true }, { "yiff.supply", true }, + { "yifysubtitles.ws", true }, { "yigelangzi.com", true }, { "yigit.shop", true }, { "yiguan.me", true }, { "yigujin.cn", true }, { "yiheng.moe", false }, - { "yihome.com.tw", true }, - { "yihome.tw", true }, { "yihouse.tw", true }, { "yijia.support", true }, { "yijingying.com", false }, { "yikeyong.com", true }, - { "yilacoin.eu.org", true }, + { "yilacoin.com", true }, { "yilanju.com", true }, { "yilconstruction.ca", true }, { "yilmaznargile.com", true }, @@ -134922,46 +155158,52 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yingyj.com", true }, { "yingzi.ml", true }, { "yinlei.org", true }, + { "yinwa.cf", true }, + { "yinwa.ml", true }, { "yinyang.jp", true }, { "yiyuanzhong.com", true }, { "yiz96.com", true }, { "yizhihuang.org", true }, { "yj4p.com", true }, { "yjav.tv", true }, - { "yjav8.com", true }, - { "yjav9.com", true }, { "yjdevtech.com", true }, + { "yjrk.cc", true }, { "yjsoft.me", true }, { "yjsp.tv", true }, { "yjst.cn", true }, { "yjsw.sh.cn", true }, { "yjz.hk", true }, + { "ykb.click", true }, { "ykgli.cn", true }, { "ykqpw.com", true }, + { "yksolutions.ma", true }, { "yl-invest.co.il", true }, { "yl366.cc", true }, { "ylanan.tk", true }, - { "ylcdev.tk", true }, { "ylde.de", true }, + { "yliarb.ru", true }, { "ylilauta.org", true }, - { "ylinternal.com", true }, + { "ylivemusic.com", true }, + { "yloti.com", true }, { "ylromania.ro", true }, { "ylwd.gov", true }, { "ym069.com", true }, - { "ym1199.com", true }, { "ym181.am", true }, - { "ym516.com", true }, - { "ym6699.com", true }, { "ym966.com", true }, { "ymaca.tk", true }, { "ymarion.de", true }, { "ymatyt.com", true }, { "ymc.moe", true }, { "ymca.ga", true }, + { "ymcapkc.org", true }, + { "ymdecor.com", true }, + { "ymeye.com.tw", true }, + { "ymg-allergy.jp", true }, { "ymlsport.pe", true }, { "ymm18.com", true }, { "ymoah.nl", true }, - { "ympifa.com", true }, + { "ymos.com.tw", true }, + { "ymoz.com", true }, { "ymtsonline.org", true }, { "ymy.moe", true }, { "ymy.zone", true }, @@ -134986,17 +155228,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yodababy.com.tw", true }, { "yodalef3.tk", true }, { "yodaremote.tk", true }, + { "yodelmobile.com", true }, + { "yodocon.com", true }, + { "yofi-yofi.com", true }, + { "yoga-alliance-teacher-training.com", true }, { "yoga-bien-etre.com", true }, + { "yoga-erde.de", true }, { "yoga-good.fr", true }, - { "yoga-m.fr", true }, + { "yoga-in-aying.de", true }, + { "yoga-m.fr", false }, + { "yoga-masterskaya.ru", true }, { "yoga-mindfulness-ibiza.com", true }, - { "yoga-mindfulness-ibiza.nl", true }, { "yoga-prive.de", true }, { "yoga-school.xyz", true }, + { "yoga-vakantie-ibiza.nl", true }, { "yoga-zentrum-narayani.de", true }, { "yoga.is-an-engineer.com", true }, { "yogaangels.ga", true }, - { "yogachillbeats.com", true }, + { "yogaanswered.com", true }, { "yogaecology.org", true }, { "yogaemmental.ch", true }, { "yogagadgets.ga", true }, @@ -135005,29 +155254,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yogaillustrations.ga", true }, { "yogaillustrations.tk", true }, { "yogamarlene.ch", true }, + { "yogamea.school", true }, { "yogananda-roma.org", true }, { "yogaovelser.dk", true }, { "yogaportalen.dk", true }, { "yogaprague.com", true }, - { "yogaschule-herzraum.de", true }, + { "yogaschoolrishikesh.com", true }, { "yogasolution.tk", true }, - { "yogasuitsyou.com", true }, { "yogatherapykosha.com", true }, + { "yogatrainingrishikesh.com", true }, { "yogaworld.tk", true }, { "yogibear.tk", true }, { "yogies.shop", true }, + { "yogonet.com", true }, { "yogstation.net", true }, { "yogularm.de", true }, { "yogunet.de", true }, { "yohanesmario.com", true }, { "yohannes.tk", true }, - { "yoim.cc", true }, { "yoitoko.city", true }, { "yoitsu.moe", true }, { "yoitsu.org", true }, + { "yokaiispirit.ddns.net", true }, { "yokocho373.com", true }, { "yokoda.okinawa", true }, - { "yokohama-legaloffice.jp", true }, { "yokohama.ga", true }, { "yokone3-kutikomi.com", true }, { "yokorei.yokohama", true }, @@ -135035,7 +155285,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yolandgao.me", true }, { "yolks.in", true }, { "yolo-csgo.com", true }, - { "yolo-insurance.com", true }, { "yolo.vn", true }, { "yolobert.de", true }, { "yoloboatrentals.com", true }, @@ -135046,45 +155295,66 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yoloyolo.top", false }, { "yombo.net", true }, { "yomena.in", true }, + { "yomeuno.com", true }, { "yomiren.co.jp", true }, + { "yommy.com.mx", true }, + { "yomyyomy.co.jp", true }, { "yon.co.il", false }, { "yonalink.com", true }, { "yoneda-paint.com", true }, { "yonema.com", true }, - { "yonetilenhizmetler.com", true }, { "yongbin.org", true }, + { "yongkang-clinic.com.tw", true }, + { "yongseovn.net", true }, { "yonistap.com", true }, + { "yonja.com", true }, { "yonkersdentalspa.com", true }, + { "yoodigital.co", true }, { "yoogirls.com", true }, { "yoomza.com", true }, { "yoonas.com", true }, { "yooooex.com", true }, + { "yoopies.fr", true }, { "yooptopian.com", false }, - { "yooread.net", true }, - { "yoozapi.com", true }, { "yoozik.io", true }, + { "yooznet.com", true }, { "yopers.com", false }, + { "yoplait.com", true }, + { "yopmail.com", true }, + { "yopmail.net", true }, { "yoppoy.com", true }, - { "yopuedo.co", false }, + { "yops.info.pl", true }, { "yoramvandevelde.net", true }, + { "yorcar.com", true }, { "yorcom.nl", false }, { "yorcool.nl", false }, { "yorcybersec.co.uk", false }, { "yordanisp.tk", true }, { "yore.tk", true }, { "yorganica.ga", true }, + { "yorgosbos.nl", true }, + { "yorikoh2.com", true }, { "yorkacademy.ca", true }, + { "yorkcountyne.gov", true }, + { "yorkcountysc.gov", true }, + { "yorkcountyschools.org", true }, { "yorkieloverdiy.com", true }, { "yorkiepooexpert.com", true }, + { "yorkmarkets.com", true }, + { "yorkmoneyman.com", true }, + { "yorkroadyums.com", true }, { "yorkshiredalesinflatables.co.uk", true }, { "yorkshiregardensheds.co.uk", true }, { "yorkshiregrit.cc", true }, + { "yorkshirehousing.co.uk", true }, { "yorkshireinflatables.co.uk", true }, { "yorkshireterrier.com.br", true }, { "yorkshireterrier.dog", true }, { "yorkshireterrieraspets.com", true }, + { "yorktest.com", true }, { "yorname.ml", false }, { "yornik.nl", true }, + { "yoru.me", false }, { "yoryo.com", true }, { "yosakoinight.com", true }, { "yosbeda.com", true }, @@ -135092,6 +155362,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yosh.is", true }, { "yosheenetwork.fr", true }, { "yoshibaworks.com", true }, + { "yoshimura-seimenjo.com", true }, { "yoshitsugu.net", true }, { "yoshiya2020.com", true }, { "yoshkar-ola-city.tk", true }, @@ -135102,25 +155373,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yoti.com", true }, { "yoticonnections.com", true }, { "yotilabs.com", true }, + { "yoto.at", false }, { "yotta-zetta.com", true }, { "yottahash.net", true }, { "yotubaiotona.net", true }, + { "you-working.ru", true }, + { "you.bo", true }, { "you.com.br", true }, { "you15iv.com", true }, - { "you52iv.com", true }, { "youareamazingnd.com", true }, - { "youarethelight.pl", true }, + { "youavtube.com", true }, { "youbehero.com", true }, { "youber.cz", true }, - { "youbil.com", true }, { "youc.ir", true }, { "youcanbook.me", false }, { "youcanfinance.com.au", true }, { "youcanfuckoff.xyz", true }, { "youcanhelp.tk", true }, { "youcanmakeit.at", true }, + { "youcloud.com", true }, { "youcruit.com", true }, { "youcruit.jobs", true }, + { "youdino.com", true }, { "youdontneedipv6.xyz", true }, { "youdungoofd.com", true }, { "youearnedit.com", true }, @@ -135151,33 +155425,36 @@ static const nsSTSPreload kSTSPreloadList[] = { { "youivh.com", true }, { "youivr.com", true }, { "youivt.com", false }, - { "youivz.com", true }, + { "youjob.us", true }, { "youkaryote.com", true }, { "youkaryote.org", true }, { "youked.com", true }, { "youkube.cf", true }, { "youla.gq", true }, + { "youla.ru", true }, { "youlikehookups.com", true }, { "youliketwinks.com", true }, { "youlovehers.com", true }, + { "youmeandjunee.com.au", true }, { "youmiracle.com", true }, { "youmonit.me", true }, { "youms.de", true }, { "younameit.ru", true }, { "youneedfame.com", true }, - { "young-brahmousin.com", false }, + { "young-brahmousin.com", true }, { "young-celebrities.tk", true }, { "young-hands.it", true }, { "young-sheldon.com", true }, { "young-zy.com", true }, + { "young.scot", false }, { "youngandunited.nl", false }, { "youngart.hu", true }, { "youngauthentic.cf", true }, + { "youngbabes.pro", true }, { "youngcouple9598.net", true }, { "youngdevotion.net", true }, { "youngdevotion.org", true }, { "youngfree.cn", true }, - { "youngguns.club", true }, { "younglabour.co.nz", true }, { "younglabour.nz", true }, { "younglabour.org.nz", true }, @@ -135186,8 +155463,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "youngpeopleunited.co.uk", true }, { "youngsook.org", true }, { "youngsophie.net", true }, - { "youngsoulstudios.com", true }, + { "youngsoulstudios.com", false }, { "youngsvillenc.gov", true }, + { "youngtube.one", true }, { "youngvoicesmatter.org", true }, { "youniq.ga", true }, { "younl.net", true }, @@ -135204,7 +155482,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "your-melody.ru", true }, { "your-out.com", true }, { "your-restorer.ru", true }, - { "your-style.nl", true }, + { "your-style.nl", false }, { "your-sussex.wedding", true }, { "your.best", true }, { "your28days.com", true }, @@ -135213,8 +155491,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yourantiquarian.com", true }, { "youraudiobooks.xyz", true }, { "yourazbraces.com", true }, + { "yourbenefitsresources.com", true }, { "yourberksbucksoxon.wedding", true }, - { "yourbind.com", true }, { "yourbittorrent.com", true }, { "yourbittorrent2.com", true }, { "yourblazeguard.com", true }, @@ -135222,6 +155500,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yourbodyknows.is", true }, { "yourbonus.click", false }, { "yourbreakfast.tk", true }, + { "yourbrewclub.com", true }, { "yourbristolsomerset.wedding", true }, { "yourbusiness.ml", true }, { "yourcareerhost.com", true }, @@ -135235,6 +155514,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yourcrypto.tax", true }, { "yourdailyalerts.net", true }, { "yourdailyhealthcare.tk", true }, + { "yourdailylocal.com", true }, + { "yourdata.ai", true }, { "yourdata.ga", true }, { "yourdemowebsite.ml", true }, { "yourdevoncornwall.wedding", true }, @@ -135243,11 +155524,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "youreart.shop", true }, { "youreastanglian.wedding", true }, { "youreastmidlands.wedding", true }, - { "youregeeks.com", true }, { "youreitbranding.com", true }, { "youremailexpert.com", true }, { "yourenergy.io", true }, { "youreward.ga", true }, + { "yourfandom.ddns.net", true }, { "yourfin.nl", true }, { "yourforceserver.com", true }, { "yourforcesupport.com", true }, @@ -135262,43 +155543,49 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yourfuturestrategy.com.au", true }, { "yourgadget.ro", true }, { "yourgames.tv", true }, + { "yourgifttoyou.com", true }, { "yourgloswilts.wedding", true }, { "yourhampshiredorset.wedding", true }, { "yourhealthcommunity.com", true }, { "yourhearingnetwork.com", true }, { "yourhertsbeds.wedding", true }, { "yourhomeloanapprovals.com.au", true }, - { "yourivanopdorp.nl", true }, + { "yourhrworld.com", true }, + { "yourhumandesign.ch", true }, { "yourkent.wedding", true }, { "yourkit.com", true }, { "yourkrabivilla.com", true }, { "yourlanguages.de", true }, { "yourlifespirit.de", true }, { "yourloan.gq", true }, + { "yourlocalsecurity.com", true }, { "yourlondon.wedding", true }, { "yourlovesong.com.mx", true }, { "yourmagicstory.tk", true }, + { "yourmaki.com", true }, { "yourmobility.ga", true }, { "yourms.com", true }, { "yourname.xyz", true }, - { "yournextagency.com", true }, + { "yournewsfeed.org", true }, { "yournortheast.wedding", true }, { "yournorthwest.wedding", true }, { "youronly.one", true }, { "yourpalmbeachcountyrealtor.com", true }, { "yourpalstore.com", true }, + { "yourpersonalfoodnesscoach.nl", true }, { "yourpersonalfrance.com", true }, - { "yourrenaissancemedspa.com", true }, + { "yourpillstore.com", true }, { "yourscotlandtour.co.uk", true }, { "yoursfunny.top", true }, { "yourskin.nl", false }, { "yoursoul.gq", true }, { "yoursoulmate.tk", true }, { "yoursouthwales.wedding", true }, + { "yourstake.org", true }, { "yourstart.tk", true }, { "yourstorebridgwater.co.uk", true }, { "yourstoreexeter.co.uk", true }, - { "yoursuper.gov.au", true }, + { "yoursupportline.co.uk", true }, { "yoursurrey.wedding", true }, { "yourtampaparksplan.com", true }, { "yourtests.tk", true }, @@ -135316,22 +155603,30 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yousefi.de", true }, { "yousei.ne.jp", true }, { "youservice.it", true }, + { "youshouldnthavebeenhacking.com", true }, + { "yousign.com", true }, { "yousite.by", true }, { "yousound.tk", true }, + { "youssefsayed.com", true }, { "youssfitpro.com", true }, + { "youston.agency", true }, { "youstyleski.it", true }, + { "yousufahmad.ca", true }, { "yousuforg.ga", true }, { "youth-for-life.tk", true }, { "youth-sport.net", true }, { "youth.gov", true }, { "youth2009.org", true }, { "youthclothing.tk", true }, - { "youthingovernment.com", true }, { "youthink.jp", true }, { "youthmarketing.com", true }, { "youthnews.tk", true }, { "youthopportunitieshub.com", true }, + { "youthpassageways.org", true }, + { "youthpolicy.org", true }, + { "youthreach.org", true }, { "youthrules.gov", true }, + { "youthsadda.com", true }, { "youtous.me", true }, { "youtube", true }, { "youtube-notify.com", true }, @@ -135343,20 +155638,23 @@ static const nsSTSPreload kSTSPreloadList[] = { { "youtubelet.com", true }, { "youtuberis.lt", true }, { "youtuberus.tk", true }, + { "youwebcams.org", true }, { "youwelike.com", true }, { "youyifans.com", true }, { "youyoulemon.com", true }, { "youyuan.rocks", true }, { "youyuandesign.top", true }, - { "yovada.com", true }, { "yovko.net", false }, + { "yoyohe.com", true }, { "yoyojobs.tk", true }, { "yoyoost.duckdns.org", true }, { "yoyoost.ga", true }, { "yozakura.me", true }, { "yozhik.tk", true }, + { "yozucreative.com", true }, { "yparches.com", true }, { "ypart.eu", true }, + { "ypdlp.org", true }, { "ypea.info", true }, { "ypfr.fr", true }, { "ypgnews.tk", true }, @@ -135365,6 +155663,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "ypopovych.tk", true }, { "yporti.net", true }, { "ypse.com.br", true }, + { "ypsitownship.gov", true }, { "yq5.de", true }, { "yqagizev.tk", true }, { "yqjf68.com", true }, @@ -135373,35 +155672,35 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yr166166.com", true }, { "yrausquin.com", true }, { "yrcc878.com", true }, + { "yrefail.net", true }, { "yriik.ml", true }, + { "yrityksen-perustaminen.net", true }, { "yrjanheikki.com", true }, { "yrx.me", true }, { "yryz.net", true }, - { "ysds.com", false }, { "ysearc.tk", true }, + { "ysff.me", true }, { "ysfridge.com", true }, - { "ysicing.me", true }, { "ysicorp.com", true }, - { "yslocksandkeys.com", true }, + { "yslxxhome.com", true }, { "ysmedia.jp", true }, { "yspa.tv", true }, { "yspertal.party", true }, + { "ystral.com", true }, { "ysun.one", true }, { "ysuna.xyz", true }, { "yt-downloader.xyz", true }, { "yt129.com", true }, { "yt605.com", true }, - { "yt606.com", true }, { "yt629.com", true }, { "yt675.com", true }, { "yt972.com", true }, { "ytcodecs.com", true }, { "ytcount.com", true }, { "ytec.ca", true }, - { "ytegiadinhmilo.com", true }, { "ytexa.tk", true }, + { "ytmous.com", true }, { "ytpak.pk", true }, - { "ytprivate.com", true }, { "ytreza.fr", true }, { "ytterland.tk", true }, { "ytvwld.de", false }, @@ -135410,82 +155709,34 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yu-mug.jp", true }, { "yu.vc", true }, { "yuan.ga", true }, - { "yuan.idv.tw", true }, + { "yuan.idv.tw", false }, { "yuan.nctu.me", true }, { "yuanandyuan.info", true }, { "yuanandyuan.me", true }, { "yuanben.io", true }, { "yuanbenlian.com", true }, + { "yuanbiji.net", true }, { "yuandan.cf", true }, { "yuandan.gq", true }, { "yuandan.ml", true }, { "yuanjiazhao.com", false }, { "yuanjiazhao.tk", true }, - { "yuanritian.com", true }, { "yuansecard.me", true }, { "yubanmei.com", true }, { "yubi.co", false }, - { "yubicloud.io", true }, - { "yubico.ae", true }, - { "yubico.at", true }, - { "yubico.be", true }, - { "yubico.biz", true }, - { "yubico.cloud", true }, - { "yubico.co.in", true }, - { "yubico.co.kr", true }, - { "yubico.co.uk", true }, { "yubico.com", true }, - { "yubico.com.ar", true }, - { "yubico.cz", true }, - { "yubico.dk", true }, - { "yubico.es", true }, - { "yubico.fi", true }, - { "yubico.in", true }, - { "yubico.info", true }, - { "yubico.io", true }, - { "yubico.mobi", true }, - { "yubico.mx", true }, - { "yubico.net", true }, - { "yubico.online", true }, { "yubico.org", true }, - { "yubico.pe", true }, - { "yubico.se", true }, - { "yubico.sg", true }, - { "yubico.tv", true }, - { "yubico.uk", true }, - { "yubico.us", true }, - { "yubicodemo.com", true }, - { "yubikey.ae", true }, - { "yubikey.asia", true }, - { "yubikey.at", true }, - { "yubikey.cl", true }, - { "yubikey.co", true }, - { "yubikey.co.uk", true }, - { "yubikey.com", true }, - { "yubikey.com.ar", true }, - { "yubikey.com.au", true }, - { "yubikey.dk", true }, - { "yubikey.fi", true }, - { "yubikey.io", true }, - { "yubikey.mx", true }, - { "yubikey.org", true }, - { "yubikey.pe", true }, - { "yubikey.se", true }, - { "yubikey.sg", true }, - { "yubikey.uk", true }, - { "yubikey.us", true }, - { "yubikeys.net", true }, - { "yubikeys.org", true }, - { "yubikeyservices.eu", true }, - { "yubiking.com", true }, + { "yucaipa.gov", true }, { "yucatanhoney.com", true }, { "yucca.cf", true }, { "yuccaschidigera.co.uk", true }, { "yuce518.com", true }, + { "yuchun.me", true }, { "yude.ml", true }, { "yudin.ga", true }, { "yue.la", true }, { "yue2.net", true }, + { "yueeeyueee.com", true }, { "yuema.net.cn", true }, { "yuer.sytes.net", true }, { "yugasun.com", true }, @@ -135495,18 +155746,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yugodi.com", true }, { "yugohome.com", true }, { "yuh.im", false }, - { "yuh.li", false }, + { "yuh.li", true }, + { "yuhaoskin.com.tw", true }, { "yuharahisako.ga", true }, { "yuhindo.com", true }, { "yuho.vn", true }, + { "yui.cat", true }, { "yuisyo.ml", true }, { "yujixr.net", true }, { "yukari.cafe", true }, { "yuki-nagato.com", true }, { "yuki.xyz", true }, - { "yukiblog.tw", true }, { "yukict.com", true }, { "yukieda.com", true }, + { "yukigroup.ru", true }, + { "yukimituki.net", true }, { "yukimiu.cf", true }, { "yukimochi.com", true }, { "yukimochi.io", true }, @@ -135523,17 +155777,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yukonlip.com", true }, { "yukoslibrary.ga", true }, { "yuksinau.co.id", true }, + { "yuksinau.id", true }, { "yula.cf", true }, { "yulaiz.com", true }, { "yule.hk", true }, { "yuleyule88game.com", true }, - { "yulsn.com", true }, + { "yuliana-hotel.com", true }, + { "yulsn.io", true }, { "yum0.cn", true }, { "yumacountyazvotes.gov", true }, { "yumacountyco.gov", true }, { "yumechi.jp", true }, { "yumepolo.com", true }, + { "yumi2.jp", true }, { "yumiandryan.com", true }, + { "yumisign.com", true }, { "yumli.net", true }, { "yumm.menu", true }, { "yummycouple.net", true }, @@ -135543,15 +155801,16 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yuna.tg", false }, { "yunasecurity.com", true }, { "yuncaioo.com", false }, - { "yunhu365.com", true }, { "yunibalance.com", true }, { "yunjishou.pro", true }, { "yunloc.com", true }, + { "yunnet.ru", true }, { "yunqueradehenares.tk", true }, { "yuntong.tw", false }, { "yunzhu.li", false }, { "yupug.com", true }, { "yupulse.be", true }, + { "yuqi.me", true }, { "yura.cf", true }, { "yuricarlenzoli.it", true }, { "yurikirin.me", true }, @@ -135560,25 +155819,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yurinet.org", true }, { "yurisora.com", true }, { "yurist-vopros.gq", true }, - { "yurisviridov.com", true }, + { "yuriylysyuk.ru", true }, { "yurtdisigocmenlik.com", true }, { "yus-azaria.tk", true }, { "yusa.me", true }, { "yushanfang.recipes", true }, { "yusu.org", true }, + { "yusufipek.me", true }, { "yusukekato.com", true }, { "yusukesakai.com", true }, + { "yutabon.com", false }, { "yutakato.net", true }, { "yutangyun.com", true }, { "yuth.in", false }, + { "yuu.ink", true }, { "yuucchi.com", true }, + { "yuucdn.net", true }, { "yuugi.be", true }, { "yuuki0xff.jp", true }, + { "yuumari.com", true }, { "yuuta.moe", true }, - { "yuuwa-service.com", true }, { "yuvaindia.co.in", true }, { "yuvaskillfoundation.org", true }, - { "yuvibrands.com", true }, { "yuweetek.com", false }, { "yuwei.org", true }, { "yuweiji.com", true }, @@ -135586,25 +155848,43 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yux.fr", true }, { "yuxiangyuan.com", true }, { "yuxuan.org", true }, - { "yuy.info", true }, { "yuyantang.club", true }, + { "yuyucn.com", true }, { "yuzei.ml", true }, { "yuzei.tk", true }, + { "yuzneri.net", true }, { "yuzu.tk", true }, - { "yuzulia.work", true }, { "yuzurisa.com", true }, { "yvabph.com", true }, { "yvb.moe", true }, { "yveslegendre.fr", false }, { "yvesx.com", true }, { "yvettextreme.com", true }, - { "yvonix.com", true }, - { "yvonne-stingel.de", true }, + { "yvonnetake.nl", true }, { "yvonnethomet.ch", true }, { "yvonnewilhelmi.com", true }, { "yw.com", true }, + { "ywamphilippines.org", true }, + { "yxapp10.com", true }, + { "yxapp20.com", true }, + { "yxapp30.com", true }, + { "yxapp43.xyz", true }, + { "yxapp45.xyz", true }, + { "yxapp46.xyz", true }, + { "yxapp47.xyz", true }, + { "yxapp48.xyz", true }, { "yxbet43.com", true }, { "yxc.xyz", true }, + { "yxcpapp08.com", true }, + { "yxcpapp09.com", true }, + { "yxcpapp13.com", true }, + { "yxcpapp14.com", true }, + { "yxhc.cc", false }, + { "yxhlz.com", true }, + { "yxlon.cn", true }, + { "yxlon.co.jp", true }, + { "yxlon.com", true }, + { "yxlon.de", true }, { "yxt521.com", true }, { "yy-s.net", true }, { "yy153.com", false }, @@ -135620,12 +155900,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yy9721.com", true }, { "yy9728.co", true }, { "yya.men", true }, + { "yybx.top", true }, { "yyc.city", true }, { "yycbike.info", true }, { "yyr.im", true }, { "yyrss.com", false }, { "yyy116.com", true }, { "yyy608.com", true }, + { "yyyy.xyz", true }, { "yz86.cc", true }, { "yzal.io", true }, { "yzarul.com", true }, @@ -135637,23 +155919,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "yzh8.vip", true }, { "yzimroni.net", true }, { "yzy6666.com", true }, + { "yzydo.com", false }, { "yzyweb.cn", true }, { "yzzy.cc", false }, { "z-cert.nl", true }, { "z-coder.com", true }, + { "z-e.eu", true }, + { "z-epub.com", true }, + { "z-g-v.nl", true }, + { "z-kasino.ru", true }, { "z-konzept-nutrition.ru", true }, { "z-pc.net", true }, { "z-rejstejna.cz", true }, { "z-vector.com", true }, - { "z.cash", true }, { "z.is", true }, { "z.md", true }, { "z.mom", true }, - { "z.ps", true }, { "z.sh", true }, + { "z.sv", true }, { "z.tl", true }, { "z0.pm", true }, { "z00228.com", true }, + { "z0ey.de", true }, { "z0rro.net", true }, { "z11slot.co", true }, { "z1h.de", true }, @@ -135661,6 +155948,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z2a4.com", true }, { "z36533.com", true }, { "z3marketing.com", true }, + { "z3r0101.com", true }, { "z3s.nl", true }, { "z3u5.net", true }, { "z3ven.nl", true }, @@ -135691,7 +155979,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8011.com", true }, { "z8012.com", true }, { "z8013.com", true }, - { "z8015.com", true }, { "z8017.com", true }, { "z8023.com", true }, { "z8026.com", true }, @@ -135712,7 +155999,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8086.com", true }, { "z8087.com", false }, { "z8089.com", true }, - { "z8099.com", true }, { "z8106.com", true }, { "z8109.com", true }, { "z8113.com", true }, @@ -135720,7 +156006,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8125.com", true }, { "z8130.com", true }, { "z8132.com", true }, - { "z81365.com", true }, { "z8139.com", true }, { "z8150.com", true }, { "z8170.com", true }, @@ -135739,7 +156024,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8209.com", true }, { "z8210.com", true }, { "z8212.com", true }, - { "z8213.com", true }, { "z8218.com", true }, { "z8219.com", true }, { "z8225.com", true }, @@ -135747,19 +156031,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8230.com", true }, { "z8231.com", true }, { "z8232.com", true }, - { "z8233.com", true }, { "z82365.com", true }, { "z8817.com", true }, { "z8826.com", true }, { "z8851.com", true }, - { "z8852.com", true }, { "z8856.com", true }, - { "z8860.com", true }, { "z8861.com", true }, { "z8862.com", true }, { "z8865.com", true }, { "z8870.com", true }, - { "z8872.com", true }, { "z8875.com", true }, { "z8876.com", true }, { "z8879.com", true }, @@ -135770,7 +156050,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "z8917.com", true }, { "z8920.com", true }, { "z8922.com", true }, - { "z8926.com", true }, { "z9297.co", true }, { "z9397.com", false }, { "z9721.com", true }, @@ -135780,11 +156059,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zaagbaak.nl", true }, { "zaalleatherwear.nl", true }, { "zaanlijn.nl", true }, + { "zaba.training", true }, { "zabatsai-sam.tk", true }, { "zabbi.ru", true }, { "zabbix-monitoring.tk", true }, { "zabbix.tips", true }, { "zabbixtech.info", true }, + { "zabe.in", true }, { "zaboi.tk", true }, { "zabory-klg.ru", true }, { "zabszk.net", true }, @@ -135793,7 +156074,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zac.cy", true }, { "zacarias.com.ar", true }, { "zacatecasmeetings.com", true }, - { "zacbrown.org", true }, { "zacchaeus.co.uk", true }, { "zacco.site", true }, { "zach.codes", true }, @@ -135813,24 +156093,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zack.today", false }, { "zackattack.tk", true }, { "zackiarfan.ml", true }, + { "zackzack.at", true }, { "zaclys.com", false }, { "zacmi.com", false }, + { "zacwildpornstar.com", true }, + { "zad-academy.com", true }, { "zadania.wiki", true }, + { "zadavalka.ru", true }, { "zadrot.tk", true }, { "zadroweb.com", true }, { "zaelkids.it", true }, { "zaem.tv", true }, { "zaferaniehearing.com", true }, { "zaferbalkan.com", true }, - { "zaffit.com", true }, { "zaffittv.com", true }, { "zaffittv.mx", true }, { "zaffke.co", true }, - { "zafilmowani.pl", true }, { "zafrani.ga", true }, { "zagadki-cosmosa.tk", true }, - { "zagerijstraat51.be", true }, { "zagi.net", true }, + { "zagis.nl", true }, { "zagorod.spb.ru", true }, { "zagrabg.com", true }, { "zagranicablog.tk", true }, @@ -135838,16 +156120,19 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zahari.tk", true }, { "zahe.me", true }, { "zahirdanzavila.com", true }, + { "zahirsweetcreations.com", true }, { "zahn-frankl.at", true }, + { "zahnaerzte-website.de", true }, { "zahnarzt-duempten.de", true }, + { "zahnarzt-korsos.at", true }, { "zahnarzt-kramer.ch", true }, { "zahnarzt-kruft.de", true }, { "zahnarzt-neudecker.de", true }, + { "zahnarzt.se", true }, + { "zahnarztpraxis-schaerding.at", true }, { "zahnarztpraxis-simone-koch.de", true }, - { "zahnmedizinzentrum.com", false }, { "zahnraddruckerei.de", true }, { "zahrowski.com", true }, - { "zaidan.pw", true }, { "zaija.tk", true }, { "zaim-best.ml", true }, { "zaim15min.cf", true }, @@ -135892,6 +156177,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zakarotta.ga", true }, { "zakarpattya.fun", true }, { "zakaz.cf", true }, + { "zakazbiletov.kz", true }, { "zakcutner.com", true }, { "zakcutner.uk", true }, { "zakelijketaalcursus.nl", true }, @@ -135905,22 +156191,25 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zakonu.net.ru", true }, { "zakpex.com", true }, { "zakr.es", true }, + { "zakratheme.com", true }, + { "zakreconysloik.com.pl", true }, { "zakrentus-ostrus.space", true }, { "zakspartiesandevents.com", true }, { "zala.ml", true }, { "zalaetavoleibol.tk", true }, - { "zalamea.ph", true }, { "zalan.do", true }, { "zalax.xyz", true }, { "zalaxx.ddns.net", true }, { "zaledia.com", true }, { "zalef.tk", true }, + { "zaleycash.com", true }, { "zalgos.xyz", true }, { "zalihvoch.ga", true }, { "zaloghaz.ro", true }, { "zalohovaniburian.cz", true }, { "zaltv.com", true }, { "zalure.com", true }, + { "zalvus.com", true }, { "zam0th.tk", true }, { "zamalektoday.com", true }, { "zamarax.com", true }, @@ -135930,20 +156219,21 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zamenim.tk", true }, { "zametkin.tk", true }, { "zamki.tk", true }, + { "zammad.com", true }, + { "zammad.org", true }, { "zamok-love.tk", true }, { "zamok.cf", true }, { "zamokservis.com", true }, { "zamor.com.br", true }, { "zamorsky.tk", true }, { "zamos.ru", true }, - { "zamow.co", false }, + { "zamow.co", true }, { "zamtech.co.jp", true }, { "zanahd.co.za", true }, { "zananta.com", true }, { "zancompute.com", true }, { "zander.dk", true }, { "zandhuisjes.nl", true }, - { "zandmhomes.com", true }, { "zandra.cf", true }, { "zanellidesigns.co.uk", true }, { "zaneslaw.com", true }, @@ -135962,20 +156252,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zanthra.com", true }, { "zanzariere.roma.it", true }, { "zanzo.cz", true }, + { "zaoai.cf", true }, + { "zaoai.ga", true }, + { "zaoai.gq", true }, + { "zaoai.ml", true }, + { "zaoai.tk", true }, { "zaoext.com", true }, { "zaorejas.tk", true }, + { "zaoren.cf", true }, + { "zaoren.ga", true }, + { "zaoren.gq", true }, + { "zaoren.ml", true }, + { "zaoren.tk", true }, { "zap-mag.ru", true }, { "zapamini.ml", true }, { "zaparoh.com", true }, { "zapaska.tk", true }, + { "zapatilla.com.es", true }, + { "zapier-staging.com", true }, { "zapier.com", true }, { "zaplano.tk", true }, { "zapmaster14.com", true }, + { "zapnito.com", true }, { "zappbuildapps.com", false }, + { "zappi.io", true }, { "zappingarahal.tk", true }, { "zappingcuraduria.tk", true }, + { "zappo-entertainment.de", true }, + { "zapproved.com", true }, { "zapreaders.cf", true }, { "zaprefy.com", true }, + { "zapsibir.ru", true }, + { "zaptorg.xyz", true }, { "zapzockt.de", true }, { "zar-kripto.tk", true }, { "zarabiaj.com", true }, @@ -135988,13 +156296,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zarabotok-v-internete.gq", true }, { "zarabotok-veka.ga", true }, { "zarabotok2017.tk", true }, - { "zarabotok24stavki.ru", true }, + { "zarabotok24obzor.ru", true }, { "zarabotoker.tk", true }, { "zarabotoklaif.tk", true }, { "zarabotokvnet.tk", true }, { "zarabotokvseti.tk", true }, { "zaracraft.tk", true }, - { "zaraheating.co.uk", true }, { "zaramendez.net", true }, { "zaratan.fr", false }, { "zaratime.com", true }, @@ -136004,12 +156311,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zardain.tk", true }, { "zarezerwuj-nocleg.com", true }, { "zargescases.co.uk", true }, + { "zarinab.com", true }, { "zarja.tk", true }, { "zarjadnik.tk", true }, { "zarla.com", true }, + { "zarnu.com", true }, { "zarobotok-forum.ga", true }, { "zarobotok-forum.gq", true }, { "zarobotok-forum.ml", true }, + { "zarof-fkf.de", true }, { "zarok.tv", true }, { "zaroktv.com.tr", true }, { "zaroktv.krd", true }, @@ -136018,20 +156328,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zary.me", true }, { "zas4eku.tk", true }, { "zaschtnik.ga", true }, + { "zasekafe.cz", true }, + { "zasolka.guru", true }, { "zastenchivost.tk", true }, { "zasudili.ru", true }, + { "zataz.com", true }, + { "zatepli.eu", true }, { "zaterdagwelpen.tk", true }, - { "zatp.com", true }, + { "zatp.com", false }, { "zatrzymanie.com.pl", true }, { "zatsepin.by", true }, + { "zauberer-bauchredner.ch", true }, { "zauberwald.tk", true }, { "zaufanatrzeciastrona.pl", true }, { "zav-hub.ddns.net", true }, { "zavalianis.gr", true }, { "zavarkin.tk", true }, { "zavec.com.ec", false }, + { "zavedeno.com", true }, { "zaves.tk", true }, { "zawo-electric.de", true }, + { "zawodowe-szkolenia.com", true }, { "zayats.tk", true }, { "zayavka.cf", true }, { "zayavka.ml", true }, @@ -136043,26 +156360,29 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zaympodzalog.tk", true }, { "zayzoh.com", true }, { "zazaradio.tk", true }, + { "zazemleno.com", true }, + { "zazhong.cf", true }, + { "zazhong.ml", true }, { "zazza.tk", true }, { "zbanks.cn", true }, + { "zbarista.co.nz", true }, { "zberger.com", true }, { "zbetcheck.in", true }, { "zbib.org", true }, - { "zbozbo.net", true }, { "zbrain.ml", true }, { "zbrane-doplnky.cz", true }, + { "zbranetlapak.cz", true }, { "zbrsk.ru", true }, { "zbsj.pl", true }, - { "zbuilderz-lb.com", true }, { "zbut.bg", true }, { "zbyga.cz", true }, { "zbynekuher.cz", true }, { "zbyte.it", true }, { "zcarot.com", true }, { "zcarrot.com", true }, - { "zchuyot.co.il", true }, + { "zcb.fr", true }, + { "zcdtk.com", true }, { "zcode.tk", true }, - { "zcom.tech", true }, { "zcompany.ga", true }, { "zcompany.tk", true }, { "zcon.nl", true }, @@ -136074,7 +156394,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zd1010.com", true }, { "zd1515.com", false }, { "zd209.com", true }, - { "zd235.com", true }, + { "zd235.com", false }, { "zd236.com", true }, { "zd273.com", true }, { "zd275.com", true }, @@ -136089,7 +156409,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zd632.com", true }, { "zd635.com", true }, { "zd6464.com", true }, - { "zd652.com", true }, { "zd6565.com", true }, { "zd673.com", true }, { "zd6862.com", true }, @@ -136100,7 +156419,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zd6883.com", true }, { "zd6885.com", true }, { "zd6886.com", true }, - { "zd6889.com", true }, { "zd6893.com", true }, { "zd6896.com", true }, { "zd6898.com", true }, @@ -136117,82 +156435,84 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zd803.com", true }, { "zd805.com", true }, { "zd806.com", true }, - { "zd823.com", true }, { "zd826.com", true }, { "zd8826.com", true }, - { "zd8828.com", true }, - { "zd8835.com", true }, { "zd8838.com", true }, { "zd8839.com", true }, - { "zd8853.com", true }, { "zd8858.com", true }, { "zd8865.com", true }, { "zd8869.com", true }, { "zd8882.com", true }, { "zd9090.com", true }, - { "zd9797.com", true }, { "zdbl.de", true }, + { "zdcs.com", true }, { "zdenek-hejl.com", true }, + { "zdeneklavicky.cz", true }, { "zdenekpasek.com", true }, { "zdenekpasek.cz", true }, { "zdenekspacek.cz", true }, { "zdenekvecera.cz", true }, - { "zdev.me", true }, - { "zdnba.com", true }, { "zdorov-blog.gq", true }, { "zdorov.by", true }, { "zdorovayasimya.com", true }, { "zdorovcentr.ga", true }, + { "zdorovyj-rebjonok.ru", true }, { "zdrapti.tk", true }, { "zdrave-konzultace.cz", true }, + { "zdravec-bg.com", true }, { "zdravekonzultace.cz", true }, { "zdravesteny.cz", true }, - { "zdraveziti.eu", true }, { "zdravkovic.tk", true }, - { "zdravotnikurzy.cz", true }, { "zdravshop.sk", true }, + { "zdravypanelak.cz", true }, { "zdravystul.cz", true }, { "zdrowebodomowe.pl", true }, { "zdrowezywienie.edu.pl", true }, { "zdxiaoda.me", true }, { "zdymak.by", true }, + { "zdz.katowice.pl", false }, + { "ze-mag.info", true }, { "ze.delivery", true }, { "ze3kr.com", true }, { "zeadaniel.com", true }, { "zeal-and.jp", true }, { "zeal-interior.com", true }, - { "zealandia.games", true }, + { "zealar.com.au", true }, { "zealworks.jp", true }, { "zeanweb.tk", true }, { "zeb.fun", true }, { "zebbra.ro", true }, - { "zebel.io", true }, { "zeblog.tk", true }, { "zebra-serwis.pl", true }, { "zebradom.ru", true }, { "zebraguide.com", true }, { "zebravinken.tk", true }, + { "zebsaestheticsspa.co.za", true }, { "zebspeech.tk", true }, + { "zebulon.fr", true }, + { "zecanard.com", true }, + { "zecible.fr", true }, + { "zecircle.xyz", true }, { "zeckenhilfe.de", false }, { "zectazepia.tk", true }, { "zecuur.nl", true }, { "zedeko.pl", true }, - { "zedern-welt.de", true }, { "zedex.cn", true }, { "zednet.tk", true }, { "zeds-official.com", true }, + { "zedshaw.com", true }, { "zeedroom.be", true }, + { "zeeg.me", true }, + { "zeegeeks.com", true }, { "zeegers.family", true }, { "zeeheldenwijk-urk.nl", true }, { "zeekajakvaren.tk", true }, - { "zeekspace.com", true }, { "zeel.com", true }, { "zeelandbrug.tk", true }, - { "zeeshan.website", true }, + { "zeeshan.website", false }, { "zeet.tk", true }, { "zeetoppers.nl", true }, { "zefort.com", true }, - { "zegarkidlakazdego.pl", true }, { "zegels-danst.tk", true }, { "zegluje.net", true }, { "zeglujemy.net", true }, @@ -136202,6 +156522,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zehka.net", true }, { "zehkae.net", true }, { "zehnegira.ir", false }, + { "zehrailkeakyildiz.com", true }, { "zehy.de", true }, { "zehy.link", true }, { "zehy.me", true }, @@ -136215,7 +156536,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zeihsel.com", true }, { "zeilenmethans.nl", true }, { "zeilenvoorondernemers.nl", true }, - { "zeilenwind.com", true }, + { "zeilenwind.com", false }, { "zeilinstructeurs.tk", true }, { "zeilles.nu", true }, { "zeilschoolneptunus.nl", true }, @@ -136223,40 +156544,40 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zeit.sh", true }, { "zeitgitter.net", true }, { "zeitgitter.org", true }, - { "zeithaus.live", true }, { "zeitoununiversity.org", true }, { "zeitpunkt-kulturmagazin.de", true }, { "zeitschrift-lq.com", true }, { "zeitschriftlq.com", true }, { "zeitzer-turngala.de", true }, + { "zekelman.com", true }, { "zekerbewegenhengelo.nl", true }, { "zekerheidvanparcelinternational.nl", true }, { "zekinteractive.com", true }, { "zekra.tk", true }, { "zelandnamiru.cz", true }, { "zeldaliberty.tk", true }, + { "zeldamods.org", true }, { "zelena-armija.tk", true }, { "zelenazeme.cz", true }, { "zelendoma.ml", true }, { "zeliard.tk", true }, + { "zelizy.cz", true }, { "zelkor.ml", true }, - { "zell-mbc.com", true }, { "zelong.tk", true }, { "zeloz.xyz", true }, - { "zelt.in", true }, + { "zelpc.com", true }, { "zelvar.cz", true }, + { "zemledel.info", true }, { "zemli.tk", true }, { "zemlova.cz", true }, { "zemlyaki.ga", true }, { "zemlyaki.ml", true }, { "zemlyaki.tk", true }, - { "zemtime.com", true }, { "zen-solutions.io", true }, { "zen-zone.tk", true }, - { "zen3tech.com", true }, { "zenassociates.com", true }, - { "zenavita.com", true }, { "zenbalans.nl", true }, + { "zenbox.pl", true }, { "zenchain.com", true }, { "zencube.ga", true }, { "zendarhunters.tk", true }, @@ -136264,7 +156585,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zendev.tk", true }, { "zendrop.com", true }, { "zenerisprojekty.pl", true }, - { "zenfusion.fr", true }, + { "zenfires.com", true }, { "zengdong.ren", true }, { "zenghuanmin.cn", false }, { "zengold.com", true }, @@ -136272,10 +156593,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zenidees.com", true }, { "zeniran.com", true }, { "zenisi.com", true }, + { "zenit505.com", true }, { "zenitchik.org", true }, { "zenithappliance.co.uk", true }, - { "zenithars-ledger.de", true }, - { "zenithjet.com", true }, + { "zenithmanagement.net", true }, + { "zenithmedia.ca", false }, { "zenithvitalcare.com.au", true }, { "zenitkft.hu", true }, { "zenk-security.com", true }, @@ -136284,28 +156606,38 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zenlogic.com", true }, { "zenluxuryliving.com", true }, { "zenmail.ga", true }, - { "zenmate.com.tr", true }, + { "zenmassageusa.com", true }, + { "zenmod.in.rs", true }, { "zeno-dev.com", true }, + { "zenon.at", true }, + { "zenon.eu", true }, + { "zenpromo.ru", true }, { "zenride.co", true }, { "zenrtal-online-russia.ml", true }, + { "zenseal.co.uk", true }, { "zenspace.us", true }, { "zenstore.it", true }, { "zenti-im-zug.de", true }, { "zenti.cloud", true }, { "zentoid.com", true }, { "zentouch.gq", true }, + { "zentoy.club", true }, { "zentrumfuerchemie.de", true }, + { "zenvia.com", true }, { "zenvideocloud.com", true }, { "zenvite.com", true }, { "zenways.io", true }, - { "zenworkpro.com", true }, { "zeocax.com", false }, + { "zeoob.com", true }, + { "zep.us", true }, { "zephyrbk.com", true }, { "zephyrbookkeeping.com", true }, { "zephyretcoraline.com", true }, + { "zepig.nl", true }, { "zeplin.io", true }, { "zeppelflix.de", true }, { "zeppelin.ml", true }, + { "zepta.net", true }, { "zepter.cf", true }, { "zepter.ga", true }, { "zepter.gq", true }, @@ -136315,12 +156647,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zerg.uk", true }, { "zergy.net", true }, { "zerium.ml", true }, + { "zerknij.tv", true }, { "zerm.eu", true }, { "zerm.link", true }, { "zero-0.org", true }, { "zero-knigi.ml", true }, { "zero-link.com", true }, - { "zero-skill.net", true }, + { "zero-stress.net", true }, { "zero-sum.xyz", true }, { "zeroanarchy.com", true }, { "zerobelow.net", true }, @@ -136333,25 +156666,33 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zerocool.io", true }, { "zerocz.eu", false }, { "zerodeathsmd.gov", true }, + { "zerodensity.tv", true }, { "zerodhacapital.com", true }, { "zerodhareview.co", true }, + { "zerodoubtclub.com", true }, { "zerofox.gq", true }, - { "zerofy.de", true }, + { "zerofy.de", false }, + { "zerogamestore.ir", true }, + { "zerohash.com", true }, + { "zerohouse.co", true }, { "zeroknowledge.me", true }, + { "zerolime.se", true }, { "zerolink.click", true }, { "zerolink.es", true }, + { "zeromaxmoving.com", true }, + { "zeromedia.co.id", true }, { "zeromoment.marketing", true }, + { "zeronedefi.com", true }, { "zeronet.io", true }, { "zeroplast24.ru", true }, { "zeropoint.bg", true }, { "zerosector.io", true }, { "zeroseteatacado.com.br", true }, - { "zerosource.net", true }, { "zerotoleranceclan.tk", true }, { "zerotoone.de", true }, - { "zerotoone.studio", true }, { "zerotrust.plus", true }, { "zerotwo.ga", true }, + { "zerout.in", true }, { "zerowastesonoma.gov", true }, { "zeroz.cf", true }, { "zeroz.ga", true }, @@ -136361,20 +156702,24 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zertif.info", true }, { "zertifikatsshop.de", true }, { "zerto.com", true }, + { "zerty.de", false }, { "zeryn.net", true }, { "zesgoes.nl", true }, - { "zeshanfoundation.org", true }, + { "zeshanfoundation.org", false }, { "zespia.tw", false }, - { "zestadionu.pl", true }, + { "zestedesavoir.com", true }, { "zesty.co", true }, { "zestylemon.co.uk", true }, { "zeta.co.za", true }, { "zeta.hk", true }, { "zetadisseny.es", true }, + { "zetaglobal.com", false }, { "zetamode.com", true }, { "zetasystem.jp", true }, { "zetflix.pro", true }, { "zetflix.zone", true }, + { "zetflix24.online", true }, + { "zetokatowice.pl", true }, { "zettahertz.com", true }, { "zettaplan.ru", true }, { "zettaport.com", true }, @@ -136387,18 +156732,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zeus.wang", true }, { "zeuscorp.ga", true }, { "zeusec.co.jp", true }, + { "zeusembroidery.com.au", true }, { "zeusindia.tk", true }, { "zevelev.net", true }, { "zevenbergenbos.tk", true }, { "zevlee.me", true }, { "zewtie.com", true }, + { "zeynabacademy.com", true }, { "zeynepkam.com.tr", true }, + { "zeyoking.com", true }, { "zezov.com", true }, + { "zf.com", true }, { "zfast.com.br", true }, { "zfg.li", true }, { "zfid.pl", true }, { "zfj.hk", true }, - { "zfj.la", true }, + { "zfj.la", false }, { "zfj.lu", true }, { "zfly.me", true }, { "zfpsystems.com", true }, @@ -136407,8 +156756,10 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zfyl8.com", true }, { "zg-dyw.net", true }, { "zgan.ga", true }, + { "zgmining.com", false }, { "zgndh.com", true }, { "zgrep.org", true }, + { "zgw.cz", true }, { "zgyl8.ml", true }, { "zh.fyi", true }, { "zh.search.yahoo.com", false }, @@ -136423,28 +156774,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zhang.ge", true }, { "zhangda.xyz", true }, { "zhangfangzhou.com", true }, - { "zhangge.net", true }, - { "zhanghao.me", true }, { "zhanghao.org", true }, { "zhangjet.com", true }, + { "zhangjing.space", true }, { "zhanglizhi.ml", true }, + { "zhangmenglong.cn", true }, { "zhangpeng.ai", true }, - { "zhangshuqiao.org", true }, { "zhangwendao.com", true }, { "zhangyiming.tech", true }, - { "zhangyuhao.com", true }, + { "zhangyuhao.com", false }, { "zhanxiangyang.com", true }, - { "zhanzhangb.com", false }, { "zhaochen.xyz", true }, { "zhaochengtan.com", true }, { "zhaodao.ai", true }, { "zhaoeq.com", true }, + { "zhaohanman.com", true }, { "zhaopage.com", true }, { "zhaostephen.com", true }, { "zhaoxixiangban.cc", true }, { "zhaozhiru.com", true }, { "zhattyt.com", false }, { "zhbot.org", true }, + { "zhceres.com", true }, { "zhcexo.com", true }, { "zhdun.tk", true }, { "zhelanie.ml", true }, @@ -136452,18 +156803,15 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zheldorinform.ga", true }, { "zheltyy.at", true }, { "zhen-chen.com", true }, - { "zhendre.com", true }, { "zhengjie.com", true }, { "zhengouwu.com", true }, - { "zhengzihan.com", true }, { "zhenic.ir", true }, { "zhenn.fr", true }, { "zhenyan.org", true }, { "zhestokiemechtyi.tk", true }, { "zhestokijavtor.tk", true }, { "zhi.ci", true }, - { "zhibo16.live", true }, - { "zhibo166.com", true }, + { "zhiboba.fun", true }, { "zhidkiy-kashtan.ga", true }, { "zhih.me", true }, { "zhihua-lai.com", true }, @@ -136473,15 +156821,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zhima.io", true }, { "zhimajk.com", true }, { "zhimingwang.org", true }, + { "zhina.wiki", true }, { "zhinengda.com", true }, { "zhis.ltd", true }, { "zhitanska.com", true }, { "zhivoe.tk", true }, - { "zhiwei.me", true }, { "zhixiu.com", true }, { "zhiyulife.pp.ua", true }, { "zhizi.ca", true }, - { "zhl123.cn", true }, { "zhl123.com", true }, { "zhodani.space", true }, { "zhodino.cf", true }, @@ -136491,49 +156838,60 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zhongqiao.com", true }, { "zhongxigo.com", true }, { "zhongzicili.ws", true }, + { "zhongzilou.com", true }, { "zhouba.cz", true }, { "zhoujianghan.com", false }, { "zhoujiashu.com", true }, { "zhoujunlawer.ml", true }, + { "zhoukan.fun", false }, { "zhoukz.com", true }, + { "zhousiru.com", true }, { "zhoutiancai.cn", true }, + { "zhouyipro.com", true }, { "zhouzanxi.com", true }, { "zhovner.com", true }, { "zhthings.com", true }, { "zhuangqiu.com", true }, - { "zhuanyekong.com", true }, - { "zhuihoude.com", true }, { "zhuji.com", true }, { "zhuji.com.cn", true }, { "zhuji.org", true }, { "zhuji5.com", true }, { "zhujicaihong.com", true }, { "zhujiceping.com", true }, + { "zhujike.net", true }, { "zhukaev.ml", true }, { "zhuktrans.msk.ru", true }, { "zhunlink.com", true }, + { "zhuoyuelicai.com", true }, { "zhuqiang.com", true }, { "zhurnalyu.ga", true }, + { "zhz.moe", true }, { "zi.is", true }, { "zi5.net", true }, { "ziad87.net", false }, + { "ziai.cf", true }, + { "ziai.ga", true }, + { "ziai.gq", true }, + { "ziai.ml", true }, + { "ziaiai.com", true }, { "ziarajoias.com.br", true }, { "ziaulnmonzur.tk", true }, - { "zidanpainting.com", true }, + { "zible.io", true }, + { "zidanpainting.com", false }, + { "ziddea.com", true }, { "ziegenhagel.com", true }, { "ziegler-heizung-frankfurt.de", true }, { "zielonakarta.com", true }, { "ziemlich-zackig.de", true }, { "ziemlichzackig.de", true }, - { "zifb.in", true }, { "zifoapptest.com", true }, - { "zigao.info", false }, + { "ziftone.com", true }, + { "zigao.info", true }, { "zigarn.com", true }, { "ziggi.tk", true }, { "ziggletech.com", true }, { "ziggo.nl", true }, { "zighinetto.org", true }, - { "zigi.io", true }, { "zigoomar.tk", true }, { "zigottos.fr", true }, { "zigsphere.com", false }, @@ -136541,13 +156899,13 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zihao.me", false }, { "zihari.com", true }, { "zihun.club", true }, - { "ziin.de", true }, { "zij-aan-zij.be", true }, - { "zijemvedu.sk", true }, + { "zijderlaangroup.nl", true }, { "zijinbor.com", true }, { "zijingbt.cn", true }, { "zijingbt.com", true }, { "zijingbt.net", true }, + { "zijn.co.zw", true }, { "zijspancross.tk", true }, { "zikinf.com", true }, { "zikipedia.ml", true }, @@ -136558,6 +156916,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zillertaleralpen.net", true }, { "zilon.com.co", true }, { "zilore.com", true }, + { "zilpay.io", true }, { "zilsen.com", true }, { "zilsoft.net", false }, { "zilv.life", true }, @@ -136567,6 +156926,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zima.io", true }, { "zimaoxy.com", true }, { "zimbromotor.pt", true }, + { "zimhosiery.com", true }, { "zimiao.moe", true }, { "zimkaru.ga", true }, { "zimmer-voss.de", true }, @@ -136576,46 +156936,54 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zindagilive.tk", true }, { "zindec.com", true }, { "zinewords.com", true }, + { "zingermans.com", true }, { "zinglix.xyz", true }, { "zingpetfood.com", true }, { "zings.eu", true }, { "zinhar.tk", true }, { "zinkmetselwerken.nl", true }, + { "zinnco.com", true }, { "zinniazorgverlening.nl", true }, + { "zinnov.com", true }, { "zinnowitzer-ferienwohnung.de", true }, - { "zinoui.com", true }, { "zinsserplasticsurgery.com", true }, + { "zio-enzo.eu", true }, { "zion-craft.tk", true }, { "zionaesthetics.com.sg", true }, { "ziondrive.com.br", true }, + { "zionladderp.com", true }, { "zionnationalpark.net", true }, { "zionsvillelocksmiths.com", true }, - { "ziontech.eu.org", true }, - { "zionvps.com", false }, + { "zip", true }, + { "zip4.pl", true }, { "zipalerts.com", true }, { "ziparcfhive.ga", true }, + { "zipatlas.com", true }, + { "zipjobs.com", true }, { "zipkey.de", true }, { "zippie.tk", true }, { "zippo-days.me", false }, + { "zippricami.com", true }, { "zippyshare.com", true }, { "ziprecruiter.com", true }, { "ziqijiang.com", false }, { "zir-online.com", true }, + { "zir.com.ua", true }, { "ziraatweb.com", true }, - { "zircode.com", true }, + { "zircly.com", true }, { "zireon.tk", true }, { "zirka24.net", true }, { "ziroh.be", true }, { "ziron.com", true }, { "ziroux.net", true }, - { "zirrka.de", false }, - { "zirtual.com", true }, + { "zirrka.de", true }, + { "zirveyazilim.net", true }, + { "zisoo.nl", true }, { "zistemo.com", true }, - { "zitadel.ch", true }, + { "zitadel.ch", false }, { "zitadel.cloud", true }, { "zitadel.com", true }, { "zithromaxstrepthroat.gq", true }, - { "zitseng.com", true }, { "zitstabureau24.nl", true }, { "zivava.ge", true }, { "zivimexico.com", true }, @@ -136630,9 +156998,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zizcollections.com", true }, { "zizibook.ml", true }, { "zizin.tk", true }, + { "zizoled.com", true }, { "zjawa.pro", true }, { "zjc3.com", true }, - { "zjisolutions.uk", false }, + { "zjeunesse.com", true }, + { "zjsnrwiki.com", true }, { "zju.tv", true }, { "zjuqsc.com", true }, { "zjy7722.ml", true }, @@ -136641,29 +157011,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zk.gd", true }, { "zk9.nl", true }, { "zkbitcoin.com", true }, + { "zkg-news.azurewebsites.net", true }, { "zking.ga", true }, { "zklcdc.top", false }, - { "zklokotskehory.cz", true }, { "zko.pub", true }, { "zkocdn.com", true }, { "zkoclub.cn", true }, { "zkoclub.com", true }, { "zkontrolujsiauto.cz", true }, + { "zkrd.de", true }, + { "zkrew.red", true }, { "zkvi.nl", true }, { "zkwolf.top", true }, - { "zkzone.net", true }, { "zl-19.com", true }, { "zl-29.com", true }, { "zl-59.com", true }, - { "zl-69.com", true }, - { "zl-79.com", true }, { "zl-89.com", true }, - { "zl-auto.tk", true }, + { "zl.lv", true }, { "zl0707.com", true }, { "zl071.com", true }, { "zl0909.com", true }, { "zl0iu.com", true }, - { "zl0sz.com", true }, { "zl1212.com", true }, { "zl1515.com", true }, { "zl2020.com", true }, @@ -136689,31 +157057,32 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zl8686.com", true }, { "zl8787.com", true }, { "zl8824.com", true }, - { "zl8861.com", true }, { "zl9191.com", true }, { "zl969.com", true }, { "zl9696.com", true }, { "zl9898.com", true }, { "zlarin.tk", true }, { "zlatakus.cz", true }, + { "zlatamira.ru", true }, { "zlatan-ibrahimovic.tk", true }, { "zlatanonline.tk", true }, - { "zlatnictvoadamas.sk", true }, + { "zlato.ua", true }, { "zlatograd.bg", true }, { "zlatom.ru", true }, { "zlatopil.com", false }, { "zlavomat.sk", true }, + { "zlc1994.com", true }, { "zlhuodong.vip", true }, { "zlima12.com", true }, { "zlogic.xyz", true }, { "zlogin.nl", true }, - { "zlong6.net", true }, { "zlotykameleon.tk", true }, { "zlotyslawecin.tk", true }, { "zloybot.tk", true }, + { "zlpa.loan", true }, { "zlr.hu", true }, { "zlypi.com", true }, - { "zmaloveane.pl", true }, + { "zman.co.il", true }, { "zmarta.de", true }, { "zmarta.dk", true }, { "zmarta.fi", true }, @@ -136728,14 +157097,11 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zmessages.com", false }, { "zmeya.tk", true }, { "zmiguel.me", true }, - { "zmk.fr", true }, { "zmprjg.ml", true }, - { "zmsp.top", true }, { "zmuda.tk", true }, { "zmy.im", false }, { "zmy666.com", true }, { "zmydlona.pl", true }, - { "znaceni-max.cz", true }, { "znachenie-sna.cf", true }, { "znachenie-sna.ga", true }, { "znachenie-sna.ml", true }, @@ -136750,17 +157116,22 @@ static const nsSTSPreload kSTSPreloadList[] = { { "znakomstvo.tk", true }, { "znalec-okna.cz", true }, { "znanie-sila.tk", true }, + { "znanio.ru", true }, + { "znanium.com", true }, { "znaniya.cf", true }, { "znanje.gq", true }, { "znation.nl", true }, + { "znau.ru", true }, { "znbr.com", true }, { "znd.jp", true }, - { "zngay.com", true }, { "znhglobalresources.com", true }, { "znich.tk", true }, { "znidar.org", true }, + { "zniis.ru", true }, { "zning.net.cn", true }, + { "znjc.top", true }, { "znn.co.jp", true }, + { "znowuwrocisz.pl", true }, { "znwvw.net", true }, { "zoa.one", true }, { "zobraz.cz", true }, @@ -136771,7 +157142,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zocoxx.com", true }, { "zode.co", true }, { "zodgame.fun", false }, + { "zodgame.xyz", true }, { "zodiacohouses.com", true }, + { "zodiaconline.com", true }, { "zodiak.tk", true }, { "zoedale.co.uk", true }, { "zoedijital.com", true }, @@ -136780,6 +157153,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zoepolitics.ga", true }, { "zoepolitics.gq", true }, { "zoepolitics.ml", true }, + { "zoeysinnpornstar.com", true }, + { "zoeyvid.de", true }, { "zof.kh.ua", true }, { "zoflora.co.uk", true }, { "zofoke.com", true }, @@ -136793,9 +157168,8 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zofzpcb.com", true }, { "zogatest.tk", true }, { "zogevikst.nl", true }, - { "zohar.wang", true }, { "zohditech.com", true }, - { "zohra.ninja", true }, + { "zoidberg.tv", true }, { "zoigl.club", true }, { "zoisfinefood.fr", true }, { "zojadravai.com", true }, @@ -136805,27 +157179,28 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zokster.net", false }, { "zokuomthawn.tk", true }, { "zollernalbtour.de", true }, + { "zollo-hauswartung.ch", true }, { "zollprozess.ch", true }, { "zoloft-medication.ml", true }, { "zoloftmedication.gq", true }, { "zoloftpills.tk", true }, { "zoloftprice.cf", true }, - { "zolokar.xyz", true }, { "zolotie-ptichki.tk", true }, { "zolotistyi-kofe.gq", true }, - { "zoloto-peterburg.ru", true }, - { "zoloto-spb-skupka.ru", true }, + { "zolotoinform.ru", true }, { "zolotoioasis.ml", true }, - { "zolotopetrograd.ru", true }, + { "zolotoy-standart.com.ua", true }, { "zolucky.com", true }, { "zolushka-1950.tk", true }, { "zolw.info", true }, { "zom.bi", true }, + { "zomatree.live", true }, { "zombie-40th.com", true }, { "zombie-apocalypse-survival.com", true }, { "zombie.cam", true }, { "zombiecrowinc.tk", true }, { "zombielandkf.tk", true }, + { "zombieloadattack.com", true }, { "zombiemix.tk", true }, { "zombiepassions.com", true }, { "zombiesecured.com", true }, @@ -136836,6 +157211,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zona-japonesa.tk", true }, { "zonadetestes.com", true }, { "zonadjadoel.com", true }, + { "zonagioco.it", true }, { "zonagratisan.ga", true }, { "zonainuyasha.tk", true }, { "zonanews.tk", true }, @@ -136843,17 +157219,14 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zonaquimica.tk", true }, { "zonarumbera.tk", true }, { "zonatelevision.tk", true }, - { "zonautas.com", true }, + { "zonazealots.com", true }, { "zondervanacademic.com", true }, - { "zone-5.de", true }, { "zone-de-confiance.fr", true }, { "zone-hack.tk", true }, { "zone-sys.jp", true }, { "zone.ee", true }, { "zone.eu", false }, { "zone.fi", false }, - { "zone.lt", true }, - { "zone.lv", true }, { "zone3000.tk", true }, { "zone39.com", true }, { "zoneadsl.com", true }, @@ -136861,10 +157234,12 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zoneblog.tk", true }, { "zonecheck.org", true }, { "zonecloud.ee", true }, - { "zoneface.com", true }, + { "zonediary.com", true }, { "zonehomesolutions.com", true }, { "zonemaster.fr", true }, { "zonemaster.net", true }, + { "zonepdf.com", true }, + { "zones.com", true }, { "zonesec.org", true }, { "zonesons.com", true }, { "zonewatcher.com", true }, @@ -136877,7 +157252,9 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zonneglossis.tk", true }, { "zonnigzieuwent.nl", true }, { "zontractors.com", true }, - { "zoo-jewelry.com", true }, + { "zoo-dog.ru", true }, + { "zoo-tver.ru", true }, + { "zoo.org.au", true }, { "zoo24.de", true }, { "zooforum.tk", true }, { "zoogbook.ml", true }, @@ -136888,24 +157265,31 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zookids.uy", true }, { "zoola.io", true }, { "zoolaboo.de", true }, + { "zooll.net", true }, { "zoological-gardens.eu", true }, { "zoom-eco.net", true }, { "zoom.earth", true }, + { "zoomaal.com", true }, { "zoomcar.pro", true }, { "zoomek.com", true }, + { "zoomerhost.com", true }, { "zoomgov.com", true }, + { "zoomir-ra.ru", true }, + { "zoomsphere.com", true }, + { "zoones.net", true }, { "zooom.azurewebsites.net", true }, { "zooom2.azurewebsites.net", true }, { "zoop.ml", false }, { "zooparadies.eu", true }, { "zoopix.ir", true }, { "zooplankton.no", true }, + { "zoosfera12.ru", true }, { "zoot.org", true }, { "zootime.net", true }, { "zootime.org", true }, + { "zootsys.com", true }, { "zoowiki.us", true }, { "zooxdata.com", true }, - { "zoptiks.com", false }, { "zopyx.com", true }, { "zor.com", true }, { "zorasvobodova.cz", true }, @@ -136915,25 +157299,26 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zorgenvoorjean.be", true }, { "zorgenvoormaria.be", true }, { "zorghuys.nl", true }, - { "zorgkey.nl", true }, { "zorgnetwerkenabr.nl", true }, { "zorgonderwijsnu.nl", true }, + { "zorgvanoranje.nl", false }, + { "zorgverzekeringslijn.nl", true }, { "zorig.ch", true }, { "zorium.org", false }, + { "zorkin.uz", true }, { "zornica.tk", true }, { "zorntt.fr", true }, { "zorox.sex", true }, + { "zorro.management", true }, { "zorte.net", true }, { "zorz.info", true }, { "zorzorfm.ml", true }, { "zoske.it", true }, - { "zoso.ro", false }, { "zotan.email", true }, { "zotan.network", true }, { "zotan.photography", true }, { "zotan.photos", true }, { "zotan.pictures", true }, - { "zotan.pw", true }, { "zotan.services", true }, { "zotan.stream", true }, { "zotan.studio", true }, @@ -136941,65 +157326,72 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zotero.org", true }, { "zoto.ga", true }, { "zottika.com", true }, + { "zotum.net", true }, { "zouaouitransport.fr", true }, + { "zoubaa.de", false }, { "zouk.info", true }, { "zouyaoji.top", true }, { "zova.io", true }, { "zovirax-cream.gq", true }, { "zovirax-cream.ml", true }, - { "zovovo.com", true }, + { "zovoscitvfu.cz", true }, { "zowe.ru", true }, { "zoyride.com", true }, { "zozitdat.nl", true }, { "zoznamka.tk", true }, { "zoznamrealit.sk", true }, { "zozzle.co.uk", true }, - { "zp.do", true }, { "zp25.ninja", true }, + { "zpapieru.pl", true }, { "zpasathagroup.com", true }, + { "zphmetalus.pl", true }, { "zpider.cloud", true }, { "zporno.sex", true }, + { "zpozdeno.cz", true }, { "zpozdrowieniem.pl", true }, { "zprogramming.tk", true }, { "zq.com.sg", true }, - { "zqstudio.top", false }, { "zqwqz.org", true }, + { "zrali.com", true }, { "zravyobrazky.cz", true }, { "zravypapir.cz", true }, { "zrejstejna.cz", true }, { "zrgmedical.com", true }, { "zrinski.tk", true }, + { "zrkhosting.com", true }, { "zrkr.de", true }, { "zrniecka-pre-sny.sk", true }, { "zrnieckapresny.sk", true }, { "zrobysama.com.ua", true }, { "zrs-meissen.de", true }, { "zry.io", true }, - { "zs6688.cc", true }, + { "zs6688.cc", false }, { "zsaqwq.com", true }, { "zsbd.xyz", false }, + { "zscaler.es", true }, { "zscales.com", false }, { "zsdublovice.cz", true }, { "zseartcc.org", true }, { "zselicivt.hu", true }, - { "zsi.com.tr", false }, + { "zshmvp.com", true }, { "zsien.cn", true }, { "zskomenskeho.cz", true }, { "zsofit.com.au", true }, { "zsoltbereczki.tk", true }, - { "zsoltsandor.me", true }, - { "zsoltsandor.xyz", true }, - { "zsombor.net", true }, + { "zsplesivec.cz", true }, { "zsq.im", true }, { "zsrbcs.com", true }, { "zstgmnachod.cz", true }, { "zsyaolong.com", false }, { "zt360.net", true }, { "zta.training", true }, - { "zten.org", true }, - { "ztickerz.nl", false }, + { "ztable.io", true }, + { "ztctarrin.com", true }, + { "ztickerz.nl", true }, { "ztmovies.cf", true }, { "ztn.sh", true }, + { "ztu75.ru", true }, + { "ztv.su", true }, { "zuan-in.com", true }, { "zuan-in.net", true }, { "zubby.com", true }, @@ -137007,36 +157399,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zubenciy.tk", true }, { "zubilo-perm.ru", true }, { "zubnivodni.cz", true }, + { "zubprotez.ru", true }, { "zubr.net", true }, { "zubro.net", false }, { "zucalgrappe.it", true }, { "zudomc.me", true }, { "zuefle.net", true }, { "zuehlcke.de", true }, + { "zuehlke-coaching.de", true }, { "zuffel.com", true }, { "zufuribita.tk", true }, { "zug-anwalt.de", false }, - { "zugfahrplan.com", true }, + { "zugspitz-region-gmbh.de", true }, { "zuhausejobs.at", true }, { "zuhausejobs.com", true }, + { "zuhauserealestate.com", true }, { "zuhur2021.tk", true }, { "zui.moe", true }, - { "zuiacg.com", true }, { "zuiderlokaal.nl", true }, + { "zuidplein.nl", true }, { "zuijia.com", true }, { "zuim.de", true }, { "zuishuzi.com", true }, { "zuitaotu.com", true }, + { "zuivelonline.nl", true }, { "zuiverjegeest.nl", true }, + { "zuixindianshiju.com", true }, { "zukonar.ru", true }, { "zukong.party", true }, { "zukunft-mobilitaet.net", true }, + { "zukunftswege.at", true }, { "zula.africa", true }, { "zulaoyun.ml", true }, { "zulfumehmet.tk", true }, + { "zulu.id", true }, { "zulu.ro", true }, - { "zuluconnect.net", true }, - { "zulybot.xyz", true }, { "zum-baur.de", true }, { "zum-ziegenhainer.de", true }, { "zumba-oostende.be", true }, @@ -137045,6 +157442,7 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zummoricambi.com", true }, { "zumtaedanceschool.co.za", true }, { "zumturm.org", true }, + { "zumub.com", true }, { "zumwildenaffen.com", true }, { "zund-app.com", true }, { "zundapp.one", true }, @@ -137052,7 +157450,6 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zundappachterhoek.nl", true }, { "zunlong0.com", true }, { "zuoai.net", true }, - { "zuomiea.com", false }, { "zuomin.tk", true }, { "zupit.it", true }, { "zuppy.pm", true }, @@ -137062,15 +157459,17 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zurmas-design.tk", true }, { "zuru.ml", true }, { "zuru.tk", true }, + { "zusammen-grossartig.de", true }, { "zusjesvandenbos.nl", true }, { "zuss.tk", true }, { "zusterjansen.nl", true }, { "zuu.fi", true }, { "zuviel.space", true }, { "zuyzi.com", true }, - { "zuzannastrycharska.pl", false }, { "zuzumba.es", true }, + { "zvcdn.de", true }, { "zvejonys.lt", true }, + { "zverovod.info", true }, { "zverskij-site.tk", true }, { "zvezdy-porno.ml", true }, { "zvps.uk", true }, @@ -137087,17 +157486,27 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zwergenfeste.ch", true }, { "zwergenfreiheit.at", true }, { "zwerimex.com", true }, - { "zwhblog.xyz", true }, + { "zwerkandsons.com", true }, + { "zwhblog.xyz", false }, + { "zwickau.de", true }, { "zwilla.de", true }, + { "zwit.au", true }, + { "zwit.org", true }, { "zwitserlandautohuur.nl", true }, + { "zwitterion.au", true }, { "zwitterion.org", true }, { "zwk.de", true }, { "zwofroue.ch", true }, { "zwollemag.nl", true }, { "zwollemagazine.nl", true }, + { "zwrotzalot.pl", true }, { "zwy.ch", false }, { "zwyr157wwiu6eior.com", true }, + { "zwz.cz", true }, { "zx1168.com", false }, + { "zxcs.me", true }, + { "zxcs.wiki", true }, + { "zxdsj1.com", true }, { "zxe.com.br", true }, { "zxfiles.tk", true }, { "zxity.co.uk", true }, @@ -137107,37 +157516,41 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zxtcode.com", true }, { "zy.md", true }, { "zy.si", true }, - { "zybbo.com", true }, { "zycao.com", false }, { "zycie.news", true }, { "zyciedirect.pl", true }, { "zyciegwiazd24.pl", true }, { "zyciepl.com", true }, + { "zycjd.com", false }, { "zycrypto.com", true }, { "zydecozityradio.tk", true }, { "zydronium.com", true }, { "zydronium.nl", true }, { "zyex.vip", true }, { "zygfrydadamski.tk", true }, + { "zygmuntsergio.com", true }, { "zygozoon.com", true }, + { "zyiaactive.com", true }, { "zylai.com", true }, { "zylai.net", true }, + { "zylo.com", true }, + { "zymewire.com", true }, { "zymmm.com", true }, { "zyno.space", true }, { "zypern-firma.com", true }, + { "zypernreisen.com", true }, { "zypr.pw", true }, + { "zyrex.eu.org", true }, + { "zyrexsolutions.com", true }, { "zyria.de", true }, { "zyrillezuno.com", true }, - { "zyter.com", true }, + { "zyshow.co", true }, + { "zythom.fr", true }, { "zythromax.ga", true }, { "zyul.ddns.net", true }, { "zywave.co.uk", true }, { "zyx3d.tk", true }, { "zyzardx.com", true }, - { "zyzsdy.com", true }, - { "zz.gy", true }, - { "zz017.com", true }, - { "zz204.com", true }, { "zz342.com", true }, { "zz5197.co", true }, { "zz6729.co", true }, @@ -137150,17 +157563,18 @@ static const nsSTSPreload kSTSPreloadList[] = { { "zz9728.co", true }, { "zz993.com", true }, { "zzcc.de", false }, - { "zzdiesel.com", true }, + { "zzcc.loan", true }, { "zzekj.net", true }, { "zzf.red", true }, - { "zzls.xyz", true }, { "zzops.eu", true }, { "zzops.net", true }, { "zzops.nl", true }, { "zzops.org", true }, - { "zzpwoerden.nl", true }, + { "zzphuis.nl", true }, { "zzsec.org", true }, { "zzw.ca", true }, - { "zzyzxphile.com", true }, + { "zzz-diary.com", true }, + { "zzzmode.com", true }, { "zzzz365.com", false }, + { "zzzzz.click", true }, }; diff --git a/security/nss/lib/ckfw/builtins/certdata.txt b/security/nss/lib/ckfw/builtins/certdata.txt index 4645042ba9..f604b265e2 100644 --- a/security/nss/lib/ckfw/builtins/certdata.txt +++ b/security/nss/lib/ckfw/builtins/certdata.txt @@ -1933,170 +1933,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -# -# Certificate "Camerfirma Global Chambersign Root" -# -# Issuer: CN=Global Chambersign Root,OU=http://www.chambersign.org,O=AC Camerfirma SA CIF A82743287,C=EU -# Serial Number: 0 (0x0) -# Subject: CN=Global Chambersign Root,OU=http://www.chambersign.org,O=AC Camerfirma SA CIF A82743287,C=EU -# Not Valid Before: Tue Sep 30 16:14:18 2003 -# Not Valid After : Wed Sep 30 16:14:18 2037 -# Fingerprint (SHA-256): EF:3C:B4:17:FC:8E:BF:6F:97:87:6C:9E:4E:CE:39:DE:1E:A5:FE:64:91:41:D1:02:8B:7D:11:C0:B2:29:8C:ED -# Fingerprint (SHA1): 33:9B:6B:14:50:24:9B:55:7A:01:87:72:84:D9:E0:2F:C3:D2:D8:E9 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Camerfirma Global Chambersign Root" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061 -\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155 -\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101 -\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004 -\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150 -\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060 -\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103 -\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061 -\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155 -\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101 -\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004 -\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150 -\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060 -\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103 -\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\001\000 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\004\305\060\202\003\255\240\003\002\001\002\002\001\000 -\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 -\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061\047 -\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155\145 -\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101\070 -\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004\013 -\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150\141 -\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060\036 -\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103\150 -\141\155\142\145\162\163\151\147\156\040\122\157\157\164\060\036 -\027\015\060\063\060\071\063\060\061\066\061\064\061\070\132\027 -\015\063\067\060\071\063\060\061\066\061\064\061\070\132\060\175 -\061\013\060\011\006\003\125\004\006\023\002\105\125\061\047\060 -\045\006\003\125\004\012\023\036\101\103\040\103\141\155\145\162 -\146\151\162\155\141\040\123\101\040\103\111\106\040\101\070\062 -\067\064\063\062\070\067\061\043\060\041\006\003\125\004\013\023 -\032\150\164\164\160\072\057\057\167\167\167\056\143\150\141\155 -\142\145\162\163\151\147\156\056\157\162\147\061\040\060\036\006 -\003\125\004\003\023\027\107\154\157\142\141\154\040\103\150\141 -\155\142\145\162\163\151\147\156\040\122\157\157\164\060\202\001 -\040\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 -\003\202\001\015\000\060\202\001\010\002\202\001\001\000\242\160 -\242\320\237\102\256\133\027\307\330\175\317\024\203\374\117\311 -\241\267\023\257\212\327\236\076\004\012\222\213\140\126\372\264 -\062\057\210\115\241\140\010\364\267\011\116\240\111\057\111\326 -\323\337\235\227\132\237\224\004\160\354\077\131\331\267\314\146 -\213\230\122\050\011\002\337\305\057\204\215\172\227\167\277\354 -\100\235\045\162\253\265\077\062\230\373\267\267\374\162\204\345 -\065\207\371\125\372\243\037\016\157\056\050\335\151\240\331\102 -\020\306\370\265\104\302\320\103\177\333\274\344\242\074\152\125 -\170\012\167\251\330\352\031\062\267\057\376\134\077\033\356\261 -\230\354\312\255\172\151\105\343\226\017\125\366\346\355\165\352 -\145\350\062\126\223\106\211\250\045\212\145\006\356\153\277\171 -\007\320\361\267\257\355\054\115\222\273\300\250\137\247\147\175 -\004\362\025\010\160\254\222\326\175\004\322\063\373\114\266\013 -\013\373\032\311\304\215\003\251\176\134\362\120\253\022\245\241 -\317\110\120\245\357\322\310\032\023\372\260\177\261\202\034\167 -\152\017\137\334\013\225\217\357\103\176\346\105\011\045\002\001 -\003\243\202\001\120\060\202\001\114\060\022\006\003\125\035\023 -\001\001\377\004\010\060\006\001\001\377\002\001\014\060\077\006 -\003\125\035\037\004\070\060\066\060\064\240\062\240\060\206\056 -\150\164\164\160\072\057\057\143\162\154\056\143\150\141\155\142 -\145\162\163\151\147\156\056\157\162\147\057\143\150\141\155\142 -\145\162\163\151\147\156\162\157\157\164\056\143\162\154\060\035 -\006\003\125\035\016\004\026\004\024\103\234\066\237\260\236\060 -\115\306\316\137\255\020\253\345\003\245\372\251\024\060\016\006 -\003\125\035\017\001\001\377\004\004\003\002\001\006\060\021\006 -\011\140\206\110\001\206\370\102\001\001\004\004\003\002\000\007 -\060\052\006\003\125\035\021\004\043\060\041\201\037\143\150\141 -\155\142\145\162\163\151\147\156\162\157\157\164\100\143\150\141 -\155\142\145\162\163\151\147\156\056\157\162\147\060\052\006\003 -\125\035\022\004\043\060\041\201\037\143\150\141\155\142\145\162 -\163\151\147\156\162\157\157\164\100\143\150\141\155\142\145\162 -\163\151\147\156\056\157\162\147\060\133\006\003\125\035\040\004 -\124\060\122\060\120\006\013\053\006\001\004\001\201\207\056\012 -\001\001\060\101\060\077\006\010\053\006\001\005\005\007\002\001 -\026\063\150\164\164\160\072\057\057\143\160\163\056\143\150\141 -\155\142\145\162\163\151\147\156\056\157\162\147\057\143\160\163 -\057\143\150\141\155\142\145\162\163\151\147\156\162\157\157\164 -\056\150\164\155\154\060\015\006\011\052\206\110\206\367\015\001 -\001\005\005\000\003\202\001\001\000\074\073\160\221\371\004\124 -\047\221\341\355\355\376\150\177\141\135\345\101\145\117\062\361 -\030\005\224\152\034\336\037\160\333\076\173\062\002\064\265\014 -\154\241\212\174\245\364\217\377\324\330\255\027\325\055\004\321 -\077\130\200\342\201\131\210\276\300\343\106\223\044\376\220\275 -\046\242\060\055\350\227\046\127\065\211\164\226\030\366\025\342 -\257\044\031\126\002\002\262\272\017\024\352\306\212\146\301\206 -\105\125\213\276\222\276\234\244\004\307\111\074\236\350\051\172 -\211\327\376\257\377\150\365\245\027\220\275\254\231\314\245\206 -\127\011\147\106\333\326\026\302\106\361\344\251\120\365\217\321 -\222\025\323\137\076\306\000\111\072\156\130\262\321\321\047\015 -\045\310\062\370\040\021\315\175\062\063\110\224\124\114\335\334 -\171\304\060\237\353\216\270\125\265\327\210\134\305\152\044\075 -\262\323\005\003\121\306\007\357\314\024\162\164\075\156\162\316 -\030\050\214\112\240\167\345\011\053\105\104\107\254\267\147\177 -\001\212\005\132\223\276\241\301\377\370\347\016\147\244\107\111 -\166\135\165\220\032\365\046\217\360 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -# For Email Distrust After: Mon Mar 01 00:00:00 2021 -CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL -\062\061\060\063\060\061\060\060\060\060\060\060\132 -END - -# Trust for "Camerfirma Global Chambersign Root" -# Issuer: CN=Global Chambersign Root,OU=http://www.chambersign.org,O=AC Camerfirma SA CIF A82743287,C=EU -# Serial Number: 0 (0x0) -# Subject: CN=Global Chambersign Root,OU=http://www.chambersign.org,O=AC Camerfirma SA CIF A82743287,C=EU -# Not Valid Before: Tue Sep 30 16:14:18 2003 -# Not Valid After : Wed Sep 30 16:14:18 2037 -# Fingerprint (SHA-256): EF:3C:B4:17:FC:8E:BF:6F:97:87:6C:9E:4E:CE:39:DE:1E:A5:FE:64:91:41:D1:02:8B:7D:11:C0:B2:29:8C:ED -# Fingerprint (SHA1): 33:9B:6B:14:50:24:9B:55:7A:01:87:72:84:D9:E0:2F:C3:D2:D8:E9 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Camerfirma Global Chambersign Root" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\063\233\153\024\120\044\233\125\172\001\207\162\204\331\340\057 -\303\322\330\351 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\305\346\173\277\006\320\117\103\355\304\172\145\212\373\153\031 -END -CKA_ISSUER MULTILINE_OCTAL -\060\175\061\013\060\011\006\003\125\004\006\023\002\105\125\061 -\047\060\045\006\003\125\004\012\023\036\101\103\040\103\141\155 -\145\162\146\151\162\155\141\040\123\101\040\103\111\106\040\101 -\070\062\067\064\063\062\070\067\061\043\060\041\006\003\125\004 -\013\023\032\150\164\164\160\072\057\057\167\167\167\056\143\150 -\141\155\142\145\162\163\151\147\156\056\157\162\147\061\040\060 -\036\006\003\125\004\003\023\027\107\154\157\142\141\154\040\103 -\150\141\155\142\145\162\163\151\147\156\040\122\157\157\164 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\001\000 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - # # Certificate "XRamp Global CA Root" # @@ -2977,174 +2813,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -# -# Certificate "SwissSign Platinum CA - G2" -# -# Issuer: CN=SwissSign Platinum CA - G2,O=SwissSign AG,C=CH -# Serial Number:4e:b2:00:67:0c:03:5d:4f -# Subject: CN=SwissSign Platinum CA - G2,O=SwissSign AG,C=CH -# Not Valid Before: Wed Oct 25 08:36:00 2006 -# Not Valid After : Sat Oct 25 08:36:00 2036 -# Fingerprint (SHA-256): 3B:22:2E:56:67:11:E9:92:30:0D:C0:B1:5A:B9:47:3D:AF:DE:F8:C8:4D:0C:EF:7D:33:17:B4:C1:82:1D:14:36 -# Fingerprint (SHA1): 56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign Platinum CA - G2" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023 -\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151 -\156\165\155\040\103\101\040\055\040\107\062 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023 -\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151 -\156\165\155\040\103\101\040\055\040\107\062 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\010\116\262\000\147\014\003\135\117 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\301\060\202\003\251\240\003\002\001\002\002\010\116 -\262\000\147\014\003\135\117\060\015\006\011\052\206\110\206\367 -\015\001\001\005\005\000\060\111\061\013\060\011\006\003\125\004 -\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023\014 -\123\167\151\163\163\123\151\147\156\040\101\107\061\043\060\041 -\006\003\125\004\003\023\032\123\167\151\163\163\123\151\147\156 -\040\120\154\141\164\151\156\165\155\040\103\101\040\055\040\107 -\062\060\036\027\015\060\066\061\060\062\065\060\070\063\066\060 -\060\132\027\015\063\066\061\060\062\065\060\070\063\066\060\060 -\132\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110 -\061\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163 -\123\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003 -\023\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164 -\151\156\165\155\040\103\101\040\055\040\107\062\060\202\002\042 -\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 -\202\002\017\000\060\202\002\012\002\202\002\001\000\312\337\242 -\002\342\332\370\374\007\026\261\336\140\252\336\226\134\144\037 -\307\057\176\317\147\372\104\102\326\166\143\225\256\353\257\162 -\040\212\105\107\206\142\170\206\326\040\071\046\364\256\243\375 -\043\347\245\234\265\042\041\031\267\067\223\042\300\120\234\202 -\173\324\325\004\104\134\313\264\302\237\222\276\044\330\173\147 -\042\342\151\137\345\005\170\324\207\331\161\160\063\045\123\264 -\207\073\051\220\050\066\232\125\104\060\150\244\203\227\177\015 -\036\234\166\377\025\235\140\227\000\215\212\205\003\354\200\276 -\352\054\156\020\121\222\314\176\325\243\063\330\326\111\336\130 -\052\257\366\026\353\113\173\220\062\227\271\272\235\130\361\370 -\127\111\004\036\242\135\006\160\335\161\333\371\335\213\232\033 -\214\317\075\243\115\316\313\174\366\273\234\240\372\011\316\043 -\142\262\351\015\037\342\162\050\217\237\254\150\040\175\157\073 -\250\205\061\011\177\013\307\350\145\351\343\170\016\011\147\060 -\213\064\202\373\135\340\314\235\201\155\142\356\010\036\004\054 -\116\233\354\376\251\117\137\375\151\170\357\011\037\241\264\277 -\372\363\357\220\036\114\005\213\036\352\172\221\172\303\327\345 -\373\060\274\154\033\020\130\230\367\032\137\320\051\062\003\023 -\106\115\141\152\205\114\122\164\057\006\037\173\021\342\204\227 -\306\231\363\155\177\327\147\203\176\023\150\330\161\050\132\330 -\316\335\350\020\024\232\376\155\043\207\156\216\132\160\074\325 -\215\011\000\247\252\274\260\061\067\155\310\204\024\036\133\275 -\105\143\040\153\113\164\214\275\333\072\016\301\317\132\026\217 -\245\230\362\166\211\262\023\022\073\013\167\167\254\273\345\074 -\051\112\222\162\312\141\032\053\136\114\342\203\164\167\372\065 -\110\172\205\115\215\232\123\304\337\170\312\227\221\110\053\105 -\053\001\367\034\032\242\355\030\272\012\275\203\372\157\274\215 -\127\223\073\324\324\246\316\036\361\240\261\316\253\375\053\050 -\232\117\033\327\303\162\333\244\304\277\135\114\365\335\173\226 -\151\356\150\200\346\347\230\272\066\267\376\156\355\053\275\040 -\370\145\031\332\125\011\176\045\334\376\141\142\162\371\176\030 -\002\357\143\264\320\373\257\345\073\143\214\147\217\002\003\001 -\000\001\243\201\254\060\201\251\060\016\006\003\125\035\017\001 -\001\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001 -\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016 -\004\026\004\024\120\257\314\007\207\025\107\157\070\305\264\145 -\321\336\225\252\351\337\234\314\060\037\006\003\125\035\043\004 -\030\060\026\200\024\120\257\314\007\207\025\107\157\070\305\264 -\145\321\336\225\252\351\337\234\314\060\106\006\003\125\035\040 -\004\077\060\075\060\073\006\011\140\205\164\001\131\001\001\001 -\001\060\056\060\054\006\010\053\006\001\005\005\007\002\001\026 -\040\150\164\164\160\072\057\057\162\145\160\157\163\151\164\157 -\162\171\056\163\167\151\163\163\163\151\147\156\056\143\157\155 -\057\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 -\003\202\002\001\000\010\205\246\365\026\014\374\104\032\301\143 -\340\371\125\106\010\374\160\034\102\050\226\216\267\305\301\101 -\165\116\011\161\171\345\155\226\312\113\245\210\140\320\060\164 -\270\312\010\334\264\060\236\100\007\026\153\145\225\167\001\256 -\244\267\065\013\201\332\161\025\251\164\027\070\173\130\312\371 -\057\373\300\145\166\215\133\001\271\175\336\202\075\144\270\276 -\024\164\243\012\124\323\054\225\030\027\065\365\121\153\077\217 -\242\226\141\071\170\153\113\345\246\240\370\123\337\121\020\223 -\142\347\200\057\342\321\340\274\216\066\106\167\063\354\270\373 -\216\232\054\211\115\061\021\017\046\236\004\273\267\004\215\013 -\362\271\374\132\235\073\026\267\057\310\230\253\376\212\120\131 -\056\243\073\374\051\135\213\301\113\311\342\212\023\035\261\277 -\273\102\035\122\335\116\330\024\136\020\306\061\007\357\161\047 -\367\033\071\011\334\202\352\213\263\225\206\136\375\365\332\135 -\061\246\340\061\266\224\346\104\111\164\305\026\345\367\037\003 -\141\050\305\310\313\022\240\102\113\371\153\210\010\215\264\062 -\030\363\165\237\304\177\000\117\005\225\234\243\027\002\303\263 -\123\233\252\040\071\051\053\146\372\235\257\136\263\222\322\265 -\246\341\032\371\055\101\151\201\024\264\264\265\355\211\075\316 -\373\251\235\065\102\104\261\034\024\163\201\317\052\001\065\232 -\061\325\055\217\155\204\337\200\115\127\343\077\305\204\165\332 -\211\306\060\273\353\217\313\042\010\240\256\252\361\003\154\072 -\113\115\011\245\016\162\306\126\153\041\102\116\043\045\024\150 -\256\166\012\174\014\007\160\144\371\232\057\366\005\071\046\306 -\014\217\031\177\103\136\156\364\133\025\057\333\141\135\346\147 -\057\077\010\224\371\140\264\230\061\332\164\361\204\223\161\115 -\137\373\140\130\321\373\304\301\155\211\242\273\040\037\235\161 -\221\313\062\233\023\075\076\175\222\122\065\254\222\224\242\323 -\030\302\174\307\352\257\166\005\026\335\147\047\302\176\034\007 -\042\041\363\100\012\033\064\007\104\023\302\204\152\216\337\031 -\132\277\177\353\035\342\032\070\321\134\257\107\222\153\200\265 -\060\245\311\215\330\253\061\201\037\337\302\146\067\323\223\251 -\205\206\171\145\322 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "SwissSign Platinum CA - G2" -# Issuer: CN=SwissSign Platinum CA - G2,O=SwissSign AG,C=CH -# Serial Number:4e:b2:00:67:0c:03:5d:4f -# Subject: CN=SwissSign Platinum CA - G2,O=SwissSign AG,C=CH -# Not Valid Before: Wed Oct 25 08:36:00 2006 -# Not Valid After : Sat Oct 25 08:36:00 2036 -# Fingerprint (SHA-256): 3B:22:2E:56:67:11:E9:92:30:0D:C0:B1:5A:B9:47:3D:AF:DE:F8:C8:4D:0C:EF:7D:33:17:B4:C1:82:1D:14:36 -# Fingerprint (SHA1): 56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign Platinum CA - G2" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\126\340\372\300\073\217\030\043\125\030\345\323\021\312\350\302 -\103\061\253\146 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\311\230\047\167\050\036\075\016\025\074\204\000\270\205\003\346 -END -CKA_ISSUER MULTILINE_OCTAL -\060\111\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\043\060\041\006\003\125\004\003\023 -\032\123\167\151\163\163\123\151\147\156\040\120\154\141\164\151 -\156\165\155\040\103\101\040\055\040\107\062 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\010\116\262\000\147\014\003\135\117 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - # # Certificate "SwissSign Gold CA - G2" # @@ -3910,152 +3578,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -# -# Certificate "Network Solutions Certificate Authority" -# -# Issuer: CN=Network Solutions Certificate Authority,O=Network Solutions L.L.C.,C=US -# Serial Number:57:cb:33:6f:c2:5c:16:e6:47:16:17:e3:90:31:68:e0 -# Subject: CN=Network Solutions Certificate Authority,O=Network Solutions L.L.C.,C=US -# Not Valid Before: Fri Dec 01 00:00:00 2006 -# Not Valid After : Mon Dec 31 23:59:59 2029 -# Fingerprint (SHA-256): 15:F0:BA:00:A3:AC:7A:F3:AC:88:4C:07:2B:10:11:A0:77:BD:77:C0:97:F4:01:64:B2:F8:59:8A:BD:83:86:0C -# Fingerprint (SHA1): 74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CE -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Network Solutions Certificate Authority" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 -\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162 -\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056 -\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164 -\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103 -\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157 -\162\151\164\171 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 -\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162 -\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056 -\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164 -\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103 -\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157 -\162\151\164\171 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\127\313\063\157\302\134\026\346\107\026\027\343\220\061 -\150\340 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\003\346\060\202\002\316\240\003\002\001\002\002\020\127 -\313\063\157\302\134\026\346\107\026\027\343\220\061\150\340\060 -\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\142 -\061\013\060\011\006\003\125\004\006\023\002\125\123\061\041\060 -\037\006\003\125\004\012\023\030\116\145\164\167\157\162\153\040 -\123\157\154\165\164\151\157\156\163\040\114\056\114\056\103\056 -\061\060\060\056\006\003\125\004\003\023\047\116\145\164\167\157 -\162\153\040\123\157\154\165\164\151\157\156\163\040\103\145\162 -\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 -\164\171\060\036\027\015\060\066\061\062\060\061\060\060\060\060 -\060\060\132\027\015\062\071\061\062\063\061\062\063\065\071\065 -\071\132\060\142\061\013\060\011\006\003\125\004\006\023\002\125 -\123\061\041\060\037\006\003\125\004\012\023\030\116\145\164\167 -\157\162\153\040\123\157\154\165\164\151\157\156\163\040\114\056 -\114\056\103\056\061\060\060\056\006\003\125\004\003\023\047\116 -\145\164\167\157\162\153\040\123\157\154\165\164\151\157\156\163 -\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164 -\150\157\162\151\164\171\060\202\001\042\060\015\006\011\052\206 -\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202 -\001\012\002\202\001\001\000\344\274\176\222\060\155\306\330\216 -\053\013\274\106\316\340\047\226\336\336\371\372\022\323\074\063 -\163\263\004\057\274\161\214\345\237\266\042\140\076\137\135\316 -\011\377\202\014\033\232\121\120\032\046\211\335\325\141\135\031 -\334\022\017\055\012\242\103\135\027\320\064\222\040\352\163\317 -\070\054\006\046\011\172\162\367\372\120\062\370\302\223\323\151 -\242\043\316\101\261\314\344\325\037\066\321\212\072\370\214\143 -\342\024\131\151\355\015\323\177\153\350\270\003\345\117\152\345 -\230\143\151\110\005\276\056\377\063\266\351\227\131\151\370\147 -\031\256\223\141\226\104\025\323\162\260\077\274\152\175\354\110 -\177\215\303\253\252\161\053\123\151\101\123\064\265\260\271\305 -\006\012\304\260\105\365\101\135\156\211\105\173\075\073\046\214 -\164\302\345\322\321\175\262\021\324\373\130\062\042\232\200\311 -\334\375\014\351\177\136\003\227\316\073\000\024\207\047\160\070 -\251\216\156\263\047\166\230\121\340\005\343\041\253\032\325\205 -\042\074\051\265\232\026\305\200\250\364\273\153\060\217\057\106 -\002\242\261\014\042\340\323\002\003\001\000\001\243\201\227\060 -\201\224\060\035\006\003\125\035\016\004\026\004\024\041\060\311 -\373\000\327\116\230\332\207\252\052\320\247\056\261\100\061\247 -\114\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 -\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 -\001\377\060\122\006\003\125\035\037\004\113\060\111\060\107\240 -\105\240\103\206\101\150\164\164\160\072\057\057\143\162\154\056 -\156\145\164\163\157\154\163\163\154\056\143\157\155\057\116\145 -\164\167\157\162\153\123\157\154\165\164\151\157\156\163\103\145 -\162\164\151\146\151\143\141\164\145\101\165\164\150\157\162\151 -\164\171\056\143\162\154\060\015\006\011\052\206\110\206\367\015 -\001\001\005\005\000\003\202\001\001\000\273\256\113\347\267\127 -\353\177\252\055\267\163\107\205\152\301\344\245\035\344\347\074 -\351\364\131\145\167\265\172\133\132\215\045\066\340\172\227\056 -\070\300\127\140\203\230\006\203\237\271\166\172\156\120\340\272 -\210\054\374\105\314\030\260\231\225\121\016\354\035\270\210\377 -\207\120\034\202\302\343\340\062\200\277\240\013\107\310\303\061 -\357\231\147\062\200\117\027\041\171\014\151\134\336\136\064\256 -\002\265\046\352\120\337\177\030\145\054\311\362\143\341\251\007 -\376\174\161\037\153\063\044\152\036\005\367\005\150\300\152\022 -\313\056\136\141\313\256\050\323\176\302\264\146\221\046\137\074 -\056\044\137\313\130\017\353\050\354\257\021\226\363\334\173\157 -\300\247\210\362\123\167\263\140\136\256\256\050\332\065\054\157 -\064\105\323\046\341\336\354\133\117\047\153\026\174\275\104\004 -\030\202\263\211\171\027\020\161\075\172\242\026\116\365\001\315 -\244\154\145\150\241\111\166\134\103\311\330\274\066\147\154\245 -\224\265\324\314\271\275\152\065\126\041\336\330\303\353\373\313 -\244\140\114\260\125\240\240\173\127\262 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "Network Solutions Certificate Authority" -# Issuer: CN=Network Solutions Certificate Authority,O=Network Solutions L.L.C.,C=US -# Serial Number:57:cb:33:6f:c2:5c:16:e6:47:16:17:e3:90:31:68:e0 -# Subject: CN=Network Solutions Certificate Authority,O=Network Solutions L.L.C.,C=US -# Not Valid Before: Fri Dec 01 00:00:00 2006 -# Not Valid After : Mon Dec 31 23:59:59 2029 -# Fingerprint (SHA-256): 15:F0:BA:00:A3:AC:7A:F3:AC:88:4C:07:2B:10:11:A0:77:BD:77:C0:97:F4:01:64:B2:F8:59:8A:BD:83:86:0C -# Fingerprint (SHA1): 74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CE -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Network Solutions Certificate Authority" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\164\370\243\303\357\347\263\220\006\113\203\220\074\041\144\140 -\040\345\337\316 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\323\363\246\026\300\372\153\035\131\261\055\226\115\016\021\056 -END -CKA_ISSUER MULTILINE_OCTAL -\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 -\041\060\037\006\003\125\004\012\023\030\116\145\164\167\157\162 -\153\040\123\157\154\165\164\151\157\156\163\040\114\056\114\056 -\103\056\061\060\060\056\006\003\125\004\003\023\047\116\145\164 -\167\157\162\153\040\123\157\154\165\164\151\157\156\163\040\103 -\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157 -\162\151\164\171 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\127\313\063\157\302\134\026\346\107\026\027\343\220\061 -\150\340 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - # # Certificate "COMODO ECC Certification Authority" # @@ -7802,402 +7324,42 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE # -# Certificate "EC-ACC" -# -# Issuer: CN=EC-ACC,OU=Jerarquia Entitats de Certificacio Catalanes,OU=Vegeu https://www.catcert.net/verarrel (c)03,OU=Serveis Publics de Certificacio,O=Agencia Catalana de Certificacio (NIF Q-0801176-I),C=ES -# Serial Number:ee:2b:3d:eb:d4:21:de:14:a8:62:ac:04:f3:dd:c4:01 -# Subject: CN=EC-ACC,OU=Jerarquia Entitats de Certificacio Catalanes,OU=Vegeu https://www.catcert.net/verarrel (c)03,OU=Serveis Publics de Certificacio,O=Agencia Catalana de Certificacio (NIF Q-0801176-I),C=ES -# Not Valid Before: Tue Jan 07 23:00:00 2003 -# Not Valid After : Tue Jan 07 22:59:59 2031 -# Fingerprint (SHA-256): 88:49:7F:01:60:2F:31:54:24:6A:E2:8C:4D:5A:EF:10:F1:D8:7E:BB:76:62:6F:4A:E0:B7:F9:5B:A7:96:87:99 -# Fingerprint (SHA1): 28:90:3A:63:5B:52:80:FA:E6:77:4C:0B:6D:A7:D6:BA:A6:4A:F2:E8 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "EC-ACC" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\201\363\061\013\060\011\006\003\125\004\006\023\002\105\123 -\061\073\060\071\006\003\125\004\012\023\062\101\147\145\156\143 -\151\141\040\103\141\164\141\154\141\156\141\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\050\116\111\106 -\040\121\055\060\070\060\061\061\067\066\055\111\051\061\050\060 -\046\006\003\125\004\013\023\037\123\145\162\166\145\151\163\040 -\120\165\142\154\151\143\163\040\144\145\040\103\145\162\164\151 -\146\151\143\141\143\151\157\061\065\060\063\006\003\125\004\013 -\023\054\126\145\147\145\165\040\150\164\164\160\163\072\057\057 -\167\167\167\056\143\141\164\143\145\162\164\056\156\145\164\057 -\166\145\162\141\162\162\145\154\040\050\143\051\060\063\061\065 -\060\063\006\003\125\004\013\023\054\112\145\162\141\162\161\165 -\151\141\040\105\156\164\151\164\141\164\163\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\103\141\164\141 -\154\141\156\145\163\061\017\060\015\006\003\125\004\003\023\006 -\105\103\055\101\103\103 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\201\363\061\013\060\011\006\003\125\004\006\023\002\105\123 -\061\073\060\071\006\003\125\004\012\023\062\101\147\145\156\143 -\151\141\040\103\141\164\141\154\141\156\141\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\050\116\111\106 -\040\121\055\060\070\060\061\061\067\066\055\111\051\061\050\060 -\046\006\003\125\004\013\023\037\123\145\162\166\145\151\163\040 -\120\165\142\154\151\143\163\040\144\145\040\103\145\162\164\151 -\146\151\143\141\143\151\157\061\065\060\063\006\003\125\004\013 -\023\054\126\145\147\145\165\040\150\164\164\160\163\072\057\057 -\167\167\167\056\143\141\164\143\145\162\164\056\156\145\164\057 -\166\145\162\141\162\162\145\154\040\050\143\051\060\063\061\065 -\060\063\006\003\125\004\013\023\054\112\145\162\141\162\161\165 -\151\141\040\105\156\164\151\164\141\164\163\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\103\141\164\141 -\154\141\156\145\163\061\017\060\015\006\003\125\004\003\023\006 -\105\103\055\101\103\103 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\356\053\075\353\324\041\336\024\250\142\254\004\363\335 -\304\001 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\126\060\202\004\076\240\003\002\001\002\002\020\356 -\053\075\353\324\041\336\024\250\142\254\004\363\335\304\001\060 -\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201 -\363\061\013\060\011\006\003\125\004\006\023\002\105\123\061\073 -\060\071\006\003\125\004\012\023\062\101\147\145\156\143\151\141 -\040\103\141\164\141\154\141\156\141\040\144\145\040\103\145\162 -\164\151\146\151\143\141\143\151\157\040\050\116\111\106\040\121 -\055\060\070\060\061\061\067\066\055\111\051\061\050\060\046\006 -\003\125\004\013\023\037\123\145\162\166\145\151\163\040\120\165 -\142\154\151\143\163\040\144\145\040\103\145\162\164\151\146\151 -\143\141\143\151\157\061\065\060\063\006\003\125\004\013\023\054 -\126\145\147\145\165\040\150\164\164\160\163\072\057\057\167\167 -\167\056\143\141\164\143\145\162\164\056\156\145\164\057\166\145 -\162\141\162\162\145\154\040\050\143\051\060\063\061\065\060\063 -\006\003\125\004\013\023\054\112\145\162\141\162\161\165\151\141 -\040\105\156\164\151\164\141\164\163\040\144\145\040\103\145\162 -\164\151\146\151\143\141\143\151\157\040\103\141\164\141\154\141 -\156\145\163\061\017\060\015\006\003\125\004\003\023\006\105\103 -\055\101\103\103\060\036\027\015\060\063\060\061\060\067\062\063 -\060\060\060\060\132\027\015\063\061\060\061\060\067\062\062\065 -\071\065\071\132\060\201\363\061\013\060\011\006\003\125\004\006 -\023\002\105\123\061\073\060\071\006\003\125\004\012\023\062\101 -\147\145\156\143\151\141\040\103\141\164\141\154\141\156\141\040 -\144\145\040\103\145\162\164\151\146\151\143\141\143\151\157\040 -\050\116\111\106\040\121\055\060\070\060\061\061\067\066\055\111 -\051\061\050\060\046\006\003\125\004\013\023\037\123\145\162\166 -\145\151\163\040\120\165\142\154\151\143\163\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\061\065\060\063\006 -\003\125\004\013\023\054\126\145\147\145\165\040\150\164\164\160 -\163\072\057\057\167\167\167\056\143\141\164\143\145\162\164\056 -\156\145\164\057\166\145\162\141\162\162\145\154\040\050\143\051 -\060\063\061\065\060\063\006\003\125\004\013\023\054\112\145\162 -\141\162\161\165\151\141\040\105\156\164\151\164\141\164\163\040 -\144\145\040\103\145\162\164\151\146\151\143\141\143\151\157\040 -\103\141\164\141\154\141\156\145\163\061\017\060\015\006\003\125 -\004\003\023\006\105\103\055\101\103\103\060\202\001\042\060\015 -\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 -\017\000\060\202\001\012\002\202\001\001\000\263\042\307\117\342 -\227\102\225\210\107\203\100\366\035\027\363\203\163\044\036\121 -\363\230\212\303\222\270\377\100\220\005\160\207\140\311\000\251 -\265\224\145\031\042\025\027\302\103\154\146\104\232\015\004\076 -\071\157\245\113\172\252\143\267\212\104\235\331\143\221\204\146 -\340\050\017\272\102\343\156\216\367\024\047\223\151\356\221\016 -\243\137\016\261\353\146\242\162\117\022\023\206\145\172\076\333 -\117\007\364\247\011\140\332\072\102\231\307\262\177\263\026\225 -\034\307\371\064\265\224\205\325\231\136\240\110\240\176\347\027 -\145\270\242\165\270\036\363\345\102\175\257\355\363\212\110\144 -\135\202\024\223\330\300\344\377\263\120\162\362\166\366\263\135 -\102\120\171\320\224\076\153\014\000\276\330\153\016\116\052\354 -\076\322\314\202\242\030\145\063\023\167\236\232\135\032\023\330 -\303\333\075\310\227\172\356\160\355\247\346\174\333\161\317\055 -\224\142\337\155\326\365\070\276\077\245\205\012\031\270\250\330 -\011\165\102\160\304\352\357\313\016\310\064\250\022\042\230\014 -\270\023\224\266\113\354\360\320\220\347\047\002\003\001\000\001 -\243\201\343\060\201\340\060\035\006\003\125\035\021\004\026\060 -\024\201\022\145\143\137\141\143\143\100\143\141\164\143\145\162 -\164\056\156\145\164\060\017\006\003\125\035\023\001\001\377\004 -\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 -\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004 -\024\240\303\213\104\252\067\245\105\277\227\200\132\321\361\170 -\242\233\351\135\215\060\177\006\003\125\035\040\004\170\060\166 -\060\164\006\013\053\006\001\004\001\365\170\001\003\001\012\060 -\145\060\054\006\010\053\006\001\005\005\007\002\001\026\040\150 -\164\164\160\163\072\057\057\167\167\167\056\143\141\164\143\145 -\162\164\056\156\145\164\057\166\145\162\141\162\162\145\154\060 -\065\006\010\053\006\001\005\005\007\002\002\060\051\032\047\126 -\145\147\145\165\040\150\164\164\160\163\072\057\057\167\167\167 -\056\143\141\164\143\145\162\164\056\156\145\164\057\166\145\162 -\141\162\162\145\154\040\060\015\006\011\052\206\110\206\367\015 -\001\001\005\005\000\003\202\001\001\000\240\110\133\202\001\366 -\115\110\270\071\125\065\234\200\172\123\231\325\132\377\261\161 -\073\314\071\011\224\136\326\332\357\276\001\133\135\323\036\330 -\375\175\117\315\240\101\340\064\223\277\313\342\206\234\067\222 -\220\126\034\334\353\051\005\345\304\236\307\065\337\212\014\315 -\305\041\103\351\252\210\345\065\300\031\102\143\132\002\136\244 -\110\030\072\205\157\334\235\274\077\235\234\301\207\270\172\141 -\010\351\167\013\177\160\253\172\335\331\227\054\144\036\205\277 -\274\164\226\241\303\172\022\354\014\032\156\203\014\074\350\162 -\106\237\373\110\325\136\227\346\261\241\370\344\357\106\045\224 -\234\211\333\151\070\276\354\134\016\126\307\145\121\345\120\210 -\210\277\102\325\053\075\345\371\272\236\056\263\312\364\163\222 -\002\013\276\114\146\353\040\376\271\313\265\231\177\346\266\023 -\372\312\113\115\331\356\123\106\006\073\306\116\255\223\132\201 -\176\154\052\113\152\005\105\214\362\041\244\061\220\207\154\145 -\234\235\245\140\225\072\122\177\365\321\253\010\156\363\356\133 -\371\210\075\176\270\157\156\003\344\102 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -# For Server Distrust After: Sat Dec 28 00:00:00 2019 -CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL -\061\071\061\062\062\070\060\060\060\060\060\060\132 -END -# For Email Distrust After: Wed Aug 31 00:00:00 2022 -CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL -\062\062\060\070\063\061\060\060\060\060\060\060\132 -END - -# Trust for "EC-ACC" -# Issuer: CN=EC-ACC,OU=Jerarquia Entitats de Certificacio Catalanes,OU=Vegeu https://www.catcert.net/verarrel (c)03,OU=Serveis Publics de Certificacio,O=Agencia Catalana de Certificacio (NIF Q-0801176-I),C=ES -# Serial Number:ee:2b:3d:eb:d4:21:de:14:a8:62:ac:04:f3:dd:c4:01 -# Subject: CN=EC-ACC,OU=Jerarquia Entitats de Certificacio Catalanes,OU=Vegeu https://www.catcert.net/verarrel (c)03,OU=Serveis Publics de Certificacio,O=Agencia Catalana de Certificacio (NIF Q-0801176-I),C=ES -# Not Valid Before: Tue Jan 07 23:00:00 2003 -# Not Valid After : Tue Jan 07 22:59:59 2031 -# Fingerprint (SHA-256): 88:49:7F:01:60:2F:31:54:24:6A:E2:8C:4D:5A:EF:10:F1:D8:7E:BB:76:62:6F:4A:E0:B7:F9:5B:A7:96:87:99 -# Fingerprint (SHA1): 28:90:3A:63:5B:52:80:FA:E6:77:4C:0B:6D:A7:D6:BA:A6:4A:F2:E8 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "EC-ACC" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\050\220\072\143\133\122\200\372\346\167\114\013\155\247\326\272 -\246\112\362\350 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\353\365\235\051\015\141\371\102\037\174\302\272\155\343\025\011 -END -CKA_ISSUER MULTILINE_OCTAL -\060\201\363\061\013\060\011\006\003\125\004\006\023\002\105\123 -\061\073\060\071\006\003\125\004\012\023\062\101\147\145\156\143 -\151\141\040\103\141\164\141\154\141\156\141\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\050\116\111\106 -\040\121\055\060\070\060\061\061\067\066\055\111\051\061\050\060 -\046\006\003\125\004\013\023\037\123\145\162\166\145\151\163\040 -\120\165\142\154\151\143\163\040\144\145\040\103\145\162\164\151 -\146\151\143\141\143\151\157\061\065\060\063\006\003\125\004\013 -\023\054\126\145\147\145\165\040\150\164\164\160\163\072\057\057 -\167\167\167\056\143\141\164\143\145\162\164\056\156\145\164\057 -\166\145\162\141\162\162\145\154\040\050\143\051\060\063\061\065 -\060\063\006\003\125\004\013\023\054\112\145\162\141\162\161\165 -\151\141\040\105\156\164\151\164\141\164\163\040\144\145\040\103 -\145\162\164\151\146\151\143\141\143\151\157\040\103\141\164\141 -\154\141\156\145\163\061\017\060\015\006\003\125\004\003\023\006 -\105\103\055\101\103\103 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\356\053\075\353\324\041\336\024\250\142\254\004\363\335 -\304\001 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "Hellenic Academic and Research Institutions RootCA 2011" +# Certificate "Actalis Authentication Root CA" # -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011,O=Hellenic Academic and Research Institutions Cert. Authority,C=GR -# Serial Number: 0 (0x0) -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011,O=Hellenic Academic and Research Institutions Cert. Authority,C=GR -# Not Valid Before: Tue Dec 06 13:49:52 2011 -# Not Valid After : Mon Dec 01 13:49:52 2031 -# Fingerprint (SHA-256): BC:10:4F:15:A4:8B:E7:09:DC:A5:42:A7:E1:D4:B9:DF:6F:05:45:27:E8:02:EA:A9:2D:59:54:44:25:8A:FE:71 -# Fingerprint (SHA1): FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4D +# Issuer: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Serial Number:57:0a:11:97:42:c4:e3:cc +# Subject: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Not Valid Before: Thu Sep 22 11:22:02 2011 +# Not Valid After : Sun Sep 22 11:22:02 2030 +# Fingerprint (SHA-256): 55:92:60:84:EC:96:3A:64:B9:6E:2A:BE:01:CE:0B:A8:6A:64:FB:FE:BC:C7:AA:B5:AF:C1:55:B3:7F:D7:60:66 +# Fingerprint (SHA1): F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE CKA_TOKEN CK_BBOOL CK_TRUE CKA_PRIVATE CK_BBOOL CK_FALSE CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Hellenic Academic and Research Institutions RootCA 2011" +CKA_LABEL UTF8 "Actalis Authentication Root CA" CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 CKA_SUBJECT MULTILINE_OCTAL -\060\201\225\061\013\060\011\006\003\125\004\006\023\002\107\122 -\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154\145 -\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144 -\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164 -\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165\164 -\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003\023 -\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145\155 -\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150\040 -\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157\157 -\164\103\101\040\062\060\061\061 +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 +\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 +\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 +\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 +\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 +\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 +\141\164\151\157\156\040\122\157\157\164\040\103\101 END CKA_ID UTF8 "0" CKA_ISSUER MULTILINE_OCTAL -\060\201\225\061\013\060\011\006\003\125\004\006\023\002\107\122 -\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154\145 -\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144 -\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164 -\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165\164 -\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003\023 -\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145\155 -\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150\040 -\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157\157 -\164\103\101\040\062\060\061\061 +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 +\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 +\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 +\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 +\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 +\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 +\141\164\151\157\156\040\122\157\157\164\040\103\101 END CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\001\000 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\004\061\060\202\003\031\240\003\002\001\002\002\001\000 -\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 -\201\225\061\013\060\011\006\003\125\004\006\023\002\107\122\061 -\104\060\102\006\003\125\004\012\023\073\110\145\154\154\145\156 -\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 -\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 -\164\151\157\156\163\040\103\145\162\164\056\040\101\165\164\150 -\157\162\151\164\171\061\100\060\076\006\003\125\004\003\023\067 -\110\145\154\154\145\156\151\143\040\101\143\141\144\145\155\151 -\143\040\141\156\144\040\122\145\163\145\141\162\143\150\040\111 -\156\163\164\151\164\165\164\151\157\156\163\040\122\157\157\164 -\103\101\040\062\060\061\061\060\036\027\015\061\061\061\062\060 -\066\061\063\064\071\065\062\132\027\015\063\061\061\062\060\061 -\061\063\064\071\065\062\132\060\201\225\061\013\060\011\006\003 -\125\004\006\023\002\107\122\061\104\060\102\006\003\125\004\012 -\023\073\110\145\154\154\145\156\151\143\040\101\143\141\144\145 -\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 -\040\111\156\163\164\151\164\165\164\151\157\156\163\040\103\145 -\162\164\056\040\101\165\164\150\157\162\151\164\171\061\100\060 -\076\006\003\125\004\003\023\067\110\145\154\154\145\156\151\143 -\040\101\143\141\144\145\155\151\143\040\141\156\144\040\122\145 -\163\145\141\162\143\150\040\111\156\163\164\151\164\165\164\151 -\157\156\163\040\122\157\157\164\103\101\040\062\060\061\061\060 -\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001 -\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000 -\251\123\000\343\056\246\366\216\372\140\330\055\225\076\370\054 -\052\124\116\315\271\204\141\224\130\117\217\075\213\344\103\363 -\165\211\215\121\344\303\067\322\212\210\115\171\036\267\022\335 -\103\170\112\212\222\346\327\110\325\017\244\072\051\104\065\270 -\007\366\150\035\125\315\070\121\360\214\044\061\205\257\203\311 -\175\351\167\257\355\032\173\235\027\371\263\235\070\120\017\246 -\132\171\221\200\257\067\256\246\323\061\373\265\046\011\235\074 -\132\357\121\305\053\337\226\135\353\062\036\002\332\160\111\354 -\156\014\310\232\067\215\367\361\066\140\113\046\054\202\236\320 -\170\363\015\017\143\244\121\060\341\371\053\047\022\007\330\352 -\275\030\142\230\260\131\067\175\276\356\363\040\121\102\132\203 -\357\223\272\151\025\361\142\235\237\231\071\202\241\267\164\056 -\213\324\305\013\173\057\360\310\012\332\075\171\012\232\223\034 -\245\050\162\163\221\103\232\247\321\115\205\204\271\251\164\217 -\024\100\307\334\336\254\101\144\154\264\031\233\002\143\155\044 -\144\217\104\262\045\352\316\135\164\014\143\062\134\215\207\345 -\002\003\001\000\001\243\201\211\060\201\206\060\017\006\003\125 -\035\023\001\001\377\004\005\060\003\001\001\377\060\013\006\003 -\125\035\017\004\004\003\002\001\006\060\035\006\003\125\035\016 -\004\026\004\024\246\221\102\375\023\141\112\043\236\010\244\051 -\345\330\023\004\043\356\101\045\060\107\006\003\125\035\036\004 -\100\060\076\240\074\060\005\202\003\056\147\162\060\005\202\003 -\056\145\165\060\006\202\004\056\145\144\165\060\006\202\004\056 -\157\162\147\060\005\201\003\056\147\162\060\005\201\003\056\145 -\165\060\006\201\004\056\145\144\165\060\006\201\004\056\157\162 -\147\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 -\003\202\001\001\000\037\357\171\101\341\173\156\077\262\214\206 -\067\102\112\116\034\067\036\215\146\272\044\201\311\117\022\017 -\041\300\003\227\206\045\155\135\323\042\051\250\154\242\015\251 -\353\075\006\133\231\072\307\314\303\232\064\177\253\016\310\116 -\034\341\372\344\334\315\015\276\277\044\376\154\347\153\302\015 -\310\006\236\116\215\141\050\246\152\375\345\366\142\352\030\074 -\116\240\123\235\262\072\234\353\245\234\221\026\266\115\202\340 -\014\005\110\251\154\365\314\370\313\235\111\264\360\002\245\375 -\160\003\355\212\041\245\256\023\206\111\303\063\163\276\207\073 -\164\213\027\105\046\114\026\221\203\376\147\175\315\115\143\147 -\372\363\003\022\226\170\006\215\261\147\355\216\077\276\237\117 -\002\365\263\011\057\363\114\207\337\052\313\225\174\001\314\254 -\066\172\277\242\163\172\367\217\301\265\232\241\024\262\217\063 -\237\015\357\042\334\146\173\204\275\105\027\006\075\074\312\271 -\167\064\217\312\352\317\077\061\076\343\210\343\200\111\045\310 -\227\265\235\232\231\115\260\074\370\112\000\233\144\335\237\071 -\113\321\047\327\270 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "Hellenic Academic and Research Institutions RootCA 2011" -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011,O=Hellenic Academic and Research Institutions Cert. Authority,C=GR -# Serial Number: 0 (0x0) -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011,O=Hellenic Academic and Research Institutions Cert. Authority,C=GR -# Not Valid Before: Tue Dec 06 13:49:52 2011 -# Not Valid After : Mon Dec 01 13:49:52 2031 -# Fingerprint (SHA-256): BC:10:4F:15:A4:8B:E7:09:DC:A5:42:A7:E1:D4:B9:DF:6F:05:45:27:E8:02:EA:A9:2D:59:54:44:25:8A:FE:71 -# Fingerprint (SHA1): FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4D -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Hellenic Academic and Research Institutions RootCA 2011" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\376\105\145\233\171\003\133\230\241\141\265\121\056\254\332\130 -\011\110\042\115 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\163\237\114\113\163\133\171\351\372\272\034\357\156\313\325\311 -END -CKA_ISSUER MULTILINE_OCTAL -\060\201\225\061\013\060\011\006\003\125\004\006\023\002\107\122 -\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154\145 -\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144 -\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164 -\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165\164 -\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003\023 -\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145\155 -\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150\040 -\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157\157 -\164\103\101\040\062\060\061\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\001\000 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "Actalis Authentication Root CA" -# -# Issuer: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT -# Serial Number:57:0a:11:97:42:c4:e3:cc -# Subject: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT -# Not Valid Before: Thu Sep 22 11:22:02 2011 -# Not Valid After : Sun Sep 22 11:22:02 2030 -# Fingerprint (SHA-256): 55:92:60:84:EC:96:3A:64:B9:6E:2A:BE:01:CE:0B:A8:6A:64:FB:FE:BC:C7:AA:B5:AF:C1:55:B3:7F:D7:60:66 -# Fingerprint (SHA1): F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Actalis Authentication Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 -\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 -\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 -\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 -\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 -\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 -\141\164\151\157\156\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 -\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 -\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 -\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 -\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 -\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 -\141\164\151\157\156\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\010\127\012\021\227\102\304\343\314 +\002\010\127\012\021\227\102\304\343\314 END CKA_VALUE MULTILINE_OCTAL \060\202\005\273\060\202\003\243\240\003\002\001\002\002\010\127 @@ -12220,172 +11382,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -# -# Certificate "Staat der Nederlanden EV Root CA" -# -# Issuer: CN=Staat der Nederlanden EV Root CA,O=Staat der Nederlanden,C=NL -# Serial Number: 10000013 (0x98968d) -# Subject: CN=Staat der Nederlanden EV Root CA,O=Staat der Nederlanden,C=NL -# Not Valid Before: Wed Dec 08 11:19:29 2010 -# Not Valid After : Thu Dec 08 11:10:28 2022 -# Fingerprint (SHA-256): 4D:24:91:41:4C:FE:95:67:46:EC:4C:EF:A6:CF:6F:72:E2:8A:13:29:43:2F:9D:8A:90:7A:C4:CB:5D:AD:C1:5A -# Fingerprint (SHA1): 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Staat der Nederlanden EV Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\116\114\061 -\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 -\051\060\047\006\003\125\004\003\014\040\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 -\105\126\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\116\114\061 -\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 -\051\060\047\006\003\125\004\003\014\040\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 -\105\126\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\004\000\230\226\215 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\160\060\202\003\130\240\003\002\001\002\002\004\000 -\230\226\215\060\015\006\011\052\206\110\206\367\015\001\001\013 -\005\000\060\130\061\013\060\011\006\003\125\004\006\023\002\116 -\114\061\036\060\034\006\003\125\004\012\014\025\123\164\141\141 -\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145 -\156\061\051\060\047\006\003\125\004\003\014\040\123\164\141\141 -\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145 -\156\040\105\126\040\122\157\157\164\040\103\101\060\036\027\015 -\061\060\061\062\060\070\061\061\061\071\062\071\132\027\015\062 -\062\061\062\060\070\061\061\061\060\062\070\132\060\130\061\013 -\060\011\006\003\125\004\006\023\002\116\114\061\036\060\034\006 -\003\125\004\012\014\025\123\164\141\141\164\040\144\145\162\040 -\116\145\144\145\162\154\141\156\144\145\156\061\051\060\047\006 -\003\125\004\003\014\040\123\164\141\141\164\040\144\145\162\040 -\116\145\144\145\162\154\141\156\144\145\156\040\105\126\040\122 -\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052\206 -\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 -\002\012\002\202\002\001\000\343\307\176\211\371\044\113\072\322 -\063\203\065\054\151\354\334\011\244\343\121\250\045\053\171\270 -\010\075\340\221\272\204\205\306\205\244\312\346\311\056\123\244 -\311\044\036\375\125\146\161\135\054\305\140\150\004\267\331\302 -\122\046\070\210\244\326\073\100\246\302\315\077\315\230\223\263 -\124\024\130\226\125\325\120\376\206\255\244\143\177\134\207\366 -\216\346\047\222\147\027\222\002\003\054\334\326\146\164\355\335 -\147\377\301\141\215\143\117\017\233\155\027\060\046\357\253\322 -\037\020\240\371\305\177\026\151\201\003\107\355\036\150\215\162 -\241\115\262\046\306\272\154\137\155\326\257\321\261\023\216\251 -\255\363\136\151\165\046\030\076\101\053\041\177\356\213\135\007 -\006\235\103\304\051\012\053\374\052\076\206\313\074\203\072\371 -\311\015\332\305\231\342\274\170\101\063\166\341\277\057\135\345 -\244\230\120\014\025\335\340\372\234\177\070\150\320\262\246\172 -\247\321\061\275\176\212\130\047\103\263\272\063\221\323\247\230 -\025\134\232\346\323\017\165\331\374\101\230\227\076\252\045\333 -\217\222\056\260\173\014\137\361\143\251\067\371\233\165\151\114 -\050\046\045\332\325\362\022\160\105\125\343\337\163\136\067\365 -\041\154\220\216\065\132\311\323\043\353\323\300\276\170\254\102 -\050\130\146\245\106\155\160\002\327\020\371\113\124\374\135\206 -\112\207\317\177\312\105\254\021\132\265\040\121\215\057\210\107 -\227\071\300\317\272\300\102\001\100\231\110\041\013\153\247\322 -\375\226\325\321\276\106\235\111\340\013\246\240\042\116\070\320 -\301\074\060\274\160\217\054\165\314\320\305\214\121\073\075\224 -\010\144\046\141\175\271\303\145\217\024\234\041\320\252\375\027 -\162\003\217\275\233\214\346\136\123\236\271\235\357\202\273\341 -\274\342\162\101\133\041\224\323\105\067\224\321\337\011\071\135 -\347\043\252\232\035\312\155\250\012\206\205\212\202\276\102\007 -\326\362\070\202\163\332\207\133\345\074\323\236\076\247\073\236 -\364\003\263\371\361\175\023\164\002\377\273\241\345\372\000\171 -\034\246\146\101\210\134\140\127\246\056\011\304\272\375\232\317 -\247\037\100\303\273\314\132\012\125\113\073\070\166\121\270\143 -\213\204\224\026\346\126\363\002\003\001\000\001\243\102\060\100 -\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 -\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 -\006\060\035\006\003\125\035\016\004\026\004\024\376\253\000\220 -\230\236\044\374\251\314\032\212\373\047\270\277\060\156\250\073 -\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003 -\202\002\001\000\317\167\054\156\126\276\116\263\266\204\000\224 -\253\107\311\015\322\166\307\206\237\035\007\323\266\264\273\010 -\170\257\151\322\013\111\336\063\305\254\255\302\210\002\175\006 -\267\065\002\301\140\311\277\304\350\224\336\324\323\251\023\045 -\132\376\156\242\256\175\005\334\175\363\154\360\176\246\215\356 -\331\327\316\130\027\350\251\051\256\163\110\207\347\233\312\156 -\051\241\144\137\031\023\367\256\006\020\377\121\306\233\115\125 -\045\117\223\231\020\001\123\165\361\023\316\307\246\101\101\322 -\277\210\245\177\105\374\254\270\245\265\063\014\202\304\373\007 -\366\152\345\045\204\137\006\312\301\206\071\021\333\130\315\167 -\073\054\302\114\017\136\232\343\360\253\076\141\033\120\044\302 -\300\364\361\031\360\021\051\266\245\030\002\233\327\143\114\160 -\214\107\243\003\103\134\271\135\106\240\015\157\377\131\216\276 -\335\237\162\303\133\053\337\214\133\316\345\014\106\154\222\262 -\012\243\114\124\102\030\025\022\030\275\332\374\272\164\156\377 -\301\266\240\144\330\251\137\125\256\237\134\152\166\226\330\163 -\147\207\373\115\177\134\356\151\312\163\020\373\212\251\375\236 -\275\066\070\111\111\207\364\016\024\360\351\207\270\077\247\117 -\172\132\216\171\324\223\344\273\150\122\204\254\154\351\363\230 -\160\125\162\062\371\064\253\053\111\265\315\040\142\344\072\172 -\147\143\253\226\334\155\256\227\354\374\237\166\126\210\056\146 -\317\133\266\311\244\260\327\005\272\341\047\057\223\273\046\052 -\242\223\260\033\363\216\276\035\100\243\271\066\217\076\202\032 -\032\136\210\352\120\370\131\342\203\106\051\013\343\104\134\341 -\225\266\151\220\232\024\157\227\256\201\317\150\357\231\232\276 -\265\347\341\177\370\372\023\107\026\114\314\155\010\100\347\213 -\170\157\120\202\104\120\077\146\006\212\253\103\204\126\112\017 -\040\055\206\016\365\322\333\322\172\212\113\315\245\350\116\361 -\136\046\045\001\131\043\240\176\322\366\176\041\127\327\047\274 -\025\127\114\244\106\301\340\203\036\014\114\115\037\117\006\031 -\342\371\250\364\072\202\241\262\171\103\171\326\255\157\172\047 -\220\003\244\352\044\207\077\331\275\331\351\362\137\120\111\034 -\356\354\327\056 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "Staat der Nederlanden EV Root CA" -# Issuer: CN=Staat der Nederlanden EV Root CA,O=Staat der Nederlanden,C=NL -# Serial Number: 10000013 (0x98968d) -# Subject: CN=Staat der Nederlanden EV Root CA,O=Staat der Nederlanden,C=NL -# Not Valid Before: Wed Dec 08 11:19:29 2010 -# Not Valid After : Thu Dec 08 11:10:28 2022 -# Fingerprint (SHA-256): 4D:24:91:41:4C:FE:95:67:46:EC:4C:EF:A6:CF:6F:72:E2:8A:13:29:43:2F:9D:8A:90:7A:C4:CB:5D:AD:C1:5A -# Fingerprint (SHA1): 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "Staat der Nederlanden EV Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\166\342\176\301\117\333\202\301\300\246\165\265\005\276\075\051 -\264\355\333\273 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\374\006\257\173\350\032\361\232\264\350\322\160\037\300\365\272 -END -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\116\114\061 -\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 -\051\060\047\006\003\125\004\003\014\040\123\164\141\141\164\040 -\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 -\105\126\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\004\000\230\226\215 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - # # Certificate "IdenTrust Commercial Root CA 1" # @@ -15730,8 +14726,14 @@ CKA_VALUE MULTILINE_OCTAL \132\171\054\031 END CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE +# For Server Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END +# For Email Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END # Trust for "TrustCor RootCert CA-1" # Issuer: CN=TrustCor RootCert CA-1,OU=TrustCor Certificate Authority,O=TrustCor Systems S. de R.L.,L=Panama City,ST=Panama,C=PA @@ -15923,8 +14925,15 @@ CKA_VALUE MULTILINE_OCTAL \326\354\011 END CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE +# For Server Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END +# For Email Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END + # Trust for "TrustCor RootCert CA-2" # Issuer: CN=TrustCor RootCert CA-2,OU=TrustCor Certificate Authority,O=TrustCor Systems S. de R.L.,L=Panama City,ST=Panama,C=PA @@ -16081,8 +15090,14 @@ CKA_VALUE MULTILINE_OCTAL \264\237\327\346 END CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE +# For Server Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END +# For Email Distrust After: Wed Nov 30 00:00:00 2022 +CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL +\062\062\061\061\063\060\060\060\060\060\060\060\132 +END # Trust for "TrustCor ECA-1" # Issuer: CN=TrustCor ECA-1,OU=TrustCor Certificate Authority,O=TrustCor Systems S. de R.L.,L=Panama City,ST=Panama,C=PA @@ -23499,3 +22514,2005 @@ CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert TLS ECC P384 Root G5" +# +# Issuer: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:09:e0:93:65:ac:f7:d9:c8:b9:3e:1c:0b:04:2a:2e:f3 +# Subject: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 01:8E:13:F0:77:25:32:CF:80:9B:D1:B1:72:81:86:72:83:FC:48:C6:E1:3B:E9:C6:98:12:85:4A:49:0C:1B:05 +# Fingerprint (SHA1): 17:F3:DE:5E:9F:0F:19:E9:8E:F6:1F:32:26:6E:20:C4:07:AE:30:EE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS ECC P384 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\011\340\223\145\254\367\331\310\271\076\034\013\004\052 +\056\363 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\031\060\202\001\237\240\003\002\001\002\002\020\011 +\340\223\145\254\367\331\310\271\076\034\013\004\052\056\363\060 +\012\006\010\052\206\110\316\075\004\003\003\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\046\060\044\006\003\125\004\003\023\035\104\151 +\147\151\103\145\162\164\040\124\114\123\040\105\103\103\040\120 +\063\070\064\040\122\157\157\164\040\107\065\060\036\027\015\062 +\061\060\061\061\065\060\060\060\060\060\060\132\027\015\064\066 +\060\061\061\064\062\063\065\071\065\071\132\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\046\060\044\006\003\125\004\003\023\035\104\151 +\147\151\103\145\162\164\040\124\114\123\040\105\103\103\040\120 +\063\070\064\040\122\157\157\164\040\107\065\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\301\104\241\317\021\227\120\232\336\043\202\065\007 +\315\320\313\030\235\322\361\177\167\065\117\073\335\224\162\122 +\355\302\073\370\354\372\173\153\130\040\354\231\256\311\374\150 +\263\165\271\333\011\354\310\023\365\116\306\012\035\146\060\114 +\273\037\107\012\074\141\020\102\051\174\245\010\016\340\042\351 +\323\065\150\316\233\143\237\204\265\231\115\130\240\216\365\124 +\347\225\311\243\102\060\100\060\035\006\003\125\035\016\004\026 +\004\024\301\121\105\120\131\253\076\347\054\132\372\040\042\022 +\007\200\210\174\021\152\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075 +\004\003\003\003\150\000\060\145\002\061\000\211\152\215\107\347 +\354\374\156\125\003\331\147\154\046\116\203\306\375\311\373\053 +\023\274\267\172\214\264\145\322\151\151\143\023\143\073\046\120 +\056\001\241\171\006\221\235\110\277\302\276\002\060\107\303\025 +\173\261\240\221\231\111\223\250\074\174\350\106\006\213\054\362 +\061\000\224\235\142\310\211\275\031\204\024\351\245\373\001\270 +\015\166\103\214\056\123\313\174\337\014\027\226\120 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert TLS ECC P384 Root G5" +# Issuer: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:09:e0:93:65:ac:f7:d9:c8:b9:3e:1c:0b:04:2a:2e:f3 +# Subject: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 01:8E:13:F0:77:25:32:CF:80:9B:D1:B1:72:81:86:72:83:FC:48:C6:E1:3B:E9:C6:98:12:85:4A:49:0C:1B:05 +# Fingerprint (SHA1): 17:F3:DE:5E:9F:0F:19:E9:8E:F6:1F:32:26:6E:20:C4:07:AE:30:EE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS ECC P384 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\027\363\336\136\237\017\031\351\216\366\037\062\046\156\040\304 +\007\256\060\356 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\323\161\004\152\103\034\333\246\131\341\250\243\252\305\161\355 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\011\340\223\145\254\367\331\310\271\076\034\013\004\052 +\056\363 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert TLS RSA4096 Root G5" +# +# Issuer: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:08:f9:b4:78:a8:fa:7e:da:6a:33:37:89:de:7c:cf:8a +# Subject: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 37:1A:00:DC:05:33:B3:72:1A:7E:EB:40:E8:41:9E:70:79:9D:2B:0A:0F:2C:1D:80:69:31:65:F7:CE:C4:AD:75 +# Fingerprint (SHA1): A7:88:49:DC:5D:7C:75:8C:8C:DE:39:98:56:B3:AA:D0:B2:A5:71:35 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS RSA4096 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\371\264\170\250\372\176\332\152\063\067\211\336\174 +\317\212 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\146\060\202\003\116\240\003\002\001\002\002\020\010 +\371\264\170\250\372\176\332\152\063\067\211\336\174\317\212\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\115 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060 +\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164 +\054\040\111\156\143\056\061\045\060\043\006\003\125\004\003\023 +\034\104\151\147\151\103\145\162\164\040\124\114\123\040\122\123 +\101\064\060\071\066\040\122\157\157\164\040\107\065\060\036\027 +\015\062\061\060\061\061\065\060\060\060\060\060\060\132\027\015 +\064\066\060\061\061\064\062\063\065\071\065\071\132\060\115\061 +\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060\025 +\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164\054 +\040\111\156\143\056\061\045\060\043\006\003\125\004\003\023\034 +\104\151\147\151\103\145\162\164\040\124\114\123\040\122\123\101 +\064\060\071\066\040\122\157\157\164\040\107\065\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\263\320\364 +\311\171\021\235\375\374\146\201\347\314\325\344\274\354\201\076 +\152\065\216\056\267\347\336\257\371\007\115\317\060\235\352\011 +\013\231\275\154\127\332\030\112\270\170\254\072\071\250\246\110 +\254\056\162\345\275\353\361\032\315\347\244\003\251\077\021\264 +\330\057\211\026\373\224\001\075\273\057\370\023\005\241\170\034 +\216\050\340\105\340\203\364\131\033\225\263\256\176\003\105\345 +\276\302\102\376\356\362\074\266\205\023\230\062\235\026\250\051 +\302\013\034\070\334\237\061\167\134\277\047\243\374\047\254\267 +\053\275\164\233\027\055\362\201\332\135\260\341\043\027\076\210 +\112\022\043\320\352\317\235\336\003\027\261\102\112\240\026\114 +\244\155\223\351\077\072\356\072\174\235\130\235\364\116\217\374 +\073\043\310\155\270\342\005\332\314\353\354\303\061\364\327\247 +\051\124\200\317\104\133\114\157\060\236\363\314\335\037\224\103 +\235\115\177\160\160\015\324\072\321\067\360\154\235\233\300\024 +\223\130\357\315\101\070\165\274\023\003\225\174\177\343\134\351 +\325\015\325\342\174\020\142\252\153\360\075\166\363\077\243\350 +\260\301\375\357\252\127\115\254\206\247\030\264\051\301\054\016 +\277\144\276\051\214\330\002\055\315\134\057\362\177\357\025\364 +\014\025\254\012\260\361\323\015\117\152\115\167\227\001\240\361 +\146\267\267\316\357\316\354\354\245\165\312\254\343\341\143\367 +\270\241\004\310\274\173\077\135\055\026\042\126\355\110\111\376 +\247\057\171\060\045\233\272\153\055\077\235\073\304\027\347\035 +\056\373\362\317\246\374\343\024\054\226\230\041\214\264\221\351 +\031\140\203\362\060\053\006\163\120\325\230\073\006\351\307\212 +\014\140\214\050\370\122\233\156\341\366\115\273\006\044\233\327 +\053\046\077\375\052\057\161\365\326\044\276\177\061\236\017\155 +\350\217\117\115\243\077\377\065\352\337\111\136\101\217\206\371 +\361\167\171\113\033\264\243\136\057\373\106\002\320\146\023\136 +\136\205\117\316\330\160\210\173\316\001\265\226\227\327\315\175 +\375\202\370\302\044\301\312\001\071\117\215\242\301\024\100\037 +\234\146\325\014\011\106\326\362\320\321\110\166\126\072\103\313 +\266\012\021\071\272\214\023\154\006\265\236\317\353\002\003\001 +\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\121\063\034\355\066\100\257\027\323\045\315\151\150\362\257 +\116\043\076\263\101\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\015\006\011\052\206\110\206\367\015 +\001\001\014\005\000\003\202\002\001\000\140\246\257\133\137\127 +\332\211\333\113\120\251\304\043\065\041\377\320\141\060\204\221 +\267\077\020\317\045\216\311\277\106\064\331\301\041\046\034\160 +\031\162\036\243\311\207\376\251\103\144\226\072\310\123\004\012 +\266\101\273\304\107\000\331\237\030\030\073\262\016\363\064\352 +\044\367\335\257\040\140\256\222\050\137\066\347\135\344\336\307 +\074\333\120\071\255\273\075\050\115\226\174\166\306\133\364\301 +\333\024\245\253\031\142\007\030\100\137\227\221\334\234\307\253 +\265\121\015\346\151\123\125\314\071\175\332\305\021\125\162\305 +\073\213\211\370\064\055\244\027\345\027\346\231\175\060\210\041 +\067\315\060\027\075\270\362\274\250\165\240\103\334\076\211\113 +\220\256\155\003\340\034\243\240\226\011\273\175\243\267\052\020 +\104\113\106\007\064\143\355\061\271\004\356\243\233\232\256\346 +\061\170\364\352\044\141\073\253\130\144\377\273\207\047\142\045 +\201\337\334\241\057\366\355\247\377\172\217\121\056\060\370\244 +\001\322\205\071\137\001\231\226\157\132\133\160\031\106\376\206 +\140\076\255\200\020\011\335\071\045\057\130\177\273\322\164\360 +\367\106\037\106\071\112\330\123\320\363\056\073\161\245\324\157 +\374\363\147\344\007\217\335\046\031\341\215\133\372\243\223\021 +\233\351\310\072\303\125\150\232\222\341\122\166\070\350\341\272 +\275\373\117\325\357\263\347\110\203\061\360\202\041\343\266\276 +\247\253\157\357\237\337\114\317\001\270\142\152\043\075\347\011 +\115\200\033\173\060\244\303\335\007\177\064\276\244\046\262\366 +\101\350\011\035\343\040\230\252\067\117\377\367\361\342\051\160 +\061\107\077\164\320\024\026\372\041\212\002\325\212\011\224\167 +\056\362\131\050\213\174\120\222\012\146\170\070\203\165\304\265 +\132\250\021\306\345\301\235\146\125\317\123\304\257\327\165\205 +\251\102\023\126\354\041\167\201\223\132\014\352\226\331\111\312 +\241\010\362\227\073\155\233\004\030\044\104\216\174\001\362\334 +\045\330\136\206\232\261\071\333\365\221\062\152\321\246\160\212 +\242\367\336\244\105\205\046\250\036\214\135\051\133\310\113\330 +\232\152\003\136\160\362\205\117\154\113\150\057\312\124\366\214 +\332\062\376\303\153\203\077\070\306\176 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert TLS RSA4096 Root G5" +# Issuer: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:08:f9:b4:78:a8:fa:7e:da:6a:33:37:89:de:7c:cf:8a +# Subject: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 37:1A:00:DC:05:33:B3:72:1A:7E:EB:40:E8:41:9E:70:79:9D:2B:0A:0F:2C:1D:80:69:31:65:F7:CE:C4:AD:75 +# Fingerprint (SHA1): A7:88:49:DC:5D:7C:75:8C:8C:DE:39:98:56:B3:AA:D0:B2:A5:71:35 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS RSA4096 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\247\210\111\334\135\174\165\214\214\336\071\230\126\263\252\320 +\262\245\161\065 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\254\376\367\064\226\251\362\263\264\022\113\344\047\101\157\341 +END +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\371\264\170\250\372\176\332\152\063\067\211\336\174 +\317\212 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert SMIME ECC P384 Root G5" +# +# Issuer: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:3f:6e:a0:06:01:72:7d:ed:3f:c3:a3:b6:a3:d6:ef +# Subject: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): E8:E8:17:65:36:A6:0C:C2:C4:E1:01:87:C3:BE:FC:A2:0E:F2:63:49:70:18:F5:66:D5:BE:A0:F9:4D:0C:11:1B +# Fingerprint (SHA1): 1C:B8:A7:08:C9:0D:20:79:01:A0:B2:36:7F:F0:95:65:E4:53:24:FE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME ECC P384 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\077\156\240\006\001\162\175\355\077\303\243\266\243 +\326\357 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\034\060\202\001\243\240\003\002\001\002\002\020\005 +\077\156\240\006\001\162\175\355\077\303\243\266\243\326\357\060 +\012\006\010\052\206\110\316\075\004\003\003\060\120\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\050\060\046\006\003\125\004\003\023\037\104\151 +\147\151\103\145\162\164\040\123\115\111\115\105\040\105\103\103 +\040\120\063\070\064\040\122\157\157\164\040\107\065\060\036\027 +\015\062\061\060\061\061\065\060\060\060\060\060\060\132\027\015 +\064\066\060\061\061\064\062\063\065\071\065\071\132\060\120\061 +\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060\025 +\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164\054 +\040\111\156\143\056\061\050\060\046\006\003\125\004\003\023\037 +\104\151\147\151\103\145\162\164\040\123\115\111\115\105\040\105 +\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\026\235\125\345\266\324\373\373\147 +\153\032\324\241\252\322\167\225\076\210\345\007\237\266\160\146 +\040\050\244\210\354\160\065\257\263\062\377\067\023\112\236\274 +\001\003\336\204\301\270\306\346\145\107\211\362\023\125\277\315 +\245\036\010\140\177\255\177\350\141\222\051\317\011\107\136\013 +\034\300\037\244\277\362\133\274\230\357\231\114\314\160\153\266 +\272\320\050\035\277\276\004\243\102\060\100\060\035\006\003\125 +\035\016\004\026\004\024\163\172\153\226\333\102\007\213\122\146 +\302\144\062\027\376\340\147\220\056\255\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\012\006\010\052 +\206\110\316\075\004\003\003\003\147\000\060\144\002\060\067\104 +\365\062\200\343\161\353\364\155\317\174\314\221\232\303\156\161 +\330\322\043\135\222\115\202\102\155\134\141\225\366\221\365\247 +\010\366\152\227\351\234\224\055\230\160\375\063\266\011\002\060 +\007\074\057\271\130\202\136\017\243\142\250\223\147\360\040\303 +\151\277\003\054\073\120\247\073\257\101\070\311\122\110\221\326 +\016\373\274\140\060\174\144\077\022\036\105\177\121\076\364\246 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert SMIME ECC P384 Root G5" +# Issuer: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:3f:6e:a0:06:01:72:7d:ed:3f:c3:a3:b6:a3:d6:ef +# Subject: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): E8:E8:17:65:36:A6:0C:C2:C4:E1:01:87:C3:BE:FC:A2:0E:F2:63:49:70:18:F5:66:D5:BE:A0:F9:4D:0C:11:1B +# Fingerprint (SHA1): 1C:B8:A7:08:C9:0D:20:79:01:A0:B2:36:7F:F0:95:65:E4:53:24:FE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME ECC P384 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\034\270\247\010\311\015\040\171\001\240\262\066\177\360\225\145 +\344\123\044\376 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\246\376\364\122\066\104\330\356\015\267\003\013\357\164\263\003 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\077\156\240\006\001\162\175\355\077\303\243\266\243 +\326\357 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert SMIME RSA4096 Root G5" +# +# Issuer: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:f6:ba:04:23:83:46:cb:7d:5c:e6:b9:5b:ba:1c:55 +# Subject: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 90:37:0D:3E:FA:88:BF:58:C3:01:05:BA:25:10:4A:35:84:60:A7:FA:52:DF:C2:01:1D:F2:33:A0:F4:17:91:2A +# Fingerprint (SHA1): 5B:C5:AD:E2:9A:A7:54:DA:84:89:53:A5:FE:D7:5B:46:86:D0:57:08 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME RSA4096 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\366\272\004\043\203\106\313\175\134\346\271\133\272 +\034\125 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\152\060\202\003\122\240\003\002\001\002\002\020\005 +\366\272\004\043\203\106\313\175\134\346\271\133\272\034\125\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\117 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060 +\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164 +\054\040\111\156\143\056\061\047\060\045\006\003\125\004\003\023 +\036\104\151\147\151\103\145\162\164\040\123\115\111\115\105\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065\060 +\036\027\015\062\061\060\061\061\065\060\060\060\060\060\060\132 +\027\015\064\066\060\061\061\064\062\063\065\071\065\071\132\060 +\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027 +\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162 +\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004\003 +\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115\105 +\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\340\152\133\331\370\371\175\354\265\173\357\137\335\134\064 +\330\332\135\321\313\145\165\253\041\174\133\000\324\202\157\105 +\205\101\212\251\022\002\162\062\360\024\365\003\165\273\143\227 +\111\017\100\231\013\032\036\126\247\322\320\341\253\335\345\004 +\033\343\037\024\022\002\210\365\240\200\011\366\047\232\120\360 +\272\343\242\340\254\152\024\221\265\153\070\020\172\242\061\341 +\221\033\267\271\360\053\133\310\167\011\166\267\121\304\066\012 +\231\123\124\104\045\267\011\065\206\027\005\126\223\075\101\267 +\002\327\142\037\212\222\021\207\352\021\155\352\010\021\334\261 +\170\110\111\222\366\264\121\200\170\043\330\376\341\126\032\072 +\220\023\126\064\211\325\342\225\213\137\336\262\314\373\077\070 +\267\205\367\352\236\277\056\241\056\057\115\175\152\021\056\066 +\240\377\021\010\004\225\125\340\033\073\147\223\251\224\125\352 +\062\355\006\072\177\302\177\343\255\023\047\321\064\101\263\060 +\303\277\264\210\370\003\202\244\337\076\253\170\167\240\131\223 +\161\347\335\353\000\004\173\314\110\071\050\340\036\243\025\151 +\310\066\262\241\013\227\337\125\326\357\221\234\244\366\026\367 +\121\012\356\003\043\221\334\004\377\340\335\070\366\042\003\000 +\302\007\161\032\022\311\327\106\052\224\033\315\326\273\033\356 +\277\276\115\120\130\260\013\315\060\166\051\365\317\345\266\152 +\057\166\260\260\151\152\320\155\145\030\065\176\223\274\162\027 +\301\125\102\315\057\302\045\273\364\375\035\241\144\042\124\135 +\342\236\162\101\204\156\161\226\352\105\007\266\136\172\112\206 +\235\163\144\167\070\003\322\017\123\245\125\040\304\115\377\150 +\157\125\251\352\335\161\344\117\331\205\243\174\116\051\002\236 +\013\011\362\032\123\314\000\246\335\321\064\366\015\301\060\261 +\234\002\144\254\065\355\245\260\051\261\322\225\063\017\322\040 +\063\275\354\043\113\362\031\371\332\230\144\344\054\061\037\056 +\341\215\034\004\225\050\115\214\130\315\113\345\163\202\206\214 +\354\250\326\171\134\373\144\273\334\014\114\050\366\027\257\342 +\150\326\026\206\230\333\374\001\334\061\272\370\234\016\371\050 +\106\112\341\375\226\006\105\171\021\150\027\145\134\213\046\207 +\133\002\003\001\000\001\243\102\060\100\060\035\006\003\125\035 +\016\004\026\004\024\321\243\324\127\035\117\125\333\165\114\134 +\102\236\143\026\316\264\306\073\037\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\015\006\011\052\206 +\110\206\367\015\001\001\014\005\000\003\202\002\001\000\007\247 +\012\336\123\273\232\353\160\277\262\066\220\315\344\247\270\361 +\014\344\135\132\035\170\145\374\311\270\036\043\021\127\174\151 +\065\155\001\377\123\120\277\007\016\272\307\001\077\130\052\224 +\165\003\253\034\013\043\334\033\212\036\067\075\035\130\217\163 +\331\263\052\157\337\020\240\133\014\247\312\260\177\271\044\242 +\001\065\062\345\136\106\101\353\330\177\163\347\102\351\244\121 +\046\167\201\012\250\353\017\012\120\235\176\212\040\147\374\013 +\216\072\021\323\305\214\140\030\331\113\261\374\324\361\264\111 +\116\256\207\341\321\373\166\241\137\363\006\317\227\226\014\351 +\236\165\201\134\123\015\042\374\066\346\111\156\164\333\000\205 +\215\174\042\240\216\373\020\114\324\142\023\133\357\113\162\046 +\213\374\116\212\217\376\227\020\123\305\170\213\102\144\033\137 +\340\211\375\273\011\177\120\340\124\205\046\021\152\035\145\371 +\111\051\334\174\066\337\373\075\367\322\254\356\062\215\156\246 +\175\071\234\105\304\312\015\365\073\264\171\123\245\057\126\307 +\121\305\212\114\144\135\220\103\043\216\153\114\027\170\314\350 +\277\365\073\344\250\110\317\255\233\014\337\062\112\323\331\022 +\216\043\170\015\055\257\237\257\236\074\011\302\227\000\355\072 +\151\034\161\077\071\337\323\217\304\146\365\357\066\224\017\363 +\335\222\266\226\137\220\246\335\163\252\246\040\224\224\045\152 +\011\014\162\344\023\043\140\114\243\312\027\056\173\147\000\333 +\320\315\352\172\037\071\046\127\211\060\167\313\116\345\225\105 +\117\137\373\066\134\075\371\040\265\072\020\045\117\223\062\132 +\356\301\226\350\351\126\004\260\111\141\115\354\170\250\235\030 +\301\377\330\352\057\126\357\225\053\173\004\136\147\343\125\100 +\355\071\004\371\013\171\365\152\214\134\017\211\232\220\307\315 +\213\336\333\046\065\241\156\315\263\102\362\242\017\073\014\216 +\223\377\024\317\374\367\223\367\344\101\010\156\031\122\021\017 +\123\031\163\170\014\317\330\205\201\370\255\125\310\260\236\106 +\143\257\234\122\356\134\277\360\300\133\067\036\011\040\322\076 +\043\306\241\025\112\016\066\176\060\305\171\152\274\042\210\331 +\014\122\100\037\335\116\017\147\046\026\322\255\027\034 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert SMIME RSA4096 Root G5" +# Issuer: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:f6:ba:04:23:83:46:cb:7d:5c:e6:b9:5b:ba:1c:55 +# Subject: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 90:37:0D:3E:FA:88:BF:58:C3:01:05:BA:25:10:4A:35:84:60:A7:FA:52:DF:C2:01:1D:F2:33:A0:F4:17:91:2A +# Fingerprint (SHA1): 5B:C5:AD:E2:9A:A7:54:DA:84:89:53:A5:FE:D7:5B:46:86:D0:57:08 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME RSA4096 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\133\305\255\342\232\247\124\332\204\211\123\245\376\327\133\106 +\206\320\127\010 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\321\173\340\265\077\065\162\237\175\276\013\245\244\035\251\156 +END +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\366\272\004\043\203\106\313\175\134\346\271\133\272 +\034\125 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certainly Root R1" +# +# Issuer: CN=Certainly Root R1,O=Certainly,C=US +# Serial Number:00:8e:0f:f9:4b:90:71:68:65:33:54:f4:d4:44:39:b7:e0 +# Subject: CN=Certainly Root R1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): 77:B8:2C:D8:64:4C:43:05:F7:AC:C5:CB:15:6B:45:67:50:04:03:3D:51:C6:0C:62:02:A8:E0:C3:34:67:D3:A0 +# Fingerprint (SHA1): A0:50:EE:0F:28:71:F4:27:B2:12:6D:6F:50:96:25:BA:CC:86:42:AF +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root R1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\216\017\371\113\220\161\150\145\063\124\364\324\104 +\071\267\340 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\107\060\202\003\057\240\003\002\001\002\002\021\000 +\216\017\371\113\220\161\150\145\063\124\364\324\104\071\267\340 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151\156 +\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145\162 +\164\141\151\156\154\171\040\122\157\157\164\040\122\061\060\036 +\027\015\062\061\060\064\060\061\060\060\060\060\060\060\132\027 +\015\064\066\060\064\060\061\060\060\060\060\060\060\132\060\075 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022\060 +\020\006\003\125\004\012\023\011\103\145\162\164\141\151\156\154 +\171\061\032\060\030\006\003\125\004\003\023\021\103\145\162\164 +\141\151\156\154\171\040\122\157\157\164\040\122\061\060\202\002 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\002\017\000\060\202\002\012\002\202\002\001\000\320\066 +\324\037\352\335\253\344\321\266\346\373\042\300\335\023\015\152 +\173\042\023\034\227\074\150\143\146\062\234\003\265\215\244\201 +\203\332\170\060\021\317\334\262\053\276\222\277\216\344\304\023 +\276\244\150\114\332\002\150\026\164\276\262\335\004\344\153\052 +\335\067\037\140\054\333\365\367\241\174\225\267\014\160\206\056 +\361\072\357\122\367\314\323\233\371\213\276\016\337\061\267\235 +\150\134\222\246\365\345\363\012\064\265\377\173\242\344\207\241 +\306\257\027\000\357\003\221\355\251\034\116\161\075\322\213\154 +\211\364\170\206\346\152\111\240\316\265\322\260\253\233\366\364 +\324\056\343\162\371\066\306\353\025\267\045\214\072\374\045\015 +\263\042\163\041\164\310\112\226\141\222\365\057\013\030\245\364 +\255\342\356\101\275\001\171\372\226\214\215\027\002\060\264\371 +\257\170\032\214\264\066\020\020\007\005\160\320\364\061\220\212 +\121\305\206\046\171\262\021\210\136\305\360\012\124\315\111\246 +\277\002\234\322\104\247\355\343\170\357\106\136\155\161\321\171 +\160\034\106\137\121\351\311\067\334\137\176\151\173\101\337\064 +\105\340\073\204\364\241\212\012\066\236\067\314\142\122\341\211 +\015\050\371\172\043\261\015\075\075\232\375\235\201\357\054\220 +\300\173\104\116\273\111\340\016\112\126\222\274\313\265\335\171 +\027\211\221\336\141\211\164\222\250\343\062\205\276\116\205\244 +\113\131\313\053\305\170\216\161\124\320\002\067\231\214\345\111 +\352\340\124\162\244\021\006\057\013\214\301\133\276\265\241\260 +\123\156\234\270\140\221\037\131\153\371\055\364\224\012\227\265 +\354\305\166\003\124\033\145\122\272\114\222\126\121\065\240\100 +\330\051\333\256\122\166\073\055\060\100\233\212\320\102\126\264 +\267\210\001\244\207\073\123\226\315\243\026\217\363\146\252\027 +\261\307\140\340\301\103\005\014\356\233\133\140\157\006\134\207 +\133\047\371\100\021\236\234\063\301\267\345\065\127\005\177\047 +\316\027\040\214\034\374\361\373\332\061\051\111\355\365\013\204 +\247\117\301\366\116\302\050\234\372\356\340\257\007\373\063\021 +\172\041\117\013\041\020\266\100\072\253\042\072\004\234\213\233 +\204\206\162\232\322\247\245\304\264\165\221\251\053\043\002\003 +\001\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004 +\026\004\024\340\252\077\045\215\237\104\134\301\072\350\056\256 +\167\114\204\076\147\014\364\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\003\202\002\001\000\271\127\257\270\022 +\332\127\203\217\150\013\063\035\003\123\125\364\225\160\344\053 +\075\260\071\353\372\211\142\375\367\326\030\004\057\041\064\335 +\361\150\360\325\226\132\336\302\200\243\301\215\306\152\367\131 +\167\256\025\144\317\133\171\005\167\146\352\214\323\153\015\335 +\361\131\054\301\063\245\060\200\025\105\007\105\032\061\042\266 +\222\000\253\231\115\072\217\167\257\251\042\312\057\143\312\025 +\326\307\306\360\075\154\374\034\015\230\020\141\236\021\242\042 +\327\012\362\221\172\153\071\016\057\060\303\066\111\237\340\351 +\017\002\104\120\067\224\125\175\352\237\366\073\272\224\245\114 +\351\274\076\121\264\350\312\222\066\124\155\134\045\050\332\335 +\255\024\375\323\356\342\042\005\353\320\362\267\150\022\327\132 +\212\101\032\306\222\245\132\073\143\105\117\277\341\072\167\042 +\057\134\277\106\371\132\003\205\023\102\137\312\336\123\327\142 +\265\246\065\004\302\107\377\231\375\204\337\134\316\351\136\200 +\050\101\362\175\347\036\220\330\117\166\076\202\074\015\374\245 +\003\372\173\032\331\105\036\140\332\304\216\371\374\053\311\173 +\225\305\052\377\252\211\337\202\061\017\162\377\014\047\327\012 +\036\126\000\120\036\014\220\301\226\265\330\024\205\273\247\015 +\026\301\370\007\044\033\272\205\241\032\005\011\200\272\225\143 +\311\072\354\045\237\177\235\272\244\107\025\233\104\160\361\152 +\113\326\070\136\103\363\030\176\120\156\351\132\050\346\145\346 +\167\033\072\375\035\276\003\046\243\333\324\341\273\176\226\047 +\053\035\356\244\373\332\045\124\023\003\336\071\306\303\037\115 +\220\354\217\033\112\322\034\355\205\225\070\120\171\106\326\301 +\220\120\061\251\134\232\156\035\365\063\126\213\247\231\322\362 +\310\054\063\223\222\060\307\116\214\145\063\020\144\027\375\044 +\027\226\321\215\302\072\152\053\353\023\213\104\362\041\363\112 +\032\267\167\137\327\355\210\244\162\345\071\037\225\235\276\147 +\301\160\021\075\273\364\370\111\267\343\046\227\072\237\322\137 +\174\373\300\231\174\071\051\340\173\035\277\015\247\217\322\051 +\064\156\044\025\313\336\220\136\277\032\304\146\352\302\346\272 +\071\137\212\231\251\101\131\007\260\054\257 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certainly Root R1" +# Issuer: CN=Certainly Root R1,O=Certainly,C=US +# Serial Number:00:8e:0f:f9:4b:90:71:68:65:33:54:f4:d4:44:39:b7:e0 +# Subject: CN=Certainly Root R1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): 77:B8:2C:D8:64:4C:43:05:F7:AC:C5:CB:15:6B:45:67:50:04:03:3D:51:C6:0C:62:02:A8:E0:C3:34:67:D3:A0 +# Fingerprint (SHA1): A0:50:EE:0F:28:71:F4:27:B2:12:6D:6F:50:96:25:BA:CC:86:42:AF +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root R1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\240\120\356\017\050\161\364\047\262\022\155\157\120\226\045\272 +\314\206\102\257 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\007\160\324\076\202\207\240\372\063\066\023\364\372\063\347\022 +END +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\216\017\371\113\220\161\150\145\063\124\364\324\104 +\071\267\340 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certainly Root E1" +# +# Issuer: CN=Certainly Root E1,O=Certainly,C=US +# Serial Number:06:25:33:b1:47:03:33:27:5c:f9:8d:9a:b9:bf:cc:f8 +# Subject: CN=Certainly Root E1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): B4:58:5F:22:E4:AC:75:6A:4E:86:12:A1:36:1C:5D:9D:03:1A:93:FD:84:FE:BB:77:8F:A3:06:8B:0F:C4:2D:C2 +# Fingerprint (SHA1): F9:E1:6D:DC:01:89:CF:D5:82:45:63:3E:C5:37:7D:C2:EB:93:6F:2B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root E1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\006\045\063\261\107\003\063\047\134\371\215\232\271\277 +\314\370 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\367\060\202\001\175\240\003\002\001\002\002\020\006 +\045\063\261\107\003\063\047\134\371\215\232\271\277\314\370\060 +\012\006\010\052\206\110\316\075\004\003\003\060\075\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\022\060\020\006\003 +\125\004\012\023\011\103\145\162\164\141\151\156\154\171\061\032 +\060\030\006\003\125\004\003\023\021\103\145\162\164\141\151\156 +\154\171\040\122\157\157\164\040\105\061\060\036\027\015\062\061 +\060\064\060\061\060\060\060\060\060\060\132\027\015\064\066\060 +\064\060\061\060\060\060\060\060\060\132\060\075\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\022\060\020\006\003\125 +\004\012\023\011\103\145\162\164\141\151\156\154\171\061\032\060 +\030\006\003\125\004\003\023\021\103\145\162\164\141\151\156\154 +\171\040\122\157\157\164\040\105\061\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\336\157\370\177\034\337\355\371\107\207\206\261\244\300\212 +\370\202\227\200\352\217\310\112\136\052\175\210\150\247\001\142 +\024\221\044\172\134\236\243\027\175\212\206\041\064\030\120\033 +\020\336\320\067\113\046\307\031\140\200\351\064\275\140\031\066 +\100\326\051\207\011\074\221\172\366\274\023\043\335\131\116\004 +\136\317\310\002\034\030\123\301\061\330\332\040\351\104\215\344 +\166\243\102\060\100\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004 +\024\363\050\030\313\144\165\356\051\052\353\355\256\043\130\070 +\205\353\310\042\007\060\012\006\010\052\206\110\316\075\004\003 +\003\003\150\000\060\145\002\061\000\261\216\132\040\303\262\031 +\142\115\336\260\117\337\156\322\160\212\361\237\176\152\214\346 +\272\336\203\151\312\151\263\251\005\265\226\222\027\207\302\322 +\352\320\173\316\330\101\133\174\256\002\060\106\336\352\313\135 +\232\354\062\302\145\026\260\114\060\134\060\363\332\116\163\206 +\006\330\316\211\004\110\067\067\370\335\063\121\235\160\257\173 +\125\330\001\056\175\005\144\016\206\270\221 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certainly Root E1" +# Issuer: CN=Certainly Root E1,O=Certainly,C=US +# Serial Number:06:25:33:b1:47:03:33:27:5c:f9:8d:9a:b9:bf:cc:f8 +# Subject: CN=Certainly Root E1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): B4:58:5F:22:E4:AC:75:6A:4E:86:12:A1:36:1C:5D:9D:03:1A:93:FD:84:FE:BB:77:8F:A3:06:8B:0F:C4:2D:C2 +# Fingerprint (SHA1): F9:E1:6D:DC:01:89:CF:D5:82:45:63:3E:C5:37:7D:C2:EB:93:6F:2B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root E1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\371\341\155\334\001\211\317\325\202\105\143\076\305\067\175\302 +\353\223\157\053 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\012\236\312\315\076\122\120\306\066\363\113\243\355\247\123\351 +END +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\006\045\063\261\107\003\063\047\134\371\215\232\271\277 +\314\370 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "E-Tugra Global Root CA RSA v3" +# +# Issuer: CN=E-Tugra Global Root CA RSA v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Serial Number:0d:4d:c5:cd:16:22:95:96:08:7e:b8:0b:7f:15:06:34:fb:79:10:34 +# Subject: CN=E-Tugra Global Root CA RSA v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Not Valid Before: Wed Mar 18 09:07:17 2020 +# Not Valid After : Sun Mar 12 09:07:17 2045 +# Fingerprint (SHA-256): EF:66:B0:B1:0A:3C:DB:9F:2E:36:48:C7:6B:D2:AF:18:EA:D2:BF:E6:F1:17:65:5E:28:C4:06:0D:A1:A3:F4:C2 +# Fingerprint (SHA1): E9:A8:5D:22:14:52:1C:5B:AA:0A:B4:BE:24:6A:23:8A:C9:BA:E2:A9 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "E-Tugra Global Root CA RSA v3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\122\123\101 +\040\166\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\122\123\101 +\040\166\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\015\115\305\315\026\042\225\226\010\176\270\013\177\025 +\006\064\373\171\020\064 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\363\060\202\003\333\240\003\002\001\002\002\024\015 +\115\305\315\026\042\225\226\010\176\270\013\177\025\006\064\373 +\171\020\064\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\201\200\061\013\060\011\006\003\125\004\006\023\002 +\124\122\061\017\060\015\006\003\125\004\007\023\006\101\156\153 +\141\162\141\061\031\060\027\006\003\125\004\012\023\020\105\055 +\124\165\147\162\141\040\105\102\107\040\101\056\123\056\061\035 +\060\033\006\003\125\004\013\023\024\105\055\124\165\147\162\141 +\040\124\162\165\163\164\040\103\145\156\164\145\162\061\046\060 +\044\006\003\125\004\003\023\035\105\055\124\165\147\162\141\040 +\107\154\157\142\141\154\040\122\157\157\164\040\103\101\040\122 +\123\101\040\166\063\060\036\027\015\062\060\060\063\061\070\060 +\071\060\067\061\067\132\027\015\064\065\060\063\061\062\060\071 +\060\067\061\067\132\060\201\200\061\013\060\011\006\003\125\004 +\006\023\002\124\122\061\017\060\015\006\003\125\004\007\023\006 +\101\156\153\141\162\141\061\031\060\027\006\003\125\004\012\023 +\020\105\055\124\165\147\162\141\040\105\102\107\040\101\056\123 +\056\061\035\060\033\006\003\125\004\013\023\024\105\055\124\165 +\147\162\141\040\124\162\165\163\164\040\103\145\156\164\145\162 +\061\046\060\044\006\003\125\004\003\023\035\105\055\124\165\147 +\162\141\040\107\154\157\142\141\154\040\122\157\157\164\040\103 +\101\040\122\123\101\040\166\063\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\242\146\360\211\267\162\173 +\356\011\311\143\322\323\103\335\136\303\246\204\070\112\361\215 +\201\273\024\275\107\350\100\027\363\075\303\170\105\162\246\056 +\220\336\232\072\324\040\161\312\274\237\035\113\227\012\307\061 +\272\076\327\376\045\251\052\216\066\364\321\057\307\267\251\135 +\063\334\060\160\370\100\154\113\262\246\061\141\321\064\074\075 +\061\172\307\257\304\247\247\204\341\227\244\350\113\366\027\174 +\356\074\007\355\342\212\127\334\266\373\370\103\045\120\352\047 +\201\250\206\274\217\122\112\226\072\140\032\226\273\375\163\364 +\205\375\203\375\177\204\155\064\154\177\152\267\113\001\003\277 +\255\151\267\327\062\331\365\127\152\351\206\202\076\245\146\061 +\263\026\075\302\363\046\140\062\323\122\036\260\154\244\067\076 +\364\365\257\353\341\337\200\006\317\052\101\347\146\011\341\113 +\227\347\167\275\041\155\051\266\147\303\055\176\355\326\171\145 +\321\317\072\266\321\261\136\126\141\120\172\132\316\116\120\061 +\200\003\230\107\347\344\030\174\104\132\306\244\263\073\306\306 +\303\072\360\154\303\213\310\244\221\005\363\365\331\266\252\006 +\241\267\253\344\261\352\041\024\134\203\244\374\377\266\120\323 +\214\022\046\231\166\160\351\300\017\246\164\374\273\320\033\170 +\316\162\222\342\050\234\274\346\351\011\330\072\323\211\346\276 +\056\167\337\001\012\157\226\366\345\215\074\115\122\166\032\126 +\341\163\176\027\254\075\255\154\243\122\022\030\160\346\200\116 +\063\362\176\046\062\254\005\215\070\244\346\166\074\237\020\151 +\016\155\235\322\301\171\040\153\133\317\063\215\321\224\166\065 +\347\135\125\307\267\254\050\253\106\314\347\073\041\265\012\012 +\344\112\131\334\201\065\113\104\225\022\012\147\245\241\377\133 +\000\007\322\300\314\371\077\374\237\063\362\000\370\214\154\207 +\235\006\055\361\357\343\346\006\372\305\146\023\133\374\120\007 +\236\161\206\262\332\157\164\060\317\223\123\350\334\042\326\336 +\040\037\141\215\243\056\243\170\062\220\154\334\254\062\265\005 +\344\365\074\063\015\326\340\207\167\027\114\235\260\330\011\250 +\015\127\367\104\205\360\310\004\276\134\135\132\343\027\216\124 +\143\151\177\111\164\144\005\214\243\002\003\001\000\001\243\143 +\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024 +\262\264\256\346\055\367\046\325\252\165\055\166\113\300\033\123 +\041\320\110\357\060\035\006\003\125\035\016\004\026\004\024\262 +\264\256\346\055\367\046\325\252\165\055\166\113\300\033\123\041 +\320\110\357\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\002\001\000\211\250\162\177\214\353\316\056\030 +\304\020\200\055\020\014\377\373\024\315\004\340\024\074\116\232 +\373\237\051\277\042\236\127\271\202\163\022\143\046\265\314\220 +\351\322\052\051\356\234\055\314\054\231\276\105\047\344\261\161 +\355\344\070\225\061\101\362\175\172\143\170\337\312\066\026\057 +\202\210\237\274\021\107\117\166\115\310\055\216\353\337\055\174 +\116\073\332\256\366\343\332\135\024\246\256\350\205\104\235\006 +\156\216\373\357\172\112\152\055\053\050\030\376\277\220\054\165 +\026\237\017\352\226\175\005\356\233\023\245\104\154\370\003\320 +\335\043\341\375\003\022\022\010\364\030\064\263\340\067\013\167 +\021\001\110\277\141\264\265\370\031\331\313\115\352\243\214\357 +\375\360\006\265\155\222\364\112\141\120\204\355\354\111\323\344 +\276\150\346\056\343\061\013\124\013\032\222\326\202\330\266\242 +\145\074\146\004\371\125\332\154\373\333\265\024\146\115\224\203 +\073\315\036\246\053\262\376\167\100\206\253\347\337\012\311\375 +\366\335\207\126\030\330\260\054\125\140\226\372\010\176\122\220 +\365\113\246\056\207\174\313\040\333\006\076\240\135\003\167\175 +\242\074\023\033\051\242\023\125\240\075\024\042\257\157\270\320 +\232\033\162\335\005\001\215\206\140\277\244\147\356\265\245\015 +\321\177\346\032\053\142\146\303\007\272\347\240\110\034\070\303 +\351\105\373\247\177\374\355\002\150\032\312\167\022\167\246\000 +\125\050\024\354\326\307\022\242\033\145\102\351\221\350\313\076 +\207\211\124\135\331\257\235\227\234\151\347\012\377\017\132\170 +\213\143\052\114\175\107\224\077\336\113\351\123\320\060\361\305 +\366\236\111\337\073\240\221\243\243\376\315\130\314\352\337\257 +\157\050\073\240\151\233\217\354\254\256\053\124\235\233\004\261 +\107\040\257\226\022\076\143\224\035\004\347\056\273\206\307\014 +\232\210\277\166\107\357\367\260\013\227\146\322\104\317\140\122 +\007\341\325\054\112\072\047\141\167\312\327\217\347\207\016\060 +\377\014\273\004\342\141\303\242\310\227\141\216\264\060\152\074 +\155\302\007\137\112\163\057\077\371\026\212\001\146\357\272\221 +\312\122\127\173\256\324\346\017\335\013\172\177\213\236\046\040 +\317\073\357\201\161\203\131 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "E-Tugra Global Root CA RSA v3" +# Issuer: CN=E-Tugra Global Root CA RSA v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Serial Number:0d:4d:c5:cd:16:22:95:96:08:7e:b8:0b:7f:15:06:34:fb:79:10:34 +# Subject: CN=E-Tugra Global Root CA RSA v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Not Valid Before: Wed Mar 18 09:07:17 2020 +# Not Valid After : Sun Mar 12 09:07:17 2045 +# Fingerprint (SHA-256): EF:66:B0:B1:0A:3C:DB:9F:2E:36:48:C7:6B:D2:AF:18:EA:D2:BF:E6:F1:17:65:5E:28:C4:06:0D:A1:A3:F4:C2 +# Fingerprint (SHA1): E9:A8:5D:22:14:52:1C:5B:AA:0A:B4:BE:24:6A:23:8A:C9:BA:E2:A9 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "E-Tugra Global Root CA RSA v3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\351\250\135\042\024\122\034\133\252\012\264\276\044\152\043\212 +\311\272\342\251 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\042\276\020\366\302\370\003\210\163\137\063\051\107\050\107\244 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\122\123\101 +\040\166\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\015\115\305\315\026\042\225\226\010\176\270\013\177\025 +\006\064\373\171\020\064 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "E-Tugra Global Root CA ECC v3" +# +# Issuer: CN=E-Tugra Global Root CA ECC v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Serial Number:26:46:19:77:31:e1:4f:6f:28:36:de:39:51:86:e6:d4:97:88:22:c1 +# Subject: CN=E-Tugra Global Root CA ECC v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Not Valid Before: Wed Mar 18 09:46:58 2020 +# Not Valid After : Sun Mar 12 09:46:58 2045 +# Fingerprint (SHA-256): 87:3F:46:85:FA:7F:56:36:25:25:2E:6D:36:BC:D7:F1:6F:C2:49:51:F2:64:E4:7E:1B:95:4F:49:08:CD:CA:13 +# Fingerprint (SHA1): 8A:2F:AF:57:53:B1:B0:E6:A1:04:EC:5B:6A:69:71:6D:F6:1C:E2:84 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "E-Tugra Global Root CA ECC v3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\105\103\103 +\040\166\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\105\103\103 +\040\166\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\046\106\031\167\061\341\117\157\050\066\336\071\121\206 +\346\324\227\210\042\301 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\245\060\202\002\052\240\003\002\001\002\002\024\046 +\106\031\167\061\341\117\157\050\066\336\071\121\206\346\324\227 +\210\042\301\060\012\006\010\052\206\110\316\075\004\003\003\060 +\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122\061 +\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162\141 +\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165\147 +\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033\006 +\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124\162 +\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006\003 +\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154\157 +\142\141\154\040\122\157\157\164\040\103\101\040\105\103\103\040 +\166\063\060\036\027\015\062\060\060\063\061\070\060\071\064\066 +\065\070\132\027\015\064\065\060\063\061\062\060\071\064\066\065 +\070\132\060\201\200\061\013\060\011\006\003\125\004\006\023\002 +\124\122\061\017\060\015\006\003\125\004\007\023\006\101\156\153 +\141\162\141\061\031\060\027\006\003\125\004\012\023\020\105\055 +\124\165\147\162\141\040\105\102\107\040\101\056\123\056\061\035 +\060\033\006\003\125\004\013\023\024\105\055\124\165\147\162\141 +\040\124\162\165\163\164\040\103\145\156\164\145\162\061\046\060 +\044\006\003\125\004\003\023\035\105\055\124\165\147\162\141\040 +\107\154\157\142\141\154\040\122\157\157\164\040\103\101\040\105 +\103\103\040\166\063\060\166\060\020\006\007\052\206\110\316\075 +\002\001\006\005\053\201\004\000\042\003\142\000\004\216\230\051 +\277\307\020\036\047\333\253\003\314\050\054\330\136\110\031\020 +\051\314\313\131\201\314\214\270\222\027\211\203\052\222\366\303 +\244\035\114\142\325\237\326\240\106\334\034\274\166\301\343\107 +\320\133\023\332\347\245\263\146\110\347\041\232\112\117\206\012 +\175\154\352\115\062\200\012\262\172\011\233\151\113\230\201\342 +\056\354\002\160\226\037\375\365\106\316\312\334\202\243\143\060 +\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024\377 +\202\061\162\076\371\304\146\154\255\070\236\321\260\121\210\245 +\220\314\365\060\035\006\003\125\035\016\004\026\004\024\377\202 +\061\162\076\371\304\146\154\255\070\236\321\260\121\210\245\220 +\314\365\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003\151 +\000\060\146\002\061\000\346\005\130\151\141\345\055\312\015\313 +\361\031\010\275\326\375\121\222\032\176\143\124\004\220\221\232 +\065\221\071\231\372\007\251\146\223\272\310\150\324\212\077\372 +\355\156\026\002\047\267\002\061\000\335\132\027\053\166\035\145 +\102\226\246\254\135\212\171\126\330\212\033\337\232\336\137\307 +\120\217\261\133\161\014\046\337\152\100\000\354\063\221\041\161 +\276\150\344\043\244\331\255\241\067 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "E-Tugra Global Root CA ECC v3" +# Issuer: CN=E-Tugra Global Root CA ECC v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Serial Number:26:46:19:77:31:e1:4f:6f:28:36:de:39:51:86:e6:d4:97:88:22:c1 +# Subject: CN=E-Tugra Global Root CA ECC v3,OU=E-Tugra Trust Center,O=E-Tugra EBG A.S.,L=Ankara,C=TR +# Not Valid Before: Wed Mar 18 09:46:58 2020 +# Not Valid After : Sun Mar 12 09:46:58 2045 +# Fingerprint (SHA-256): 87:3F:46:85:FA:7F:56:36:25:25:2E:6D:36:BC:D7:F1:6F:C2:49:51:F2:64:E4:7E:1B:95:4F:49:08:CD:CA:13 +# Fingerprint (SHA1): 8A:2F:AF:57:53:B1:B0:E6:A1:04:EC:5B:6A:69:71:6D:F6:1C:E2:84 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "E-Tugra Global Root CA ECC v3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\212\057\257\127\123\261\260\346\241\004\354\133\152\151\161\155 +\366\034\342\204 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\106\274\201\273\361\265\036\367\113\226\274\024\342\347\047\144 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\017\060\015\006\003\125\004\007\023\006\101\156\153\141\162 +\141\061\031\060\027\006\003\125\004\012\023\020\105\055\124\165 +\147\162\141\040\105\102\107\040\101\056\123\056\061\035\060\033 +\006\003\125\004\013\023\024\105\055\124\165\147\162\141\040\124 +\162\165\163\164\040\103\145\156\164\145\162\061\046\060\044\006 +\003\125\004\003\023\035\105\055\124\165\147\162\141\040\107\154 +\157\142\141\154\040\122\157\157\164\040\103\101\040\105\103\103 +\040\166\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\046\106\031\167\061\341\117\157\050\066\336\071\121\206 +\346\324\227\210\042\301 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DIGITALSIGN GLOBAL ROOT RSA CA" +# +# Issuer: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:5d:59:c8:ca:ab:09:57:f5:e6:b5:da:29:94:04:6a:ff:c5:d4:95:87 +# Subject: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 10:50:34 2021 +# Not Valid After : Mon Jan 15 10:50:34 2046 +# Fingerprint (SHA-256): 82:BD:5D:85:1A:CF:7F:6E:1B:A7:BF:CB:C5:30:30:D0:E7:BC:3C:21:DF:77:2D:85:8C:AB:41:D1:99:BD:F5:95 +# Fingerprint (SHA1): B9:82:07:97:AE:52:A5:68:6F:46:07:DF:FD:03:72:3D:92:86:88:2D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT RSA CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\135\131\310\312\253\011\127\365\346\265\332\051\224\004 +\152\377\305\324\225\207 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\265\060\202\003\235\240\003\002\001\002\002\024\135 +\131\310\312\253\011\127\365\346\265\332\051\224\004\152\377\305 +\324\225\207\060\015\006\011\052\206\110\206\367\015\001\001\015 +\005\000\060\142\061\013\060\011\006\003\125\004\006\023\002\120 +\124\061\052\060\050\006\003\125\004\012\014\041\104\151\147\151 +\164\141\154\123\151\147\156\040\103\145\162\164\151\146\151\143 +\141\144\157\162\141\040\104\151\147\151\164\141\154\061\047\060 +\045\006\003\125\004\003\014\036\104\111\107\111\124\101\114\123 +\111\107\116\040\107\114\117\102\101\114\040\122\117\117\124\040 +\122\123\101\040\103\101\060\036\027\015\062\061\060\061\062\061 +\061\060\065\060\063\064\132\027\015\064\066\060\061\061\065\061 +\060\065\060\063\064\132\060\142\061\013\060\011\006\003\125\004 +\006\023\002\120\124\061\052\060\050\006\003\125\004\012\014\041 +\104\151\147\151\164\141\154\123\151\147\156\040\103\145\162\164 +\151\146\151\143\141\144\157\162\141\040\104\151\147\151\164\141 +\154\061\047\060\045\006\003\125\004\003\014\036\104\111\107\111 +\124\101\114\123\111\107\116\040\107\114\117\102\101\114\040\122 +\117\117\124\040\122\123\101\040\103\101\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\310\207\266\070\323 +\034\360\336\022\370\203\307\304\212\342\211\270\264\042\172\170 +\370\014\146\121\150\166\067\012\325\117\302\132\010\270\026\134 +\367\162\001\011\067\204\201\052\124\153\327\222\320\154\372\250 +\247\103\022\064\353\016\333\067\017\051\376\212\061\121\102\350 +\113\234\220\250\310\054\021\323\375\240\051\176\316\336\224\366 +\202\340\130\264\116\105\045\361\042\362\075\323\017\173\124\032 +\334\062\266\326\121\116\176\101\264\127\270\054\306\271\016\056 +\312\127\361\325\310\323\130\347\245\351\102\021\256\323\040\045 +\224\151\327\217\312\242\015\303\323\237\007\150\077\025\322\147 +\056\123\375\166\202\233\013\163\251\051\015\236\021\223\024\010 +\230\354\236\124\022\112\126\242\006\025\354\153\154\056\222\140 +\056\206\015\256\202\037\121\115\343\262\007\327\020\031\127\042 +\366\251\151\104\204\363\331\075\240\006\277\314\210\176\177\365 +\316\133\245\302\052\152\164\102\352\157\246\377\371\150\261\320 +\137\275\221\322\125\157\063\127\114\036\235\344\342\213\301\205 +\145\240\340\152\234\000\000\210\222\335\130\010\026\362\160\061 +\250\034\341\336\275\116\161\351\326\276\176\265\241\132\303\115 +\367\277\233\275\224\244\375\365\252\123\223\106\311\046\001\004 +\160\304\240\161\272\316\045\146\373\221\176\125\160\356\111\012 +\115\142\177\302\120\232\162\362\030\147\235\351\105\250\064\204 +\350\370\201\366\321\132\042\036\007\117\073\263\177\335\021\245 +\163\334\276\251\031\072\151\251\155\033\062\342\211\252\245\047 +\013\132\176\164\342\017\144\071\135\176\134\271\301\027\374\307 +\215\136\311\354\044\355\322\362\077\172\204\105\067\002\276\076 +\153\131\304\346\133\026\155\300\252\236\252\265\131\056\054\160 +\125\234\314\231\226\230\044\124\321\216\332\312\264\021\264\267 +\160\103\037\157\220\013\040\240\250\166\023\145\333\333\043\132 +\165\113\241\013\061\167\012\356\175\150\141\032\023\214\352\121 +\176\134\126\243\127\114\135\241\353\023\145\277\124\024\314\363 +\356\334\327\354\074\227\362\170\126\270\337\162\134\160\374\316 +\006\335\237\322\007\061\357\347\122\221\236\315\272\327\300\030 +\104\007\061\145\111\062\151\023\112\353\217\002\003\001\000\001 +\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\037\006\003\125\035\043\004\030\060\026 +\200\024\265\066\274\074\214\032\253\054\366\131\031\055\203\024 +\332\223\045\025\326\206\060\035\006\003\125\035\016\004\026\004 +\024\265\066\274\074\214\032\253\054\366\131\031\055\203\024\332 +\223\045\025\326\206\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001 +\001\015\005\000\003\202\002\001\000\024\373\061\045\070\061\370 +\312\010\262\043\166\070\255\370\323\131\365\314\264\127\045\341 +\104\276\176\374\026\354\256\372\046\237\117\147\026\112\126\360 +\375\355\307\031\001\064\216\220\132\055\326\200\134\354\161\322 +\201\045\202\036\000\161\337\232\321\325\035\042\273\321\245\363 +\142\017\264\353\334\044\163\376\246\126\315\232\024\305\004\065 +\026\061\242\007\353\245\000\342\266\370\137\162\375\077\141\111 +\216\336\176\115\070\327\172\036\164\067\154\121\334\276\000\004 +\270\070\024\363\040\301\355\233\247\043\375\015\102\204\035\177 +\362\163\303\320\170\143\361\237\354\327\133\351\361\276\154\240 +\113\003\236\215\151\341\024\332\210\020\201\043\123\377\332\124 +\053\013\306\271\226\225\004\030\106\363\173\250\227\330\133\150 +\244\344\070\034\016\105\345\230\323\011\256\232\136\354\263\171 +\015\071\162\362\364\224\235\016\236\140\042\346\250\366\114\205 +\315\007\202\072\150\071\315\075\137\343\070\364\266\257\073\153 +\112\237\140\121\105\242\100\002\345\252\014\343\076\321\170\324 +\242\164\234\046\272\005\232\050\160\112\076\246\013\320\035\111 +\360\272\370\256\101\020\176\244\007\022\275\250\317\051\075\127 +\273\307\361\103\107\000\076\256\160\030\132\040\173\011\313\072 +\072\160\200\345\114\140\230\301\025\301\035\112\367\310\360\233 +\341\162\255\347\135\150\130\013\004\261\214\274\237\267\373\156 +\213\133\004\125\373\353\043\125\327\170\120\332\045\313\276\047 +\066\273\044\032\171\034\121\321\376\023\273\377\170\054\334\244 +\276\057\366\305\113\123\317\247\114\231\136\160\254\131\210\004 +\256\144\004\277\173\246\172\115\323\350\167\275\241\176\120\025 +\363\357\111\060\205\115\041\127\252\333\054\165\227\255\201\001 +\207\242\261\160\235\036\006\132\003\140\261\077\246\155\202\054 +\324\024\261\201\245\350\075\210\035\264\162\054\130\067\212\216 +\070\224\270\163\335\251\340\270\366\167\242\263\174\130\336\256 +\151\072\265\213\245\032\273\362\330\164\006\234\375\142\163\040 +\041\166\261\176\160\236\031\324\353\027\142\031\070\231\315\066 +\053\107\376\061\313\337\271\344\254\010\323\330\246\353\324\236 +\176\113\144\244\125\135\053\027\311 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DIGITALSIGN GLOBAL ROOT RSA CA" +# Issuer: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:5d:59:c8:ca:ab:09:57:f5:e6:b5:da:29:94:04:6a:ff:c5:d4:95:87 +# Subject: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 10:50:34 2021 +# Not Valid After : Mon Jan 15 10:50:34 2046 +# Fingerprint (SHA-256): 82:BD:5D:85:1A:CF:7F:6E:1B:A7:BF:CB:C5:30:30:D0:E7:BC:3C:21:DF:77:2D:85:8C:AB:41:D1:99:BD:F5:95 +# Fingerprint (SHA1): B9:82:07:97:AE:52:A5:68:6F:46:07:DF:FD:03:72:3D:92:86:88:2D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT RSA CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\271\202\007\227\256\122\245\150\157\106\007\337\375\003\162\075 +\222\206\210\055 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\033\032\275\032\171\306\333\264\355\263\207\314\251\323\116\170 +END +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\135\131\310\312\253\011\127\365\346\265\332\051\224\004 +\152\377\305\324\225\207 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DIGITALSIGN GLOBAL ROOT ECDSA CA" +# +# Issuer: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:36:2d:8f:72:88:a2:28:27:e4:00:ff:24:c6:2d:e4:eb:fa:9d:b6:e1 +# Subject: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 11:07:50 2021 +# Not Valid After : Mon Jan 15 11:07:50 2046 +# Fingerprint (SHA-256): 26:1D:71:14:AE:5F:8F:F2:D8:C7:20:9A:9D:E4:28:9E:6A:FC:9D:71:70:23:D8:54:50:90:91:99:F1:85:7C:FE +# Fingerprint (SHA1): 67:A8:08:EB:8F:88:F5:80:6C:05:45:1B:17:F3:D7:00:2F:D2:4A:8A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT ECDSA CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\066\055\217\162\210\242\050\047\344\000\377\044\306\055 +\344\353\372\235\266\341 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\152\060\202\001\360\240\003\002\001\002\002\024\066 +\055\217\162\210\242\050\047\344\000\377\044\306\055\344\353\372 +\235\266\341\060\012\006\010\052\206\110\316\075\004\003\003\060 +\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061\052 +\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141\154 +\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144\157 +\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006\003 +\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107\116 +\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103\104 +\123\101\040\103\101\060\036\027\015\062\061\060\061\062\061\061 +\061\060\067\065\060\132\027\015\064\066\060\061\061\065\061\061 +\060\067\065\060\132\060\144\061\013\060\011\006\003\125\004\006 +\023\002\120\124\061\052\060\050\006\003\125\004\012\014\041\104 +\151\147\151\164\141\154\123\151\147\156\040\103\145\162\164\151 +\146\151\143\141\144\157\162\141\040\104\151\147\151\164\141\154 +\061\051\060\047\006\003\125\004\003\014\040\104\111\107\111\124 +\101\114\123\111\107\116\040\107\114\117\102\101\114\040\122\117 +\117\124\040\105\103\104\123\101\040\103\101\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\156\013\243\253\063\115\034\352\112\350\374\004\215 +\024\240\175\360\010\054\137\203\253\223\321\322\173\272\327\111 +\175\217\354\022\120\137\324\271\313\345\360\371\063\143\037\311 +\127\354\100\330\021\013\227\350\122\026\314\051\216\364\006\206 +\036\070\334\075\127\304\356\252\275\310\124\004\046\132\047\023 +\121\107\075\037\037\032\216\250\225\244\063\320\314\107\314\155 +\270\374\110\243\143\060\141\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\037\006\003\125\035\043\004 +\030\060\026\200\024\316\257\112\213\032\165\342\361\070\347\002 +\360\026\255\136\352\144\325\173\264\060\035\006\003\125\035\016 +\004\026\004\024\316\257\112\213\032\165\342\361\070\347\002\360 +\026\255\136\352\144\325\173\264\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\012\006\010\052\206\110\316 +\075\004\003\003\003\150\000\060\145\002\060\012\210\304\161\234 +\104\003\115\215\264\307\274\250\256\331\060\047\065\152\153\026 +\143\327\374\347\131\341\247\211\033\114\061\232\043\125\104\346 +\363\103\041\325\107\047\157\155\127\001\252\002\061\000\373\262 +\352\342\227\177\121\265\237\110\353\274\157\065\211\250\144\160 +\253\127\166\315\300\306\024\140\312\177\342\202\000\163\367\314 +\065\352\216\044\233\345\010\131\307\004\214\163\170\376 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DIGITALSIGN GLOBAL ROOT ECDSA CA" +# Issuer: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:36:2d:8f:72:88:a2:28:27:e4:00:ff:24:c6:2d:e4:eb:fa:9d:b6:e1 +# Subject: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 11:07:50 2021 +# Not Valid After : Mon Jan 15 11:07:50 2046 +# Fingerprint (SHA-256): 26:1D:71:14:AE:5F:8F:F2:D8:C7:20:9A:9D:E4:28:9E:6A:FC:9D:71:70:23:D8:54:50:90:91:99:F1:85:7C:FE +# Fingerprint (SHA1): 67:A8:08:EB:8F:88:F5:80:6C:05:45:1B:17:F3:D7:00:2F:D2:4A:8A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT ECDSA CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\147\250\010\353\217\210\365\200\154\005\105\033\027\363\327\000 +\057\322\112\212 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\252\055\241\316\377\041\302\210\313\132\036\214\341\311\222\217 +END +CKA_ISSUER MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\066\055\217\162\210\242\050\047\344\000\377\044\306\055 +\344\353\372\235\266\341 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Security Communication RootCA3" +# +# Issuer: CN=Security Communication RootCA3,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:e1:7c:37:40:fd:1b:fe:67 +# Subject: CN=Security Communication RootCA3,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 06:17:16 2016 +# Not Valid After : Mon Jan 18 06:17:16 2038 +# Fingerprint (SHA-256): 24:A5:5C:2A:B0:51:44:2D:06:17:76:65:41:23:9A:4A:D0:32:D7:C5:51:75:AA:34:FF:DE:2F:BC:4F:5C:52:94 +# Fingerprint (SHA1): C3:03:C8:22:74:92:E5:61:A2:9C:5F:79:91:2B:1E:44:13:91:30:3A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication RootCA3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\003\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\003\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\341\174\067\100\375\033\376\147 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\177\060\202\003\147\240\003\002\001\002\002\011\000 +\341\174\067\100\375\033\376\147\060\015\006\011\052\206\110\206 +\367\015\001\001\014\005\000\060\135\061\013\060\011\006\003\125 +\004\006\023\002\112\120\061\045\060\043\006\003\125\004\012\023 +\034\123\105\103\117\115\040\124\162\165\163\164\040\123\171\163 +\164\145\155\163\040\103\117\056\054\114\124\104\056\061\047\060 +\045\006\003\125\004\003\023\036\123\145\143\165\162\151\164\171 +\040\103\157\155\155\165\156\151\143\141\164\151\157\156\040\122 +\157\157\164\103\101\063\060\036\027\015\061\066\060\066\061\066 +\060\066\061\067\061\066\132\027\015\063\070\060\061\061\070\060 +\066\061\067\061\066\132\060\135\061\013\060\011\006\003\125\004 +\006\023\002\112\120\061\045\060\043\006\003\125\004\012\023\034 +\123\105\103\117\115\040\124\162\165\163\164\040\123\171\163\164 +\145\155\163\040\103\117\056\054\114\124\104\056\061\047\060\045 +\006\003\125\004\003\023\036\123\145\143\165\162\151\164\171\040 +\103\157\155\155\165\156\151\143\141\164\151\157\156\040\122\157 +\157\164\103\101\063\060\202\002\042\060\015\006\011\052\206\110 +\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002 +\012\002\202\002\001\000\343\311\162\111\367\060\336\011\174\251 +\100\201\130\323\264\072\335\272\141\017\223\120\156\151\074\065 +\302\356\133\163\220\033\147\114\041\354\137\065\273\071\076\053 +\012\140\357\273\155\053\206\373\161\242\310\254\344\126\224\371 +\311\257\261\162\324\040\254\164\322\270\025\255\121\376\205\164 +\241\271\020\376\005\200\371\122\223\263\100\075\165\020\254\300 +\226\267\247\176\166\274\343\033\122\031\316\021\037\013\004\064 +\365\330\365\151\074\167\363\144\364\015\252\205\336\340\011\120 +\004\027\226\204\267\310\212\274\115\162\374\034\273\317\363\006 +\115\371\237\144\367\176\246\146\206\065\161\310\021\200\114\301 +\161\100\130\036\276\240\163\366\374\076\120\341\340\057\046\075 +\176\134\043\265\171\160\336\372\340\321\245\326\014\101\161\173 +\367\352\214\034\210\307\354\213\365\321\057\125\226\106\174\132 +\073\130\073\373\272\330\055\265\045\332\172\116\317\104\256\041 +\246\236\230\312\040\156\174\273\210\205\133\373\300\020\142\273 +\362\371\047\107\357\321\211\071\103\304\337\336\341\101\277\124 +\163\040\227\055\154\332\363\324\007\243\346\271\330\157\256\374 +\214\031\056\323\147\147\053\225\333\130\134\265\152\002\363\270 +\203\136\264\153\276\101\176\127\011\165\104\120\125\315\132\021 +\141\041\012\141\302\251\210\375\023\274\055\211\057\315\141\340 +\225\276\312\265\173\341\173\064\147\013\037\266\014\307\174\036 +\031\123\312\247\261\112\025\040\126\024\160\075\053\202\054\017 +\235\025\035\107\200\107\377\170\231\016\061\257\157\076\217\355 +\206\151\036\173\030\210\024\262\302\374\202\063\056\234\113\055 +\373\160\073\161\252\053\173\046\047\363\032\302\334\373\027\270 +\241\352\313\240\264\256\323\224\176\172\320\253\303\354\070\055 +\021\056\210\277\324\077\255\022\073\102\254\217\002\156\175\314 +\321\137\141\276\241\274\072\152\110\352\046\125\042\026\135\137 +\015\377\047\063\237\030\003\164\212\133\122\040\107\153\105\115 +\042\167\214\125\047\360\257\036\214\311\203\042\124\267\232\320 +\117\331\316\374\331\056\034\226\050\261\002\323\003\275\045\122 +\034\064\146\117\043\253\364\167\202\226\035\321\127\060\010\021 +\005\375\127\321\331\307\002\003\001\000\001\243\102\060\100\060 +\035\006\003\125\035\016\004\026\004\024\144\024\174\374\130\162 +\026\246\012\051\064\025\157\052\313\274\374\257\250\253\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003\202 +\002\001\000\334\002\043\010\342\357\041\072\307\015\267\046\322 +\142\223\247\245\043\162\007\040\202\140\337\030\327\124\255\151 +\045\222\236\331\024\317\231\271\122\201\317\256\154\212\073\132 +\071\310\154\001\103\302\042\155\002\360\142\315\116\143\103\300 +\024\332\364\143\360\352\364\161\356\116\207\343\161\251\364\311 +\127\345\056\137\034\171\273\043\252\207\104\127\351\275\065\115 +\101\273\113\050\243\230\262\033\331\013\027\007\345\367\352\235 +\365\166\327\277\304\266\201\130\377\310\377\144\151\142\171\255 +\156\016\037\177\356\035\151\345\267\162\161\263\376\245\001\065 +\224\124\053\300\122\155\217\125\304\311\322\270\313\312\064\010 +\121\205\240\365\274\264\027\130\352\012\134\172\275\143\306\072 +\057\377\226\111\031\204\352\147\330\004\261\141\364\000\133\112 +\267\234\161\067\031\205\171\277\201\260\307\023\016\166\161\076 +\072\200\006\256\006\026\247\215\265\302\304\313\377\100\245\134 +\215\245\311\072\355\162\201\312\134\230\074\322\064\003\167\010 +\375\360\051\131\135\041\010\307\140\277\244\161\173\270\331\036 +\202\276\011\257\145\157\050\253\277\113\265\356\076\010\107\047 +\240\017\157\017\213\077\254\225\030\363\271\016\334\147\125\156 +\142\236\106\016\321\004\170\312\162\256\166\331\245\370\262\337 +\210\011\141\213\357\044\116\321\131\077\132\324\075\311\223\074 +\053\144\365\201\015\026\226\367\222\303\376\061\157\350\052\062 +\164\016\364\114\230\112\030\016\060\124\325\305\353\274\305\025 +\236\350\231\041\353\047\053\011\012\333\361\346\160\030\126\273 +\014\344\276\371\350\020\244\023\222\270\034\340\333\147\035\123 +\003\244\042\247\334\135\222\020\074\352\377\374\033\020\032\303 +\330\320\234\235\145\313\320\053\047\061\003\036\066\341\075\166 +\165\014\377\105\046\271\335\121\274\043\307\137\330\330\207\020 +\100\022\015\075\070\067\347\104\074\030\300\123\011\144\217\377 +\325\232\246\174\160\056\163\125\041\350\337\377\203\271\035\076 +\062\036\326\246\175\054\361\146\351\134\035\247\243\316\136\045 +\062\053\343\225\254\052\007\316\264\050\170\206\074\055\246\235 +\115\322\164\060\335\144\121\025\333\203\203\121\327\257\375\063 +\235\115\146 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Security Communication RootCA3" +# Issuer: CN=Security Communication RootCA3,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:e1:7c:37:40:fd:1b:fe:67 +# Subject: CN=Security Communication RootCA3,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 06:17:16 2016 +# Not Valid After : Mon Jan 18 06:17:16 2038 +# Fingerprint (SHA-256): 24:A5:5C:2A:B0:51:44:2D:06:17:76:65:41:23:9A:4A:D0:32:D7:C5:51:75:AA:34:FF:DE:2F:BC:4F:5C:52:94 +# Fingerprint (SHA1): C3:03:C8:22:74:92:E5:61:A2:9C:5F:79:91:2B:1E:44:13:91:30:3A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication RootCA3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\303\003\310\042\164\222\345\141\242\234\137\171\221\053\036\104 +\023\221\060\072 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\034\232\026\377\236\134\340\115\212\024\001\364\065\135\051\046 +END +CKA_ISSUER MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\003\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\341\174\067\100\375\033\376\147 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Security Communication ECC RootCA1" +# +# Issuer: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:d6:5d:9b:b3:78:81:2e:eb +# Subject: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 05:15:28 2016 +# Not Valid After : Mon Jan 18 05:15:28 2038 +# Fingerprint (SHA-256): E7:4F:BD:A5:5B:D5:64:C4:73:A3:6B:44:1A:A7:99:C8:A6:8E:07:74:40:E8:28:8B:9F:A1:E5:0E:4B:BA:CA:11 +# Fingerprint (SHA1): B8:0E:26:A9:BF:D2:B2:3B:C0:EF:46:C9:BA:C7:BB:F6:1D:0D:41:41 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication ECC RootCA1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\326\135\233\263\170\201\056\353 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\070\060\202\001\276\240\003\002\001\002\002\011\000 +\326\135\233\263\170\201\056\353\060\012\006\010\052\206\110\316 +\075\004\003\003\060\141\061\013\060\011\006\003\125\004\006\023 +\002\112\120\061\045\060\043\006\003\125\004\012\023\034\123\105 +\103\117\115\040\124\162\165\163\164\040\123\171\163\164\145\155 +\163\040\103\117\056\054\114\124\104\056\061\053\060\051\006\003 +\125\004\003\023\042\123\145\143\165\162\151\164\171\040\103\157 +\155\155\165\156\151\143\141\164\151\157\156\040\105\103\103\040 +\122\157\157\164\103\101\061\060\036\027\015\061\066\060\066\061 +\066\060\065\061\065\062\070\132\027\015\063\070\060\061\061\070 +\060\065\061\065\062\070\132\060\141\061\013\060\011\006\003\125 +\004\006\023\002\112\120\061\045\060\043\006\003\125\004\012\023 +\034\123\105\103\117\115\040\124\162\165\163\164\040\123\171\163 +\164\145\155\163\040\103\117\056\054\114\124\104\056\061\053\060 +\051\006\003\125\004\003\023\042\123\145\143\165\162\151\164\171 +\040\103\157\155\155\165\156\151\143\141\164\151\157\156\040\105 +\103\103\040\122\157\157\164\103\101\061\060\166\060\020\006\007 +\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142 +\000\004\244\245\157\140\003\003\303\275\061\364\323\027\234\053 +\204\165\254\345\375\075\127\156\327\143\277\346\004\211\222\216 +\201\234\343\351\107\156\312\220\022\310\023\340\247\235\367\145 +\164\037\154\020\262\350\344\351\357\155\205\062\231\104\261\136 +\375\314\166\020\330\133\275\242\306\371\326\102\344\127\166\334 +\220\302\065\251\113\210\074\022\107\155\134\377\111\117\032\112 +\120\261\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\206\034\347\376\055\245\112\213\010\376\050\021\372\276\243 +\146\370\140\131\057\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075\004 +\003\003\003\150\000\060\145\002\060\025\135\102\075\374\266\356 +\367\073\261\066\350\236\366\304\106\050\111\063\320\130\103\052 +\143\051\314\115\261\264\172\242\271\015\070\245\135\110\052\375 +\313\262\163\135\243\210\010\307\014\002\061\000\300\253\055\016 +\155\355\030\242\333\123\351\045\333\125\010\340\120\314\337\104 +\141\026\202\253\111\260\262\201\354\163\207\170\264\114\262\142 +\033\022\372\026\115\045\113\143\275\036\067\331 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Security Communication ECC RootCA1" +# Issuer: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:d6:5d:9b:b3:78:81:2e:eb +# Subject: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 05:15:28 2016 +# Not Valid After : Mon Jan 18 05:15:28 2038 +# Fingerprint (SHA-256): E7:4F:BD:A5:5B:D5:64:C4:73:A3:6B:44:1A:A7:99:C8:A6:8E:07:74:40:E8:28:8B:9F:A1:E5:0E:4B:BA:CA:11 +# Fingerprint (SHA1): B8:0E:26:A9:BF:D2:B2:3B:C0:EF:46:C9:BA:C7:BB:F6:1D:0D:41:41 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication ECC RootCA1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\270\016\046\251\277\322\262\073\300\357\106\311\272\307\273\366 +\035\015\101\101 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\176\103\260\222\150\354\005\103\114\230\253\135\065\056\176\206 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\326\135\233\263\170\201\056\353 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "BJCA Global Root CA1" +# +# Issuer: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:55:6f:65:e3:b4:d9:90:6a:1b:09:d1:6c:3e:c0:6c:20 +# Subject: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:16:17 2019 +# Not Valid After : Mon Dec 12 03:16:17 2044 +# Fingerprint (SHA-256): F3:89:6F:88:FE:7C:0A:88:27:66:A7:FA:6A:D2:74:9F:B5:7A:7F:3E:98:FB:76:9C:1F:A7:B0:9C:2C:44:D5:AE +# Fingerprint (SHA1): D5:EC:8D:7B:4C:BA:79:F4:E7:E8:CB:9D:6B:AE:77:83:10:03:21:6A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\157\145\343\264\331\220\152\033\011\321\154\076\300 +\154\040 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\164\060\202\003\134\240\003\002\001\002\002\020\125 +\157\145\343\264\331\220\152\033\011\321\154\076\300\154\040\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\124 +\061\013\060\011\006\003\125\004\006\023\002\103\116\061\046\060 +\044\006\003\125\004\012\014\035\102\105\111\112\111\116\107\040 +\103\105\122\124\111\106\111\103\101\124\105\040\101\125\124\110 +\117\122\111\124\131\061\035\060\033\006\003\125\004\003\014\024 +\102\112\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\061\060\036\027\015\061\071\061\062\061\071\060\063 +\061\066\061\067\132\027\015\064\064\061\062\061\062\060\063\061 +\066\061\067\132\060\124\061\013\060\011\006\003\125\004\006\023 +\002\103\116\061\046\060\044\006\003\125\004\012\014\035\102\105 +\111\112\111\116\107\040\103\105\122\124\111\106\111\103\101\124 +\105\040\101\125\124\110\117\122\111\124\131\061\035\060\033\006 +\003\125\004\003\014\024\102\112\103\101\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\061\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\361\146\010\275\331 +\305\025\141\313\204\004\101\245\151\067\167\035\301\260\173\372 +\303\167\110\220\023\162\144\321\270\174\220\065\235\030\171\210 +\343\227\001\074\107\201\362\016\242\230\015\236\077\067\340\031 +\262\220\362\106\034\222\261\072\141\316\372\267\106\236\003\206 +\327\063\156\355\367\105\214\166\067\336\156\226\221\367\327\176 +\053\207\027\325\213\065\356\204\221\162\127\334\140\303\303\271 +\347\307\147\044\043\117\143\012\143\366\146\175\113\125\247\077 +\170\144\111\151\022\227\340\114\015\323\011\240\062\060\072\372 +\237\300\362\234\305\022\052\056\034\265\004\063\332\244\070\021 +\152\336\306\030\366\107\072\042\101\207\042\374\304\211\050\124 +\330\214\245\060\012\370\027\026\312\254\067\375\171\247\221\027 +\170\070\231\255\130\355\262\336\314\211\175\003\234\263\211\145 +\347\343\073\261\042\206\217\006\155\170\007\375\221\022\177\260 +\153\034\211\015\371\270\313\164\133\007\302\310\364\065\321\144 +\143\172\351\156\232\050\326\060\275\346\033\335\025\257\204\352 +\234\307\312\365\016\352\362\135\051\207\217\151\163\071\276\056 +\044\157\105\041\254\305\324\151\045\006\203\255\172\110\205\023 +\054\015\006\270\154\171\126\374\243\147\062\201\365\127\245\312 +\127\102\151\351\134\044\141\357\342\060\030\116\104\230\125\157 +\172\302\223\330\031\266\336\174\107\212\021\116\111\107\333\050 +\224\002\013\224\112\054\371\022\320\117\350\061\176\154\172\277 +\246\077\233\071\075\002\026\243\030\263\147\254\133\077\054\203 +\053\147\071\201\134\271\176\224\325\144\335\236\217\156\256\350 +\174\133\264\327\152\107\110\327\176\263\324\055\216\126\166\116 +\317\151\361\156\104\154\324\044\352\215\044\241\030\277\275\127 +\376\251\231\065\265\333\020\167\270\075\110\272\326\301\347\361 +\043\076\327\337\205\235\047\074\324\100\275\012\014\275\365\347 +\215\045\326\201\164\207\106\324\051\165\242\102\154\367\163\211 +\347\175\277\172\112\037\323\042\311\025\125\317\337\157\174\125 +\320\244\213\007\021\067\137\203\246\046\127\246\001\133\176\376 +\130\150\007\251\351\172\331\271\350\377\120\037\253\302\264\300 +\316\350\352\375\017\275\215\115\270\274\161\002\003\001\000\001 +\243\102\060\100\060\035\006\003\125\035\016\004\026\004\024\305 +\357\355\314\330\215\041\306\110\344\343\327\024\056\247\026\223 +\345\230\001\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\122\202\254\041\064\037\043\362 +\242\330\371\270\257\067\066\040\211\321\067\003\326\151\237\270 +\141\020\272\242\061\230\131\107\350\321\015\045\036\025\101\014 +\340\052\125\325\127\122\313\370\344\307\151\243\035\115\161\002 +\136\137\041\105\140\110\134\011\216\111\020\301\004\334\251\142 +\153\002\360\103\310\116\235\070\111\164\311\062\160\124\155\301 +\107\374\216\264\066\236\324\234\275\335\040\326\123\311\030\251 +\265\126\271\166\213\225\147\146\356\275\230\376\256\357\276\156 +\373\140\366\375\131\306\052\033\077\043\112\224\044\060\047\310 +\211\274\353\104\044\232\313\075\276\117\325\172\316\216\027\313 +\142\301\331\336\036\016\172\377\103\206\064\122\274\141\077\074 +\137\273\331\166\264\123\274\227\263\376\212\114\022\056\053\363 +\327\316\341\242\377\335\173\160\373\073\241\115\244\143\002\375 +\070\227\225\077\005\160\240\153\337\142\201\103\213\264\131\015 +\112\214\124\234\305\273\201\237\315\175\245\357\013\045\036\072 +\040\333\034\374\037\230\147\002\012\324\163\104\023\333\121\204 +\032\125\003\126\340\000\176\164\006\377\070\304\162\035\323\250 +\077\150\061\135\323\011\307\056\214\133\143\340\350\334\036\322 +\354\141\036\362\336\345\357\366\231\166\140\055\036\224\162\161 +\306\013\052\062\307\222\116\325\106\327\035\371\251\031\012\310 +\372\225\316\155\043\230\252\013\070\255\232\126\015\157\215\361 +\061\000\210\301\027\234\315\031\066\065\376\125\123\240\340\074 +\063\137\226\136\342\062\351\337\063\273\006\112\251\330\204\163 +\316\167\322\306\254\161\341\134\243\035\014\273\012\337\137\342 +\243\161\330\332\067\132\240\170\053\364\324\175\353\166\355\362 +\141\160\245\145\232\323\211\064\030\253\373\162\076\327\264\075 +\171\134\330\037\241\063\173\331\202\120\014\223\027\252\154\334 +\302\202\273\002\127\066\257\230\047\052\071\120\341\260\211\365 +\045\227\176\107\150\020\264\354\163\312\263\227\321\044\334\366 +\142\240\050\323\265\243\270\144\267\210\142\102\317\235\123\315 +\231\276\144\150\217\117\036\022\110\367\322\051\303\230\050\312 +\362\062\013\223\214\051\117\074\140\062\315\005\226\141\354\362 +\257\376\263\160\054\056\246\362 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "BJCA Global Root CA1" +# Issuer: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:55:6f:65:e3:b4:d9:90:6a:1b:09:d1:6c:3e:c0:6c:20 +# Subject: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:16:17 2019 +# Not Valid After : Mon Dec 12 03:16:17 2044 +# Fingerprint (SHA-256): F3:89:6F:88:FE:7C:0A:88:27:66:A7:FA:6A:D2:74:9F:B5:7A:7F:3E:98:FB:76:9C:1F:A7:B0:9C:2C:44:D5:AE +# Fingerprint (SHA1): D5:EC:8D:7B:4C:BA:79:F4:E7:E8:CB:9D:6B:AE:77:83:10:03:21:6A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\325\354\215\173\114\272\171\364\347\350\313\235\153\256\167\203 +\020\003\041\152 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\102\062\231\166\103\063\066\044\065\007\202\233\050\371\320\220 +END +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\157\145\343\264\331\220\152\033\011\321\154\076\300 +\154\040 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "BJCA Global Root CA2" +# +# Issuer: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:2c:17:08:7d:64:2a:c0:fe:85:18:59:06:cf:b4:4a:eb +# Subject: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:18:21 2019 +# Not Valid After : Mon Dec 12 03:18:21 2044 +# Fingerprint (SHA-256): 57:4D:F6:93:1E:27:80:39:66:7B:72:0A:FD:C1:60:0F:C2:7E:B6:6D:D3:09:29:79:FB:73:85:64:87:21:28:82 +# Fingerprint (SHA1): F4:27:86:EB:6E:B8:6D:88:31:67:02:FB:BA:66:A4:53:00:AA:7A:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\054\027\010\175\144\052\300\376\205\030\131\006\317\264 +\112\353 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\045\060\202\001\253\240\003\002\001\002\002\020\054 +\027\010\175\144\052\300\376\205\030\131\006\317\264\112\353\060 +\012\006\010\052\206\110\316\075\004\003\003\060\124\061\013\060 +\011\006\003\125\004\006\023\002\103\116\061\046\060\044\006\003 +\125\004\012\014\035\102\105\111\112\111\116\107\040\103\105\122 +\124\111\106\111\103\101\124\105\040\101\125\124\110\117\122\111 +\124\131\061\035\060\033\006\003\125\004\003\014\024\102\112\103 +\101\040\107\154\157\142\141\154\040\122\157\157\164\040\103\101 +\062\060\036\027\015\061\071\061\062\061\071\060\063\061\070\062 +\061\132\027\015\064\064\061\062\061\062\060\063\061\070\062\061 +\132\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116 +\061\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111 +\116\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101 +\125\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004 +\003\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\101\062\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\235 +\313\200\221\215\123\147\265\271\120\261\003\370\345\111\037\101 +\042\011\260\121\122\130\326\053\064\217\305\022\106\024\305\213 +\057\054\204\377\054\156\250\325\361\011\343\003\041\024\304\103 +\075\174\301\054\304\113\152\112\315\351\207\340\175\366\042\276 +\372\112\121\270\060\212\375\341\336\030\022\012\366\107\267\347 +\027\277\047\212\324\101\114\226\074\140\226\301\375\025\034\243 +\102\060\100\060\035\006\003\125\035\016\004\026\004\024\322\112 +\261\121\177\006\360\321\202\037\116\156\137\253\203\374\110\324 +\260\221\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003 +\150\000\060\145\002\060\032\274\133\327\376\251\322\124\016\112 +\135\322\155\261\100\334\364\103\325\322\112\231\031\022\126\200 +\367\203\064\341\065\116\110\155\004\017\127\061\060\060\055\261 +\252\235\003\070\333\006\002\061\000\313\314\207\123\313\172\337 +\040\121\163\220\300\250\133\141\320\305\120\071\375\205\376\301 +\343\170\370\246\326\113\275\233\207\217\017\345\326\123\226\253 +\074\310\100\332\141\367\123\243\367 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "BJCA Global Root CA2" +# Issuer: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:2c:17:08:7d:64:2a:c0:fe:85:18:59:06:cf:b4:4a:eb +# Subject: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:18:21 2019 +# Not Valid After : Mon Dec 12 03:18:21 2044 +# Fingerprint (SHA-256): 57:4D:F6:93:1E:27:80:39:66:7B:72:0A:FD:C1:60:0F:C2:7E:B6:6D:D3:09:29:79:FB:73:85:64:87:21:28:82 +# Fingerprint (SHA1): F4:27:86:EB:6E:B8:6D:88:31:67:02:FB:BA:66:A4:53:00:AA:7A:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\364\047\206\353\156\270\155\210\061\147\002\373\272\146\244\123 +\000\252\172\246 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\136\012\366\107\137\246\024\350\021\001\225\077\115\001\353\074 +END +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\054\027\010\175\144\052\300\376\205\030\131\006\317\264 +\112\353 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE diff --git a/security/nss/lib/pkcs12/p12d.c b/security/nss/lib/pkcs12/p12d.c index 34362db2de..882e1d5b12 100644 --- a/security/nss/lib/pkcs12/p12d.c +++ b/security/nss/lib/pkcs12/p12d.c @@ -337,31 +337,38 @@ sec_pkcs12_decoder_safe_bag_update(void *arg, const char *data, SEC_PKCS12DecoderContext *p12dcx; SECStatus rv; - /* make sure that we are not skipping the current safeBag, - * and that there are no errors. If so, just return rather - * than continuing to process. - */ - if (!safeContentsCtx || !safeContentsCtx->p12dcx || - safeContentsCtx->p12dcx->error || safeContentsCtx->skipCurrentSafeBag) { + if (!safeContentsCtx || !safeContentsCtx->p12dcx || !safeContentsCtx->currentSafeBagA1Dcx) { return; } p12dcx = safeContentsCtx->p12dcx; + /* make sure that there are no errors and we are not skipping the current safeBag */ + if (p12dcx->error || safeContentsCtx->skipCurrentSafeBag) { + goto loser; + } + rv = SEC_ASN1DecoderUpdate(safeContentsCtx->currentSafeBagA1Dcx, data, len); if (rv != SECSuccess) { p12dcx->errorValue = PORT_GetError(); + p12dcx->error = PR_TRUE; + goto loser; + } + + /* The update may have set safeContentsCtx->skipCurrentSafeBag, and we + * may not get another opportunity to clean up the decoder context. + */ + if (safeContentsCtx->skipCurrentSafeBag) { goto loser; } return; loser: - /* set the error, and finish the decoder context. because there + /* Finish the decoder context. Because there * is not a way of returning an error message, it may be worth * while to do a check higher up and finish any decoding contexts * that are still open. */ - p12dcx->error = PR_TRUE; SEC_ASN1DecoderFinish(safeContentsCtx->currentSafeBagA1Dcx); safeContentsCtx->currentSafeBagA1Dcx = NULL; return; diff --git a/security/nss/lib/pkcs12/p12t.h b/security/nss/lib/pkcs12/p12t.h index b22f0dd823..d449afdd89 100644 --- a/security/nss/lib/pkcs12/p12t.h +++ b/security/nss/lib/pkcs12/p12t.h @@ -73,6 +73,7 @@ struct sec_PKCS12SafeBagStr { sec_PKCS12CRLBag *crlBag; sec_PKCS12SecretBag *secretBag; sec_PKCS12SafeContents *safeContents; + SECItem *unknownBag; } safeBagContent; sec_PKCS12Attribute **attribs; diff --git a/security/nss/lib/pkcs12/p12tmpl.c b/security/nss/lib/pkcs12/p12tmpl.c index 7437cbcc60..b08384f66a 100644 --- a/security/nss/lib/pkcs12/p12tmpl.c +++ b/security/nss/lib/pkcs12/p12tmpl.c @@ -30,12 +30,12 @@ sec_pkcs12_choose_safe_bag_type(void *src_or_dest, PRBool encoding) oiddata = SECOID_FindOID(&safeBag->safeBagType); if (oiddata == NULL) { - return SEC_ASN1_GET(SEC_AnyTemplate); + return SEC_ASN1_GET(SEC_PointerToAnyTemplate); } switch (oiddata->offset) { default: - theTemplate = SEC_ASN1_GET(SEC_AnyTemplate); + theTemplate = SEC_ASN1_GET(SEC_PointerToAnyTemplate); break; case SEC_OID_PKCS12_V1_KEY_BAG_ID: theTemplate = SEC_ASN1_GET(SECKEY_PointerToPrivateKeyInfoTemplate);